SUB_STATE_BLUEDRAGONWILL_0 <- 0 SUB_STATE_BLUEDRAGONWILL_1 <- 1 SUB_STATE_BLUEDRAGONWILL_2 <- 2 SUB_STATE_BLUEDRAGONWILL_3 <- 3 SUB_STATE_BLUEDRAGONWILL_4 <- 4 function checkExecutableSkill_BlueDragonWill(obj) { if(!obj) return false; local b_useskill = obj.sq_IsUseSkill(SKILL_BLUEDRAGONWILL); if(b_useskill) { obj.sq_IntVectClear(); obj.sq_IntVectPush(SUB_STATE_BLUEDRAGONWILL_0); // substate撮? obj.sq_AddSetStatePacket(STATE_BLUEDRAGONWILL, STATE_PRIORITY_IGNORE_FORCE, true); return true; } return false; } function checkCommandEnable_BlueDragonWill(obj) { if(!obj) return false; local state = obj.sq_GetState(); if(state == STATE_ATTACK) { return obj.sq_IsCommandEnable(SKILL_BLUEDRAGONWILL); // 念瘫潍缣怃朝 ?姜蝶鉴虏 警蜗桧 陛栋?栖棻. 蒙机濠:姜霞热 [2012.04.20] obj.sq_IsCommandEnable(SKILL_BROKENARROW); } return true; } function onSetState_BlueDragonWill(obj, state, datas, isResetTimer) { if(!obj) return; local substate = obj.sq_GetVectorData(datas, 0); obj.setSkillSubState(substate); obj.sq_StopMove(); local posX = obj.getXPos(); local posY = obj.getYPos(); local posZ = obj.getZPos(); obj.getVar().clear_vector(); obj.getVar().push_vector(0); obj.getVar().push_vector(0); if(substate == SUB_STATE_BLUEDRAGONWILL_0) { obj.sq_PlaySound("MW_ICEHAMMER_READY"); obj.sq_SetCurrentAnimation(CUSTOM_ANI_BLUEDRAGONWILL1); local pAni = obj.sq_GetCurrentAni(); //local chargeT = obj.sq_GetIntData(SKILL_BLUEDRAGONWILL, 0); // 晦遴 醱瞪卫除 //local delaySum = sq_GetDelaySum(pAni); // //local rate = delaySum.tofloat() * 100.0 / chargeT.tofloat(); // //obj.sq_SetAnimationSpeedRate(pAni, rate); local skillLevel = sq_GetSkillLevel(obj, SKILL_BLUEDRAGONWILL); // 议蝶? 楼紫蒂 评塭陛紫烟 扑姜 // 议蝶? 楼紫陛 渗唳肾贼, 缣栖诡桧暮 楼紫紫 渗唳 腌栖棻. // 议蝶? 啪桧虽紫 ?卫蒂 ?鄹栖棻. local castTime = sq_GetCastTime(obj, SKILL_BLUEDRAGONWILL, skillLevel); local animation = sq_GetCurrentAnimation(obj); local startTime = sq_GetFrameStartTime(animation, 16); local speedRate = startTime.tofloat() / castTime.tofloat(); obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, speedRate, speedRate); sq_StartDrawCastGauge(obj, startTime, true); } else if(substate == SUB_STATE_BLUEDRAGONWILL_1) { local group = obj.sq_GetVectorData(datas, 1); local uniqueId = obj.sq_GetVectorData(datas, 2); local targetObj = sq_GetObject(obj, group, uniqueId); obj.getVar().push_vector(posX); // ?营 x : i: 2 obj.getVar().push_vector(posY); // ?营 y : i: 3 if(targetObj) { local disX = sq_Abs(targetObj.getXPos() - posX); local disY = targetObj.getYPos() - posY; disX = disX - 40; if(disX <= 0) disX = 0; obj.getVar().push_vector(disX); // x蹴 桧翕剪葬 : i: 4 obj.getVar().push_vector(disY); // y蹴 桧翕剪葬 : i: 5 } else { // 蛤?? 桧翕剪葬 local defaultDistance = obj.sq_GetIntData(SKILL_BLUEDRAGONWILL, 1); // 除蕾 奢问 (虽霞 ?渠徽) (100~) obj.getVar().push_vector(defaultDistance); // x蹴 桧翕剪葬 obj.getVar().push_vector(0); // y蹴 桧翕剪葬 } obj.sq_SetCurrentAnimation(CUSTOM_ANI_BLUEDRAGONWILL2); } else if(substate == SUB_STATE_BLUEDRAGONWILL_2) { obj.sq_PlaySound("MW_ICEHAMMER"); obj.sq_SetCurrentAnimation(CUSTOM_ANI_BLUEDRAGONWILL3); sq_setCurrentAxisPos(obj, 2, 0); if(obj.isMyControlObject()) { obj.sq_SetShake(obj,3,300); local distanceL = 90; local h = 0; local spin_radius = obj.sq_GetIntData(SKILL_BLUEDRAGONWILL, 2); // 除蕾 奢问 (虽霞 ?渠徽) (100~) local spin_r = spin_radius.tofloat() / 100.0; local firstAttackRate = obj.sq_GetBonusRateWithPassive(SKILL_BLUEDRAGONWILL, STATE_BLUEDRAGONWILL, 0, 1.0); //2.奢问溘(%) local power = obj.sq_GetPowerWithPassive(SKILL_BLUEDRAGONWILL, STATE_BLUEDRAGONWILL, 1,-1,1.0); // 除蕾奢问溘 local pow = obj.sq_GetSkillPower(SKILL_BLUEDRAGONWILL, 1); local l_data = obj.sq_GetLevelData(SKILL_BLUEDRAGONWILL, 1, 1); print("power:" + power + " pow:" + pow + " l_data:" + l_data); sq_BinaryStartWrite(); sq_BinaryWriteFloat(spin_r); // sq_BinaryWriteDword(power); // 除蕾奢问溘 obj.sq_SendCreatePassiveObjectPacket(24246, 0, distanceL, -1, h); // 虽霞桧嘐虽 除蕾 奢问 sq_BinaryStartWrite(); sq_BinaryWriteDword(firstAttackRate); // 奢问溘(%) obj.sq_SendCreatePassiveObjectPacket(24245, 0, distanceL, 5, h); } } else if(substate == SUB_STATE_BLUEDRAGONWILL_3) { // SUB_STATE_BLUEDRAGONWILL_3 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_4) { // SUB_STATE_BLUEDRAGONWILL_4 怃粽蝶才桧? 蒙机 } //obj.sq_SetStaticSpeedInfo(SPEED_TYPE_CAST_SPEED, SPEED_TYPE_CAST_SPEED, // SPEED_VALUE_DEFAULT, SPEED_VALUE_DEFAULT, 1.0, 1.0); } function prepareDraw_BlueDragonWill(obj) { if(!obj) return; local substate = obj.getSkillSubState(); if(substate == SUB_STATE_BLUEDRAGONWILL_0) { // SUB_STATE_BLUEDRAGONWILL_0 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_1) { // SUB_STATE_BLUEDRAGONWILL_1 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_2) { // SUB_STATE_BLUEDRAGONWILL_2 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_3) { // SUB_STATE_BLUEDRAGONWILL_3 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_4) { // SUB_STATE_BLUEDRAGONWILL_4 怃粽蝶才桧? 蒙机 } } function onProc_BlueDragonWill(obj) { if(!obj) return; local substate = obj.getSkillSubState(); local pAni = obj.sq_GetCurrentAni(); local frmIndex = obj.sq_GetCurrentFrameIndex(pAni); local sq_var = obj.getVar(); local currentT = sq_GetCurrentTime(pAni); local posX = obj.getXPos(); local posY = obj.getYPos(); local posZ = obj.getZPos(); if(substate == SUB_STATE_BLUEDRAGONWILL_0) { } else if(substate == SUB_STATE_BLUEDRAGONWILL_1) { //local dash_t = pAni.getDelaySum(false); // local dash_t = pAni.getDelaySum(0, 2) + 60; // local srcX = obj.getVar().get_vector(2); // 卫蒙x local srcY = obj.getVar().get_vector(3); // 卫蒙y local dis_x_len = sq_var.get_vector(4); // 识 桧翕剪葬 local dis_y_len = obj.getVar().get_vector(5); // y蹴 桧翕剪葬 local v = sq_GetAccel(0, dis_x_len, currentT, dash_t, true); local my = sq_GetUniformVelocity(0, dis_y_len, currentT, dash_t); local dstX = sq_GetDistancePos(srcX, obj.getDirection(), v); local dstY = srcY + my; if(sq_var.get_vector(0)) { // 瞪?溯歜缣怃 桧翕? 热 桡朝 虽羲击 虏陬棻贼.. if(sq_var.get_vector(1) != posY) { // 瞪 posY谛 绿掖?瑭怃 殖塭螺棻贼.. sq_var.set_vector(0, 0); // 桧翕?楚斜蒂 off?鄹栖棻.. sq_var.set_vector(1, posY); } } if(obj.isMovablePos(dstX, dstY) && !sq_var.get_vector(0)) { // 桧翕?楚斜谛 桧翕陛栋虽羲桧 赅舒 陛栋?捡 桧翕 sq_setCurrentAxisPos(obj, 0, dstX); sq_setCurrentAxisPos(obj, 1, dstY); } else { // 桧翕? 热 桡朝 虽羲击 虏陬棻.. sq_var.set_vector(0,1); // 桧翕 ?楚斜 樯策蝶 3 桧翕? 热 桡朝 虽羲击 虏陬击 阳 斜牖除 涡桧鼻 桧翕跤?棻.. local offset = dstX - posX; if(offset != 0) { if(offset < 0) offset = -offset; local totalLen = sq_var.get_vector(4); // 识桧翕剪葬 sq_var.set_vector(4, totalLen - offset); } } if(frmIndex == 2){ sq_setCurrentAxisPos(obj, 2, 30); } else if(frmIndex == 3) { sq_setCurrentAxisPos(obj, 2, 60); } else if(frmIndex == 4){ sq_setCurrentAxisPos(obj, 2, 50); } else if(frmIndex == 5){ sq_setCurrentAxisPos(obj, 2, 40); } } else if(substate == SUB_STATE_BLUEDRAGONWILL_2) { // SUB_STATE_BLUEDRAGONWILL_2 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_3) { // SUB_STATE_BLUEDRAGONWILL_3 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_4) { // SUB_STATE_BLUEDRAGONWILL_4 怃粽蝶才桧? 蒙机 } } function onProcCon_BlueDragonWill(obj) { if(!obj) return; local substate = obj.getSkillSubState(); if(substate == SUB_STATE_BLUEDRAGONWILL_0) { // SUB_STATE_BLUEDRAGONWILL_0 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_1) { // SUB_STATE_BLUEDRAGONWILL_1 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_2) { // SUB_STATE_BLUEDRAGONWILL_2 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_3) { // SUB_STATE_BLUEDRAGONWILL_3 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_4) { // SUB_STATE_BLUEDRAGONWILL_4 怃粽蝶才桧? 蒙机 } } function onEndCurrentAni_BlueDragonWill(obj) { if(!obj) return; if(!obj.isMyControlObject()) { return; } local substate = obj.getSkillSubState(); if(substate == SUB_STATE_BLUEDRAGONWILL_0) { obj.sq_IntVectClear(); obj.sq_IntVectPush(SUB_STATE_BLUEDRAGONWILL_1); // substate撮? // 500 // x蹴 颤啃? 彰嫔 // 120 // y蹴 颤啃? 彰嫔 // 10 // z蹴 颤啃? 彰嫔 //local x_range = obj.sq_GetIntData(SKILL_BLUEDRAGONWILL, 3); // 晦遴 醱瞪卫除 //local y_range = obj.sq_GetIntData(SKILL_BLUEDRAGONWILL, 4); // 晦遴 醱瞪卫除 //local z_range = obj.sq_GetIntData(SKILL_BLUEDRAGONWILL, 5); // 晦遴 醱瞪卫除 //local targetObj = sq_FindTarget(obj, 0, x_range, y_range, z_range); // //if(targetObj) { //local group = sq_GetGroup(targetObj); //local uniqueId = sq_GetUniqueId(targetObj); // //obj.sq_IntVectPush(group); // //obj.sq_IntVectPush(uniqueId); // //} //else { //obj.sq_IntVectPush(-1); // //obj.sq_IntVectPush(-1); // //} local distance = obj.sq_GetIntData(SKILL_BLUEDRAGONWILL, SKL_STATIC_INT_IDX_3); // 瞳娄暧 剪葬 local angle = obj.sq_GetIntData(SKILL_BLUEDRAGONWILL, SKL_STATIC_INT_IDX_4); // 瞳娄暧 陕紫 local targetObj = findAngleTarget(obj, distance, angle, 100); if(targetObj) { local group = sq_GetGroup(targetObj); local uniqueId = sq_GetUniqueId(targetObj); obj.sq_IntVectPush(group); // obj.sq_IntVectPush(uniqueId); // } else { obj.sq_IntVectPush(-1); // obj.sq_IntVectPush(-1); // } obj.sq_AddSetStatePacket(STATE_BLUEDRAGONWILL, STATE_PRIORITY_IGNORE_FORCE, true); } else if(substate == SUB_STATE_BLUEDRAGONWILL_1) { obj.sq_IntVectClear(); obj.sq_IntVectPush(SUB_STATE_BLUEDRAGONWILL_2); // substate撮? obj.sq_AddSetStatePacket(STATE_BLUEDRAGONWILL, STATE_PRIORITY_IGNORE_FORCE, true); } else if(substate == SUB_STATE_BLUEDRAGONWILL_2) { obj.sq_AddSetStatePacket(STATE_STAND, STATE_PRIORITY_USER, false); } else if(substate == SUB_STATE_BLUEDRAGONWILL_3) { // SUB_STATE_BLUEDRAGONWILL_3 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_4) { // SUB_STATE_BLUEDRAGONWILL_4 怃粽蝶才桧? 蒙机 } } function onKeyFrameFlag_BlueDragonWill(obj, flagIndex) { if(!obj) return false; local substate = obj.getSkillSubState(); if(substate == SUB_STATE_BLUEDRAGONWILL_0) { // SUB_STATE_BLUEDRAGONWILL_0 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_1) { // SUB_STATE_BLUEDRAGONWILL_1 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_2) { // SUB_STATE_BLUEDRAGONWILL_2 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_3) { // SUB_STATE_BLUEDRAGONWILL_3 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_4) { // SUB_STATE_BLUEDRAGONWILL_4 怃粽蝶才桧? 蒙机 } return false; } function onEndState_BlueDragonWill(obj, new_state) { if(!obj) return; local substate = obj.getSkillSubState(); if(substate == SUB_STATE_BLUEDRAGONWILL_0) { // SUB_STATE_BLUEDRAGONWILL_0 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_1) { // SUB_STATE_BLUEDRAGONWILL_1 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_2) { // SUB_STATE_BLUEDRAGONWILL_2 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_3) { // SUB_STATE_BLUEDRAGONWILL_3 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_4) { // SUB_STATE_BLUEDRAGONWILL_4 怃粽蝶才桧? 蒙机 } sq_EndDrawCastGauge(obj); } function onAfterSetState_BlueDragonWill(obj, state, datas, isResetTimer) { if(!obj) return; local substate = obj.getSkillSubState(); if(substate == SUB_STATE_BLUEDRAGONWILL_0) { // SUB_STATE_BLUEDRAGONWILL_0 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_1) { // SUB_STATE_BLUEDRAGONWILL_1 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_2) { // SUB_STATE_BLUEDRAGONWILL_2 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_3) { // SUB_STATE_BLUEDRAGONWILL_3 怃粽蝶才桧? 蒙机 } else if(substate == SUB_STATE_BLUEDRAGONWILL_4) { // SUB_STATE_BLUEDRAGONWILL_4 怃粽蝶才桧? 蒙机 } } function getHitDirection_BlueDragonWill(obj, damager) { if(!obj) return 0; print("getHitDirection_BlueDragonWill"); return sq_GetOppositeDirection(obj.getDirection()); }