diff options
| author | offl <11556157+offl@users.noreply.github.com> | 2022-06-22 22:37:52 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-22 22:37:52 +0300 |
| commit | 3808e614d9760a2588fec0c1b0b4c30feda36dcc (patch) | |
| tree | d784e9226c539c479cef16273cb38574f9a433e9 /src/server/scripts/Northrend | |
| parent | ffcc976524e3b1ba99023e40e7fc9cce4d01a2f7 (diff) | |
Scripts/Spells: Get rid of several DB spell scripts (#28048)
Diffstat (limited to 'src/server/scripts/Northrend')
| -rw-r--r-- | src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp | 42 | ||||
| -rw-r--r-- | src/server/scripts/Northrend/zone_dragonblight.cpp | 74 |
2 files changed, 112 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..2470d23ba71 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp @@ -28,6 +28,11 @@ 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 }; enum Yells { @@ -243,10 +248,38 @@ 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 +}; + +// 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); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + for (uint32 spells : 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 +295,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 +303,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 fee88d9159c..a6675345ce5 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -869,6 +869,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); @@ -884,4 +956,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); } |
