diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp index 371777173..38bd656c6 100644 --- a/src/server/game/Battlefield/Battlefield.cpp +++ b/src/server/game/Battlefield/Battlefield.cpp @@ -44,7 +44,7 @@ Battlefield::Battlefield() m_uiKickAfkPlayersTimer = 1000; - m_LastResurectTimer = 30 * IN_MILLISECONDS; + m_LastResurectTimer = RESURRECTION_INTERVAL; m_StartGroupingTimer = 0; m_StartGrouping = false; StalkerGuid = 0; diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index 6db4e6cb7..2494e5521 100644 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -126,7 +126,6 @@ enum BattlegroundReputations enum BattlegroundTimeIntervals { CHECK_PLAYER_POSITION_INVERVAL = 9000, // ms - RESURRECTION_INTERVAL = 30000, // ms //REMIND_INTERVAL = 10000, // ms INVITATION_REMIND_TIME = 20000, // ms INVITE_ACCEPT_WAIT_TIME = 60000, // ms @@ -134,9 +133,11 @@ enum BattlegroundTimeIntervals MAX_OFFLINE_TIME = 300, // secs RESPAWN_ONE_DAY = 86400, // secs RESPAWN_IMMEDIATELY = 0, // secs - BUFF_RESPAWN_TIME = 180, // secs }; +#define RESURRECTION_INTERVAL (sWorld->getIntConfig(CONFIG_BATTLEGROUND_PLAYER_RESPAWN) * IN_MILLISECONDS) +#define BUFF_RESPAWN_TIME (sWorld->getIntConfig(CONFIG_BATTLEGROUND_BUFF_RESPAWN)) + enum BattlegroundStartTimeIntervals { BG_START_DELAY_2M = 120000, // ms (2 minutes) diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index 2d4fe2d80..7a89ee9a6 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -729,7 +729,7 @@ void BattlegroundMgr::SendToBattleground(Player* player, uint32 instanceId, Batt void BattlegroundMgr::SendAreaSpiritHealerQueryOpcode(Player* player, Battleground* bg, uint64 guid) { WorldPacket data(SMSG_AREA_SPIRIT_HEALER_TIME, 12); - uint32 time_ = 30000 - bg->GetLastResurrectTime(); // resurrect every 30 seconds + uint32 time_ = RESURRECTION_INTERVAL - bg->GetLastResurrectTime(); // resurrect every X seconds if (time_ == uint32(-1)) time_ = 0; data << guid << time_; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 0be59d9e1..46b77d102 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1126,7 +1126,19 @@ void World::LoadConfigSettings(bool reload) sLog->outError("Battleground.ReportAFK (%d) must be <10. Using 3 instead.", m_int_configs[CONFIG_BATTLEGROUND_REPORT_AFK]); m_int_configs[CONFIG_BATTLEGROUND_REPORT_AFK] = 3; } - + m_int_configs[CONFIG_BATTLEGROUND_PLAYER_RESPAWN] = sConfigMgr->GetIntDefault("Battleground.PlayerRespawn", 30); + if (m_int_configs[CONFIG_BATTLEGROUND_PLAYER_RESPAWN] < 3) + { + sLog->outError("Battleground.PlayerRespawn (%i) must be >2. Using 30 instead.", m_int_configs[CONFIG_BATTLEGROUND_PLAYER_RESPAWN]); + m_int_configs[CONFIG_BATTLEGROUND_PLAYER_RESPAWN] = 30; + } + m_int_configs[CONFIG_BATTLEGROUND_BUFF_RESPAWN] = sConfigMgr->GetIntDefault("Battleground.BuffRespawn", 180); + if (m_int_configs[CONFIG_BATTLEGROUND_BUFF_RESPAWN] < 1) + { + sLog->outError("Battleground.BuffRespawn (%i) must be >0. Using 180 instead.", m_int_configs[CONFIG_BATTLEGROUND_BUFF_RESPAWN]); + m_int_configs[CONFIG_BATTLEGROUND_BUFF_RESPAWN] = 180; + } + m_int_configs[CONFIG_ARENA_MAX_RATING_DIFFERENCE] = sConfigMgr->GetIntDefault ("Arena.MaxRatingDifference", 150); m_int_configs[CONFIG_ARENA_RATING_DISCARD_TIMER] = sConfigMgr->GetIntDefault ("Arena.RatingDiscardTimer", 10 * MINUTE * IN_MILLISECONDS); m_bool_configs[CONFIG_ARENA_AUTO_DISTRIBUTE_POINTS] = sConfigMgr->GetBoolDefault("Arena.AutoDistributePoints", false); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 6365586d6..db8f832ef 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -298,6 +298,8 @@ enum WorldIntConfigs CONFIG_BATTLEGROUND_REPORT_AFK_TIMER, CONFIG_BATTLEGROUND_REPORT_AFK, CONFIG_BATTLEGROUND_INVITATION_TYPE, + CONFIG_BATTLEGROUND_PLAYER_RESPAWN, + CONFIG_BATTLEGROUND_BUFF_RESPAWN, CONFIG_ARENA_MAX_RATING_DIFFERENCE, CONFIG_ARENA_RATING_DISCARD_TIMER, CONFIG_ARENA_AUTO_DISTRIBUTE_INTERVAL_DAYS, diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index fbd3da2fb..f781607e7 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -2817,6 +2817,20 @@ Battleground.RewardWinnerArenaLast = 0 Battleground.RewardLoserHonorFirst = 5 Battleground.RewardLoserHonorLast = 5 +# +# Battleground.PlayerRespawn +# Description: Battleground player resurrection interval (in seconds). +# Default: 30 + +Battleground.PlayerRespawn = 30 + +# +# Battleground.BuffRespawn +# Description: Battleground buff respawn time (in seconds). +# Default: 180 (Recommended 10+) + +Battleground.BuffRespawn = 180 + # ###################################################################################################