143 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			143 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | POI_MAX_KEYFRAME_INDEX <-8; | ||
|  | 
 | ||
|  | function checkExecutableSkill_PieceOfIce(obj) | ||
|  | { | ||
|  | 
 | ||
|  | 	if (!obj) return false; | ||
|  | 
 | ||
|  | 	local useSkill = obj.sq_IsUseSkill(SKILL_PIECE_OF_ICE); | ||
|  | 
 | ||
|  | 	if (useSkill) { | ||
|  | 		//obj.sq_IntVectClear(); | ||
|  | 		//obj.sq_IntVectPush(SUB_STATE_ICEROAD_0); // substate撮? | ||
|  | 		obj.sq_AddSetStatePacket(STATE_PIECE_OF_ICE, STATE_PRIORITY_IGNORE_FORCE, false); | ||
|  | 		return true; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	return false; | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | function checkCommandEnable_PieceOfIce(obj) | ||
|  | { | ||
|  | 
 | ||
|  | 	if(!obj) return false; | ||
|  | 
 | ||
|  | 	local state = obj.sq_GetState(); | ||
|  | 
 | ||
|  | 	if(state == STATE_ATTACK) { | ||
|  | 		// 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] | ||
|  | 		return obj.sq_IsCommandEnable(SKILL_PIECE_OF_ICE); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	return true; | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | function onSetState_PieceOfIce(obj, state, datas, isResetTimer) | ||
|  | { | ||
|  | 	if(!obj) return;	 | ||
|  | 	 | ||
|  | 	obj.sq_StopMove(); | ||
|  | 	obj.sq_SetCurrentAnimation(CUSTOM_ANI_PIECE_OF_ICE); | ||
|  | 	 | ||
|  | 	obj.sq_SetStaticSpeedInfo(SPEED_TYPE_ATTACK_SPEED, SPEED_TYPE_ATTACK_SPEED, | ||
|  | 			SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); | ||
|  | } | ||
|  | 
 | ||
|  | function onProc_PieceOfIce(obj) | ||
|  | { | ||
|  | 
 | ||
|  | 	if(!obj) return; | ||
|  | 
 | ||
|  | 	local substate = obj.getSkillSubState();	 | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | function onEndCurrentAni_PieceOfIce(obj) | ||
|  | { | ||
|  | 
 | ||
|  | 	if(!obj) return; | ||
|  | 
 | ||
|  | 	local substate = obj.getSkillSubState(); | ||
|  | 	 | ||
|  | 	obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);	 | ||
|  | } | ||
|  | 
 | ||
|  | function onKeyFrameFlag_PieceOfIce(obj, flagIndex) | ||
|  | { | ||
|  | 
 | ||
|  | 	if(!obj) return false; | ||
|  | 
 | ||
|  | 	local substate = obj.getSkillSubState(); | ||
|  | 	local level		  = sq_GetSkillLevel(obj, SKILL_PIECE_OF_ICE); | ||
|  | 	 | ||
|  | 	if(flagIndex == 1) { | ||
|  | 		if(obj.isMyControlObject()) | ||
|  | 		{ | ||
|  | 			obj.sq_StartWrite(); | ||
|  | 			obj.sq_WriteBool(false);  | ||
|  | 			local x = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 0); | ||
|  | 			local z = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 1);		 | ||
|  | 			obj.sq_SendCreatePassiveObjectPacket(24224, 0, x, 0, z); | ||
|  | 		} | ||
|  | 	} | ||
|  | 	else if(flagIndex >= 2 ) { | ||
|  | 		local iceCoreObj = obj.getMyPassiveObject(24224,0); | ||
|  | 		if(iceCoreObj) | ||
|  | 		{			 | ||
|  | 			if(iceCoreObj.isMyControlObject()) { | ||
|  | 				iceCoreObj.sendStatePacket(PIECE_OF_ICE_CORE_STATE_DAMAGE, flagIndex);	 | ||
|  | 			}			 | ||
|  | 			 | ||
|  | 			local randMin = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 2); | ||
|  | 			local randMax = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 3); | ||
|  | 			local randNum = sq_getRandom(randMin, randMax); | ||
|  | 						 | ||
|  | 			for(local i=0;i<randNum;++i) {			 | ||
|  | 			 | ||
|  | 				//譆渠 ?楚斜 樯策蝶 = 8 8缣 陛梱选热烟 彰嫔陛 还横 苌棻. | ||
|  | 				if(obj.isMyControlObject()) | ||
|  | 				{ | ||
|  | 					local hAngleRange = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 5); //谢办 彰嫔 | ||
|  | 					local vAngleRange = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 6); //鼻? 彰嫔 | ||
|  | 					 | ||
|  | 					if(hAngleRange > 360) | ||
|  | 						hAngleRange = 360; | ||
|  | 						 | ||
|  | 					local horizonAngle =  sq_getRandom(0,hAngleRange) -(hAngleRange/2); | ||
|  | 					local verticalAngle = sq_getRandom(0,vAngleRange); | ||
|  | 					 | ||
|  | 					 | ||
|  | 					// ?溯歜桧 虽陈热烟 当撩 谢?陛 薄薄 寰戏煎 菟横陛啪莠 | ||
|  | 					local startPosY = (40 * (8-flagIndex)/POI_MAX_KEYFRAME_INDEX)  * (vAngleRange == 0 ? 1 : horizonAngle/(hAngleRange/2));  | ||
|  | 					local lifeTime	  = sq_GetIntData(obj, SKILL_PIECE_OF_ICE, 4);														 | ||
|  | 					local iceParticle = sq_CreateDrawOnlyObject(iceCoreObj, "PassiveObject/Character/Mage/Animation/ATPieceOfIce/08_ice_shard1_dodge.ani",ENUM_DRAWLAYER_NORMAL,true); | ||
|  | 					sq_SetCustomRotate(iceParticle,sq_ToRadian(-horizonAngle.tofloat()));	 | ||
|  | 					 | ||
|  | 					obj.sq_StartWrite(); | ||
|  | 					obj.sq_WriteWord(sq_getRandom(0,5)); | ||
|  | 					obj.sq_WriteFloat(horizonAngle.tofloat()); // 热? 彰嫔  | ||
|  | 					obj.sq_WriteFloat(verticalAngle.tofloat());  // 热霜 彰嫔 | ||
|  | 					obj.sq_WriteWord(lifeTime);									 | ||
|  | 					 | ||
|  | 					obj.sq_SendCreatePassiveObjectPacket(24223, 0, 60, startPosY, 75);			 | ||
|  | 				} | ||
|  | 			}	 | ||
|  | 		} | ||
|  | 	}	 | ||
|  | 
 | ||
|  | 	return true; | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | function onDamage_PieceOfIce(obj, attacker, boundingBox) | ||
|  | { | ||
|  | 	if(!obj) return; | ||
|  | 	 | ||
|  | 	local iceCoreObj = obj.getMyPassiveObject(24224,0); | ||
|  | 	if(iceCoreObj) | ||
|  | 		iceCoreObj.sendStateOnlyPacket(PIECE_OF_ICE_CORE_STATE_END); | ||
|  | 
 | ||
|  | } |