feat(Core/Config): Configurable Water Breath Timer

This commit is contained in:
郑佩茹
2022-06-03 12:34:31 -06:00
parent 4fbec972a8
commit 46e9e82118
4 changed files with 16 additions and 1 deletions

View File

@@ -2425,6 +2425,13 @@ Rate.InstanceResetTime = 1
#
Rate.Pet.LevelXP = 0.05
#
# WaterBreath.Timer
# Description: The timer for player's breath underwater in minutes
# Default: 3
#
WaterBreath.Timer = 3
#
# SkillGain.Crafting
# SkillGain.Defense

View File

@@ -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 = static_cast<int32>(sWorld->getFloatConfig(CONFIG_WATER_BREATH_TIMER) * MINUTE * IN_MILLISECONDS);
AuraEffectList const& mModWaterBreathing = GetAuraEffectsByType(SPELL_AURA_MOD_WATER_BREATHING);
for (AuraEffectList::const_iterator i = mModWaterBreathing.begin(); i != mModWaterBreathing.end(); ++i)
AddPct(UnderWaterTime, (*i)->GetAmount());

View File

@@ -194,6 +194,7 @@ enum WorldFloatConfigs
CONFIG_ARENA_WIN_RATING_MODIFIER_2,
CONFIG_ARENA_LOSE_RATING_MODIFIER,
CONFIG_ARENA_MATCHMAKER_RATING_MODIFIER,
CONFIG_WATER_BREATH_TIMER,
FLOAT_CONFIG_VALUE_COUNT
};

View File

@@ -1184,6 +1184,13 @@ void World::LoadConfigSettings(bool reload)
m_bool_configs[CONFIG_OFFHAND_CHECK_AT_SPELL_UNLEARN] = sConfigMgr->GetOption<bool>("OffhandCheckAtSpellUnlearn", true);
m_int_configs[CONFIG_CREATURE_STOP_FOR_PLAYER] = sConfigMgr->GetOption<uint32>("Creature.MovingStopTimeForPlayer", 3 * MINUTE * IN_MILLISECONDS);
m_float_configs[CONFIG_WATER_BREATH_TIMER] = sConfigMgr->GetOption<float>("WaterBreath.Timer", 3.0f);
if (m_float_configs[CONFIG_WATER_BREATH_TIMER] <= 0)
{
LOG_ERROR("server.loading", "WaterBreath.Timer ({}) must be > 0. Using 3 instead.", m_float_configs[CONFIG_WATER_BREATH_TIMER]);
m_float_configs[CONFIG_WATER_BREATH_TIMER] = 3;
}
if (int32 clientCacheId = sConfigMgr->GetOption<int32>("ClientCacheVersion", 0))
{
// overwrite DB/old value