297 lines
6.3 KiB
Plaintext
297 lines
6.3 KiB
Plaintext
|
||
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;
|
||
} |