diff options
| author | Meji <alvaro.megias@outlook.com> | 2022-08-13 20:17:58 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-13 20:17:58 +0200 |
| commit | 1bbc8592d95978a4c681fa6177c7c457189ef485 (patch) | |
| tree | 550e3397873b815aa5ca6c50073a132fe499fe9b /src/server/game/Globals/ObjectMgr.cpp | |
| parent | 1d5696a08bd5afae366b36d257aa06c465a980f2 (diff) | |
Core/Gossips: Added support for FriendshipFactionID (#28192)
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 140e1c5a6cd..f3873c6c351 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -9687,6 +9687,49 @@ void ObjectMgr::LoadGossipMenuItems() TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " gossip_menu_option entries in %u ms", _gossipMenuItemsStore.size(), GetMSTimeDiffToNow(oldMSTime)); } +void ObjectMgr::LoadGossipMenuFriendshipFactions() +{ + uint32 oldMSTime = getMSTime(); + + _gossipMenuAddonStore.clear(); + + // 0 1 + QueryResult result = WorldDatabase.Query("SELECT MenuID, FriendshipFactionID FROM gossip_menu_addon"); + + if (!result) + { + TC_LOG_INFO("server.loading", ">> Loaded 0 gossip_menu_addon IDs. DB table `gossip_menu_addon` is empty!"); + return; + } + + do + { + Field* fields = result->Fetch(); + + uint32 menuID = fields[0].GetUInt32(); + GossipMenuAddon& addon = _gossipMenuAddonStore[menuID]; + addon.FriendshipFactionID = fields[1].GetInt32(); + + if (FactionEntry const* faction = sFactionStore.LookupEntry(addon.FriendshipFactionID)) + { + if (!sFriendshipReputationStore.LookupEntry(faction->FriendshipRepID)) + { + TC_LOG_ERROR("sql.sql", "Table gossip_menu_addon: ID %u is using FriendshipFactionID %u referencing non-existing FriendshipRepID %u", + menuID, addon.FriendshipFactionID, faction->FriendshipRepID); + addon.FriendshipFactionID = 0; + } + } + else + { + TC_LOG_ERROR("sql.sql", "Table gossip_menu_addon: ID %u is using non-existing FriendshipFactionID %u", menuID, addon.FriendshipFactionID); + addon.FriendshipFactionID = 0; + } + + } while (result->NextRow()); + + TC_LOG_INFO("server.loading", ">> Loaded %u gossip_menu_addon IDs in %u ms", uint32(_gossipMenuAddonStore.size()), GetMSTimeDiffToNow(oldMSTime)); +} + Trainer::Trainer const* ObjectMgr::GetTrainer(uint32 trainerId) const { return Trinity::Containers::MapGetValuePtr(_trainers, trainerId); |
