aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Quests/QuestDef.cpp
diff options
context:
space:
mode:
authorfunjoker <torti-esser@web.de>2019-07-27 02:52:13 +0200
committerShauren <shauren.trinity@gmail.com>2019-08-17 20:04:14 +0200
commitb4d30bb92cbfc8411d8d91b0f4f2981f2cecc148 (patch)
treee799515c3341aae73e47f080a71c39fcb371e905 /src/server/game/Quests/QuestDef.cpp
parent4380fe2751869e7a011d51ee9449e8723b00067f (diff)
QueryCache port
partial port of: (ae9d01a3245c59a8a8d50516a79b79250337450d) (dd1aa64563bfb726e1132a135927a02fbb765454)
Diffstat (limited to 'src/server/game/Quests/QuestDef.cpp')
-rw-r--r--src/server/game/Quests/QuestDef.cpp163
1 files changed, 163 insertions, 0 deletions
diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp
index 91c6516e2e9..bca194591fe 100644
--- a/src/server/game/Quests/QuestDef.cpp
+++ b/src/server/game/Quests/QuestDef.cpp
@@ -419,3 +419,166 @@ bool Quest::CanIncreaseRewardedQuestCounters() const
// This affects counters and client requests for completed quests.
return (!IsDFQuest() && !IsDaily() && (!IsRepeatable() || IsWeekly() || IsMonthly() || IsSeasonal()));
}
+
+void Quest::InitializeQueryData()
+{
+ WorldPacket queryTemp;
+ for (uint8 loc = LOCALE_enUS; loc < TOTAL_LOCALES; ++loc)
+ {
+ queryTemp = BuildQueryData(static_cast<LocaleConstant>(loc));
+ QueryData[loc] = queryTemp;
+ }
+}
+
+WorldPacket Quest::BuildQueryData(LocaleConstant loc) const
+{
+ WorldPackets::Quest::QueryQuestInfoResponse response;
+
+ response.Allow = true;
+ response.QuestID = GetQuestId();
+
+ response.Info.LogTitle = GetLogTitle();
+ response.Info.LogDescription = GetLogDescription();
+ response.Info.QuestDescription = GetQuestDescription();
+ response.Info.AreaDescription = GetAreaDescription();
+ response.Info.QuestCompletionLog = GetQuestCompletionLog();
+ response.Info.PortraitGiverText = GetPortraitGiverText();
+ response.Info.PortraitGiverName = GetPortraitGiverName();
+ response.Info.PortraitTurnInText = GetPortraitTurnInText();
+ response.Info.PortraitTurnInName = GetPortraitTurnInName();
+
+ if (loc != LOCALE_enUS)
+ {
+ if (QuestTemplateLocale const* questTemplateLocale = sObjectMgr->GetQuestLocale(GetQuestId()))
+ {
+ ObjectMgr::GetLocaleString(questTemplateLocale->LogTitle, loc, response.Info.LogTitle);
+ ObjectMgr::GetLocaleString(questTemplateLocale->LogDescription, loc, response.Info.LogDescription);
+ ObjectMgr::GetLocaleString(questTemplateLocale->QuestDescription, loc, response.Info.QuestDescription);
+ ObjectMgr::GetLocaleString(questTemplateLocale->AreaDescription, loc, response.Info.AreaDescription);
+ ObjectMgr::GetLocaleString(questTemplateLocale->QuestCompletionLog, loc, response.Info.QuestCompletionLog);
+ ObjectMgr::GetLocaleString(questTemplateLocale->PortraitGiverText, loc, response.Info.PortraitGiverText);
+ ObjectMgr::GetLocaleString(questTemplateLocale->PortraitGiverName, loc, response.Info.PortraitGiverName);
+ ObjectMgr::GetLocaleString(questTemplateLocale->PortraitTurnInText, loc, response.Info.PortraitTurnInText);
+ ObjectMgr::GetLocaleString(questTemplateLocale->PortraitTurnInName, loc, response.Info.PortraitTurnInName);
+ }
+ }
+
+ if (sWorld->getBoolConfig(CONFIG_UI_QUESTLEVELS_IN_DIALOGS))
+ AddQuestLevelToTitle(response.Info.LogTitle, GetQuestLevel());
+
+ response.Info.QuestID = GetQuestId();
+ response.Info.QuestType = GetQuestType();
+ response.Info.QuestLevel = GetQuestLevel();
+ response.Info.QuestScalingFactionGroup = GetQuestScalingFactionGroup();
+ response.Info.QuestMaxScalingLevel = GetQuestMaxScalingLevel();
+ response.Info.QuestPackageID = GetQuestPackageID();
+ response.Info.QuestMinLevel = GetMinLevel();
+ response.Info.QuestSortID = GetZoneOrSort();
+ response.Info.QuestInfoID = GetQuestInfoID();
+ response.Info.SuggestedGroupNum = GetSuggestedPlayers();
+ response.Info.RewardNextQuest = GetNextQuestInChain();
+ response.Info.RewardXPDifficulty = GetXPDifficulty();
+ response.Info.RewardXPMultiplier = GetXPMultiplier();
+
+ if (!HasFlag(QUEST_FLAGS_HIDDEN_REWARDS))
+ response.Info.RewardMoney = RewardMoney;
+
+ response.Info.RewardMoneyDifficulty = GetRewMoneyDifficulty();
+ response.Info.RewardMoneyMultiplier = GetMoneyMultiplier();
+ response.Info.RewardBonusMoney = GetRewMoneyMaxLevel();
+ for (uint8 i = 0; i < QUEST_REWARD_DISPLAY_SPELL_COUNT; ++i)
+ response.Info.RewardDisplaySpell[i] = RewardDisplaySpell[i];
+
+ response.Info.RewardSpell = GetRewSpell();
+
+ response.Info.RewardHonor = GetRewHonor();
+ response.Info.RewardKillHonor = GetRewKillHonor();
+
+ response.Info.RewardArtifactXPDifficulty = GetArtifactXPDifficulty();
+ response.Info.RewardArtifactXPMultiplier = GetArtifactXPMultiplier();
+ response.Info.RewardArtifactCategoryID = GetArtifactCategoryId();
+
+ response.Info.StartItem = GetSrcItemId();
+ response.Info.Flags = GetFlags();
+ response.Info.FlagsEx = GetFlagsEx();
+ response.Info.FlagsEx2 = GetFlagsEx2();
+ response.Info.RewardTitle = GetRewTitle();
+ response.Info.RewardArenaPoints = GetRewArenaPoints();
+ response.Info.RewardSkillLineID = GetRewardSkillId();
+ response.Info.RewardNumSkillUps = GetRewardSkillPoints();
+ response.Info.RewardFactionFlags = GetRewardReputationMask();
+ response.Info.PortraitGiver = GetQuestGiverPortrait();
+ response.Info.PortraitGiverMount = GetQuestGiverPortraitMount();
+ response.Info.PortraitTurnIn = GetQuestTurnInPortrait();
+
+ for (uint8 i = 0; i < QUEST_ITEM_DROP_COUNT; ++i)
+ {
+ response.Info.ItemDrop[i] = ItemDrop[i];
+ response.Info.ItemDropQuantity[i] = ItemDropQuantity[i];
+ }
+
+ if (!HasFlag(QUEST_FLAGS_HIDDEN_REWARDS))
+ {
+ for (uint8 i = 0; i < QUEST_REWARD_ITEM_COUNT; ++i)
+ {
+ response.Info.RewardItems[i] = RewardItemId[i];
+ response.Info.RewardAmount[i] = RewardItemCount[i];
+ }
+ for (uint8 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i)
+ {
+ response.Info.UnfilteredChoiceItems[i].ItemID = RewardChoiceItemId[i];
+ response.Info.UnfilteredChoiceItems[i].Quantity = RewardChoiceItemCount[i];
+ }
+ }
+
+ for (uint8 i = 0; i < QUEST_REWARD_REPUTATIONS_COUNT; ++i)
+ {
+ response.Info.RewardFactionID[i] = RewardFactionId[i];
+ response.Info.RewardFactionValue[i] = RewardFactionValue[i];
+ response.Info.RewardFactionOverride[i] = RewardFactionOverride[i];
+ response.Info.RewardFactionCapIn[i] = RewardFactionCapIn[i];
+ }
+
+ response.Info.POIContinent = GetPOIContinent();
+ response.Info.POIx = GetPOIx();
+ response.Info.POIy = GetPOIy();
+ response.Info.POIPriority = GetPOIPriority();
+
+ response.Info.AllowableRaces = GetAllowableRaces();
+ response.Info.TreasurePickerID = GetTreasurePickerId();
+ response.Info.Expansion = GetExpansion();
+
+ for (QuestObjective const& questObjective : GetObjectives())
+ {
+ response.Info.Objectives.push_back(questObjective);
+
+ if (loc != LOCALE_enUS)
+ {
+ if (QuestObjectivesLocale const* questObjectivesLocale = sObjectMgr->GetQuestObjectivesLocale(questObjective.ID))
+ ObjectMgr::GetLocaleString(questObjectivesLocale->Description, loc, response.Info.Objectives.back().Description);
+ }
+ }
+
+ for (uint32 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i)
+ {
+ response.Info.RewardCurrencyID[i] = RewardCurrencyId[i];
+ response.Info.RewardCurrencyQty[i] = RewardCurrencyCount[i];
+ }
+
+ response.Info.AcceptedSoundKitID = GetSoundAccept();
+ response.Info.CompleteSoundKitID = GetSoundTurnIn();
+ response.Info.AreaGroupID = GetAreaGroupID();
+ response.Info.TimeAllowed = GetLimitTime();
+
+ return *response.Write();
+}
+
+void Quest::AddQuestLevelToTitle(std::string& title, int32 level)
+{
+ // Adds the quest level to the front of the quest title
+ // example: [13] Westfall Stew
+
+ std::stringstream questTitlePretty;
+ questTitlePretty << "[" << level << "] " << title;
+ title = questTitlePretty.str();
+}