197 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			197 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | ENUM_MAGIC_CANNON_SUBSTATE_CHARGE   <- 0;  // 遽绿 | |||
|  | ENUM_MAGIC_CANNON_SUBSTATE_HORIZON  <- 1;  // 热?(薄?) | |||
|  | ENUM_MAGIC_CANNON_SUBSTATE_VERTICAL <- 2; // 热霜(薄?) | |||
|  | ENUM_MAGIC_CANNON_SUBSTATE_DIAGONAL <- 3; // 渠陕摹(薄?) | |||
|  | ENUM_MAGIC_CANNON_SUBSTATE_LAND		<- 4; // 釭酝缣 跷陛胀 虽鼻颤. | |||
|  | 
 | |||
|  | function checkExecutableSkill_MagicCannon(obj) | |||
|  | { | |||
|  | 	if(!obj) return false; | |||
|  | 	 | |||
|  | 	local b_useskill = obj.sq_IsUseSkill(SKILL_MAGIC_CANNON); | |||
|  | 	if(b_useskill) { | |||
|  | 		// 薄?鼻鹧艘棻贼 奢酝 颤 | |||
|  | 		obj.sq_IntVectClear();		 | |||
|  | 		if(obj.getState() == STATE_JUMP) | |||
|  | 			obj.sq_IntVectPush(ENUM_MAGIC_CANNON_SUBSTATE_CHARGE);  | |||
|  | 		else //薄?陛 嬴栖贼 ?颤			 | |||
|  | 			obj.sq_IntVectPush(ENUM_MAGIC_CANNON_SUBSTATE_LAND); | |||
|  | 			 		 | |||
|  | 		obj.sq_IntVectPush(obj.getXPos());  | |||
|  | 		obj.sq_IntVectPush(obj.getYPos());  | |||
|  | 		obj.sq_IntVectPush(obj.getZPos());  | |||
|  | 		obj.sq_AddSetStatePacket(STATE_MAGIC_CANNON , STATE_PRIORITY_USER, true); | |||
|  | 		return true; | |||
|  | 	}	 | |||
|  | 	return false; | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | function checkCommandEnable_MagicCannon(obj) | |||
|  | { | |||
|  | 	if(!obj) | |||
|  | 		return false; | |||
|  | 	local state = obj.sq_GetState(); | |||
|  | 	 | |||
|  | 	if(state == STATE_ATTACK) { | |||
|  | 		// 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] | |||
|  | 		return obj.sq_IsCommandEnable(SKILL_MAGIC_CANNON); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return true; | |||
|  | } | |||
|  | 
 | |||
|  | function onProc_MagicCannon(obj) | |||
|  | { | |||
|  | 	if(!obj) | |||
|  | 		return; | |||
|  | 		 | |||
|  | 	local myCannon = obj.getMyPassiveObject(24227,0); | |||
|  | 	if(myCannon) { | |||
|  | 		if(sq_GetCurrentFrameIndex(myCannon) == 7) { | |||
|  | 		}		 | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | function onSetState_MagicCannon(obj, state, datas, isResetTimer) | |||
|  | { | |||
|  | 	if(!obj) return; | |||
|  | 
 | |||
|  | 	local subState = sq_GetVectorData(datas, 0); | |||
|  | 	obj.setSkillSubState(subState);	 | |||
|  | 	 | |||
|  | 	 | |||
|  | 	if(subState == ENUM_MAGIC_CANNON_SUBSTATE_CHARGE) { | |||
|  | 		obj.sq_SetCurrentAnimation(CUSTOM_ANI_AT_MAGIC_CANNON_READY);		 | |||
|  | 		obj.sq_PlaySound("MW_MCANNON");		 | |||
|  | 	} | |||
|  | 	else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_HORIZON) { | |||
|  | 		obj.sq_SetCurrentAnimation(CUSTOM_ANI_AT_MAGIC_CANNON_1);		 | |||
|  | 	} | |||
|  | 	else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_VERTICAL) { | |||
|  | 		obj.sq_SetCurrentAnimation(CUSTOM_ANI_AT_MAGIC_CANNON_3); | |||
|  | 	} | |||
|  | 	else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_DIAGONAL) { | |||
|  | 		obj.sq_SetCurrentAnimation(CUSTOM_ANI_AT_MAGIC_CANNON_2); | |||
|  | 	} | |||
|  | 	else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_LAND) { | |||
|  | 		obj.sq_SetCurrentAnimation(CUSTOM_ANI_AT_MAGIC_CANNON_4); | |||
|  | 		obj.sq_StopMove(); | |||
|  | 		obj.sq_PlaySound("MW_MCANNON"); | |||
|  | 	} | |||
|  | 	 | |||
|  | 	//obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, | |||
|  | 	//		SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); | |||
|  | 		 | |||
|  | 	local x = sq_GetVectorData(datas, 1); | |||
|  | 	local y = sq_GetVectorData(datas, 2); | |||
|  | 	local z = sq_GetVectorData(datas, 3); | |||
|  | 	sq_SetCurrentPos(obj,x,y,z); | |||
|  | 	 | |||
|  | 	 | |||
|  | 	local element = obj.getThrowElement(); | |||
|  | 	addElementalChain_ATMage(obj, element); | |||
|  | } | |||
|  | 
 | |||
|  | function onEndCurrentAni_MagicCannon(obj) | |||
|  | { | |||
|  | 	if(!obj) return; | |||
|  | 	 | |||
|  | 	local subState = obj.getSkillSubState(); | |||
|  | 	 | |||
|  | 	if(subState == ENUM_MAGIC_CANNON_SUBSTATE_LAND) { | |||
|  | 		obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); | |||
|  | 		//sq_GetOppositeDirection | |||
|  | 		//setStaticMoveInfo(0, skill->getIntData(3, this), skill->getIntData(3, this), false, skill->getIntData(4, this), true); | |||
|  | 		//setMoveDirection(getDirection(), ENUM_DIRECTION_NEUTRAL); | |||
|  | 	} | |||
|  | 	else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_CHARGE) {	// 薄? 酝 卫瞪 - 遽绿 翕蒙 部 | |||
|  | 		local isHorizon = sq_IsKeyDown(OPTION_HOTKEY_MOVE_LEFT, ENUM_SUBKEY_TYPE_ALL) || sq_IsKeyDown(OPTION_HOTKEY_MOVE_RIGHT, ENUM_SUBKEY_TYPE_ALL); | |||
|  | 		local isVertical = sq_IsKeyDown(OPTION_HOTKEY_MOVE_DOWN, ENUM_SUBKEY_TYPE_ALL); | |||
|  | 		local subState = ENUM_MAGIC_CANNON_SUBSTATE_DIAGONAL; // 渠陕摹桧 晦狱 | |||
|  | 		 | |||
|  | 		if(isHorizon && !isVertical) | |||
|  | 			subState = ENUM_MAGIC_CANNON_SUBSTATE_HORIZON; | |||
|  | 		else if(!isHorizon && isVertical) | |||
|  | 			subState = ENUM_MAGIC_CANNON_SUBSTATE_VERTICAL;	 | |||
|  | 			 | |||
|  | 		obj.sq_IntVectClear(); | |||
|  | 		obj.sq_IntVectPush(subState);  | |||
|  | 		obj.sq_IntVectPush(obj.getXPos());  | |||
|  | 		obj.sq_IntVectPush(obj.getYPos());  | |||
|  | 		obj.sq_IntVectPush(obj.getZPos());  | |||
|  | 		obj.sq_AddSetStatePacket(STATE_MAGIC_CANNON , STATE_PRIORITY_USER, true);		 | |||
|  | 	} | |||
|  | 	else { // 衙霜议凯 嫦饵陛 部陬戏贼 濠嵘 钒?. | |||
|  | 		obj.sq_IntVectClear(); | |||
|  | 		obj.sq_IntVectPush(1); | |||
|  | 		obj.sq_IntVectPush(0); | |||
|  | 		obj.sq_IntVectPush(0); | |||
|  | 		obj.sq_AddSetStatePacket(STATE_JUMP, STATE_PRIORITY_USER, true);	 | |||
|  | 	} | |||
|  | } | |||
|  | 
 | |||
|  | 
 | |||
|  | function onKeyFrameFlag_MagicCannon(obj, flagIndex) | |||
|  | { | |||
|  | 	if(!obj) return true; | |||
|  | 	 | |||
|  | 	local subState = obj.getSkillSubState(); | |||
|  | 	if(flagIndex == 1) {		 | |||
|  | 		local x = 0; | |||
|  | 		local z = 0; | |||
|  | 		 | |||
|  | 		obj.sq_SetStaticMoveInfo(0, 0, 0, false);	 | |||
|  | 		obj.sq_SetStaticMoveInfo(1, 0, 0, false);	 | |||
|  | 		sq_SetZVelocity(obj,1,0); | |||
|  | 		 | |||
|  | 		if(subState == ENUM_MAGIC_CANNON_SUBSTATE_LAND) { | |||
|  | 			x = 43; | |||
|  | 			z = 70; | |||
|  | 		}	 | |||
|  | 		else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_HORIZON) { | |||
|  | 			x = 54; | |||
|  | 			z = 82; | |||
|  | 		} | |||
|  | 		else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_DIAGONAL) { | |||
|  | 			x = 40; | |||
|  | 			z = 40;	 | |||
|  | 		} | |||
|  | 		 | |||
|  | 		obj.sq_SetMoveDirection(obj.getDirection(), ENUM_DIRECTION_NEUTRAL); | |||
|  | 				 | |||
|  | 		local currentElementalType = obj.getThrowElement(); | |||
|  | 		if(obj.isMyControlObject()) | |||
|  | 		{ | |||
|  | 			sq_BinaryStartWrite(); | |||
|  | 			sq_BinaryWriteWord(subState); | |||
|  | 			sq_BinaryWriteWord(currentElementalType);  | |||
|  | 			obj.sq_SendCreatePassiveObjectPacket(24227, 0, x, 1, z); | |||
|  | 			printc("MW_MCANNON"); | |||
|  | 		} | |||
|  | 	} | |||
|  | 	else if(flagIndex == 2) { | |||
|  | 		if(subState == ENUM_MAGIC_CANNON_SUBSTATE_HORIZON) { | |||
|  | 			obj.sq_SetStaticMoveInfo(0,  -400,  -400, false);	 | |||
|  | 			obj.sq_SetStaticMoveInfo(1, 0, 0, false);	 | |||
|  | 			sq_SetZVelocity(obj,1,0);		 | |||
|  | 		} | |||
|  | 		else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_VERTICAL) { | |||
|  | 			sq_SetZVelocity(obj,400,-400);			 | |||
|  | 		} | |||
|  | 		else if(subState == ENUM_MAGIC_CANNON_SUBSTATE_DIAGONAL) { | |||
|  | 			obj.sq_SetStaticMoveInfo(0, -200, -200, false);	 | |||
|  | 			sq_SetZVelocity(obj,200,-200);			 | |||
|  | 		} | |||
|  | 	} | |||
|  | 	else if(flagIndex == 3) {	 | |||
|  | 		obj.sq_SetStaticMoveInfo(0, -800, -800, false, 3500, true); | |||
|  | 		obj.sq_SetMoveDirection(obj.getDirection(), ENUM_DIRECTION_NEUTRAL); | |||
|  | 		local x = sq_GetDistancePos(0, obj.getDirection(), -20); | |||
|  | 		sq_CreateParticleByGlobal(obj.getDustParticleType(LANDPARTICLE_MOVE), obj, x, 0, 0, true, 80, 120, 5);	 | |||
|  | 	} | |||
|  | 	 | |||
|  | 	return true; | |||
|  | 
 | |||
|  | } | |||
|  |  |