aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-03-11 10:32:03 +0100
committerShauren <shauren.trinity@gmail.com>2021-03-11 10:32:03 +0100
commitefdca47aff354079bc73d248e022c2e914d94e7b (patch)
treede947af2dd08cd204b2610aab894e0fffe06c5c1 /src/server/game
parentf4ff0489ca0df27ebca37b8423b8dab61f2978cc (diff)
Core/Auras: Remove m_effIndex member of AuraEffect and always take it from SpellEffectInfo
Diffstat (limited to 'src/server/game')
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp17
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.h19
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp4
-rw-r--r--src/server/game/Spells/Spell.cpp2
4 files changed, 19 insertions, 23 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 48bbd51acc9..5d406d1288d 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -574,12 +574,11 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //503 SPELL_AURA_MOD_VERSATILITY_HEALING_DONE_BENEFIT
};
-AuraEffect::AuraEffect(Aura* base, uint32 effIndex, int32 *baseAmount, Unit* caster) :
-m_base(base), m_spellInfo(base->GetSpellInfo()),
-_effectInfo(m_spellInfo->GetEffect(effIndex)),
-m_baseAmount(baseAmount ? *baseAmount : _effectInfo->CalcBaseValue(caster, base->GetType() == UNIT_AURA_TYPE ? base->GetOwner()->ToUnit() : nullptr, base->GetCastItemId(), base->GetCastItemLevel())),
+AuraEffect::AuraEffect(Aura* base, SpellEffectInfo const* spellEfffectInfo, int32 *baseAmount, Unit* caster) :
+m_base(base), m_spellInfo(base->GetSpellInfo()), m_effectInfo(spellEfffectInfo), m_spellmod(nullptr),
+m_baseAmount(baseAmount ? *baseAmount : spellEfffectInfo->CalcBaseValue(caster, base->GetType() == UNIT_AURA_TYPE ? base->GetOwner()->ToUnit() : nullptr, base->GetCastItemId(), base->GetCastItemLevel())),
m_damage(0), m_critChance(0.0f), m_donePct(1.0f),
-m_spellmod(nullptr), m_periodicTimer(0), m_tickNumber(0), m_effIndex(effIndex),
+m_periodicTimer(0), m_tickNumber(0),
m_canBeRecalculated(true), m_isPeriodic(false)
{
CalculatePeriodic(caster, true, false);
@@ -4465,7 +4464,7 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool
// pet auras
if (target->GetTypeId() == TYPEID_PLAYER && (mode & AURA_EFFECT_HANDLE_REAL))
{
- if (PetAura const* petSpell = sSpellMgr->GetPetAura(GetId(), m_effIndex))
+ if (PetAura const* petSpell = sSpellMgr->GetPetAura(GetId(), GetEffIndex()))
{
if (apply)
target->ToPlayer()->AddPetAura(petSpell);
@@ -5766,7 +5765,7 @@ void AuraEffect::HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const
bool AuraEffect::IsAreaAuraEffect() const
{
- return _effectInfo->IsAreaAuraEffect();
+ return GetSpellEffectInfo()->IsAreaAuraEffect();
}
void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) const
@@ -6267,9 +6266,9 @@ void AuraEffect::HandleShowConfirmationPrompt(AuraApplication const* aurApp, uin
return;
if (apply)
- player->AddTemporarySpell(_effectInfo->TriggerSpell);
+ player->AddTemporarySpell(GetSpellEffectInfo()->TriggerSpell);
else
- player->RemoveTemporarySpell(_effectInfo->TriggerSpell);
+ player->RemoveTemporarySpell(GetSpellEffectInfo()->TriggerSpell);
}
void AuraEffect::HandleOverridePetSpecs(AuraApplication const* aurApp, uint8 mode, bool apply) const
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h
index 0819f294b7f..e2a9c1608de 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.h
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.h
@@ -34,7 +34,7 @@ class TC_GAME_API AuraEffect
public:
~AuraEffect();
- AuraEffect(Aura* base, uint32 effIndex, int32 *baseAmount, Unit* caster);
+ AuraEffect(Aura* base, SpellEffectInfo const* spellEfffectInfo, int32 *baseAmount, Unit* caster);
Unit* GetCaster() const { return GetBase()->GetCaster(); }
ObjectGuid GetCasterGUID() const { return GetBase()->GetCasterGUID(); }
Aura* GetBase() const { return m_base; }
@@ -47,7 +47,7 @@ class TC_GAME_API AuraEffect
SpellInfo const* GetSpellInfo() const { return m_spellInfo; }
uint32 GetId() const { return m_spellInfo->Id; }
- uint32 GetEffIndex() const { return m_effIndex; }
+ uint32 GetEffIndex() const { return m_effectInfo->EffectIndex; }
int32 GetBaseAmount() const { return m_baseAmount; }
int32 GetPeriod() const { return m_period; }
@@ -100,31 +100,30 @@ class TC_GAME_API AuraEffect
// add/remove SPELL_AURA_MOD_SHAPESHIFT (36) linked auras
void HandleShapeshiftBoosts(Unit* target, bool apply) const;
- SpellEffectInfo const* GetSpellEffectInfo() const { return _effectInfo; }
+ SpellEffectInfo const* GetSpellEffectInfo() const { return m_effectInfo; }
- bool IsEffect() const { return _effectInfo->Effect != 0; }
- bool IsEffect(SpellEffectName effectName) const { return _effectInfo->Effect == uint32(effectName); }
+ bool IsEffect() const { return m_effectInfo->Effect != 0; }
+ bool IsEffect(SpellEffectName effectName) const { return m_effectInfo->Effect == uint32(effectName); }
bool IsAreaAuraEffect() const;
private:
Aura* const m_base;
SpellInfo const* const m_spellInfo;
- SpellEffectInfo const* _effectInfo;
- int32 const m_baseAmount;
+ SpellEffectInfo const* m_effectInfo;
+
+ SpellModifier* m_spellmod;
+ int32 const m_baseAmount;
int32 m_amount;
int32 m_damage;
float m_critChance;
float m_donePct;
- SpellModifier* m_spellmod;
-
int32 m_periodicTimer;
int32 m_period;
uint32 m_tickNumber;
- uint8 const m_effIndex;
bool m_canBeRecalculated;
bool m_isPeriodic;
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index b8f6ddb9be2..1d55107b1b1 100644
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -382,10 +382,8 @@ void Aura::_InitEffects(uint32 effMask, Unit* caster, int32 *baseAmount)
_effects.resize(GetSpellInfo()->GetEffects().size());
for (SpellEffectInfo const* effect : GetSpellInfo()->GetEffects())
- {
if (effect && effMask & (1 << effect->EffectIndex))
- _effects[effect->EffectIndex] = new AuraEffect(this, effect->EffectIndex, baseAmount ? baseAmount + effect->EffectIndex : nullptr, caster);
- }
+ _effects[effect->EffectIndex] = new AuraEffect(this, effect, baseAmount ? baseAmount + effect->EffectIndex : nullptr, caster);
}
Aura::~Aura()
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 4ad47040980..92081d89ac0 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -5950,7 +5950,7 @@ SpellCastResult Spell::CheckCasterAuras(uint32* param1) const
// fill up aura mechanic info to send client proper error message
if (param1)
{
- *param1 = aurEff->GetSpellInfo()->GetEffect(aurEff->GetEffIndex())->Mechanic;
+ *param1 = aurEff->GetSpellEffectInfo()->Mechanic;
if (!*param1)
*param1 = aurEff->GetSpellInfo()->Mechanic;
}