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

73 lines
1.3 KiB
Text

class DukeWaterDrip : DukeActor
{
default
{
pic "WATERDRIP";
}
override void Initialize()
{
let owner = self.ownerActor;
if (!self.mapSpawned && owner && (owner.statnum == STAT_PLAYER || owner.statnum == STAT_ACTOR))
{
self.shade = 32;
if (owner.pal != 1)
{
self.pal = 2;
self.pos.Z -= 18;
}
else self.pos.Z -= 13;
self.angle = (Duke.GetViewPlayer().actor.pos.XY - self.pos.XY).Angle();
self.vel.X = frandom(1, 3);
self.DoMove(CLIPMASK0);
}
else if (self.mapSpawned)
{
self.pos.Z += 4;
self.temp_pos.Z = self.pos.Z;
self.temp_data[1] = random(0, 127);
}
self.Scale = (0.375, 0.375);
self.ChangeStat(STAT_STANDABLE);
}
override void Tick()
{
if (self.temp_data[1])
{
self.temp_data[1]--;
if (self.temp_data[1] == 0)
self.cstat &= ~CSTAT_SPRITE_INVISIBLE;
}
else
{
self.makeitfall();
self.DoMove(CLIPMASK0);
if(self.vel.X > 0) self.vel.X -= 1/8.;
if (self.vel.Z == 0)
{
self.cstat |= CSTAT_SPRITE_INVISIBLE;
if (self.pal != 2 && (self.hitag == 0 || Raze.isRR()))
self.PlayActorSound("SOMETHING_DRIPPING");
if (!self.mapSpawned)
{
self.Destroy();
}
else
{
self.pos.Z = self.temp_pos.Z;
self.backuppos();
self.temp_data[1] = random(48, 79);
}
}
}
}
}