aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2017_03_18_02_world.sql8
-rw-r--r--src/server/game/Entities/Creature/GossipDef.cpp10
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp36
-rw-r--r--src/server/game/Globals/ObjectMgr.h9
-rw-r--r--src/server/game/Quests/QuestDef.h6
-rw-r--r--src/server/game/World/World.cpp1
-rw-r--r--src/server/scripts/Commands/cs_reload.cpp2
7 files changed, 64 insertions, 8 deletions
diff --git a/sql/updates/world/master/2017_03_18_02_world.sql b/sql/updates/world/master/2017_03_18_02_world.sql
new file mode 100644
index 00000000000..0a36bbcd193
--- /dev/null
+++ b/sql/updates/world/master/2017_03_18_02_world.sql
@@ -0,0 +1,8 @@
+DROP TABLE IF EXISTS `quest_offer_reward_locale`;
+CREATE TABLE `quest_offer_reward_locale` (
+ `ID` int(10) unsigned NOT NULL DEFAULT '0',
+ `locale` varchar(4) NOT NULL,
+ `RewardText` text,
+ `VerifiedBuild` smallint(6) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ID`,`locale`)
+)
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp
index ae10d494dbc..8c0c75f42ed 100644
--- a/src/server/game/Entities/Creature/GossipDef.cpp
+++ b/src/server/game/Entities/Creature/GossipDef.cpp
@@ -613,7 +613,7 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const
void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUID, bool enableNext) const
{
std::string questTitle = quest->GetLogTitle();
- std::string questOfferRewardText = quest->GetOfferRewardText();
+ std::string rewardText = quest->GetOfferRewardText();
std::string portraitGiverText = quest->GetPortraitGiverText();
std::string portraitGiverName = quest->GetPortraitGiverName();
std::string portraitTurnInText = quest->GetPortraitTurnInText();
@@ -625,12 +625,14 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUI
if (QuestTemplateLocale const* questTemplateLocale = sObjectMgr->GetQuestLocale(quest->GetQuestId()))
{
ObjectMgr::GetLocaleString(questTemplateLocale->LogTitle, locale, questTitle);
- ObjectMgr::GetLocaleString(questTemplateLocale->OfferRewardText, locale, questOfferRewardText);
ObjectMgr::GetLocaleString(questTemplateLocale->PortraitGiverText, locale, portraitGiverText);
ObjectMgr::GetLocaleString(questTemplateLocale->PortraitGiverName, locale, portraitGiverName);
ObjectMgr::GetLocaleString(questTemplateLocale->PortraitTurnInText, locale, portraitTurnInText);
ObjectMgr::GetLocaleString(questTemplateLocale->PortraitTurnInName, locale, portraitTurnInName);
}
+
+ if (QuestOfferRewardLocale const* questOfferRewardLocale = sObjectMgr->GetQuestOfferRewardLocale(quest->GetQuestId()))
+ ObjectMgr::GetLocaleString(questOfferRewardLocale->RewardText, locale, rewardText);
}
if (sWorld->getBoolConfig(CONFIG_UI_QUESTLEVELS_IN_DIALOGS))
@@ -651,13 +653,13 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* quest, ObjectGuid npcGUI
offer.SuggestedPartyMembers = quest->GetSuggestedPlayers();
for (uint32 i = 0; i < QUEST_EMOTE_COUNT && quest->OfferRewardEmote[i]; ++i)
- offer.Emotes.push_back(WorldPackets::Quest::QuestDescEmote(quest->OfferRewardEmote[i], quest->OfferRewardEmoteDelay[i]));
+ offer.Emotes.emplace_back(quest->OfferRewardEmote[i], quest->OfferRewardEmoteDelay[i]);
offer.QuestFlags[0] = quest->GetFlags();
offer.QuestFlags[1] = quest->GetFlagsEx();
packet.QuestTitle = questTitle;
- packet.RewardText = questOfferRewardText;
+ packet.RewardText = rewardText;
packet.PortraitTurnIn = quest->GetQuestTurnInPortrait();
packet.PortraitGiver = quest->GetQuestGiverPortrait();
packet.PortraitGiverText = portraitGiverText;
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index a6ddfc172fa..ef19db50d51 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -4711,7 +4711,7 @@ void ObjectMgr::LoadQuests()
}
}
- TC_LOG_INFO("server.loading", ">> Loaded %lu quests definitions in %u ms", (unsigned long)_questTemplates.size(), GetMSTimeDiffToNow(oldMSTime));
+ TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " quests definitions in %u ms", _questTemplates.size(), GetMSTimeDiffToNow(oldMSTime));
}
void ObjectMgr::LoadQuestTemplateLocale()
@@ -4760,7 +4760,7 @@ void ObjectMgr::LoadQuestTemplateLocale()
AddLocaleString(questCompletionLog, locale, data.QuestCompletionLog);
} while (result->NextRow());
- TC_LOG_INFO("server.loading", ">> Loaded %u Quest Tempalate locale strings in %u ms", uint32(_questTemplateLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime));
+ TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " Quest Template locale strings in %u ms", _questTemplateLocaleStore.size(), GetMSTimeDiffToNow(oldMSTime));
}
void ObjectMgr::LoadQuestObjectivesLocale()
@@ -4791,7 +4791,37 @@ void ObjectMgr::LoadQuestObjectivesLocale()
}
while (result->NextRow());
- TC_LOG_INFO("server.loading", ">> Loaded %u Quest Objectives locale strings in %u ms", uint32(_questObjectivesLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime));
+ TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " Quest Objectives locale strings in %u ms", _questObjectivesLocaleStore.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();
+
+ std::string RewardText = fields[2].GetString();
+
+ QuestOfferRewardLocale& data = _questOfferRewardLocaleStore[id];
+ LocaleConstant locale = GetLocaleByName(localeName);
+ if (locale == LOCALE_enUS)
+ continue;
+
+ AddLocaleString(RewardText, 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::LoadScripts(ScriptsType type)
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index 3635a440f97..8125551f55f 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -441,6 +441,7 @@ typedef std::unordered_map<uint32, CreatureLocale> CreatureLocaleContainer;
typedef std::unordered_map<uint32, GameObjectLocale> GameObjectLocaleContainer;
typedef std::unordered_map<uint32, QuestTemplateLocale> QuestTemplateLocaleContainer;
typedef std::unordered_map<uint32, QuestObjectivesLocale> QuestObjectivesLocaleContainer;
+typedef std::unordered_map<uint32, QuestOfferRewardLocale> QuestOfferRewardLocaleContainer;
typedef std::unordered_map<uint32, PageTextLocale> PageTextLocaleContainer;
typedef std::unordered_map<uint32, GossipMenuItemsLocale> GossipMenuItemsLocaleContainer;
typedef std::unordered_map<uint32, PointOfInterestLocale> PointOfInterestLocaleContainer;
@@ -1014,6 +1015,7 @@ class TC_GAME_API ObjectMgr
void LoadItemScriptNames();
void LoadQuestTemplateLocale();
void LoadQuestObjectivesLocale();
+ void LoadQuestOfferRewardLocale();
void LoadPageTextLocales();
void LoadGossipMenuItemsLocales();
void LoadPointOfInterestLocales();
@@ -1184,6 +1186,12 @@ class TC_GAME_API ObjectMgr
if (itr == _questTemplateLocaleStore.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;
+ }
QuestObjectivesLocale const* GetQuestObjectivesLocale(uint32 entry) const
{
QuestObjectivesLocaleContainer::const_iterator itr = _questObjectivesLocaleStore.find(entry);
@@ -1537,6 +1545,7 @@ class TC_GAME_API ObjectMgr
ItemTemplateContainer _itemTemplateStore;
QuestTemplateLocaleContainer _questTemplateLocaleStore;
QuestObjectivesLocaleContainer _questObjectivesLocaleStore;
+ QuestOfferRewardLocaleContainer _questOfferRewardLocaleStore;
PageTextLocaleContainer _pageTextLocaleStore;
GossipMenuItemsLocaleContainer _gossipMenuItemsLocaleStore;
PointOfInterestLocaleContainer _pointOfInterestLocaleStore;
diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h
index c8449d8dba6..e4590fb8234 100644
--- a/src/server/game/Quests/QuestDef.h
+++ b/src/server/game/Quests/QuestDef.h
@@ -255,7 +255,6 @@ struct QuestTemplateLocale
StringVector QuestCompletionLog;
/// @todo: implemente this in new tables
- StringVector OfferRewardText;
StringVector RequestItemsText;
};
@@ -264,6 +263,11 @@ struct QuestObjectivesLocale
StringVector Description;
};
+struct QuestOfferRewardLocale
+{
+ StringVector RewardText;
+};
+
struct QuestObjective
{
uint32 ID = 0;
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 55303c5e033..1a7e4de6261 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -1606,6 +1606,7 @@ void World::SetInitialWorldSettings()
sObjectMgr->LoadCreatureLocales();
sObjectMgr->LoadGameObjectLocales();
sObjectMgr->LoadQuestTemplateLocale();
+ sObjectMgr->LoadQuestOfferRewardLocale();
sObjectMgr->LoadQuestObjectivesLocale();
sObjectMgr->LoadPageTextLocales();
sObjectMgr->LoadGossipMenuItemsLocales();
diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp
index e547002ea37..d67c1e6059a 100644
--- a/src/server/scripts/Commands/cs_reload.cpp
+++ b/src/server/scripts/Commands/cs_reload.cpp
@@ -1059,8 +1059,10 @@ public:
TC_LOG_INFO("misc", "Re-Loading Quest Locale ... ");
sObjectMgr->LoadQuestTemplateLocale();
sObjectMgr->LoadQuestObjectivesLocale();
+ sObjectMgr->LoadQuestOfferRewardLocale();
handler->SendGlobalGMSysMessage("DB table `quest_template_locale` reloaded.");
handler->SendGlobalGMSysMessage("DB table `quest_objectives_locale` reloaded.");
+ handler->SendGlobalGMSysMessage("DB table `quest_offer_reward_locale` reloaded.");
return true;
}