diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 15 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 |
2 files changed, 9 insertions, 8 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index d79ba16d24c..0a5a21aaab9 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -15179,6 +15179,10 @@ bool Player::CanCompleteRepeatableQuest(Quest const* quest) bool Player::CanRewardQuest(Quest const* quest, bool msg) const { + // quest is disabled + if (DisableMgr::IsDisabledFor(DISABLE_TYPE_QUEST, quest->GetQuestId(), this)) + return false; + // not auto complete quest and not completed quest (only cheating case, then ignore without message) if (!quest->IsDFQuest() && !quest->IsAutoComplete() && GetQuestStatus(quest->GetQuestId()) != QUEST_STATUS_COMPLETE) return false; @@ -15187,6 +15191,10 @@ bool Player::CanRewardQuest(Quest const* quest, bool msg) const if (!SatisfyQuestDay(quest, true) || !SatisfyQuestWeek(quest, true) || !SatisfyQuestMonth(quest, true) || !SatisfyQuestSeasonal(quest, true)) return false; + // player no longer satisfies the quest's requirements (skill level etc.) + if (!SatisfyQuestLevel(quest, true) || !SatisfyQuestSkill(quest, true) || !SatisfyQuestReputation(quest, true)) + return false; + // rewarded and not repeatable quest (only cheating case, then ignore without message) if (GetQuestRewardStatus(quest->GetQuestId())) return false; @@ -24288,13 +24296,6 @@ bool Player::ModifyMoney(int64 amount, bool sendError /*= true*/) return true; } -bool Player::HasEnoughMoney(int64 amount) const -{ - if (amount > 0) - return (GetMoney() >= (uint64) amount); - return true; -} - void Player::SetMoney(uint64 value) { MoneyChanged(value); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 2b228b45421..b33859d96ea 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1692,7 +1692,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> uint64 GetMoney() const { return m_activePlayerData->Coinage; } bool ModifyMoney(int64 amount, bool sendError = true); bool HasEnoughMoney(uint64 amount) const { return (GetMoney() >= amount); } - bool HasEnoughMoney(int64 amount) const; + bool HasEnoughMoney(int64 amount) const{ return (amount < 0) || HasEnoughMoney(uint64(amount)); } void SetMoney(uint64 value); RewardedQuestSet const& getRewardedQuests() const { return m_RewardedQuests; } |