Core/Auras: Remove m_effIndex member of AuraEffect and always take it from SpellEffectInfo
Port From (https://github.com/TrinityCore/TrinityCore/commit/efdca47aff354079bc73d248e022c2e914d94e7b)
This commit is contained in:
@@ -154,7 +154,7 @@ namespace Game.Spells
|
|||||||
_flags |= positiveFound ? AuraFlags.Positive : AuraFlags.Negative;
|
_flags |= positiveFound ? AuraFlags.Positive : AuraFlags.Negative;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool effectNeedsAmount(AuraEffect effect) => effect != null && (GetEffectsToApply() & (1 << effect.GetEffIndex())) != 0 && Aura.EffectTypeNeedsSendingAmount(effect.GetAuraType());
|
bool effectNeedsAmount(AuraEffect effect) => effect != null && (GetEffectsToApply() & (1 << (int)effect.GetEffIndex())) != 0 && Aura.EffectTypeNeedsSendingAmount(effect.GetAuraType());
|
||||||
|
|
||||||
if (GetBase().GetSpellInfo().HasAttribute(SpellAttr8.AuraSendAmount) || GetBase().GetAuraEffects().Any(effectNeedsAmount))
|
if (GetBase().GetSpellInfo().HasAttribute(SpellAttr8.AuraSendAmount) || GetBase().GetAuraEffects().Any(effectNeedsAmount))
|
||||||
_flags |= AuraFlags.Scalable;
|
_flags |= AuraFlags.Scalable;
|
||||||
@@ -343,7 +343,7 @@ namespace Game.Spells
|
|||||||
foreach (SpellEffectInfo effect in GetSpellInfo().GetEffects())
|
foreach (SpellEffectInfo effect in GetSpellInfo().GetEffects())
|
||||||
{
|
{
|
||||||
if (effect != null && Convert.ToBoolean(effMask & (1 << (int)effect.EffectIndex)))
|
if (effect != null && Convert.ToBoolean(effMask & (1 << (int)effect.EffectIndex)))
|
||||||
_effects[effect.EffectIndex] = new AuraEffect(this, effect.EffectIndex, baseAmount != null ? baseAmount[effect.EffectIndex] : (int?)null, caster);
|
_effects[effect.EffectIndex] = new AuraEffect(this, effect, baseAmount != null ? baseAmount[effect.EffectIndex] : (int?)null, caster);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1057,7 +1057,7 @@ namespace Game.Spells
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
effect.SetAmount(amount[effect.GetEffIndex()]);
|
effect.SetAmount(amount[effect.GetEffIndex()]);
|
||||||
effect.SetCanBeRecalculated(Convert.ToBoolean(recalculateMask & (1 << effect.GetEffIndex())));
|
effect.SetCanBeRecalculated(Convert.ToBoolean(recalculateMask & (1 << (int)effect.GetEffIndex())));
|
||||||
effect.CalculatePeriodic(caster, false, true);
|
effect.CalculatePeriodic(caster, false, true);
|
||||||
effect.CalculateSpellMod();
|
effect.CalculateSpellMod();
|
||||||
effect.RecalculateAmount(caster);
|
effect.RecalculateAmount(caster);
|
||||||
@@ -2350,7 +2350,7 @@ namespace Game.Spells
|
|||||||
uint effMask = 0;
|
uint effMask = 0;
|
||||||
foreach (AuraEffect effect in GetAuraEffects())
|
foreach (AuraEffect effect in GetAuraEffects())
|
||||||
if (effect != null)
|
if (effect != null)
|
||||||
effMask |= (uint)(1 << effect.GetEffIndex());
|
effMask |= (uint)(1 << (int)effect.GetEffIndex());
|
||||||
return effMask;
|
return effMask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,14 +32,13 @@ namespace Game.Spells
|
|||||||
{
|
{
|
||||||
public class AuraEffect
|
public class AuraEffect
|
||||||
{
|
{
|
||||||
public AuraEffect(Aura baseAura, uint effIndex, int? baseAmount, Unit caster)
|
public AuraEffect(Aura baseAura, SpellEffectInfo spellEfffectInfo, int? baseAmount, Unit caster)
|
||||||
{
|
{
|
||||||
auraBase = baseAura;
|
auraBase = baseAura;
|
||||||
m_spellInfo = baseAura.GetSpellInfo();
|
m_spellInfo = baseAura.GetSpellInfo();
|
||||||
_effectInfo = m_spellInfo.GetEffect(effIndex);
|
_effectInfo = spellEfffectInfo;
|
||||||
m_baseAmount = baseAmount.HasValue ? baseAmount.Value : _effectInfo.CalcBaseValue(caster, baseAura.GetAuraType() == AuraObjectType.Unit ? baseAura.GetOwner().ToUnit() : null, baseAura.GetCastItemId(), baseAura.GetCastItemLevel());
|
m_baseAmount = baseAmount.HasValue ? baseAmount.Value : _effectInfo.CalcBaseValue(caster, baseAura.GetAuraType() == AuraObjectType.Unit ? baseAura.GetOwner().ToUnit() : null, baseAura.GetCastItemId(), baseAura.GetCastItemLevel());
|
||||||
m_donePct = 1.0f;
|
m_donePct = 1.0f;
|
||||||
m_effIndex = (byte)effIndex;
|
|
||||||
m_canBeRecalculated = true;
|
m_canBeRecalculated = true;
|
||||||
m_isPeriodic = false;
|
m_isPeriodic = false;
|
||||||
|
|
||||||
@@ -873,7 +872,7 @@ namespace Game.Spells
|
|||||||
|
|
||||||
public SpellInfo GetSpellInfo() { return m_spellInfo; }
|
public SpellInfo GetSpellInfo() { return m_spellInfo; }
|
||||||
public uint GetId() { return m_spellInfo.Id; }
|
public uint GetId() { return m_spellInfo.Id; }
|
||||||
public byte GetEffIndex() { return m_effIndex; }
|
public uint GetEffIndex() { return _effectInfo.EffectIndex; }
|
||||||
public int GetBaseAmount() { return m_baseAmount; }
|
public int GetBaseAmount() { return m_baseAmount; }
|
||||||
public int GetPeriod() { return m_period; }
|
public int GetPeriod() { return m_period; }
|
||||||
|
|
||||||
@@ -939,20 +938,18 @@ namespace Game.Spells
|
|||||||
Aura auraBase;
|
Aura auraBase;
|
||||||
SpellInfo m_spellInfo;
|
SpellInfo m_spellInfo;
|
||||||
SpellEffectInfo _effectInfo;
|
SpellEffectInfo _effectInfo;
|
||||||
public int m_baseAmount;
|
SpellModifier m_spellmod;
|
||||||
|
|
||||||
|
public int m_baseAmount;
|
||||||
int m_amount;
|
int m_amount;
|
||||||
int m_damage;
|
int m_damage;
|
||||||
float m_critChance;
|
float m_critChance;
|
||||||
float m_donePct;
|
float m_donePct;
|
||||||
|
|
||||||
SpellModifier m_spellmod;
|
|
||||||
|
|
||||||
int m_periodicTimer;
|
int m_periodicTimer;
|
||||||
int m_period;
|
int m_period;
|
||||||
uint m_tickNumber;
|
uint m_tickNumber;
|
||||||
|
|
||||||
byte m_effIndex;
|
|
||||||
bool m_canBeRecalculated;
|
bool m_canBeRecalculated;
|
||||||
bool m_isPeriodic;
|
bool m_isPeriodic;
|
||||||
#endregion
|
#endregion
|
||||||
@@ -4154,7 +4151,7 @@ namespace Game.Spells
|
|||||||
// pet auras
|
// pet auras
|
||||||
if (target.GetTypeId() == TypeId.Player && mode.HasAnyFlag(AuraEffectHandleModes.Real))
|
if (target.GetTypeId() == TypeId.Player && mode.HasAnyFlag(AuraEffectHandleModes.Real))
|
||||||
{
|
{
|
||||||
PetAura petSpell = Global.SpellMgr.GetPetAura(GetId(), m_effIndex);
|
PetAura petSpell = Global.SpellMgr.GetPetAura(GetId(), (byte)GetEffIndex());
|
||||||
if (petSpell != null)
|
if (petSpell != null)
|
||||||
{
|
{
|
||||||
if (apply)
|
if (apply)
|
||||||
|
|||||||
@@ -5539,7 +5539,7 @@ namespace Game.Spells
|
|||||||
foundNotMechanic = true;
|
foundNotMechanic = true;
|
||||||
|
|
||||||
// fill up aura mechanic info to send client proper error message
|
// fill up aura mechanic info to send client proper error message
|
||||||
_param1 = (uint)aurEff.GetSpellInfo().GetEffect(aurEff.GetEffIndex()).Mechanic;
|
_param1 = (uint)aurEff.GetSpellEffectInfo().Mechanic;
|
||||||
if (_param1 == 0)
|
if (_param1 == 0)
|
||||||
_param1 = (uint)aurEff.GetSpellInfo().Mechanic;
|
_param1 = (uint)aurEff.GetSpellInfo().Mechanic;
|
||||||
|
|
||||||
|
|||||||
@@ -428,7 +428,7 @@ namespace Scripts.Spells.Druid
|
|||||||
spellMod.op = SpellModOp.Dot;
|
spellMod.op = SpellModOp.Dot;
|
||||||
spellMod.type = SpellModType.Flat;
|
spellMod.type = SpellModType.Flat;
|
||||||
spellMod.spellId = GetId();
|
spellMod.spellId = GetId();
|
||||||
spellMod.mask = GetSpellInfo().GetEffect(aurEff.GetEffIndex()).SpellClassMask;
|
spellMod.mask = aurEff.GetSpellEffectInfo().SpellClassMask;
|
||||||
}
|
}
|
||||||
spellMod.value = aurEff.GetAmount() / 7;
|
spellMod.value = aurEff.GetAmount() / 7;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1610,14 +1610,14 @@ namespace Scripts.Spells.Quest
|
|||||||
|
|
||||||
// 51769 - Emblazon Runeblade
|
// 51769 - Emblazon Runeblade
|
||||||
[Script]
|
[Script]
|
||||||
class spell_q12619_emblazon_runeblade : AuraScript
|
class spell_q12619_emblazon_runeblade_AuraScript : AuraScript
|
||||||
{
|
{
|
||||||
void HandleEffectPeriodic(AuraEffect aurEff)
|
void HandleEffectPeriodic(AuraEffect aurEff)
|
||||||
{
|
{
|
||||||
PreventDefaultAction();
|
PreventDefaultAction();
|
||||||
Unit caster = GetCaster();
|
Unit caster = GetCaster();
|
||||||
if (caster)
|
if (caster)
|
||||||
caster.CastSpell(caster, GetSpellInfo().GetEffect(aurEff.GetEffIndex()).TriggerSpell, true, null, aurEff);
|
caster.CastSpell(caster, aurEff.GetSpellEffectInfo().TriggerSpell, true, null, aurEff);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Register()
|
public override void Register()
|
||||||
@@ -1628,7 +1628,7 @@ namespace Scripts.Spells.Quest
|
|||||||
|
|
||||||
// 51770 - Emblazon Runeblade
|
// 51770 - Emblazon Runeblade
|
||||||
[Script]
|
[Script]
|
||||||
class spell_q12619_emblazon_runeblade_effect : SpellScript
|
class spell_q12619_emblazon_runeblade : SpellScript
|
||||||
{
|
{
|
||||||
void HandleScript(uint effIndex)
|
void HandleScript(uint effIndex)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user