diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Creature/GossipDef.cpp | 16 | ||||
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 74 | ||||
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 21 | ||||
| -rw-r--r-- | src/server/game/Quests/QuestDef.h | 10 | ||||
| -rw-r--r-- | src/server/game/World/World.cpp | 4 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_reload.cpp | 20 | 
6 files changed, 124 insertions, 21 deletions
| diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index 930444ed475..6451fc912a7 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -523,16 +523,16 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const  void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUID, bool enableNext) const  {      std::string questTitle = quest->GetTitle(); -    std::string questOfferRewardText = quest->GetOfferRewardText(); +    std::string RewardText = quest->GetOfferRewardText();      LocaleConstant localeConstant = _session->GetSessionDbLocaleIndex();      if (localeConstant != LOCALE_enUS)      {          if (QuestLocale const* localeData = sObjectMgr->GetQuestLocale(quest->GetQuestId())) -        {              ObjectMgr::GetLocaleString(localeData->Title,           localeConstant, questTitle); -            ObjectMgr::GetLocaleString(localeData->OfferRewardText, localeConstant, questOfferRewardText); -        } + +        if (QuestOfferRewardLocale const* questOfferRewardLocale = sObjectMgr->GetQuestOfferRewardLocale(quest->GetQuestId())) +            ObjectMgr::GetLocaleString(questOfferRewardLocale->RewardText, localeConstant, RewardText);      }      if (sWorld->getBoolConfig(CONFIG_UI_QUESTLEVELS_IN_DIALOGS)) @@ -542,7 +542,7 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUI      data << uint64(npcGUID);      data << uint32(quest->GetQuestId());      data << questTitle; -    data << questOfferRewardText; +    data << RewardText;      data << uint8(enableNext ? 1 : 0);                      // Auto Finish      data << uint32(quest->GetFlags());                      // 3.3.3 questFlags @@ -626,10 +626,10 @@ void PlayerMenu::SendQuestGiverRequestItems(Quest const* quest, ObjectGuid npcGU      if (localeConstant != LOCALE_enUS)      {          if (QuestLocale const* localeData = sObjectMgr->GetQuestLocale(quest->GetQuestId())) -        {              ObjectMgr::GetLocaleString(localeData->Title,            localeConstant, questTitle); -            ObjectMgr::GetLocaleString(localeData->RequestItemsText, localeConstant, requestItemsText); -        } + +        if (QuestRequestItemsLocale const* questRequestItemsLocale = sObjectMgr->GetQuestRequestItemsLocale(quest->GetQuestId())) +            ObjectMgr::GetLocaleString(questRequestItemsLocale->CompletionText, localeConstant, requestItemsText);      }      if (!quest->GetReqItemsCount() && canComplete) diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 0275100e11f..80f823f9beb 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -4919,8 +4919,8 @@ void ObjectMgr::LoadQuestLocales()      _questLocaleStore.clear();                                // need for reload case -    //                                               0   1       2      3        4           5                6                 7        8              9               10              11              12 -    QueryResult result = WorldDatabase.Query("SELECT ID, locale, Title, Details, Objectives, OfferRewardText, RequestItemsText, EndText, CompletedText, ObjectiveText1, ObjectiveText2, ObjectiveText3, ObjectiveText4 FROM quest_template_locale"); +    //                                               0   1       2      3        4           5        6              7               8               9               10 +    QueryResult result = WorldDatabase.Query("SELECT ID, locale, Title, Details, Objectives, EndText, CompletedText, ObjectiveText1, ObjectiveText2, ObjectiveText3, ObjectiveText4 FROM quest_template_locale");      if (!result)          return; @@ -4928,8 +4928,8 @@ void ObjectMgr::LoadQuestLocales()      {          Field* fields = result->Fetch(); -        uint32 id               = fields[0].GetUInt32(); -        std::string localeName  = fields[1].GetString(); +        uint32 id              = fields[0].GetUInt32(); +        std::string localeName = fields[1].GetString();          QuestLocale& data = _questLocaleStore[id]; @@ -4940,13 +4940,11 @@ void ObjectMgr::LoadQuestLocales()          AddLocaleString(fields[2].GetString(), locale, data.Title);          AddLocaleString(fields[3].GetString(), locale, data.Details);          AddLocaleString(fields[4].GetString(), locale, data.Objectives); -        AddLocaleString(fields[5].GetString(), locale, data.OfferRewardText); -        AddLocaleString(fields[6].GetString(), locale, data.RequestItemsText); -        AddLocaleString(fields[7].GetString(), locale, data.AreaDescription); -        AddLocaleString(fields[8].GetString(), locale, data.CompletedText); +        AddLocaleString(fields[5].GetString(), locale, data.AreaDescription); +        AddLocaleString(fields[6].GetString(), locale, data.CompletedText);          for (uint8 i = 0; i < 4; ++i) -            AddLocaleString(fields[i + 9].GetString(), locale, data.ObjectiveText[i]); +            AddLocaleString(fields[i + 7].GetString(), locale, data.ObjectiveText[i]);      } while (result->NextRow());      TC_LOG_INFO("server.loading", ">> Loaded %u Quest locale strings in %u ms", uint32(_questLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime)); @@ -6114,7 +6112,7 @@ void ObjectMgr::LoadQuestGreetings()      TC_LOG_INFO("server.loading", ">> Loaded %u quest_greeting in %u ms", count, GetMSTimeDiffToNow(oldMSTime));  } -void ObjectMgr::LoadQuestGreetingsLocales() +void ObjectMgr::LoadQuestGreetingLocales()  {      uint32 oldMSTime = getMSTime(); @@ -6161,6 +6159,62 @@ void ObjectMgr::LoadQuestGreetingsLocales()      TC_LOG_INFO("server.loading", ">> Loaded %u quest greeting locale strings in %u ms", uint32(_questGreetingLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime));  } +void ObjectMgr::LoadQuestOfferRewardLocale() +{ +    uint32 oldMSTime = getMSTime(); + +    _questOfferRewardLocaleStore.clear(); // need for reload case +    //                                               0     1          2 +    QueryResult result = WorldDatabase.Query("SELECT Id, locale, RewardText FROM quest_offer_reward_locale"); +    if (!result) +        return; + +    do +    { +        Field* fields = result->Fetch(); + +        uint32 id = fields[0].GetUInt32(); +        std::string localeName = fields[1].GetString(); + +        LocaleConstant locale = GetLocaleByName(localeName); +        if (locale == LOCALE_enUS) +            continue; + +        QuestOfferRewardLocale& data = _questOfferRewardLocaleStore[id]; +        AddLocaleString(fields[2].GetString(), locale, data.RewardText); +    } while (result->NextRow()); + +    TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " Quest Offer Reward locale strings in %u ms", _questOfferRewardLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); +} + +void ObjectMgr::LoadQuestRequestItemsLocale() +{ +    uint32 oldMSTime = getMSTime(); + +    _questRequestItemsLocaleStore.clear(); // need for reload case +    //                                               0     1          2 +    QueryResult result = WorldDatabase.Query("SELECT Id, locale, CompletionText FROM quest_request_items_locale"); +    if (!result) +        return; + +    do +    { +        Field* fields = result->Fetch(); + +        uint32 id = fields[0].GetUInt32(); +        std::string localeName = fields[1].GetString(); + +        LocaleConstant locale = GetLocaleByName(localeName); +        if (locale == LOCALE_enUS) +            continue; + +        QuestRequestItemsLocale& data = _questRequestItemsLocaleStore[id]; +        AddLocaleString(fields[2].GetString(), locale, data.CompletionText); +    } while (result->NextRow()); + +    TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " Quest Request Items locale strings in %u ms", _questRequestItemsLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime)); +} +  void ObjectMgr::LoadTavernAreaTriggers()  {      uint32 oldMSTime = getMSTime(); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index ee423badea8..7c5fa315d3d 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -562,6 +562,8 @@ typedef std::unordered_map<uint32, ItemTemplate> ItemTemplateContainer;  typedef std::unordered_map<uint32, ItemLocale> ItemLocaleContainer;  typedef std::unordered_map<uint32, ItemSetNameLocale> ItemSetNameLocaleContainer;  typedef std::unordered_map<uint32, QuestLocale> QuestLocaleContainer; +typedef std::unordered_map<uint32, QuestOfferRewardLocale> QuestOfferRewardLocaleContainer; +typedef std::unordered_map<uint32, QuestRequestItemsLocale> QuestRequestItemsLocaleContainer;  typedef std::unordered_map<uint32, NpcTextLocale> NpcTextLocaleContainer;  typedef std::unordered_map<uint32, PageTextLocale> PageTextLocaleContainer; @@ -1166,10 +1168,12 @@ class TC_GAME_API ObjectMgr          void LoadItemSetNameLocales();          void LoadQuestLocales();          void LoadNpcTextLocales(); +        void LoadQuestOfferRewardLocale(); +        void LoadQuestRequestItemsLocale();          void LoadPageTextLocales();          void LoadGossipMenuItemsLocales();          void LoadPointOfInterestLocales(); -        void LoadQuestGreetingsLocales(); +        void LoadQuestGreetingLocales();          void LoadInstanceTemplate();          void LoadInstanceEncounters();          void LoadMailLevelRewards(); @@ -1366,6 +1370,18 @@ class TC_GAME_API ObjectMgr              if (itr == _questLocaleStore.end()) return nullptr;              return &itr->second;          } +        QuestOfferRewardLocale const* GetQuestOfferRewardLocale(uint32 entry) const +        { +            auto itr = _questOfferRewardLocaleStore.find(entry); +            if (itr == _questOfferRewardLocaleStore.end()) return nullptr; +            return &itr->second; +        } +        QuestRequestItemsLocale const* GetQuestRequestItemsLocale(uint32 entry) const +        { +            auto itr = _questRequestItemsLocaleStore.find(entry); +            if (itr == _questRequestItemsLocaleStore.end()) return nullptr; +            return &itr->second; +        }          NpcTextLocale const* GetNpcTextLocale(uint32 entry) const          {              NpcTextLocaleContainer::const_iterator itr = _npcTextLocaleStore.find(entry); @@ -1657,6 +1673,9 @@ class TC_GAME_API ObjectMgr          ItemLocaleContainer _itemLocaleStore;          ItemSetNameLocaleContainer _itemSetNameLocaleStore;          QuestLocaleContainer _questLocaleStore; +        QuestOfferRewardLocaleContainer _questOfferRewardLocaleStore; +        QuestRequestItemsLocaleContainer _questRequestItemsLocaleStore; +          NpcTextLocaleContainer _npcTextLocaleStore;          PageTextLocaleContainer _pageTextLocaleStore;          GossipMenuItemsLocaleContainer _gossipMenuItemsLocaleStore; diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index 2fd8ba454a7..516976d9052 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -183,6 +183,16 @@ struct QuestLocale      std::vector<std::vector<std::string>> ObjectiveText;  }; +struct QuestRequestItemsLocale +{ +    std::vector<std::string> CompletionText; +}; + +struct QuestOfferRewardLocale +{ +    std::vector<std::string> RewardText; +}; +  // This Quest class provides a convenient way to access a few pretotaled (cached) quest details,  // all base quest information, and any utility functions such as generating the amount of  // xp to give diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index cab8c786289..3cf43f85850 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1622,11 +1622,13 @@ void World::SetInitialWorldSettings()      sObjectMgr->LoadItemLocales();      sObjectMgr->LoadItemSetNameLocales();      sObjectMgr->LoadQuestLocales(); +    sObjectMgr->LoadQuestOfferRewardLocale(); +    sObjectMgr->LoadQuestRequestItemsLocale();      sObjectMgr->LoadNpcTextLocales();      sObjectMgr->LoadPageTextLocales();      sObjectMgr->LoadGossipMenuItemsLocales();      sObjectMgr->LoadPointOfInterestLocales(); -    sObjectMgr->LoadQuestGreetingsLocales(); +    sObjectMgr->LoadQuestGreetingLocales();      sObjectMgr->SetDBCLocaleIndex(GetDefaultDbcLocale());        // Get once for all the locale index of DBC language (console/broadcasts)      TC_LOG_INFO("server.loading", ">> Localization strings loaded in %u ms", GetMSTimeDiffToNow(oldMSTime)); diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp index 660af91ed6e..eae194b1044 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -322,6 +322,8 @@ public:          HandleReloadLocalesPageTextCommand(handler, "a");          HandleReloadLocalesPointsOfInterestCommand(handler, "a");          HandleReloadLocalesQuestCommand(handler, "a"); +        HandleReloadLocalesQuestOfferRewardCommand(handler, "a"); +        HandleReloadLocalesQuestRequestItemsCommand(handler, "a");          HandleReloadLocalesQuestGreetingCommand(handler, "");          return true;      } @@ -540,7 +542,7 @@ public:      static bool HandleReloadLocalesQuestGreetingCommand(ChatHandler* handler, char const* /*args*/)      {          TC_LOG_INFO("misc", "Re-Loading Quest Greeting locales..."); -        sObjectMgr->LoadQuestGreetingsLocales(); +        sObjectMgr->LoadQuestGreetingLocales();          handler->SendGlobalGMSysMessage("DB table `quest_greeting_locale` reloaded.");          return true;      } @@ -1120,6 +1122,22 @@ public:          return true;      } +    static bool HandleReloadLocalesQuestOfferRewardCommand(ChatHandler* handler, char const* /*args*/) +    { +        TC_LOG_INFO("misc", "Re-Loading Quest Offer Reward Locale... "); +        sObjectMgr->LoadQuestOfferRewardLocale(); +        handler->SendGlobalGMSysMessage("DB table `quest_offer_reward_locale` reloaded."); +        return true; +    } + +    static bool HandleReloadLocalesQuestRequestItemsCommand(ChatHandler* handler, char const* /*args*/) +    { +        TC_LOG_INFO("misc", "Re-Loading Quest Request Item Locale... "); +        sObjectMgr->LoadQuestRequestItemsLocale(); +        handler->SendGlobalGMSysMessage("DB table `quest_request_item_locale` reloaded."); +        return true; +    } +      static bool HandleReloadMailLevelRewardCommand(ChatHandler* handler, char const* /*args*/)      {          TC_LOG_INFO("misc", "Re-Loading Player level dependent mail rewards..."); | 
