mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-29 23:42:08 +00:00
bf577916ec
With the exception of isWorldTour, isPlutoPak and isShareware when playing Duke these are always constant and this way can be used to completely eliminate unneeded code.
65 lines
1.1 KiB
Text
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 (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
|
|
}
|
|
}
|
|
}
|
|
|