aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Quests
diff options
context:
space:
mode:
authorWyrserth <wyrserth@protonmail.com>2019-07-03 17:42:23 +0200
committerGitHub <noreply@github.com>2019-07-03 17:42:23 +0200
commit670085d8c099606136a904c8a67b8df9c0dd9f1e (patch)
treebcee86b9c8eca0bb74efaf79b8ec1939fffee38c /src/server/game/Quests
parentc63bbb97b4850abfd60917bd9b668f276f9ecedb (diff)
Core/Quest: fix money reward for quests turned in at level cap. (#23495)
Diffstat (limited to 'src/server/game/Quests')
-rw-r--r--src/server/game/Quests/QuestDef.cpp11
-rw-r--r--src/server/game/Quests/QuestDef.h4
2 files changed, 9 insertions, 6 deletions
diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp
index 8ba3eda1f65..1157ba7d24f 100644
--- a/src/server/game/Quests/QuestDef.cpp
+++ b/src/server/game/Quests/QuestDef.cpp
@@ -199,7 +199,7 @@ void Quest::LoadQuestMailSender(Field* fields)
_rewardMailSenderEntry = fields[1].GetUInt32();
}
-uint32 Quest::XPValue(Player* player) const
+uint32 Quest::GetXPReward(Player const* player) const
{
if (player)
{
@@ -227,14 +227,17 @@ uint32 Quest::XPValue(Player* player) const
return 0;
}
-int32 Quest::GetRewOrReqMoney() const
+int32 Quest::GetRewOrReqMoney(Player const* player) const
{
// RequiredMoney: the amount is the negative copper sum.
- if (_rewardMoney <= 0)
+ if (_rewardMoney < 0)
return _rewardMoney;
// RewardMoney: the positive amount
- return int32(_rewardMoney * sWorld->getRate(RATE_MONEY_QUEST));
+ if (!player || player->GetLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
+ return int32(_rewardMoney * sWorld->getRate(RATE_MONEY_QUEST));
+ else // At level cap, the money reward is the maximum amount between normal and bonus money reward
+ return std::max(int32(GetRewMoneyMaxLevel()), int32(_rewardMoney * sWorld->getRate(RATE_MONEY_QUEST)));
}
uint32 Quest::GetRewMoneyMaxLevel() const
diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h
index 0d2ecb40975..d3989b7ec45 100644
--- a/src/server/game/Quests/QuestDef.h
+++ b/src/server/game/Quests/QuestDef.h
@@ -207,7 +207,7 @@ class TC_GAME_API Quest
void LoadQuestTemplateAddon(Field* fields);
void LoadQuestMailSender(Field* fields);
- uint32 XPValue(Player* player) const;
+ uint32 GetXPReward(Player const* player) const;
bool HasFlag(uint32 flag) const { return (_flags & flag) != 0; }
void SetFlag(uint32 flag) { _flags |= flag; }
@@ -257,7 +257,7 @@ class TC_GAME_API Quest
std::string const& GetRequestItemsText() const { return _requestItemsText; }
std::string const& GetAreaDescription() const { return _areaDescription; }
std::string const& GetCompletedText() const { return _completedText; }
- int32 GetRewOrReqMoney() const;
+ int32 GetRewOrReqMoney(Player const* player = nullptr) const;
uint32 GetRewHonorAddition() const { return _rewardHonor; }
float GetRewHonorMultiplier() const { return _rewardKillHonor; }
uint32 GetRewMoneyMaxLevel() const; // use in XP calculation at client