591 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			591 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | 
 | |||
|  | // sub state | |||
|  | S_FASTMOVE_PLAY <- 0 | |||
|  | S_FASTMOVE_LOOP <- 1 | |||
|  | S_FASTMOVE_PRO <- 2 | |||
|  | S_FASTMOVE_END <- 3 | |||
|  | 
 | |||
|  | // 蝶鹧? 等桧颤 樯策蝶 | |||
|  | FM_SI_C_TIME <- 0  // ?瞪 ? 体陈桧 谏瞪 当撩肾朝 卫除 | |||
|  | FM_SI_MULTI_HIT_COUNT <- 1 // 棻钦?? 除问 | |||
|  | FM_SI_MOVE_VEL <- 2 // 体陈 桧翕楼紫 | |||
|  | FM_SI_Y_AXIS_MOVESPEED <- 3 // 体陈 鼻? 桧翕楼紫 | |||
|  | 
 | |||
|  | // 溯涟樯? 樯策蝶 | |||
|  | FM_LI_HIT_RATE <- 0 // 体陈 ?? 等嘐虽(%) | |||
|  | FM_LI_MOVE_LEN <- 1 // 桧翕剪葬 (px) | |||
|  | 
 | |||
|  | VECTOR_I_SRC_X <- 0 // 卫蒙虽薄击 荡潍? 漱搅 樯策蝶 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | // 蝶鉴 撮睡嫦翕 亵勒击 虏菟横舆朝 ?热殓栖棻.. 嫦翕 亵勒 state朝 桧嘐 模蝶缣怃 掘?肾横 毡蝗栖棻. 桧够缣怃 useskill娄 setstate蒂 虽姜?舆贼 腌栖棻. | |||
|  | function checkExecutableSkill_Fastmove(obj)   | |||
|  | { | |||
|  | 	if(!obj) return false; | |||
|  | 	local b_useskill = obj.sq_IsUseSkill(SKILL_FASTMOVE); | |||
|  | 	if(b_useskill) { | |||
|  | 		obj.sq_IntVectClear(); | |||
|  | 		obj.sq_IntVectPush(S_FASTMOVE_PLAY); // substate撮? | |||
|  | 		obj.sq_addSetStatePacket(STATE_FASTMOVE, STATE_PRIORITY_IGNORE_FORCE, true); | |||
|  | 		return true; | |||
|  | 	}	 | |||
|  | 	 | |||
|  | 	return false; | |||
|  | } | |||
|  | 
 | |||
|  | // 蝶鉴嬴桧夔 ?撩? 亵勒击 评虽朝 ?热殓栖棻. true蒂 葬欐?贼 蝶鉴 嬴桧夔桧 ?撩?陛 腌栖棻. (嫦翕亵勒 state朝  模蝶缣怃 籀葬腌栖棻.) | |||
|  | function checkCommandEnable_Fastmove(obj) | |||
|  | { | |||
|  | 	if(!obj) return false; | |||
|  | 	 | |||
|  | 	local state = obj.sq_GetSTATE(); | |||
|  | 	 | |||
|  | 	if(state == STATE_ATTACK) { | |||
|  | 		return obj.sq_IsCommandEnable(SKILL_FASTMOVE); // 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] obj.sq_IsCommandEnable(SKILL_FASTMOVE); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return true; | |||
|  | } | |||
|  | 
 | |||
|  | // state蒂 撮??坚 籀挤戏煎 菟横螃啪 腌栖棻. 陕谦 葬模蝶蒂 撮??栖棻.  | |||
|  | function onSetState_fastmove(obj, state, datas, isResetTimer) | |||
|  | {	 | |||
|  | 	if(!obj) return; | |||
|  | 	local substate = obj.sq_getVectorData(datas, 0); // 罗廓箪 substate殓栖棻..	 | |||
|  | 	obj.setSkillSubState(substate); //set substate | |||
|  | 	 | |||
|  |      | |||
|  |     local sq_var = obj.getVar();	 | |||
|  |     sq_var.clear_vector(); | |||
|  | 	sq_var.push_vector(0); | |||
|  | 	 | |||
|  | // 蝶鹧? 等桧颤 樯策蝶 | |||
|  | //FM_SI_C_TIME <- 0  // ?瞪 ? 体陈桧 谏瞪 当撩肾朝 卫除 | |||
|  | //FM_SI_MULTI_HIT_COUNT <- 1 // 棻钦?? 除问 | |||
|  | 
 | |||
|  | // 溯涟樯? 樯策蝶 | |||
|  | //FM_LI_HIT_RATE <- 0 // 体陈 ?? 等嘐虽(%) | |||
|  | //FM_LI_MOVE_LEN <- 1 // 桧翕剪葬 (px)	 | |||
|  | 	 | |||
|  | 	 | |||
|  | 	local posX = obj.getXPos(); | |||
|  | 	local posY = obj.getYPos(); | |||
|  | 	local posZ = obj.getZPos(); | |||
|  | 	 | |||
|  | 	local particle = sq_var.GetparticleCreaterMap("FastMove", "Character/Priest/Effect/Particle/Fastmove.ptl", obj); | |||
|  | 	 | |||
|  | 	 | |||
|  |    	obj.sq_setCurrentAttackInfo(CUSTOM_ATTACKINFO_FASTMOVE); | |||
|  |    	 | |||
|  |    	obj.sq_setAttackPowerWithPassive(SKILL_FASTMOVE, state, -1,FM_LI_HIT_RATE,1.0);	 | |||
|  |    	 | |||
|  |     if(substate == S_FASTMOVE_PLAY) { | |||
|  | 		obj.sq_stopMove(); | |||
|  | 		local time = obj.sq_getIntData(SKILL_FASTMOVE, FM_SI_C_TIME);		 | |||
|  | 		sq_var.push_vector(time); | |||
|  | 		sq_var.push_vector(0); | |||
|  |     			 | |||
|  | 		obj.sq_setCurrentAnimation(CUSTOM_ANI_FASTMOVE1); | |||
|  |     } | |||
|  |     else if(substate == S_FASTMOVE_LOOP) { | |||
|  | 		obj.sq_stopMove(); | |||
|  | 		//obj.sq_var.push_vector(posZ); | |||
|  | 		//local pAni = obj.sq_getCurrentAni(); | |||
|  | 		 | |||
|  | 		sq_var.push_vector(posZ); // index : 1 // srcZ | |||
|  | 		local jumpstate = 0; | |||
|  | 		 | |||
|  | 		//print("sq_GetVelocityZ:" + sq_GetVelocity(obj, 2)); | |||
|  | 		//print("getDownDownFrame:" + obj.getDownDownFrame() + " getDownUpFrame:" + obj.getDownUpFrame() + " getDownBounceUpFrame:" + obj.getDownBounceUpFrame() + " getDownLieFrame:" + obj.getDownLieFrame()); | |||
|  | 		//print("getJumpUpStartFrame:" + obj.getJumpUpStartFrame() + " getJumpDownStartFrame:" + obj.getJumpDownStartFrame() + " getJumpLandStartFrame:" + obj.getJumpLandStartFrame()); | |||
|  | 		 | |||
|  | 		 | |||
|  | 		if(posZ > 0) {		 | |||
|  | 			//local frmIndex = obj.getDownUpFrame(); | |||
|  | 
 | |||
|  | 			if(sq_GetVelocity(obj, 2) < 0) { | |||
|  | 				jumpstate = 2; // ?鬼酝 | |||
|  | 			} | |||
|  | 			else { | |||
|  | 				jumpstate = 1; // 鼻蝓酝 | |||
|  | 			} | |||
|  | 		} | |||
|  | 		sq_var.push_vector(jumpstate); // index : 2 // 薄??楚斜 0 : 裔阶缣 毡历击 阳 1 : 萤塭陞 阳 毡历击阳 2 : 顶溥陛朝 牖除 毡历击 阳 | |||
|  | 		sq_var.push_vector(0); // index : 3 //  | |||
|  | 		sq_var.push_vector(0); // index : 4 //  | |||
|  | 		 | |||
|  | 		obj.sq_setCurrentAnimation(CUSTOM_ANI_FASTMOVE2);		 | |||
|  |     } | |||
|  |     else if(substate == S_FASTMOVE_PRO) { | |||
|  |     	//CUSTOM_ATTACKINFO_FASTMOVE | |||
|  |     	local max_break_v = obj.sq_getVectorData(datas, 1); // 舒廓箪 vector高擎 马楼 高 | |||
|  | 		obj.sq_setCurrentAnimation(CUSTOM_ANI_FASTMOVE3); | |||
|  | 		sq_var.push_vector(posX); // 漱搅 樯策蝶 1 | |||
|  | 		 | |||
|  | 		local pAni = obj.sq_getCurrentAni(); | |||
|  | 		local initDelay = pAni.GetFrameStartTime(3); | |||
|  | 				 | |||
|  | 		//local vel = obj.sq_getIntData(SKILL_FASTMOVE, FM_SI_MOVE_VEL); // 桧翕楼紫 | |||
|  | 		local vel = obj.sq_getIntData(SKILL_FASTMOVE, FM_SI_MOVE_VEL); // 桧翕楼紫 | |||
|  | 		local d = obj.sq_getLevelData(SKILL_FASTMOVE, FM_LI_MOVE_LEN, 1); | |||
|  | 		 | |||
|  | 		//local moveT =  (d * 10) / vel; // 桧翕 识 卫除 掘?晦 | |||
|  | 		local v_rate; | |||
|  | 		if(!(sq_GetCurrentModuleType() == 4) && !(sq_GetCurrentModuleType() == 5)) //?营赅菊桧 pvp赅菊桧釭 fair_pvp赅菊橾 唳办 | |||
|  | 		{ | |||
|  | 			v_rate = (vel - max_break_v); | |||
|  | 		} | |||
|  | 		else | |||
|  | 		{ | |||
|  | 			v_rate = vel; | |||
|  | 		} | |||
|  | 		 | |||
|  | 		if(v_rate <= 0)  | |||
|  | 		{ | |||
|  | 			v_rate = 1; | |||
|  | 		} | |||
|  | 		local moveT =  (d * 800) / (v_rate); // 桧翕 识 卫除 掘?晦 | |||
|  | 		 | |||
|  | 		sq_var.push_vector(moveT); // 桧翕 识 卫除 漱搅 樯策蝶 2		 | |||
|  | 		sq_var.push_vector(0); // 桧翕 ?楚斜 樯策蝶 3 桧翕? 热 桡朝 虽羲击 虏陬击 阳 斜牖除 涡桧鼻 桧翕跤?棻.. | |||
|  | 		sq_var.push_vector(posY); // 樯策蝶4 夥煎 瞪 posY谢?蒂 荡潍?朝 睡碟殓栖棻.. 体陈奢问桧 鼻?煎 桧翕桧 陛栋?虽贼怃 桧翕?楚斜妇湿 籀葬蒂 亿照啪 ?捡?栖棻.. | |||
|  | 		local len = obj.sq_getLevelData(SKILL_FASTMOVE, FM_LI_MOVE_LEN, 1); | |||
|  | 		//len = len - break_len; // 马楼胀 高击 梗朝棻.. | |||
|  | 		sq_var.push_vector(len); // 樯策蝶5 | |||
|  | 		sq_var.push_vector(0); // 樯策蝶6 饵遴萄 ?楚斜 | |||
|  | 		 | |||
|  | 		local hitCnt = obj.sq_getIntData(SKILL_FASTMOVE, FM_SI_MULTI_HIT_COUNT); // 棻钦?? | |||
|  | 		 | |||
|  | 		local term = moveT / hitCnt; | |||
|  | 		 | |||
|  | 		obj.sq_setShake(obj, 2, moveT); | |||
|  | 		//obj.sq_setShake(obj, 4, moveT); | |||
|  | 		// 赝葬? | |||
|  | 		sq_CurrentAnimationProc(pAni); | |||
|  | 		 | |||
|  | 	//	local alsSpinNormal = obj.sq_getAutoLayerWorkAnimation(pAni, "2_sn"); | |||
|  | //		local alsSpinDodge = obj.sq_getAutoLayerWorkAnimation(pAni, "2_sd"); | |||
|  | 	//	if(alsSpinNormal) | |||
|  | 		//	alsSpinNormal.setCustomClipArea(true, 0, 0, 10, 10, false); | |||
|  | 			 | |||
|  | 		//if(alsSpinDodge) | |||
|  | 			//alsSpinDodge.setCustomClipArea(true, 0, 0, 10, 10, false); | |||
|  | 		// | |||
|  | 
 | |||
|  | 		sq_var.clear_timer_vector(); | |||
|  | 		sq_var.push_timer_vector(); | |||
|  | 				 | |||
|  | 		local t = sq_var.get_timer_vector(0); | |||
|  | 		//t.setParameter(35, -1); | |||
|  | 		t.setParameter(60, -1);		 | |||
|  | 		t.resetInstant(0); | |||
|  | 		 | |||
|  | 		obj.sq_timer_.setParameter(term, hitCnt); | |||
|  | 		obj.sq_timer_.resetInstant(initDelay); | |||
|  | 		 | |||
|  | 		// 坚楼桧翕 y蹴 桧翕 陛栋?紫烟 热姜蒙机 | |||
|  | 		// 蝶鹧? 等桧颤煎 鼻?桧翕 楼紫 跷陛	 | |||
|  | 		// FM_SI_Y_AXIS_MOVESPEED <- 3 // 体陈 鼻? 桧翕楼紫 | |||
|  | 		local y_axis_movespeed = obj.sq_getIntData(SKILL_FASTMOVE, FM_SI_Y_AXIS_MOVESPEED); | |||
|  | 		//obj.sq_setMoveDirection(ENUM_DIRECTION_DOWN, ENUM_DIRECTION_DOWN); | |||
|  | 		//obj.setAxisMoveDirection(1, ENUM_DIRECTION_DOWN, true, true); | |||
|  | 		//obj.sq_setStaticMoveInfo(1, 263, 0, true, 0, 0); | |||
|  | 		//obj.sq_setStaticMoveInfo(1, 200, 0, true, 0, 0); | |||
|  | 		//obj.sq_setStaticSpeedInfo(1, 1); | |||
|  | 		// | |||
|  | 		obj.sq_setStaticMoveInfo(1,y_axis_movespeed,y_axis_movespeed,true); | |||
|  | 		obj.sq_setMoveDirection(obj.getDirection(), ENUM_DIRECTION_NEUTRAL); | |||
|  | 		// | |||
|  |     } | |||
|  |     else if(substate == S_FASTMOVE_END) { | |||
|  | 		obj.sq_stopMove(); | |||
|  |     	sq_var.push_vector(posX); // 漱搅 樯策蝶 1 | |||
|  | 		obj.sq_setCurrentAnimation(CUSTOM_ANI_FASTMOVE4); | |||
|  |     } | |||
|  | 	 | |||
|  |      | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | // prepareDraw ?热 殓栖棻.. | |||
|  | function prepareDraw_fastmove(obj) | |||
|  | { | |||
|  | if(!obj) return; | |||
|  | //	local substate = obj.getSkillSubState(); | |||
|  | 	 | |||
|  | 	//if(substate == S_FASTMOVE_PRO) { | |||
|  | 		//local pAni = obj.sq_getCurrentAni(); | |||
|  | 		 | |||
|  | 		//local alsSpinNormal = obj.sq_getAutoLayerWorkAnimation(pAni, "2_sn"); | |||
|  | 		//local alsSpinDodge = obj.sq_getAutoLayerWorkAnimation(pAni, "2_sd"); | |||
|  | 		 | |||
|  | 		//if(alsSpinNormal) | |||
|  | 		//	alsSpinNormal.setCustomClipArea(true, 5, 5, 5, 5, false); | |||
|  | 			 | |||
|  | 		//if(alsSpinDodge) | |||
|  | //			alsSpinDodge.setCustomClipArea(true, 0, 0, 0, 0, false); | |||
|  | //	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | // loop 睡碟殓栖棻 ismycontrol煎 马谆虽 强擎 翱念胀 赅苌 object菟桧 桧够击 剪纂啪腌栖棻. | |||
|  | function onProc_fastmove(obj) | |||
|  | { | |||
|  | 	if(!obj) return; | |||
|  | 	local substate = obj.getSkillSubState(); | |||
|  | 	 | |||
|  | 	local posX = obj.getXPos(); | |||
|  | 	local posY = obj.getYPos(); | |||
|  | 	local posZ = obj.getZPos(); | |||
|  | 	 | |||
|  | 	local pAni = obj.sq_getCurrentAni(); | |||
|  |     local frmIndex = obj.sq_ani_GetCurrentFrameIndex(pAni); | |||
|  | 
 | |||
|  | 	local sq_var = obj.getVar(); | |||
|  | 	local currentT = sq_GetCurrentTime(pAni); | |||
|  | 	 | |||
|  | 	 | |||
|  | //S_FASTMOVE_PLAY <- 0 | |||
|  | //S_FASTMOVE_LOOP <- 1 | |||
|  | //S_FASTMOVE_PRO <- 2 | |||
|  | //S_FASTMOVE_END <- 3 | |||
|  | 	 | |||
|  |     if(substate == S_FASTMOVE_PLAY) {		 | |||
|  |     } | |||
|  |     else if(substate == S_FASTMOVE_LOOP) { | |||
|  | 		local max_break_v = 0; | |||
|  |     	//local time = obj.sq_getIntData(SKILL_FASTMOVE, FM_SI_C_TIME); | |||
|  |     	local time = obj.sq_getIntData(SKILL_FASTMOVE, FM_SI_C_TIME); // 体陈桧 谏瞪 当撩肾朝 卫除.. | |||
|  |     	 | |||
|  |     	if(obj.isMyControlObject()) { | |||
|  |     		if(sq_GetSkillLevel(obj, SKILL_FASTMOVE_EX) > 0) // 坚楼桧翕鬼? 妇湿 蒙机 | |||
|  |     		{ | |||
|  |     			local direction = obj.sq_getInputDirection(0); | |||
|  |     			 | |||
|  |     			if(direction == ENUM_DIRECTION_NEUTRAL) { | |||
|  |     				sq_var.set_vector(4, currentT); // 嬴鼠匙紫 寰扬毓击阳 卫除击 羹觼?棻.. | |||
|  |     			} | |||
|  |     			 | |||
|  |     			if(direction == ENUM_DIRECTION_LEFT || direction == ENUM_DIRECTION_RIGHT) { | |||
|  |     				if(obj.getDirection() == ENUM_DIRECTION_LEFT || obj.getDirection() == ENUM_DIRECTION_RIGHT) {    				 | |||
|  |     					if(direction != obj.getDirection()) { | |||
|  |     						//local max_break = 200; | |||
|  |     						local max_break = obj.sq_getIntData(SKILL_FASTMOVE_EX, 4); //替葬啪 桧翕?朝 绿徽 (0~300) // 0 戏煎 ?贼 晦襄 楼紫陛 釭螃啪 肾坚 高桧 棺横釭贼 楼紫陛 替溥喂栖棻.. | |||
|  |     						local t = time - sq_var.get_vector(4); | |||
|  |     						local c_t = currentT - sq_var.get_vector(4); | |||
|  |     						local v = sq_GetUniformVelocity(0, max_break, c_t, t); | |||
|  |     						 | |||
|  |     						max_break_v = v; | |||
|  |     						//print("\n v:" + v + " c_t:" + c_t + " t:" + t); | |||
|  |     					} | |||
|  |     				} | |||
|  |     			} | |||
|  |     		} | |||
|  |     	} | |||
|  |      | |||
|  |     	 | |||
|  |     	//sq_var.push_vector(posZ); // index : 1 // srcZ | |||
|  |     	 | |||
|  |     	local srcZ = sq_var.get_vector(1); // 卫瞪 卫蒙 堪桧 | |||
|  |     	local jumpstate = sq_var.get_vector(2); // jumpstate : 0 : 夥款 1 : 鼻蝓酝 2 : ?鬼酝 | |||
|  |     	 | |||
|  | 		local up_t = time / 2; | |||
|  | 		local up_l = 20 + srcZ; | |||
|  |     	 | |||
|  | 		local move_l = 0; | |||
|  |     		 | |||
|  |     	//if(srcZ <= 0) { | |||
|  | 
 | |||
|  | 		if(jumpstate == 0) { | |||
|  |     		 | |||
|  |     		if(up_t > currentT) { | |||
|  |     			//move_l = sq_GetAccel(0, up_l, currentT, up_t, true); | |||
|  |     			move_l = sq_GetAccel(srcZ, up_l, currentT, up_t, true); | |||
|  |     		} | |||
|  |     		else { | |||
|  |     			move_l = sq_GetAccel(up_l, 0, currentT - up_t, up_t, false); | |||
|  |     		} | |||
|  |     		 | |||
|  |     		if(currentT >= time) { | |||
|  |     			obj.setCurrentPos(posX, posY, 0); | |||
|  | 	    		 | |||
|  | 				if(obj.isMyControlObject()) {			    	 | |||
|  | 					obj.sq_IntVectClear(); | |||
|  | 					obj.sq_IntVectPush(S_FASTMOVE_PRO); | |||
|  | 					obj.sq_IntVectPush(max_break_v); | |||
|  | 					obj.sq_addSetStatePacket(STATE_FASTMOVE, STATE_PRIORITY_USER, true); | |||
|  | 				}    	 | |||
|  |     		} | |||
|  |     		else { | |||
|  |     			obj.setCurrentPos(posX, posY, move_l); | |||
|  |     		} | |||
|  |     		 | |||
|  |     	} | |||
|  |     	else if(jumpstate == 1) { | |||
|  |     		up_t = 100; | |||
|  |     		local down_t = 400; | |||
|  |     		up_l = 10 + srcZ; | |||
|  |     			    	 | |||
|  |     		move_l = 0; | |||
|  |     		 | |||
|  |     		//print("\n uprising"); | |||
|  | 
 | |||
|  |     		 | |||
|  |     		if(up_t > currentT) { | |||
|  |     			move_l = sq_GetAccel(srcZ, up_l, currentT, up_t, true); | |||
|  |     		} | |||
|  |     		else { | |||
|  |     			move_l = sq_GetAccel(up_l, 0, currentT - up_t, down_t, false); | |||
|  |     		} | |||
|  |     		 | |||
|  |     		if(currentT >= (down_t + up_t) ) { | |||
|  |     			obj.setCurrentPos(posX, posY, 0); | |||
|  | 	    		 | |||
|  | 				if(obj.isMyControlObject()) {			    	 | |||
|  | 					obj.sq_IntVectClear(); | |||
|  | 					obj.sq_IntVectPush(S_FASTMOVE_PRO); | |||
|  | 					obj.sq_IntVectPush(max_break_v); | |||
|  | 					obj.sq_addSetStatePacket(STATE_FASTMOVE, STATE_PRIORITY_USER, true); | |||
|  | 				}    	 | |||
|  |     		} | |||
|  |     		else { | |||
|  |     			obj.setCurrentPos(posX, posY, move_l); | |||
|  |     		}    		 | |||
|  |     	} | |||
|  |     	else if(jumpstate == 2) { // ?鬼酝 | |||
|  |     		up_t = 50; | |||
|  |     		local down_t = 400; | |||
|  |     		up_l = srcZ; | |||
|  |     			    	 | |||
|  |     		move_l = 0; | |||
|  |     		//print("\n downing"); | |||
|  |     		 | |||
|  |     		if(up_t > currentT) { | |||
|  |     			move_l = sq_GetAccel(srcZ, up_l, currentT, up_t, true); | |||
|  |     		} | |||
|  |     		else { | |||
|  |     			move_l = sq_GetAccel(up_l, 0, currentT - up_t, down_t, false); | |||
|  |     		} | |||
|  |     		 | |||
|  |     		if(currentT >= (down_t + up_t) ) { | |||
|  |     			obj.setCurrentPos(posX, posY, 0); | |||
|  | 	    		 | |||
|  | 				if(obj.isMyControlObject()) {			    	 | |||
|  | 					obj.sq_IntVectClear(); | |||
|  | 					obj.sq_IntVectPush(S_FASTMOVE_PRO); | |||
|  | 					obj.sq_IntVectPush(max_break_v); | |||
|  | 					obj.sq_addSetStatePacket(STATE_FASTMOVE, STATE_PRIORITY_USER, true); | |||
|  | 				}    	 | |||
|  |     		} | |||
|  |     		else { | |||
|  |     			obj.setCurrentPos(posX, posY, move_l); | |||
|  |     		}    		 | |||
|  |     	}    	 | |||
|  |     } | |||
|  |     else if(substate == S_FASTMOVE_PRO) { | |||
|  | //FM_LI_HIT_RATE <- 0 // 体陈 ?? 等嘐虽(%) | |||
|  | //FM_LI_MOVE_LEN <- 1 // 桧翕剪葬 (px) | |||
|  | 		local initDelay = pAni.GetFrameStartTime(2); | |||
|  | 		 | |||
|  | 		if(initDelay <= currentT) { | |||
|  | 	    	local delayT = sq_var.get_vector(2); // 漱搅樯策蝶 2 识 桧翕卫除 | |||
|  | 	    	//print(delayT); | |||
|  | 	    	local len = sq_var.get_vector(5); | |||
|  | 	    	//print(len); | |||
|  | 	    	 | |||
|  | 	    	 | |||
|  | 			if(sq_var.get_vector(6) == 0) // 樯策蝶6 饵遴萄 ?楚斜 | |||
|  | 			{ | |||
|  | 				obj.sq_PlaySound("FMOVE_DASH_LOOP", 7575); | |||
|  | 				sq_var.set_vector(6, 1); | |||
|  | 			} | |||
|  | 	    	 | |||
|  | 			local v = sq_GetAccel(0, len, currentT - initDelay, delayT, false); | |||
|  | 			//local v = sq_GetUniformVelocity(0, len, currentT - initDelay, delayT);	 | |||
|  | 			 | |||
|  | 			local srcX = sq_var.get_vector(1); // 漱搅 樯策蝶 1 | |||
|  | 			 | |||
|  | 			local dstX = sq_GetDistancePos(srcX, obj.getDirection(), v); | |||
|  | 			  | |||
|  | 			if(sq_var.get_vector(3)) { // 瞪?溯歜缣怃 桧翕? 热 桡朝 虽羲击 虏陬棻贼.. | |||
|  | 				if(sq_var.get_vector(4) != posY) { // 瞪 posY谛 绿掖?瑭怃 殖塭螺棻贼.. | |||
|  | 					sq_var.set_vector(3, 0); // 桧翕?楚斜蒂 off?鄹栖棻.. | |||
|  | 					sq_var.set_vector(4, posY); | |||
|  | 				} | |||
|  | 			} | |||
|  | 			  | |||
|  | 			if(obj.isMovablePos(dstX, posY) && !sq_var.get_vector(3)) { // 桧翕?楚斜谛 桧翕陛栋虽羲桧 赅舒 陛栋?捡 桧翕 | |||
|  | 				//obj.setCurrentPos(dstX, posY, posZ); | |||
|  | 				sq_setCurrentAxisPos(obj, 0, dstX); | |||
|  | 			} | |||
|  | 			else { // 桧翕? 热 桡朝 虽羲击 虏陬棻.. | |||
|  | 				sq_var.set_vector(3,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); | |||
|  | 				} | |||
|  | 			} | |||
|  | 			 | |||
|  | 			if (obj.sq_timer_.isOnEvent(currentT) == true) | |||
|  | 				obj.resetHitObjectList(); | |||
|  | 				 | |||
|  | 			if(v >= len) { // 迹瞳虽缣 紫杂?击 阳 sub state蒂 夥羞棻..			  | |||
|  | 				obj.stopSound(7575); | |||
|  | 				if(obj.isMyControlObject()) { | |||
|  | 					obj.sq_IntVectClear(); | |||
|  | 					obj.sq_IntVectPush(S_FASTMOVE_END); | |||
|  | 					obj.sq_addSetStatePacket(STATE_FASTMOVE, STATE_PRIORITY_USER, true); | |||
|  | 				} | |||
|  | 			} | |||
|  | 
 | |||
|  | 			 | |||
|  | 
 | |||
|  | 			 | |||
|  | 			// 坚楼桧翕 y蹴 桧翕 陛栋?紫烟 热姜蒙机 | |||
|  | 			// 蝶鹧? 等桧颤煎 鼻?桧翕 楼紫 跷陛 | |||
|  | 			 | |||
|  | 			// 试虽 ??赝 当撩 | |||
|  | 			local t = sq_var.get_timer_vector(0); | |||
|  | 			 | |||
|  | 			if(t.isOnEvent(currentT) == true) { | |||
|  | 				//local dust_type = obj.getDustParticleType(LANDPARTICLE_MOVE); | |||
|  | 				//local particleCreater = sq_GetobjectParticleCreaters(dust_type); | |||
|  | 				//if(obj.getDirection() == ENUM_DIRECTION_LEFT) | |||
|  | 					//particleCreater.getParticleInfo().xFlip = true; | |||
|  | 				//else | |||
|  | 					//particleCreater.getParticleInfo().xFlip = false;					 | |||
|  | 				//OBJECT_VECTOR objects = chargeSpearParticleCreator_->createObjectParticle();		 | |||
|  | 				 | |||
|  | 				local particleCreater = sq_var.GetparticleCreaterMap("FastMove", "Character/Priest/Effect/Particle/Fastmove.ptl", obj);				 | |||
|  | 					 | |||
|  | 				particleCreater.Restart(0); | |||
|  | 				//particleCreater.SetPos(posX, posY, posZ-1);				 | |||
|  | 				local dstX = sq_GetDistancePos(posX, obj.getDirection(), -20);				 | |||
|  | 				particleCreater.SetPos(dstX, posY, posZ+28);	 | |||
|  | 				 | |||
|  | 				sq_AddParticleObject(obj, particleCreater); | |||
|  | 			} | |||
|  | 			 | |||
|  | 		} | |||
|  |     } | |||
|  |     else if(substate == S_FASTMOVE_END) {    	 | |||
|  |     		local len = 40; | |||
|  |     		local delaySum = 400; | |||
|  | 			local v = sq_GetAccel(0, len, currentT, delaySum, false); | |||
|  | 			//local v = sq_GetUniformVelocity(0, len, currentT - initDelay, delayT);	 | |||
|  | 			 | |||
|  | 			local srcX = sq_var.get_vector(1); // 漱搅 樯策蝶 1 | |||
|  | 			 | |||
|  | 			local dstX = sq_GetDistancePos(srcX, obj.getDirection(), v); | |||
|  | 			  | |||
|  | 			if(obj.isMovablePos(dstX, posY)) { | |||
|  | 				obj.setCurrentPos(dstX, posY, posZ); | |||
|  | 			} | |||
|  |     } | |||
|  | 	 | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | // loop 睡碟殓栖棻 ismycontrol ?蝶?陛 狱樯桧 object陛 桧够击 菟横骨栖棻. setstate 撮?桧釭 ?卫粽螃粽薛? 当撩 , 蛔蛔 籀葬?栖棻. | |||
|  | function onProcCon_fastmove(obj) | |||
|  | { | |||
|  | 	if(!obj) return; | |||
|  | 	local pAni = obj.sq_getCurrentAni(); | |||
|  | 	local bEnd = obj.sq_ani_IsEnd(pAni); | |||
|  |     local frmIndex = obj.sq_ani_GetCurrentFrameIndex(pAni); | |||
|  | 	 | |||
|  | 	// | |||
|  | 
 | |||
|  |     local substate = obj.getSkillSubState(); | |||
|  | 
 | |||
|  |     if(substate == S_FASTMOVE_PLAY) {		 | |||
|  |     } | |||
|  |     else if(substate == S_FASTMOVE_LOOP) { | |||
|  |     } | |||
|  |     else if(substate == S_FASTMOVE_PRO) { | |||
|  |     } | |||
|  |     else if(substate == S_FASTMOVE_END) { | |||
|  |     } | |||
|  |          | |||
|  |          | |||
|  | 	if(bEnd) { | |||
|  | 		if(substate == S_FASTMOVE_PLAY) { | |||
|  | 				obj.sq_IntVectClear(); | |||
|  | 				obj.sq_IntVectPush(S_FASTMOVE_LOOP); | |||
|  | 				obj.sq_addSetStatePacket(STATE_FASTMOVE, STATE_PRIORITY_USER, true); | |||
|  | 				//obj.sq_addSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); | |||
|  | 		} | |||
|  | 		else if(substate == S_FASTMOVE_LOOP) { | |||
|  | 		} | |||
|  | 		else if(substate == S_FASTMOVE_PRO) { | |||
|  | 			//obj.sq_addSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); | |||
|  | 		} | |||
|  | 		else if(substate == S_FASTMOVE_END) { | |||
|  | 				obj.sq_addSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); | |||
|  | 		} | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | // state谦猿谛 翕卫缣 ?廓 ?轿肾朝 ?热殓栖棻. oldstate陛 谦猿肾朝 state殓栖棻. 鼠树陛 嫦饵胀匙桧 毡剪釭 谦猿籀葬腆匙桧 毡棻贼 桧够缣怃 籀葬?栖棻. | |||
|  | function onEndState_fastmove(obj, new_state) | |||
|  | { | |||
|  | 	if(!obj) return; | |||
|  | 	if(new_state != STATE_FASTMOVE) { | |||
|  | 		obj.stopSound(7575); | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | // irdcharacter缣怃  setstate() -> IRDActiveObject::setState -> aftersetstate() 桧楛牖怃缣怃 葆虽虞 setstate殓栖棻. skill?撩缣 评塭怃 ?轿? ?蹂陛  | |||
|  | // 毡棻贼 桧 ?热蒂 桧辨?栖棻. | |||
|  | 
 | |||
|  | function onAfterSetState_fastmove(obj, state, datas, isResetTimer) | |||
|  | { | |||
|  | 	if(!obj) return; | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | // onbeforeattack 属寥?热 殓栖棻 | |||
|  | function onBeforeAttack_fastmove(obj, damager, boundingBox) | |||
|  | { | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | // onAttack 属寥?热 殓栖棻 | |||
|  | function onAttack_fastmove(obj, damager, boundingBox) | |||
|  | { | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | // onAfterAttack 属寥?热 殓栖棻 | |||
|  | function onAfterAttack_fastmove(obj, damager, boundingBox) | |||
|  | { | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | // onBeforeDamage 属寥?热 殓栖棻 | |||
|  | function onBeforeDamage_fastmove(obj, attacker, boundingBox) | |||
|  | { | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | // onDamage 属寥?热 殓栖棻 | |||
|  | function onDamage_fastmove(obj, attacker, boundingBox) | |||
|  | { | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | // onAfterDamage 属寥?热 殓栖棻 | |||
|  | function onAfterDamage_fastmove(obj, attacker, boundingBox) | |||
|  | { | |||
|  | 	 | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  |  |