Sqr/character/atmage/tundrasoul/ap_atmage_tundrasoulcs.nut

297 lines
6.3 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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