mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-20 18:52:43 +00:00
- scriptified the respawn marker.
This commit is contained in:
parent
b485d7a450
commit
99413651b3
12 changed files with 83 additions and 79 deletions
|
@ -681,28 +681,6 @@ void rpgexplode(DDukeActor *actor, int hit, const DVector3 &pos, int EXPLOSION2,
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool respawnmarker(DDukeActor *actor, int yellow, int green)
|
||||
{
|
||||
actor->temp_data[0]++;
|
||||
if (actor->temp_data[0] > gs.respawnitemtime)
|
||||
{
|
||||
actor->Destroy();
|
||||
return false;
|
||||
}
|
||||
if (actor->temp_data[0] >= (gs.respawnitemtime >> 1) && actor->temp_data[0] < ((gs.respawnitemtime >> 1) + (gs.respawnitemtime >> 2)))
|
||||
actor->spr.picnum = yellow;
|
||||
else if (actor->temp_data[0] > ((gs.respawnitemtime >> 1) + (gs.respawnitemtime >> 2)))
|
||||
actor->spr.picnum = green;
|
||||
makeitfall(actor);
|
||||
return true;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool rat(DDukeActor* actor, bool makesound)
|
||||
{
|
||||
makeitfall(actor);
|
||||
|
|
|
@ -2153,7 +2153,7 @@ DETONATEB:
|
|||
else
|
||||
{
|
||||
actor->temp_data[2] = gs.respawnitemtime;
|
||||
spawn(actor, RESPAWNMARKERRED);
|
||||
spawn(actor, PClass::FindActor("DukeRespawnMarker"));
|
||||
actor->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||
actor->spr.scale.Y = (0.140625);
|
||||
return;
|
||||
|
@ -2196,7 +2196,7 @@ DETONATEB:
|
|||
else
|
||||
{
|
||||
actor->temp_data[2] = gs.respawnitemtime;
|
||||
spawn(actor, RESPAWNMARKERRED);
|
||||
spawn(actor, PClass::FindActor("DukeRespawnMarker"));
|
||||
actor->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||
}
|
||||
}
|
||||
|
@ -2284,12 +2284,6 @@ void moveactors_d(void)
|
|||
}
|
||||
continue;
|
||||
|
||||
case RESPAWNMARKERRED:
|
||||
case RESPAWNMARKERYELLOW:
|
||||
case RESPAWNMARKERGREEN:
|
||||
if (!respawnmarker(act, RESPAWNMARKERYELLOW, RESPAWNMARKERGREEN)) continue;
|
||||
break;
|
||||
|
||||
case HELECOPT:
|
||||
case DUKECAR:
|
||||
|
||||
|
|
|
@ -1904,7 +1904,7 @@ DETONATEB:
|
|||
else
|
||||
{
|
||||
actor->temp_data[2] = gs.respawnitemtime;
|
||||
spawn(actor, RESPAWNMARKERRED);
|
||||
spawn(actor, PClass::FindActor("RedneckRespawnMarker"));
|
||||
actor->spr.cstat = CSTAT_SPRITE_INVISIBLE;
|
||||
}
|
||||
}
|
||||
|
@ -2037,11 +2037,6 @@ void moveactors_r(void)
|
|||
}
|
||||
else switch(act->spr.picnum)
|
||||
{
|
||||
case RESPAWNMARKERRED:
|
||||
case RESPAWNMARKERYELLOW:
|
||||
case RESPAWNMARKERGREEN:
|
||||
if (!respawnmarker(act, RESPAWNMARKERYELLOW, RESPAWNMARKERGREEN)) continue;
|
||||
break;
|
||||
case RAT:
|
||||
if (!rat(act, !isRRRA())) continue;
|
||||
break;
|
||||
|
|
|
@ -73,12 +73,6 @@ void animatesprites_d(tspriteArray& tsprites, const DVector2& viewVec, DAngle vi
|
|||
case FOOTPRINTS4:
|
||||
if (t->shade == 127) continue;
|
||||
break;
|
||||
case RESPAWNMARKERRED:
|
||||
case RESPAWNMARKERYELLOW:
|
||||
case RESPAWNMARKERGREEN:
|
||||
if (ud.marker == 0)
|
||||
t->scale = DVector2(0, 0);
|
||||
continue;
|
||||
case CHAIR3:
|
||||
if (hw_models && modelManager.CheckModel(t->picnum, t->pal))
|
||||
{
|
||||
|
|
|
@ -176,19 +176,6 @@ void animatesprites_r(tspriteArray& tsprites, const DVector2& viewVec, DAngle vi
|
|||
|
||||
switch (h->spr.picnum)
|
||||
{
|
||||
case RESPAWNMARKERRED:
|
||||
case RESPAWNMARKERYELLOW:
|
||||
case RESPAWNMARKERGREEN:
|
||||
t->picnum = 861 + ((PlayClock >> 4) & 13);
|
||||
if (h->spr.picnum == RESPAWNMARKERRED)
|
||||
t->pal = 0;
|
||||
else if (h->spr.picnum == RESPAWNMARKERYELLOW)
|
||||
t->pal = 1;
|
||||
else
|
||||
t->pal = 2;
|
||||
if (ud.marker == 0)
|
||||
t->scale = DVector2(0, 0);
|
||||
break;
|
||||
case DUKELYINGDEAD:
|
||||
h->spr.scale = DVector2(0.375, 0.265625);
|
||||
if (h->spr.extra > 0)
|
||||
|
|
|
@ -221,7 +221,20 @@ x(BIGAPPOS, 714)
|
|||
x(MINIFONT, 718)
|
||||
x(W_NUMBERS, 810)
|
||||
x(BLANK, 820)
|
||||
x(RESPAWNMARKER1, 861)
|
||||
x(RESPAWNMARKER2, 862)
|
||||
x(RESPAWNMARKER3, 863)
|
||||
x(RESPAWNMARKER4, 864)
|
||||
x(RESPAWNMARKER5, 865)
|
||||
x(RESPAWNMARKERRED, 866)
|
||||
x(RESPAWNMARKER7, 867)
|
||||
x(RESPAWNMARKER8, 868)
|
||||
x(RESPAWNMARKER9, 869)
|
||||
x(RESPAWNMARKER10, 870)
|
||||
x(RESPAWNMARKER11, 871)
|
||||
x(RESPAWNMARKER12, 872)
|
||||
x(RESPAWNMARKER13, 873)
|
||||
x(RESPAWNMARKER14, 874)
|
||||
x(RESPAWNMARKERYELLOW, 876)
|
||||
x(RESPAWNMARKERGREEN, 886)
|
||||
x(SPINNINGNUKEICON0, 896)
|
||||
|
|
|
@ -434,19 +434,9 @@ DDukeActor* spawninit_d(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
act->vel.X = 292 / 16.;
|
||||
act->vel.Z = 360 / 256.;
|
||||
[[fallthrough]];
|
||||
case RESPAWNMARKERRED:
|
||||
case BLIMP:
|
||||
|
||||
if (act->spr.picnum == RESPAWNMARKERRED)
|
||||
{
|
||||
act->spr.scale = DVector2(0.375, 0.375);
|
||||
if (actj) act->spr.pos.Z = actj->floorz; // -(1<<4);
|
||||
}
|
||||
else
|
||||
{
|
||||
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
||||
act->clipdist = 32;
|
||||
}
|
||||
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
||||
act->clipdist = 32;
|
||||
[[fallthrough]];
|
||||
case MIKE:
|
||||
if (act->spr.picnum == MIKE)
|
||||
|
|
|
@ -343,18 +343,8 @@ DDukeActor* spawninit_r(DDukeActor* actj, DDukeActor* act, TArray<DDukeActor*>*
|
|||
act->spr.extra = 1;
|
||||
act->vel.X = 292 / 16.;
|
||||
act->vel.Z = 360 / 256.;
|
||||
[[fallthrough]];
|
||||
case RESPAWNMARKERRED:
|
||||
if (act->spr.picnum == RESPAWNMARKERRED)
|
||||
{
|
||||
act->spr.scale = DVector2(0.125, 0.125);
|
||||
if (actj) act->spr.pos.Z = actj->floorz;
|
||||
}
|
||||
else
|
||||
{
|
||||
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
||||
act->clipdist = 32;
|
||||
}
|
||||
act->spr.cstat |= CSTAT_SPRITE_BLOCK_ALL;
|
||||
act->clipdist = 32;
|
||||
[[fallthrough]];
|
||||
case MIKE:
|
||||
if (act->spr.picnum == MIKE)
|
||||
|
|
|
@ -42,6 +42,7 @@ spawnclasses
|
|||
623 = DukeCamera
|
||||
624 = DukeCamera
|
||||
625 = DukeCamera
|
||||
3190 = DukeRespawnmarker
|
||||
|
||||
1272 = DukeTrash
|
||||
634 = DukeBolt1
|
||||
|
|
|
@ -48,6 +48,7 @@ spawnclasses
|
|||
1414 = DukeTongue
|
||||
1439 = DukeInnerJaw
|
||||
1440 = DukeInnerJaw1
|
||||
866 = RedneckRespawnMarker
|
||||
|
||||
285 = RedneckChickenSpawner1
|
||||
286 = RedneckChickenSpawner2
|
||||
|
|
|
@ -56,6 +56,7 @@ version "4.10"
|
|||
#include "zscript/games/duke/actors/touchplate.zs"
|
||||
#include "zscript/games/duke/actors/soundcontroller.zs"
|
||||
#include "zscript/games/duke/actors/respawncontroller.zs"
|
||||
#include "zscript/games/duke/actors/respawnmarker.zs"
|
||||
|
||||
#include "zscript/games/duke/actors/jibs.zs"
|
||||
#include "zscript/games/duke/actors/crane.zs"
|
||||
|
|
60
wadsrc/static/zscript/games/duke/actors/respawnmarker.zs
Normal file
60
wadsrc/static/zscript/games/duke/actors/respawnmarker.zs
Normal file
|
@ -0,0 +1,60 @@
|
|||
|
||||
|
||||
class DukeRespawnMarker : DukeActor
|
||||
{
|
||||
default
|
||||
{
|
||||
spriteset "RESPAWNMARKERRED", "RESPAWNMARKERYELLOW", "RESPAWNMARKERGREEN";
|
||||
scalex 0.375;
|
||||
scaley 0.375;
|
||||
}
|
||||
|
||||
override void Initialize()
|
||||
{
|
||||
if (ownerActor != self) self.pos.Z = ownerActor.floorZ;
|
||||
}
|
||||
|
||||
override void Tick()
|
||||
{
|
||||
self.temp_data[0]++;
|
||||
if (self.temp_data[0] > gs.respawnitemtime)
|
||||
{
|
||||
self.Destroy();
|
||||
return;
|
||||
}
|
||||
if (self.temp_data[0] >= (gs.respawnitemtime >> 1) && self.temp_data[0] < ((gs.respawnitemtime >> 1) + (gs.respawnitemtime >> 2)))
|
||||
self.setSpritesetImage(1);
|
||||
else if (self.temp_data[0] > ((gs.respawnitemtime >> 1) + (gs.respawnitemtime >> 2)))
|
||||
self.setSpritesetImage(2);
|
||||
self.makeitfall();
|
||||
}
|
||||
|
||||
override bool Animate(tspritetype t)
|
||||
{
|
||||
if (ud.marker == 0)
|
||||
t.scale = (0, 0);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
class RedneckRespawnMarker : DukeRespawnMarker
|
||||
{
|
||||
default
|
||||
{
|
||||
spriteset "RESPAWNMARKER1", "RESPAWNMARKER2", "RESPAWNMARKER3", "RESPAWNMARKER4", "RESPAWNMARKER5", "RESPAWNMARKERRED", "RESPAWNMARKER7",
|
||||
"RESPAWNMARKER8", "RESPAWNMARKER9", "RESPAWNMARKER10", "RESPAWNMARKER11", "RESPAWNMARKER12", "RESPAWNMARKER13", "RESPAWNMARKER14";
|
||||
scalex 0.125;
|
||||
scaley 0.125;
|
||||
}
|
||||
|
||||
override bool Animate(tspritetype t)
|
||||
{
|
||||
t.setSpritePic(self, ((PlayClock >> 4) % 14));
|
||||
t.pal = self.spriteSetIndex;
|
||||
if (ud.marker == 0)
|
||||
t.scale = (0, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue