aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-09-25 14:48:18 +0200
committerShauren <shauren.trinity@gmail.com>2016-09-25 14:48:18 +0200
commitdd64a3cd36d7c8db67f4075c5a8c1eb01898d1ed (patch)
tree0f2205a57b34ba4e92d6a74147b04d9959ac7e0e /src/server/game
parent0e994f00138d8204308c737eaa5d0f5745e585b6 (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.cpp26
-rw-r--r--src/server/game/World/World.cpp55
-rw-r--r--src/server/game/World/World.h14
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,