S_PO_FROZENLAND_POLE_0 <- 10 S_PO_FROZENLAND_POLE_1 <- 11 S_PO_FROZENLAND_POLE_2 <- 12 S_PO_FROZENLAND_POLE_3 <- 13 function procCreateShockWaveAnimation(obj, currentT) { if(!obj) return; local x = sq_GetXPos(obj); local y = sq_GetYPos(obj); local z = sq_GetZPos(obj); local t = obj.getVar("state").get_timer_vector(0); if (t.getEventTerm() == -1) { print(" return:" + t.getEventTerm()); return; } if (t.isOnEvent(currentT) == true) { createShockWaveAnimation(obj, x, y, z); } } function setCustomData_po_ATFrozenLandPole(obj, reciveData) { if(!obj) return; local angle = reciveData.readDword() * 100; local flip = reciveData.readDword(); local radiusSize = reciveData.readDword(); // 奁虽荤 local spinNum = reciveData.readDword(); // 晦菅桧 釭颤釭怃 薯濠葬缣怃 蝶?击 紫朝 热 local spinTime = reciveData.readDword(); // 模辨给桧 药怃 陛遴等煎 菟横螃朝 卫除 local multiHitTerm = reciveData.readDword(); // 晦菅 棻钦?? 除问 local multiHitAttackRate = reciveData.readDword(); // 晦菅 棻钦?? 奢问溘 (%) local spinAddTime = reciveData.readDword(); // 模辨给桧陛 议葛搅 舆渗击 ?瞪?朝 卫除 (0.001蟾钦嫔) local atk = sq_GetCurrentAttackInfo(obj); if(atk) { sq_SetCurrentAttackBonusRate(atk, multiHitAttackRate); } obj.getVar("state").clear_vector(); // state vector obj.getVar("state").push_vector(0); obj.getVar("spin_dir").clear_vector(); // state vector obj.getVar("spin_dir").push_vector(angle); // state vector obj.getVar("flip").clear_vector(); // state vector obj.getVar("flip").push_vector(0); obj.getVar("radius").clear_vector(); // state vector obj.getVar("radius").push_vector(radiusSize); obj.getVar("pole").clear_vector(); obj.getVar("pole").push_vector(spinNum); obj.getVar("pole").push_vector(spinTime); 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); if(obj.isMyControlObject()) { local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); obj.addSetStatePacket(S_PO_FROZENLAND_POLE_0, pIntVec, STATE_PRIORITY_AUTO, false, ""); } if(flip) { obj.getVar("flip").set_vector(0, 1); } obj.getVar("state").clear_timer_vector(); obj.getVar("state").push_timer_vector(); local t = obj.getVar("state").get_timer_vector(0); t.setParameter(200, -1); t.resetInstant(0); local hitCnt = obj.sq_var.get_vector(VECTOR_I_MULTI_HIT_COUNT); print("\n\n multiHitTerm:" + multiHitTerm); obj.timer_.setParameter(multiHitTerm, -1); obj.timer_.resetInstant(0); // 跷陛 觼煎栖赝 蒙机 // 觼煎栖赝 嬴桧蛊 跷陛 蒙机 薯濠葬缣怃 给坚毡朝 卫除桧 0尔棻 觼棻贼 舆嫔蒂 摹??朝 state煎 渗唳?捡 ?栖棻. obj.getVar("spin").clear_vector(); obj.getVar("spin").push_vector(spinAddTime); // 譆渠偎热 obj.getVar("spin").push_vector(0); } function setState_po_ATFrozenLandPole(obj, state, datas) { if(!obj) return; local passiveState = state; obj.getVar("state").set_vector(0, passiveState); local x = sq_GetXPos(obj); local y = sq_GetYPos(obj); local z = sq_GetZPos(obj); if(passiveState == S_PO_FROZENLAND_POLE_0) { // 晦遽谢? obj.getVar().set_vector(0, x); obj.getVar().set_vector(1, y); obj.getVar().set_vector(2, z); local radius = obj.getVar("radius").get_vector(0); local current100Angle = obj.getVar("spin_dir").get_vector(0); current100Angle = current100Angle % 36000; local angle = (current100Angle.tofloat() / 100.0); local disMovLen = radius * sq_CosTable(angle.tointeger()); local mov_x = sq_GetDistancePos(x, obj.getDirection(), disMovLen.tointeger()); local axisMagnifyRate = 29.0; local upMovLen = radius * sq_SinTable(angle.tointeger()) * axisMagnifyRate / 100; local mov_y = y + upMovLen.tointeger(); sq_setCurrentAxisPos(obj, 1, mov_y); sq_setCurrentAxisPos(obj, 0, mov_x); } else if(passiveState == S_PO_FROZENLAND_POLE_1) { if(obj.getVar("flip").get_vector(0)) { local ani = obj.getCustomAnimation(1); obj.setCurrentAnimation(ani); } else { local ani = obj.getCustomAnimation(0); obj.setCurrentAnimation(ani); } //local hitCnt = 10; //local term = 4000 / hitCnt; //print(" \n\n term:" + term); ////obj.timer_.setParameter(term, hitCnt); //obj.timer_.resetInstant(0); } if(passiveState == S_PO_FROZENLAND_POLE_1 || passiveState == S_PO_FROZENLAND_POLE_3) { obj.getVar().clear_ct_vector(); obj.getVar().push_ct_vector(); local t = obj.getVar().get_ct_vector(0); t.Reset(); t.Start(10000,0); local stateTimer = obj.getVar("state").get_timer_vector(0); stateTimer.setParameter(200, -1); stateTimer.resetInstant(0); } } function procAppend_po_ATFrozenLandPole(obj) { if(!obj) return; local pChr = obj.getTopCharacter(); if(!pChr) { if(obj.isMyControlObject()) { sq_SendDestroyPacketPassiveObject(obj); } return; } local state = obj.getVar("state").get_vector(0); local passiveState = state; local pAni = sq_GetCurrentAnimation(obj); local frmIndex = sq_GetAnimationFrameIndex(pAni); //local currentT = sq_GetCurrentTime(pAni); local t = obj.getVar().get_ct_vector(0); local currentT = 0; if(t) currentT = t.Get(); local x = sq_GetXPos(obj); local y = sq_GetYPos(obj); local z = sq_GetZPos(obj); if(passiveState == S_PO_FROZENLAND_POLE_0) { } else if(passiveState == S_PO_FROZENLAND_POLE_1) { local stopSpinNum = obj.getVar("pole").get_vector(0); if(obj.getVar().get_vector(2) >= stopSpinNum) { if(obj.isMyControlObject()) { local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); // 觼煎栖赝 嬴桧蛊 跷陛 蒙机 薯濠葬缣怃 给坚毡朝 卫除桧 0尔棻 觼棻贼 舆嫔蒂 摹??朝 state煎 渗唳?捡 ?栖棻. if(obj.getVar("spin").get_vector(0) > 0) obj.addSetStatePacket(S_PO_FROZENLAND_POLE_3, pIntVec, STATE_PRIORITY_AUTO, false, ""); else obj.addSetStatePacket(S_PO_FROZENLAND_POLE_2, pIntVec, STATE_PRIORITY_AUTO, false, ""); } } else { if(obj.getVar().get_vector(4) == 0) { if(frmIndex >= 6) { local spinNum = obj.getVar().get_vector(2); obj.getVar().set_vector(2, spinNum + 1); obj.getVar().set_vector(4, 1); } } else { if(obj.getVar().get_vector(4) == 1) { if(frmIndex < 6) { obj.getVar().set_vector(4, 0); } } } obj.getVar().set_vector(3, currentT); } procCreateShockWaveAnimation(obj, currentT); } else if(passiveState == S_PO_FROZENLAND_POLE_3) { local baseX = obj.getVar().get_vector(0); local baseY = obj.getVar().get_vector(1); // 陕紫 侦褐 local currentSpeedRate = 1.0; local defaultRoundTime = obj.getVar("pole").get_vector(1); local radiusBaseSize = obj.getVar("radius").get_vector(0); local radius = radiusBaseSize; local base100Angle = obj.getVar("spin_dir").get_vector(0); local current100Angle = (base100Angle + (36000 * currentSpeedRate * (currentT) / defaultRoundTime)) % 36000; local angle = (current100Angle.tofloat() / 100.0); //print( " angle:" + angle); local disMovLen = radius * sq_CosTable(angle.tointeger()); local mov_x = sq_GetDistancePos(baseX, obj.getDirection(), disMovLen.tointeger()); local axisMagnifyRate = 29.0; local upMovLen = radius * sq_SinTable(angle.tointeger()) * axisMagnifyRate / 100; local mov_y = baseY + upMovLen.tointeger(); sq_setCurrentAxisPos(obj, 1, mov_y); sq_setCurrentAxisPos(obj, 0, mov_x); procCreateShockWaveAnimation(obj, currentT); // 觼煎栖赝 嬴桧蛊 跷陛 蒙机 薯濠葬缣怃 给坚毡朝 卫除桧 0尔棻 觼棻贼 舆嫔蒂 摹??朝 state煎 渗唳?捡 ?栖棻. local spinAddTime = obj.getVar("spin").get_vector(0); if(currentT > spinAddTime) { if(obj.isMyControlObject()) { local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); obj.addSetStatePacket(S_PO_FROZENLAND_POLE_2, pIntVec, STATE_PRIORITY_AUTO, false, ""); } //obj.getVar("spin_dir").set_vector(0, angle.tointeger()); obj.getVar().set_vector(3, currentT); } } else if(passiveState == S_PO_FROZENLAND_POLE_2) { local delaySum = obj.getVar().get_vector(3); //local delaySum = 0; local baseX = obj.getVar().get_vector(0); local baseY = obj.getVar().get_vector(1); // 陕紫 侦褐 local currentSpeedRate = 1.0; local defaultRoundTime = obj.getVar("pole").get_vector(1); local radiusBaseSize = obj.getVar("radius").get_vector(0); local radius = sq_GetUniformVelocity(radiusBaseSize, 0, currentT - delaySum, defaultRoundTime); local base100Angle = obj.getVar("spin_dir").get_vector(0); local current100Angle = (base100Angle + (36000 * currentSpeedRate * (currentT - delaySum) / defaultRoundTime)) % 36000; local angle = (current100Angle.tofloat() / 100.0); local disMovLen = radius * sq_CosTable(angle.tointeger()); local mov_x = sq_GetDistancePos(baseX, obj.getDirection(), disMovLen.tointeger()); local axisMagnifyRate = 29.0; local upMovLen = radius * sq_SinTable(angle.tointeger()) * axisMagnifyRate / 100; local mov_y = baseY + upMovLen.tointeger(); sq_setCurrentAxisPos(obj, 1, mov_y); sq_setCurrentAxisPos(obj, 0, mov_x); if(currentT > (defaultRoundTime + delaySum)) { if(obj.isMyControlObject()) { sq_SendDestroyPacketPassiveObject(obj); } } procCreateShockWaveAnimation(obj, currentT); } if (obj.timer_.isOnEvent(currentT) == true) { obj.resetHitObjectList(); } } function onDestroyObject_po_ATFrozenLandPole(obj, object) { if(!obj) return; } function onKeyFrameFlag_po_ATFrozenLandPole(obj, flagIndex) { } function onEndCurrentAni_po_ATFrozenLandPole(obj) { if(!obj) return; if(!obj.isMyControlObject()) return; local state = obj.getVar("state").get_vector(0); local passiveState = state; if(passiveState == S_PO_FROZENLAND_POLE_0) { local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); obj.addSetStatePacket(S_PO_FROZENLAND_POLE_1, pIntVec, STATE_PRIORITY_AUTO, false, ""); } else if(passiveState == S_PO_FROZENLAND_POLE_1) { } else if(passiveState == S_PO_FROZENLAND_POLE_2) { } } //*.obj;*.ani;*.als;*.lst;*.atk;*.skl;*.lst;*.ptl;*.nut;*.equ;*.ptl;*.etc //*.obj;*.ani;*.als;*.lst;*.atk;*.skl;*.lst;*.ptl;*.nut;*.equ;*.ptl;*.etc // *.obj;*.ani;*.als;*.lst;*.atk;*.skl;*.lst;*.ptl;*.nut;*.equ;*.ptl;*.etc;*.ui