diff options
Diffstat (limited to 'src')
6 files changed, 126 insertions, 159 deletions
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp index 6c872e8acd9..3223039ee2e 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp @@ -506,26 +506,24 @@ public: DrinkInturrupted = true; } - void SpellHit(Unit* /*pAttacker*/, const SpellInfo* Spell) override + void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override { - //We only care about interrupt effects and only if they are durring a spell currently being cast - for (SpellEffectInfo const* effect : Spell->GetEffectsForDifficulty(me->GetMap()->GetDifficultyID())) - if (effect && effect->Effect == SPELL_EFFECT_INTERRUPT_CAST && me->IsNonMeleeSpellCast(false)) - { - //Interrupt effect - me->InterruptNonMeleeSpells(false); + // We only care about interrupt effects and only if they are durring a spell currently being cast + if (spellInfo->HasEffect(SPELL_EFFECT_INTERRUPT_CAST) && me->IsNonMeleeSpellCast(false)) + { + // Interrupt effect + me->InterruptNonMeleeSpells(false); - //Normally we would set the cooldown equal to the spell duration - //but we do not have access to the DurationStore + // Normally we would set the cooldown equal to the spell duration + // but we do not have access to the DurationStore - switch (CurrentNormalSpell) - { + switch (CurrentNormalSpell) + { case SPELL_ARCMISSLE: ArcaneCooldown = 5000; break; case SPELL_FIREBALL: FireCooldown = 5000; break; case SPELL_FROSTBOLT: FrostCooldown = 5000; break; - } - return; } + } } void MoveInLineOfSight(Unit* who) override diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp index c4663fac354..9db3d07fe9a 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp @@ -31,7 +31,7 @@ EndScriptData */ #include "ObjectAccessor.h" #include "Player.h" #include "ScriptedCreature.h" -#include "SpellMgr.h" +#include "SpellInfo.h" #include "uldaman.h" enum Says @@ -127,10 +127,10 @@ class boss_archaedas : public CreatureScript me->SetControlled(false, UNIT_STATE_ROOT); } - void SpellHit(Unit* /*caster*/, const SpellInfo* spell) override + void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override { // Being woken up from the altar, start the awaken sequence - if (spell == sSpellMgr->GetSpellInfo(SPELL_ARCHAEDAS_AWAKEN)) + if (spellInfo->Id == SPELL_ARCHAEDAS_AWAKEN) { Talk(SAY_AGGRO); iAwakenTimer = 4000; @@ -278,10 +278,10 @@ class npc_archaedas_minions : public CreatureScript bAmIAwake = true; } - void SpellHit(Unit * /*caster*/, const SpellInfo* spell) override + void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override { // time to wake up, start animation - if (spell == sSpellMgr->GetSpellInfo(SPELL_ARCHAEDAS_AWAKEN)) + if (spellInfo->Id == SPELL_ARCHAEDAS_AWAKEN) { iAwakenTimer = 5000; bWakingUp = true; diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp index 4537b438914..0d7b927cee6 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp @@ -387,7 +387,7 @@ public: { CustomSpellValues values; values.AddSpellMod(SPELLVALUE_BASE_POINT0, aurEff->GetAmount()); - caster->CastCustomSpell(GetSpellInfo()->GetEffect(caster->GetMap()->GetDifficultyID(), EFFECT_0)->TriggerSpell, values, GetTarget()); + caster->CastCustomSpell(aurEff->GetSpellEffectInfo()->TriggerSpell, values, GetTarget()); } } diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index d212683754b..2f43fc60256 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -209,11 +209,12 @@ class spell_item_anger_capacitor : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(SPELL_MOTE_OF_ANGER) || - !sSpellMgr->GetSpellInfo(SPELL_MANIFEST_ANGER_MAIN_HAND) || - !sSpellMgr->GetSpellInfo(SPELL_MANIFEST_ANGER_OFF_HAND)) - return false; - return true; + return ValidateSpellInfo( + { + SPELL_MOTE_OF_ANGER, + SPELL_MANIFEST_ANGER_MAIN_HAND, + SPELL_MANIFEST_ANGER_OFF_HAND + }); } void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) @@ -564,13 +565,14 @@ class spell_item_deathbringers_will : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(Strength) || - !sSpellMgr->GetSpellInfo(Agility) || - !sSpellMgr->GetSpellInfo(AttackPower) || - !sSpellMgr->GetSpellInfo(Critical) || - !sSpellMgr->GetSpellInfo(Haste)) - return false; - return true; + return ValidateSpellInfo( + { + Strength, + Agility, + AttackPower, + Critical, + Haste + }); } void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) @@ -1128,12 +1130,13 @@ class spell_item_heartpierce : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(Energy) || - !sSpellMgr->GetSpellInfo(Mana) || - !sSpellMgr->GetSpellInfo(Rage) || - !sSpellMgr->GetSpellInfo(RunicPower)) - return false; - return true; + return ValidateSpellInfo( + { + Energy, + Mana, + Rage, + RunicPower + }); } void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) @@ -3611,10 +3614,7 @@ class spell_item_shard_of_the_scale : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(HealProc) || - !sSpellMgr->GetSpellInfo(DamageProc)) - return false; - return true; + return ValidateSpellInfo({ HealProc, DamageProc }); } void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) @@ -3750,11 +3750,13 @@ class spell_item_sunwell_neck : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { if (!sFactionStore.LookupEntry(FACTION_ALDOR) || - !sFactionStore.LookupEntry(FACTION_SCRYERS) || - !sSpellMgr->GetSpellInfo(Aldors) || - !sSpellMgr->GetSpellInfo(Scryers)) + !sFactionStore.LookupEntry(FACTION_SCRYERS)) return false; - return true; + return ValidateSpellInfo( + { + Aldors, + Scryers + }); } bool CheckProc(ProcEventInfo& eventInfo) diff --git a/src/server/scripts/Spells/spell_monk.cpp b/src/server/scripts/Spells/spell_monk.cpp index 6e86295e322..696d5270117 100644 --- a/src/server/scripts/Spells/spell_monk.cpp +++ b/src/server/scripts/Spells/spell_monk.cpp @@ -42,157 +42,126 @@ enum MonkSpells }; // 117952 - Crackling Jade Lightning -class spell_monk_crackling_jade_lightning : public SpellScriptLoader +class spell_monk_crackling_jade_lightning : public AuraScript { -public: - spell_monk_crackling_jade_lightning() : SpellScriptLoader("spell_monk_crackling_jade_lightning") { } + PrepareAuraScript(spell_monk_crackling_jade_lightning); - class spell_monk_crackling_jade_lightning_AuraScript : public AuraScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareAuraScript(spell_monk_crackling_jade_lightning_AuraScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override + return ValidateSpellInfo( { - if (!sSpellMgr->GetSpellInfo(SPELL_MONK_CRACKLING_JADE_LIGHTNING_CHI_PROC)) - return false; - return true; - } - - void OnTick(AuraEffect const* /*aurEff*/) - { - if (Unit* caster = GetCaster()) - if (caster->HasAura(SPELL_MONK_STANCE_OF_THE_SPIRITED_CRANE)) - caster->CastSpell(caster, SPELL_MONK_CRACKLING_JADE_LIGHTNING_CHI_PROC, TRIGGERED_FULL_MASK); - } + SPELL_MONK_STANCE_OF_THE_SPIRITED_CRANE, + SPELL_MONK_CRACKLING_JADE_LIGHTNING_CHI_PROC + }); + } - void Register() override - { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_monk_crackling_jade_lightning_AuraScript::OnTick, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE); - } - }; + void OnTick(AuraEffect const* /*aurEff*/) + { + if (Unit* caster = GetCaster()) + if (caster->HasAura(SPELL_MONK_STANCE_OF_THE_SPIRITED_CRANE)) + caster->CastSpell(caster, SPELL_MONK_CRACKLING_JADE_LIGHTNING_CHI_PROC, TRIGGERED_FULL_MASK); + } - AuraScript* GetAuraScript() const override + void Register() override { - return new spell_monk_crackling_jade_lightning_AuraScript(); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_monk_crackling_jade_lightning::OnTick, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE); } }; // 117959 - Crackling Jade Lightning -class spell_monk_crackling_jade_lightning_knockback_proc_aura : public SpellScriptLoader +class spell_monk_crackling_jade_lightning_knockback_proc_aura : public AuraScript { -public: - spell_monk_crackling_jade_lightning_knockback_proc_aura() : SpellScriptLoader("spell_monk_crackling_jade_lightning_knockback_proc_aura") { } + PrepareAuraScript(spell_monk_crackling_jade_lightning_knockback_proc_aura); - class spell_monk_crackling_jade_lightning_aura_AuraScript : public AuraScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareAuraScript(spell_monk_crackling_jade_lightning_aura_AuraScript); - - bool Validate(SpellInfo const* /*spellInfo*/) override + return ValidateSpellInfo( { - if (!sSpellMgr->GetSpellInfo(SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK)) - return false; - if (!sSpellMgr->GetSpellInfo(SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK_CD)) - return false; - return true; - } - - bool CheckProc(ProcEventInfo& eventInfo) - { - if (GetTarget()->HasAura(SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK_CD)) - return false; + SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK, + SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK_CD + }); + } - if (eventInfo.GetActor()->HasAura(SPELL_MONK_CRACKLING_JADE_LIGHTNING_CHANNEL, GetTarget()->GetGUID())) - return false; + bool CheckProc(ProcEventInfo& eventInfo) + { + if (GetTarget()->HasAura(SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK_CD)) + return false; - Spell* currentChanneledSpell = GetTarget()->GetCurrentSpell(CURRENT_CHANNELED_SPELL); - if (!currentChanneledSpell || currentChanneledSpell->GetSpellInfo()->Id != SPELL_MONK_CRACKLING_JADE_LIGHTNING_CHANNEL) - return false; + if (eventInfo.GetActor()->HasAura(SPELL_MONK_CRACKLING_JADE_LIGHTNING_CHANNEL, GetTarget()->GetGUID())) + return false; - return true; - } + Spell* currentChanneledSpell = GetTarget()->GetCurrentSpell(CURRENT_CHANNELED_SPELL); + if (!currentChanneledSpell || currentChanneledSpell->GetSpellInfo()->Id != SPELL_MONK_CRACKLING_JADE_LIGHTNING_CHANNEL) + return false; - void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) - { - GetTarget()->CastSpell(eventInfo.GetActor(), SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK, TRIGGERED_FULL_MASK); - GetTarget()->CastSpell(GetTarget(), SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK_CD, TRIGGERED_FULL_MASK); - } + return true; + } - void Register() override - { - DoCheckProc += AuraCheckProcFn(spell_monk_crackling_jade_lightning_aura_AuraScript::CheckProc); - OnEffectProc += AuraEffectProcFn(spell_monk_crackling_jade_lightning_aura_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); - } - }; + void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) + { + GetTarget()->CastSpell(eventInfo.GetActor(), SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK, TRIGGERED_FULL_MASK); + GetTarget()->CastSpell(GetTarget(), SPELL_MONK_CRACKLING_JADE_LIGHTNING_KNOCKBACK_CD, TRIGGERED_FULL_MASK); + } - AuraScript* GetAuraScript() const override + void Register() override { - return new spell_monk_crackling_jade_lightning_aura_AuraScript(); + DoCheckProc += AuraCheckProcFn(spell_monk_crackling_jade_lightning_knockback_proc_aura::CheckProc); + OnEffectProc += AuraEffectProcFn(spell_monk_crackling_jade_lightning_knockback_proc_aura::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); } }; // 115546 - Provoke -class spell_monk_provoke : public SpellScriptLoader +class spell_monk_provoke : public SpellScript { -public: - spell_monk_provoke() : SpellScriptLoader("spell_monk_provoke") { } + PrepareSpellScript(spell_monk_provoke); - class spell_monk_provoke_SpellScript : public SpellScript - { - PrepareSpellScript(spell_monk_provoke_SpellScript); - - static uint32 const BlackOxStatusEntry = 61146; + static uint32 const BlackOxStatusEntry = 61146; - bool Validate(SpellInfo const* spellInfo) override + bool Validate(SpellInfo const* spellInfo) override + { + if (!(spellInfo->GetExplicitTargetMask() & TARGET_FLAG_UNIT_MASK)) // ensure GetExplTargetUnit() will return something meaningful during CheckCast + return false; + return ValidateSpellInfo( { - if (!(spellInfo->GetExplicitTargetMask() & TARGET_FLAG_UNIT_MASK)) // ensure GetExplTargetUnit() will return something meaningful during CheckCast - return false; - if (!sSpellMgr->GetSpellInfo(SPELL_MONK_PROVOKE_SINGLE_TARGET)) - return false; - if (!sSpellMgr->GetSpellInfo(SPELL_MONK_PROVOKE_AOE)) - return false; - return true; - } + SPELL_MONK_PROVOKE_SINGLE_TARGET, + SPELL_MONK_PROVOKE_AOE + }); + } - SpellCastResult CheckExplicitTarget() + SpellCastResult CheckExplicitTarget() + { + if (GetExplTargetUnit()->GetEntry() != BlackOxStatusEntry) { - if (GetExplTargetUnit()->GetEntry() != BlackOxStatusEntry) - { - SpellInfo const* singleTarget = sSpellMgr->AssertSpellInfo(SPELL_MONK_PROVOKE_SINGLE_TARGET); - SpellCastResult singleTargetExplicitResult = singleTarget->CheckExplicitTarget(GetCaster(), GetExplTargetUnit()); - if (singleTargetExplicitResult != SPELL_CAST_OK) - return singleTargetExplicitResult; - } - else if (GetExplTargetUnit()->GetOwnerGUID() != GetCaster()->GetGUID()) - return SPELL_FAILED_BAD_TARGETS; - - return SPELL_CAST_OK; + SpellInfo const* singleTarget = sSpellMgr->AssertSpellInfo(SPELL_MONK_PROVOKE_SINGLE_TARGET); + SpellCastResult singleTargetExplicitResult = singleTarget->CheckExplicitTarget(GetCaster(), GetExplTargetUnit()); + if (singleTargetExplicitResult != SPELL_CAST_OK) + return singleTargetExplicitResult; } + else if (GetExplTargetUnit()->GetOwnerGUID() != GetCaster()->GetGUID()) + return SPELL_FAILED_BAD_TARGETS; - void HandleDummy(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - if (GetHitUnit()->GetEntry() != BlackOxStatusEntry) - GetCaster()->CastSpell(GetHitUnit(), SPELL_MONK_PROVOKE_SINGLE_TARGET, true); - else - GetCaster()->CastSpell(GetHitUnit(), SPELL_MONK_PROVOKE_AOE, true); - } + return SPELL_CAST_OK; + } - void Register() override - { - OnCheckCast += SpellCheckCastFn(spell_monk_provoke_SpellScript::CheckExplicitTarget); - OnEffectHitTarget += SpellEffectFn(spell_monk_provoke_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; + void HandleDummy(SpellEffIndex effIndex) + { + PreventHitDefaultEffect(effIndex); + if (GetHitUnit()->GetEntry() != BlackOxStatusEntry) + GetCaster()->CastSpell(GetHitUnit(), SPELL_MONK_PROVOKE_SINGLE_TARGET, true); + else + GetCaster()->CastSpell(GetHitUnit(), SPELL_MONK_PROVOKE_AOE, true); + } - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_monk_provoke_SpellScript(); + OnCheckCast += SpellCheckCastFn(spell_monk_provoke::CheckExplicitTarget); + OnEffectHitTarget += SpellEffectFn(spell_monk_provoke::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; void AddSC_monk_spell_scripts() { - new spell_monk_crackling_jade_lightning(); - new spell_monk_crackling_jade_lightning_knockback_proc_aura(); - new spell_monk_provoke(); + RegisterAuraScript(spell_monk_crackling_jade_lightning); + RegisterAuraScript(spell_monk_crackling_jade_lightning_knockback_proc_aura); + RegisterSpellScript(spell_monk_provoke); } diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 809c7074538..61d65d0f52e 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -1380,9 +1380,7 @@ class spell_warl_t4_2p_bonus : public SpellScriptLoader bool Validate(SpellInfo const* /*spellInfo*/) override { - if (!sSpellMgr->GetSpellInfo(Trigger)) - return false; - return true; + return ValidateSpellInfo({ Trigger }); } void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) |