diff options
author | megamage <none@none.none> | 2011-10-12 08:39:45 -0700 |
---|---|---|
committer | megamage <none@none.none> | 2011-10-12 08:39:45 -0700 |
commit | d2e8237d2377073b74d82b29bb32271615ff797e (patch) | |
tree | c3ca3144241efde73b3f7020eb659d2dc64d29be /src | |
parent | 69414ed06547956a3cba507124d821028bbc5b90 (diff) | |
parent | 3e9611578cb4af6b6f6ec18cc4e8be9ac2f1ef78 (diff) |
Merge pull request #3469 from Chaplain/cleanup3
Core/Spells: SPELL_AURA_MOD_INCREASE_ENERGY_PERCENT improvement
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 9 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.h | 1 | ||||
-rwxr-xr-x | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 12 | ||||
-rwxr-xr-x | src/server/game/Spells/SpellMgr.cpp | 2 |
4 files changed, 22 insertions, 2 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 12c3992c980..6e70469df73 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -12384,6 +12384,15 @@ int32 Unit::ModifyPower(Powers power, int32 dVal) return gain; } +// returns negative amount on power reduction +int32 Unit::ModifyPowerPct(Powers power, float pct, bool apply) +{ + float amount = (float)GetMaxPower(power); + ApplyPercentModFloatVar(amount, pct, apply); + + return ModifyPower(power, (int32)amount - (int32)GetMaxPower(power)); +} + bool Unit::isAlwaysVisibleFor(WorldObject const* seer) const { if (WorldObject::isAlwaysVisibleFor(seer)) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 236f183e3b9..7629050ea8a 100755 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1371,6 +1371,7 @@ class Unit : public WorldObject void SetMaxPower(Powers power, uint32 val); // returns the change in power int32 ModifyPower(Powers power, int32 val); + int32 ModifyPowerPct(Powers power, float pct, bool apply = true); uint32 GetAttackTime(WeaponAttackType att) const { diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 4876f435f55..f29fc4c00df 100755 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -4003,8 +4003,18 @@ void AuraEffect::HandleAuraModIncreaseEnergyPercent(AuraApplication const* aurAp // return; UnitMods unitMod = UnitMods(UNIT_MOD_POWER_START + powerType); + float amount = float(GetAmount()); - target->HandleStatModifier(unitMod, TOTAL_PCT, float(GetAmount()), apply); + if (apply) + { + target->HandleStatModifier(unitMod, TOTAL_PCT, amount, apply); + target->ModifyPowerPct(powerType, amount, apply); + } + else + { + target->ModifyPowerPct(powerType, amount, apply); + target->HandleStatModifier(unitMod, TOTAL_PCT, amount, apply); + } } void AuraEffect::HandleAuraModIncreaseHealthPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index cfa28080b2b..b0d4dd75efa 100755 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3094,7 +3094,7 @@ void SpellMgr::LoadDbcDataCorrections() // with this spell atrribute aura can be stacked several times spellInfo->Attributes &= ~SPELL_ATTR0_NOT_SHAPESHIFT; break; - case 64904: //Hymn of Hope + case 64904: // Hymn of Hope spellInfo->EffectApplyAuraName[EFFECT_1] = SPELL_AURA_MOD_INCREASE_ENERGY_PERCENT; break; case 30421: // Nether Portal - Perseverence |