aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp70
-rw-r--r--src/server/scripts/Events/hallows_end.cpp57
-rw-r--r--src/server/scripts/Events/midsummer.cpp53
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp29
-rw-r--r--src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp60
-rw-r--r--src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp31
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp29
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp23
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp23
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp108
-rw-r--r--src/server/scripts/Northrend/zone_dragonblight.cpp62
-rw-r--r--src/server/scripts/Northrend/zone_grizzly_hills.cpp34
-rw-r--r--src/server/scripts/Northrend/zone_howling_fjord.cpp91
-rw-r--r--src/server/scripts/Northrend/zone_storm_peaks.cpp34
-rw-r--r--src/server/scripts/Northrend/zone_zuldrak.cpp127
-rw-r--r--src/server/scripts/Outland/outland_script_loader.cpp4
-rw-r--r--src/server/scripts/Outland/zone_blades_edge_mountains.cpp83
-rw-r--r--src/server/scripts/Outland/zone_zangarmarsh.cpp100
18 files changed, 1014 insertions, 4 deletions
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
index ad5f9e9588c..f641abf1763 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
@@ -31,6 +31,7 @@ EndScriptData */
#include "MotionMaster.h"
#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
+#include "SpellScript.h"
#include "TemporarySummon.h"
#include "Weather.h"
#include "zulaman.h"
@@ -46,7 +47,16 @@ enum Spells
SPELL_ELECTRICAL_OVERLOAD = 43658,
SPELL_EAGLE_SWOOP = 44732,
SPELL_ZAP = 43137,
- SPELL_SAND_STORM = 25160
+ SPELL_SAND_STORM = 25160,
+
+ SPELL_ELECTRICAL_STORM_AURA = 44007,
+ SPELL_TELEPORT_SELF = 44006,
+
+ SPELL_ELECTRICAL_ARC_1 = 43653,
+ SPELL_ELECTRICAL_ARC_2 = 43654,
+ SPELL_ELECTRICAL_ARC_3 = 43655,
+ SPELL_ELECTRICAL_ARC_4 = 43656,
+ SPELL_ELECTRICAL_ARC_5 = 43659
};
enum Says
@@ -466,8 +476,66 @@ class npc_akilzon_eagle : public CreatureScript
}
};
+// 43648 - Electrical Storm
+class spell_akilzon_electrical_storm : public SpellScript
+{
+ PrepareSpellScript(spell_akilzon_electrical_storm);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_ELECTRICAL_STORM_AURA, SPELL_TELEPORT_SELF });
+ }
+
+ void HandleAfterHit()
+ {
+ Unit* target = GetHitUnit();
+ target->CastSpell(target, SPELL_ELECTRICAL_STORM_AURA, true);
+ target->CastSpell(target, SPELL_TELEPORT_SELF, true);
+ }
+
+ void Register() override
+ {
+ AfterHit += SpellHitFn(spell_akilzon_electrical_storm::HandleAfterHit);
+ }
+};
+
+// 43658 - Electrical Overload Graphic Pulse
+class spell_akilzon_electrical_overload : public SpellScript
+{
+ PrepareSpellScript(spell_akilzon_electrical_overload);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
+ {
+ SPELL_ELECTRICAL_ARC_1,
+ SPELL_ELECTRICAL_ARC_2,
+ SPELL_ELECTRICAL_ARC_3,
+ SPELL_ELECTRICAL_ARC_4,
+ SPELL_ELECTRICAL_ARC_5
+ });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ caster->CastSpell(caster, SPELL_ELECTRICAL_ARC_1, true);
+ caster->CastSpell(caster, SPELL_ELECTRICAL_ARC_2, true);
+ caster->CastSpell(caster, SPELL_ELECTRICAL_ARC_3, true);
+ caster->CastSpell(caster, SPELL_ELECTRICAL_ARC_4, true);
+ caster->CastSpell(caster, SPELL_ELECTRICAL_ARC_5, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_akilzon_electrical_overload::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_boss_akilzon()
{
new boss_akilzon();
new npc_akilzon_eagle();
+ RegisterSpellScript(spell_akilzon_electrical_storm);
+ RegisterSpellScript(spell_akilzon_electrical_overload);
}
diff --git a/src/server/scripts/Events/hallows_end.cpp b/src/server/scripts/Events/hallows_end.cpp
index 3744aaca6ed..4143047c002 100644
--- a/src/server/scripts/Events/hallows_end.cpp
+++ b/src/server/scripts/Events/hallows_end.cpp
@@ -95,6 +95,32 @@ class spell_hallow_end_candy_pirate : public AuraScript
}
};
+enum TrickInitial
+{
+ SPELL_TRICK_INITIAL = 24750
+};
+
+// 24714 - Trick
+class spell_hallow_end_trick_initial : public SpellScript
+{
+ PrepareSpellScript(spell_hallow_end_trick_initial);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_TRICK_INITIAL });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_TRICK_INITIAL);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_hallow_end_trick_initial::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
enum TrickSpells
{
SPELL_PIRATE_COSTUME_MALE = 24708,
@@ -302,12 +328,43 @@ class spell_hallow_end_wand : public SpellScript
}
};
+enum CreateWaterBucket
+{
+ SPELL_CREATE_WATER_BUCKET_BARREL_SPLASH = 43244,
+ SPELL_JUST_LOOTED_WATER_BARREL = 44410
+};
+
+// 42144 - Headless Horseman - Create Water Bucket
+class spell_hallow_end_create_water_bucket : public SpellScript
+{
+ PrepareSpellScript(spell_hallow_end_create_water_bucket);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_CREATE_WATER_BUCKET_BARREL_SPLASH, SPELL_JUST_LOOTED_WATER_BARREL });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* target = GetHitUnit();
+ target->CastSpell(target, SPELL_CREATE_WATER_BUCKET_BARREL_SPLASH);
+ target->CastSpell(target, SPELL_JUST_LOOTED_WATER_BARREL);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_hallow_end_create_water_bucket::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_event_hallows_end()
{
RegisterSpellScript(spell_hallow_end_candy);
RegisterSpellScript(spell_hallow_end_candy_pirate);
+ RegisterSpellScript(spell_hallow_end_trick_initial);
RegisterSpellScript(spell_hallow_end_trick);
RegisterSpellScript(spell_hallow_end_trick_or_treat);
RegisterSpellScript(spell_hallow_end_tricky_treat);
RegisterSpellScript(spell_hallow_end_wand);
+ RegisterSpellScript(spell_hallow_end_create_water_bucket);
}
diff --git a/src/server/scripts/Events/midsummer.cpp b/src/server/scripts/Events/midsummer.cpp
index aff921d63ba..b36fd1a04b6 100644
--- a/src/server/scripts/Events/midsummer.cpp
+++ b/src/server/scripts/Events/midsummer.cpp
@@ -490,6 +490,57 @@ public:
explicit spell_midsummer_cleansing_flames(CleansingFlames triggeredSpell) : _triggeredSpell(triggeredSpell) { }
};
+enum StampOutBonfire
+{
+ SPELL_STAMP_OUT_BONFIRE_EVENT = 45443,
+ SPELL_STAMP_OUT_BONFIRE_ART_KIT = 46903,
+ SPELL_STAMP_OUT_BONFIRE_DUMMY = 45437
+};
+
+// 45458 - Holiday - Midsummer, Stamp Out Bonfire, Quest Complete
+class spell_midsummer_stamp_out_bonfire_quest_complete : public AuraScript
+{
+ PrepareAuraScript(spell_midsummer_stamp_out_bonfire_quest_complete);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_STAMP_OUT_BONFIRE_EVENT });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_STAMP_OUT_BONFIRE_EVENT, true);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_midsummer_stamp_out_bonfire_quest_complete::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+// 45443 - Stamp Out Bonfire, Event
+class spell_midsummer_stamp_out_bonfire_event : public SpellScript
+{
+ PrepareSpellScript(spell_midsummer_stamp_out_bonfire_event);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_STAMP_OUT_BONFIRE_ART_KIT, SPELL_STAMP_OUT_BONFIRE_DUMMY });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ caster->CastSpell(caster, SPELL_STAMP_OUT_BONFIRE_ART_KIT, true);
+ caster->CastSpell(caster, SPELL_STAMP_OUT_BONFIRE_DUMMY, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_midsummer_stamp_out_bonfire_event::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_event_midsummer()
{
RegisterSpellScript(spell_midsummer_braziers_hit);
@@ -511,4 +562,6 @@ void AddSC_event_midsummer()
RegisterSpellScriptWithArgs(spell_midsummer_cleansing_flames, "spell_midsummer_cleansing_flames_the_undercity", SPELL_CREATE_FLAME_OF_THE_UNDERCITY);
RegisterSpellScriptWithArgs(spell_midsummer_cleansing_flames, "spell_midsummer_cleansing_flames_silvermoon", SPELL_CREATE_FLAME_OF_SILVERMOON);
RegisterSpellScriptWithArgs(spell_midsummer_cleansing_flames, "spell_midsummer_cleansing_flames_the_exodar", SPELL_CREATE_FLAME_OF_THE_EXODAR);
+ RegisterSpellScript(spell_midsummer_stamp_out_bonfire_quest_complete);
+ RegisterSpellScript(spell_midsummer_stamp_out_bonfire_event);
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
index 3573cf7b610..62cd8395880 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
@@ -30,6 +30,7 @@
#include "ScriptedEscortAI.h"
#include "ScriptedGossip.h"
#include "SpellInfo.h"
+#include "SpellScript.h"
#include "ScriptMgr.h"
#include "SplineChainMovementGenerator.h"
#include "TemporarySummon.h"
@@ -1465,6 +1466,32 @@ public:
}
};
+enum TeleportToStratholme
+{
+ SPELL_TELEPORT_TO_COT_STRATHOLME = 53436
+};
+
+// 53435 - Teleport to CoT Stratholme Phase 4
+class spell_cos_teleport_to_cot_stratholme_phase_4 : public SpellScript
+{
+ PrepareSpellScript(spell_cos_teleport_to_cot_stratholme_phase_4);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_TELEPORT_TO_COT_STRATHOLME });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_TELEPORT_TO_COT_STRATHOLME);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_cos_teleport_to_cot_stratholme_phase_4::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_culling_of_stratholme()
{
new npc_hearthsinger_forresten_cot();
@@ -1480,4 +1507,6 @@ void AddSC_culling_of_stratholme()
new npc_sergeant_morigan();
new npc_roger_owens();
new npc_crate_helper();
+
+ RegisterSpellScript(spell_cos_teleport_to_cot_stratholme_phase_4);
}
diff --git a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp
index 78448c14103..2480516cf95 100644
--- a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp
+++ b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp
@@ -665,6 +665,64 @@ class spell_azuremyst_isle_cast_fishing_net : public SpellScript
}
};
+/*######
+## Quest 9542: Totem of Vark
+######*/
+
+enum TotemOfVark
+{
+ SPELL_SHADOW_OF_THE_FOREST_SI_DND = 32213
+};
+
+// 30447 - Shadow of the Forest
+class spell_azuremyst_isle_shadow_of_the_forest_creature : public AuraScript
+{
+ PrepareAuraScript(spell_azuremyst_isle_shadow_of_the_forest_creature);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_SHADOW_OF_THE_FOREST_SI_DND });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_SHADOW_OF_THE_FOREST_SI_DND, true);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_azuremyst_isle_shadow_of_the_forest_creature::AfterApply, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+// 30448 - Shadow of the Forest
+class spell_azuremyst_isle_shadow_of_the_forest_player : public AuraScript
+{
+ PrepareAuraScript(spell_azuremyst_isle_shadow_of_the_forest_player);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_SHADOW_OF_THE_FOREST_SI_DND });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ if (Unit* caster = GetCaster())
+ caster->CastSpell(GetTarget(), SPELL_SHADOW_OF_THE_FOREST_SI_DND, true);
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_SHADOW_OF_THE_FOREST_SI_DND);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_azuremyst_isle_shadow_of_the_forest_player::AfterApply, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_azuremyst_isle_shadow_of_the_forest_player::AfterRemove, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
void AddSC_azuremyst_isle()
{
new npc_draenei_survivor();
@@ -674,4 +732,6 @@ void AddSC_azuremyst_isle()
new npc_geezle();
RegisterSpellScript(spell_inoculate_nestlewood);
RegisterSpellScript(spell_azuremyst_isle_cast_fishing_net);
+ RegisterSpellScript(spell_azuremyst_isle_shadow_of_the_forest_creature);
+ RegisterSpellScript(spell_azuremyst_isle_shadow_of_the_forest_player);
}
diff --git a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp
index 1f4d9053f8f..b9bc4293c1f 100644
--- a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp
+++ b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp
@@ -141,10 +141,41 @@ class spell_dustwallow_marsh_salvage_wreckage : public SpellScript
}
};
+/*######
+## Quest 11142: Survey Alcaz Island
+######*/
+
+enum SurveyAlcazIsland
+{
+ SPELL_ALCAZ_SURVEY_CREDIT = 42316
+};
+
+// 42385 - Alcaz Survey Aura
+class spell_dustwallow_marsh_alcaz_survey_aura : public AuraScript
+{
+ PrepareAuraScript(spell_dustwallow_marsh_alcaz_survey_aura);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_ALCAZ_SURVEY_CREDIT });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_ALCAZ_SURVEY_CREDIT, true);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_dustwallow_marsh_alcaz_survey_aura::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
void AddSC_dustwallow_marsh()
{
RegisterSpellScript(spell_ooze_zap);
RegisterSpellScript(spell_ooze_zap_channel_end);
RegisterSpellScript(spell_energize_aoe);
RegisterSpellScript(spell_dustwallow_marsh_salvage_wreckage);
+ RegisterSpellScript(spell_dustwallow_marsh_alcaz_survey_aura);
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
index 04098b968b7..9c9237d5bc6 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
@@ -45,7 +45,10 @@ enum Spells
SPELL_SOULSTORM = 68872,
SPELL_SOULSTORM_CHANNEL = 69008, // Pre-fight
SPELL_SOULSTORM_VISUAL = 68870, // Pre-cast Soulstorm
- SPELL_PURPLE_BANISH_VISUAL = 68862 // Used by Soul Fragment (Aura)
+ SPELL_PURPLE_BANISH_VISUAL = 68862, // Used by Soul Fragment (Aura)
+
+ SPELL_KNOCKDOWN_STUN = 68848,
+ SPELL_DRAW_CORRUPTED_SOUL = 68846
};
enum Events
@@ -328,6 +331,29 @@ class spell_bronjahm_soulstorm_targeting : public SpellScript
}
};
+// 68839 - Corrupt Soul
+class spell_bronjahm_corrupt_soul : public AuraScript
+{
+ PrepareAuraScript(spell_bronjahm_corrupt_soul);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_KNOCKDOWN_STUN, SPELL_DRAW_CORRUPTED_SOUL });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ target->CastSpell(target, SPELL_KNOCKDOWN_STUN, true);
+ target->CastSpell(target, SPELL_DRAW_CORRUPTED_SOUL, true);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_bronjahm_corrupt_soul::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
class achievement_bronjahm_soul_power : public AchievementCriteriaScript
{
public:
@@ -348,5 +374,6 @@ void AddSC_boss_bronjahm()
RegisterSpellScriptWithArgs(spell_bronjahm_soulstorm_visual, "spell_bronjahm_soulstorm_channel");
RegisterSpellScriptWithArgs(spell_bronjahm_soulstorm_visual, "spell_bronjahm_soulstorm_visual");
RegisterSpellScript(spell_bronjahm_soulstorm_targeting);
+ RegisterSpellScript(spell_bronjahm_corrupt_soul);
new achievement_bronjahm_soul_power();
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
index bb927142fdd..93acc9e9a91 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
@@ -202,6 +202,7 @@ enum PreAddSpells
SPELL_RUNIC_STRIKE = 62322,
SPELL_AURA_OF_CELERITY = 62320,
+ SPELL_AURA_OF_CELERITY_VISUAL = 62398,
SPELL_IMPALE = 62331,
SPELL_WHIRLING_TRIP = 64151,
@@ -2129,6 +2130,27 @@ class spell_thorim_activate_lightning_orb_periodic : public SpellScriptLoader
}
};
+// 62320 - Aura of Celerity
+class spell_thorim_aura_of_celerity : public AuraScript
+{
+ PrepareAuraScript(spell_thorim_aura_of_celerity);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_AURA_OF_CELERITY_VISUAL });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_AURA_OF_CELERITY_VISUAL);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_thorim_aura_of_celerity::AfterRemove, EFFECT_0, SPELL_AURA_MELEE_SLOW, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
class achievement_dont_stand_in_the_lightning : public AchievementCriteriaScript
{
public:
@@ -2203,6 +2225,7 @@ void AddSC_boss_thorim()
new spell_thorim_arena_leap();
new spell_thorim_runic_smash();
new spell_thorim_activate_lightning_orb_periodic();
+ RegisterSpellScript(spell_thorim_aura_of_celerity);
new achievement_dont_stand_in_the_lightning();
new achievement_lose_your_illusion();
new achievement_i_ll_take_you_all_on();
diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
index efc7f28a3d7..19620eeb30d 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
@@ -18,6 +18,7 @@
#include "ScriptMgr.h"
#include "InstanceScript.h"
#include "ScriptedCreature.h"
+#include "SpellScript.h"
#include "violet_hold.h"
enum ZuramatTexts
@@ -187,6 +188,27 @@ private:
SummonList _summons;
};
+// 54361, 59743 - Void Shift
+class spell_zuramat_void_shift : public AuraScript
+{
+ PrepareAuraScript(spell_zuramat_void_shift);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_VOID_SHIFTED });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_VOID_SHIFTED, true);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_zuramat_void_shift::AfterRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
class achievement_void_dance : public AchievementCriteriaScript
{
public:
@@ -209,5 +231,6 @@ void AddSC_boss_zuramat()
{
RegisterVioletHoldCreatureAI(boss_zuramat);
RegisterVioletHoldCreatureAI(npc_void_sentry);
+ RegisterSpellScript(spell_zuramat_void_shift);
new achievement_void_dance();
}
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp
index caed83fb973..838baad156b 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -1904,6 +1904,111 @@ class spell_borean_tundra_ultrasonic_screwdriver : public SpellScript
}
};
+/*######
+## Quest 11652: The Plains of Nasam
+######*/
+
+enum ThePlainsOfNasam
+{
+ SPELL_DROP_WARSONG_LAND_MINE_1 = 45751,
+ SPELL_DROP_WARSONG_LAND_MINE_2 = 45752,
+ SPELL_DROP_WARSONG_LAND_MINE_3 = 45753,
+ SPELL_DROP_WARSONG_LAND_MINE_4 = 45754,
+ SPELL_DROP_WARSONG_LAND_MINE_5 = 45755,
+ SPELL_DROP_WARSONG_LAND_MINE_6 = 45756,
+ SPELL_DROP_WARSONG_LAND_MINE_7 = 47839,
+ SPELL_DROP_WARSONG_LAND_MINE_8 = 45749
+};
+
+static constexpr std::array<uint32, 8> DropLandMineSpells =
+{
+ SPELL_DROP_WARSONG_LAND_MINE_1, SPELL_DROP_WARSONG_LAND_MINE_2, SPELL_DROP_WARSONG_LAND_MINE_3, SPELL_DROP_WARSONG_LAND_MINE_4,
+ SPELL_DROP_WARSONG_LAND_MINE_5, SPELL_DROP_WARSONG_LAND_MINE_6, SPELL_DROP_WARSONG_LAND_MINE_7, SPELL_DROP_WARSONG_LAND_MINE_8
+};
+
+// 45750 - Land Mine Barrier
+class spell_borean_tundra_land_mine_barrier : public SpellScript
+{
+ PrepareSpellScript(spell_borean_tundra_land_mine_barrier);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(DropLandMineSpells);
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ for (uint32 spells : DropLandMineSpells)
+ caster->CastSpell(caster, spells);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_borean_tundra_land_mine_barrier::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+/*######
+## Quest 11681: Rescuing Evanor
+######*/
+
+enum RescuingEvanor
+{
+ SPELL_AMBER_LEDGE_TO_BERYL_POINT = 45883
+};
+
+// 45992 - Taxi - Amber Ledge to Beryl Point Platform
+class spell_borean_tundra_taxi_amber_ledge_to_beryl_point_platform : public AuraScript
+{
+ PrepareAuraScript(spell_borean_tundra_taxi_amber_ledge_to_beryl_point_platform);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_AMBER_LEDGE_TO_BERYL_POINT });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_AMBER_LEDGE_TO_BERYL_POINT);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_borean_tundra_taxi_amber_ledge_to_beryl_point_platform::AfterRemove, EFFECT_0, SPELL_AURA_MECHANIC_IMMUNITY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+/*######
+## Quest 11969: Springing the Trap
+######*/
+
+enum SpringingTheTrap
+{
+ SPELL_COLDARRA_TO_TRANSITUS = 46814
+};
+
+// 46813 - Taxi - Coldarra Ledge to Transitus Shield
+class spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield : public AuraScript
+{
+ PrepareAuraScript(spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_COLDARRA_TO_TRANSITUS });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_COLDARRA_TO_TRANSITUS);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
void AddSC_borean_tundra()
{
RegisterCreatureAI(npc_beryl_sorcerer);
@@ -1936,4 +2041,7 @@ void AddSC_borean_tundra()
RegisterSpellScript(spell_borean_tundra_weakness_to_lightning_on_quest_complete);
RegisterSpellScript(spell_borean_tundra_signal_alliance);
RegisterSpellScript(spell_borean_tundra_ultrasonic_screwdriver);
+ RegisterSpellScript(spell_borean_tundra_land_mine_barrier);
+ RegisterSpellScript(spell_borean_tundra_taxi_amber_ledge_to_beryl_point_platform);
+ RegisterSpellScript(spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield);
}
diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp
index e63d63c14e4..fec320bea96 100644
--- a/src/server/scripts/Northrend/zone_dragonblight.cpp
+++ b/src/server/scripts/Northrend/zone_dragonblight.cpp
@@ -913,6 +913,36 @@ class spell_dragonblight_fill_blood_unholy_frost_gem : public SpellScript
}
};
+/*######
+## Quest 12076: Messy Business
+######*/
+
+enum MessyBusiness
+{
+ SPELL_CORROSIVE_SPIT = 47447
+};
+
+// 47435 - Scrape Corrosive Spit
+class spell_dragonblight_scrape_corrosive_spit : public SpellScript
+{
+ PrepareSpellScript(spell_dragonblight_scrape_corrosive_spit);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_CORROSIVE_SPIT });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->RemoveAurasDueToSpell(SPELL_CORROSIVE_SPIT);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_dragonblight_scrape_corrosive_spit::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
// 47447 - Corrosive Spit
class spell_dragonblight_corrosive_spit : public AuraScript
{
@@ -1035,6 +1065,36 @@ class spell_dragonblight_end_of_the_line_quest_completion_script : public SpellS
}
};
+/*######
+## Quest 12028: Spiritual Insight
+######*/
+
+enum SpiritualInsight
+{
+ SPELL_SPIRITUAL_INSIGHT = 47189
+};
+
+// 47190 - Toalu'u's Spiritual Incense
+class spell_dragonblight_toaluus_spiritual_incense : public AuraScript
+{
+ PrepareAuraScript(spell_dragonblight_toaluus_spiritual_incense);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_SPIRITUAL_INSIGHT });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_SPIRITUAL_INSIGHT);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_dragonblight_toaluus_spiritual_incense::AfterApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
void AddSC_dragonblight()
{
RegisterCreatureAI(npc_commander_eligor_dawnbringer);
@@ -1052,8 +1112,10 @@ void AddSC_dragonblight()
RegisterSpellScript(spell_dragonblight_bombard_the_ballistae_fx_master);
RegisterSpellScript(spell_dragonblight_surge_needle_teleporter);
RegisterSpellScript(spell_dragonblight_fill_blood_unholy_frost_gem);
+ RegisterSpellScript(spell_dragonblight_scrape_corrosive_spit);
RegisterSpellScript(spell_dragonblight_corrosive_spit);
RegisterSpellScript(spell_dragonblight_focus_on_the_beach_quest_completion_script);
RegisterSpellScript(spell_dragonblight_atop_the_woodlands_quest_completion_script);
RegisterSpellScript(spell_dragonblight_end_of_the_line_quest_completion_script);
+ RegisterSpellScript(spell_dragonblight_toaluus_spiritual_incense);
}
diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
index 1ec851a1f8c..32017d9f486 100644
--- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp
+++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
@@ -1066,6 +1066,39 @@ class spell_grizzly_hills_hand_over_reins : public SpellScript
}
};
+/*######
+## Quest 12121: See You on the Other Side
+######*/
+
+enum SeeYouOnTheOtherSide
+{
+ SPELL_SUMMON_YOUR_CORPSE = 61612,
+ SPELL_ON_THE_OTHER_SIDE = 61611
+};
+
+// 47744 - Rage of Jin'arrak
+class spell_grizzly_hills_rage_of_jinarrak : public AuraScript
+{
+ PrepareAuraScript(spell_grizzly_hills_rage_of_jinarrak);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_SUMMON_YOUR_CORPSE, SPELL_ON_THE_OTHER_SIDE });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ target->CastSpell(target, SPELL_SUMMON_YOUR_CORPSE, true);
+ target->CastSpell(target, SPELL_ON_THE_OTHER_SIDE, true);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_grizzly_hills_rage_of_jinarrak::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
void AddSC_grizzly_hills()
{
RegisterCreatureAI(npc_emily);
@@ -1091,4 +1124,5 @@ void AddSC_grizzly_hills()
RegisterSpellScript(spell_grizzly_hills_escape_from_silverbrook);
RegisterSpellScript(spell_grizzly_hills_escape_from_silverbrook_summon_worgen);
RegisterSpellScript(spell_grizzly_hills_hand_over_reins);
+ RegisterSpellScript(spell_grizzly_hills_rage_of_jinarrak);
}
diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp
index f9fec626827..d7518888cf5 100644
--- a/src/server/scripts/Northrend/zone_howling_fjord.cpp
+++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp
@@ -749,6 +749,94 @@ class spell_fjord_failed_mix_concoction_2 : public SpellScript
}
};
+/*######
+## Quest 11448: The Explorers' League Outpost
+######*/
+
+enum TheExplorersLeagueOutpost
+{
+ SPELL_TAXI_TO_EXPLORERS_LEAGUE = 44280
+};
+
+// 51221 - Taxi to Explorers' League Outpost
+class spell_fjord_taxi_to_explorers_league_outpost : public AuraScript
+{
+ PrepareAuraScript(spell_fjord_taxi_to_explorers_league_outpost);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_TAXI_TO_EXPLORERS_LEAGUE });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_TAXI_TO_EXPLORERS_LEAGUE);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_fjord_taxi_to_explorers_league_outpost::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+/*######
+## Quest 11323, 11325: In Worg's Clothing
+######*/
+
+enum InWorgsClothing
+{
+ SPELL_WORG_DISGUISE_DUMMY = 68347,
+ SPELL_WORG_DISGUISE = 43369
+};
+
+// 43369 - Worg Disguise
+class spell_fjord_worg_disguise : public AuraScript
+{
+ PrepareAuraScript(spell_fjord_worg_disguise);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_WORG_DISGUISE_DUMMY });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_WORG_DISGUISE_DUMMY);
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_WORG_DISGUISE_DUMMY);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_fjord_worg_disguise::AfterApply, EFFECT_0, SPELL_AURA_FORCE_REACTION, AURA_EFFECT_HANDLE_REAL);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_fjord_worg_disguise::AfterRemove, EFFECT_0, SPELL_AURA_FORCE_REACTION, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+// 68347 - Worg Disguise
+class spell_fjord_worg_disguise_dummy : public AuraScript
+{
+ PrepareAuraScript(spell_fjord_worg_disguise_dummy);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_WORG_DISGUISE });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_WORG_DISGUISE);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_fjord_worg_disguise_dummy::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
void AddSC_howling_fjord()
{
RegisterCreatureAI(npc_daegarn);
@@ -769,4 +857,7 @@ void AddSC_howling_fjord()
RegisterSpellScript(spell_fjord_mixing_vrykul_blood);
RegisterSpellScript(spell_fjord_failed_mix_concoction_1);
RegisterSpellScript(spell_fjord_failed_mix_concoction_2);
+ RegisterSpellScript(spell_fjord_taxi_to_explorers_league_outpost);
+ RegisterSpellScript(spell_fjord_worg_disguise);
+ RegisterSpellScript(spell_fjord_worg_disguise_dummy);
}
diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp
index a76580a65e6..9bcc0f7733c 100644
--- a/src/server/scripts/Northrend/zone_storm_peaks.cpp
+++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp
@@ -1321,6 +1321,39 @@ class spell_storm_peaks_flaming_arrow_triggered_effect : public AuraScript
}
};
+/*######
+## Quest 12920: Catching up with Brann
+######*/
+
+enum CatchingUpWithBrann
+{
+ SPELL_DESPAWN_BRANN = 61121,
+ SPELL_CONTACT_BRANN = 55038
+};
+
+// 61122 - Contact Brann
+class spell_storm_peaks_contact_brann : public SpellScript
+{
+ PrepareSpellScript(spell_storm_peaks_contact_brann);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_DESPAWN_BRANN, SPELL_CONTACT_BRANN });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ caster->CastSpell(caster, SPELL_DESPAWN_BRANN);
+ caster->CastSpell(caster, SPELL_CONTACT_BRANN);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_storm_peaks_contact_brann::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_storm_peaks()
{
RegisterCreatureAI(npc_brunnhildar_prisoner);
@@ -1350,4 +1383,5 @@ void AddSC_storm_peaks()
RegisterSpellScript(spell_storm_peaks_unstable_explosive_detonation);
RegisterSpellScript(spell_storm_peaks_call_of_earth);
RegisterSpellScript(spell_storm_peaks_flaming_arrow_triggered_effect);
+ RegisterSpellScript(spell_storm_peaks_contact_brann);
}
diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp
index a4b18fbd7a7..8d6c19b5b95 100644
--- a/src/server/scripts/Northrend/zone_zuldrak.cpp
+++ b/src/server/scripts/Northrend/zone_zuldrak.cpp
@@ -1075,6 +1075,27 @@ class spell_zuldrak_quenching_mist : public AuraScript
}
};
+// 52989 - Akali's Stun
+class spell_zuldrak_akalis_stun : public AuraScript
+{
+ PrepareAuraScript(spell_zuldrak_akalis_stun);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_FLICKERING_FLAMES });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_FLICKERING_FLAMES);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_zuldrak_akalis_stun::AfterApply, EFFECT_0, SPELL_AURA_MOD_STUN, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
/*######
## Quest 12661: Infiltrating Voltarus / 12669: So Far, So Bad / 12676: Sabotage / 12677: Hazardous Materials / 12713: Betrayal
######*/
@@ -1196,6 +1217,109 @@ class spell_zuldrak_gymers_throw : public SpellScript
}
};
+/*######
+## Quest 12557: Lab Work
+######*/
+
+enum LabWork
+{
+ SPELL_LAB_WORK_HAVE_WITHERED_BATWING = 51060,
+ SPELL_LAB_WORK_HAVE_MUDDY_MIRE_MAGGOT = 51068,
+ SPELL_LAB_WORK_HAVE_AMBERSEED = 51088,
+ SPELL_LAB_WORK_HAVE_CHILLED_SERPENT_MUCUS = 51094,
+
+ SPELL_WITHERED_BATWING_KILL_CREDIT = 51226,
+ SPELL_MUDDY_MIRE_MAGGOT_KILL_CREDIT = 51227,
+ SPELL_AMBERSEED_KILL_CREDIT = 51228,
+ SPELL_CHILLED_SERPENT_MUCUS_KILL_CREDIT = 51229
+};
+
+// 51060 - Have Withered Batwing
+// 51068 - Have Muddy Mire Maggot
+// 51088 - Have Amberseed
+// 51094 - Have Chilled Serpent Mucus
+class spell_zuldrak_have_ingredient : public AuraScript
+{
+ PrepareAuraScript(spell_zuldrak_have_ingredient);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
+ {
+ SPELL_WITHERED_BATWING_KILL_CREDIT,
+ SPELL_MUDDY_MIRE_MAGGOT_KILL_CREDIT,
+ SPELL_AMBERSEED_KILL_CREDIT,
+ SPELL_CHILLED_SERPENT_MUCUS_KILL_CREDIT
+ });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ switch (GetId())
+ {
+ case SPELL_LAB_WORK_HAVE_WITHERED_BATWING:
+ GetTarget()->CastSpell(GetTarget(), SPELL_WITHERED_BATWING_KILL_CREDIT);
+ break;
+ case SPELL_LAB_WORK_HAVE_MUDDY_MIRE_MAGGOT:
+ GetTarget()->CastSpell(GetTarget(), SPELL_MUDDY_MIRE_MAGGOT_KILL_CREDIT);
+ break;
+ case SPELL_LAB_WORK_HAVE_AMBERSEED:
+ GetTarget()->CastSpell(GetTarget(), SPELL_AMBERSEED_KILL_CREDIT);
+ break;
+ case SPELL_LAB_WORK_HAVE_CHILLED_SERPENT_MUCUS:
+ GetTarget()->CastSpell(GetTarget(), SPELL_CHILLED_SERPENT_MUCUS_KILL_CREDIT);
+ break;
+ default:
+ break;
+ }
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_zuldrak_have_ingredient::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+/*######
+## Quest 12710: Disclosure
+######*/
+
+// 52839 - Summon Escort Aura
+class spell_zuldrak_summon_escort_aura : public AuraScript
+{
+ PrepareAuraScript(spell_zuldrak_summon_escort_aura);
+
+ enum Disclosure
+ {
+ SPELL_SCOURGE_DISGUISE = 51966,
+ SPELL_SUMMON_ESCORT = 52775,
+ SPELL_SCOURGE_DISGUISE_ESCORT = 52842
+ };
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
+ {
+ SPELL_SCOURGE_DISGUISE,
+ SPELL_SUMMON_ESCORT,
+ SPELL_SCOURGE_DISGUISE_ESCORT
+ });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ target->RemoveAurasDueToSpell(SPELL_SCOURGE_DISGUISE);
+ target->CastSpell(target, SPELL_SUMMON_ESCORT);
+ target->CastSpell(target, SPELL_SCOURGE_DISGUISE_ESCORT);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_zuldrak_summon_escort_aura::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
void AddSC_zuldrak()
{
RegisterCreatureAI(npc_released_offspring_harkoa);
@@ -1220,8 +1344,11 @@ void AddSC_zuldrak()
RegisterSpellScript(spell_zuldrak_summon_nass);
RegisterSpellScript(spell_zuldrak_remove_akalis_stun);
RegisterSpellScript(spell_zuldrak_quenching_mist);
+ RegisterSpellScript(spell_zuldrak_akalis_stun);
RegisterSpellScript(spell_zuldrak_summon_stefan);
RegisterSpellScript(spell_zuldrak_zuldrak_rat);
RegisterSpellScript(spell_zuldrak_gymers_grab);
RegisterSpellScript(spell_zuldrak_gymers_throw);
+ RegisterSpellScript(spell_zuldrak_have_ingredient);
+ RegisterSpellScript(spell_zuldrak_summon_escort_aura);
}
diff --git a/src/server/scripts/Outland/outland_script_loader.cpp b/src/server/scripts/Outland/outland_script_loader.cpp
index 605d0e383c5..95c9dc5a9af 100644
--- a/src/server/scripts/Outland/outland_script_loader.cpp
+++ b/src/server/scripts/Outland/outland_script_loader.cpp
@@ -136,7 +136,7 @@ void AddSC_netherstorm();
void AddSC_shadowmoon_valley();
// void AddSC_shattrath_city();
void AddSC_terokkar_forest();
-// void AddSC_zangarmarsh();
+void AddSC_zangarmarsh();
// The name of this function should match:
// void Add${NameOfDirectory}Scripts()
@@ -262,5 +262,5 @@ void AddOutlandScripts()
AddSC_shadowmoon_valley();
// AddSC_shattrath_city();
AddSC_terokkar_forest();
- // AddSC_zangarmarsh();
+ AddSC_zangarmarsh();
}
diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
index e3edce057eb..97b57e3e125 100644
--- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
+++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
@@ -1308,6 +1308,87 @@ class spell_bem_check_fly_mount : public SpellScript
}
};
+enum ApexisSwiftness
+{
+ SPELL_APEXIS_VIBRATIONS = 40623,
+ SPELL_APEXIS_EMANATIONS = 40625,
+ SPELL_APEXIS_ENLIGHTENMENT = 40626,
+ SPELL_SWIFTNESS_APEXIS_VIBRATIONS = 40624,
+ SPELL_SWIFTNESS_APEXIS_EMANATIONS = 40627,
+ SPELL_SWIFTNESS_APEXIS_ENLIGHTENMENT = 40628
+};
+
+// 40623 - Apexis Vibrations
+// 40625 - Apexis Emanations
+// 40626 - Apexis Enlightenment
+class spell_bem_apexis_swiftness : public AuraScript
+{
+ PrepareAuraScript(spell_bem_apexis_swiftness);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
+ {
+ SPELL_SWIFTNESS_APEXIS_VIBRATIONS,
+ SPELL_SWIFTNESS_APEXIS_EMANATIONS,
+ SPELL_SWIFTNESS_APEXIS_ENLIGHTENMENT
+ });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ switch (GetId())
+ {
+ case SPELL_APEXIS_VIBRATIONS:
+ GetTarget()->RemoveAurasDueToSpell(SPELL_SWIFTNESS_APEXIS_VIBRATIONS);
+ break;
+ case SPELL_APEXIS_EMANATIONS:
+ GetTarget()->RemoveAurasDueToSpell(SPELL_SWIFTNESS_APEXIS_EMANATIONS);
+ break;
+ case SPELL_APEXIS_ENLIGHTENMENT:
+ GetTarget()->RemoveAurasDueToSpell(SPELL_SWIFTNESS_APEXIS_ENLIGHTENMENT);
+ break;
+ default:
+ break;
+ }
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_bem_apexis_swiftness::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+/*######
+## Quest 10525: Vision Guide
+######*/
+
+enum VisionGuide
+{
+ SPELL_VISION_GUIDE = 36573
+};
+
+// 36587 - Vision Guide
+class spell_bem_vision_guide : public AuraScript
+{
+ PrepareAuraScript(spell_bem_vision_guide);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_VISION_GUIDE });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_VISION_GUIDE, true);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_bem_vision_guide::AfterApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
void AddSC_blades_edge_mountains()
{
new npc_nether_drake();
@@ -1329,4 +1410,6 @@ void AddSC_blades_edge_mountains()
RegisterSpellScript(spell_bem_aggro_burst);
RegisterSpellScript(spell_bem_choose_loc);
RegisterSpellScript(spell_bem_check_fly_mount);
+ RegisterSpellScript(spell_bem_apexis_swiftness);
+ RegisterSpellScript(spell_bem_vision_guide);
}
diff --git a/src/server/scripts/Outland/zone_zangarmarsh.cpp b/src/server/scripts/Outland/zone_zangarmarsh.cpp
new file mode 100644
index 00000000000..113002e999e
--- /dev/null
+++ b/src/server/scripts/Outland/zone_zangarmarsh.cpp
@@ -0,0 +1,100 @@
+/*
+ * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ScriptMgr.h"
+#include "SpellScript.h"
+#include "Unit.h"
+
+/*######
+## Quest 9718: As the Crow Flies
+######*/
+
+enum AsTheCrowFlies
+{
+ SPELL_STORMCROW_SHAPE = 31746,
+ SPELL_WHISPER_AURA_1 = 31773,
+ SPELL_WHISPER_AURA_2 = 31774,
+ SPELL_WHISPER_AURA_3 = 31775,
+ SPELL_WHISPER_AURA_4 = 31776,
+ SPELL_WHISPER_AURA_5 = 31777
+};
+
+// 31606 - Stormcrow Amulet
+class spell_zangarmarsh_stormcrow_amulet : public AuraScript
+{
+ PrepareAuraScript(spell_zangarmarsh_stormcrow_amulet);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_STORMCROW_SHAPE, SPELL_WHISPER_AURA_1 });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ target->CastSpell(target, SPELL_STORMCROW_SHAPE, true);
+ target->CastSpell(target, SPELL_WHISPER_AURA_1, true);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_zangarmarsh_stormcrow_amulet::AfterApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+// 31773, 31774, 31775, 31776 - As the Crow Flies Whisper Aura
+class spell_zangarmarsh_whisper_aura : public AuraScript
+{
+ PrepareAuraScript(spell_zangarmarsh_whisper_aura);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_WHISPER_AURA_5 });
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ switch (GetId())
+ {
+ case SPELL_WHISPER_AURA_1:
+ GetTarget()->CastSpell(GetTarget(), SPELL_WHISPER_AURA_2, true);
+ break;
+ case SPELL_WHISPER_AURA_2:
+ GetTarget()->CastSpell(GetTarget(), SPELL_WHISPER_AURA_3, true);
+ break;
+ case SPELL_WHISPER_AURA_3:
+ GetTarget()->CastSpell(GetTarget(), SPELL_WHISPER_AURA_4, true);
+ break;
+ case SPELL_WHISPER_AURA_4:
+ GetTarget()->CastSpell(GetTarget(), SPELL_WHISPER_AURA_5, true);
+ break;
+ default:
+ break;
+ }
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_zangarmarsh_whisper_aura::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+void AddSC_zangarmarsh()
+{
+ RegisterSpellScript(spell_zangarmarsh_stormcrow_amulet);
+ RegisterSpellScript(spell_zangarmarsh_whisper_aura);
+}