From 40907757b0b0f40cd264dd7954b21ec9d1176f52 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sun, 22 Mar 2026 19:12:29 -0700 Subject: [PATCH] feat: fire UNIT_QUEST_LOG_CHANGED alongside QUEST_LOG_UPDATE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UNIT_QUEST_LOG_CHANGED("player") now fires at all 6 locations where QUEST_LOG_UPDATE fires — quest accept, complete, objective update, abandon, and server-driven quest log changes. Some addons register for this event instead of QUEST_LOG_UPDATE (4 registrations in FrameXML). Both events are semantically equivalent for the player. --- src/game/game_handler.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index c0447c27..b9b9f99f 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -5456,6 +5456,7 @@ void GameHandler::handlePacket(network::Packet& packet) { } if (addonEventCallback_) addonEventCallback_("QUEST_LOG_UPDATE", {}); + addonEventCallback_("UNIT_QUEST_LOG_CHANGED", {"player"}); // Re-query all nearby quest giver NPCs so markers refresh if (socket) { for (const auto& [guid, entity] : entityManager.getEntities()) { @@ -5526,6 +5527,7 @@ void GameHandler::handlePacket(network::Packet& packet) { if (addonEventCallback_) { addonEventCallback_("QUEST_WATCH_UPDATE", {std::to_string(questId)}); addonEventCallback_("QUEST_LOG_UPDATE", {}); + addonEventCallback_("UNIT_QUEST_LOG_CHANGED", {"player"}); } LOG_INFO("Updated kill count for quest ", questId, ": ", @@ -5607,6 +5609,7 @@ void GameHandler::handlePacket(network::Packet& packet) { if (addonEventCallback_ && updatedAny) { addonEventCallback_("QUEST_WATCH_UPDATE", {}); addonEventCallback_("QUEST_LOG_UPDATE", {}); + addonEventCallback_("UNIT_QUEST_LOG_CHANGED", {"player"}); } LOG_INFO("Quest item update: itemId=", itemId, " count=", count, " trackedQuestsUpdated=", updatedAny); @@ -5721,6 +5724,7 @@ void GameHandler::handlePacket(network::Packet& packet) { } if (addonEventCallback_) { addonEventCallback_("QUEST_LOG_UPDATE", {}); + addonEventCallback_("UNIT_QUEST_LOG_CHANGED", {"player"}); addonEventCallback_("QUEST_REMOVED", {std::to_string(questId)}); } } @@ -21657,6 +21661,7 @@ void GameHandler::addQuestToLocalLogIfMissing(uint32_t questId, const std::strin if (addonEventCallback_) { addonEventCallback_("QUEST_ACCEPTED", {std::to_string(questId)}); addonEventCallback_("QUEST_LOG_UPDATE", {}); + addonEventCallback_("UNIT_QUEST_LOG_CHANGED", {"player"}); } } @@ -21957,6 +21962,7 @@ void GameHandler::abandonQuest(uint32_t questId) { questLog_.erase(questLog_.begin() + static_cast(localIndex)); if (addonEventCallback_) { addonEventCallback_("QUEST_LOG_UPDATE", {}); + addonEventCallback_("UNIT_QUEST_LOG_CHANGED", {"player"}); addonEventCallback_("QUEST_REMOVED", {std::to_string(questId)}); } }