Can anyone see why this isn't working right? I can't.
function player::ghostAttack(%player)
{
if(%player.getDatablock().getName() !$= "playerGhost" && %player.getDatablock().getName() !$= "playerGhostNoMove")
{
return;
}
messageAll('', "\c3" @ %player.client.name SPC "\c5is firing his ghost attack!");
for(%i = 0; %i < clientGroup.getCount(); %i++)
{
%c = clientGroup.getObject(%i);
if(isObject(%c.player) && %c != %player.client)
{
%c.player.spawnExplosion(ghostAttackProjectile, 1);
}
}
}
function ghostAttackLoop(%player)
{
if(!isObject(%player) || !isObject(%player.client))
{
return;
}
cancel(%player.ghostAttackSchedule);
if(%player.getEnergyLevel() >= 1)
{
%player.setEnergyLevel(%player.getEnergyLevel() - 1);
}
%player.ghostAttackSchedule = schedule($Pref::GhostHunt::GhostAttackChargeTime, 0, ghostAttackLoop, %player);
}
package playerGhost
{
function armor::onTrigger(%this, %player, %trigger, %val)
{
//%val Key
//=================
//true = Pushed
//false = Released
//=================
//%trigger Key
//=============
//0 = Activate
//2 = Jump
//3 = Crouch
//4 = Jet
//=============
parent::onTrigger(%this, %player, %trigger, %val);
%client = %player.client;
if(%this.getID() != playerGhost.getID() && %this.getID() != playerGhostNoMove.getID())
{
return;
}
if(%trigger != 4)
{
return;
}
if(%val && %player.getEnergyLevel() == %player.getDatablock().maxEnergy)
{
%prevHP = %player.getDatablock().maxDamage - %player.getDamageLevel();
%prevEnergy = %player.getEnergyLevel();
%player.setDatablock("playerGhostNoMove");
%player.setHealth(%prevHP);
%player.setEnergyLevel(%prevEnergy);
ghostAttackLoop(%player);
}
else if(!%val)
{
cancel(%player.ghostAttackSchedule);
%prevHP = %player.getDatablock().maxDamage - %player.getDamageLevel();
%prevEnergy = %player.getEnergyLevel();
%player.setDatablock("playerGhost");
%player.setHealth(%prevHP);
if(%player.getEnergyLevel() < 1)
{
%player.ghostAttack();
%player.setEnergyLevel(%prevEnergy);
}
else
{
%player.setEnergyLevel(%player.getDatablock().maxEnergy);
}
}
}
};
activatePackage(playerGhost);