diff options
| author | DoctorKraft <DoctorKraft@users.noreply.github.com> | 2018-04-08 23:51:01 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2018-04-09 00:51:01 +0300 |
| commit | 6e6482bbcc192467f1cd4d269c9b77c977acd843 (patch) | |
| tree | 386ec03534500cbd7fa18ff8f2d8d88e262cd6a1 /src/server/game/Entities/Unit | |
| parent | f52ffc63f6c180ad3058a15c25acd76795050a41 (diff) | |
Core/Auras: implement Aura 379 (SPELL_AURA_MOD_MANA_REGEN_PCT) (#20851)
Diffstat (limited to 'src/server/game/Entities/Unit')
| -rw-r--r-- | src/server/game/Entities/Unit/StatSystem.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index 3c93d8404a0..0f1733bc72c 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -23,6 +23,7 @@ #include "Pet.h" #include "Creature.h" #include "GameTables.h" +#include "ObjectMgr.h" #include "SharedDefines.h" #include "SpellAuras.h" #include "SpellAuraEffects.h" @@ -745,19 +746,21 @@ void Player::UpdateManaRegen() if (manaIndex == MAX_POWERS) return; - // Mana regen from spirit - float spirit_regen = 0.0f; - // Apply PCT bonus from SPELL_AURA_MOD_POWER_REGEN_PERCENT aura on spirit base regen - spirit_regen *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_POWER_REGEN_PERCENT, POWER_MANA); + // Get base of Mana Pool in sBaseMPGameTable + uint32 basemana = 0; + sObjectMgr->GetPlayerClassLevelInfo(getClass(), getLevel(), basemana); + float base_regen = basemana / 100.f; - // CombatRegen = 5% of Base Mana - float base_regen = GetCreateMana() * 0.02f + GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_POWER_REGEN, POWER_MANA) / 5.0f; + base_regen += GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_POWER_REGEN, POWER_MANA); - // Set regen rate in cast state apply only on spirit based regen - int32 modManaRegenInterrupt = GetTotalAuraModifier(SPELL_AURA_MOD_MANA_REGEN_INTERRUPT); + // Apply PCT bonus from SPELL_AURA_MOD_POWER_REGEN_PERCENT + base_regen *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_POWER_REGEN_PERCENT, POWER_MANA); - SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER + manaIndex, base_regen + CalculatePct(spirit_regen, modManaRegenInterrupt)); - SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER + manaIndex, 0.001f + spirit_regen + base_regen); + // Apply PCT bonus from SPELL_AURA_MOD_MANA_REGEN_PCT + base_regen *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_MANA_REGEN_PCT, POWER_MANA); + + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER + manaIndex, base_regen); + SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER + manaIndex, base_regen); } void Player::UpdateAllRunesRegen() |
