From e9a4e4cfa45d24a6395e663dc069b51a88338206 Mon Sep 17 00:00:00 2001 From: ShinDarth Date: Thu, 15 Oct 2015 23:08:00 +0200 Subject: Core/Misc split Rate.XP.Kill and Rate.XP.BattlegroundKill settings (cherry picked from commit 2185165e8481ebcfd28895e5066991c89baaec14) --- src/server/game/Entities/Player/Player.cpp | 2 +- src/server/game/Miscellaneous/Formulas.h | 4 ++-- src/server/game/World/World.cpp | 1 + src/server/game/World/World.h | 1 + src/server/worldserver/worldserver.conf.dist | 13 +++++++++++-- 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) @@ -1914,6 +1914,14 @@ Rate.XP.Kill = 1 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 @@ -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) -- cgit v1.2.3