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