From f9cea2b1db29d840b77c8c5262a08e32fb933de2 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 29 Dec 2021 23:38:53 +0100 Subject: [PATCH] - turning one check in hitradius into a flag. --- source/games/duke/src/actors_d.cpp | 8 +------- source/games/duke/src/actors_r.cpp | 3 +-- source/games/duke/src/constants.h | 1 + source/games/duke/src/flags_d.cpp | 19 +++++++++++++++++++ source/games/duke/src/flags_r.cpp | 8 ++++++++ 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/source/games/duke/src/actors_d.cpp b/source/games/duke/src/actors_d.cpp index 872563f78..f594d315b 100644 --- a/source/games/duke/src/actors_d.cpp +++ b/source/games/duke/src/actors_d.cpp @@ -398,13 +398,7 @@ void hitradius_d(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h act2->spr.xvel += (actor->spr.extra << 2); } - if (act2->spr.picnum == PODFEM1 || act2->spr.picnum == FEM1 || - act2->spr.picnum == FEM2 || act2->spr.picnum == FEM3 || - act2->spr.picnum == FEM4 || act2->spr.picnum == FEM5 || - act2->spr.picnum == FEM6 || act2->spr.picnum == FEM7 || - act2->spr.picnum == FEM8 || act2->spr.picnum == FEM9 || - act2->spr.picnum == FEM10 || act2->spr.picnum == STATUE || - act2->spr.picnum == STATUEFLASH || act2->spr.picnum == SPACEMARINE || act2->spr.picnum == QUEBALL || act2->spr.picnum == STRIPEBALL) + if (gs.actorinfo[act2->spr.picnum].flags & SFLAG_HITRADIUSCHECK) fi.checkhitsprite(act2, actor); } else if (actor->spr.extra == 0) act2->extra = 0; diff --git a/source/games/duke/src/actors_r.cpp b/source/games/duke/src/actors_r.cpp index 70e8dd017..a144bc35d 100644 --- a/source/games/duke/src/actors_r.cpp +++ b/source/games/duke/src/actors_r.cpp @@ -335,8 +335,7 @@ void hitradius_r(DDukeActor* actor, int r, int hp1, int hp2, int hp3, int h act2->spr.xvel += (act2->spr.extra << 2); } - if (act2->spr.picnum == STATUEFLASH || act2->spr.picnum == QUEBALL || - act2->spr.picnum == STRIPEBALL || act2->spr.picnum == BOWLINGPIN) + if (gs.actorinfo[act2->spr.picnum].flags & SFLAG_HITRADIUSCHECK) fi.checkhitsprite(act2, actor); if (act2->spr.picnum != RADIUSEXPLOSION && diff --git a/source/games/duke/src/constants.h b/source/games/duke/src/constants.h index e0ebee802..adfca7e47 100644 --- a/source/games/duke/src/constants.h +++ b/source/games/duke/src/constants.h @@ -311,6 +311,7 @@ enum sflags_t SFLAG_INTERNAL_BADGUY = 0x08000000, // a separate flag is needed for the internal ones because SFLAG_BADGUY has additional semantics. SFLAG_KILLCOUNT = 0x10000000, SFLAG_NOCANSEECHECK = 0x20000000, + SFLAG_HITRADIUSCHECK = 0x40000000, }; enum diff --git a/source/games/duke/src/flags_d.cpp b/source/games/duke/src/flags_d.cpp index 84d11589a..346646f29 100644 --- a/source/games/duke/src/flags_d.cpp +++ b/source/games/duke/src/flags_d.cpp @@ -224,6 +224,25 @@ void initactorflags_d() GREENSLIME + 7, }); + setflag(SFLAG_HITRADIUSCHECK, { + PODFEM1 , + FEM1, + FEM2, + FEM3, + FEM4, + FEM5, + FEM6, + FEM7, + FEM8, + FEM9, + FEM10, + STATUE, + STATUEFLASH, + SPACEMARINE, + QUEBALL, + STRIPEBALL + }); + gs.actorinfo[ORGANTIC].aimoffset = 32 << 8; gs.actorinfo[ROTATEGUN].aimoffset = 32 << 8; diff --git a/source/games/duke/src/flags_r.cpp b/source/games/duke/src/flags_r.cpp index 3fcb1ae8a..88fa0f90b 100644 --- a/source/games/duke/src/flags_r.cpp +++ b/source/games/duke/src/flags_r.cpp @@ -198,6 +198,14 @@ void initactorflags_r() DOLPHIN2, TOUGHGAL }); + setflag(SFLAG_HITRADIUSCHECK, { + STATUEFLASH, + BOWLINGPIN, + QUEBALL, + STRIPEBALL + }); + + gs.actorinfo[RPG2].flags |= SFLAG_FORCEAUTOAIM; gs.weaponsandammosprites[0] = RPGSPRITE;