diff options
author | Shauren <shauren.trinity@gmail.com> | 2021-03-11 10:32:03 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-03-11 10:32:03 +0100 |
commit | efdca47aff354079bc73d248e022c2e914d94e7b (patch) | |
tree | de947af2dd08cd204b2610aab894e0fffe06c5c1 | |
parent | f4ff0489ca0df27ebca37b8423b8dab61f2978cc (diff) |
Core/Auras: Remove m_effIndex member of AuraEffect and always take it from SpellEffectInfo
11 files changed, 27 insertions, 31 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; } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index 7c640966554..bc4c7d18087 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -1512,7 +1512,7 @@ class spell_halion_combustion_consumption_periodic : public SpellScriptLoader if (!caster) return; - uint32 triggerSpell = GetSpellInfo()->GetEffect(aurEff->GetEffIndex())->TriggerSpell; + uint32 triggerSpell = aurEff->GetSpellEffectInfo()->TriggerSpell; int32 radius = caster->GetObjectScale() * M_PI * 10000 / 3; caster->CastCustomSpell(triggerSpell, SPELLVALUE_RADIUS_MOD, radius, nullptr, TRIGGERED_FULL_MASK, nullptr, aurEff, caster->GetGUID()); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 95da8d82abb..02fcf5026d7 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -1308,7 +1308,7 @@ class spell_putricide_mutated_plague : public SpellScriptLoader if (!caster) return; - uint32 triggerSpell = GetSpellInfo()->GetEffect(aurEff->GetEffIndex())->TriggerSpell; + uint32 triggerSpell = aurEff->GetSpellEffectInfo()->TriggerSpell; SpellInfo const* spell = sSpellMgr->AssertSpellInfo(triggerSpell, GetCastDifficulty()); int32 damage = spell->GetEffect(EFFECT_0)->CalcValue(caster); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp index 319897925b8..cb7beeafb42 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp @@ -201,7 +201,7 @@ class spell_grobbulus_poison_cloud : public SpellScriptLoader { PreventDefaultAction(); - uint32 triggerSpell = GetSpellInfo()->GetEffect(aurEff->GetEffIndex())->TriggerSpell; + uint32 triggerSpell = aurEff->GetSpellEffectInfo()->TriggerSpell; int32 mod = int32(((float(aurEff->GetTickNumber()) / aurEff->GetTotalTicks()) * 0.9f + 0.1f) * 10000 * 2 / 3); GetTarget()->CastCustomSpell(triggerSpell, SPELLVALUE_RADIUS_MOD, mod, nullptr, TRIGGERED_FULL_MASK, nullptr, aurEff); } diff --git a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp index ad2bcb2eaf2..9425a218cbd 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp @@ -269,7 +269,7 @@ class spell_mother_shahraz_saber_lash : public AuraScript { PreventDefaultAction(); - uint32 triggerSpell = GetSpellInfo()->GetEffect(aurEff->GetEffIndex())->TriggerSpell; + uint32 triggerSpell = aurEff->GetSpellEffectInfo()->TriggerSpell; if (Unit* target = GetUnitOwner()->GetAI()->SelectTarget(SELECT_TARGET_RANDOM, 0)) GetUnitOwner()->CastSpell(target, triggerSpell, true); } @@ -297,7 +297,7 @@ class spell_mother_shahraz_generic_periodic : public AuraScript { PreventDefaultAction(); - uint32 triggerSpell = GetSpellInfo()->GetEffect(aurEff->GetEffIndex())->TriggerSpell; + uint32 triggerSpell = aurEff->GetSpellEffectInfo()->TriggerSpell; if (Unit* target = GetUnitOwner()->GetAI()->SelectTarget(SELECT_TARGET_RANDOM, 0)) GetUnitOwner()->CastSpell(target, triggerSpell, true); } diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp index b5cac8fbcd7..a1737fc4e11 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp @@ -179,7 +179,7 @@ class spell_broggok_poison_cloud : public SpellScriptLoader { PreventDefaultAction(); - uint32 triggerSpell = GetSpellInfo()->GetEffect(aurEff->GetEffIndex())->TriggerSpell; + uint32 triggerSpell = aurEff->GetSpellEffectInfo()->TriggerSpell; int32 mod = int32(((float(aurEff->GetTickNumber()) / aurEff->GetTotalTicks()) * 0.9f + 0.1f) * 10000 * 2 / 3); GetTarget()->CastCustomSpell(triggerSpell, SPELLVALUE_RADIUS_MOD, mod, nullptr, TRIGGERED_FULL_MASK, nullptr, aurEff); } diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index e79bf4579df..80cee09da89 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -519,7 +519,7 @@ public: spellMod->op = SPELLMOD_DOT; spellMod->type = SPELLMOD_FLAT; spellMod->spellId = GetId(); - spellMod->mask = GetSpellInfo()->GetEffect(aurEff->GetEffIndex())->SpellClassMask; + spellMod->mask = aurEff->GetSpellEffectInfo()->SpellClassMask; } spellMod->value = aurEff->GetAmount() / 7; } diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 68287bf2c64..47293321ad5 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -2215,7 +2215,7 @@ class spell_q12619_emblazon_runeblade : public SpellScriptLoader { PreventDefaultAction(); if (Unit* caster = GetCaster()) - caster->CastSpell(caster, GetSpellInfo()->GetEffect(aurEff->GetEffIndex())->TriggerSpell, true, nullptr, aurEff); + caster->CastSpell(caster, aurEff->GetSpellEffectInfo()->TriggerSpell, true, nullptr, aurEff); } void Register() override |