diff options
| author | offl <11556157+offl@users.noreply.github.com> | 2022-06-22 22:37:52 +0300 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-09-05 19:26:59 +0200 |
| commit | 6fb332d935ebe84b5728d5496173c8b7109e08db (patch) | |
| tree | 992101910d7e8ae2c072d7159372e86a30fb62e2 /src/server/scripts/Northrend | |
| parent | c8d56b8c6741b237ebf6c7f8f023c4b5ebd0d0ca (diff) | |
Scripts/Spells: Get rid of several DB spell scripts (#28048)
(cherry picked from commit 3808e614d9760a2588fec0c1b0b4c30feda36dcc)
Diffstat (limited to 'src/server/scripts/Northrend')
| -rw-r--r-- | src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp | 54 | ||||
| -rw-r--r-- | src/server/scripts/Northrend/zone_dragonblight.cpp | 74 |
2 files changed, 124 insertions, 4 deletions
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp index 8ee87833f93..fb3a8007270 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp @@ -17,6 +17,7 @@ #include "ScriptMgr.h" #include "GameObject.h" +#include "Map.h" #include "nexus.h" #include "ScriptedCreature.h" #include "SpellScript.h" @@ -28,7 +29,18 @@ enum Spells SPELL_FRENZY = 48017, SPELL_SUMMON_CRYSTALLINE_TANGLER = 61564, SPELL_CRYSTAL_SPIKES = 47958, + + SPELL_SUMMON_CRYSTAL_SPIKE_1 = 47954, + SPELL_SUMMON_CRYSTAL_SPIKE_2 = 47955, + SPELL_SUMMON_CRYSTAL_SPIKE_3 = 47956, + SPELL_SUMMON_CRYSTAL_SPIKE_4 = 47957, + + SPELL_SUMMON_CRYSTAL_SPIKE_1_H = 57077, + SPELL_SUMMON_CRYSTAL_SPIKE_2_H = 57078, + SPELL_SUMMON_CRYSTAL_SPIKE_3_H = 57080, + SPELL_SUMMON_CRYSTAL_SPIKE_4_H = 57081 }; + enum Yells { SAY_AGGRO = 1, @@ -243,10 +255,43 @@ private: }; +std::array<uint32, 4> const SummonSpells = +{ + SPELL_SUMMON_CRYSTAL_SPIKE_1, SPELL_SUMMON_CRYSTAL_SPIKE_2, SPELL_SUMMON_CRYSTAL_SPIKE_3, SPELL_SUMMON_CRYSTAL_SPIKE_4 +}; + +std::array<uint32, 4> const SummonSpellsHeroic = +{ + SPELL_SUMMON_CRYSTAL_SPIKE_1_H, SPELL_SUMMON_CRYSTAL_SPIKE_2_H, SPELL_SUMMON_CRYSTAL_SPIKE_3_H, SPELL_SUMMON_CRYSTAL_SPIKE_4_H +}; + +// 47958, 57082 - Crystal Spikes +class spell_ormorok_summon_crystal_spikes : public SpellScript +{ + PrepareSpellScript(spell_ormorok_summon_crystal_spikes); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo(SummonSpells) && ValidateSpellInfo(SummonSpellsHeroic); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + for (uint32 spells : (caster->GetMap()->IsHeroic() ? SummonSpellsHeroic : SummonSpells)) + caster->CastSpell(caster, spells); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_ormorok_summon_crystal_spikes::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + // 47941 - Crystal Spike -class spell_crystal_spike : public AuraScript +class spell_ormorok_crystal_spike : public AuraScript { - PrepareAuraScript(spell_crystal_spike); + PrepareAuraScript(spell_ormorok_crystal_spike); void HandlePeriodic(AuraEffect const* /*aurEff*/) { @@ -262,7 +307,7 @@ class spell_crystal_spike : public AuraScript void Register() override { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_crystal_spike::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_ormorok_crystal_spike::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); } }; @@ -270,5 +315,6 @@ void AddSC_boss_ormorok() { RegisterNexusCreatureAI(boss_ormorok); RegisterNexusCreatureAI(npc_crystal_spike_trigger); - RegisterSpellScript(spell_crystal_spike); + RegisterSpellScript(spell_ormorok_summon_crystal_spikes); + RegisterSpellScript(spell_ormorok_crystal_spike); } diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index 00645b16f8b..75689833ab1 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -879,6 +879,78 @@ class spell_dragonblight_bombard_the_ballistae_fx_master : public SpellScript } }; +/*###### +## Quest 12060, 12061: Projections and Plans +######*/ + +enum ProjectionsAndPlans +{ + SPELL_TELE_MOONREST_GARDENS = 47324, + SPELL_TELE_SURGE_NEEDLE = 47325, + + AREA_SURGE_NEEDLE = 4156, + AREA_MOONREST_GARDENS = 4157 +}; + +// 47097 - Surge Needle Teleporter +class spell_dragonblight_surge_needle_teleporter : public SpellScript +{ + PrepareSpellScript(spell_dragonblight_surge_needle_teleporter); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_TELE_MOONREST_GARDENS, SPELL_TELE_SURGE_NEEDLE }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + switch (caster->GetAreaId()) + { + case AREA_SURGE_NEEDLE: + caster->CastSpell(caster, SPELL_TELE_MOONREST_GARDENS); + break; + case AREA_MOONREST_GARDENS: + caster->CastSpell(caster, SPELL_TELE_SURGE_NEEDLE); + break; + default: + break; + } + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_dragonblight_surge_needle_teleporter::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +/*###### +## Quest 12125, 12126, 12127: In Service of Blood & In Service of the Unholy & In Service of Frost +######*/ + +// 47703 - Unholy Union +// 47724 - Frost Draw +// 50252 - Blood Draw +class spell_dragonblight_fill_blood_unholy_frost_gem : public SpellScript +{ + PrepareSpellScript(spell_dragonblight_fill_blood_unholy_frost_gem); + + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValue())); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_dragonblight_fill_blood_unholy_frost_gem::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_dragonblight() { RegisterCreatureAI(npc_commander_eligor_dawnbringer); @@ -894,4 +966,6 @@ void AddSC_dragonblight() RegisterSpellScript(spell_dragonblight_scarlet_raven_priest_image_master); RegisterSpellScript(spell_dragonblight_cancel_scarlet_raven_priest_image); RegisterSpellScript(spell_dragonblight_bombard_the_ballistae_fx_master); + RegisterSpellScript(spell_dragonblight_surge_needle_teleporter); + RegisterSpellScript(spell_dragonblight_fill_blood_unholy_frost_gem); } |
