From 1e9b844e88a36172d968821ecae0caecc2f0bc48 Mon Sep 17 00:00:00 2001 From: Ashnal Date: Thu, 29 Sep 2022 19:22:53 -0400 Subject: [PATCH] Unlink non-mobj and non-precip thinkers when loading and freeing Move globalweather to before P_SpawnSpecials so that specials can properly change weather and have it communicated in savegames # Conflicts: # src/p_saveg.c # src/p_setup.c --- src/p_mobj.c | 1 - src/p_saveg.c | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index ee09ad8e1..b6a50f7f6 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -10802,7 +10802,6 @@ void P_RemoveSavegameMobj(mobj_t *mobj) thinker_t *thinker = (thinker_t *)mobj; thinker_t *next = thinker->next; (next->prev = thinker->prev)->next = next; - R_DestroyLevelInterpolators(thinker); Z_Free(thinker); } } diff --git a/src/p_saveg.c b/src/p_saveg.c index 6e143962f..a03dbe677 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -3984,7 +3984,11 @@ static void P_NetUnArchiveThinkers(void) if (currentthinker->function.acp1 == (actionf_p1)P_MobjThinker || currentthinker->function.acp1 == (actionf_p1)P_NullPrecipThinker) P_RemoveSavegameMobj((mobj_t *)currentthinker); // item isn't saved, don't remove it else + { + (next->prev = currentthinker->prev)->next = next; + R_DestroyLevelInterpolators(currentthinker); Z_Free(currentthinker); + } } }