diff options
-rw-r--r-- | sql/updates/world/master/2017_03_18_02_world.sql | 8 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/GossipDef.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 36 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 9 | ||||
-rw-r--r-- | src/server/game/Quests/QuestDef.h | 6 | ||||
-rw-r--r-- | src/server/game/World/World.cpp | 1 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_reload.cpp | 2 |
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; } |