raze/wadsrc/static/zscript/games/duke/actors/respawncontroller.zs
Christoph Oelckers 3a00480efd - do not use properties to set the sprite fields, part 1.
As soon as default init for CON gets in this won't work right anymore - these must come last, not first.
This commit contains all the trivial cases with no inheritance concerns.
2023-01-08 15:46:23 +01:00

65 lines
1.1 KiB
Text

class DukeRespawnController : DukeActor
{
override void Initialize()
{
if (ud.multimode < 2 && self.pal == 1)
{
self.scale = (0, 0);
self.ChangeStat(STAT_MISC);
}
else
{
self.cstat = CSTAT_SPRITE_INVISIBLE;
self.extra = 66 - 13;
self.ChangeStat(STAT_FX);
}
}
override void Tick()
{
if (self.extra == 66)
{
let newact = self.spawnsprite(self.hitag);
if (Raze.isRRRA() && newact)
{
newact.pal = self.pal;
// RRRA's ghost monsters.
if (newact.pal == 8)
{
newact.cstat |= CSTAT_SPRITE_TRANSLUCENT;
}
if (newact.pal != 6)
{
self.Destroy();
return;
}
self.extra = (66 - 13);
newact.pal = 0;
}
else
{
self.Destroy();
}
}
else if (self.extra > (66 - 13))
self.extra++;
}
override void onRespawn(int low)
{
if (self.lotag == low)
{
if (Duke.badguyID(self.hitag) && ud.monsters_off) return;
let star = self.spawn("DukeTransporterStar");
if (star)
{
star.pos.Z -= 32;
}
self.extra = 66 - 12; // Trigger the spawn countdown
}
}
}