From 57d042039936c42b41255bfbcd07cba765cbd806 Mon Sep 17 00:00:00 2001 From: Alex King <89047260+Kinglykrab@users.noreply.github.com> Date: Sun, 12 Feb 2023 23:27:15 -0500 Subject: [PATCH] [Quest API] (Performance) Check event EVENT_WAYPOINT_ARRIVE or EVENT_WAYPOINT_DEPART exist before export and execute (#2905) * [Quest API] Optionally parse EVENT_WAYPOINT_ARRIVE and EVENT_WAYPOINT_DEPART # Notes - Optionally parse these events instead of always doing so. * [Quest API] Optionally parse EVENT_WARP # Notes - Optionally parse this event instead of always doing so. * Revert "[Quest API] Optionally parse EVENT_WARP" This reverts commit d8acb9883d5547ab473391d2e8639f923a486cef. --- 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 3cba8a814..2a301d67f 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