From b88600dac6a3b0e3b0b94d3156517074aae746ba Mon Sep 17 00:00:00 2001
From: Monster Iestyn <iestynjealous@ntlworld.com>
Date: Sun, 31 May 2015 13:57:27 +0100
Subject: [PATCH] tmfloorthing and tmhitthing are set to NULL at the start of
 P_MobjThinker, preventing any weird cases of carrying over the previous
 mobj's floor object or such.

This fixes the issue with upside-down springs shooting downwards if you touch another of its kind. Also fixes one of the issues with monitors in Icicle Falls (after you phase inside the East-most float-bob FOF's monitor via the other bug and jump up to break it while there, the NEXT monitor moves upwards too)
---
 src/p_local.h | 2 +-
 src/p_map.c   | 2 +-
 src/p_mobj.c  | 2 ++
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/p_local.h b/src/p_local.h
index 926a51788..59179c1c1 100644
--- a/src/p_local.h
+++ b/src/p_local.h
@@ -276,7 +276,7 @@ boolean P_LookForPlayers(mobj_t *actor, boolean allaround, boolean tracer, fixed
 extern boolean floatok;
 extern fixed_t tmfloorz;
 extern fixed_t tmceilingz;
-extern mobj_t *tmfloorthing, *tmthing;
+extern mobj_t *tmfloorthing, *tmhitthing, *tmthing;
 extern camera_t *mapcampointer;
 
 /* cphipps 2004/08/30 */
diff --git a/src/p_map.c b/src/p_map.c
index c88b91e94..a29ae9512 100644
--- a/src/p_map.c
+++ b/src/p_map.c
@@ -47,7 +47,7 @@ boolean floatok;
 fixed_t tmfloorz, tmceilingz;
 static fixed_t tmdropoffz, tmdrpoffceilz; // drop-off floor/ceiling heights
 mobj_t *tmfloorthing; // the thing corresponding to tmfloorz or NULL if tmfloorz is from a sector
-static mobj_t *tmhitthing; // the solid thing you bumped into (for collisions)
+mobj_t *tmhitthing; // the solid thing you bumped into (for collisions)
 
 // keep track of the line that lowers the ceiling,
 // so missiles don't explode against sky hack walls
diff --git a/src/p_mobj.c b/src/p_mobj.c
index 092005c43..24a9f7b58 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -5450,6 +5450,8 @@ void P_MobjThinker(mobj_t *mobj)
 
 	mobj->eflags &= ~(MFE_PUSHED|MFE_SPRUNG);
 
+	tmfloorthing = tmhitthing = NULL;
+
 	// 970 allows ANY mobj to trigger a linedef exec
 	if (mobj->subsector && GETSECSPECIAL(mobj->subsector->sector->special, 2) == 8)
 	{