aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Northrend
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts/Northrend')
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp42
-rw-r--r--src/server/scripts/Northrend/zone_dragonblight.cpp74
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);
}