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