From dd64a3cd36d7c8db67f4075c5a8c1eb01898d1ed Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 25 Sep 2016 14:48:18 +0200 Subject: Core/Config: Add config values for all power regen rates --- src/server/game/Entities/Player/Player.cpp | 26 +++++++++++++ src/server/game/World/World.cpp | 55 ++++++++++++++-------------- src/server/game/World/World.h | 14 ++++++- src/server/worldserver/worldserver.conf.dist | 31 ++++++++-------- 4 files changed, 80 insertions(+), 46 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b3c4459cda3..202a36b4375 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1861,6 +1861,32 @@ void Player::Regenerate(Powers power) else addvalue = (powerType->RegenerationCombat + GetFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER + powerIndex)) * 0.001f * m_regenTimer; + static Rates const RatesForPower[MAX_POWERS] = + { + RATE_POWER_MANA, + RATE_POWER_RAGE_LOSS, + RATE_POWER_FOCUS, + RATE_POWER_ENERGY, + RATE_POWER_COMBO_POINTS_LOSS, + MAX_RATES, // runes + RATE_POWER_RUNIC_POWER_LOSS, + RATE_POWER_SOUL_SHARDS, + RATE_POWER_LUNAR_POWER, + RATE_POWER_HOLY_POWER, + MAX_RATES, // alternate + RATE_POWER_MAELSTROM, + RATE_POWER_CHI, + RATE_POWER_INSANITY, + MAX_RATES, // burning embers, unused + MAX_RATES, // demonic fury, unused + RATE_POWER_ARCANE_CHARGES, + RATE_POWER_FURY, + RATE_POWER_PAIN, + }; + + if (RatesForPower[power] != MAX_RATES) + addvalue *= sWorld->getRate(RatesForPower[power]); + // Mana regen calculated in Player::UpdateManaRegen() if (power != POWER_MANA) { diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 1dff6d2c713..6772638526b 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -479,37 +479,36 @@ void World::LoadConfigSettings(bool reload) m_int_configs[CONFIG_ENABLE_SINFO_LOGIN] = sConfigMgr->GetIntDefault("Server.LoginInfo", 0); ///- Read all rates from the config file - rate_values[RATE_HEALTH] = sConfigMgr->GetFloatDefault("Rate.Health", 1.0f); - if (rate_values[RATE_HEALTH] < 0) + auto setRegenRate = [this](Rates rate, char const* configKey) { - TC_LOG_ERROR("server.loading", "Rate.Health (%f) must be > 0. Using 1 instead.", rate_values[RATE_HEALTH]); - rate_values[RATE_HEALTH] = 1; - } - rate_values[RATE_POWER_MANA] = sConfigMgr->GetFloatDefault("Rate.Mana", 1.0f); - if (rate_values[RATE_POWER_MANA] < 0) - { - TC_LOG_ERROR("server.loading", "Rate.Mana (%f) must be > 0. Using 1 instead.", rate_values[RATE_POWER_MANA]); - rate_values[RATE_POWER_MANA] = 1; - } - rate_values[RATE_POWER_RAGE_INCOME] = sConfigMgr->GetFloatDefault("Rate.Rage.Income", 1.0f); - rate_values[RATE_POWER_RAGE_LOSS] = sConfigMgr->GetFloatDefault("Rate.Rage.Loss", 1.0f); - if (rate_values[RATE_POWER_RAGE_LOSS] < 0) - { - TC_LOG_ERROR("server.loading", "Rate.Rage.Loss (%f) must be > 0. Using 1 instead.", rate_values[RATE_POWER_RAGE_LOSS]); - rate_values[RATE_POWER_RAGE_LOSS] = 1; - } - rate_values[RATE_POWER_RUNICPOWER_INCOME] = sConfigMgr->GetFloatDefault("Rate.RunicPower.Income", 1.0f); - rate_values[RATE_POWER_RUNICPOWER_LOSS] = sConfigMgr->GetFloatDefault("Rate.RunicPower.Loss", 1.0f); - if (rate_values[RATE_POWER_RUNICPOWER_LOSS] < 0) - { - TC_LOG_ERROR("server.loading", "Rate.RunicPower.Loss (%f) must be > 0. Using 1 instead.", rate_values[RATE_POWER_RUNICPOWER_LOSS]); - rate_values[RATE_POWER_RUNICPOWER_LOSS] = 1; - } - rate_values[RATE_POWER_FOCUS] = sConfigMgr->GetFloatDefault("Rate.Focus", 1.0f); - rate_values[RATE_POWER_ENERGY] = sConfigMgr->GetFloatDefault("Rate.Energy", 1.0f); + rate_values[rate] = sConfigMgr->GetFloatDefault(configKey, 1.0f); + if (rate_values[rate] < 0.0f) + { + TC_LOG_ERROR("server.loading", "%s (%f) must be > 0. Using 1 instead.", configKey, rate_values[rate]); + rate_values[rate] = 1.0f; + } + }; - rate_values[RATE_SKILL_DISCOVERY] = sConfigMgr->GetFloatDefault("Rate.Skill.Discovery", 1.0f); + setRegenRate(RATE_HEALTH, "Rate.Health"); + setRegenRate(RATE_POWER_MANA, "Rate.Mana"); + setRegenRate(RATE_POWER_RAGE_INCOME, "Rate.Rage.Gain"); + setRegenRate(RATE_POWER_RAGE_LOSS, "Rate.Rage.Loss"); + setRegenRate(RATE_POWER_FOCUS, "Rate.Focus"); + setRegenRate(RATE_POWER_ENERGY, "Rate.Energy"); + setRegenRate(RATE_POWER_COMBO_POINTS_LOSS, "Rate.ComboPoints.Loss"); + setRegenRate(RATE_POWER_RUNIC_POWER_INCOME, "Rate.RunicPower.Gain"); + setRegenRate(RATE_POWER_RUNIC_POWER_LOSS, "Rate.RunicPower.Loss"); + setRegenRate(RATE_POWER_SOUL_SHARDS, "Rate.SoulShards.Loss"); + setRegenRate(RATE_POWER_LUNAR_POWER, "Rate.LunarPower.Loss"); + setRegenRate(RATE_POWER_HOLY_POWER, "Rate.HolyPower.Loss"); + setRegenRate(RATE_POWER_MAELSTROM, "Rate.Maelstrom.Loss"); + setRegenRate(RATE_POWER_CHI, "Rate.Chi.Loss"); + setRegenRate(RATE_POWER_INSANITY, "Rate.Insanity.Loss"); + setRegenRate(RATE_POWER_ARCANE_CHARGES, "Rate.ArcaneCharges.Loss"); + setRegenRate(RATE_POWER_FURY, "Rate.Fury.Loss"); + setRegenRate(RATE_POWER_PAIN, "Rate.Pain.Loss"); + rate_values[RATE_SKILL_DISCOVERY] = sConfigMgr->GetFloatDefault("Rate.Skill.Discovery", 1.0f); rate_values[RATE_DROP_ITEM_POOR] = sConfigMgr->GetFloatDefault("Rate.Drop.Item.Poor", 1.0f); rate_values[RATE_DROP_ITEM_NORMAL] = sConfigMgr->GetFloatDefault("Rate.Drop.Item.Normal", 1.0f); rate_values[RATE_DROP_ITEM_UNCOMMON] = sConfigMgr->GetFloatDefault("Rate.Drop.Item.Uncommon", 1.0f); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index bf6eec03cff..31e33711a37 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -415,10 +415,20 @@ enum Rates RATE_POWER_MANA, RATE_POWER_RAGE_INCOME, RATE_POWER_RAGE_LOSS, - RATE_POWER_RUNICPOWER_INCOME, - RATE_POWER_RUNICPOWER_LOSS, RATE_POWER_FOCUS, RATE_POWER_ENERGY, + RATE_POWER_COMBO_POINTS_LOSS, + RATE_POWER_RUNIC_POWER_INCOME, + RATE_POWER_RUNIC_POWER_LOSS, + RATE_POWER_SOUL_SHARDS, + RATE_POWER_LUNAR_POWER, + RATE_POWER_HOLY_POWER, + RATE_POWER_MAELSTROM, + RATE_POWER_CHI, + RATE_POWER_INSANITY, + RATE_POWER_ARCANE_CHARGES, + RATE_POWER_FURY, + RATE_POWER_PAIN, RATE_SKILL_DISCOVERY, RATE_DROP_ITEM_POOR, RATE_DROP_ITEM_NORMAL, diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist index 3f90d848d24..abc7b55eecd 100644 --- a/src/server/worldserver/worldserver.conf.dist +++ b/src/server/worldserver/worldserver.conf.dist @@ -2033,28 +2033,27 @@ Visibility.Notify.Period.InBGArenas = 1000 # Rate.RunicPower.Loss # Rate.Focus # Rate.Energy -# Rate.Loyalty -# Description: Multiplier to configure health, mana, incoming rage, loss of rage, focus -# energy and loyalty increase or decrease. -# Default: 1 - (Rate.Health) -# 1 - (Rate.Mana) -# 1 - (Rate.Rage.Income) -# 1 - (Rate.Rage.Loss) -# 1 - (Rate.RunicPower.Income) -# 1 - (Rate.RunicPower.Loss) -# 1 - (Rate.Focus) -# 1 - (Rate.Energy) -# 1 - (Rate.Loyalty) +# Description: Multiplier to configure health and power increase or decrease. +# Default: 1 for all regen rates Rate.Health = 1 Rate.Mana = 1 -Rate.Rage.Income = 1 +Rate.Rage.Gain = 1 Rate.Rage.Loss = 1 -Rate.RunicPower.Income = 1 -Rate.RunicPower.Loss = 1 Rate.Focus = 1 Rate.Energy = 1 -Rate.Loyalty = 1 +Rate.ComboPoints.Loss = 1 +Rate.RunicPower.Gain = 1 +Rate.RunicPower.Loss = 1 +Rate.SoulShards.Loss = 1 +Rate.LunarPower.Loss = 1 +Rate.HolyPower.Loss = 1 +Rate.Maelstrom.Loss = 1 +Rate.Chi.Loss = 1 +Rate.Insanity.Loss = 1 +Rate.ArcaneCharges.Loss= 1 +Rate.Fury.Loss = 1 +Rate.Pain.Loss = 1 # # Rate.Skill.Discovery -- cgit v1.2.3