Sqr/character/atmage/tundrasoul/ap_atmage_tundrasoulcs.nut

297 lines
6.3 KiB
Plaintext
Raw Normal View History

2024-03-18 21:37:40 +08:00
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;
}