mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-23 20:42:45 +00:00
- scriptified the native parts of the powder keg.
This was the last remaining actor with its own native ticking part.
This commit is contained in:
parent
9f01c87ccb
commit
0db441accb
7 changed files with 38 additions and 57 deletions
|
@ -1018,10 +1018,6 @@ static void rrra_specialstats()
|
|||
|
||||
void moveactors_r(void)
|
||||
{
|
||||
double xx;
|
||||
int p;
|
||||
Collision coll;
|
||||
|
||||
dojaildoor();
|
||||
moveminecart();
|
||||
|
||||
|
@ -1033,46 +1029,7 @@ void moveactors_r(void)
|
|||
if (ud.chickenplant) tickstat(STAT_CHICKENPLANT);
|
||||
tickstat(STAT_BOWLING);
|
||||
tickstat(STAT_TELEPORT);
|
||||
|
||||
DukeStatIterator it(STAT_ACTOR);
|
||||
while (auto act = it.Next())
|
||||
{
|
||||
if( act->spr.scale.X == 0 || !act->insector() || actorflag(act, SFLAG2_DIENOW))
|
||||
{
|
||||
act->Destroy();
|
||||
continue;
|
||||
}
|
||||
if (monsterCheatCheck(act) && badguy(act))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
auto sectp = act->sector();
|
||||
|
||||
if (act->GetClass() != RUNTIME_CLASS(DDukeActor))
|
||||
{
|
||||
CallTick(act);
|
||||
continue;
|
||||
}
|
||||
else switch(act->spr.picnum)
|
||||
{
|
||||
case RTILE_POWDERKEG:
|
||||
if (!isRRRA() || (sectp->lotag != ST_1_ABOVE_WATER && sectp->lotag != ST_160_FLOOR_TELEPORT))
|
||||
if (act->vel.X != 0)
|
||||
{
|
||||
movesprite_ex(act, DVector3(act->spr.Angles.Yaw.ToVector()* act->vel.X, act->vel.Z), CLIPMASK0, coll);
|
||||
act->vel.X -= 1. / 16.;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
p = findplayer(act, &xx);
|
||||
|
||||
execute(act,p,xx);
|
||||
}
|
||||
|
||||
tickstat(STAT_ACTOR);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
|
@ -126,8 +126,6 @@ void animatesprites_r(tspriteArray& tsprites, const DVector2& viewVec, DAngle vi
|
|||
if (h->spr.extra > 0)
|
||||
t->pos.Z += 6;
|
||||
break;
|
||||
case RTILE_POWDERKEG:
|
||||
continue;
|
||||
case RTILE_BURNING:
|
||||
if (OwnerAc && OwnerAc->spr.statnum == STAT_PLAYER)
|
||||
{
|
||||
|
|
|
@ -230,6 +230,7 @@ void initactorflags_r()
|
|||
RTILE_SHITBALL,
|
||||
RTILE_RPG,
|
||||
RTILE_RECON,
|
||||
RTILE_POWDERKEG
|
||||
});
|
||||
// Animals were not supposed to have this, but due to a coding bug the logic was unconditional for everything in the game.
|
||||
for (auto& ainf : gs.actorinfo)
|
||||
|
|
|
@ -816,17 +816,6 @@ void shoot_r(DDukeActor* actor, int atwith, PClass* cls)
|
|||
shootweapon(actor, p, spos, sang, atwith);
|
||||
return;
|
||||
|
||||
case RTILE_POWDERKEG:
|
||||
{
|
||||
auto j = spawn(actor, atwith);
|
||||
if (j)
|
||||
{
|
||||
j->vel.X = 2;
|
||||
j->spr.Angles.Yaw = actor->spr.Angles.Yaw;
|
||||
j->spr.pos.Z -= 5;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RTILE_OWHIP:
|
||||
case RTILE_UWHIP:
|
||||
shootwhip(actor, p, spos, sang, atwith);
|
||||
|
|
|
@ -125,6 +125,7 @@ spawnclasses
|
|||
1083 = DukeCameraPole
|
||||
|
||||
26 = RedneckDynamite
|
||||
27 = RedneckPowderKeg
|
||||
1416 = RedneckMortar
|
||||
285 = RedneckChickenSpawner1
|
||||
286 = RedneckChickenSpawner2
|
||||
|
|
|
@ -105,6 +105,7 @@ version "4.10"
|
|||
#include "zscript/games/duke/actors/flamethrowerflame.zs"
|
||||
#include "zscript/games/duke/actors/firefly.zs"
|
||||
|
||||
#include "zscript/games/duke/actors/powderkeg.zs"
|
||||
#include "zscript/games/duke/actors/redneckmisc.zs"
|
||||
#include "zscript/games/duke/actors/emptybike.zs"
|
||||
#include "zscript/games/duke/actors/rrteleport.zs"
|
||||
|
|
34
wadsrc/static/zscript/games/duke/actors/powderkeg.zs
Normal file
34
wadsrc/static/zscript/games/duke/actors/powderkeg.zs
Normal file
|
@ -0,0 +1,34 @@
|
|||
|
||||
class RedneckPowderKeg : DukeActor
|
||||
{
|
||||
default
|
||||
{
|
||||
pic "POWDERKEG";
|
||||
}
|
||||
|
||||
override void Tick()
|
||||
{
|
||||
let sectp = self.sector;
|
||||
if (sectp.lotag != ST_1_ABOVE_WATER && sectp.lotag != ST_160_FLOOR_TELEPORT)
|
||||
if (self.vel.X != 0)
|
||||
{
|
||||
movesprite((self.Angle.ToVector()* self.vel.X, self.vel.Z), CLIPMASK0);
|
||||
self.vel.X -= 1. / 16.;
|
||||
}
|
||||
Super.Tick();
|
||||
}
|
||||
|
||||
|
||||
override bool shootthis(DukeActor actor, DukePlayer p, Vector3 spos, double sang)
|
||||
{
|
||||
let j = actor.spawn("RedneckPowderKeg");
|
||||
if (j)
|
||||
{
|
||||
j.vel.X = 2;
|
||||
j.Angle = actor.Angle;
|
||||
j.pos.Z -= 5;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue