diff options
Diffstat (limited to 'src')
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); } |
