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;
 | ||
| 
 | ||
| }
 | ||
|  |