From fd225e168cbe44db202f465d8c8e6f37f236d4a0 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 22 Apr 2011 03:38:09 +0000 Subject: [PATCH] - Fixed: PIT_CheckLine() always called CheckForPushSpecial() with the front of the line, even if the actor was hitting it from the back. SVN r3188 (trunk) --- src/p_map.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/p_map.cpp b/src/p_map.cpp index fe1dc5b134..cab74417bc 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -330,7 +330,7 @@ bool P_TeleportMove (AActor *thing, fixed_t x, fixed_t y, fixed_t z, bool telefr FBlockLinesIterator it(box); line_t *ld; - // P_LineOpening requires the thing's z to be the destination ín order to work. + // P_LineOpening requires the thing's z to be the destination ú‹ order to work. fixed_t savedz = thing->z; thing->z = z; while ((ld = it.Next())) @@ -655,7 +655,8 @@ bool PIT_CheckLine (line_t *ld, const FBoundingBox &box, FCheckPosition &tm) P_DamageMobj (tm.thing, NULL, NULL, tm.thing->Mass >> 5, NAME_Melee); } tm.thing->BlockingLine = ld; - CheckForPushSpecial (ld, 0, tm.thing); + // Calculate line side based on the actor's original position, not the new one. + CheckForPushSpecial (ld, P_PointOnLineSide(tm.thing->x, tm.thing->y, ld), tm.thing); return false; } }