diff --git a/src/g_demo.cpp b/src/g_demo.cpp index f126da4f9cbbd121c4339fe824f60459817cb1ed..db33917073ab8495d6ab1f930e4f78ad51a71ba6 100644 --- a/src/g_demo.cpp +++ b/src/g_demo.cpp @@ -165,6 +165,7 @@ demoghost *ghosts = NULL; // - 0x000A (Ring Racers v2.0) // - A bug was preventing control after ending a drift. // Older behavior is kept around for staff ghost compat. +// - Also, polyobject bounce-back was fixed! #define DEMOVERSION 0x000B diff --git a/src/p_map.c b/src/p_map.c index 84126fb8d3400e892cb873bd701d8f6911923190..bb7868dd44a22ca29359c0fa65dc8c7e678c3744 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -2186,6 +2186,8 @@ boolean P_CheckPosition(mobj_t *thing, fixed_t x, fixed_t y, TryMoveResult_t *re } } + P_ClearTestLines(); + // The bounding box is extended by MAXRADIUS // because mobj_ts are grouped into mapblocks // based on their origin point, and can overlap @@ -2323,8 +2325,6 @@ boolean P_CheckPosition(mobj_t *thing, fixed_t x, fixed_t y, TryMoveResult_t *re validcount++; - P_ClearTestLines(); - // check lines for (bx = xl; bx <= xh; bx++) { diff --git a/src/p_polyobj.c b/src/p_polyobj.c index 80f03d0f7339827689d6f483f8411f00b62b33e3..82eb95432ee1035b53f0a651c36ac5b48ca29132 100644 --- a/src/p_polyobj.c +++ b/src/p_polyobj.c @@ -201,6 +201,10 @@ boolean P_BBoxInsidePolyobj(polyobj_t *po, fixed_t *bbox) { if (P_BoxOnLineSide(bbox, po->lines[i]) == 0) return false; + if (g_tm.sweep && !G_CompatLevel(0x000A)) + { + P_TestLine(po->lines[i]); + } } return true;