From 06c458e748f88b29383971462493eb642b7c1b94 Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Sat, 10 Dec 2022 20:53:10 -0700 Subject: [PATCH] feat(Core): EnableLowLevelRegenBoost config option (#13035) Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> --- src/server/apps/worldserver/worldserver.conf.dist | 9 +++++++++ src/server/game/Entities/Player/Player.cpp | 4 ++-- src/server/game/World/IWorld.h | 1 + src/server/game/World/World.cpp | 2 ++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index 53b86d5c7..74889c9e6 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -2483,6 +2483,15 @@ Rate.Pet.LevelXP = 0.05 WaterBreath.Timer = 180000 +# +# EnableLowLevelRegenBoost +# Description: Greatly increase Health and Mana regen rates for players under level 15 (Added in patch 3.3) +# Default: 1 - Enabled +# 0 - Disabled +# + +EnableLowLevelRegenBoost = 1 + # # SkillGain.Crafting # SkillGain.Defense diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 4057ed781..d2ef52e30 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1850,7 +1850,7 @@ void Player::Regenerate(Powers power) bool recentCast = IsUnderLastManaUseEffect(); float ManaIncreaseRate = sWorld->getRate(RATE_POWER_MANA); - if (getLevel() < 15) + if (sWorld->getBoolConfig(CONFIG_LOW_LEVEL_REGEN_BOOST) && getLevel() < 15) ManaIncreaseRate = sWorld->getRate(RATE_POWER_MANA) * (2.066f - (getLevel() * 0.066f)); if (recentCast) // Trinity Updates Mana in intervals of 2s, which is correct @@ -1960,7 +1960,7 @@ void Player::RegenerateHealth() float HealthIncreaseRate = sWorld->getRate(RATE_HEALTH); - if (getLevel() < 15) + if (sWorld->getBoolConfig(CONFIG_LOW_LEVEL_REGEN_BOOST) && getLevel() < 15) HealthIncreaseRate = sWorld->getRate(RATE_HEALTH) * (2.066f - (getLevel() * 0.066f)); float addvalue = 0.0f; diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index 2fca26a2a..e1017ebf3 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -176,6 +176,7 @@ enum WorldBoolConfigs CONFIG_LEAVE_GROUP_ON_LOGOUT, CONFIG_VMAP_BLIZZLIKE_PVP_LOS, CONFIG_OBJECT_SPARKLES, + CONFIG_LOW_LEVEL_REGEN_BOOST, CONFIG_OBJECT_QUEST_MARKERS, BOOL_CONFIG_VALUE_COUNT }; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index cf9efa628..357f4da28 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -942,6 +942,8 @@ void World::LoadConfigSettings(bool reload) m_bool_configs[CONFIG_OBJECT_SPARKLES] = sConfigMgr->GetOption("Visibility.ObjectSparkles", true); + m_bool_configs[CONFIG_LOW_LEVEL_REGEN_BOOST] = sConfigMgr->GetOption("EnableLowLevelRegenBoost", true); + m_bool_configs[CONFIG_OBJECT_QUEST_MARKERS] = sConfigMgr->GetOption("Visibility.ObjectQuestMarkers", true); m_int_configs[CONFIG_MAIL_DELIVERY_DELAY] = sConfigMgr->GetOption("MailDeliveryDelay", HOUR);