diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-12-29 01:02:52 +0100 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-12-29 22:22:41 +0100 |
commit | fd52be9fe5f1da91c74a8d28f526f0b33778a72b (patch) | |
tree | c38c490eae69e95374867b1ec9842edabdd78568 /src/server/scripts | |
parent | 4084b85352420fd2e031e8fb4aef98cbb93d2429 (diff) |
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
Diffstat (limited to 'src/server/scripts')
-rw-r--r-- | src/server/scripts/Commands/cs_npc.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
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<ItemQualities>(itemTemplate->GetQuality()) : ITEM_QUALITY_POOR], itemId, name, itemId); } @@ -1190,6 +1190,23 @@ public: count, ItemQualityColors[currency ? static_cast<ItemQualities>(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<LootItem> 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; } } } |