raze/wadsrc/static/zscript/games/duke/actors/rat.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

59 lines
1.1 KiB
Text

class DukeRat : DukeActor
{
default
{
pic "RAT";
}
override void Initialize()
{
if (!self.mapSpawned) self.lotag = 0;
if ((self.lotag > ud.player_skill) || ud.monsters_off == 1)
{
self.scale = (0, 0);
self.ChangeStat(STAT_MISC);
}
else
{
self.makeitfall();
self.angle = frandom(0, 360);
self.cstat = 0;
if (!self.mapSpawned && self.ownerActor)
{
self.timetosleep = 0;
self.ChangeStat(STAT_ACTOR);
if (Raze.isRR()) self.shade = self.ownerActor.shade;
}
else self.ChangeStat(STAT_ZOMBIEACTOR);
}
self. clipdist = 10;
self. scale = (0.75, 0.75);
}
override void Tick()
{
self.makeitfall();
if (self.DoMove(CLIPMASK0))
{
if (!Raze.isRRRA() && random(0, 255) == 0) self.PlayActorSound("RATTY");
self.angle += Raze.BAngToDegree * (random(-15, 15) + Raze.BobVal(self.temp_data[0] << 8) * 8);
}
else
{
self.temp_data[0]++;
if (self.temp_data[0] > 1)
{
self.Destroy();
return;
}
else self.angle = frandom(0, 360);
}
if (self.vel.X < 8)
self.vel.X += 1/8.;
self.angle += Raze.BAngToDegree * (random(0, 3) - 6);
}
}