From 44a3e9400319849c083ad6a0c24d9460b24937c9 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sun, 8 May 2011 16:58:53 +0000 Subject: [PATCH] - Fixed: P_CheckPosition() should checks all lines contacted by the actor. Stopping once it finds one blocking line will prevent any further lines with specials from activating their specials. SVN r3198 (trunk) --- src/p_map.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/p_map.cpp b/src/p_map.cpp index cab74417bc..6788ccfb22 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -1401,15 +1401,20 @@ bool P_CheckPosition (AActor *thing, fixed_t x, fixed_t y, FCheckPosition &tm) //bool onthing = (thingdropoffz != tmdropoffz); tm.floorz = tm.dropoffz; + bool good = true; + while ((ld = it.Next())) { - if (!PIT_CheckLine(ld, box, tm)) - return false; + good &= PIT_CheckLine(ld, box, tm); } - - if (tm.ceilingz - tm.floorz < thing->height) + if (!good) + { return false; - + } + if (tm.ceilingz - tm.floorz < thing->height) + { + return false; + } if (tm.touchmidtex) { tm.dropoffz = tm.floorz;