aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Creature/GossipDef.cpp16
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp74
-rw-r--r--src/server/game/Globals/ObjectMgr.h21
-rw-r--r--src/server/game/Quests/QuestDef.h10
-rw-r--r--src/server/game/World/World.cpp4
-rw-r--r--src/server/scripts/Commands/cs_reload.cpp20
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...");