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