667 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			667 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								SUB_STATE_BROKENARROW_0	<- 0
							 | 
						|||
| 
								 | 
							
								SUB_STATE_BROKENARROW_1	<- 1
							 | 
						|||
| 
								 | 
							
								SUB_STATE_BROKENARROW_2	<- 2
							 | 
						|||
| 
								 | 
							
								SUB_STATE_BROKENARROW_3	<- 3
							 | 
						|||
| 
								 | 
							
								SUB_STATE_BROKENARROW_4	<- 4
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								BrokenArrow_state_0 <- 10
							 | 
						|||
| 
								 | 
							
								BrokenArrow_state_1 <- 11
							 | 
						|||
| 
								 | 
							
								BrokenArrow_state_2 <- 12
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function checkExecutableSkill_BrokenArrow(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(!obj) return false;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									//local targetObj = sq_GetObjectByObjectId(obj, BROKENARROW_UNIQUE_ID);
							 | 
						|||
| 
								 | 
							
									local flag = obj.getVar("brokenarrow").get_vector(VECTOR_FLAG_0);
							 | 
						|||
| 
								 | 
							
									local targetObj = sq_GetPassiveObjectByState(obj, 24250, BrokenArrow_state_1); // 24250	`Character/Mage/ATBrokenArrow.obj`			// 陴彻饵 - 粽煎赎拥煎办 (?髦)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local expTime = obj.sq_GetIntData(SKILL_BROKENARROW, 1); // 1. 颤问 撩奢卫 渠莲晦栋击 饵辨? 热 毡朝 卫除 (?髦桧 笮?毡朝 卫除)
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									// 觼煎栖赝 嬴桧蛊 蒙机.. 颤问 撩奢卫 渠莲晦栋击 饵辨? 热 毡朝 卫除 (?髦桧 笮?毡朝 卫除)
							 | 
						|||
| 
								 | 
							
									// 0塭贼 渠莲蒂 ?虽 强朝棻..
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									if(!targetObj || flag == 0 || expTime == 0)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local b_useskill = obj.sq_IsUseSkill(SKILL_BROKENARROW);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										if(b_useskill) {
							 | 
						|||
| 
								 | 
							
											obj.getVar("arrow").clear_vector();
							 | 
						|||
| 
								 | 
							
											obj.getVar("arrow").push_vector(0);
							 | 
						|||
| 
								 | 
							
											obj.sq_IntVectClear();
							 | 
						|||
| 
								 | 
							
											obj.sq_IntVectPush(SUB_STATE_BROKENARROW_0); // substate撮?
							 | 
						|||
| 
								 | 
							
											obj.sq_AddSetStatePacket(STATE_BROKENARROW, STATE_PRIORITY_IGNORE_FORCE, true);
							 | 
						|||
| 
								 | 
							
											return true;
							 | 
						|||
| 
								 | 
							
										}	
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										print( " checkExecutableSkill_BrokenArrow targetObj:" + targetObj);
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectClear();
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectPush(SUB_STATE_BROKENARROW_2); // substate撮?
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local group = sq_GetGroup(targetObj);
							 | 
						|||
| 
								 | 
							
										local uniqueId = sq_GetUniqueId(targetObj);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectPush(group); // substate撮?
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectPush(uniqueId); // substate撮?
							 | 
						|||
| 
								 | 
							
										obj.sq_AddSetStatePacket(STATE_BROKENARROW, STATE_PRIORITY_IGNORE_FORCE, true);
							 | 
						|||
| 
								 | 
							
										return true;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//local arr=["one","two","three"]
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//::print("FOREACH\n");
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//foreach(i,val in arr)
							 | 
						|||
| 
								 | 
							
								//{
							 | 
						|||
| 
								 | 
							
									//::print("index ["+i+"]="+val+"\n");
							 | 
						|||
| 
								 | 
							
								//}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//::print("FOR\n");
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//for(local i=0;i<arr.len();i+=1)
							 | 
						|||
| 
								 | 
							
								//{
							 | 
						|||
| 
								 | 
							
									//::print("index ["+i+"]="+arr[i]+"\n");
							 | 
						|||
| 
								 | 
							
								//}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//::print("WHILE\n");
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//local i=0;
							 | 
						|||
| 
								 | 
							
								//while(i<arr.len())
							 | 
						|||
| 
								 | 
							
								//{
							 | 
						|||
| 
								 | 
							
									//::print("index ["+i+"]="+arr[i]+"\n");
							 | 
						|||
| 
								 | 
							
									//i+=1;
							 | 
						|||
| 
								 | 
							
								//}
							 | 
						|||
| 
								 | 
							
								//::print("DO WHILE\n");
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//local i=0;
							 | 
						|||
| 
								 | 
							
								//do
							 | 
						|||
| 
								 | 
							
								//{
							 | 
						|||
| 
								 | 
							
									//::print("index ["+i+"]="+arr[i]+"\n");
							 | 
						|||
| 
								 | 
							
									//i+=1;
							 | 
						|||
| 
								 | 
							
								//}while(i<arr.len());
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function checkCommandEnable_BrokenArrow(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(!obj) return false;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local state = obj.sq_GetState();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(state == STATE_ATTACK)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										// 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20]
							 | 
						|||
| 
								 | 
							
										return obj.sq_IsCommandEnable(SKILL_BROKENARROW); // 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] obj.sq_IsCommandEnable(SKILL_BROKENARROW);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									return true;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onChangeSkillEffect_BrokenArrow(obj, skillIndex, reciveData)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj)
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onSetState_BrokenArrow(obj, state, datas, isResetTimer)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local substate = obj.sq_GetVectorData(datas, 0);
							 | 
						|||
| 
								 | 
							
									obj.setSkillSubState(substate);
							 | 
						|||
| 
								 | 
							
									obj.sq_StopMove();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local arrowLauchNum = obj.sq_GetIntData(SKILL_BROKENARROW, 0); // 0. ?髦 偎热
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									obj.getVar().clear_vector();	
							 | 
						|||
| 
								 | 
							
									obj.getVar().push_vector(arrowLauchNum);
							 | 
						|||
| 
								 | 
							
									obj.getVar().push_vector(0);
							 | 
						|||
| 
								 | 
							
									obj.getVar().push_vector(0);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									obj.getVar("flag").clear_vector();
							 | 
						|||
| 
								 | 
							
									obj.getVar("flag").push_vector(0);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local posX = obj.getXPos();
							 | 
						|||
| 
								 | 
							
									local posY = obj.getYPos();
							 | 
						|||
| 
								 | 
							
									local posZ = obj.getZPos();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(substate == SUB_STATE_BROKENARROW_0) {
							 | 
						|||
| 
								 | 
							
										if(obj.getVar("brokenarrow").size_vector() == 0)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											obj.sq_PlaySound("MW_BARROW");
							 | 
						|||
| 
								 | 
							
											obj.getVar("brokenarrow").clear_vector();
							 | 
						|||
| 
								 | 
							
											obj.getVar("brokenarrow").push_vector(1);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else
							 | 
						|||
| 
								 | 
							
											obj.getVar("brokenarrow").set_vector(VECTOR_FLAG_0, 1);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										// 渠莲?楚斜
							 | 
						|||
| 
								 | 
							
										obj.getVar("dash").clear_vector();
							 | 
						|||
| 
								 | 
							
										obj.getVar("dash").push_vector(0);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_SetCurrentAnimation(CUSTOM_ANI_BROKENARROW1);
							 | 
						|||
| 
								 | 
							
										local pAni = obj.sq_GetCurrentAni();
							 | 
						|||
| 
								 | 
							
										pAni.setSpeedRate(200.0);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_1) {
							 | 
						|||
| 
								 | 
							
										obj.sq_SetCurrentAnimation(CUSTOM_ANI_BROKENARROW_LOOP1);
							 | 
						|||
| 
								 | 
							
										local pAni = obj.sq_GetCurrentAni();
							 | 
						|||
| 
								 | 
							
										pAni.setSpeedRate(200.0);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_2) {
							 | 
						|||
| 
								 | 
							
										// 渠莲1
							 | 
						|||
| 
								 | 
							
										obj.getVar("brokenarrow").set_vector(VECTOR_FLAG_0, 0); // ?廓 ?溥耀棻贼..棻卫 葬掸桧 腌栖棻.
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local group = obj.sq_GetVectorData(datas, 1);
							 | 
						|||
| 
								 | 
							
										local uniqueId = obj.sq_GetVectorData(datas, 2);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local targetObj = sq_GetObject(obj, group, uniqueId);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										obj.getVar().push_vector(posX); // ?营 x : i: 3
							 | 
						|||
| 
								 | 
							
										obj.getVar().push_vector(posY); // ?营 y : i: 4
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(targetObj) {
							 | 
						|||
| 
								 | 
							
											local disX = sq_Abs(targetObj.getXPos() - posX);
							 | 
						|||
| 
								 | 
							
											local disY = targetObj.getYPos() - posY;
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											if(targetObj.getXPos() > posX)
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												obj.setDirection(ENUM_DIRECTION_RIGHT);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											else
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												obj.setDirection(ENUM_DIRECTION_LEFT);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											disX = disX - 60;
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											if(disX <= 0)
							 | 
						|||
| 
								 | 
							
												disX = 0;
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											obj.getVar().push_vector(disX); // x蹴 桧翕剪葬 : i: 5
							 | 
						|||
| 
								 | 
							
											obj.getVar().push_vector(disY); // y蹴 桧翕剪葬 : i: 6
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else { // 蛤?? 桧翕剪葬
							 | 
						|||
| 
								 | 
							
											local defaultDistance = obj.sq_GetIntData(SKILL_BLUEDRAGONWILL, 1); // 除蕾 奢问 (虽霞 ?渠徽) (100~)
							 | 
						|||
| 
								 | 
							
											obj.getVar().push_vector(defaultDistance); // x蹴 桧翕剪葬 
							 | 
						|||
| 
								 | 
							
											obj.getVar().push_vector(0); // y蹴 桧翕剪葬
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_SetCurrentAnimation(CUSTOM_ANI_BROKENARROW_DASH1);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_3) {
							 | 
						|||
| 
								 | 
							
										obj.sq_SetCurrentAttackInfo(CUSTOM_ATTACK_INFO_AT_MAGE_BROKENARROW);
							 | 
						|||
| 
								 | 
							
										obj.sq_SetCurrentAnimation(CUSTOM_ANI_BROKENARROW_DASH2);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.sq_PlaySound("MW_BARROW_FIN");
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local atk = sq_GetCurrentAttackInfo(obj);		
							 | 
						|||
| 
								 | 
							
										local attackRate = obj.sq_GetBonusRateWithPassive(SKILL_BROKENARROW, STATE_BROKENARROW, 1, 1.0); //1.?萃楝纂晦 奢问溘(%)
							 | 
						|||
| 
								 | 
							
										sq_SetCurrentAttackBonusRate(atk, attackRate);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_4) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_4 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function prepareDraw_BrokenArrow(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local substate = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(substate == SUB_STATE_BROKENARROW_0) {
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_1) {
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_2) {
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_3) {
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_4) {
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function getAngleArrow(obj, pTargetChr)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									if(!pTargetChr) return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local offsetX = 58; // ?践朝 嫔纂
							 | 
						|||
| 
								 | 
							
									local offsetZ = 75; // ?践朝 嫔纂
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local X = obj.getXPos() + sq_GetDistancePos(0, obj.getDirection(), offsetX);
							 | 
						|||
| 
								 | 
							
									local Y = obj.getYPos();
							 | 
						|||
| 
								 | 
							
									local Z = obj.getZPos() + offsetZ;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local posX = pTargetChr.getXPos();
							 | 
						|||
| 
								 | 
							
									local posY = pTargetChr.getYPos();
							 | 
						|||
| 
								 | 
							
									local posZ = pTargetChr.getZPos() + (sq_GetObjectHeight(pTargetChr) / 2);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local offset = posX - X;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local distance = sq_GetDistance( X, Y - Z, posX, posY - posZ, true);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local w = posX - X;		
							 | 
						|||
| 
								 | 
							
									if(w < 0) w = -w;
							 | 
						|||
| 
								 | 
							
									//	?贼鼻暧 陕紫蒂 掘?怃 桧??蒂 赁紫釭 给溥捡 肾朝虽 掘?棻.
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local h = (posY - posZ) - (Y - Z);
							 | 
						|||
| 
								 | 
							
									local width = sq_Abs(posX - X);
							 | 
						|||
| 
								 | 
							
									local angle = sq_Atan2( h.tofloat(), width.tofloat());
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									//if((posY - posZ) < (Y - Z))
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										angle = -angle;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local nRevision = distance;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local cos = nRevision.tofloat() * sq_Cos(angle);
							 | 
						|||
| 
								 | 
							
									local sin = nRevision.tofloat() * sq_Sin(angle);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local nX = sq_Abs( cos.tointeger() );
							 | 
						|||
| 
								 | 
							
									local nY = sq_Abs( sin.tointeger() );
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									return angle;
							 | 
						|||
| 
								 | 
							
									//sq_SetfRotateAngle(pAni, angle);		
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onProc_BrokenArrow(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local substate = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local pAni = obj.sq_GetCurrentAni();
							 | 
						|||
| 
								 | 
							
									local frmIndex = obj.sq_GetCurrentFrameIndex(pAni);
							 | 
						|||
| 
								 | 
							
									local sq_var = obj.getVar();
							 | 
						|||
| 
								 | 
							
									local currentT = sq_GetCurrentTime(pAni);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local posX = sq_GetXPos(obj);
							 | 
						|||
| 
								 | 
							
									local posY = sq_GetYPos(obj);
							 | 
						|||
| 
								 | 
							
									local posZ = sq_GetZPos(obj);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(substate == SUB_STATE_BROKENARROW_0) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_0 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_1) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_1 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_2) {
							 | 
						|||
| 
								 | 
							
										local dash_t = pAni.getDelaySum(false); //
							 | 
						|||
| 
								 | 
							
										//obj.getVar().push_vector(posX); // ?营 x : i: 3
							 | 
						|||
| 
								 | 
							
										//obj.getVar().push_vector(posY); // ?营 y : i: 4
							 | 
						|||
| 
								 | 
							
								    	
							 | 
						|||
| 
								 | 
							
										local srcX = obj.getVar().get_vector(3); // 卫蒙x
							 | 
						|||
| 
								 | 
							
										local srcY = obj.getVar().get_vector(4); // 卫蒙y
							 | 
						|||
| 
								 | 
							
								    	    	
							 | 
						|||
| 
								 | 
							
								    	local dis_x_len = sq_var.get_vector(5); // 识 桧翕剪葬
							 | 
						|||
| 
								 | 
							
										local dis_y_len = obj.getVar().get_vector(6) + 1; // y蹴 桧翕剪葬
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local v = sq_GetAccel(0, dis_x_len, currentT, dash_t, true);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local my = sq_GetUniformVelocity(0, dis_y_len, currentT, dash_t);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local dstX = sq_GetDistancePos(srcX, obj.getDirection(), v);
							 | 
						|||
| 
								 | 
							
										local dstY = srcY + my;
							 | 
						|||
| 
								 | 
							
										 
							 | 
						|||
| 
								 | 
							
										if(sq_var.get_vector(1))
							 | 
						|||
| 
								 | 
							
										{ // 瞪?溯歜缣怃 桧翕? 热 桡朝 虽羲击 虏陬棻贼..
							 | 
						|||
| 
								 | 
							
											if(sq_var.get_vector(2) != posY)
							 | 
						|||
| 
								 | 
							
											{ // 瞪 posY谛 绿掖?瑭怃 殖塭螺棻贼..
							 | 
						|||
| 
								 | 
							
												sq_var.set_vector(1, 0); // 桧翕?楚斜蒂 off?鄹栖棻..
							 | 
						|||
| 
								 | 
							
												sq_var.set_vector(2, posY);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										 
							 | 
						|||
| 
								 | 
							
										if(obj.isMovablePos(dstX, dstY) && !sq_var.get_vector(1))
							 | 
						|||
| 
								 | 
							
										{ // 桧翕?楚斜谛 桧翕陛栋虽羲桧 赅舒 陛栋?捡 桧翕
							 | 
						|||
| 
								 | 
							
											sq_setCurrentAxisPos(obj, 0, dstX);
							 | 
						|||
| 
								 | 
							
											sq_setCurrentAxisPos(obj, 1, dstY);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else
							 | 
						|||
| 
								 | 
							
										{ // 桧翕? 热 桡朝 虽羲击 虏陬棻..
							 | 
						|||
| 
								 | 
							
											sq_var.set_vector(1,1); // 桧翕 ?楚斜 樯策蝶 3 桧翕? 热 桡朝 虽羲击 虏陬击 阳 斜牖除 涡桧鼻 桧翕跤?棻..
							 | 
						|||
| 
								 | 
							
											local offset = dstX - posX;
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											if(offset != 0) {				
							 | 
						|||
| 
								 | 
							
												if(offset < 0) 
							 | 
						|||
| 
								 | 
							
													offset = -offset;
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												local totalLen = sq_var.get_vector(5); // 识桧翕剪葬
							 | 
						|||
| 
								 | 
							
												sq_var.set_vector(5, totalLen - offset);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_3) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_3 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_4) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_4 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onProcCon_BrokenArrow(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local substate = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(substate == SUB_STATE_BROKENARROW_0 || substate == SUB_STATE_BROKENARROW_1)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										local pAni = obj.getCurrentAnimation();
							 | 
						|||
| 
								 | 
							
										local frmIndex = obj.sq_GetCurrentFrameIndex(pAni);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										//local x_range = obj.sq_GetIntData(SKILL_BLUEDRAGONWILL, 3); // 晦遴 醱瞪卫除
							 | 
						|||
| 
								 | 
							
										//local y_range = obj.sq_GetIntData(SKILL_BLUEDRAGONWILL, 4); // 晦遴 醱瞪卫除
							 | 
						|||
| 
								 | 
							
										//local z_range = obj.sq_GetIntData(SKILL_BLUEDRAGONWILL, 5); // 晦遴 醱瞪卫除
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
										if(frmIndex >= 3)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											if(obj.getVar("flag").get_vector(0) == 0)
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												local x_range = 400; // 匐仪彰嫔 x
							 | 
						|||
| 
								 | 
							
												local y_range = 200; // 匐仪彰嫔 y
							 | 
						|||
| 
								 | 
							
												local z_range = 50; // 匐仪彰嫔 z
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												x_range = obj.sq_GetIntData(SKILL_BROKENARROW, 3); // 3. x彰嫔
							 | 
						|||
| 
								 | 
							
												y_range = obj.sq_GetIntData(SKILL_BROKENARROW, 4); // 4. y彰嫔
							 | 
						|||
| 
								 | 
							
												z_range = obj.sq_GetIntData(SKILL_BROKENARROW, 5); // 5. z彰嫔
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												local x = sq_GetXPos(obj);
							 | 
						|||
| 
								 | 
							
												local y = sq_GetYPos(obj);
							 | 
						|||
| 
								 | 
							
												local z = sq_GetZPos(obj);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
												local attackRate = obj.sq_GetBonusRateWithPassive(SKILL_BROKENARROW, STATE_BROKENARROW, 0, 1.0); //2.奢问溘(%)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
												local expTime = obj.sq_GetIntData(SKILL_BROKENARROW, 1); // 1. 颤问 撩奢卫 渠莲晦栋击 饵辨? 热 毡朝 卫除 (?髦桧 笮?毡朝 卫除)
							 | 
						|||
| 
								 | 
							
												local stunTime = obj.sq_GetIntData(SKILL_BROKENARROW, 2); // 2. 瞳 唳霜卫除
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												local targetObj = sq_FindTarget(obj, 80, x_range, y_range, z_range);
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												//local my = sq_GetUniformVelocity(0, dis_y_len, currentT, dash_t);
							 | 
						|||
| 
								 | 
							
												local xLen = 400;
							 | 
						|||
| 
								 | 
							
												local yLen = 0;
							 | 
						|||
| 
								 | 
							
												local zLen = 75;
							 | 
						|||
| 
								 | 
							
												local angle = -1.0;
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												if(targetObj)
							 | 
						|||
| 
								 | 
							
												{
							 | 
						|||
| 
								 | 
							
													 xLen = obj.getXDistance(targetObj);
							 | 
						|||
| 
								 | 
							
													 yLen = sq_GetYPos(targetObj) - sq_GetYPos(obj);
							 | 
						|||
| 
								 | 
							
													 zLen = sq_GetZPos(targetObj) + (sq_GetObjectHeight(targetObj) / 2);
							 | 
						|||
| 
								 | 
							
													 
							 | 
						|||
| 
								 | 
							
													 angle = getAngleArrow(obj, targetObj);
							 | 
						|||
| 
								 | 
							
													 
							 | 
						|||
| 
								 | 
							
													 print(" angle:" + angle);
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												//local fireOffsetX = 56;
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												if(obj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
												{
							 | 
						|||
| 
								 | 
							
													local fireOffsetX = 65;
							 | 
						|||
| 
								 | 
							
													local fireOffsetY = 0;
							 | 
						|||
| 
								 | 
							
													local fireOffsetZ = 73;
							 | 
						|||
| 
								 | 
							
													
							 | 
						|||
| 
								 | 
							
													sq_BinaryStartWrite();
							 | 
						|||
| 
								 | 
							
													sq_BinaryWriteDword(xLen); // 
							 | 
						|||
| 
								 | 
							
													sq_BinaryWriteDword(yLen); // 
							 | 
						|||
| 
								 | 
							
													sq_BinaryWriteDword(zLen); // 
							 | 
						|||
| 
								 | 
							
													sq_BinaryWriteDword(attackRate); // 		
							 | 
						|||
| 
								 | 
							
													sq_BinaryWriteDword(expTime); // 		
							 | 
						|||
| 
								 | 
							
													sq_BinaryWriteDword(stunTime); // 		
							 | 
						|||
| 
								 | 
							
													sq_BinaryWriteFloat(angle); // 		
							 | 
						|||
| 
								 | 
							
													obj.sq_SendCreatePassiveObjectPacket(24250, 0, fireOffsetX, fireOffsetY + 1, fireOffsetZ); // ?髦
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												obj.getVar("flag").set_vector(0, 1);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(obj.getVar("dash").get_vector(0) == 0)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											obj.setSkillCommandEnable(SKILL_BROKENARROW, true);
							 | 
						|||
| 
								 | 
							
								    		
							 | 
						|||
| 
								 | 
							
											local iEnterSkill = obj.sq_IsEnterSkill(SKILL_BROKENARROW);
							 | 
						|||
| 
								 | 
							
								    		
							 | 
						|||
| 
								 | 
							
											if(iEnterSkill != -1)
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												obj.getVar("dash").set_vector(0, 1);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										//local particleCreater = null;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										//particleCreater = obj.getVar().GetparticleCreaterMap("BrokenArrowDownAttack", "Character/Mage/Particle/BrokenArrowDownAttack.ptl", obj);
							 | 
						|||
| 
								 | 
							
										//
							 | 
						|||
| 
								 | 
							
										//particleCreater = obj.getVar().GetparticleCreaterMap("BrokenArrowUpAttack", "Character/Mage/Particle/BrokenArrowUpAttack.ptl", obj);
							 | 
						|||
| 
								 | 
							
											//
							 | 
						|||
| 
								 | 
							
										//particleCreater.Restart(0);
							 | 
						|||
| 
								 | 
							
										//particleCreater.SetPos(x + dx, y + dy, z + dz);	
							 | 
						|||
| 
								 | 
							
										//
							 | 
						|||
| 
								 | 
							
										//sq_AddParticleObject(obj, particleCreater);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_2) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_2 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_3) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_3 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_4) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_4 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onEndCurrentAni_BrokenArrow(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local substate = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(!obj.isMyControlObject()) {
							 | 
						|||
| 
								 | 
							
										return;
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local arrowNum = obj.getVar().get_vector(0);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									if(substate == SUB_STATE_BROKENARROW_0 || substate == SUB_STATE_BROKENARROW_1)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										local arrowIndex = obj.getVar("arrow").get_vector(0);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										arrowIndex = arrowIndex + 1;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										obj.getVar("arrow").set_vector(0, arrowIndex);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										if(arrowIndex < arrowNum)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											obj.sq_IntVectClear();
							 | 
						|||
| 
								 | 
							
											obj.sq_IntVectPush(SUB_STATE_BROKENARROW_1); // substate撮?
							 | 
						|||
| 
								 | 
							
											obj.sq_AddSetStatePacket(STATE_BROKENARROW, STATE_PRIORITY_IGNORE_FORCE, true);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										else
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											local expTime = obj.sq_GetIntData(SKILL_BROKENARROW, 1); // 1. 颤问 撩奢卫 渠莲晦栋击 饵辨? 热 毡朝 卫除 (?髦桧 笮?毡朝 卫除)
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											// 觼煎栖赝 嬴桧蛊 蒙机.. 颤问 撩奢卫 渠莲晦栋击 饵辨? 热 毡朝 卫除 (?髦桧 笮?毡朝 卫除)
							 | 
						|||
| 
								 | 
							
											// 0塭贼 渠莲蒂 ?虽 强朝棻..
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
											if(obj.getVar("dash").get_vector(0) == 1 && expTime > 0)
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												local targetObj = sq_GetPassiveObjectByState(obj, 24250, BrokenArrow_state_1); // 24250	`Character/Mage/ATBrokenArrow.obj`			// 陴彻饵 - 粽煎赎拥煎办 (?髦)				
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
												if(!targetObj)
							 | 
						|||
| 
								 | 
							
												{
							 | 
						|||
| 
								 | 
							
													obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
												else
							 | 
						|||
| 
								 | 
							
												{
							 | 
						|||
| 
								 | 
							
													local group = sq_GetGroup(targetObj);
							 | 
						|||
| 
								 | 
							
													local uniqueId = sq_GetUniqueId(targetObj);
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
													obj.sq_IntVectClear();
							 | 
						|||
| 
								 | 
							
													obj.sq_IntVectPush(SUB_STATE_BROKENARROW_2); // substate撮?
							 | 
						|||
| 
								 | 
							
													obj.sq_IntVectPush(group); // substate撮?
							 | 
						|||
| 
								 | 
							
													obj.sq_IntVectPush(uniqueId); // substate撮?
							 | 
						|||
| 
								 | 
							
													
							 | 
						|||
| 
								 | 
							
													obj.sq_AddSetStatePacket(STATE_BROKENARROW, STATE_PRIORITY_IGNORE_FORCE, true);
							 | 
						|||
| 
								 | 
							
												}
							 | 
						|||
| 
								 | 
							
												
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											else
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
							 | 
						|||
| 
								 | 
							
											}
							 | 
						|||
| 
								 | 
							
											
							 | 
						|||
| 
								 | 
							
											//obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_2)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectClear();
							 | 
						|||
| 
								 | 
							
										obj.sq_IntVectPush(SUB_STATE_BROKENARROW_3); // substate撮?
							 | 
						|||
| 
								 | 
							
										obj.sq_AddSetStatePacket(STATE_BROKENARROW, STATE_PRIORITY_IGNORE_FORCE, true);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_3)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_4) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_4 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onKeyFrameFlag_BrokenArrow(obj, flagIndex)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(!obj) return false;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local substate = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(substate == SUB_STATE_BROKENARROW_0) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_0 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_1) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_1 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_2) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_2 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_3) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_3 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_4) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_4 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onEndState_BrokenArrow(obj, new_state)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local substate = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(substate == SUB_STATE_BROKENARROW_0) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_0 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_1) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_1 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_2) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_2 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_3) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_3 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_4) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_4 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onAfterSetState_BrokenArrow(obj, state, datas, isResetTimer)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local substate = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(substate == SUB_STATE_BROKENARROW_0) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_0 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_1) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_1 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_2) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_2 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_3) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_3 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									else if(substate == SUB_STATE_BROKENARROW_4) {
							 | 
						|||
| 
								 | 
							
										// SUB_STATE_BROKENARROW_4 怃粽蝶才桧? 蒙机
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onAttack_BrokenArrow(obj, damager, boundingBox, isStuck)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local substate = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(substate == SUB_STATE_BROKENARROW_3)
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								 |