ENUM_ICE_CHAKRAM_TIMER_LARGE_MULTI_HIT <- 0; SUB_STATE_ICECHAKRAM_0 <- 0 SUB_STATE_ICECHAKRAM_1 <- 1 SUB_STATE_ICECHAKRAM_2 <- 2 SUB_STATE_ICECHAKRAM_3 <- 3 SUB_STATE_ICECHAKRAM_4 <- 4 // 陈萼 离觼茔 赅戏晦. SUB_STATE_ICECHAKRAM_5 <- 5 // 赎 离觼茔 ?瞪 SUB_STATE_ICECHAKRAM_6 <- 6 // 赎 离觼茔 湍虽晦 VAR_ICE_CHAKRAM_ATTRACT_APPENDAGE <- 0; function checkExecutableSkill_IceChakram(obj) { if(!obj) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_ICECHAKRAM); if(b_useskill) { obj.sq_IntVectClear(); obj.sq_IntVectPush(SUB_STATE_ICECHAKRAM_0); // substate撮? //2离 奢问 才蝶?辨. //obj.sq_IntVectPush(SUB_STATE_ICECHAKRAM_4); // substate撮? obj.sq_AddSetStatePacket(STATE_ICECHAKRAM, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_IceChakram(obj) { if(!obj) return false; local state = obj.sq_GetState(); if(state == STATE_ATTACK) { // 警蜗 蝶鉴 偃? 蒙机濠: 姜霞热 [2012.04.20] return obj.sq_IsCommandEnable(SKILL_ICECHAKRAM); } return true; } function onSetState_IceChakram(obj, state, datas, isResetTimer) { if(!obj) return; local substate = obj.sq_GetVectorData(datas, 0); obj.setSkillSubState(substate); obj.getVar().clear_vector(); obj.getVar().push_vector(0); obj.getVar().push_vector(0); obj.getVar().push_vector(0); obj.getVar().push_vector(0); obj.getVar().push_vector(0); obj.getVar("state").clear_ct_vector(); obj.getVar("state").push_ct_vector(); obj.getVar("ani").clear_vector(); obj.getVar("ani").push_vector(0); if(substate == SUB_STATE_ICECHAKRAM_0) { // SUB_STATE_ICECHAKRAM_0 怃粽蝶才桧? 蒙机 obj.sq_SetCurrentAnimation(CUSTOM_ANI_ICECHAKRAM_1); // 议蝶? 桡挤. } else if(substate == SUB_STATE_ICECHAKRAM_1) { // SUB_STATE_ICECHAKRAM_1 怃粽蝶才桧? 蒙机 local t = obj.getVar("state").get_ct_vector(0); t.Reset(); t.Start(10000,0); obj.sq_SetCurrentAnimation(CUSTOM_ANI_ICECHAKRAM_2); if(obj.isMyControlObject()) { //5 // 0. 当撩肾朝 橡挤坚葬 偎热 //5 // 1. 蒙擎 橡挤 坚葬 棻钦?? ?热 local createSmallRingNum = sq_GetLevelData(obj, SKILL_ICECHAKRAM, 3, sq_GetSkillLevel(obj, SKILL_ICECHAKRAM)); // 3. 当撩肾朝 橡挤坚葬 偎热 local multiHitNum = sq_GetLevelData(obj, SKILL_ICECHAKRAM, 4, sq_GetSkillLevel(obj, SKILL_ICECHAKRAM)); // 4. 蒙擎 橡挤 坚葬 棻钦?? ?热 local power = obj.sq_GetBonusRateWithPassive(SKILL_ICECHAKRAM, STATE_ICECHAKRAM, 0,1.0); // 0.蒙擎 橡挤坚葬 棻钦?? 奢问溘(+) sq_BinaryStartWrite(); sq_BinaryWriteDword(createSmallRingNum); // sq_BinaryWriteDword(multiHitNum); // sq_BinaryWriteDword(power); // obj.sq_SendCreatePassiveObjectPacket(24257, 0, 0, 0, 0); // 24257 `Character/Mage/ATIceChakramSmallMgr.obj` // 陴彻饵 彩盟? 蒙擎彩念 衙栖螳 } } else if(substate == SUB_STATE_ICECHAKRAM_2) { // SUB_STATE_ICECHAKRAM_2 怃粽蝶才桧? 蒙机 obj.sq_SetCurrentAnimation(CUSTOM_ANI_ICECHAKRAM_3); obj.sq_PlaySound("RAGEBLAST_SPIN_01", 7577); } else if(substate == SUB_STATE_ICECHAKRAM_3) { // SUB_STATE_ICECHAKRAM_3 怃粽蝶才桧? 蒙机 local isFindChr = obj.sq_GetVectorData(datas, 1); obj.getVar("findchr").clear_vector(); obj.getVar("findchr").push_vector(isFindChr); obj.sq_SetCurrentAnimation(CUSTOM_ANI_ICECHAKRAM_4); } else if(substate == SUB_STATE_ICECHAKRAM_4) { // SUB_STATE_ICECHAKRAM_4 怃粽蝶才桧? 蒙机 obj.sq_SetCurrentAnimation(CUSTOM_ANI_ICECHAKRAM_4); } else if(substate == SUB_STATE_ICECHAKRAM_5) { // ?瞪 obj.sq_SetCurrentAnimation(CUSTOM_ANI_ICECHAKRAM_5); sq_SetCurrentAttackInfoFromCustomIndex(obj,CUSTOM_ATTACK_INFO_ICE_CHAKRAM); sq_SetBodyEffect(obj, obj, true, sq_RGB(255,255,255), 0, 80, 0, sq_ALPHA(255)); // 跺缣 ?担 桧?? sq_SetCurrentAttackeHitStunTime(sq_GetCurrentAttackInfo(obj), 0); // 奢问 唳霜卫除 桡拥晦. // 赎坚葬 棻钦 ?? 奢问溘 扑姜 local power = obj.sq_GetBonusRateWithPassive(SKILL_ICECHAKRAM , STATE_ICECHAKRAM, 1, 1.0); obj.sq_SetCurrentAttackBonusRate(power); // 赎坚葬 棻钦 ?? 除问 属寥 local multiHitTimeGab = sq_GetIntData(obj, SKILL_ICECHAKRAM, 4); obj.setTimeEvent(ENUM_ICE_CHAKRAM_TIMER_LARGE_MULTI_HIT, multiHitTimeGab , 0, false); // 0桧贼 鼠?渠 obj.sq_PlaySound("MW_RAGEBLAST_READY"); local attractPower = sq_GetLevelData(obj, SKILL_ICECHAKRAM, 6, sq_GetSkillLevel(obj, SKILL_ICECHAKRAM)); if(attractPower > 0) { // 庄横渡啖韩 迹瞳虽 颤啃, 庄横菟桧朝 ?暧 剪葬 , 颤啃戏煎 睡搅暧 迹瞳虽 剪葬, 庄横渡望 楼紫 local appendage = sq_AttractToMe(obj, 200, 100, attractPower); local var = obj.getVar(); var.setAppendage(VAR_ICE_CHAKRAM_ATTRACT_APPENDAGE, appendage); } } else if(substate == SUB_STATE_ICECHAKRAM_6) { obj.sq_SetCurrentAnimation(CUSTOM_ANI_ICECHAKRAM_6); } } function onTimeEvent_IceChakram(obj, timeEventIndex, timeEventCount) { if(!obj) return false; if(!obj.isMyControlObject()) return false; if(timeEventIndex == ENUM_ICE_CHAKRAM_TIMER_LARGE_MULTI_HIT) { obj.resetHitObjectList(); //棻钦??蒂嫔? ??螃粽薛? 葬蝶?蒂 葬掸. return false; // false贼 啗楼 属寥 (timeEventCount苹遴?陛 嵘?桧塭贼 timeEventCount 虏踯 属寥) } return true; // true贼 属寥 酝钦 } function prepareDraw_IceChakram(obj) { if(!obj) return; local substate = obj.getSkillSubState(); if(substate == SUB_STATE_ICECHAKRAM_0) { // SUB_STATE_ICECHAKRAM_0 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_1) { // SUB_STATE_ICECHAKRAM_1 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_2) { // SUB_STATE_ICECHAKRAM_2 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_3) { // SUB_STATE_ICECHAKRAM_3 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_4) { // SUB_STATE_ICECHAKRAM_4 怃粽蝶才桧? 蒙机 } } function onProc_IceChakram(obj) { if(!obj) return; local substate = obj.getSkillSubState(); local pAni = obj.sq_GetCurrentAni(); local frmIndex = obj.sq_GetCurrentFrameIndex(pAni); local currentT = sq_GetCurrentTime(pAni); obj.sq_StopMove(); if(substate == SUB_STATE_ICECHAKRAM_0) { // SUB_STATE_ICECHAKRAM_0 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_1) { // SUB_STATE_ICECHAKRAM_1 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_2) { // SUB_STATE_ICECHAKRAM_2 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_3) { // SUB_STATE_ICECHAKRAM_3 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_4) { // SUB_STATE_ICECHAKRAM_4 怃粽蝶才桧? 蒙机 } } function onProcCon_IceChakram(obj) { if(!obj) return; local substate = obj.getSkillSubState(); local pAni = obj.sq_GetCurrentAni(); local frmIndex = obj.sq_GetCurrentFrameIndex(pAni); if(substate == SUB_STATE_ICECHAKRAM_0) { // SUB_STATE_ICECHAKRAM_0 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_1) { local loopTime = 400; local t = obj.getVar("state").get_ct_vector(0); local currentT = 0; currentT = t.Get(); //print( " currentT:" + currentT + " loopTime:" + loopTime); if(currentT > loopTime) { if(!obj.getVar().get_vector(0)) { obj.sq_IntVectClear(); obj.sq_IntVectPush(SUB_STATE_ICECHAKRAM_2); // substate撮? obj.sq_AddSetStatePacket(STATE_ICECHAKRAM, STATE_PRIORITY_IGNORE_FORCE, true); obj.getVar().set_vector(0, 1); } } } else if(substate == SUB_STATE_ICECHAKRAM_2) { if(obj.isMyControlObject()) { if(obj.getVar("ani").get_vector(0)) { local smallRingObj = obj.sq_GetPassiveObject(24258); // po_ATIceChakramSmallIceRing.nut 24258 if(smallRingObj) { local passiveState = smallRingObj.getState(); if(passiveState == PASSIVEOBJ_SUB_STATE_2) { local isFindChr = smallRingObj.getVar("findchr").get_vector(0); obj.sq_IntVectClear(); obj.sq_IntVectPush(SUB_STATE_ICECHAKRAM_3); // substate撮? obj.sq_IntVectPush(isFindChr); // substate撮? obj.sq_AddSetStatePacket(STATE_ICECHAKRAM, STATE_PRIORITY_IGNORE_FORCE, true); } } else { obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); } } } } else if(substate == SUB_STATE_ICECHAKRAM_3) { // SUB_STATE_ICECHAKRAM_3 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_4) { // SUB_STATE_ICECHAKRAM_4 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_6) { sq_RemoveParticle("Character/Mage/Effect/Particle/ATIceChakramDust.ptl", obj); } } function onEndCurrentAni_IceChakram(obj) { if(!obj) return; local substate = obj.getSkillSubState(); if(substate == SUB_STATE_ICECHAKRAM_0) { // SUB_STATE_ICECHAKRAM_0 怃粽蝶才桧? 蒙机 if(obj.isMyControlObject()) { obj.sq_IntVectClear(); obj.sq_IntVectPush(SUB_STATE_ICECHAKRAM_1); // substate撮? obj.sq_AddSetStatePacket(STATE_ICECHAKRAM, STATE_PRIORITY_IGNORE_FORCE, true); } } else if(substate == SUB_STATE_ICECHAKRAM_1) { } else if(substate == SUB_STATE_ICECHAKRAM_2) { obj.getVar("ani").set_vector(0, 1); } else if(substate == SUB_STATE_ICECHAKRAM_3) { // SUB_STATE_ICECHAKRAM_3 怃粽蝶才桧? 蒙机 if(obj.isMyControlObject()) { if(obj.getVar("findchr").get_vector(0)) { obj.sq_IntVectClear(); obj.sq_IntVectPush(SUB_STATE_ICECHAKRAM_5); // substate撮? obj.sq_AddSetStatePacket(STATE_ICECHAKRAM, STATE_PRIORITY_IGNORE_FORCE, true); } else obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); } } else if(substate == SUB_STATE_ICECHAKRAM_4) { // 陈嬴蚂 离觼茔击 赅戏朝 翕蒙 obj.sendStatePacket(STATE_ICECHAKRAM, SUB_STATE_ICECHAKRAM_5); } else if(substate == SUB_STATE_ICECHAKRAM_5) { // 赎 离觼茔 ?瞪 卫郦朝 翕蒙 obj.sendStatePacket(STATE_ICECHAKRAM, SUB_STATE_ICECHAKRAM_6); } else if(substate == SUB_STATE_ICECHAKRAM_6) { // 赎 离觼茔 ?瞪 卫郦朝 翕蒙 obj.sendStateOnlyPacket(STATE_STAND); } } function onKeyFrameFlag_IceChakram(obj, flagIndex) { if(!obj) return true; local substate = obj.getSkillSubState(); if(substate == SUB_STATE_ICECHAKRAM_0) { // SUB_STATE_ICECHAKRAM_0 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_1) { // SUB_STATE_ICECHAKRAM_1 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_2) { // SUB_STATE_ICECHAKRAM_2 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_3) { // SUB_STATE_ICECHAKRAM_3 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_4) { // SUB_STATE_ICECHAKRAM_4 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_5) { if(flagIndex == 1) { obj.sq_PlaySound("RAGEBLAST_THROW_LOOP",3711); sq_SetMyShake(obj,2,100); sq_CreateParticle("Character/Mage/Effect/Particle/ATIceChakramDust.ptl",obj,60, -60,0,true,350,1000,100); sq_CreateParticle("Character/Mage/Effect/Particle/ATIceChakramDust_1.ptl",obj,-10,-10,0,true,350,1000,100); } } else if(substate == SUB_STATE_ICECHAKRAM_6) { if(flagIndex == 1) { local createXDis = 30; local createYDis = 1; local createZDis = 58; local searchAngleH = 30; local searchAngleV = 15; local distance = 1000; local angle = 20; local x = sq_GetDistancePos(obj.getXPos(), sq_GetDirection(obj), createXDis); local y = sq_GetDistancePos(obj.getYPos(), ENUM_DIRECTION_DOWN, createYDis); local z = sq_GetDistancePos(obj.getZPos(), ENUM_DIRECTION_UP, createZDis); local x_range = obj.sq_GetIntData(SKILL_ICECHAKRAM , 3); // x蹴 譆渠 彰嫔 local y_range = 200; // local z_range = 100; // printc("x_range " + x_range); local activeObject = getPriorityTarget(obj, 0, x_range, y_range, z_range, null, true); printc("activeObject " + activeObject); local maxDistance = activeObject ? abs(activeObject.getXPos() - x) : obj.sq_GetIntData(SKILL_ICECHAKRAM , 3);; local horizonAngle = activeObject ? sq_GetShootingHorizonAngle(activeObject, y, 0, searchAngleH, maxDistance) : 0.0 ; local verticalAngle = activeObject ? sq_GetShootingVerticalAngle(activeObject, z, 0, searchAngleV, maxDistance, 300) : 0.0; local moveSpeed = obj.sq_GetIntData(SKILL_ICECHAKRAM , 5); sq_BinaryStartWrite(); sq_BinaryWriteFloat(horizonAngle); // 桧翕 陕紫 热? sq_BinaryWriteFloat(verticalAngle); // 桧翕 陕紫 热霜 sq_BinaryWriteDword(moveSpeed); // 桧翕 楼紫 sq_BinaryWriteDword(maxDistance); // 桧翕 剪葬 sq_BinaryWriteDword(sq_GetGroup(activeObject)); // 颤啃 姜尔 sq_BinaryWriteDword(sq_GetUniqueId(activeObject)); // 颤啃 姜尔 obj.sq_SendCreatePassiveObjectPacket(24234, 0, createXDis, createYDis, createZDis); local attractPower = sq_GetLevelData(obj, SKILL_ICECHAKRAM, 6, sq_GetSkillLevel(obj, SKILL_ICECHAKRAM)); if(attractPower > 0) { local var = obj.getVar(); local appendage = var.getAppendage(VAR_ICE_CHAKRAM_ATTRACT_APPENDAGE); if(appendage) appendage.setValid(false); } obj.stopSound(3711); } } return true; } function onEndState_IceChakram(obj, new_state) { if(!obj) return; obj.stopSound(7577); if (new_state != STATE_STAND) { local var = obj.getVar(); local appendage = var.getAppendage(VAR_ICE_CHAKRAM_ATTRACT_APPENDAGE); if (appendage) appendage.setValid(false); } // 等嘐虽,鼻鹧桧鼻 蛔戏煎 嬴桧蝶 离觼茔桧 部陬棻. if(new_state != STATE_ICECHAKRAM) { obj.stopSound(3711); // ??赝 薯剪. sq_RemoveParticle("Character/Mage/Effect/Particle/ATIceChakramDust.ptl", obj); sq_RemoveParticle("Character/Mage/Effect/Particle/ATIceChakramDust_1.ptl", obj); } } function onAfterSetState_IceChakram(obj, state, datas, isResetTimer) { if(!obj) return; local substate = obj.getSkillSubState(); if(substate == SUB_STATE_ICECHAKRAM_0) { // SUB_STATE_ICECHAKRAM_0 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_1) { // SUB_STATE_ICECHAKRAM_1 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_2) { // SUB_STATE_ICECHAKRAM_2 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_3) { // SUB_STATE_ICECHAKRAM_3 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_ICECHAKRAM_4) { // SUB_STATE_ICECHAKRAM_4 怃粽蝶才桧? 蒙机 } }