diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index 67db345c7..1e8ffb11c 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -2421,6 +2421,13 @@ Rate.XP.BattlegroundKillEOTS = 1 Rate.XP.BattlegroundKillSOTA = 1 Rate.XP.BattlegroundKillIC = 1 +# +# Rate.XP.BattlegroundBonus +# Description: Experience rate multiplier for battleground objectives (flag captures, base assaults, etc.). +# Default: 1 + +Rate.XP.BattlegroundBonus = 1 + # # Rate.Pet.LevelXP # Description: Modifies the amount of experience required to level up a pet. diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index ff26ef061..1414098af 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6217,7 +6217,7 @@ bool Player::RewardHonor(Unit* uVictim, uint32 groupsize, int32 honor, bool awar // Xinef: Only for BG activities if (!uVictim) { - uint32 xp = uint32(honor * (3 + GetLevel() * 0.30f)); + uint32 xp = static_cast(honor * (3 + GetLevel() * 0.30f) * sWorld->getRate(RATE_XP_BATTLEGROUND_BONUS)); sScriptMgr->OnPlayerGiveXP(this, xp, nullptr, PlayerXPSource::XPSOURCE_BATTLEGROUND); GiveXP(xp, nullptr); } diff --git a/src/server/game/World/WorldConfig.cpp b/src/server/game/World/WorldConfig.cpp index 81a55435b..d0bdfb48c 100644 --- a/src/server/game/World/WorldConfig.cpp +++ b/src/server/game/World/WorldConfig.cpp @@ -64,6 +64,7 @@ void WorldConfig::BuildConfigCache() SetConfigValue(RATE_XP_EXPLORE, "Rate.XP.Explore", 1.0f); SetConfigValue(RATE_XP_PET, "Rate.XP.Pet", 1.0f); SetConfigValue(RATE_XP_PET_NEXT_LEVEL, "Rate.Pet.LevelXP", 0.05f); + SetConfigValue(RATE_XP_BATTLEGROUND_BONUS, "Rate.XP.BattlegroundBonus", 1.0f); SetConfigValue(RATE_REPAIRCOST, "Rate.RepairCost", 1.0f, ConfigValueCache::Reloadable::Yes, [](float const& value) { return value >= 0.0f; }, ">= 0"); SetConfigValue(RATE_SELLVALUE_ITEM_POOR, "Rate.SellValue.Item.Poor", 1.0f); diff --git a/src/server/game/World/WorldConfig.h b/src/server/game/World/WorldConfig.h index dabe2e222..e0408c7fd 100644 --- a/src/server/game/World/WorldConfig.h +++ b/src/server/game/World/WorldConfig.h @@ -437,6 +437,7 @@ enum ServerConfigs RATE_XP_EXPLORE, RATE_XP_PET, RATE_XP_PET_NEXT_LEVEL, + RATE_XP_BATTLEGROUND_BONUS, RATE_REPAIRCOST, RATE_REPUTATION_GAIN, RATE_REPUTATION_GAIN_AB,