From e103422ca5601cbb67105bb9040b67675383e5d4 Mon Sep 17 00:00:00 2001 From: Chris Miles Date: Fri, 24 Feb 2023 20:27:28 -0600 Subject: [PATCH] [Pathing] More z-clip improvements, Wurm and Spectral Iksar race adjustments (#2988) --- zone/mob_ai.cpp | 12 +++++++++--- zone/npc.cpp | 3 +++ zone/waypoints.cpp | 1 + 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/zone/mob_ai.cpp b/zone/mob_ai.cpp index 72415b21f..9152b076d 100644 --- a/zone/mob_ai.cpp +++ b/zone/mob_ai.cpp @@ -1073,9 +1073,15 @@ void Mob::AI_Process() { if (engaged) { if (IsNPC() && m_z_clip_check_timer.Check()) { auto t = GetTarget(); - if (t && DistanceNoZ(GetPosition(), t->GetPosition()) < 75 && std::abs(GetPosition().z - t->GetPosition().z) > 15 && !CheckLosFN(t)) { - GMMove(t->GetPosition().x, t->GetPosition().y, t->GetPosition().z, t->GetPosition().w); - FaceTarget(t); + if (t) { + float self_z = GetZ() - GetZOffset(); + float target_z = t->GetPosition().z - t->GetZOffset(); + if (DistanceNoZ(GetPosition(), t->GetPosition()) < 75 && + std::abs(self_z - target_z) >= 25 && !CheckLosFN(t)) { + float new_z = FindDestGroundZ(t->GetPosition()); + GMMove(t->GetPosition().x, t->GetPosition().y, new_z + GetZOffset(), t->GetPosition().w, false); + FaceTarget(t); + } } } diff --git a/zone/npc.cpp b/zone/npc.cpp index ff5b45b79..b683b1bd9 100644 --- a/zone/npc.cpp +++ b/zone/npc.cpp @@ -159,6 +159,9 @@ NPC::NPC(const NPCType *npc_type_data, Spawn2 *in_respawn, const glm::vec4 &posi if (race == RACE_LAVA_DRAGON_49) { size = 5; } + if (race == RACE_WURM_158) { + size = 15; + } taunting = false; proximity = nullptr; diff --git a/zone/waypoints.cpp b/zone/waypoints.cpp index afa36c114..28892f157 100644 --- a/zone/waypoints.cpp +++ b/zone/waypoints.cpp @@ -934,6 +934,7 @@ float Mob::GetZOffset() const { case RACE_AMYGDALAN_663: offset = 5.0f; break; + case RACE_SPECTRAL_IKSAR_147: case RACE_SANDMAN_664: offset = 4.0f; break;