mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-30 07:50:54 +00:00
60af1b4c62
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.
69 lines
1.3 KiB
Text
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";
|
|
}
|
|
}
|