diff options
Diffstat (limited to 'src/server/game')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/Formulas.h | 4 | ||||
-rw-r--r-- | src/server/game/World/World.cpp | 1 | ||||
-rw-r--r-- | src/server/game/World/World.h | 1 |
4 files changed, 5 insertions, 3 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, |