aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp27
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp23
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp29
-rw-r--r--src/server/scripts/EasternKingdoms/eastern_kingdoms.cpp175
-rw-r--r--src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp2
-rw-r--r--src/server/scripts/Events/brewfest.cpp27
-rw-r--r--src/server/scripts/Events/lunar_festival.cpp27
-rw-r--r--src/server/scripts/Events/midsummer.cpp53
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp74
-rw-r--r--src/server/scripts/Kalimdor/kalimdor_script_loader.cpp2
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp63
-rw-r--r--src/server/scripts/Northrend/zone_dalaran.cpp39
-rw-r--r--src/server/scripts/Northrend/zone_dragonblight.cpp93
-rw-r--r--src/server/scripts/Northrend/zone_grizzly_hills.cpp44
-rw-r--r--src/server/scripts/Northrend/zone_icecrown.cpp81
-rw-r--r--src/server/scripts/Northrend/zone_zuldrak.cpp151
-rw-r--r--src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.cpp58
-rw-r--r--src/server/scripts/Outland/outland_script_loader.cpp2
-rw-r--r--src/server/scripts/Outland/zone_blades_edge_mountains.cpp31
-rw-r--r--src/server/scripts/Outland/zone_hellfire_peninsula.cpp35
-rw-r--r--src/server/scripts/Outland/zone_shadowmoon_valley.cpp73
-rw-r--r--src/server/scripts/Outland/zone_terokkar_forest.cpp41
22 files changed, 1150 insertions, 0 deletions
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
index 61049c875a2..60437c0eb78 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
@@ -1143,6 +1143,32 @@ class spell_chapter1_runeforging_credit : public SpellScript
}
};
+enum SkyDarkenerAssault
+{
+ SPELL_SKY_DARKENER_ASSAULT = 52125
+};
+
+// 52124 - Sky Darkener Assault
+class spell_chapter1_sky_darkener_assault : public SpellScript
+{
+ PrepareSpellScript(spell_chapter1_sky_darkener_assault);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_SKY_DARKENER_ASSAULT });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_SKY_DARKENER_ASSAULT);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_chapter1_sky_darkener_assault::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_the_scarlet_enclave_c1()
{
new npc_unworthy_initiate();
@@ -1160,4 +1186,5 @@ void AddSC_the_scarlet_enclave_c1()
RegisterCreatureAI(npc_scarlet_ghoul);
RegisterSpellScript(spell_gift_of_the_harvester);
RegisterSpellScript(spell_chapter1_runeforging_credit);
+ RegisterSpellScript(spell_chapter1_sky_darkener_assault);
}
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
index a892e1ae0fe..44c339f8310 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
@@ -53,6 +53,7 @@ enum Spells
SPELL_ENTROPIUS_COSMETIC_SPAWN = 46223,
SPELL_DARKNESS_E = 46269,
SPELL_NEGATIVE_ENERGY_PERIODIC_E = 46284,
+ SPELL_NEGATIVE_ENERGY_DAMAGE = 46285,
SPELL_BLACKHOLE = 46282,
SPELL_SUMMON_DARKFIEND_E = 46263,
@@ -635,6 +636,27 @@ class spell_muru_negative_energy_periodic : public AuraScript
}
};
+// 46289 - Negative Energy
+class spell_muru_negative_energy : public SpellScript
+{
+ PrepareSpellScript(spell_muru_negative_energy);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_NEGATIVE_ENERGY_DAMAGE });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_NEGATIVE_ENERGY_DAMAGE, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_muru_negative_energy::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_boss_muru()
{
RegisterSunwellPlateauCreatureAI(boss_muru);
@@ -649,4 +671,5 @@ void AddSC_boss_muru()
RegisterSpellScript(spell_transform_visual_missile_periodic);
RegisterSpellScript(spell_summon_blood_elves_periodic);
RegisterSpellScript(spell_muru_negative_energy_periodic);
+ RegisterSpellScript(spell_muru_negative_energy);
}
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp
index 9a641317d36..940e7981c1d 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp
@@ -16,10 +16,12 @@
*/
#include "ScriptMgr.h"
+#include "SpellScript.h"
#include "zulgurub.h"
#include "GameEventMgr.h"
#include "GameObject.h"
#include "GameObjectAI.h"
+#include "Unit.h"
/*######
## go_brazier_of_madness
@@ -74,7 +76,34 @@ public:
}
};
+enum PoisonousBlood
+{
+ SPELL_POISONOUS_BLOOD = 24321
+};
+
+// 24320 - Poisonous Blood
+class spell_zulgurub_poisonous_blood : public SpellScript
+{
+ PrepareSpellScript(spell_zulgurub_poisonous_blood);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_POISONOUS_BLOOD });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_POISONOUS_BLOOD);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_zulgurub_poisonous_blood::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_zulgurub()
{
new go_brazier_of_madness();
+ RegisterSpellScript(spell_zulgurub_poisonous_blood);
}
diff --git a/src/server/scripts/EasternKingdoms/eastern_kingdoms.cpp b/src/server/scripts/EasternKingdoms/eastern_kingdoms.cpp
new file mode 100644
index 00000000000..4e36f5e5c39
--- /dev/null
+++ b/src/server/scripts/EasternKingdoms/eastern_kingdoms.cpp
@@ -0,0 +1,175 @@
+/*
+ * 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 "DBCStores.h"
+#include "ScriptMgr.h"
+#include "SpellScript.h"
+#include "Unit.h"
+
+enum Translocation
+{
+ SPELL_TRANSLOCATION_DUSKWITHER_SPIRE_UP = 26566,
+ SPELL_TRANSLOCATION_DUSKWITHER_SPIRE_DOWN = 26572,
+ SPELL_TRANSLOCATION_SILVERMOON_TO_UNDERCITY = 25649,
+ SPELL_TRANSLOCATION_UNDERCITY_TO_SILVERMOON = 35730
+};
+
+// 34448 - Translocate
+class spell_eastern_kingdoms_duskwither_spire_up : public SpellScript
+{
+ PrepareSpellScript(spell_eastern_kingdoms_duskwither_spire_up);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_TRANSLOCATION_DUSKWITHER_SPIRE_UP });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_TRANSLOCATION_DUSKWITHER_SPIRE_UP);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_eastern_kingdoms_duskwither_spire_up::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 34452 - Translocate
+class spell_eastern_kingdoms_duskwither_spire_down : public SpellScript
+{
+ PrepareSpellScript(spell_eastern_kingdoms_duskwither_spire_down);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_TRANSLOCATION_DUSKWITHER_SPIRE_DOWN });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_TRANSLOCATION_DUSKWITHER_SPIRE_DOWN);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_eastern_kingdoms_duskwither_spire_down::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 35376 - Translocate
+class spell_eastern_kingdoms_silvermoon_to_undercity : public SpellScript
+{
+ PrepareSpellScript(spell_eastern_kingdoms_silvermoon_to_undercity);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_TRANSLOCATION_SILVERMOON_TO_UNDERCITY });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_TRANSLOCATION_SILVERMOON_TO_UNDERCITY);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_eastern_kingdoms_silvermoon_to_undercity::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 35727 - Translocate
+class spell_eastern_kingdoms_undercity_to_silvermoon : public SpellScript
+{
+ PrepareSpellScript(spell_eastern_kingdoms_undercity_to_silvermoon);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_TRANSLOCATION_UNDERCITY_TO_SILVERMOON });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_TRANSLOCATION_UNDERCITY_TO_SILVERMOON);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_eastern_kingdoms_undercity_to_silvermoon::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+enum DeadScarBombingRun
+{
+ SOUND_ID_BOMBING_RUN = 12318
+};
+
+// 45071 - Quest - Sunwell Daily - Dead Scar Bombing Run
+class spell_eastern_kingdoms_dead_scar_bombing_run : public SpellScript
+{
+ PrepareSpellScript(spell_eastern_kingdoms_dead_scar_bombing_run);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return sSoundEntriesStore.LookupEntry(SOUND_ID_BOMBING_RUN);
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->PlayDirectSound(SOUND_ID_BOMBING_RUN);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_eastern_kingdoms_dead_scar_bombing_run::HandleScript, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+enum DawnbladeAttack
+{
+ SPELL_DAWNBLADE_ATTACK = 45189
+};
+
+// 45188 - Dawnblade Attack
+class spell_eastern_kingdoms_dawnblade_attack : public SpellScript
+{
+ PrepareSpellScript(spell_eastern_kingdoms_dawnblade_attack);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_DAWNBLADE_ATTACK });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_DAWNBLADE_ATTACK);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_eastern_kingdoms_dawnblade_attack::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+void AddSC_eastern_kingdoms()
+{
+ RegisterSpellScript(spell_eastern_kingdoms_duskwither_spire_up);
+ RegisterSpellScript(spell_eastern_kingdoms_duskwither_spire_down);
+ RegisterSpellScript(spell_eastern_kingdoms_silvermoon_to_undercity);
+ RegisterSpellScript(spell_eastern_kingdoms_undercity_to_silvermoon);
+ RegisterSpellScript(spell_eastern_kingdoms_dead_scar_bombing_run);
+ RegisterSpellScript(spell_eastern_kingdoms_dawnblade_attack);
+}
diff --git a/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp b/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp
index ef2c5c36bb3..56b5438747d 100644
--- a/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp
+++ b/src/server/scripts/EasternKingdoms/eastern_kingdoms_script_loader.cpp
@@ -174,6 +174,7 @@ void AddSC_boss_renataki();
void AddSC_boss_wushoolay();
void AddSC_instance_zulgurub();
void AddSC_zulgurub();
+void AddSC_eastern_kingdoms();
//void AddSC_alterac_mountains();
//void AddSC_arathi_highlands();
void AddSC_blasted_lands();
@@ -354,6 +355,7 @@ void AddEasternKingdomsScripts()
AddSC_boss_wushoolay();
AddSC_instance_zulgurub();
AddSC_zulgurub();
+ AddSC_eastern_kingdoms();
//AddSC_alterac_mountains();
//AddSC_arathi_highlands();
AddSC_blasted_lands();
diff --git a/src/server/scripts/Events/brewfest.cpp b/src/server/scripts/Events/brewfest.cpp
index b4698876f33..1894dcb1110 100644
--- a/src/server/scripts/Events/brewfest.cpp
+++ b/src/server/scripts/Events/brewfest.cpp
@@ -663,6 +663,32 @@ class spell_brewfest_botm_empty_bottle_throw_resolve : public SpellScript
}
};
+enum MoleMachine
+{
+ SPELL_PORT_TO_GRIM_GUZZLER = 47523
+};
+
+// 49466 - Mole Machine Portal Schedule
+class spell_brewfest_mole_machine_portal_schedule : public SpellScript
+{
+ PrepareSpellScript(spell_brewfest_mole_machine_portal_schedule);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PORT_TO_GRIM_GUZZLER });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_PORT_TO_GRIM_GUZZLER);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_brewfest_mole_machine_portal_schedule::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_event_brewfest()
{
RegisterSpellScript(spell_brewfest_giddyup);
@@ -683,4 +709,5 @@ void AddSC_event_brewfest()
RegisterSpellScript(spell_brewfest_botm_teach_language);
RegisterSpellScript(spell_brewfest_botm_weak_alcohol);
RegisterSpellScript(spell_brewfest_botm_empty_bottle_throw_resolve);
+ RegisterSpellScript(spell_brewfest_mole_machine_portal_schedule);
}
diff --git a/src/server/scripts/Events/lunar_festival.cpp b/src/server/scripts/Events/lunar_festival.cpp
index 1ee9faa5172..de4690a5a98 100644
--- a/src/server/scripts/Events/lunar_festival.cpp
+++ b/src/server/scripts/Events/lunar_festival.cpp
@@ -476,10 +476,37 @@ class spell_lunar_festival_elune_candle : public SpellScript
}
};
+enum ElunesBlessing
+{
+ SPELL_ELUNES_BLESSING_QUEST_CREDIT = 26394
+};
+
+// 26393 - Elune's Blessing
+class spell_lunar_festival_elunes_blessing : public SpellScript
+{
+ PrepareSpellScript(spell_lunar_festival_elunes_blessing);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_ELUNES_BLESSING_QUEST_CREDIT });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_ELUNES_BLESSING_QUEST_CREDIT);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_lunar_festival_elunes_blessing::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_event_lunar_festival()
{
RegisterCreatureAI(npc_firework);
RegisterCreatureAI(npc_omen);
RegisterCreatureAI(npc_giant_spotlight);
RegisterSpellScript(spell_lunar_festival_elune_candle);
+ RegisterSpellScript(spell_lunar_festival_elunes_blessing);
}
diff --git a/src/server/scripts/Events/midsummer.cpp b/src/server/scripts/Events/midsummer.cpp
index 2e28d3f18c3..aff921d63ba 100644
--- a/src/server/scripts/Events/midsummer.cpp
+++ b/src/server/scripts/Events/midsummer.cpp
@@ -445,6 +445,51 @@ class spell_midsummer_fling_torch_missed : public SpellScript
}
};
+enum CleansingFlames
+{
+ SPELL_CREATE_FLAME_OF_DARNASSUS = 29099,
+ SPELL_CREATE_FLAME_OF_STORMWIND = 29101,
+ SPELL_CREATE_FLAME_OF_IRONFORGE = 29102,
+ SPELL_CREATE_FLAME_OF_ORGRIMMAR = 29130,
+ SPELL_CREATE_FLAME_OF_THUNDER_BLUFF = 29132,
+ SPELL_CREATE_FLAME_OF_THE_UNDERCITY = 29133,
+ SPELL_CREATE_FLAME_OF_SILVERMOON = 46689,
+ SPELL_CREATE_FLAME_OF_THE_EXODAR = 46690
+};
+
+// 29126 - Cleansing Flames
+// 29137 - Cleansing Flames
+// 29135 - Cleansing Flames
+// 29136 - Cleansing Flames
+// 29138 - Cleansing Flames
+// 29139 - Cleansing Flames
+// 46672 - Cleansing Flames
+// 46671 - Cleansing Flames
+class spell_midsummer_cleansing_flames : public SpellScript
+{
+ PrepareSpellScript(spell_midsummer_cleansing_flames);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ _triggeredSpell });
+ }
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), _triggeredSpell);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_midsummer_cleansing_flames::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+
+ uint32 _triggeredSpell;
+
+public:
+ explicit spell_midsummer_cleansing_flames(CleansingFlames triggeredSpell) : _triggeredSpell(triggeredSpell) { }
+};
+
void AddSC_event_midsummer()
{
RegisterSpellScript(spell_midsummer_braziers_hit);
@@ -458,4 +503,12 @@ void AddSC_event_midsummer()
RegisterSpellScript(spell_midsummer_fling_torch_triggered);
RegisterSpellScript(spell_midsummer_fling_torch_catch);
RegisterSpellScript(spell_midsummer_fling_torch_missed);
+ RegisterSpellScriptWithArgs(spell_midsummer_cleansing_flames, "spell_midsummer_cleansing_flames_darnassus", SPELL_CREATE_FLAME_OF_DARNASSUS);
+ RegisterSpellScriptWithArgs(spell_midsummer_cleansing_flames, "spell_midsummer_cleansing_flames_stormwind", SPELL_CREATE_FLAME_OF_STORMWIND);
+ RegisterSpellScriptWithArgs(spell_midsummer_cleansing_flames, "spell_midsummer_cleansing_flames_ironforge", SPELL_CREATE_FLAME_OF_IRONFORGE);
+ RegisterSpellScriptWithArgs(spell_midsummer_cleansing_flames, "spell_midsummer_cleansing_flames_orgrimmar", SPELL_CREATE_FLAME_OF_ORGRIMMAR);
+ RegisterSpellScriptWithArgs(spell_midsummer_cleansing_flames, "spell_midsummer_cleansing_flames_thunder_bluff", SPELL_CREATE_FLAME_OF_THUNDER_BLUFF);
+ 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);
}
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp
new file mode 100644
index 00000000000..998138c40d7
--- /dev/null
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp
@@ -0,0 +1,74 @@
+/*
+ * 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"
+
+enum Spells
+{
+ SPELL_TELEPORT_TO_TWIN_EMPS_EFFECT = 29181,
+ SPELL_TELEPORT_TO_FINAL_CHAMBER_EFFECT = 29190
+};
+
+// 29182 - Teleport to Twin Emperors
+class spell_temple_of_ahnqiraj_teleport_to_twin_emperors : public SpellScript
+{
+ PrepareSpellScript(spell_temple_of_ahnqiraj_teleport_to_twin_emperors);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_TELEPORT_TO_TWIN_EMPS_EFFECT });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_TELEPORT_TO_TWIN_EMPS_EFFECT);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_temple_of_ahnqiraj_teleport_to_twin_emperors::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 29188 - Teleport to Final Chamber
+class spell_temple_of_ahnqiraj_teleport_to_final_chamber : public SpellScript
+{
+ PrepareSpellScript(spell_temple_of_ahnqiraj_teleport_to_final_chamber);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_TELEPORT_TO_FINAL_CHAMBER_EFFECT });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_TELEPORT_TO_FINAL_CHAMBER_EFFECT);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_temple_of_ahnqiraj_teleport_to_final_chamber::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+void AddSC_temple_of_ahnqiraj()
+{
+ RegisterSpellScript(spell_temple_of_ahnqiraj_teleport_to_twin_emperors);
+ RegisterSpellScript(spell_temple_of_ahnqiraj_teleport_to_final_chamber);
+}
diff --git a/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp b/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp
index 7f0d324e920..4506c2e4b7f 100644
--- a/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp
+++ b/src/server/scripts/Kalimdor/kalimdor_script_loader.cpp
@@ -95,6 +95,7 @@ void AddSC_boss_twinemperors();
void AddSC_boss_ouro();
void AddSC_npc_anubisath_sentinel();
void AddSC_instance_temple_of_ahnqiraj();
+void AddSC_temple_of_ahnqiraj();
// Wailing caverns
void AddSC_wailing_caverns();
void AddSC_instance_wailing_caverns();
@@ -208,6 +209,7 @@ void AddKalimdorScripts()
AddSC_boss_ouro();
AddSC_npc_anubisath_sentinel();
AddSC_instance_temple_of_ahnqiraj();
+ AddSC_temple_of_ahnqiraj();
// Wailing caverns
AddSC_wailing_caverns();
AddSC_instance_wailing_caverns();
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp
index 2c7870b4834..1678b4867b5 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -1729,6 +1729,67 @@ class spell_borean_tundra_arcane_prisoner_rescue : public SpellScript
}
};
+/*######
+## Quest 11896: Weakness to Lightning
+######*/
+
+enum WeaknessToLightning
+{
+ SPELL_POWER_OF_THE_STORM = 46424
+};
+
+// 46550 - Weakness to Lightning: On Quest Complete
+class spell_borean_tundra_weakness_to_lightning_on_quest_complete : public SpellScript
+{
+ PrepareSpellScript(spell_borean_tundra_weakness_to_lightning_on_quest_complete);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_POWER_OF_THE_STORM });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->RemoveAurasDueToSpell(SPELL_POWER_OF_THE_STORM);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_borean_tundra_weakness_to_lightning_on_quest_complete::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+/*######
+## Quest 11711: Coward Delivery... Under 30 Minutes or it's Free
+######*/
+
+// 45958 - Signal Alliance
+class spell_borean_tundra_signal_alliance : public SpellScript
+{
+ PrepareSpellScript(spell_borean_tundra_signal_alliance);
+
+ bool Validate(SpellInfo const* spellInfo) override
+ {
+ return ValidateSpellInfo(
+ {
+ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()),
+ uint32(spellInfo->GetEffect(EFFECT_1).CalcValue())
+ });
+ }
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ if (caster->HasAura(uint32(GetEffectInfo(EFFECT_0).CalcValue())))
+ caster->CastSpell(caster, uint32(GetEffectValue()));
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_borean_tundra_signal_alliance::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY);
+ }
+};
+
void AddSC_borean_tundra()
{
RegisterCreatureAI(npc_beryl_sorcerer);
@@ -1756,4 +1817,6 @@ void AddSC_borean_tundra()
RegisterSpellScript(spell_borean_tundra_neural_needle);
RegisterSpellScript(spell_borean_tundra_prototype_neural_needle);
RegisterSpellScript(spell_borean_tundra_arcane_prisoner_rescue);
+ RegisterSpellScript(spell_borean_tundra_weakness_to_lightning_on_quest_complete);
+ RegisterSpellScript(spell_borean_tundra_signal_alliance);
}
diff --git a/src/server/scripts/Northrend/zone_dalaran.cpp b/src/server/scripts/Northrend/zone_dalaran.cpp
index f07d65e94f5..0634794a35e 100644
--- a/src/server/scripts/Northrend/zone_dalaran.cpp
+++ b/src/server/scripts/Northrend/zone_dalaran.cpp
@@ -32,6 +32,7 @@ Script Data End */
#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
+#include "SpellScript.h"
#include "WorldSession.h"
/*******************************************************
@@ -255,8 +256,46 @@ private:
EventMap events;
};
+// 54620 - Teleport Crystal: Teleport to Dalaran AICast Script
+class spell_dalaran_teleport_to_dalaran : public SpellScript
+{
+ PrepareSpellScript(spell_dalaran_teleport_to_dalaran);
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ /// @todo: replace this with spell
+ if (Player* target = GetHitUnit()->ToPlayer())
+ target->TeleportTo(571, 5807.75f, 588.063f, 660.939f, 1.64659f);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_dalaran_teleport_to_dalaran::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 58622 - Teleport to Lake Wintergrasp
+class spell_dalaran_teleport_to_lake_wintergrasp : public SpellScript
+{
+ PrepareSpellScript(spell_dalaran_teleport_to_lake_wintergrasp);
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ /// @todo: replace this with spell
+ if (Player* target = GetHitUnit()->ToPlayer())
+ target->TeleportTo(571, 5386.05f, 2840.97f, 418.675f, 3.14159f);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_dalaran_teleport_to_lake_wintergrasp::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_dalaran()
{
RegisterCreatureAI(npc_mageguard_dalaran);
RegisterCreatureAI(npc_minigob_manabonk);
+ RegisterSpellScript(spell_dalaran_teleport_to_dalaran);
+ RegisterSpellScript(spell_dalaran_teleport_to_lake_wintergrasp);
}
diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp
index 18d74441370..537d80d6bb7 100644
--- a/src/server/scripts/Northrend/zone_dragonblight.cpp
+++ b/src/server/scripts/Northrend/zone_dragonblight.cpp
@@ -974,6 +974,96 @@ class spell_dragonblight_corrosive_spit : public AuraScript
}
};
+/*######
+## Quest 12065, 12066: The Focus on the Beach
+######*/
+
+enum TheFocusOnTheBeach
+{
+ SPELL_LEY_LINE_INFORMATION_01 = 47391
+};
+
+// 47393 - The Focus on the Beach: Quest Completion Script
+class spell_dragonblight_focus_on_the_beach_quest_completion_script : public SpellScript
+{
+ PrepareSpellScript(spell_dragonblight_focus_on_the_beach_quest_completion_script);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_LEY_LINE_INFORMATION_01 });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->RemoveAurasDueToSpell(SPELL_LEY_LINE_INFORMATION_01);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_dragonblight_focus_on_the_beach_quest_completion_script::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+/*######
+## Quest 12083, 12084: Atop the Woodlands
+######*/
+
+enum AtopTheWoodlands
+{
+ SPELL_LEY_LINE_INFORMATION_02 = 47473
+};
+
+// 47615 - Atop the Woodlands: Quest Completion Script
+class spell_dragonblight_atop_the_woodlands_quest_completion_script : public SpellScript
+{
+ PrepareSpellScript(spell_dragonblight_atop_the_woodlands_quest_completion_script);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_LEY_LINE_INFORMATION_02 });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->RemoveAurasDueToSpell(SPELL_LEY_LINE_INFORMATION_02);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_dragonblight_atop_the_woodlands_quest_completion_script::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+/*######
+## Quest 12107, 12110: The End of the Line
+######*/
+
+enum TheEndOfTheLine
+{
+ SPELL_LEY_LINE_INFORMATION_03 = 47636
+};
+
+// 47638 - The End of the Line: Quest Completion Script
+class spell_dragonblight_end_of_the_line_quest_completion_script : public SpellScript
+{
+ PrepareSpellScript(spell_dragonblight_end_of_the_line_quest_completion_script);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_LEY_LINE_INFORMATION_03 });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->RemoveAurasDueToSpell(SPELL_LEY_LINE_INFORMATION_03);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_dragonblight_end_of_the_line_quest_completion_script::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_dragonblight()
{
RegisterCreatureAI(npc_commander_eligor_dawnbringer);
@@ -992,4 +1082,7 @@ void AddSC_dragonblight()
RegisterSpellScript(spell_dragonblight_surge_needle_teleporter);
RegisterSpellScript(spell_dragonblight_fill_blood_unholy_frost_gem);
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);
}
diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
index 040dae075e1..29153f0ef0a 100644
--- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp
+++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
@@ -953,6 +953,45 @@ class spell_warhead_fuse : public AuraScript
}
};
+enum
+{
+ SPELL_ENVISION_DRAKURU_01 = 47118,
+ SPELL_ENVISION_DRAKURU_02 = 47150,
+ SPELL_ENVISION_DRAKURU_03 = 47317,
+ SPELL_ENVISION_DRAKURU_04 = 47406,
+ SPELL_ENVISION_DRAKURU_05 = 50440
+};
+
+// 47117 - Script Cast Summon Image of Drakuru
+// 47149 - Script Cast Summon Image of Drakuru 02
+// 47316 - Script Cast Summon Image of Drakuru 03
+// 47405 - Script Cast Summon Image of Drakuru 04
+// 50439 - Script Cast Summon Image of Drakuru 05
+class spell_grizzly_hills_script_cast_summon_image_of_drakuru : public SpellScript
+{
+ PrepareSpellScript(spell_grizzly_hills_script_cast_summon_image_of_drakuru);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ _triggeredSpellId });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), _triggeredSpellId);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_grizzly_hills_script_cast_summon_image_of_drakuru::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+
+ uint32 _triggeredSpellId;
+
+public:
+ explicit spell_grizzly_hills_script_cast_summon_image_of_drakuru(uint32 triggeredSpellId) : _triggeredSpellId(triggeredSpellId) { }
+};
+
void AddSC_grizzly_hills()
{
RegisterCreatureAI(npc_emily);
@@ -970,4 +1009,9 @@ void AddSC_grizzly_hills()
RegisterSpellScript(spell_warhead_detonate);
RegisterSpellScript(spell_vehicle_warhead_fuse);
RegisterSpellScript(spell_warhead_fuse);
+ RegisterSpellScriptWithArgs(spell_grizzly_hills_script_cast_summon_image_of_drakuru, "spell_grizzly_hills_script_cast_summon_image_of_drakuru_01", SPELL_ENVISION_DRAKURU_01);
+ RegisterSpellScriptWithArgs(spell_grizzly_hills_script_cast_summon_image_of_drakuru, "spell_grizzly_hills_script_cast_summon_image_of_drakuru_02", SPELL_ENVISION_DRAKURU_02);
+ RegisterSpellScriptWithArgs(spell_grizzly_hills_script_cast_summon_image_of_drakuru, "spell_grizzly_hills_script_cast_summon_image_of_drakuru_03", SPELL_ENVISION_DRAKURU_03);
+ RegisterSpellScriptWithArgs(spell_grizzly_hills_script_cast_summon_image_of_drakuru, "spell_grizzly_hills_script_cast_summon_image_of_drakuru_04", SPELL_ENVISION_DRAKURU_04);
+ RegisterSpellScriptWithArgs(spell_grizzly_hills_script_cast_summon_image_of_drakuru, "spell_grizzly_hills_script_cast_summon_image_of_drakuru_05", SPELL_ENVISION_DRAKURU_05);
}
diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp
index 0d4481cb673..1e0d24e7717 100644
--- a/src/server/scripts/Northrend/zone_icecrown.cpp
+++ b/src/server/scripts/Northrend/zone_icecrown.cpp
@@ -937,6 +937,84 @@ class spell_icecrown_summon_freed_crusader : public SpellScript
}
};
+/*######
+## Quest 13236, 13395: Army of the Damned
+######*/
+
+enum ArmyOfTheDamned
+{
+ SPELL_GIFT_OF_THE_LICH_KING = 58915,
+ SPELL_CONSUME_MINIONS = 58919
+};
+
+// 58916 - Gift of the Lich King
+class spell_icecrown_gift_of_the_lich_king : public SpellScript
+{
+ PrepareSpellScript(spell_icecrown_gift_of_the_lich_king);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_GIFT_OF_THE_LICH_KING });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_GIFT_OF_THE_LICH_KING);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_icecrown_gift_of_the_lich_king::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 58917 - Consume Minions
+class spell_icecrown_consume_minions : public SpellScript
+{
+ PrepareSpellScript(spell_icecrown_consume_minions);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_CONSUME_MINIONS });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_CONSUME_MINIONS);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_icecrown_consume_minions::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+/*######
+## Quest 12995: Leave Our Mark
+######*/
+
+enum LeaveOurMark
+{
+ NPC_LEAVE_OUR_MARK_KILL_CREDIT_BUNNY = 30220
+};
+
+// 23301 - Ebon Blade Banner
+class spell_icecrown_ebon_blade_banner : public SpellScript
+{
+ PrepareSpellScript(spell_icecrown_ebon_blade_banner);
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ if (Player* caster = GetCaster()->ToPlayer())
+ caster->KilledMonsterCredit(NPC_LEAVE_OUR_MARK_KILL_CREDIT_BUNNY);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_icecrown_ebon_blade_banner::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_icecrown()
{
RegisterCreatureAI(npc_argent_valiant);
@@ -951,4 +1029,7 @@ void AddSC_icecrown()
RegisterSpellScript(spell_icecrown_through_the_eye_the_eye_of_the_lk);
RegisterSpellScript(spell_icecrown_through_the_eye_kill_credit_to_master);
RegisterSpellScript(spell_icecrown_summon_freed_crusader);
+ RegisterSpellScript(spell_icecrown_gift_of_the_lich_king);
+ RegisterSpellScript(spell_icecrown_consume_minions);
+ RegisterSpellScript(spell_icecrown_ebon_blade_banner);
}
diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp
index 389ebc14da4..04be09d4f51 100644
--- a/src/server/scripts/Northrend/zone_zuldrak.cpp
+++ b/src/server/scripts/Northrend/zone_zuldrak.cpp
@@ -906,6 +906,153 @@ class spell_zuldrak_chains_of_the_scourge : public SpellScript
}
};
+/*######
+## Quest 12721: Rampage
+######*/
+
+enum Rampage
+{
+ SPELL_RAMPAGE_SUMMON_AKILZON = 52934,
+ SPELL_RAMPAGE_SUMMON_HALAZZI = 52935,
+ SPELL_RAMPAGE_SUMMON_JANALAI = 52936,
+ SPELL_RAMPAGE_SUMMON_NALORAKK = 52937
+};
+
+// 52933 - Rampage: Summon Zul'Aman Gods Master
+class spell_zuldrak_rampage_summon_zulaman_gods_master : public SpellScript
+{
+ PrepareSpellScript(spell_zuldrak_rampage_summon_zulaman_gods_master);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
+ {
+ SPELL_RAMPAGE_SUMMON_AKILZON,
+ SPELL_RAMPAGE_SUMMON_HALAZZI,
+ SPELL_RAMPAGE_SUMMON_JANALAI,
+ SPELL_RAMPAGE_SUMMON_NALORAKK
+ });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ caster->CastSpell(caster, SPELL_RAMPAGE_SUMMON_AKILZON);
+ caster->CastSpell(caster, SPELL_RAMPAGE_SUMMON_HALAZZI);
+ caster->CastSpell(caster, SPELL_RAMPAGE_SUMMON_JANALAI);
+ caster->CastSpell(caster, SPELL_RAMPAGE_SUMMON_NALORAKK);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_zuldrak_rampage_summon_zulaman_gods_master::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+/*######
+## Quest 12627: Breaking Through Jin'Alai
+######*/
+
+enum BreakingThroughJinAlai
+{
+ SPELL_BREAKING_THROUGH_SUMMON_AKILZON = 51861,
+ SPELL_BREAKING_THROUGH_SUMMON_JANALAI = 52452,
+ SPELL_BREAKING_THROUGH_SUMMON_HALAZZI = 52453,
+ SPELL_BREAKING_THROUGH_SUMMON_NALORAKK = 52454
+};
+
+// 51862 - Breaking Through Jin'Alai: Summon Zul'Aman Gods Master
+class spell_zuldrak_breaking_through_summon_zulaman_gods_master : public SpellScript
+{
+ PrepareSpellScript(spell_zuldrak_breaking_through_summon_zulaman_gods_master);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
+ {
+ SPELL_BREAKING_THROUGH_SUMMON_AKILZON,
+ SPELL_BREAKING_THROUGH_SUMMON_JANALAI,
+ SPELL_BREAKING_THROUGH_SUMMON_HALAZZI,
+ SPELL_BREAKING_THROUGH_SUMMON_NALORAKK
+ });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ caster->CastSpell(caster, SPELL_BREAKING_THROUGH_SUMMON_AKILZON);
+ caster->CastSpell(caster, SPELL_BREAKING_THROUGH_SUMMON_JANALAI);
+ caster->CastSpell(caster, SPELL_BREAKING_THROUGH_SUMMON_HALAZZI);
+ caster->CastSpell(caster, SPELL_BREAKING_THROUGH_SUMMON_NALORAKK);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_zuldrak_breaking_through_summon_zulaman_gods_master::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+/*######
+## Quest 12630: Kickin' Nass and Takin' Manes
+######*/
+
+enum KickinNassAndTakinManes
+{
+ SPELL_SUMMON_NASS = 51865
+};
+
+// 51864 - Player Summon Nass
+// 51889 - Quest Accept Summon Nass
+class spell_zuldrak_summon_nass : public SpellScript
+{
+ PrepareSpellScript(spell_zuldrak_summon_nass);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_SUMMON_NASS });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_SUMMON_NASS);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_zuldrak_summon_nass::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+/*######
+## Quest 12730: Convocation at Zol'Heb
+######*/
+
+enum ConvocationAtZolHeb
+{
+ SPELL_AKALIS_STUN = 52989
+};
+
+// 53010 - Convocation at Zol'Heb: Removef Akali's Stun
+class spell_zuldrak_remove_akalis_stun : public SpellScript
+{
+ PrepareSpellScript(spell_zuldrak_remove_akalis_stun);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_AKALIS_STUN });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->RemoveAurasDueToSpell(SPELL_AKALIS_STUN);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_zuldrak_remove_akalis_stun::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_zuldrak()
{
RegisterCreatureAI(npc_released_offspring_harkoa);
@@ -925,4 +1072,8 @@ void AddSC_zuldrak()
RegisterSpellScript(spell_zuldrak_cocooned_on_quest);
RegisterSpellScript(spell_zuldrak_scourgewagon_explosion);
RegisterSpellScript(spell_zuldrak_chains_of_the_scourge);
+ RegisterSpellScript(spell_zuldrak_rampage_summon_zulaman_gods_master);
+ RegisterSpellScript(spell_zuldrak_breaking_through_summon_zulaman_gods_master);
+ RegisterSpellScript(spell_zuldrak_summon_nass);
+ RegisterSpellScript(spell_zuldrak_remove_akalis_stun);
}
diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.cpp
new file mode 100644
index 00000000000..c52b5a398a7
--- /dev/null
+++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/mana_tombs.cpp
@@ -0,0 +1,58 @@
+/*
+ * 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"
+
+enum
+{
+ SPELL_SUMMON_ARCANE_FIEND_1 = 32349,
+ SPELL_SUMMON_ARCANE_FIEND_2 = 32353
+};
+
+// 32348 - Summon Arcane Fiends
+class spell_mana_tombs_summon_arcane_fiends : public SpellScript
+{
+ PrepareSpellScript(spell_mana_tombs_summon_arcane_fiends);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(
+ {
+ SPELL_SUMMON_ARCANE_FIEND_1,
+ SPELL_SUMMON_ARCANE_FIEND_2
+ });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ caster->CastSpell(caster, SPELL_SUMMON_ARCANE_FIEND_1);
+ caster->CastSpell(caster, SPELL_SUMMON_ARCANE_FIEND_2);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_mana_tombs_summon_arcane_fiends::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+void AddSC_mana_tombs()
+{
+ RegisterSpellScript(spell_mana_tombs_summon_arcane_fiends);
+}
diff --git a/src/server/scripts/Outland/outland_script_loader.cpp b/src/server/scripts/Outland/outland_script_loader.cpp
index 68a1ed7591a..c5eec083978 100644
--- a/src/server/scripts/Outland/outland_script_loader.cpp
+++ b/src/server/scripts/Outland/outland_script_loader.cpp
@@ -25,6 +25,7 @@ void AddSC_instance_auchenai_crypts();
void AddSC_boss_pandemonius();
void AddSC_boss_nexusprince_shaffar();
void AddSC_instance_mana_tombs();
+void AddSC_mana_tombs();
// Auchindoun - Sekketh Halls
void AddSC_boss_darkweaver_syth();
@@ -148,6 +149,7 @@ void AddOutlandScripts()
AddSC_boss_pandemonius();
AddSC_boss_nexusprince_shaffar();
AddSC_instance_mana_tombs();
+ AddSC_mana_tombs();
// Auchindoun - Sekketh Halls
AddSC_boss_darkweaver_syth();
diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
index f6a31d4ba6c..d91c3d320bb 100644
--- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
+++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
@@ -1013,6 +1013,36 @@ class spell_oscillating_field : public SpellScriptLoader
}
};
+/*######
+## Quest 10556: Scratches
+######*/
+
+enum Scratches
+{
+ SPELL_LASHHAN_CHANNELING = 36904
+};
+
+// 37028 - Dispelling Analysis
+class spell_bem_dispelling_analysis : public SpellScript
+{
+ PrepareSpellScript(spell_bem_dispelling_analysis);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_LASHHAN_CHANNELING });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->RemoveAurasDueToSpell(SPELL_LASHHAN_CHANNELING);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_bem_dispelling_analysis::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_blades_edge_mountains()
{
new npc_nether_drake();
@@ -1022,4 +1052,5 @@ void AddSC_blades_edge_mountains()
new go_apexis_relic();
new npc_oscillating_frequency_scanner_master_bunny();
new spell_oscillating_field();
+ RegisterSpellScript(spell_bem_dispelling_analysis);
}
diff --git a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
index b77262e6f4e..5e080361e20 100644
--- a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
+++ b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp
@@ -850,6 +850,39 @@ class spell_hellfire_peninsula_send_vengeance_to_player : public SpellScript
}
};
+enum Translocation
+{
+ SPELL_TRANSLOCATION_FALCON_WATCH_TOWER_DOWN = 30140,
+ SPELL_TRANSLOCATION_FALCON_WATCH_TOWER_UP = 30141
+};
+
+// 25650 - Translocate
+// 25652 - Translocate
+class spell_hellfire_peninsula_translocation_falcon_watch : public SpellScript
+{
+ PrepareSpellScript(spell_hellfire_peninsula_translocation_falcon_watch);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ _triggeredSpellId });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), _triggeredSpellId);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_hellfire_peninsula_translocation_falcon_watch::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+
+ uint32 _triggeredSpellId;
+
+public:
+ explicit spell_hellfire_peninsula_translocation_falcon_watch(Translocation triggeredSpellId) : _triggeredSpellId(triggeredSpellId) { }
+};
+
void AddSC_hellfire_peninsula()
{
new npc_colonel_jules();
@@ -860,4 +893,6 @@ void AddSC_hellfire_peninsula()
RegisterCreatureAI(npc_fear_controller);
RegisterSpellScript(spell_hellfire_peninsula_send_vengeance);
RegisterSpellScript(spell_hellfire_peninsula_send_vengeance_to_player);
+ RegisterSpellScriptWithArgs(spell_hellfire_peninsula_translocation_falcon_watch, "spell_hellfire_peninsula_translocation_falcon_watch_tower_down", SPELL_TRANSLOCATION_FALCON_WATCH_TOWER_DOWN);
+ RegisterSpellScriptWithArgs(spell_hellfire_peninsula_translocation_falcon_watch, "spell_hellfire_peninsula_translocation_falcon_watch_tower_up", SPELL_TRANSLOCATION_FALCON_WATCH_TOWER_UP);
}
diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
index f2ff3e921af..0267fa947bf 100644
--- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
+++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
@@ -1662,6 +1662,75 @@ class spell_shadowmoon_quest_credit_crazed_colossus : public SpellScript
}
};
+/*######
+## Quest 10637, 10688: A Necessary Distraction
+######*/
+
+enum ANecessaryDistraction
+{
+ SPELL_BANISH_AZALOTH = 37833
+};
+
+// 37834 - Unbanish Azaloth
+class spell_shadowmoon_unbanish_azaloth : public SpellScript
+{
+ PrepareSpellScript(spell_shadowmoon_unbanish_azaloth);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_BANISH_AZALOTH });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->RemoveAurasDueToSpell(SPELL_BANISH_AZALOTH);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_shadowmoon_unbanish_azaloth::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+/*######
+## Quest 10672: Frankly, It Makes No Sense...
+######*/
+
+enum FranklyItMakesNoSense
+{
+ SPELL_ARCANO_SCORP_CONTROL_01 = 37868,
+ SPELL_ARCANO_SCORP_CONTROL_02 = 37893,
+ SPELL_ARCANO_SCORP_CONTROL_03 = 37895
+};
+
+// 37867 - Arcano-Scorp Control
+// 37892 - Arcano-Scorp Control
+// 37894 - Arcano-Scorp Control
+class spell_shadowmoon_arcano_scorp_control : public SpellScript
+{
+ PrepareSpellScript(spell_shadowmoon_arcano_scorp_control);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ _triggeredSpellId });
+ }
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), _triggeredSpellId);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_shadowmoon_arcano_scorp_control::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+
+ uint32 _triggeredSpellId;
+
+public:
+ explicit spell_shadowmoon_arcano_scorp_control(uint32 triggeredSpellId) : _triggeredSpellId(triggeredSpellId) { }
+};
+
void AddSC_shadowmoon_valley()
{
new npc_invis_infernal_caster();
@@ -1678,4 +1747,8 @@ void AddSC_shadowmoon_valley()
new npc_shadowmoon_tuber_node();
RegisterSpellScript(spell_shadowmoon_illidari_agent_illusion);
RegisterSpellScript(spell_shadowmoon_quest_credit_crazed_colossus);
+ RegisterSpellScript(spell_shadowmoon_unbanish_azaloth);
+ RegisterSpellScriptWithArgs(spell_shadowmoon_arcano_scorp_control, "spell_shadowmoon_arcano_scorp_control_01", SPELL_ARCANO_SCORP_CONTROL_01);
+ RegisterSpellScriptWithArgs(spell_shadowmoon_arcano_scorp_control, "spell_shadowmoon_arcano_scorp_control_02", SPELL_ARCANO_SCORP_CONTROL_02);
+ RegisterSpellScriptWithArgs(spell_shadowmoon_arcano_scorp_control, "spell_shadowmoon_arcano_scorp_control_03", SPELL_ARCANO_SCORP_CONTROL_03);
}
diff --git a/src/server/scripts/Outland/zone_terokkar_forest.cpp b/src/server/scripts/Outland/zone_terokkar_forest.cpp
index a7c1e94fb72..31df4f40c06 100644
--- a/src/server/scripts/Outland/zone_terokkar_forest.cpp
+++ b/src/server/scripts/Outland/zone_terokkar_forest.cpp
@@ -317,6 +317,43 @@ class spell_terokkar_cancel_shadowy_disguise : public SpellScript
}
};
+enum Translocation
+{
+ SPELL_TRANSLOCATION_FIREWING_POINT_BUILDING_DOWN = 32572,
+ SPELL_TRANSLOCATION_FIREWING_POINT_BUILDING_UP = 32568,
+ SPELL_TRANSLOCATION_FIREWING_POINT_TOWER_DOWN = 32569,
+ SPELL_TRANSLOCATION_FIREWING_POINT_TOWER_UP = 32571
+};
+
+// 25143 - Translocate
+// 29128 - Translocate
+// 29129 - Translocate
+// 25140 - Translocate
+class spell_terokkar_translocation_firewing_point : public SpellScript
+{
+ PrepareSpellScript(spell_terokkar_translocation_firewing_point);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ _triggeredSpellId });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), _triggeredSpellId);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_terokkar_translocation_firewing_point::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+
+ uint32 _triggeredSpellId;
+
+public:
+ explicit spell_terokkar_translocation_firewing_point(Translocation triggeredSpellId) : _triggeredSpellId(triggeredSpellId) { }
+};
+
void AddSC_terokkar_forest()
{
new npc_unkor_the_ruthless();
@@ -326,4 +363,8 @@ void AddSC_terokkar_forest()
RegisterSpellScript(spell_terokkar_shadowy_disguise_cast_from_questgiver);
RegisterSpellScript(spell_terokkar_shadowy_disguise);
RegisterSpellScript(spell_terokkar_cancel_shadowy_disguise);
+ RegisterSpellScriptWithArgs(spell_terokkar_translocation_firewing_point, "spell_terokkar_translocation_firewing_point_building_down", SPELL_TRANSLOCATION_FIREWING_POINT_BUILDING_DOWN);
+ RegisterSpellScriptWithArgs(spell_terokkar_translocation_firewing_point, "spell_terokkar_translocation_firewing_point_building_up", SPELL_TRANSLOCATION_FIREWING_POINT_BUILDING_UP);
+ RegisterSpellScriptWithArgs(spell_terokkar_translocation_firewing_point, "spell_terokkar_translocation_firewing_point_tower_down", SPELL_TRANSLOCATION_FIREWING_POINT_TOWER_DOWN);
+ RegisterSpellScriptWithArgs(spell_terokkar_translocation_firewing_point, "spell_terokkar_translocation_firewing_point_tower_up", SPELL_TRANSLOCATION_FIREWING_POINT_TOWER_UP);
}