From 31fd1bbd3ea631f7d9316f6ca39643db7565c4b5 Mon Sep 17 00:00:00 2001 From: toaster Date: Thu, 31 Aug 2023 13:15:12 +0000 Subject: [PATCH] Merge branch thing-radius-acs into master "Radius Action" thing type See merge request KartKrew/Kart!1429 --- src/deh_tables.c | 2 ++ src/info.c | 27 +++++++++++++++++++++++++++ src/info.h | 4 +++- src/p_mobj.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 75 insertions(+), 1 deletion(-) diff --git a/src/deh_tables.c b/src/deh_tables.c index 030d56328..eeadbc9a4 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -5441,6 +5441,8 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t "MT_LOOPENDPOINT", "MT_LOOPCENTERPOINT", + + "MT_SCRIPT_THING", }; const char *const MOBJFLAG_LIST[] = { diff --git a/src/info.c b/src/info.c index cb0511d01..e957aa8bf 100644 --- a/src/info.c +++ b/src/info.c @@ -27965,6 +27965,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = MF_NOSECTOR|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags S_NULL // raisestate }, + + { // MT_SCRIPT_THING + 4096, // doomednum + S_INVISIBLE, // spawnstate + 1000, // spawnhealth + S_NULL, // seestate + sfx_None, // seesound + 0, // reactiontime + sfx_None, // attacksound + S_NULL, // painstate + 0, // painchance + sfx_None, // painsound + S_NULL, // meleestate + S_NULL, // missilestate + S_NULL, // deathstate + S_NULL, // xdeathstate + sfx_None, // deathsound + 0, // speed + 16*FRACUNIT, // radius + 16*FRACUNIT, // height + 0, // display offset + 0, // mass + 0, // damage + sfx_None, // activesound + MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOCLIPTHING|MF_NOGRAVITY|MF_SCENERY, // flags + S_NULL // raisestate + }, }; skincolor_t skincolors[MAXSKINCOLORS] = { diff --git a/src/info.h b/src/info.h index 92a75febd..3236ebbf6 100644 --- a/src/info.h +++ b/src/info.h @@ -6455,7 +6455,9 @@ typedef enum mobj_type MT_LOOPENDPOINT, MT_LOOPCENTERPOINT, - + + MT_SCRIPT_THING, + MT_FIRSTFREESLOT, MT_LASTFREESLOT = MT_FIRSTFREESLOT + NUMMOBJFREESLOTS - 1, NUMMOBJTYPES diff --git a/src/p_mobj.c b/src/p_mobj.c index 13254aad6..461c4ec6e 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6264,6 +6264,49 @@ static void P_MobjSceneryThink(mobj_t *mobj) if (mobj->tics > 0) mobj->renderflags ^= RF_DONTDRAW; break; + case MT_SCRIPT_THING: + { + if (mobj->thing_args[2] != 0) + { + // turned off + break; + } + + UINT8 i; + for (i = 0; i < MAXPLAYERS; i++) + { + if (playeringame[i] == false) + { + continue; + } + + player_t *player = &players[i]; + if (P_MobjWasRemoved(player->mo) == true) + { + continue; + } + + fixed_t dist = R_PointToDist2( + mobj->x, mobj->y, + player->mo->x, player->mo->y + ); + + if (dist < mobj->thing_args[0] * FRACUNIT) + { + P_ActivateThingSpecial(mobj, player->mo); + + if (mobj->thing_args[1] == 0) + { + P_RemoveMobj(mobj); + return; + } + + break; + } + } + + break; + } case MT_VWREF: case MT_VWREB: {