aboutsummaryrefslogtreecommitdiff
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
parent0e994f00138d8204308c737eaa5d0f5745e585b6 (diff)
Core/Config: Add config values for all power regen rates
-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
-rw-r--r--src/server/worldserver/worldserver.conf.dist31
4 files changed, 80 insertions, 46 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,
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