Strife save game target loading glitch

Strife includes a fix to the Doom problem of monsters falling asleep when savegames are reloaded. It works around the inability to save mutual references between mobj_t structures by instead causing any monster that had a non-null target at the time of the savegame to begin targeting the player when it is loaded. This has roughly the same effect as full pointer swizzling, since monster infighting is not generally allowed in Strife.

However, in applying this change, the Strife programmers forgot that the player's body might not be loaded from the savegame and spawned into the map until after many or even all of the monsters have been restored. This causes any monster loaded before the player to have its target field set instead to a dummy player object which was spawned when the map was reloaded from the WAD file cache just before the save file was processed. While this player object has been removed from the level, it is not freed from memory due to another subtle glitch in the Doom engine.

The affected monsters will thus either fall asleep or will appear to ignore the player until he deliberately attracts their attentions anew, as they are intent on chasing a different object than the player's actual body. The monsters which are affected by this problem will appear effectively randomized, and are determined by the ordering of Doom's internal thinker list.