94 lines
2.5 KiB
Plaintext
94 lines
2.5 KiB
Plaintext
|
|
AP_LIGHTNING_WALL_VAR_ELECT_OBJ <- 0;
|
|||
|
|
AP_LIGHTNING_WALL_VAR_START_Z <- 1;
|
|||
|
|
|
|||
|
|
function sq_AddFunctionName(appendage)
|
|||
|
|
{
|
|||
|
|
appendage.sq_AddFunctionName("proc", "proc_appendage_LightningWall")
|
|||
|
|
appendage.sq_AddFunctionName("onStart", "onStart_appendage_LightningWall")
|
|||
|
|
appendage.sq_AddFunctionName("onEnd", "onEnd_appendage_LightningWall")
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function sq_AddEffect(appendage)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
function proc_appendage_LightningWall(appendage)
|
|||
|
|
{
|
|||
|
|
if(!appendage) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
local parentObj = appendage.getParent();
|
|||
|
|
local sourceObj = appendage.getSource();
|
|||
|
|
|
|||
|
|
if(!sourceObj || !parentObj) {
|
|||
|
|
appendage.setValid(false);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
local var = appendage.getVar();
|
|||
|
|
local startZ = var.getInt(AP_LIGHTNING_WALL_VAR_START_Z);
|
|||
|
|
local z = sq_GetShuttleValue(0, 8, sq_GetObjectTime(parentObj), 40);
|
|||
|
|
parentObj.setCurrentPos(parentObj.getXPos(), parentObj.getYPos(), startZ + z);
|
|||
|
|
|
|||
|
|
local elect = var.getObject(AP_LIGHTNING_WALL_VAR_ELECT_OBJ);
|
|||
|
|
if(elect)
|
|||
|
|
elect.setCurrentPos(parentObj.getXPos(), parentObj.getYPos()+1, parentObj.getZPos() + parentObj.getObjectHeight()/2);
|
|||
|
|
|
|||
|
|
local ani = parentObj.getCurrentAnimation();
|
|||
|
|
local rgb = z < 4 ? 255 : 0;
|
|||
|
|
if(ani)
|
|||
|
|
ani.setEffectLayer(true, GRAPHICEFFECT_MONOCHROME, true, sq_RGB(rgb,rgb,rgb), sq_ALPHA(255), true, true);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
function onStart_appendage_LightningWall(appendage)
|
|||
|
|
{
|
|||
|
|
if(!appendage) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
local parentObj = appendage.getParent();
|
|||
|
|
local sourceObj = appendage.getSource();
|
|||
|
|
|
|||
|
|
if(!sourceObj || !parentObj) {
|
|||
|
|
appendage.setValid(false);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
local var = appendage.getVar();
|
|||
|
|
local elect = sq_AddDrawOnlyAniFromParent(parentObj,"PassiveObject/Character/Mage/Animation/ATLightningWall/12_el-shock_dodge.ani", 0, 0, 0);
|
|||
|
|
elect.setCurrentPos(parentObj.getXPos(), parentObj.getYPos()+1, parentObj.getZPos() + parentObj.getObjectHeight()/2);
|
|||
|
|
|
|||
|
|
|
|||
|
|
local sizeRate = sq_GetUniformVelocity(5,15,parentObj.getObjectHeight() - 100, 150);
|
|||
|
|
sizeRate = sizeRate.tofloat()/10.0;
|
|||
|
|
local ani = elect.getCurrentAnimation();
|
|||
|
|
if(ani)
|
|||
|
|
ani.resize(sizeRate);
|
|||
|
|
|
|||
|
|
var.setObject(AP_LIGHTNING_WALL_VAR_ELECT_OBJ, elect);
|
|||
|
|
var.setInt(AP_LIGHTNING_WALL_VAR_START_Z, parentObj.getZPos());
|
|||
|
|
parentObj.sq_PlaySound("LIGHTWALL_ELEC");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
function onEnd_appendage_LightningWall(appendage)
|
|||
|
|
{
|
|||
|
|
if(!appendage) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
printc("onEnd_appendage_LightningWall");
|
|||
|
|
|
|||
|
|
local var = appendage.getVar();
|
|||
|
|
local elect = var.getObject(AP_LIGHTNING_WALL_VAR_ELECT_OBJ);
|
|||
|
|
if(elect) {
|
|||
|
|
elect.setValid(false);
|
|||
|
|
printc("onEnd_appendage_LightningWall");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|