mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 16:37:01 +00:00
Implement aura use in new version of racial trait 20550. Add unit stat mods for rune/runic powers.
Last change will also prevent corruption armor and holy resistence values.
This commit is contained in:
parent
a2503162fc
commit
e58df484a2
5 changed files with 31 additions and 20 deletions
|
|
@ -332,7 +332,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
|
|||
&Aura::HandleNULL, //279
|
||||
&Aura::HandleNULL, //280 ignore armor?
|
||||
&Aura::HandleNULL, //281 increase honor gain?
|
||||
&Aura::HandleNULL, //282
|
||||
&Aura::HandleAuraIncreaseBaseHealthPercent, //282 SPELL_AURA_INCREASE_BASE_HEALTH_PERCENT
|
||||
&Aura::HandleNULL //283 SPD/heal from AP?
|
||||
};
|
||||
|
||||
|
|
@ -4718,24 +4718,32 @@ void Aura::HandleAuraModIncreaseEnergy(bool apply, bool Real)
|
|||
if(int32(powerType) != m_modifier.m_miscvalue)
|
||||
return;
|
||||
|
||||
m_target->HandleStatModifier(UnitMods(UNIT_MOD_POWER_START + powerType), TOTAL_VALUE, float(m_modifier.m_amount), apply);
|
||||
UnitMods unitMod = UnitMods(UNIT_MOD_POWER_START + powerType);
|
||||
|
||||
m_target->HandleStatModifier(unitMod, TOTAL_VALUE, float(m_modifier.m_amount), apply);
|
||||
}
|
||||
|
||||
void Aura::HandleAuraModIncreaseEnergyPercent(bool apply, bool Real)
|
||||
void Aura::HandleAuraModIncreaseEnergyPercent(bool apply, bool /*Real*/)
|
||||
{
|
||||
Powers powerType = m_target->getPowerType();
|
||||
if(int32(powerType) != m_modifier.m_miscvalue)
|
||||
return;
|
||||
|
||||
m_target->HandleStatModifier(UnitMods(UNIT_MOD_POWER_START + powerType), TOTAL_PCT, float(m_modifier.m_amount), apply);
|
||||
UnitMods unitMod = UnitMods(UNIT_MOD_POWER_START + powerType);
|
||||
|
||||
m_target->HandleStatModifier(unitMod, TOTAL_PCT, float(m_modifier.m_amount), apply);
|
||||
}
|
||||
|
||||
void Aura::HandleAuraModIncreaseHealthPercent(bool apply, bool Real)
|
||||
void Aura::HandleAuraModIncreaseHealthPercent(bool apply, bool /*Real*/)
|
||||
{
|
||||
//m_target->ApplyMaxHealthPercentMod(m_modifier.m_amount,apply);
|
||||
m_target->HandleStatModifier(UNIT_MOD_HEALTH, TOTAL_PCT, float(m_modifier.m_amount), apply);
|
||||
}
|
||||
|
||||
void Aura::HandleAuraIncreaseBaseHealthPercent(bool apply, bool /*Real*/)
|
||||
{
|
||||
m_target->HandleStatModifier(UNIT_MOD_HEALTH, BASE_PCT, float(m_modifier.m_amount), apply);
|
||||
}
|
||||
|
||||
/********************************/
|
||||
/*** FIGHT ***/
|
||||
/********************************/
|
||||
|
|
|
|||
|
|
@ -209,6 +209,7 @@ class MANGOS_DLL_SPEC Aura
|
|||
void HandleManaShield(bool apply, bool Real);
|
||||
void HandleArenaPreparation(bool apply, bool Real);
|
||||
void HandleAuraConvertRune(bool apply, bool Real);
|
||||
void HandleAuraIncreaseBaseHealthPercent(bool Apply, bool Real);
|
||||
|
||||
virtual ~Aura();
|
||||
|
||||
|
|
|
|||
|
|
@ -849,6 +849,7 @@ void Pet::UpdateMaxHealth()
|
|||
void Pet::UpdateMaxPower(Powers power)
|
||||
{
|
||||
UnitMods unitMod = UnitMods(UNIT_MOD_POWER_START + power);
|
||||
|
||||
float addValue = (power == POWER_MANA) ? GetStat(STAT_INTELLECT) - GetCreateStat(STAT_INTELLECT) : 0.0f;
|
||||
|
||||
float value = GetModifierValue(unitMod, BASE_VALUE) + GetCreatePowers(power);
|
||||
|
|
|
|||
|
|
@ -9514,7 +9514,9 @@ bool Unit::HandleStatModifier(UnitMods unitMod, UnitModifierType modifierType, f
|
|||
case UNIT_MOD_RAGE:
|
||||
case UNIT_MOD_FOCUS:
|
||||
case UNIT_MOD_ENERGY:
|
||||
case UNIT_MOD_HAPPINESS: UpdateMaxPower(GetPowerTypeByAuraGroup(unitMod)); break;
|
||||
case UNIT_MOD_HAPPINESS:
|
||||
case UNIT_MOD_RUNE:
|
||||
case UNIT_MOD_RUNIC_POWER: UpdateMaxPower(GetPowerTypeByAuraGroup(unitMod)); break;
|
||||
|
||||
case UNIT_MOD_RESISTANCE_HOLY:
|
||||
case UNIT_MOD_RESISTANCE_FIRE:
|
||||
|
|
@ -9627,21 +9629,18 @@ Stats Unit::GetStatByAuraGroup(UnitMods unitMod) const
|
|||
|
||||
Powers Unit::GetPowerTypeByAuraGroup(UnitMods unitMod) const
|
||||
{
|
||||
Powers power = POWER_MANA;
|
||||
|
||||
switch(unitMod)
|
||||
{
|
||||
case UNIT_MOD_MANA: power = POWER_MANA; break;
|
||||
case UNIT_MOD_RAGE: power = POWER_RAGE; break;
|
||||
case UNIT_MOD_FOCUS: power = POWER_FOCUS; break;
|
||||
case UNIT_MOD_ENERGY: power = POWER_ENERGY; break;
|
||||
case UNIT_MOD_HAPPINESS: power = POWER_HAPPINESS; break;
|
||||
|
||||
default:
|
||||
break;
|
||||
case UNIT_MOD_MANA: return POWER_MANA;
|
||||
case UNIT_MOD_RAGE: return POWER_RAGE;
|
||||
case UNIT_MOD_FOCUS: return POWER_FOCUS;
|
||||
case UNIT_MOD_ENERGY: return POWER_ENERGY;
|
||||
case UNIT_MOD_HAPPINESS: return POWER_HAPPINESS;
|
||||
case UNIT_MOD_RUNE: return POWER_RUNE;
|
||||
case UNIT_MOD_RUNIC_POWER:return POWER_RUNIC_POWER;
|
||||
}
|
||||
|
||||
return power;
|
||||
return POWER_MANA;
|
||||
}
|
||||
|
||||
float Unit::GetTotalAttackPowerValue(WeaponAttackType attType) const
|
||||
|
|
|
|||
|
|
@ -301,11 +301,13 @@ enum UnitMods
|
|||
UNIT_MOD_STAT_INTELLECT,
|
||||
UNIT_MOD_STAT_SPIRIT,
|
||||
UNIT_MOD_HEALTH,
|
||||
UNIT_MOD_MANA, // UNIT_MOD_MANA..UNIT_MOD_HAPPINESS must be in existed order, it's accessed by index values of Powers enum.
|
||||
UNIT_MOD_MANA, // UNIT_MOD_MANA..UNIT_MOD_RUNIC_POWER must be in existed order, it's accessed by index values of Powers enum.
|
||||
UNIT_MOD_RAGE,
|
||||
UNIT_MOD_FOCUS,
|
||||
UNIT_MOD_ENERGY,
|
||||
UNIT_MOD_HAPPINESS,
|
||||
UNIT_MOD_RUNE,
|
||||
UNIT_MOD_RUNIC_POWER,
|
||||
UNIT_MOD_ARMOR, // UNIT_MOD_ARMOR..UNIT_MOD_RESISTANCE_ARCANE must be in existed order, it's accessed by index values of SpellSchools enum.
|
||||
UNIT_MOD_RESISTANCE_HOLY,
|
||||
UNIT_MOD_RESISTANCE_FIRE,
|
||||
|
|
@ -325,7 +327,7 @@ enum UnitMods
|
|||
UNIT_MOD_RESISTANCE_START = UNIT_MOD_ARMOR,
|
||||
UNIT_MOD_RESISTANCE_END = UNIT_MOD_RESISTANCE_ARCANE + 1,
|
||||
UNIT_MOD_POWER_START = UNIT_MOD_MANA,
|
||||
UNIT_MOD_POWER_END = UNIT_MOD_HAPPINESS + 1
|
||||
UNIT_MOD_POWER_END = UNIT_MOD_RUNIC_POWER + 1
|
||||
};
|
||||
|
||||
enum BaseModGroup
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue