diff options
author | funjoker <torti-esser@web.de> | 2019-07-27 02:52:13 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2019-08-17 20:04:14 +0200 |
commit | b4d30bb92cbfc8411d8d91b0f4f2981f2cecc148 (patch) | |
tree | e799515c3341aae73e47f080a71c39fcb371e905 /src/server/game/Quests/QuestDef.cpp | |
parent | 4380fe2751869e7a011d51ee9449e8723b00067f (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.cpp | 163 |
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(); +} |