aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Miscellaneous/Formulas.h4
-rw-r--r--src/server/game/World/World.cpp1
-rw-r--r--src/server/game/World/World.h1
-rw-r--r--src/server/worldserver/worldserver.conf.dist13
5 files changed, 16 insertions, 5 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index d8de3e2a78e..b079ce95eab 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -353,7 +353,7 @@ inline void KillRewarder::_InitXP(Player* player)
// * otherwise, not in PvP;
// * not if killer is on vehicle.
if (_isBattleGround || (!_isPvP && !_killer->GetVehicle()))
- _xp = Trinity::XP::Gain(player, _victim);
+ _xp = Trinity::XP::Gain(player, _victim, _isBattleGround);
}
inline void KillRewarder::_RewardHonor(Player* player)
diff --git a/src/server/game/Miscellaneous/Formulas.h b/src/server/game/Miscellaneous/Formulas.h
index 8877cb4dcc4..46a318e18d7 100644
--- a/src/server/game/Miscellaneous/Formulas.h
+++ b/src/server/game/Miscellaneous/Formulas.h
@@ -150,7 +150,7 @@ namespace Trinity
return baseGain;
}
- inline uint32 Gain(Player* player, Unit* u)
+ inline uint32 Gain(Player* player, Unit* u, bool isBattleGround = false)
{
Creature* creature = u->ToCreature();
uint32 gain = 0;
@@ -180,7 +180,7 @@ namespace Trinity
xpMod *= creature->GetCreatureTemplate()->ModExperience;
}
- xpMod *= sWorld->getRate(RATE_XP_KILL);
+ xpMod *= isBattleGround ? sWorld->getRate(RATE_XP_BG_KILL) : sWorld->getRate(RATE_XP_KILL);
gain = uint32(gain * xpMod);
}
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index fefd49f1d92..872f3bb160a 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -498,6 +498,7 @@ void World::LoadConfigSettings(bool reload)
rate_values[RATE_DROP_ITEM_REFERENCED_AMOUNT] = sConfigMgr->GetFloatDefault("Rate.Drop.Item.ReferencedAmount", 1.0f);
rate_values[RATE_DROP_MONEY] = sConfigMgr->GetFloatDefault("Rate.Drop.Money", 1.0f);
rate_values[RATE_XP_KILL] = sConfigMgr->GetFloatDefault("Rate.XP.Kill", 1.0f);
+ rate_values[RATE_XP_BG_KILL] = sConfigMgr->GetFloatDefault("Rate.XP.BattlegroundKill", 1.0f);
rate_values[RATE_XP_QUEST] = sConfigMgr->GetFloatDefault("Rate.XP.Quest", 1.0f);
rate_values[RATE_XP_EXPLORE] = sConfigMgr->GetFloatDefault("Rate.XP.Explore", 1.0f);
rate_values[RATE_REPAIRCOST] = sConfigMgr->GetFloatDefault("Rate.RepairCost", 1.0f);
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 97e498169d3..f7b61452fda 100644
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -394,6 +394,7 @@ enum Rates
RATE_DROP_ITEM_REFERENCED_AMOUNT,
RATE_DROP_MONEY,
RATE_XP_KILL,
+ RATE_XP_BG_KILL,
RATE_XP_QUEST,
RATE_XP_GUILD_MODIFIER,
RATE_XP_EXPLORE,
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index 726ed0b998f..65daf1480ca 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -1906,7 +1906,7 @@ Rate.Drop.Item.ReferencedAmount = 1
# Rate.XP.Quest
# Rate.XP.Explore
# Description: Experience rates.
-# Default: 1 - (Rate.XP.Kill)
+# Default: 1 - (Rate.XP.Kill, affects only kills outside of Battlegrounds)
# 1 - (Rate.XP.Quest)
# 1 - (Rate.XP.Explore)
@@ -1915,6 +1915,14 @@ Rate.XP.Quest = 1
Rate.XP.Explore = 1
#
+# Rate.XP.BattlegroundKill
+# Description: Experience rate for honorable kills in battlegrounds,
+# it works when Battleground.GiveXPForKills = 1
+# Default: 1
+
+Rate.XP.BattlegroundKill = 1
+
+#
# Rate.Quest.Money.Reward
# Rate.Quest.Money.Max.Level.Reward
# Description: Multiplier for money quest rewards. Can not be below 0.
@@ -2265,7 +2273,8 @@ BattleGround.PremadeGroupWaitForMatch = 1800000
#
# Battleground.GiveXPForKills
-# Description: Give experience for honorable kills in battlegrounds.
+# Description: Give experience for honorable kills in battlegrounds,
+# the rate can be changed in the Rate.XP.BattlegroundKill setting.
# Default: 0 - (Disabled)
# 1 - (Enabled)