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

116 lines
2.2 KiB
Text

class DukeWaterFountain : DukeActor
{
default
{
spriteset "WATERFOUNTAIN", "WATERFOUNTAIN1", "WATERFOUNTAIN2", "WATERFOUNTAIN3", "WATERFOUNTAINBROKE";
}
//---------------------------------------------------------------------------
//
// RR implements this but the sprites are empty.
//
//---------------------------------------------------------------------------
override void Initialize()
{
self.setSpritesetImage(0);
self.lotag = 1;
self.cstat = CSTAT_SPRITE_BLOCK_ALL; // Make it hitable
self.extra = 1;
self.ChangeStat(STAT_STANDABLE);
}
override void Tick()
{
if (self.temp_data[0] > 0 && self.spritesetindex < 4)
{
int frame = self.spritesetindex;
if (self.temp_data[0] < 20)
{
self.temp_data[0]++;
frame++;
if (frame == 3)
frame = 1;
self.setSpritesetImage(frame);
}
else
{
let p = self.findplayer();
// this does not really work, but fixing this will probably draw complaints for not being authentic.
if ((self.pos - p.actor.pos.plusZ(28)).Sum() > 32)
{
self.temp_data[0] = 0;
self.setSpritesetImage(0);
}
else self.temp_data[0] = 1;
}
}
}
override void onHit(DukeActor hitter)
{
if (self.spritesetindex < 4)
{
self.setSpritesetImage(4);
self.spawn("DukeToiletWater");
}
else
{
self.PlayActorSound("GLASS_BREAKING");
self.angle = FRandom(0., 360.);
self.lotsofglass(8);
self.Destroy();
}
}
override bool onUse(DukePlayer user)
{
if (self.temp_data[0] != 1)
{
self.temp_data[0] = 1;
let act = user.actor;
self.ownerActor = act;
if (act.extra < gs.max_player_health)
{
act.extra++;
act.PlayActorSound("PLAYER_DRINKING");
}
}
return true;
}
}
//---------------------------------------------------------------------------
//
//
//
//---------------------------------------------------------------------------
class DukeWaterFountainBroke : DukeActor
{
default
{
pic "WATERFOUNTAINBROKE";
}
override void Initialize()
{
self.ChangeStat(STAT_STANDABLE);
}
override void onHit(DukeActor hitter)
{
self.PlayActorSound("GLASS_BREAKING");
self.angle = FRandom(0., 360.);
self.lotsofglass(8);
self.Destroy();
}
}