From 241f900dc4ae6dd9161d9dcaa65e8842ad747ad1 Mon Sep 17 00:00:00 2001 From: Alex King <89047260+Kinglykrab@users.noreply.github.com> Date: Sun, 12 Feb 2023 23:21:21 -0500 Subject: [PATCH] [Quest API] (Performance) Check event exists before export and execute EVENT_DUEL_LOSE and EVENT_DUEL_WIN (#2915) # Notes - Optionally parse these events instead of always doing so. --- zone/entity.cpp | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/zone/entity.cpp b/zone/entity.cpp index f63c89ed5..80b8c6634 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -1787,12 +1787,29 @@ void EntityList::QueueClientsStatus(Mob *sender, const EQApplicationPacket *app, void EntityList::DuelMessage(Mob *winner, Mob *loser, bool flee) { if (winner->GetLevelCon(winner->GetLevel(), loser->GetLevel()) > 2) { - std::vector args; - args.push_back(winner); - args.push_back(loser); + if (parse->PlayerHasQuestSub(EVENT_DUEL_WIN)) { + std::vector args = { winner, loser }; - parse->EventPlayer(EVENT_DUEL_WIN, winner->CastToClient(), loser->GetName(), loser->CastToClient()->CharacterID(), &args); - parse->EventPlayer(EVENT_DUEL_LOSE, loser->CastToClient(), winner->GetName(), winner->CastToClient()->CharacterID(), &args); + parse->EventPlayer( + EVENT_DUEL_WIN, + winner->CastToClient(), + loser->GetName(), + loser->CastToClient()->CharacterID(), + &args + ); + } + + if (parse->PlayerHasQuestSub(EVENT_DUEL_LOSE)) { + std::vector args = { winner, loser }; + + parse->EventPlayer( + EVENT_DUEL_LOSE, + loser->CastToClient(), + winner->GetName(), + winner->CastToClient()->CharacterID(), + &args + ); + } } auto it = client_list.begin();