From e84799e15b9948873ffcab26f335ed9c353e8187 Mon Sep 17 00:00:00 2001 From: Paul Coene Date: Sat, 22 Jul 2017 12:45:21 -0400 Subject: [PATCH] Went back to older fearpath, only kept change where pathing issues can't cause the fear spell to be dropped. --- zone/fearpath.cpp | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/zone/fearpath.cpp b/zone/fearpath.cpp index e0217bd5e..4d39717b5 100644 --- a/zone/fearpath.cpp +++ b/zone/fearpath.cpp @@ -152,12 +152,26 @@ void Mob::CalculateNewFearpoint() Log(Logs::Detail, Logs::None, "No path found to selected node. Falling through to old fear point selection."); } - int ran = 250; - float ranx = GetX()+zone->random.Int(0, ran-1)-zone->random.Int(0, ran-1); - float rany = GetY()+zone->random.Int(0, ran-1)-zone->random.Int(0, ran-1); - - m_FearWalkTarget = glm::vec3(ranx, rany, GetZ()); - - currently_fleeing = true; + int loop = 0; + float ranx, rany, ranz; + currently_fleeing = false; + while (loop < 100) //Max 100 tries + { + int ran = 250 - (loop*2); + loop++; + ranx = GetX()+zone->random.Int(0, ran-1)-zone->random.Int(0, ran-1); + rany = GetY()+zone->random.Int(0, ran-1)-zone->random.Int(0, ran-1); + ranz = FindGroundZ(ranx,rany); + if (ranz == -999999) + continue; + float fdist = ranz - GetZ(); + if (fdist >= -12 && fdist <= 12 && CheckCoordLosNoZLeaps(GetX(),GetY(),GetZ(),ranx,rany,ranz)) + { + currently_fleeing = true; + break; + } + } + if (currently_fleeing) + m_FearWalkTarget = glm::vec3(ranx, rany, ranz); }