- two more flags for LASERLINE.

This commit is contained in:
Christoph Oelckers 2022-01-19 10:48:18 +01:00
parent a776e5c56e
commit 3d0c794224
12 changed files with 27 additions and 29 deletions

View file

@ -2582,7 +2582,7 @@ void gutsdir(DDukeActor* actor, int gtype, int n, int p)
// //
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
void handle_se00(DDukeActor* actor, int LASERLINE) void handle_se00(DDukeActor* actor)
{ {
sectortype *sect = actor->sector(); sectortype *sect = actor->sector();
@ -2713,20 +2713,19 @@ void handle_se00(DDukeActor* actor, int LASERLINE)
DukeSectIterator itp(actor->sector()); DukeSectIterator itp(actor->sector());
while (auto act2 = itp.Next()) while (auto act2 = itp.Next())
{ {
if (act2->spr.statnum != 3 && act2->spr.statnum != 4) if (act2->spr.statnum != STAT_MISC && act2->spr.statnum != STAT_PROJECTILE && !actorflag(act2, SFLAG2_NOROTATEWITHSECTOR))
if (LASERLINE < 0 || act2->spr.picnum != LASERLINE) {
if (act2->isPlayer() && act2->GetOwner())
{ {
if (act2->isPlayer() && act2->GetOwner()) continue;
{
continue;
}
act2->spr.ang += (l * q);
act2->spr.ang &= 2047;
act2->spr.pos.Z += zchange;
rotatepoint(Owner->spr.pos.vec2, act2->spr.pos.vec2, (q* l), &act2->spr.pos.vec2);
} }
act2->spr.ang += (l * q);
act2->spr.ang &= 2047;
act2->spr.pos.Z += zchange;
rotatepoint(Owner->spr.pos.vec2, act2->spr.pos.vec2, (q* l), &act2->spr.pos.vec2);
}
} }
} }

View file

@ -928,7 +928,7 @@ static void movetripbomb(DDukeActor *actor)
ChangeActorSect(actor, curSect); ChangeActorSect(actor, curSect);
// this is a hack to work around the LASERLINE sprite's art tile offset // this is a hack to work around the laser line sprite's art tile offset
ChangeActorSect(spawned, curSect); ChangeActorSect(spawned, curSect);
} }
} }
@ -3340,7 +3340,7 @@ void moveeffectors_d(void) //STATNUM 3
switch (act->spr.lotag) switch (act->spr.lotag)
{ {
case SE_0_ROTATING_SECTOR: case SE_0_ROTATING_SECTOR:
handle_se00(act, LASERLINE); handle_se00(act);
break; break;
case SE_1_PIVOT: //Nothing for now used as the pivot case SE_1_PIVOT: //Nothing for now used as the pivot

View file

@ -547,7 +547,7 @@ int ifhitbyweapon_r(DDukeActor *actor)
case SEENINE: case SEENINE:
case OOZFILTER: case OOZFILTER:
case EXPLODINGBARREL: case EXPLODINGBARREL:
case TRIPBOMBSPRITE: case POWDERKEG:
case RPG2: case RPG2:
ps[p].vel.X += actor->hitextra * bcos(actor->hitang, 2); ps[p].vel.X += actor->hitextra * bcos(actor->hitang, 2);
ps[p].vel.Y += actor->hitextra * bsin(actor->hitang, 2); ps[p].vel.Y += actor->hitextra * bsin(actor->hitang, 2);
@ -2475,7 +2475,7 @@ DETONATEB:
int m = 0; int m = 0;
switch (actor->spr.picnum) switch (actor->spr.picnum)
{ {
case TRIPBOMBSPRITE: m = gs.tripbombblastradius; break; // powder keg case POWDERKEG: m = gs.tripbombblastradius; break; // powder keg
case HEAVYHBOMB: m = gs.pipebombblastradius; break; case HEAVYHBOMB: m = gs.pipebombblastradius; break;
case HBOMBAMMO: m = gs.pipebombblastradius; break; case HBOMBAMMO: m = gs.pipebombblastradius; break;
case MORTER: m = gs.morterblastradius; break; case MORTER: m = gs.morterblastradius; break;
@ -2864,7 +2864,7 @@ void moveactors_r(void)
getglobalz(act); getglobalz(act);
break; break;
case TRIPBOMBSPRITE: case POWDERKEG:
if (!isRRRA() || (sectp->lotag != 1 && sectp->lotag != 160)) if (!isRRRA() || (sectp->lotag != 1 && sectp->lotag != 160))
if (act->spr.xvel) if (act->spr.xvel)
{ {
@ -3289,7 +3289,7 @@ void moveeffectors_r(void) //STATNUM 3
switch (st) switch (st)
{ {
case SE_0_ROTATING_SECTOR: case SE_0_ROTATING_SECTOR:
handle_se00(act, -1); handle_se00(act);
break; break;
case SE_1_PIVOT: //Nothing for now used as the pivot case SE_1_PIVOT: //Nothing for now used as the pivot

View file

@ -631,7 +631,8 @@ void animatesprites_d(tspritetype* tsprite, int& spritesortcnt, int x, int y, in
t->pos.Z = OwnerAc->spr.pos.Z - (3 << 8); t->pos.Z = OwnerAc->spr.pos.Z - (3 << 8);
if (gs.lasermode == 2 && ps[screenpeek].heat_on == 0) if (gs.lasermode == 2 && ps[screenpeek].heat_on == 0)
t->yrepeat = 0; t->yrepeat = 0;
[[fallthrough]]; t->shade = -127;
break;
case EXPLOSION2: case EXPLOSION2:
case EXPLOSION2BOT: case EXPLOSION2BOT:
case FREEZEBLAST: case FREEZEBLAST:

View file

@ -326,7 +326,6 @@ enum sflags_t
SFLAG_SE24_REMOVE = 0x20000000, SFLAG_SE24_REMOVE = 0x20000000,
SFLAG_BLOCK_TRIPBOMB = 0x40000000, SFLAG_BLOCK_TRIPBOMB = 0x40000000,
SFLAG_NOFALLER = 0x80000000, SFLAG_NOFALLER = 0x80000000,
}; };
using EDukeFlags1 = TFlags<sflags_t, uint32_t>; using EDukeFlags1 = TFlags<sflags_t, uint32_t>;
@ -335,6 +334,8 @@ DEFINE_TFLAGS_OPERATORS(EDukeFlags1)
enum sflags2_t enum sflags2_t
{ {
SFLAG2_USEACTIVATOR = 0x00000001, SFLAG2_USEACTIVATOR = 0x00000001,
SFLAG2_NOROTATEWITHSECTOR = 0x00000002,
SFLAG2_SHOWWALLSPRITEONMAP = 0x00000004,
}; };
using EDukeFlags2 = TFlags<sflags2_t, uint32_t>; using EDukeFlags2 = TFlags<sflags2_t, uint32_t>;

View file

@ -205,7 +205,6 @@ int TILE_DRONE;
int TILE_MENUSCREEN; int TILE_MENUSCREEN;
int TILE_SCREENBORDER; int TILE_SCREENBORDER;
int TILE_VIEWBORDER; int TILE_VIEWBORDER;
int TILE_LASERLINE;
int TILE_APLAYERTOP; int TILE_APLAYERTOP;
int TILE_CAMCORNER; int TILE_CAMCORNER;
int TILE_CAMLIGHT; int TILE_CAMLIGHT;

View file

@ -211,6 +211,8 @@ void initactorflags_d()
setflag(SFLAG_SE24_REMOVE, { BLOODPOOL, PUKE, FOOTPRINTS, FOOTPRINTS2, FOOTPRINTS3, FOOTPRINTS4, BULLETHOLE, BLOODSPLAT1, BLOODSPLAT2, BLOODSPLAT3, BLOODSPLAT4 }); setflag(SFLAG_SE24_REMOVE, { BLOODPOOL, PUKE, FOOTPRINTS, FOOTPRINTS2, FOOTPRINTS3, FOOTPRINTS4, BULLETHOLE, BLOODSPLAT1, BLOODSPLAT2, BLOODSPLAT3, BLOODSPLAT4 });
setflag(SFLAG_BLOCK_TRIPBOMB, { TRIPBOMB }); // making this a flag adds the option to let other things block placing trip bombs as well. setflag(SFLAG_BLOCK_TRIPBOMB, { TRIPBOMB }); // making this a flag adds the option to let other things block placing trip bombs as well.
setflag(SFLAG_NOFALLER, { CRACK1, CRACK2, CRACK3, CRACK4, SPEAKER, LETTER, DUCK, TARGET, TRIPBOMB, VIEWSCREEN, VIEWSCREEN2 }); setflag(SFLAG_NOFALLER, { CRACK1, CRACK2, CRACK3, CRACK4, SPEAKER, LETTER, DUCK, TARGET, TRIPBOMB, VIEWSCREEN, VIEWSCREEN2 });
setflag(SFLAG2_NOROTATEWITHSECTOR, { LASERLINE });
setflag(SFLAG2_SHOWWALLSPRITEONMAP, { LASERLINE });
if (isWorldTour()) if (isWorldTour())
{ {
@ -311,7 +313,6 @@ void initactorflags_d()
TILE_MENUSCREEN = MENUSCREEN; TILE_MENUSCREEN = MENUSCREEN;
TILE_SCREENBORDER = BIGHOLE; TILE_SCREENBORDER = BIGHOLE;
TILE_VIEWBORDER = VIEWBORDER; TILE_VIEWBORDER = VIEWBORDER;
TILE_LASERLINE = LASERLINE;
TILE_APLAYERTOP = APLAYERTOP; TILE_APLAYERTOP = APLAYERTOP;
TILE_CAMCORNER = CAMCORNER; TILE_CAMCORNER = CAMCORNER;
TILE_CAMLIGHT = CAMLIGHT; TILE_CAMLIGHT = CAMLIGHT;

View file

@ -235,7 +235,7 @@ void initactorflags_r()
setflag(SFLAG_NOFLOORFIRE, { TREE1, TREE2 }); setflag(SFLAG_NOFLOORFIRE, { TREE1, TREE2 });
setflag(SFLAG_HITRADIUS_FLAG1, { BOX, TREE1, TREE2, TIRE }); setflag(SFLAG_HITRADIUS_FLAG1, { BOX, TREE1, TREE2, TIRE });
setflag(SFLAG_HITRADIUS_FLAG2, { QUEBALL, STRIPEBALL, BOWLINGPIN, DUKELYINGDEAD }); setflag(SFLAG_HITRADIUS_FLAG2, { QUEBALL, STRIPEBALL, BOWLINGPIN, DUKELYINGDEAD });
setflag(SFLAG_CHECKSLEEP, { RUBBERCAN, EXPLODINGBARREL, WOODENHORSE, HORSEONSIDE, CANWITHSOMETHING, FIREBARREL, NUKEBARREL, NUKEBARRELDENTED, NUKEBARRELLEAKED, TRIPBOMB, EGG }); setflag(SFLAG_CHECKSLEEP, { RUBBERCAN, EXPLODINGBARREL, WOODENHORSE, HORSEONSIDE, CANWITHSOMETHING, FIREBARREL, NUKEBARREL, NUKEBARRELDENTED, NUKEBARRELLEAKED, EGG });
setflag(SFLAG_NOTELEPORT, { TRANSPORTERSTAR, TRANSPORTERBEAM, BULLETHOLE, WATERSPLASH2, BURNING, FIRE, MUD }); setflag(SFLAG_NOTELEPORT, { TRANSPORTERSTAR, TRANSPORTERBEAM, BULLETHOLE, WATERSPLASH2, BURNING, FIRE, MUD });
setflag(SFLAG_SE24_NOCARRY, { BULLETHOLE, BOLT1, BOLT1 + 1,BOLT1 + 2, BOLT1 + 3, CRANE, CRANE1, CRANE2, BARBROKE }); setflag(SFLAG_SE24_NOCARRY, { BULLETHOLE, BOLT1, BOLT1 + 1,BOLT1 + 2, BOLT1 + 3, CRANE, CRANE1, CRANE2, BARBROKE });
setflag(SFLAG_SE24_REMOVE, { BLOODPOOL, PUKE, FOOTPRINTS, FOOTPRINTS2, FOOTPRINTS3 }); setflag(SFLAG_SE24_REMOVE, { BLOODPOOL, PUKE, FOOTPRINTS, FOOTPRINTS2, FOOTPRINTS3 });
@ -283,7 +283,6 @@ void initactorflags_r()
TILE_MENUSCREEN = MENUSCREEN; TILE_MENUSCREEN = MENUSCREEN;
TILE_SCREENBORDER = isRRRA()? 7629 : BIGHOLE; TILE_SCREENBORDER = isRRRA()? 7629 : BIGHOLE;
TILE_VIEWBORDER = VIEWBORDER; TILE_VIEWBORDER = VIEWBORDER;
TILE_LASERLINE = LASERLINE;
TILE_APLAYERTOP = APLAYERTOP; TILE_APLAYERTOP = APLAYERTOP;
TILE_CAMCORNER = CAMCORNER; TILE_CAMCORNER = CAMCORNER;
TILE_CAMLIGHT = CAMLIGHT; TILE_CAMLIGHT = CAMLIGHT;

View file

@ -64,7 +64,7 @@ void shell(DDukeActor* i, bool morecheck);
void glasspieces(DDukeActor* i); void glasspieces(DDukeActor* i);
void scrap(DDukeActor* i, int SCRAP1, int SCRAP6); void scrap(DDukeActor* i, int SCRAP1, int SCRAP6);
void handle_se00(DDukeActor* i, int LASERLINE); void handle_se00(DDukeActor* i);
void handle_se01(DDukeActor* i); void handle_se01(DDukeActor* i);
void handle_se14(DDukeActor* i, bool checkstat, int RPG, int JIBS6); void handle_se14(DDukeActor* i, bool checkstat, int RPG, int JIBS6);
void handle_se30(DDukeActor* i, int JIBS6); void handle_se30(DDukeActor* i, int JIBS6);

View file

@ -444,7 +444,7 @@ bool GameInterface::DrawAutomapPlayer(int mx, int my, int cposx, int cposy, int
break; break;
case CSTAT_SPRITE_ALIGNMENT_WALL: case CSTAT_SPRITE_ALIGNMENT_WALL:
if (act->spr.picnum == TILE_LASERLINE) if (actorflag(act, SFLAG2_SHOWWALLSPRITEONMAP))
{ {
x1 = sprx; x1 = sprx;
y1 = spry; y1 = spry;

View file

@ -533,7 +533,6 @@ x(SHOTGUNSHELL, 1704)
x(RPGMUZZLEFLASH, 1714) x(RPGMUZZLEFLASH, 1714)
x(CATLITE, 1721) x(CATLITE, 1721)
x(HANDHOLDINGLASER, 1732) x(HANDHOLDINGLASER, 1732)
x(TRIPBOMB, 1735)
x(LASERLINE, 1736) x(LASERLINE, 1736)
x(HANDHOLDINGACCESS, 1737) x(HANDHOLDINGACCESS, 1737)
x(HANDREMOTE, 1739) x(HANDREMOTE, 1739)

View file

@ -16,7 +16,6 @@ extern int TILE_DRONE;
extern int TILE_MENUSCREEN; extern int TILE_MENUSCREEN;
extern int TILE_SCREENBORDER; extern int TILE_SCREENBORDER;
extern int TILE_VIEWBORDER; extern int TILE_VIEWBORDER;
extern int TILE_LASERLINE;
extern int TILE_APLAYERTOP; extern int TILE_APLAYERTOP;
extern int TILE_CAMCORNER; extern int TILE_CAMCORNER;
extern int TILE_CAMLIGHT; extern int TILE_CAMLIGHT;