mirror of
https://github.com/ZDoom/Raze.git
synced 2024-12-11 13:21:49 +00:00
9fa2fb75cf
This also handles one special RRRA controller which was just easier to scriptify right away than temporarily work around it.
67 lines
1 KiB
Text
67 lines
1 KiB
Text
class DukeRespawnController : DukeActor
|
|
{
|
|
default
|
|
{
|
|
statnum STAT_FX;
|
|
extra 66 - 13;
|
|
}
|
|
|
|
override void Initialize()
|
|
{
|
|
if (ud.multimode < 2 && self.pal == 1)
|
|
{
|
|
self.scale = (0, 0);
|
|
self.ChangeStat(STAT_MISC);
|
|
}
|
|
else
|
|
self.cstat = CSTAT_SPRITE_INVISIBLE;
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
}
|
|
|