Core/Scripts: fix drink auras
Port From (https://github.com/TrinityCore/TrinityCore/commit/33fbd7c7736bfe061a10e529a73e243074c90fa8)
This commit is contained in:
@@ -521,6 +521,17 @@ namespace Scripts.Spells.Generic
|
|||||||
return GetCaster() && GetCaster().IsTypeId(TypeId.Player);
|
return GetCaster() && GetCaster().IsTypeId(TypeId.Player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool Validate(SpellInfo spellInfo)
|
||||||
|
{
|
||||||
|
if (!spellInfo.GetEffect(0).IsAura() || spellInfo.GetEffect(0).ApplyAuraName != AuraType.ModPowerRegen)
|
||||||
|
{
|
||||||
|
Log.outError(LogFilter.Spells, "Aura {GetId()} structure has been changed - first aura is no longer SPELL_AURA_MOD_POWER_REGEN");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void CalcPeriodic(AuraEffect aurEff, ref bool isPeriodic, ref int amplitude)
|
void CalcPeriodic(AuraEffect aurEff, ref bool isPeriodic, ref int amplitude)
|
||||||
{
|
{
|
||||||
// Get SPELL_AURA_MOD_POWER_REGEN aura from spell
|
// Get SPELL_AURA_MOD_POWER_REGEN aura from spell
|
||||||
@@ -528,20 +539,20 @@ namespace Scripts.Spells.Generic
|
|||||||
if (regen == null)
|
if (regen == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (regen.GetAuraType() != AuraType.ModPowerRegen)
|
// default case - not in arena
|
||||||
{
|
if (!GetCaster().ToPlayer().InArena())
|
||||||
isPeriodic = false;
|
isPeriodic = false;
|
||||||
Log.outError(LogFilter.Spells, $"Aura {GetId()} structure has been changed - first aura is no longer SPELL_AURA_MOD_POWER_REGEN");
|
}
|
||||||
}
|
|
||||||
else
|
void CalcAmount(AuraEffect aurEff, ref int amount, ref bool canBeRecalculated)
|
||||||
{
|
{
|
||||||
// default case - not in arena
|
AuraEffect regen = GetAura().GetEffect(0);
|
||||||
if (!GetCaster().ToPlayer().InArena())
|
if (regen == null)
|
||||||
{
|
return;
|
||||||
regen.ChangeAmount(aurEff.GetAmount());
|
|
||||||
isPeriodic = false;
|
// default case - not in arena
|
||||||
}
|
if (!GetCaster().ToPlayer().InArena())
|
||||||
}
|
regen.ChangeAmount(amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdatePeriodic(AuraEffect aurEff)
|
void UpdatePeriodic(AuraEffect aurEff)
|
||||||
@@ -581,6 +592,7 @@ namespace Scripts.Spells.Generic
|
|||||||
public override void Register()
|
public override void Register()
|
||||||
{
|
{
|
||||||
DoEffectCalcPeriodic.Add(new EffectCalcPeriodicHandler(CalcPeriodic, 1, AuraType.PeriodicDummy));
|
DoEffectCalcPeriodic.Add(new EffectCalcPeriodicHandler(CalcPeriodic, 1, AuraType.PeriodicDummy));
|
||||||
|
DoEffectCalcAmount.Add(new EffectCalcAmountHandler(CalcAmount, 1, AuraType.PeriodicDummy));
|
||||||
OnEffectUpdatePeriodic.Add(new EffectUpdatePeriodicHandler(UpdatePeriodic, 1, AuraType.PeriodicDummy));
|
OnEffectUpdatePeriodic.Add(new EffectUpdatePeriodicHandler(UpdatePeriodic, 1, AuraType.PeriodicDummy));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user