raze/wadsrc/static/zscript/games/duke/actors/ducktarget.zs
Christoph Oelckers 60af1b4c62 - renamed temp_data[0] to 'counter' and map temp_data[5] to the now free temp_data[0].
This not only matches its use in CON but seems to be used as a counter in most other places as well.
The main reason is to improve readability of CON to ZScript conversions.
2023-04-12 21:54:33 +02:00

69 lines
1.3 KiB
Text

class DukeLetter : DukeActor
{
default
{
pic "LETTER";
+NOFALLER;
}
override void Initialize()
{
self.cstat |= CSTAT_SPRITE_BLOCK_ALL;
self.ChangeStat(STAT_ACTOR);
self.extra = 1;
}
}
class DukeDuck : DukeLetter // shooting gallery target
{
default
{
pic "DUCK";
}
override void Tick()
{
if (self.cstat & CSTAT_SPRITE_ALIGNMENT_FLOOR)
{
self.counter++;
if (self.counter > 60)
{
self.counter = 0;
self.cstat = CSTAT_SPRITE_YCENTER | CSTAT_SPRITE_BLOCK_ALL | CSTAT_SPRITE_ALIGNMENT_WALL;
self.extra = 1;
}
}
else
{
int j = self.ifhitbyweapon();
if (j >= 0)
{
self.cstat = CSTAT_SPRITE_ALIGNMENT_FLOOR | CSTAT_SPRITE_YCENTER;
DukeStatIterator itr;
for(let act2 = itr.First(STAT_ACTOR); act2; act2 = itr.Next())
{
if (act2.lotag == self.lotag && act2.GetClass() == self.GetClass())
{
if ((act2.hitag && !(act2.cstat & CSTAT_SPRITE_ALIGNMENT_FLOOR)) ||
(!act2.hitag && (act2.cstat & CSTAT_SPRITE_ALIGNMENT_FLOOR))
)
return;
}
}
// got the last one. Receive your reward!
dlevel.operateactivators(self.lotag, nullptr);
self.operateforcefields(self.lotag);
dlevel.operatemasterswitches(self.lotag);
}
}
}
}
class DukeTarget : DukeDuck
{
default
{
pic "TARGET";
}
}