From 878972fc7be4ef354297f07ff320586b939a45d0 Mon Sep 17 00:00:00 2001 From: Antonio Martinez Date: Sat, 7 Jun 2025 19:30:59 -0400 Subject: [PATCH] Use ChangePlayerReferences to relink kartitems --- src/g_game.c | 2 +- src/lua_mobjlib.c | 8 -------- src/p_mobj.c | 16 ---------------- src/p_mobj.h | 2 -- src/p_saveg.cpp | 11 ----------- 5 files changed, 1 insertion(+), 38 deletions(-) diff --git a/src/g_game.c b/src/g_game.c index 850bdace5..363d619dd 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -3150,7 +3150,7 @@ void G_ChangePlayerReferences(mobj_t *oldmo, mobj_t *newmo) mo2 = (mobj_t *)th; - if (!(mo2->flags & MF_MISSILE)) + if (!((mo2->flags & MF_MISSILE) || P_IsRelinkItem(mo2->type))) continue; if (mo2->target == oldmo) diff --git a/src/lua_mobjlib.c b/src/lua_mobjlib.c index dd80daf66..158909815 100644 --- a/src/lua_mobjlib.c +++ b/src/lua_mobjlib.c @@ -111,7 +111,6 @@ enum mobj_e { mobj_reappear, mobj_punt_ref, mobj_owner, - mobj_relinkplayer, }; static const char *const mobj_opt[] = { @@ -202,7 +201,6 @@ static const char *const mobj_opt[] = { "reappear", "punt_ref", "owner", - "relinkplayer", NULL}; #define UNIMPLEMENTED luaL_error(L, LUA_QL("mobj_t") " field " LUA_QS " is not implemented for Lua and cannot be accessed.", mobj_opt[field]) @@ -521,9 +519,6 @@ static int mobj_get(lua_State *L) } LUA_PushUserdata(L, mo->owner, META_MOBJ); break; - case mobj_relinkplayer: - lua_pushinteger(L, mo->relinkplayer); - break; default: // extra custom variables in Lua memory lua_getfield(L, LUA_REGISTRYINDEX, LREG_EXTVARS); I_Assert(lua_istable(L, -1)); @@ -939,9 +934,6 @@ static int mobj_set(lua_State *L) P_SetTarget(&mo->owner, owner); } break; - case mobj_relinkplayer: - mo->relinkplayer = luaL_checkinteger(L, 3); - break; default: lua_getfield(L, LUA_REGISTRYINDEX, LREG_EXTVARS); I_Assert(lua_istable(L, -1)); diff --git a/src/p_mobj.c b/src/p_mobj.c index 4b1194dd7..6771eba36 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -10446,25 +10446,9 @@ void P_MobjThinker(mobj_t *mobj) { I_Assert(mobj != NULL); I_Assert(!P_MobjWasRemoved(mobj)); - - if (P_IsRelinkItem(mobj->type) && mobj->target && !P_MobjWasRemoved(mobj->target)) - { - player_t *link = mobj->target->player; - if (link && playeringame[link-players] && !link->spectator) - mobj->relinkplayer = (link-players) + 1; - } - // Remove dead target/tracer. if (mobj->target && P_MobjWasRemoved(mobj->target)) - { P_SetTarget(&mobj->target, NULL); - if (P_IsRelinkItem(mobj->type) && mobj->relinkplayer && mobj->relinkplayer <= MAXPLAYERS) - { - player_t *relink = &players[mobj->relinkplayer-1]; - if (playeringame[relink-players] && !relink->spectator && relink->mo && !P_MobjWasRemoved(relink->mo)) - P_SetTarget(&mobj->target, relink->mo); - } - } if (mobj->tracer && P_MobjWasRemoved(mobj->tracer)) P_SetTarget(&mobj->tracer, NULL); if (mobj->hnext && P_MobjWasRemoved(mobj->hnext)) diff --git a/src/p_mobj.h b/src/p_mobj.h index eec956024..34a52d3fd 100644 --- a/src/p_mobj.h +++ b/src/p_mobj.h @@ -450,8 +450,6 @@ struct mobj_t INT32 po_movecount; // Polyobject carrying (NOT savegame, NOT Lua) - UINT8 relinkplayer; // reassociate kartitem target when it dies. ACHTUNG 1-INDEXED - // WARNING: New fields must be added separately to savegame and Lua. }; diff --git a/src/p_saveg.cpp b/src/p_saveg.cpp index 5bdd0e338..75db83e7f 100644 --- a/src/p_saveg.cpp +++ b/src/p_saveg.cpp @@ -3003,7 +3003,6 @@ typedef enum MD3_REAPPEAR = 1<<1, MD3_PUNT_REF = 1<<2, MD3_OWNER = 1<<3, - MD3_RELINK_PLAYER = 1<<4, } mobj_diff3_t; typedef enum @@ -3327,8 +3326,6 @@ static void SaveMobjThinker(savebuffer_t *save, const thinker_t *th, const UINT8 diff3 |= MD3_PUNT_REF; if (mobj->owner) diff3 |= MD3_OWNER; - if (mobj->relinkplayer) - diff3 |= MD3_RELINK_PLAYER; if (diff3 != 0) diff2 |= MD2_MORE; @@ -3619,10 +3616,6 @@ static void SaveMobjThinker(savebuffer_t *save, const thinker_t *th, const UINT8 { WRITEUINT32(save->p, mobj->owner->mobjnum); } - if (diff3 & MD3_RELINK_PLAYER) - { - WRITEUINT8(save->p, mobj->relinkplayer); - } WRITEUINT32(save->p, mobj->mobjnum); } @@ -4936,10 +4929,6 @@ static thinker_t* LoadMobjThinker(savebuffer_t *save, actionf_p1 thinker) { mobj->owner = (mobj_t *)(size_t)READUINT32(save->p); } - if (diff3 & MD3_RELINK_PLAYER) - { - mobj->relinkplayer = READUINT8(save->p); - } // link tid set earlier P_AddThingTID(mobj);