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)
 | ||
| {
 | ||
| 	
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
|  |