aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 80b8306fa5b..50a59c82a24 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -15019,6 +15019,10 @@ bool Player::CanRewardQuest(Quest const* quest, bool msg)
}
}
+ for (uint8 i = 0; i < QUEST_REQUIRED_CURRENCY_COUNT; i++)
+ if (quest->RequiredCurrencyId[i] && !HasCurrency(quest->RequiredCurrencyId[i], quest->RequiredCurrencyCount[i]))
+ return false;
+
// prevent receive reward with low money and GetRewOrReqMoney() < 0
if (quest->GetRewOrReqMoney() < 0 && !HasEnoughMoney(-int64(quest->GetRewOrReqMoney())))
return false;
@@ -15183,6 +15187,10 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
if (quest->RequiredItemId[i])
DestroyItemCount(quest->RequiredItemId[i], quest->RequiredItemCount[i], true);
+ for (uint8 i = 0; i < QUEST_REQUIRED_CURRENCY_COUNT; ++i)
+ if (quest->RequiredCurrencyId[i])
+ ModifyCurrency(quest->RequiredCurrencyId[i], -int32(quest->RequiredCurrencyCount[i]));
+
for (uint8 i = 0; i < QUEST_SOURCE_ITEM_IDS_COUNT; ++i)
{
if (quest->RequiredSourceItemId[i])
@@ -15222,7 +15230,14 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
}
}
}
-
+
+ for (uint8 i = 0; i < QUEST_REWARD_CURRENCY_COUNT; ++i)
+ if (quest->RewardCurrencyId[i])
+ ModifyCurrency(quest->RewardCurrencyId[i], quest->RewardCurrencyCount[i]);
+
+ if (uint32 skill = quest->GetRewardSkillId())
+ UpdateSkill(skill, quest->GetRewardSkillPoints());
+
RewardReputation(quest);
uint16 log_slot = FindQuestSlot(quest_id);