Core/Spells: Replace MAX_SPELL_EFFECTS loop limits with correct upper bound depending on how many effects the spell has

Port From (https://github.com/TrinityCore/TrinityCore/commit/561b122364525deaee815ad900a78f1323c37776)
This commit is contained in:
Hondacrx
2025-06-03 21:17:25 -04:00
parent c496da9da0
commit 52952deee3
5 changed files with 18 additions and 23 deletions
+7 -14
View File
@@ -826,12 +826,9 @@ namespace Game.Spells
m_timeCla = 1 * Time.InMilliseconds;
// also reset periodic counters
for (byte i = 0; i < SpellConst.MaxEffects; ++i)
{
AuraEffect aurEff = GetEffect(i);
foreach (AuraEffect aurEff in GetAuraEffects())
if (aurEff != null)
aurEff.ResetTicks();
}
}
void RefreshTimers(bool resetPeriodicTimer)
@@ -851,12 +848,8 @@ namespace Game.Spells
RefreshDuration();
Unit caster = GetCaster();
for (byte i = 0; i < SpellConst.MaxEffects; ++i)
{
AuraEffect aurEff = GetEffect(i);
if (aurEff != null)
aurEff.CalculatePeriodic(caster, resetPeriodicTimer, false);
}
foreach (AuraEffect aurEff in GetAuraEffects())
aurEff.CalculatePeriodic(caster, resetPeriodicTimer, false);
}
public void SetCharges(int charges)
@@ -1807,10 +1800,10 @@ namespace Game.Spells
// At least one effect has to pass checks to proc aura
uint procEffectMask = aurApp.GetEffectMask();
for (byte i = 0; i < SpellConst.MaxEffects; ++i)
if ((procEffectMask & (1u << i)) != 0)
if ((procEntry.DisableEffectsMask & (1u << i)) != 0 || !GetEffect(i).CheckEffectProc(aurApp, eventInfo))
procEffectMask &= ~(1u << i);
foreach (AuraEffect aurEff in GetAuraEffects())
if ((procEffectMask & (1u << (int)aurEff.GetEffIndex())) != 0)
if ((procEntry.DisableEffectsMask & (1u << (int)aurEff.GetEffIndex())) != 0 || !GetEffect(aurEff.GetEffIndex()).CheckEffectProc(aurApp, eventInfo))
procEffectMask &= ~(1u << (int)aurEff.GetEffIndex());
if (procEffectMask == 0)
return 0;