178 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			178 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								getroottable()["CrystalAttackCreatePos"] <- {};
							 | 
						|||
| 
								 | 
							
								getroottable()["CrystalAttackCreatePos"] = [[0,0],[-10,15],[10,-15],  // 籀挤 撮偃暧 当撩 ?虽暮
							 | 
						|||
| 
								 | 
							
																			[-5,8],[5,-8],[-15,23],[15,-23],
							 | 
						|||
| 
								 | 
							
																			[0,0],[-10,15],[10,-15],[-15,30],[15,-30]];
							 | 
						|||
| 
								 | 
							
																														
							 | 
						|||
| 
								 | 
							
								function checkExecutableSkill_CrystalAttack(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(!obj) return false;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local b_useskill = obj.sq_IsUseSkill(SKILL_CRYSTALATTACK);
							 | 
						|||
| 
								 | 
							
									if(b_useskill) {
							 | 
						|||
| 
								 | 
							
										obj.sq_AddSetStatePacket(STATE_CRYSTALATTACK , STATE_PRIORITY_USER, false);
							 | 
						|||
| 
								 | 
							
										return true;
							 | 
						|||
| 
								 | 
							
									}	
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onTimeEvent_CrystalAttack(obj, timeEventIndex, timeEventCount)
							 | 
						|||
| 
								 | 
							
								{	
							 | 
						|||
| 
								 | 
							
									if(!obj)
							 | 
						|||
| 
								 | 
							
										return true;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(!obj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
										return true;
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									local maxCreateCount = ::CrystalAttackCreatePos.len();
							 | 
						|||
| 
								 | 
							
									local createCount = obj.sq_GetIntData(SKILL_CRYSTALATTACK, 1);
							 | 
						|||
| 
								 | 
							
									local currentIndex = timeEventCount-1;
							 | 
						|||
| 
								 | 
							
									if(timeEventCount > createCount)
							 | 
						|||
| 
								 | 
							
										return true;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local dmg = obj.sq_GetBonusRateWithPassive(SKILL_CRYSTALATTACK , STATE_CRYSTALATTACK, 0, 1.0);
							 | 
						|||
| 
								 | 
							
									local attackSpeedRate = obj.sq_GetIntData(SKILL_CRYSTALATTACK, 0);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local pos		= ::CrystalAttackCreatePos[currentIndex];			
							 | 
						|||
| 
								 | 
							
									local xDistance = pos[0];
							 | 
						|||
| 
								 | 
							
									local angle		= pos[1];
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									obj.sq_StartWrite();
							 | 
						|||
| 
								 | 
							
									obj.sq_WriteDword(dmg);		// 等嘐虽
							 | 
						|||
| 
								 | 
							
									obj.sq_WriteFloat(angle.tofloat());	// 陕紫
							 | 
						|||
| 
								 | 
							
									obj.sq_WriteWord(attackSpeedRate); 
							 | 
						|||
| 
								 | 
							
									obj.sq_WriteWord(currentIndex);  // 橡挤 樯策蝶
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									obj.sq_SendCreatePassiveObjectPacket(24221, 0, 120 + xDistance, 1, 0);
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									return false;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onProc_CrystalAttack(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if (!obj) return;	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local var = obj.getVar();	
							 | 
						|||
| 
								 | 
							
									if(obj.sq_GetCurrentFrameIndex() > 1 && var.getBool(1) == false) // 嫦饵胀瞳桧 桡棻贼
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										var.setBool(1,true); // 嫦饵 ?挤.			
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										local maxCreateCount = ::CrystalAttackCreatePos.len();
							 | 
						|||
| 
								 | 
							
										obj.setTimeEvent(0,50,maxCreateCount,false);
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
								function checkCommandEnable_CrystalAttack(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return false;
							 | 
						|||
| 
								 | 
							
									local state = obj.sq_GetState();
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									if(state == STATE_ATTACK) {
							 | 
						|||
| 
								 | 
							
										return obj.sq_IsCommandEnable(SKILL_CRYSTALATTACK);
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									return true;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onSetState_CrystalAttack(obj, state, datas, isResetTimer)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									obj.sq_StopMove();
							 | 
						|||
| 
								 | 
							
									obj.sq_SetCurrentAnimation(CUSTOM_ANI_CRYSTALATTACK);	
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									local attackSpeedRate = obj.sq_GetIntData(SKILL_CRYSTALATTACK, 0);	
							 | 
						|||
| 
								 | 
							
									if(attackSpeedRate != 100) {
							 | 
						|||
| 
								 | 
							
										obj.sq_SetAnimationSpeedRate(obj.sq_GetCurrentAni(),attackSpeedRate.tofloat());
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									obj.sq_PlaySound("MW_CRYSTALATK");
							 | 
						|||
| 
								 | 
							
									local var = obj.getVar();
							 | 
						|||
| 
								 | 
							
									var.setBool(1,false); // 觼葬蝶骁 横鸥桧 嫦翕 腑朝虽 嵘鼠. 渗热 蟾晦?.
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									//obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED,
							 | 
						|||
| 
								 | 
							
									//		SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0);	
							 | 
						|||
| 
								 | 
							
									addElementalChain_ATMage(obj, ENUM_ELEMENT_WATER);
							 | 
						|||
| 
								 | 
							
								}	
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function prepareDraw_CrystalAttack(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
									local substate = obj.getSkillSubState();
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								function onEndCurrentAni_CrystalAttack(obj)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									if(!obj) return;
							 | 
						|||
| 
								 | 
							
									
							 | 
						|||
| 
								 | 
							
									obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false);
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//function onKeyFrameFlag_CrystalAttack(obj, flagIndex)
							 | 
						|||
| 
								 | 
							
								//{
							 | 
						|||
| 
								 | 
							
									//if(!obj) return true;
							 | 
						|||
| 
								 | 
							
									//
							 | 
						|||
| 
								 | 
							
									//
							 | 
						|||
| 
								 | 
							
									//local currentCreateCount = ::CrystalAttackCreatePos.len();
							 | 
						|||
| 
								 | 
							
									//
							 | 
						|||
| 
								 | 
							
									//local angle = 0.0;
							 | 
						|||
| 
								 | 
							
									//local xDistance = 0;
							 | 
						|||
| 
								 | 
							
									//if(flagIndex == 2) {
							 | 
						|||
| 
								 | 
							
										//local rand = sq_getRandom(10,20);
							 | 
						|||
| 
								 | 
							
										//angle = sq_ToRadian(rand.tofloat());
							 | 
						|||
| 
								 | 
							
										//xDistance = -10;
							 | 
						|||
| 
								 | 
							
									//}
							 | 
						|||
| 
								 | 
							
									//else if(flagIndex == 3) {
							 | 
						|||
| 
								 | 
							
										//local rand = sq_getRandom(10,20) * -1;
							 | 
						|||
| 
								 | 
							
										//angle = sq_ToRadian(rand.tofloat());
							 | 
						|||
| 
								 | 
							
										//xDistance = 10;
							 | 
						|||
| 
								 | 
							
									//}
							 | 
						|||
| 
								 | 
							
										//
							 | 
						|||
| 
								 | 
							
									//local dmg = obj.sq_GetBonusRateWithPassive(SKILL_CRYSTALATTACK , STATE_CRYSTALATTACK, 0, 1.0);
							 | 
						|||
| 
								 | 
							
									//local attackSpeedRate = obj.sq_GetIntData(SKILL_CRYSTALATTACK, 0);
							 | 
						|||
| 
								 | 
							
									//
							 | 
						|||
| 
								 | 
							
									//if(obj.isMyControlObject())
							 | 
						|||
| 
								 | 
							
									//{
							 | 
						|||
| 
								 | 
							
										//obj.sq_StartWrite();
							 | 
						|||
| 
								 | 
							
										//obj.sq_WriteDword(dmg);		// 等嘐虽
							 | 
						|||
| 
								 | 
							
										//obj.sq_WriteFloat(angle);	// 陕紫
							 | 
						|||
| 
								 | 
							
										//obj.sq_WriteWord(attackSpeedRate); 
							 | 
						|||
| 
								 | 
							
										//obj.sq_WriteBool(false);  // ?撩 蝶鉴 嵘鼠
							 | 
						|||
| 
								 | 
							
										//
							 | 
						|||
| 
								 | 
							
										//obj.sq_SendCreatePassiveObjectPacket(24221, 0, 120 + xDistance, 1, 0);
							 | 
						|||
| 
								 | 
							
										//
							 | 
						|||
| 
								 | 
							
										//
							 | 
						|||
| 
								 | 
							
										//// ?撩 蝶鉴击 嫔?
							 | 
						|||
| 
								 | 
							
										//// 觼葬蝶骁 横鸥 鬼?蒂 栉?棻贼 觼葬蝶骁桧 4偃 涡 当撩腌栖棻.
							 | 
						|||
| 
								 | 
							
										//local skillLevel = sq_GetSkillLevel(obj, SKILL_CRYSTALATTACK_EX);
							 | 
						|||
| 
								 | 
							
										//if (flagIndex == 3 && skillLevel > 0)
							 | 
						|||
| 
								 | 
							
										//{
							 | 
						|||
| 
								 | 
							
											//local angles = [0.5, 0.15, -0.20, -0.40];
							 | 
						|||
| 
								 | 
							
											//local xDistances = [-130, -110, -90, -70];
							 | 
						|||
| 
								 | 
							
											//
							 | 
						|||
| 
								 | 
							
											//// 嫔薹缣 4偃陛 寡翮肾横 当撩桧 肾紫烟 ?
							 | 
						|||
| 
								 | 
							
											//for (local i = 0; i < 4; i++)
							 | 
						|||
| 
								 | 
							
											//{
							 | 
						|||
| 
								 | 
							
											//
							 | 
						|||
| 
								 | 
							
												//obj.sq_StartWrite();
							 | 
						|||
| 
								 | 
							
												//obj.sq_WriteDword(dmg);		// 等嘐虽
							 | 
						|||
| 
								 | 
							
												//obj.sq_WriteFloat(angles[i]);	// 陕紫
							 | 
						|||
| 
								 | 
							
												//obj.sq_WriteWord(attackSpeedRate); 		
							 | 
						|||
| 
								 | 
							
												//obj.sq_WriteBool(true);	 // ?撩 蝶鉴 嵘鼠
							 | 
						|||
| 
								 | 
							
												//obj.sq_SendCreatePassiveObjectPacket(24221, 0, 220 + xDistances[i], 1, 0);
							 | 
						|||
| 
								 | 
							
											//}
							 | 
						|||
| 
								 | 
							
										//}
							 | 
						|||
| 
								 | 
							
									//}
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
									//return true;
							 | 
						|||
| 
								 | 
							
								//
							 | 
						|||
| 
								 | 
							
								//}
							 | 
						|||
| 
								 | 
							
								// |