aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Quests/QuestDef.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Quests/QuestDef.cpp')
-rw-r--r--src/server/game/Quests/QuestDef.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp
index 1e0d30a6fe8..2d0040ae3c6 100644
--- a/src/server/game/Quests/QuestDef.cpp
+++ b/src/server/game/Quests/QuestDef.cpp
@@ -235,6 +235,55 @@ uint32 Quest::GetXPReward(Player const* player) const
return true;
}
+void Quest::BuildQuestRewards(WorldPackets::Quest::QuestRewards& rewards, Player* player) const
+{
+ if (!HasFlag(QUEST_FLAGS_HIDDEN_REWARDS))
+ {
+ for (uint32 i = 0; i < QUEST_REWARD_CHOICES_COUNT; ++i)
+ {
+ if (!RewardChoiceItemId[i])
+ continue;
+
+ uint32 displayID = 0;
+ if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(RewardChoiceItemId[i]))
+ displayID = itemTemplate->DisplayInfoID;
+
+ rewards.UnfilteredChoiceItems.emplace_back(RewardChoiceItemId[i], RewardChoiceItemCount[i], displayID);
+ }
+
+ for (uint32 i = 0; i < QUEST_REWARDS_COUNT; ++i)
+ {
+ if (!RewardItemId[i])
+ continue;
+
+ uint32 displayID = 0;
+ if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(RewardItemId[i]))
+ displayID = itemTemplate->DisplayInfoID;
+
+ rewards.UnfilteredChoiceItems.emplace_back(RewardItemId[i], RewardItemIdCount[i], displayID);
+ }
+
+ rewards.RewardMoney = GetRewOrReqMoney(player);
+ rewards.RewardXPDifficulty = GetXPReward(player) * sWorld->getRate(RATE_XP_QUEST);
+ }
+
+ rewards.RewardHonor = 10 * CalculateHonorGain(player->GetQuestLevel(this)); // rewarded honor points. Multiply with 10 to satisfy client
+ rewards.RewardDisplaySpell = GetRewSpell(); // reward spell, this spell will display (icon) (cast if RewSpellCast == 0)
+ rewards.RewardSpell = GetRewSpellCast();
+ rewards.RewardTitleId = GetCharTitleId();
+ rewards.RewardTalents = GetBonusTalents();
+ rewards.RewardArenaPoints = GetRewArenaPoints();
+
+ for (uint32 i = 0; i < QUEST_REPUTATIONS_COUNT; ++i)
+ rewards.RewardFactionID[i] = RewardFactionId[i];
+
+ for (uint32 i = 0; i < QUEST_REPUTATIONS_COUNT; ++i)
+ rewards.RewardFactionValue[i] = RewardFactionValueId[i];
+
+ for (uint32 i = 0; i < QUEST_REPUTATIONS_COUNT; ++i)
+ rewards.RewardFactionValueOverride[i] = RewardFactionValueIdOverride[i];
+}
+
int32 Quest::GetRewOrReqMoney(Player const* player) const
{
// RequiredMoney: the amount is the negative copper sum.