aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWeyrath <weyrath@zoho.eu>2017-07-13 17:52:26 +0200
committerShauren <shauren.trinity@gmail.com>2020-08-18 18:53:13 +0200
commit35bf146969db69f596a3247ae490e27131a8e0a3 (patch)
tree95a9a2c48d5d8a5b7a0b682e0735d67d74e113ed /src
parent5f59be31b0dc8b8b58da06fded6ef91dc170e8b6 (diff)
Core/Quests: Fixed order of RewardChoiceItems and reputation reward. (#19904)
(cherry picked from commit 8b2bd9a5f204fe02c1110d5e851647ee96302880)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp40
1 files changed, 20 insertions, 20 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index b01e53a2c3e..5c50e686bb3 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -15676,6 +15676,24 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
RemoveTimedQuest(quest_id);
+ if (quest->GetRewItemsCount() > 0)
+ {
+ for (uint32 i = 0; i < quest->GetRewItemsCount(); ++i)
+ {
+ if (uint32 itemId = quest->RewardItemId[i])
+ {
+ ItemPosCountVec dest;
+ if (CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, quest->RewardItemCount[i]) == EQUIP_ERR_OK)
+ {
+ Item* item = StoreNewItem(dest, itemId, true, GenerateItemRandomBonusListId(itemId));
+ SendNewItem(item, quest->RewardItemCount[i], true, false);
+ }
+ else if (quest->IsDFQuest())
+ SendItemRetrievalMail(itemId, quest->RewardItemCount[i], ItemContext::Quest_Reward);
+ }
+ }
+ }
+
ItemTemplate const* rewardProto = sObjectMgr->GetItemTemplate(reward);
if (rewardProto && quest->GetRewChoiceItemsCount())
{
@@ -15697,24 +15715,6 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
if (rewardProto && quest->GetQuestPackageID())
RewardQuestPackage(quest->GetQuestPackageID(), reward);
- if (quest->GetRewItemsCount() > 0)
- {
- for (uint32 i = 0; i < quest->GetRewItemsCount(); ++i)
- {
- if (uint32 itemId = quest->RewardItemId[i])
- {
- ItemPosCountVec dest;
- if (CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, quest->RewardItemCount[i]) == EQUIP_ERR_OK)
- {
- Item* item = StoreNewItem(dest, itemId, true, GenerateItemRandomBonusListId(itemId));
- SendNewItem(item, quest->RewardItemCount[i], true, false);
- }
- else if (quest->IsDFQuest())
- SendItemRetrievalMail(itemId, quest->RewardItemCount[i], ItemContext::Quest_Reward);
- }
- }
- }
-
for (uint8 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i)
if (quest->RewardCurrencyId[i])
ModifyCurrency(quest->RewardCurrencyId[i], quest->RewardCurrencyCount[i]);
@@ -15722,8 +15722,6 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
if (uint32 skill = quest->GetRewardSkillId())
UpdateSkillPro(skill, 1000, quest->GetRewardSkillPoints());
- RewardReputation(quest);
-
uint16 log_slot = FindQuestSlot(quest_id);
if (log_slot < MAX_QUEST_LOG_SIZE)
SetQuestSlot(log_slot, 0);
@@ -15791,6 +15789,8 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
SendQuestReward(quest, questGiver ? questGiver->ToCreature() : nullptr, XP, !announce);
+ RewardReputation(quest);
+
// cast spells after mark quest complete (some spells have quest completed state requirements in spell_area data)
if (quest->GetRewSpell() > 0)
{