mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-21 07:22:02 -04:00
Core/Auras: implement Aura 379 (SPELL_AURA_MOD_MANA_REGEN_PCT) (#20851)
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user