Core/Auras: Refactor logic determining which spell aura type values need to be sent
Port From (https://github.com/TrinityCore/TrinityCore/commit/512931646ada2fab3796d362bb1955d7494f06ff)
This commit is contained in:
@@ -154,13 +154,9 @@ namespace Game.Spells
|
|||||||
_flags |= positiveFound ? AuraFlags.Positive : AuraFlags.Negative;
|
_flags |= positiveFound ? AuraFlags.Positive : AuraFlags.Negative;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetBase().GetSpellInfo().HasAttribute(SpellAttr8.AuraSendAmount) ||
|
bool effectNeedsAmount(AuraEffect effect) => effect != null && (GetEffectsToApply() & (1 << effect.GetEffIndex())) != 0 && Aura.EffectTypeNeedsSendingAmount(effect.GetAuraType());
|
||||||
GetBase().HasEffectType(AuraType.OverrideActionbarSpells) ||
|
|
||||||
GetBase().HasEffectType(AuraType.OverrideActionbarSpellsTriggered) ||
|
if (GetBase().GetSpellInfo().HasAttribute(SpellAttr8.AuraSendAmount) || GetBase().GetAuraEffects().Any(effectNeedsAmount))
|
||||||
GetBase().HasEffectType(AuraType.ModSpellCategoryCooldown) ||
|
|
||||||
GetBase().HasEffectType(AuraType.ModMaxCharges) ||
|
|
||||||
GetBase().HasEffectType(AuraType.ChargeRecoveryMod) ||
|
|
||||||
GetBase().HasEffectType(AuraType.ChargeRecoveryMultiplier))
|
|
||||||
_flags |= AuraFlags.Scalable;
|
_flags |= AuraFlags.Scalable;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1096,6 +1092,24 @@ namespace Game.Spells
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool EffectTypeNeedsSendingAmount(AuraType type)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case AuraType.OverrideActionbarSpells:
|
||||||
|
case AuraType.OverrideActionbarSpellsTriggered:
|
||||||
|
case AuraType.ModSpellCategoryCooldown:
|
||||||
|
case AuraType.ModMaxCharges:
|
||||||
|
case AuraType.ChargeRecoveryMod:
|
||||||
|
case AuraType.ChargeRecoveryMultiplier:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public void RecalculateAmountOfEffects()
|
public void RecalculateAmountOfEffects()
|
||||||
{
|
{
|
||||||
Cypher.Assert(!IsRemoved());
|
Cypher.Assert(!IsRemoved());
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ namespace Game.Spells
|
|||||||
HandleEffect(aurApp, handleMask, true);
|
HandleEffect(aurApp, handleMask, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetSpellInfo().HasAttribute(SpellAttr8.AuraSendAmount))
|
if (GetSpellInfo().HasAttribute(SpellAttr8.AuraSendAmount) || Aura.EffectTypeNeedsSendingAmount(GetAuraType()))
|
||||||
GetBase().SetNeedClientUpdateForTargets();
|
GetBase().SetNeedClientUpdateForTargets();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user