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