From 5be3780a54628185e3dc6ca4b7627910576b8b31 Mon Sep 17 00:00:00 2001 From: Alex King <89047260+Kinglykrab@users.noreply.github.com> Date: Mon, 13 Feb 2023 00:36:45 -0500 Subject: [PATCH] [Quest API] (Performance) Check event exists before export and execute EVENT_LEVEL_UP and EVENT_LEVEL_DOWN (#2889) * [Quest API] Optionally parse EVENT_LEVEL_UP and EVENT_LEVEL_DOWN - Optionally parses these events instead of always doing so. * [Quest API] Optionally parse EVENT_LEVEL_UP and EVENT_LEVEL_DOWN - Optionally parses these events instead of always doing so. --- zone/client_packet.cpp | 2 +- zone/exp.cpp | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index a2aa7c289..c9d65f706 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -13581,7 +13581,7 @@ void Client::Handle_OP_ShopPlayerBuy(const EQApplicationPacket *app) safe_delete(qspack); } // end QS code - + if (parse->PlayerHasQuestSub(EVENT_MERCHANT_BUY)) { const auto& export_string = fmt::format( "{} {} {} {} {}", diff --git a/zone/exp.cpp b/zone/exp.cpp index 7dcc223cf..41bb5cfc9 100644 --- a/zone/exp.cpp +++ b/zone/exp.cpp @@ -871,8 +871,11 @@ void Client::SetLevel(uint8 set_level, bool command) if (set_level > m_pp.level) { int levels_gained = (set_level - m_pp.level); - const auto export_string = fmt::format("{}", levels_gained); - parse->EventPlayer(EVENT_LEVEL_UP, this, export_string, 0); + + if (parse->PlayerHasQuestSub(EVENT_LEVEL_UP)) { + parse->EventPlayer(EVENT_LEVEL_UP, this, std::to_string(levels_gained), 0); + } + if (player_event_logs.IsEventEnabled(PlayerEvent::LEVEL_GAIN)) { auto e = PlayerEvent::LevelGainedEvent{ .from_level = m_pp.level, @@ -882,7 +885,6 @@ void Client::SetLevel(uint8 set_level, bool command) RecordPlayerEventLog(PlayerEvent::LEVEL_GAIN, e); } - if (RuleB(QueryServ, PlayerLogLevels)) { const auto event_desc = fmt::format( @@ -896,8 +898,11 @@ void Client::SetLevel(uint8 set_level, bool command) } } else if (set_level < m_pp.level) { int levels_lost = (m_pp.level - set_level); - const auto export_string = fmt::format("{}", levels_lost); - parse->EventPlayer(EVENT_LEVEL_DOWN, this, export_string, 0); + + if (parse->PlayerHasQuestSub(EVENT_LEVEL_DOWN)) { + parse->EventPlayer(EVENT_LEVEL_DOWN, this, std::to_string(levels_lost), 0); + } + if (player_event_logs.IsEventEnabled(PlayerEvent::LEVEL_LOSS)) { auto e = PlayerEvent::LevelLostEvent{ .from_level = m_pp.level,