Make fear and fleeing respect navmesh for both clients and NPCs

This commit is contained in:
Akkadius 2018-09-03 03:06:23 -05:00
parent 8a580a7774
commit 8a28e8500d
3 changed files with 24 additions and 19 deletions

View File

@ -155,19 +155,21 @@ void Mob::ProcessFlee()
} }
} }
void Mob::CalculateNewFearpoint() void Mob::CalculateNewFearpoint() {
{ if (RuleB(Pathing, Fear) && zone->pathing) {
if(RuleB(Pathing, Fear) && zone->pathing)
{
auto Node = zone->pathing->GetRandomLocation(); auto Node = zone->pathing->GetRandomLocation();
if (Node.x != 0.0f || Node.y != 0.0f || Node.z != 0.0f) { if (Node.x != 0.0f || Node.y != 0.0f || Node.z != 0.0f) {
++Node.z; ++Node.z;
m_FearWalkTarget = Node; m_FearWalkTarget = Node;
currently_fleeing = true;
return;
} }
Log(Logs::Detail, Logs::None, "No path found to selected node. Falling through to old fear point selection."); Log(Logs::Detail,
Logs::Pathing,
"No path found to selected node. Falling through to old fear point selection.");
} }
int loop = 0; int loop = 0;
@ -184,8 +186,7 @@ void Mob::CalculateNewFearpoint()
if (ranz == BEST_Z_INVALID) if (ranz == BEST_Z_INVALID)
continue; continue;
float fdist = ranz - GetZ(); float fdist = ranz - GetZ();
if (fdist >= -12 && fdist <= 12 && CheckCoordLosNoZLeaps(GetX(),GetY(),GetZ(),ranx,rany,ranz)) if (fdist >= -12 && fdist <= 12 && CheckCoordLosNoZLeaps(GetX(), GetY(), GetZ(), ranx, rany, ranz)) {
{
break; break;
} }
} }

View File

@ -1142,8 +1142,12 @@ void Mob::AI_Process() {
bool WaypointChanged, NodeReached; bool WaypointChanged, NodeReached;
glm::vec3 Goal = UpdatePath( glm::vec3 Goal = UpdatePath(
m_FearWalkTarget.x, m_FearWalkTarget.y, m_FearWalkTarget.z, m_FearWalkTarget.x,
GetFearSpeed(), WaypointChanged, NodeReached m_FearWalkTarget.y,
m_FearWalkTarget.z,
GetFearSpeed(),
WaypointChanged,
NodeReached
); );
if (WaypointChanged) if (WaypointChanged)