aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorKinzcool <kinzzcool@hotmail.com>2015-07-01 17:57:09 -0400
committerKinzcool <kinzzcool@hotmail.com>2015-07-01 17:57:09 -0400
commit4bbbd9540a25845edb0d424199bab196b5e6bea1 (patch)
tree39aa0b8c6c76390a70e5e513131cb4a777ce32e5 /src/server/game/Entities
parent97b693343586be8ec01178b6b0a02f52bee4d723 (diff)
Core/Quests: Calculate the RewardMoney value with QuestMoneyReward.dbc and defined an unknown field
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Creature/GossipDef.cpp6
-rw-r--r--src/server/game/Entities/Player/Player.cpp11
-rw-r--r--src/server/game/Entities/Player/Player.h1
3 files changed, 12 insertions, 6 deletions
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp
index faa458d45dc..0fd001de69f 100644
--- a/src/server/game/Entities/Creature/GossipDef.cpp
+++ b/src/server/game/Entities/Creature/GossipDef.cpp
@@ -506,12 +506,12 @@ void PlayerMenu::SendQuestQueryResponse(Quest const* quest) const
packet.Info.RewardNextQuest = quest->GetNextQuestInChain();
packet.Info.RewardXPDifficulty = quest->GetXPDifficulty();
packet.Info.RewardXPMultiplier = quest->GetXPMultiplier();
- packet.Info.Float13 = quest->Float13; // Unk
- if (quest->HasFlag(QUEST_FLAGS_HIDDEN_REWARDS))
- packet.Info.RewardMoney = quest->RewardMoney;
+ if (!quest->HasFlag(QUEST_FLAGS_HIDDEN_REWARDS))
+ packet.Info.RewardMoney = quest->RewardMoney < 0 ? quest->RewardMoney : _session->GetPlayer()->GetQuestMoneyReward(quest);
packet.Info.RewardMoneyDifficulty = quest->GetRewMoneyDifficulty();
+ packet.Info.RewardMoneyMultiplier = quest->GetMoneyMultiplier();
packet.Info.RewardBonusMoney = quest->GetRewMoneyMaxLevel();
packet.Info.RewardDisplaySpell = quest->GetRewDisplaySpell();
packet.Info.RewardSpell = quest->GetRewSpell();
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 7e21d9784fd..c167e416090 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -14656,6 +14656,11 @@ void Player::IncompleteQuest(uint32 quest_id)
}
}
+uint32 Player::GetQuestMoneyReward(Quest const* quest)
+{
+ return quest->MoneyValue(getLevel()) * sWorld->getRate(RATE_MONEY_QUEST);
+}
+
uint32 Player::GetQuestXPReward(Quest const* quest)
{
bool rewarded = (m_RewardedQuests.find(quest->GetQuestId()) != m_RewardedQuests.end());
@@ -14791,7 +14796,7 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
else
moneyRew = int32(quest->GetRewMoneyMaxLevel() * sWorld->getRate(RATE_DROP_MONEY));
- moneyRew += quest->GetRewMoney();
+ moneyRew += GetQuestMoneyReward(quest);
if (moneyRew)
{
@@ -16340,12 +16345,12 @@ void Player::SendQuestReward(Quest const* quest, uint32 XP)
if (getLevel() < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
{
xp = XP;
- moneyReward = quest->GetRewMoney();
+ moneyReward = GetQuestMoneyReward(quest);
}
else // At max level, increase gold reward
{
xp = 0;
- moneyReward = uint32(quest->GetRewMoney() + int32(quest->GetRewMoneyMaxLevel() * sWorld->getRate(RATE_DROP_MONEY)));
+ moneyReward = uint32(GetQuestMoneyReward(quest) + int32(quest->GetRewMoneyMaxLevel() * sWorld->getRate(RATE_DROP_MONEY)));
}
WorldPackets::Quest::QuestGiverQuestComplete packet;
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 203682fc84b..2e4a50251a7 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1647,6 +1647,7 @@ class Player : public Unit, public GridObject<Player>
void AddQuest(Quest const* quest, Object* questGiver);
void CompleteQuest(uint32 quest_id);
void IncompleteQuest(uint32 quest_id);
+ uint32 GetQuestMoneyReward(Quest const* quest);
uint32 GetQuestXPReward(Quest const* quest);
void RewardQuest(Quest const* quest, uint32 reward, Object* questGiver, bool announce = true);
void FailQuest(uint32 quest_id);