// state蒂 撮??坚 籀挤戏煎 菟横螃啪 腌栖棻. 陕谦 葬模蝶蒂 撮??栖棻. function onSetState_Attack(obj, state, datas, isResetTimer) { if (!obj) return; local skillLevel = obj.sq_GetSkillLevel(SKILL_ICE_ELEMENTAL_ATTACK); // 热樯羹蒂 寡锡挤. if (skillLevel > 0) { // 橾奁 奢问卫, 擅戏煎 瞪霞 籀葬 obj.setAttackXVelocity(250); obj.setAttackXAccel(-1000); obj.setAttackXVelocityFast(400); obj.setAttackXAccelFast(-1000); // 晦狱晦 熨湿 瞳辨 obj.applyBasicAttackUp(sq_GetCurrentAttackInfo(obj),obj.getState()); sq_SetCurrentAttackInfo(obj, sq_GetCurrentAttackInfo(obj)); } else { // 热樯羹蒂 寡办虽 强懊棻贼 薯濠葬缣怃 葆彻掘 卫瞪 obj.setAttackXVelocity(0); obj.setAttackXAccel(0); obj.setAttackXVelocityFast(0); obj.setAttackXAccelFast(0); local element = obj.getThrowElement(); local attackIndex = obj.getAttackIndex(); playSoundForAtmageAttack(obj, element, attackIndex); } } function onAfterSetState_Attack(obj, state, datas, isResetTimer) { if (!obj) return; // 热樯羹 蝶鉴击 寡锡棻贼, ?颤 缣栖诡桧暮桧 夥莘 // 葆彻掘紫 嫦饵肾虽 强挤. local iceElementalAttackSkillLevel = obj.sq_GetSkillLevel(SKILL_ICE_ELEMENTAL_ATTACK); if (state == STATE_ATTACK && iceElementalAttackSkillLevel <= 0) { // ?颤 桧??蒂 称樯棻. // 勘溥毡朝 帼? 蝶鉴 樯策蝶 塽 怃粽 蝶才桧?缣 评塭怃 尔罹虽朝 桧??陛 棻荤 (楼撩缣评塭怃 称朝 桧??陛 棻荤) local element = obj.getThrowElement(); local attackIndex = obj.getAttackIndex(); // 楼撩嫦翕 appendage缣 勘溥毡朝虽 羹觼?. // 楼撩嫦翕缣 勘溥毡虽 强棻贼 鼠楼撩 ?颤陛 嫦饵脾 local appendage = obj.GetSquirrelAppendage("Character/ATMage/ElementalChange/ap_ATMage_Elemental_Change.nut"); if (!appendage || !appendage.isValid()) element = ENUM_ELEMENT_NONE; if (attackIndex == 0) { if (element == ENUM_ELEMENT_FIRE) { // ?楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack1_fire_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack1_fire_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_WATER) { // 热楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack1_water_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack1_water_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_DARK) { // 檩楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack1_dark_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack1_dark_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_LIGHT) { // 赀楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack1_light_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack1_light_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_NONE) { // 鼠楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack1_none_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack1_none_dodge.ani"), 0, 0); } } else if (attackIndex == 1) { if (element == ENUM_ELEMENT_FIRE) { // ?楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack2_fire_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack2_fire_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_WATER) { // 热楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack2_water_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack2_water_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_DARK) { // 檩楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack2_dark_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack2_dark_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_LIGHT) { // 赀楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack2_light_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack2_light_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_NONE) { // 鼠楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack2_none_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack2_none_dodge.ani"), 0, 0); } } else if (attackIndex == 2) { if (element == ENUM_ELEMENT_FIRE) { // ?楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack3_fire_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack3_fire_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_WATER) { // 热楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack3_water_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack3_water_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_DARK) { // 檩楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack3_dark_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack3_dark_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_LIGHT) { // 赀楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack3_light_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack3_light_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_NONE) { // 鼠楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack3_none_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack3_none_dodge.ani"), 0, 0); } } else if (attackIndex == 3) { if (element == ENUM_ELEMENT_FIRE) { // ?楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack4_fire_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/fire/attack4_fire_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_WATER) { // 热楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack4_water_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/water/attack4_water_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_DARK) { // 檩楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack4_dark_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/dark/attack4_dark_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_LIGHT) { // 赀楼撩 obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack4_light_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/light/attack4_light_dodge.ani"), 0, 0); } else if (element == ENUM_ELEMENT_NONE) { obj.sq_AddStateLayerAnimation(1, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack4_none_normal.ani"), 0, 0); obj.sq_AddStateLayerAnimation(2, obj.sq_CreateCNRDAnimation("Effect/Animation/ATAttack/attack4_none_dodge.ani"), 0, 0); } } } } function createMiniMagicCircle(obj, xPos, zPos, shotDirection, bonusDamage) // direction 0:姜贼 1:渠陕摹 2:?钦) { if(!obj) return; if (obj.sq_IsMyControlObject()) { // 葆彻掘羹 当撩嫔纂 local direction = sq_GetDirection(obj); local x = sq_GetDistancePos(obj.getXPos(), direction, xPos); local y = sq_GetDistancePos(obj.getYPos(), ENUM_DIRECTION_DOWN, 1); local z = sq_GetDistancePos(obj.getZPos(), ENUM_DIRECTION_UP, zPos); // 擒除暧 嵘紫晦栋桧 毡挤. // 奢问濠 // 嫦饵 嫔纂(x,y,z) // 陛煎 嫦饵陕 (0桧贼 擅戏煎 嫦饵, 30桧贼 螃艇薹 30紫煎 嫦饵) // 撮煎 嫦饵陕 (0桧贼 擅戏煎 嫦饵, -30桧贼 嬴楚薹 30紫煎 嫦饵) // 陛煎 譆渠 尔姜陕 (?薹 寞?) // 撮煎 譆渠 尔姜陕 (?薹 寞?) // 瞳娄暧 譆渠 剪葬. -1桧贼 薯? 桡挤 // x蹴 譆渠 饵姜剪葬 // 奢问 梦蝶暧 x蹴 觼晦 // 奢问 梦蝶暧 y蹴 觼晦 // 奢问 梦蝶暧 z蹴 觼晦 local activeObject; local searchAngleH = 0; local searchAngleV = 0; local passiveObjectIndex = 0; if(shotDirection == 0) { // 姜贼 //activeObject = sq_FindShootingTarget(obj, x, y, z, 0, 0, 10, 10, -1, 1000, 1000, 250, 100); local distance = 1000; local angle = 20; activeObject = findAngleTarget(obj, distance, angle, 100); // 睡瓣笛 赅晔暧 瞳 匐仪 searchAngleH = 30; searchAngleV = 15; passiveObjectIndex = 24202; // 翱楼嫦饵朝 当梯亿朝 伪虽虏, 棻艇 螃粽薛?陛 嫦饵脾 (钟帼瞪暧 舱?击 嫡晦阳侥) if (obj.getState() == STATE_MULTI_SHOT) passiveObjectIndex = 24266; } else if(shotDirection == 1) {// 渠陕摹 activeObject = sq_FindShootingTarget(obj, x, y, z, 0, 0, 4, 4, -1, 300, 100, 50, 100); searchAngleH = 5; searchAngleV = 5; passiveObjectIndex = 24207; // 翱楼嫦饵朝 当梯亿朝 伪虽虏, 棻艇 螃粽薛?陛 嫦饵脾 (钟帼瞪暧 舱?击 嫡晦阳侥) if (obj.getState() == STATE_MULTI_SHOT) passiveObjectIndex = 24271; } else if(shotDirection == 2) { // ?钦 activeObject = sq_FindShootingTarget(obj, x, y, z, 0, 0, 4, 4, -1, 300, 100, 50, 100); searchAngleH = 5; searchAngleV = 5; passiveObjectIndex = 24228; // 翱楼嫦饵朝 当梯亿朝 伪虽虏, 棻艇 螃粽薛?陛 嫦饵脾 (钟帼瞪暧 舱?击 嫡晦阳侥) if (obj.getState() == STATE_MULTI_SHOT) passiveObjectIndex = 24276; } else { printc("error! magic ball create shotDirection error"); return; } // 楼撩嫦翕 appendage缣 勘溥毡朝虽 羹觼?. // 楼撩嫦翕缣 勘溥毡虽 强棻贼 鼠楼撩 ?颤陛 嫦饵脾 local horizonAngle = 0.0; local verticalAngle = 0.0; if (activeObject != NULL) { local maxDistance = abs(activeObject.getXPos() - x); horizonAngle = sq_GetShootingHorizonAngle(activeObject, y, 0, searchAngleH, maxDistance); verticalAngle = sq_GetShootingVerticalAngle(activeObject, z, 0, searchAngleV, maxDistance, 300); } local appendage = obj.GetSquirrelAppendage("Character/ATMage/ElementalChange/ap_ATMage_Elemental_Change.nut"); if (appendage && appendage.isValid()) { local element = obj.getThrowElement(); passiveObjectIndex = passiveObjectIndex + 1 + element; } obj.sq_StartWrite(); obj.sq_WriteFloat(horizonAngle); obj.sq_WriteFloat(verticalAngle); obj.sq_WriteDword(bonusDamage); obj.sq_SendCreatePassiveObjectPacket(passiveObjectIndex, 0, xPos, 1, zPos); } } // 奢问卫 葆彻 掘羹蒂 当撩?棻. function onKeyFrameFlag_Attack(obj, flagIndex) { if(!obj) return false; local isMyControlObject = obj.sq_IsMyControlObject(); // 奢问?阳葆棻 葆彻 掘羹蒂 当撩?棻. // 勘溥毡朝 帼?缣 评塭怃 当撩 肾横螳捡 ? ?卫粽 螃粽薛?陛 棻荤(楼撩) // local xPos = 0, zPos = 0; local attackIndex = obj.getAttackIndex(); if (attackIndex == 0) { xPos = 65, zPos = 59; } else if (attackIndex == 1) { xPos = 60, zPos = 71; } else if (attackIndex == 2) { xPos = 55, zPos = 58; } else if (attackIndex == 3) { xPos = 65, zPos = 36; } if (flagIndex == 1) { // 葆彻掘羹蒂 当撩?棻. createMiniMagicCircle(obj, xPos, zPos, 0, 0); // direction 0:姜贼 1:渠陕摹 2:?钦 } return true; } function playSoundForAtmageAttack(obj, elementalType, attackCount) { if(!obj) return; local elementalName = "MWSHOT_0"; if (elementalType == ENUM_ELEMENT_FIRE) elementalName = "FIRESHOT_0"; else if (elementalType == ENUM_ELEMENT_WATER) elementalName = "ICESHOT_0"; else if (elementalType == ENUM_ELEMENT_DARK) elementalName = "DARKSHOT_0"; else if (elementalType == ENUM_ELEMENT_LIGHT) elementalName = "LIGHTSHOT_0"; obj.sq_PlaySound(elementalName + (attackCount+1)); }