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;
|
|||
|
|
} |