From fd52be9fe5f1da91c74a8d28f526f0b33778a72b Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 29 Dec 2024 01:02:52 +0100 Subject: Core/Loot: Implemented automatic flagging of tracking quests from loot (cherry picked from commit d913e38cbab9521c80d826417093d22b2c4a1c1a) # Conflicts: # sql/updates/world/cata_classic/2024_12_29_00_world.sql --- src/server/scripts/Commands/cs_npc.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'src/server/scripts/Commands') diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 376fd0da969..ea62d0ca55b 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -1174,7 +1174,7 @@ public: name = itemTemplate->GetName(handler->GetSessionDbcLocale()); if (!name) name = "Unknown item"; - handler->PSendSysMessage(alternateString ? LANG_COMMAND_NPC_SHOWLOOT_ENTRY_2 : LANG_COMMAND_NPC_SHOWLOOT_ENTRY, + handler->PSendSysMessage(LANG_COMMAND_NPC_SHOWLOOT_ENTRY, alternateString ? 6 : 3 /*number of bytes from following string*/, "\xE2\x94\x80\xE2\x94\x80", itemCount, ItemQualityColors[itemTemplate ? static_cast(itemTemplate->GetQuality()) : ITEM_QUALITY_POOR], itemId, name, itemId); } @@ -1190,6 +1190,23 @@ public: count, ItemQualityColors[currency ? static_cast(currency->Quality) : ITEM_QUALITY_POOR], currencyId, count, name, currencyId); } + static void _ShowLootTrackingQuestCurrencyEntry(ChatHandler* handler, uint32 questId, bool alternateString = false) + { + Quest const* quest = sObjectMgr->GetQuestTemplate(questId); + std::string_view name; + if (quest) + { + name = quest->GetLogTitle(); + if (handler->GetSessionDbLocaleIndex() != LOCALE_enUS) + if (QuestTemplateLocale const* localeData = sObjectMgr->GetQuestLocale(questId)) + ObjectMgr::GetLocaleString(localeData->LogTitle, handler->GetSessionDbLocaleIndex(), name); + } + if (name.empty()) + name = "Unknown quest"; + handler->PSendSysMessage(LANG_COMMAND_NPC_SHOWLOOT_TRACKING_QUEST, alternateString ? 6 : 3 /*number of bytes from following string*/, "\xE2\x94\x80\xE2\x94\x80", + questId, STRING_VIEW_FMT_ARG(name), questId); + } + static void _IterateNotNormalLootMap(ChatHandler* handler, NotNormalLootItemMap const& map, std::vector const& items) { for (NotNormalLootItemMap::value_type const& pair : map) @@ -1212,6 +1229,9 @@ public: case LootItemType::Currency: _ShowLootCurrencyEntry(handler, item.itemid, item.count, true); break; + case LootItemType::TrackingQuest: + _ShowLootTrackingQuestCurrencyEntry(handler, item.itemid, true); + break; } } } @@ -1237,6 +1257,9 @@ public: case LootItemType::Currency: _ShowLootCurrencyEntry(handler, item.itemid, item.count); break; + case LootItemType::TrackingQuest: + _ShowLootTrackingQuestCurrencyEntry(handler, item.itemid); + break; } } } @@ -1256,6 +1279,9 @@ public: case LootItemType::Currency: _ShowLootCurrencyEntry(handler, item.itemid, item.count); break; + case LootItemType::TrackingQuest: + _ShowLootTrackingQuestCurrencyEntry(handler, item.itemid); + break; } } } -- cgit v1.2.3