aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Northrend
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2022-06-22 22:37:52 +0300
committerShauren <shauren.trinity@gmail.com>2022-09-05 19:26:59 +0200
commit6fb332d935ebe84b5728d5496173c8b7109e08db (patch)
tree992101910d7e8ae2c072d7159372e86a30fb62e2 /src/server/scripts/Northrend
parentc8d56b8c6741b237ebf6c7f8f023c4b5ebd0d0ca (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.cpp54
-rw-r--r--src/server/scripts/Northrend/zone_dragonblight.cpp74
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);
}