Core/Spells Handle auras 328 & 396 (SPELL_AURA_TRIGGER_SPELL_ON_POWER_*)

Port From (https://github.com/TrinityCore/TrinityCore/commit/56e9560661adca81fc1e9a297cb6823cf7a6cb22)
This commit is contained in:
hondacrx
2021-03-08 13:50:15 -05:00
parent cb25ddc507
commit ee97dc7b32
4 changed files with 115 additions and 1 deletions
+58
View File
@@ -4698,6 +4698,64 @@ namespace Game.Spells
}
}
[AuraEffectHandler(AuraType.TriggerSpellOnPowerPct)]
void HandleTriggerSpellOnPowerPercent(AuraApplication aurApp, AuraEffectHandleModes mode, bool apply)
{
if (!mode.HasAnyFlag(AuraEffectHandleModes.Real) || !apply)
return;
Unit target = aurApp.GetTarget();
int effectAmount = GetAmount();
uint triggerSpell = GetSpellEffectInfo().TriggerSpell;
float powerAmountPct = MathFunctions.GetPctOf(target.GetPower((PowerType)GetMiscValue()), target.GetMaxPower((PowerType)GetMiscValue()));
switch ((AuraTriggerOnPowerChangeDirection)GetMiscValueB())
{
case AuraTriggerOnPowerChangeDirection.Gain:
if (powerAmountPct < effectAmount)
return;
break;
case AuraTriggerOnPowerChangeDirection.Loss:
if (powerAmountPct > effectAmount)
return;
break;
default:
break;
}
target.CastSpell(target, triggerSpell, true);
}
[AuraEffectHandler(AuraType.TriggerSpellOnPowerAmount)]
void HandleTriggerSpellOnPowerAmount(AuraApplication aurApp, AuraEffectHandleModes mode, bool apply)
{
if (!mode.HasAnyFlag(AuraEffectHandleModes.Real) || !apply)
return;
Unit target = aurApp.GetTarget();
int effectAmount = GetAmount();
uint triggerSpell = GetSpellEffectInfo().TriggerSpell;
float powerAmount = target.GetPower((PowerType)GetMiscValue());
switch ((AuraTriggerOnPowerChangeDirection)GetMiscValueB())
{
case AuraTriggerOnPowerChangeDirection.Gain:
if (powerAmount < effectAmount)
return;
break;
case AuraTriggerOnPowerChangeDirection.Loss:
if (powerAmount > effectAmount)
return;
break;
default:
break;
}
target.CastSpell(target, triggerSpell, true);
}
[AuraEffectHandler(AuraType.OpenStable)]
void HandleAuraOpenStable(AuraApplication aurApp, AuraEffectHandleModes mode, bool apply)
{