From 63ae0ea6bd9056d1341fda08cb5109df5c8e3d39 Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Sat, 26 Nov 2022 17:42:56 -0500 Subject: [PATCH] Prevent finishline ever being your prevwaypoint --- src/k_kart.c | 5 +++++ src/k_waypoint.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/k_kart.c b/src/k_kart.c index 9973bc5d5..15cd34b9a 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -9067,6 +9067,11 @@ static waypoint_t *K_GetPlayerNextWaypoint(player_t *player) if (angledelta < nextbestdelta && momdelta < nextbestmomdelta) { + if (waypoint->prevwaypoints[i] == finishline) // NEVER allow finish line. + { + continue; + } + if (P_TraceWaypointTraversal(player->mo, waypoint->prevwaypoints[i]->mobj) == false) { // Save sight checks when all of the other checks pass, so we only do it if we have to diff --git a/src/k_waypoint.c b/src/k_waypoint.c index 837f77102..a36cdfeb7 100644 --- a/src/k_waypoint.c +++ b/src/k_waypoint.c @@ -361,7 +361,7 @@ waypoint_t *K_GetBestWaypointForMobj(mobj_t *const mobj) // remember: huge radius if (closestdist <= rad && checkdist <= rad && finishline != NULL) { - if (!P_TraceBlockingLines(mobj, checkwaypoint->mobj)) // Intentionally not P_TraceWaypointTraversal + if (!P_TraceWaypointTraversal(mobj, checkwaypoint->mobj)) { // Save sight checks when all of the other checks pass, so we only do it if we have to continue; @@ -379,7 +379,7 @@ waypoint_t *K_GetBestWaypointForMobj(mobj_t *const mobj) } else if (checkdist < closestdist && bestfindist == INT32_MAX) { - if (!P_TraceBlockingLines(mobj, checkwaypoint->mobj)) // Intentionally not P_TraceWaypointTraversal + if (!P_TraceWaypointTraversal(mobj, checkwaypoint->mobj)) { // Save sight checks when all of the other checks pass, so we only do it if we have to continue;