aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
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)
{