diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-09-25 14:48:18 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-09-25 14:48:18 +0200 |
| commit | dd64a3cd36d7c8db67f4075c5a8c1eb01898d1ed (patch) | |
| tree | 0f2205a57b34ba4e92d6a74147b04d9959ac7e0e /src/server/game | |
| parent | 0e994f00138d8204308c737eaa5d0f5745e585b6 (diff) | |
Core/Config: Add config values for all power regen rates
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 26 | ||||
| -rw-r--r-- | src/server/game/World/World.cpp | 55 | ||||
| -rw-r--r-- | src/server/game/World/World.h | 14 |
3 files changed, 65 insertions, 30 deletions
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, |
