Core/Auras: implement Aura 379 (SPELL_AURA_MOD_MANA_REGEN_PCT) (#20851)

This commit is contained in:
DoctorKraft
2018-04-08 23:51:01 +02:00
committed by Shauren
parent f52ffc63f6
commit 6e6482bbcc
4 changed files with 29 additions and 12 deletions
+13 -10
View File
@@ -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()