MODE_NORMAL <- 0 MODE_FREEZE <- 1 function sq_AddFunctionName(appendage) { appendage.sq_AddFunctionName("proc", "proc_appendage_atmage_tundra_cs") appendage.sq_AddFunctionName("prepareDraw", "prepareDraw_appendage_atmage_tundra_cs") appendage.sq_AddFunctionName("onStart", "onStart_appendage_atmage_tundra_cs") appendage.sq_AddFunctionName("onEnd", "onEnd_appendage_atmage_tundra_cs") appendage.sq_AddFunctionName("drawAppend", "drawAppend_appendage_atmage_tundra_cs") appendage.sq_AddFunctionName("isEnd", "isEnd_appendage_atmage_tundra_cs") appendage.sq_AddFunctionName("isDrawAppend", "isDrawAppend_appendage_atmage_tundra_cs") appendage.sq_AddFunctionName("onApplyHpDamage", "onApplyHpDamage_appendage_atmage_tundra_cs") } function sq_AddEffect(appendage) { } function drawAppend_appendage_atmage_tundra_cs(appendage, isOver, x, y, isFlip) { if(!appendage) { return; } local obj = appendage.getParent(); if(!obj) { appendage.setValid(false); return; } local mode = appendage.getVar("mode").get_vector(0); if(sq_IsValidActiveStatus(obj, ACTIVESTATUS_FREEZE) || mode == MODE_FREEZE) { return; } local pAni = sq_GetCurrentAnimation(obj); if(!pAni) { appendage.setValid(false); return; } local t = appendage.sq_var.get_ct_vector(0); local currentT = 0; currentT = t.Get(); //print(" currentT:" + currentT); local startT = 259; local endT = 210; local effectT = 800; local effectType = GRAPHICEFFECT_DODGE; local rgb = sq_RGB(0, 0, 255); local targetV = endT; local al = sq_GetUniformVelocity(startT, targetV, currentT, effectT); local alpha = sq_ALPHA(al); pAni.setEffectLayer(true, effectType, true, rgb, alpha, true, false); local size = sq_AniLayerListSize(pAni); if(currentT > effectT) { local t = appendage.sq_var.get_ct_vector(0); t.Reset(); t.Start(1000000,0); } } function proc_appendage_atmage_tundra_cs(appendage) { if(!appendage) { return; } //print( " tundra_cs"); local obj = appendage.getParent(); if(!obj) { appendage.setValid(false); return; } local mode = appendage.getVar("mode").get_vector(0); if(sq_IsValidActiveStatus(obj, ACTIVESTATUS_FREEZE)) { if(mode == MODE_NORMAL) { appendage.getVar("mode").set_vector(0, MODE_FREEZE); } } else { if(mode == MODE_FREEZE) { appendage.setValid(false); return; } } local t = appendage.sq_var.get_ct_vector(1); // 橡晦梱虽 勘葬朝 卫除桧 虽釭贼 彩念奢问桧 菟横骨栖棻. local currentT = 0; if(t) { currentT = t.Get(); } local frozenWaitTime = appendage.getVar("skl").get_vector(0); // 0.橡晦梱虽 勘葬朝 卫除 local frozenLevel = appendage.getVar("skl").get_vector(1); // 1.彩念溯涟 local frozenRate = appendage.getVar("skl").get_vector(2); // 2.彩念?徽 local frozenTime = appendage.getVar("skl").get_vector(3); // 3.彩念卫除 if(currentT > frozenWaitTime) { if(t) { t.Reset(); t.Start(1000000,0); } local obj = appendage.getParent(); if(!sq_IsValidActiveStatus(obj, ACTIVESTATUS_FREEZE)) { if(appendage.getSource()) { local attackerObj = appendage.getSource(); if(attackerObj.isMyControlObject()) { local id = sq_GetObjectId(obj); local x = sq_GetXPos(obj); local y = sq_GetYPos(obj); local z = sq_GetZPos(obj); sq_BinaryStartWrite(); sq_BinaryWriteDword(id); // sq_BinaryWriteDword(frozenLevel); // sq_BinaryWriteDword(frozenRate); // sq_BinaryWriteDword(frozenTime); // //24259 `Character/Mage/ATTundraSoulFrozen.obj` // 陴彻饵 矗萄塭暧 陛? ?卫粽螃粽薛? sq_SendCreatePassiveObjectPacketPos(attackerObj, 24259, 0, x, y, z); } } } } if(appendage.sq_var.get_vector(1) == 0) { local T = appendage.getTimer().Get(); local maxT = appendage.sq_var.get_vector(0); if(T >= maxT) { // 卫除桧 棻 腑剪釭 //appendage.sq_DeleteEffectFront(); //appendage.setValid(false); return; } } } function onStart_appendage_atmage_tundra_cs(appendage) { if(!appendage) { return; } print(" tundra cs start"); appendage.sq_DeleteEffectFront(); appendage.sq_AddEffectFront("Character/Mage/Effect/Animation/ATTundraSoul/passive_dodge.ani") appendage.sq_var.clear_vector(); appendage.sq_var.push_vector(0); // 晦狱赅萄 appendage.sq_var.clear_ct_vector(); appendage.sq_var.push_ct_vector(); appendage.sq_var.push_ct_vector(); appendage.getVar("mode").clear_vector(); appendage.getVar("mode").push_vector(0); local t = appendage.sq_var.get_ct_vector(0); t.Reset(); t.Start(1000000,0); local frozenT = appendage.sq_var.get_ct_vector(1); if(frozenT) { frozenT.Reset(); frozenT.Start(1000000,0); } local obj = appendage.getParent(); } function isDrawAppend_appendage_atmage_tundra_cs(appendage) { local obj = appendage.getParent(); if(!obj) { appendage.setValid(false); return false; } local mode = appendage.getVar("mode").get_vector(0); if(sq_IsValidActiveStatus(obj, ACTIVESTATUS_FREEZE) || mode == MODE_FREEZE) { return false; } return true; } function onApplyHpDamage_appendage_atmage_tundra_cs(appendage, newHpDamage, attacker) { local obj = appendage.getParent(); if(!obj) return newHpDamage; local damage = newHpDamage; if(sq_IsValidActiveStatus(obj, ACTIVESTATUS_FREEZE)) { local frozenAddDamageRate = appendage.getVar("skl").get_vector(4); // 4.橡横毡朝 瞳 跷陛 等嘐虽 local addDamage = newHpDamage.tofloat() * frozenAddDamageRate.tofloat() / 100.0; print(" addDamage:" + addDamage); damage = damage + addDamage.tointeger(); } return damage; } function prepareDraw_appendage_atmage_tundra_cs(appendage) { if(!appendage) { return; } local obj = appendage.getParent(); } function onEnd_appendage_atmage_tundra_cs(appendage) { if(!appendage) { return; } print(" tundra cs end"); appendage.sq_DeleteEffectFront(); } // 横渐螳 陕撩 渗褐暧 部睡碟 function isEnd_appendage_atmage_tundra_cs(appendage) { return false; }