diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index f39c5925a..a0a06f1c4 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -2423,8 +2423,17 @@ Rate.InstanceResetTime = 1 # The lower the rate the less experience is required. # Default: 0.05 # + Rate.Pet.LevelXP = 0.05 +# +# WaterBreath.Timer +# Description: The timer for player's breath underwater in milliseconds +# Default: 180000 (3 minutes) +# + +WaterBreath.Timer = 180000 + # # SkillGain.Crafting # SkillGain.Defense diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index f8f73de79..2c8fe1dfb 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -813,7 +813,7 @@ int32 Player::getMaxTimer(MirrorTimerType timer) { if (!IsAlive() || HasAuraType(SPELL_AURA_WATER_BREATHING) || GetSession()->GetSecurity() >= AccountTypes(sWorld->getIntConfig(CONFIG_DISABLE_BREATHING))) return DISABLED_MIRROR_TIMER; - int32 UnderWaterTime = 3 * MINUTE * IN_MILLISECONDS; + int32 UnderWaterTime = sWorld->getIntConfig(CONFIG_WATER_BREATH_TIMER); AuraEffectList const& mModWaterBreathing = GetAuraEffectsByType(SPELL_AURA_MOD_WATER_BREATHING); for (AuraEffectList::const_iterator i = mModWaterBreathing.begin(); i != mModWaterBreathing.end(); ++i) AddPct(UnderWaterTime, (*i)->GetAmount()); diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index 4a8ae02c3..0544a463d 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -401,6 +401,7 @@ enum WorldIntConfigs CONFIG_LFG_MAX_KICK_COUNT, CONFIG_LFG_KICK_PREVENTION_TIMER, CONFIG_CHANGE_FACTION_MAX_MONEY, + CONFIG_WATER_BREATH_TIMER, INT_CONFIG_VALUE_COUNT }; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 24c35fa74..072fc251d 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1184,6 +1184,13 @@ void World::LoadConfigSettings(bool reload) m_bool_configs[CONFIG_OFFHAND_CHECK_AT_SPELL_UNLEARN] = sConfigMgr->GetOption("OffhandCheckAtSpellUnlearn", true); m_int_configs[CONFIG_CREATURE_STOP_FOR_PLAYER] = sConfigMgr->GetOption("Creature.MovingStopTimeForPlayer", 3 * MINUTE * IN_MILLISECONDS); + m_int_configs[CONFIG_WATER_BREATH_TIMER] = sConfigMgr->GetOption("WaterBreath.Timer", 180000); + if (m_int_configs[CONFIG_WATER_BREATH_TIMER] <= 0) + { + LOG_ERROR("server.loading", "WaterBreath.Timer ({}) must be > 0. Using 180000 instead.", m_int_configs[CONFIG_WATER_BREATH_TIMER]); + m_int_configs[CONFIG_WATER_BREATH_TIMER] = 180000; + } + if (int32 clientCacheId = sConfigMgr->GetOption("ClientCacheVersion", 0)) { // overwrite DB/old value