From 107e768c9041b480d30fe177b1767eedc580d41d Mon Sep 17 00:00:00 2001 From: Kinglykrab Date: Sun, 12 Feb 2023 16:42:14 -0500 Subject: [PATCH] [Quest API] Optionally parse EVENT_WAYPOINT_ARRIVE and EVENT_WAYPOINT_DEPART # Notes - Optionally parse these events instead of always doing so. --- zone/mob_ai.cpp | 13 +++++++------ zone/waypoints.cpp | 6 ++++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/zone/mob_ai.cpp b/zone/mob_ai.cpp index 5cfdd9f15..0c06fe079 100644 --- a/zone/mob_ai.cpp +++ b/zone/mob_ai.cpp @@ -1753,9 +1753,10 @@ void NPC::AI_DoMovement() { RotateTo(m_CurrentWayPoint.w); } - //kick off event_waypoint arrive - std::string export_string = fmt::format("{}", cur_wp); - parse->EventNPC(EVENT_WAYPOINT_ARRIVE, CastToNPC(), nullptr, export_string, 0); + if (parse->HasQuestSub(GetNPCTypeID(), EVENT_WAYPOINT_ARRIVE)) { + parse->EventNPC(EVENT_WAYPOINT_ARRIVE, CastToNPC(), nullptr, std::to_string(cur_wp), 0); + } + // No need to move as we are there. Next loop will // take care of normal grids, even at pause 0. // We do need to call and setup a wp if we're cur_wp=-2 @@ -1871,9 +1872,9 @@ void NPC::AI_SetupNextWaypoint() { entity_list.OpenDoorsNear(this); if (!DistractedFromGrid) { - //kick off event_waypoint depart - std::string export_string = fmt::format("{}", cur_wp); - parse->EventNPC(EVENT_WAYPOINT_DEPART, CastToNPC(), nullptr, export_string, 0); + if (parse->HasQuestSub(GetNPCTypeID(), EVENT_WAYPOINT_DEPART)) { + parse->EventNPC(EVENT_WAYPOINT_DEPART, CastToNPC(), nullptr, std::to_string(cur_wp), 0); + } //setup our next waypoint, if we are still on our normal grid //remember that the quest event above could have done anything it wanted with our grid diff --git a/zone/waypoints.cpp b/zone/waypoints.cpp index cd4b8b396..5de0aa43a 100644 --- a/zone/waypoints.cpp +++ b/zone/waypoints.cpp @@ -165,10 +165,12 @@ void NPC::ResumeWandering() if (m_CurrentWayPoint.x == GetX() && m_CurrentWayPoint.y == GetY()) { // are we we at a waypoint? if so, trigger event and start to next - std::string export_string = fmt::format("{}", cur_wp); CalculateNewWaypoint(); SetAppearance(eaStanding, false); - parse->EventNPC(EVENT_WAYPOINT_DEPART, this, nullptr, export_string, 0); + + if (parse->HasQuestSub(GetNPCTypeID(), EVENT_WAYPOINT_DEPART)) { + parse->EventNPC(EVENT_WAYPOINT_DEPART, this, nullptr, std::to_string(cur_wp), 0); + } } // if not currently at a waypoint, we continue on to the one we were headed to before the stop } else