aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Quests/QuestDef.cpp8
-rw-r--r--src/server/game/World/World.cpp12
-rw-r--r--src/server/game/World/World.h2
-rw-r--r--src/server/worldserver/worldserver.conf.dist9
4 files changed, 29 insertions, 2 deletions
diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp
index a26b14af4b7..eb9b1ad45b9 100644
--- a/src/server/game/Quests/QuestDef.cpp
+++ b/src/server/game/Quests/QuestDef.cpp
@@ -197,18 +197,22 @@ uint32 Quest::XPValue(Player* player) const
int32 Quest::GetRewOrReqMoney() const
{
+ // RequiredMoney: the amount is the negative copper sum.
if (RewardOrRequiredMoney <= 0)
return RewardOrRequiredMoney;
- return int32(RewardOrRequiredMoney * sWorld->getRate(RATE_DROP_MONEY));
+ // RewardMoney: the positive amount
+ return int32(RewardOrRequiredMoney * sWorld->getRate(RATE_MONEY_QUEST));
}
uint32 Quest::GetRewMoneyMaxLevel() const
{
+ // If Quest has flag to not give money on max level, it's 0
if (HasFlag(QUEST_FLAGS_NO_MONEY_FROM_XP))
return 0;
- return RewardMoneyMaxLevel;
+ // Else, return the rewarded copper sum modified by the rate
+ return uint32(RewardMoneyMaxLevel * sWorld->getRate(RATE_MONEY_MAX_LEVEL_QUEST));
}
bool Quest::IsAutoAccept() const
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 3f94cfbf56f..4de9cb34df6 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -557,6 +557,18 @@ void World::LoadConfigSettings(bool reload)
TC_LOG_ERROR("server.loading", "DurabilityLossChance.Block (%f) must be >=0. Using 0.0 instead.", rate_values[RATE_DURABILITY_LOSS_BLOCK]);
rate_values[RATE_DURABILITY_LOSS_BLOCK] = 0.0f;
}
+ rate_values[RATE_MONEY_QUEST] = sConfigMgr->GetFloatDefault("Rate.Quest.Money.Reward", 1.0f);
+ if (rate_values[RATE_MONEY_QUEST] < 0.0f)
+ {
+ TC_LOG_ERROR("server.loading", "Rate.Quest.Money.Reward (%f) must be >=0. Using 0 instead.", rate_values[RATE_MONEY_QUEST]);
+ rate_values[RATE_MONEY_QUEST] = 0.0f;
+ }
+ rate_values[RATE_MONEY_MAX_LEVEL_QUEST] = sConfigMgr->GetFloatDefault("Rate.Quest.Money.Max.Level.Reward", 1.0f);
+ if (rate_values[RATE_MONEY_MAX_LEVEL_QUEST] < 0.0f)
+ {
+ TC_LOG_ERROR("server.loading", "Rate.Quest.Money.Max.Level.Reward (%f) must be >=0. Using 0 instead.", rate_values[RATE_MONEY_MAX_LEVEL_QUEST]);
+ rate_values[RATE_MONEY_MAX_LEVEL_QUEST] = 0.0f;
+ }
///- Read other configuration items from the config file
m_bool_configs[CONFIG_DURABILITY_LOSS_IN_PVP] = sConfigMgr->GetBoolDefault("DurabilityLoss.InPvP", false);
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 0711ead6187..cb87e1739c2 100644
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -399,6 +399,8 @@ enum Rates
RATE_DURABILITY_LOSS_ABSORB,
RATE_DURABILITY_LOSS_BLOCK,
RATE_MOVESPEED,
+ RATE_MONEY_QUEST,
+ RATE_MONEY_MAX_LEVEL_QUEST,
MAX_RATES
};
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index dd8f213b6df..d98a061b9f3 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -1741,6 +1741,15 @@ Rate.XP.Quest = 1
Rate.XP.Explore = 1
#
+# Rate.Quest.Money.Reward
+# Rate.Quest.Money.Max.Level.Reward
+# Description: Multiplier for money quest rewards. Can not be below 0.
+# Default: 1
+
+Rate.Quest.Money.Reward = 1
+Rate.Quest.Money.Max.Level.Reward = 1
+
+#
# Rate.RepairCost
# Description: Repair cost rate.
# Default: 1