if (Destination.ShouldRecalculateNavmesh())
                     {
                         RecalculateNavmesh(navPoints, start.Value);
+                        return;
                     }
 
                     if (!Destination.IsFlying && !_condition[ConditionFlag.Mounted] &&
                 if (Math.Abs(distance - Destination.LastWaypoint.Distance2DAtLastUpdate) < 0.5f)
                 {
                     int calculations = Destination.NavmeshCalculations;
-                    _logger.LogWarning("Recalculating navmesh (n = {Calculations})", calculations);
-                    Restart(Destination);
+                    if (calculations % 6 == 1)
+                    {
+                        _logger.LogWarning("Jumping to try and resolve navmesh problem (n = {Calculations})",
+                            calculations);
+                        unsafe
+                        {
+                            ActionManager.Instance()->UseAction(ActionType.GeneralAction, 2);
+                            Destination.NavmeshCalculations++;
+                            Destination.LastWaypoint.UpdatedAt = Environment.TickCount64;
+                        }
+                    }
+                    else
+                    {
+                        _logger.LogWarning("Recalculating navmesh (n = {Calculations})", calculations);
+                        Restart(Destination);
+                    }
+
                     Destination.NavmeshCalculations = calculations + 1;
                 }
                 else