diff --git a/src/p_mobj.c b/src/p_mobj.c index 382e207d8e6ccd6ff64bd4fe0ca474a7def44e0e..d457847ff814c5a6270244347432e39d8122dcb4 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));