diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 40 |
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) { |