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