S_PO_FROZENLAND_MC_0 <- 10 S_PO_FROZENLAND_MC_1 <- 11 S_PO_FROZENLAND_MC_2 <- 12 S_PO_FROZENLAND_MC_3 <- 13 S_PO_FROZENLAND_MC_4 <- 14 S_PO_FROZENLAND_MC_5 <- 15 function insertIceFog(obj, dx, dy, dz) { if(!obj) return; local x = sq_GetXPos(obj); local y = sq_GetYPos(obj); local z = sq_GetZPos(obj); local particleCreater = obj.getVar().GetparticleCreaterMap("fronzenLand", "PassiveObject/Character/Mage/Particle/ATFrozenLand.ptl", obj); particleCreater.Restart(0); particleCreater.SetPos(x + dx, y + dy, z + dz); //print(" insertIceFog:" + particleCreater); sq_AddParticleObject(obj, particleCreater); } function setCustomData_po_ATFrozenLandMagicCircle(obj, reciveData) { if(!obj) return; local radiusRate = reciveData.readDword(); // 卫瞪彰嫔 (葆彻霞 虽荤 绿徽 : 100%~) local spinNum = reciveData.readDword(); // 晦菅桧 釭颤釭怃 薯濠葬缣怃 蝶?击 紫朝 热 local spinTime = reciveData.readDword(); // 模辨给桧 药怃 陛遴等煎 菟横螃朝 卫除 local multiHitTerm = reciveData.readDword(); // 晦菅 棻钦?? 除问 local multiHitAttackRate = reciveData.readDword(); // 晦菅 棻钦?? 奢问溘 (%) local expAttackRate = reciveData.readDword(); // 晦菅 ?嫦 奢问溘 (%) local frozenRate = reciveData.readDword(); // 彩念 ?徽 local frozenLevel = reciveData.readDword(); // 彩念 溯涟 local frozenTime = reciveData.readDword(); // 彩念 卫除 // 觼煎栖赝 嬴桧蛊 跷陛 蒙机 薯濠葬缣怃 给坚毡朝 卫除桧 0尔棻 觼棻贼 舆嫔蒂 摹??朝 state煎 渗唳?捡 ?栖棻. local spinAddTime = reciveData.readDword(); // 模辨给桧陛 议葛搅 舆渗击 ?瞪?朝 卫除 (0.001蟾钦嫔) obj.getVar("state").clear_vector(); // state vector obj.getVar("state").push_vector(0); obj.getVar("flag").clear_vector(); obj.getVar("flag").push_vector(0); obj.getVar("flag").push_vector(0); obj.getVar("flag").push_vector(0); obj.getVar("flag").push_vector(0); obj.getVar("flag").push_vector(0); obj.getVar("basePos").clear_vector(); obj.getVar("basePos").push_vector(0); obj.getVar("basePos").push_vector(0); obj.getVar("basePos").push_vector(0); obj.getVar("flag").clear_timer_vector(); obj.getVar("flag").push_timer_vector(); obj.getVar("icefog").clear_vector(); obj.getVar("icefog").push_vector(0); local t = obj.getVar("flag").get_timer_vector(0); t.setParameter(50, 1); t.resetInstant(0); //radiusRate = 100; obj.getVar("radius").clear_vector(); obj.getVar("radius").push_vector(radiusRate); // obj.getVar("radius").push_vector(0); // setstate煎 setcurrentanimation 胀 拥栖诡桧暮 亿煎遴 绿徽 obj.getVar("radius").push_vector(spinNum); // 2 蝶?偎热 obj.getVar("radius").push_vector(spinTime); // 3 模辨给桧 药怃 陛遴等煎 菟横螃朝 卫除 obj.getVar("attack").clear_vector(); obj.getVar("attack").push_vector(multiHitTerm); // obj.getVar("attack").push_vector(multiHitAttackRate); // obj.getVar("attack").push_vector(expAttackRate); // obj.getVar("attack").push_vector(frozenRate); // obj.getVar("attack").push_vector(frozenLevel); // obj.getVar("attack").push_vector(frozenTime); // // 觼煎栖赝 嬴桧蛊 跷陛 蒙机 薯濠葬缣怃 给坚毡朝 卫除桧 0尔棻 觼棻贼 舆嫔蒂 摹??朝 state煎 渗唳?捡 ?栖棻. obj.getVar("spin").clear_vector(); obj.getVar("spin").push_vector(spinAddTime); // if(obj.isMyControlObject()) { local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, radiusRate); obj.addSetStatePacket(S_PO_FROZENLAND_MC_0, pIntVec, STATE_PRIORITY_AUTO, false, ""); } } function setState_po_ATFrozenLandMagicCircle(obj, state, datas) { if(!obj) return; local passiveState = state; obj.getVar("state").set_vector(0, passiveState); obj.getVar("flag").set_vector(VECTOR_FLAG_0, 0); initGetVarTimer(obj, 1, 400, 10); if(passiveState == S_PO_FROZENLAND_MC_0) { local x = sq_GetXPos(obj); local y = sq_GetYPos(obj); local z = sq_GetZPos(obj); obj.getVar("basePos").set_vector(0, x); obj.getVar("basePos").set_vector(1, y); obj.getVar("basePos").set_vector(2, z); local atk = sq_GetCurrentAttackInfo(obj); if(atk) { local frozenRate = obj.getVar("attack").get_vector(3); local frozenLevel = obj.getVar("attack").get_vector(4); local frozenTime = obj.getVar("attack").get_vector(5); print(" frozenRate:" + frozenRate); sq_SetChangeStatusIntoAttackInfo(atk, 0, ACTIVESTATUS_FREEZE, frozenRate, frozenLevel, frozenTime); } } else if(passiveState == S_PO_FROZENLAND_MC_1) { } else if(passiveState == S_PO_FROZENLAND_MC_2) { local ani = obj.getCustomAnimation(0); obj.setCurrentAnimation(ani); } else if(passiveState == S_PO_FROZENLAND_MC_3) { } else if(passiveState == S_PO_FROZENLAND_MC_4) { local ani = obj.getCustomAnimation(1); obj.setCurrentAnimation(ani); } if(passiveState != S_PO_FROZENLAND_MC_3) { local radius100Rate = obj.getVar("radius").get_vector(0); local radiusRate = (radius100Rate.tofloat() / 100.0); local currentAni = sq_GetCurrentAnimation(obj); currentAni.setImageRateFromOriginal(radiusRate, radiusRate); local size = (sq_GetAniRealImageSize(currentAni, ENUM_DIRECTION_RIGHT) / 2) + 60; obj.getVar("radius").set_vector(1, size); } //radius100Rate } function procAppend_po_ATFrozenLandMagicCircle(obj) { if(!obj) return; local pChr = obj.getTopCharacter(); if(!pChr) { if(obj.isMyControlObject()) { sq_SendDestroyPacketPassiveObject(obj); } return; } local objX = sq_GetXPos(obj); local objY = sq_GetYPos(obj); local objZ = sq_GetZPos(obj); local state = obj.getVar("state").get_vector(0); local passiveState = state; local pAni = sq_GetCurrentAnimation(obj); local frmIndex = sq_GetAnimationFrameIndex(pAni); if(passiveState == S_PO_FROZENLAND_MC_0) { // 罹晦 passivestate缣怃朝 晦菅 ?卫粽螃粽薛?菟击 虏蛙栖棻.. if(frmIndex >= 2) { if(obj.getVar("flag").get_vector(VECTOR_FLAG_0) == 0) { if(obj.isMyControlObject()) { //obj.getVar("attack").push_vector(multiHitTerm); // //obj.getVar("attack").push_vector(multiHitAttackRate); // //obj.getVar("attack").push_vector(expAttackRate); // //obj.getVar("attack").push_vector(frozenRate); // //obj.getVar("attack").push_vector(frozenLevel); // //obj.getVar("attack").push_vector(frozenTime); // local radius100Rate = obj.getVar("radius").get_vector(0); local radiusRate = (radius100Rate.tofloat() / 100.0); local size = (sq_GetAniRealImageSize(pAni, ENUM_DIRECTION_RIGHT) / 2) + 60; obj.getVar("radius").set_vector(1, size); local radiusSize = obj.getVar("radius").get_vector(1); local spinNum = obj.getVar("radius").get_vector(2); local spinTime = obj.getVar("radius").get_vector(3); local multiHitTerm = obj.getVar("attack").get_vector(0); local multiHitAttackRate = obj.getVar("attack").get_vector(1); // 觼煎栖赝 嬴桧蛊 跷陛 蒙机 薯濠葬缣怃 给坚毡朝 卫除桧 0尔棻 觼棻贼 舆嫔蒂 摹??朝 state煎 渗唳?捡 ?栖棻. local spinAddTime = obj.getVar("spin").get_vector(0); sq_BinaryStartWrite(); sq_BinaryWriteDword(0); // sq_BinaryWriteDword(0); // sq_BinaryWriteDword(radiusSize); // sq_BinaryWriteDword(spinNum); // sq_BinaryWriteDword(spinTime); // sq_BinaryWriteDword(multiHitTerm); // sq_BinaryWriteDword(multiHitAttackRate); // sq_BinaryWriteDword(spinAddTime); // sq_SendCreatePassiveObjectPacketFromPassivePos( obj, 24248, 0, 0, 0, 0); sq_BinaryStartWrite(); sq_BinaryWriteDword(180); // sq_BinaryWriteDword(1); // sq_BinaryWriteDword(radiusSize); // sq_BinaryWriteDword(spinNum); // sq_BinaryWriteDword(spinTime); // sq_BinaryWriteDword(multiHitTerm); // sq_BinaryWriteDword(multiHitAttackRate); // sq_BinaryWriteDword(spinAddTime); // sq_SendCreatePassiveObjectPacketFromPassivePos( obj, 24248, 0, 0, 0, 0); //obj.getVar().set_vector(1, 1); } local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); obj.addSetStatePacket(S_PO_FROZENLAND_MC_2, pIntVec, STATE_PRIORITY_AUTO, false, ""); obj.getVar("flag").set_vector(VECTOR_FLAG_0, 1); } local currentT = sq_GetCurrentTime(pAni); //procParticleCreaterMap(obj, currentT, "PassiveObject/Character/Mage/Particle/ATFrozenLand.ptl", objX, objY + 5, objZ); //insertIceFog(obj, 0, 5, 0); } } else if(passiveState == S_PO_FROZENLAND_MC_1) { } else if(passiveState == S_PO_FROZENLAND_MC_2) { // 罹晦 ?卫粽蝶才桧?缣怃朝 晦菅桧 桡横螺朝虽 ?樯?坚 棻 桡横螺棻贼 ?嫦?卫粽螃粽薛?蒂 当撩?怃 棻挤蝶才桧?煎 setstate?栖棻. if(obj.getVar("flag").get_vector(VECTOR_FLAG_0) == 0) { local pole_passive_obj = sq_GetPassiveObject(obj, 24248); if(!pole_passive_obj) { local parentObj = obj.getParent(); CNSquirrelAppendage.sq_RemoveAppendage(parentObj, "Appendage/Character/ap_common_suck.nut"); if(obj.isMyControlObject()) { local radius100Rate = obj.getVar("radius").get_vector(0); local radiusRate = (radius100Rate.tofloat() / 100.0); local currentAni = sq_GetCurrentAnimation(obj); local size = (sq_GetAniRealImageSize(currentAni, ENUM_DIRECTION_RIGHT) / 2) + 60; obj.getVar("radius").set_vector(1, size); local radiusSize = obj.getVar("radius").get_vector(1); local expAttackRate = obj.getVar("attack").get_vector(2); // sq_BinaryStartWrite(); sq_BinaryWriteDword(radiusSize); // sq_BinaryWriteDword(expAttackRate); // ?嫦奢问溘 sq_BinaryWriteDword(radius100Rate); // 怃赝 ?渠 绿徽 local cx = obj.getVar("basePos").get_vector(0); local cy = obj.getVar("basePos").get_vector(1); local cz = obj.getVar("basePos").get_vector(2); sq_SendCreatePassiveObjectPacket(obj, 24249, 0, 0, 1, 0, obj.getDirection()); //sq_SendCreatePassiveObjectPacketFromPassivePos( obj, 24249, 0, cx, cy, cz); // ?嫦 ?卫粽螃粽薛? local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); obj.addSetStatePacket(S_PO_FROZENLAND_MC_3, pIntVec, STATE_PRIORITY_AUTO, false, ""); } obj.getVar("flag").set_vector(VECTOR_FLAG_0, 1); } else { if(obj.getVar("flag").get_vector(VECTOR_FLAG_2) == 0) { local poleState = pole_passive_obj.getState(); if(poleState == S_PO_FROZENLAND_POLE_1 || poleState == S_PO_FROZENLAND_POLE_2) { local poleAni = pole_passive_obj.getCurrentAnimation(); local frmIndex = sq_GetAnimationFrameIndex(poleAni); if(frmIndex >= 1) { // CNFlashScreen* sq_flashScreen(CNRDObject* obj, int inTime, int stayTime, int outTime, // int maxAlpha, DWORD rbga, int effectType, int layerType) sq_SetMyShake(obj,4,200); local poleAniFrameNumber = sq_GetAniFrameNumber(poleAni, 0); local poleAniDelayTime = poleAni.getDelaySum(0, poleAniFrameNumber - 1); local poleAniLoopTime = poleAni.getDelaySum(3, poleAniFrameNumber - 1); local spinNum = obj.getVar("radius").get_vector(2); local spinTime = obj.getVar("radius").get_vector(3); local totalSpinPoleDelaySum = ((spinNum - 1) * poleAniLoopTime) + poleAniDelayTime - 80; totalSpinPoleDelaySum = totalSpinPoleDelaySum + spinTime; // 觼煎栖赝 嬴桧蛊 跷陛 蒙机 薯濠葬缣怃 给坚毡朝 卫除桧 0尔棻 觼棻贼 舆嫔蒂 摹??朝 state煎 渗唳?捡 ?栖棻. totalSpinPoleDelaySum = totalSpinPoleDelaySum + obj.getVar("spin").get_vector(0); //print( " spinNum:" + spinNum + " poleAniDelayTime:" + poleAniDelayTime + " poleAniLoopTime:" + poleAniLoopTime + " spinTime:" + spinTime + " totalSpinPoleDelaySum:" + totalSpinPoleDelaySum); if(obj.isMyControlObject()) { local fScreen = sq_flashScreen(obj,0,totalSpinPoleDelaySum,0,140, sq_RGB(0,0,0), GRAPHICEFFECT_NONE, ENUM_DRAWLAYER_BOTTOM); } obj.getVar("flag").set_vector(VECTOR_FLAG_2, 1); } } } if(!obj.getVar("flag").get_vector(VECTOR_FLAG_3)) { local poleState = pole_passive_obj.getState(); if(poleState == S_PO_FROZENLAND_POLE_2) { print(" appendage suck"); local parentObj = obj.getParent(); // 庄横菟桧朝 横?蛤虽 陛翕 local appendage = CNSquirrelAppendage.sq_AppendAppendage(parentObj, obj, SKILL_FROZENLAND, false, "Appendage/Character/ap_common_suck.nut", false); local suckVel = 200; local radiusSize = obj.getVar("radius").get_vector(1); local range = radiusSize * 2; if(appendage) { appendage.sq_SetValidTime(2000); // 罹晦怃 append 蒙机 CNSquirrelAppendage.sq_Append(appendage, parentObj, obj); local auraAppendage = appendage.sq_getAuraMaster("frozenAura"); // if(!auraAppendage) auraAppendage = appendage.sq_AddAuraMaster("frozenAura",parentObj, obj, 1200, 18, 5, 0); auraAppendage.setAttractionInfo(suckVel, suckVel, range, 100); } // obj.getVar("flag").set_vector(VECTOR_FLAG_3, 1); obj.sq_PlaySound("ICEEARTH_SPIN"); } } } } } else if(passiveState == S_PO_FROZENLAND_MC_3) { // 罹晦 ?卫粽蝶才桧?缣怃朝 ?嫦 ?卫粽暧 拥栖诡桧暮 ?溯歜击 ?樯?怃 饵塭虽啪 ?栖棻. if(obj.getVar("flag").get_vector(VECTOR_FLAG_0) == 0) { local exp_passive_obj = sq_GetPassiveObject(obj, 24249); if(exp_passive_obj) { if(exp_passive_obj.getState() == S_PO_FROZENLAND_1) { local exp_ani = sq_GetCurrentAnimation(exp_passive_obj); local exp_frm_index = sq_GetAnimationFrameIndex(exp_ani); if(exp_frm_index >= 4) { if(obj.isMyControlObject()) { local pIntVec = sq_GetGlobalIntVector(); sq_IntVectorClear(pIntVec); sq_IntVectorPush(pIntVec, 0); obj.addSetStatePacket(S_PO_FROZENLAND_MC_4, pIntVec, STATE_PRIORITY_AUTO, false, ""); } obj.getVar("flag").set_vector(VECTOR_FLAG_0, 1); } } } } } local t = obj.getVar("flag").get_timer_vector(0); if(passiveState == S_PO_FROZENLAND_MC_2) { if(obj.getVar("flag").get_vector(VECTOR_FLAG_2) == 1) { local currentT = sq_GetCurrentTime(pAni); if(t.isOnEvent(currentT) == true) { local radius = obj.getVar("radius").get_vector(1); // //local offset = 20; local index = obj.getVar("icefog").get_vector(0); local size = 3; local iKeyList =[]; iKeyList.resize(size); iKeyList[0] = ((radius * 2) / 3); iKeyList[1] = -(radius * 2) / 3; iKeyList[2] = 0; print(" iKeyList[0]:" + iKeyList[0]); print(" iKeyList[1]:" + iKeyList[1]); insertIceFog(obj, iKeyList[0], 2, 40); insertIceFog(obj, iKeyList[1], 2, 40); insertIceFog(obj, iKeyList[2], 2, 40); print(" insertIceFog:" + iKeyList[index]); index = index + 1; if(index > 2) { index = 0; } index = obj.getVar("icefog").set_vector(0, index); } } } } function onDestroyObject_po_ATFrozenLandMagicCircle(obj, object) { if(!obj) return; } function onKeyFrameFlag_po_ATFrozenLandMagicCircle(obj, flagIndex) { } function onEndCurrentAni_po_ATFrozenLandMagicCircle(obj) { if(!obj) return; if(!obj.isMyControlObject()) return; local state = obj.getVar("state").get_vector(0); local passiveState = state; if(passiveState == S_PO_FROZENLAND_MC_0) { //local pIntVec = sq_GetGlobalIntVector(); // //sq_IntVectorClear(pIntVec); //sq_IntVectorPush(pIntVec, 0); // //obj.addSetStatePacket(S_PO_FROZENLAND_MC_1, pIntVec, STATE_PRIORITY_AUTO, false, ""); } else if(passiveState == S_PO_FROZENLAND_MC_1) { } else if(passiveState == S_PO_FROZENLAND_MC_2) { } else if(passiveState == S_PO_FROZENLAND_MC_4) { if(obj.isMyControlObject()) { sq_SendDestroyPacketPassiveObject(obj); } } }