From 49496df9dce00eb8a0c3d84172cc36211f7bd9ec Mon Sep 17 00:00:00 2001 From: TotallyNotElite <1yourexperiment@protonmail.com> Date: Fri, 16 Nov 2018 09:40:59 +0100 Subject: [PATCH] Navparser: Fix not repathing if ignored --- src/navparser.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/navparser.cpp b/src/navparser.cpp index dd3d6a41..faaa210b 100644 --- a/src/navparser.cpp +++ b/src/navparser.cpp @@ -222,7 +222,7 @@ public: else return 2; } - static void addTime(CNavArea *begin, CNavArea *end, Timer &time) + static bool addTime(CNavArea *begin, CNavArea *end, Timer &time) { // Check if connection is already known if (ignores.find({ begin, end }) == ignores.end()) @@ -239,9 +239,11 @@ public: connection.status = explicit_ignored; connection.ignoreTimeout.update(); logging::Info("Ignored Connection %i-%i", begin->m_id, end->m_id); + return true; } + return false; } - static void addTime(Vector &begin, Vector &end, Timer &time) + static bool addTime(Vector &begin, Vector &end, Timer &time) { // todo: check nullptr CNavArea *begin_area = getNavArea(begin); @@ -251,9 +253,9 @@ public: // We can't reach the destination vector. Destination vector might // be out of bounds/reach. crumbs.clear(); - return; + return true; } - addTime(begin_area, end_area, time); + return addTime(begin_area, end_area, time); } static void reset() { @@ -541,10 +543,14 @@ bool navTo(Vector destination, int priority, bool should_repath, return false; std::vector path = findPath(g_pLocalPlayer->v_Origin, destination); if (path.empty()) + { + crumbs.clear(); return false; + } if (!crumbs.empty()) { - ignoremanager::addTime(last_area, crumbs.at(0), inactivity); + if (ignoremanager::addTime(last_area, crumbs.at(0), inactivity)) + ResetPather(); } last_area = path.at(0); if (!nav_to_local)