From 493a7db1ee9e4ed76eec510ba65040349507c5df Mon Sep 17 00:00:00 2001 From: Hanicef <gustaf@hanicef.me> Date: Wed, 14 Feb 2024 21:54:28 +0100 Subject: [PATCH] Fix thinker being added twice to mobj --- src/p_mobj.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 382e207d8..d457847ff 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -10867,9 +10867,6 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type, ...) ))) mobj->flags2 |= MF2_DONTRESPAWN; - if (!(mobj->flags & MF_NOTHINK)) - P_AddThinker(THINK_MOBJ, &mobj->thinker); - if (type == MT_PLAYER) { // when spawning MT_PLAYER, set mobj->player before calling MobjSpawn hook to prevent P_RemoveMobj from succeeding on player mobj. @@ -10879,12 +10876,12 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type, ...) va_end(args); } - // increment mobj reference, so we don't get a dangling reference in case MobjSpawn calls P_RemoveMobj - mobj->thinker.references++; - if (!(mobj->flags & MF_NOTHINK) || (titlemapinaction && mobj->type == MT_ALTVIEWMAN)) P_AddThinker(THINK_MOBJ, &mobj->thinker); + // increment mobj reference, so we don't get a dangling reference in case MobjSpawn calls P_RemoveMobj + mobj->thinker.references++; + // DANGER! This can cause P_SpawnMobj to return NULL! // Avoid using P_RemoveMobj on the newly created mobj in "MobjSpawn" Lua hooks! status = LUA_HookMobj(mobj, MOBJ_HOOK(MobjSpawn)); -- GitLab