diff options
Diffstat (limited to 'src')
16 files changed, 765 insertions, 24 deletions
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp index ce27b13e9e3..7ee741d72db 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp @@ -37,6 +37,7 @@ EndContentData */ #include "Player.h" #include "ScriptedEscortAI.h" #include "ScriptedGossip.h" +#include "SpellScript.h" #include "TemporarySummon.h" enum Spells @@ -619,8 +620,35 @@ public: }; }; +enum KarazhanCharge +{ + SPELL_FEAR = 29321 +}; + +// 29320 - Charge +class spell_karazhan_charge : public SpellScript +{ + PrepareSpellScript(spell_karazhan_charge); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_FEAR }); + } + + void HandleAfterHit() + { + GetCaster()->CastSpell(GetCaster(), SPELL_FEAR); + } + + void Register() override + { + AfterHit += SpellHitFn(spell_karazhan_charge::HandleAfterHit); + } +}; + void AddSC_karazhan() { new npc_barnes(); new npc_image_of_medivh(); + RegisterSpellScript(spell_karazhan_charge); } diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp index ef93b2d9dad..17842585a0f 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp @@ -27,6 +27,7 @@ EndScriptData */ #include "ObjectAccessor.h" #include "ScriptedCreature.h" #include "SpellInfo.h" +#include "SpellScript.h" #include "sunwell_plateau.h" #include "TemporarySummon.h" @@ -52,8 +53,6 @@ enum Spells SPELL_CORROSION = 45866, SPELL_GAS_NOVA = 45855, SPELL_ENCAPSULATE_CHANNEL = 45661, - // SPELL_ENCAPSULATE_EFFECT = 45665, - // SPELL_ENCAPSULATE_AOE = 45662, //Flight phase SPELL_VAPOR_SELECT = 45391, // fel to player, force cast 45392, 50000y selete target @@ -82,7 +81,10 @@ enum Spells //Other SPELL_BERSERK = 45078, SPELL_CLOUD_VISUAL = 45212, - SPELL_CLOUD_SUMMON = 45884 + SPELL_CLOUD_SUMMON = 45884, + + // Scripts + SPELL_ENCAPSULATE_EFFECT = 45665 }; enum PhaseFelmyst @@ -544,9 +546,31 @@ struct npc_felmyst_trail : public ScriptedAI void UpdateAI(uint32 /*diff*/) override { } }; +// 45661 - Encapsulate +class spell_felmyst_encapsulate : public SpellScript +{ + PrepareSpellScript(spell_felmyst_encapsulate); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ENCAPSULATE_EFFECT }); + } + + void HandleAfterHit() + { + GetHitUnit()->CastSpell(GetHitUnit(), SPELL_ENCAPSULATE_EFFECT, true); + } + + void Register() override + { + AfterHit += SpellHitFn(spell_felmyst_encapsulate::HandleAfterHit); + } +}; + void AddSC_boss_felmyst() { RegisterSunwellPlateauCreatureAI(boss_felmyst); RegisterSunwellPlateauCreatureAI(npc_felmyst_vapor); RegisterSunwellPlateauCreatureAI(npc_felmyst_trail); + RegisterSpellScript(spell_felmyst_encapsulate); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp index 940e7981c1d..87e6e4c46b1 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.cpp @@ -102,8 +102,35 @@ class spell_zulgurub_poisonous_blood : public SpellScript } }; +enum AxeFlurry +{ + SPELL_AXE_FLURRY = 24020 +}; + +// 24019 - Axe Flurry +class spell_zulgurub_axe_flurry : public SpellScript +{ + PrepareSpellScript(spell_zulgurub_axe_flurry); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_AXE_FLURRY }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetHitUnit(), SPELL_AXE_FLURRY, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_zulgurub_axe_flurry::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + void AddSC_zulgurub() { new go_brazier_of_madness(); RegisterSpellScript(spell_zulgurub_poisonous_blood); + RegisterSpellScript(spell_zulgurub_axe_flurry); } diff --git a/src/server/scripts/Events/midsummer.cpp b/src/server/scripts/Events/midsummer.cpp index b36fd1a04b6..d0bc05365ae 100644 --- a/src/server/scripts/Events/midsummer.cpp +++ b/src/server/scripts/Events/midsummer.cpp @@ -25,11 +25,13 @@ enum TorchSpells { SPELL_TORCH_TOSSING_TRAINING = 45716, SPELL_TORCH_TOSSING_PRACTICE = 46630, - SPELL_TORCH_TOSSING_TRAINING_SUCCESS_ALLIANCE = 45719, - SPELL_TORCH_TOSSING_TRAINING_SUCCESS_HORDE = 46651, + SPELL_TORCH_TOSSING_TRAINING_SUCCESS_1 = 45719, + SPELL_TORCH_TOSSING_TRAINING_SUCCESS_2 = 46651, + SPELL_REMOVE_TORCHES = 46074, SPELL_TARGET_INDICATOR_COSMETIC = 46901, SPELL_TARGET_INDICATOR = 45723, - SPELL_BRAZIERS_HIT = 45724 + SPELL_BRAZIERS_HIT = 45724, + SPELL_TARGET_DETECT_INVISIBILITY = 45725 }; // 45724 - Braziers Hit! @@ -43,24 +45,21 @@ class spell_midsummer_braziers_hit : public AuraScript { SPELL_TORCH_TOSSING_TRAINING, SPELL_TORCH_TOSSING_PRACTICE, - SPELL_TORCH_TOSSING_TRAINING_SUCCESS_ALLIANCE, - SPELL_TORCH_TOSSING_TRAINING_SUCCESS_HORDE + SPELL_TORCH_TOSSING_TRAINING_SUCCESS_1, + SPELL_TORCH_TOSSING_TRAINING_SUCCESS_2, + SPELL_REMOVE_TORCHES }); } void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - Player* player = GetTarget()->ToPlayer(); - if (!player) - return; + Unit* target = GetTarget(); - if ((player->HasAura(SPELL_TORCH_TOSSING_TRAINING) && GetStackAmount() == 8) || (player->HasAura(SPELL_TORCH_TOSSING_PRACTICE) && GetStackAmount() == 20)) + if ((target->HasAura(SPELL_TORCH_TOSSING_TRAINING) && GetStackAmount() == 8) || (target->HasAura(SPELL_TORCH_TOSSING_PRACTICE) && GetStackAmount() == 20)) { - if (player->GetTeam() == ALLIANCE) - player->CastSpell(player, SPELL_TORCH_TOSSING_TRAINING_SUCCESS_ALLIANCE, true); - else if (player->GetTeam() == HORDE) - player->CastSpell(player, SPELL_TORCH_TOSSING_TRAINING_SUCCESS_HORDE, true); - Remove(); + target->CastSpell(target, SPELL_TORCH_TOSSING_TRAINING_SUCCESS_1, true); + target->CastSpell(target, SPELL_TORCH_TOSSING_TRAINING_SUCCESS_2, true); + target->CastSpell(target, SPELL_REMOVE_TORCHES, true); } } @@ -70,6 +69,63 @@ class spell_midsummer_braziers_hit : public AuraScript } }; +// 46074 - Remove Torches +class spell_midsummer_remove_torches : public SpellScript +{ + PrepareSpellScript(spell_midsummer_remove_torches); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_TORCH_TOSSING_TRAINING, SPELL_TORCH_TOSSING_PRACTICE, SPELL_BRAZIERS_HIT }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Unit* target = GetHitUnit(); + target->RemoveAurasDueToSpell(SPELL_TORCH_TOSSING_TRAINING); + target->RemoveAurasDueToSpell(SPELL_TORCH_TOSSING_PRACTICE); + target->RemoveAurasDueToSpell(SPELL_BRAZIERS_HIT); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_midsummer_remove_torches::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +// 45716 - Torch Tossing Training +// 46630 - Torch Tossing Practice +class spell_midsummer_torch_tossing_training_practice : public AuraScript +{ + PrepareAuraScript(spell_midsummer_torch_tossing_training_practice); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_BRAZIERS_HIT, SPELL_TARGET_DETECT_INVISIBILITY }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + // Is this spell really used? Not shown in sniffs + target->CastSpell(target, SPELL_TARGET_DETECT_INVISIBILITY, true); + target->RemoveAurasDueToSpell(SPELL_BRAZIERS_HIT); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + target->RemoveAurasDueToSpell(SPELL_TARGET_DETECT_INVISIBILITY); + target->RemoveAurasDueToSpell(SPELL_BRAZIERS_HIT); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_midsummer_torch_tossing_training_practice::AfterApply, EFFECT_0, SPELL_AURA_DETECT_AMORE, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_midsummer_torch_tossing_training_practice::AfterRemove, EFFECT_0, SPELL_AURA_DETECT_AMORE, AURA_EFFECT_HANDLE_REAL); + } +}; + // 45907 - Torch Target Picker class spell_midsummer_torch_target_picker : public SpellScript { @@ -544,6 +600,8 @@ class spell_midsummer_stamp_out_bonfire_event : public SpellScript void AddSC_event_midsummer() { RegisterSpellScript(spell_midsummer_braziers_hit); + RegisterSpellScript(spell_midsummer_remove_torches); + RegisterSpellScript(spell_midsummer_torch_tossing_training_practice); RegisterSpellScript(spell_midsummer_torch_target_picker); RegisterSpellScript(spell_midsummer_torch_toss_land); RegisterSpellScript(spell_midsummer_test_ribbon_pole_channel); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp index a16ba46f84d..4812a7c1d69 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -723,6 +723,48 @@ class spell_powering_up : public SpellScript }; // 65684, 67176, 67177, 67178 - Dark Essence +class spell_twin_valkyr_dark_essence : public AuraScript +{ + PrepareAuraScript(spell_twin_valkyr_dark_essence); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_LIGHT_ESSENCE }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(sSpellMgr->GetSpellIdForDifficulty(SPELL_LIGHT_ESSENCE, GetTarget())); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_twin_valkyr_dark_essence::AfterApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 65686, 67222, 67223, 67224 - Light Essence +class spell_twin_valkyr_light_essence : public AuraScript +{ + PrepareAuraScript(spell_twin_valkyr_light_essence); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DARK_ESSENCE }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(sSpellMgr->GetSpellIdForDifficulty(SPELL_DARK_ESSENCE, GetTarget())); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_twin_valkyr_light_essence::AfterApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 65684, 67176, 67177, 67178 - Dark Essence // 65686, 67222, 67223, 67224 - Light Essence class spell_valkyr_essences : public AuraScript { @@ -860,6 +902,8 @@ void AddSC_boss_twin_valkyr() RegisterSpellScript(spell_bullet_controller); RegisterSpellScript(spell_powering_up); + RegisterSpellScript(spell_twin_valkyr_dark_essence); + RegisterSpellScript(spell_twin_valkyr_light_essence); RegisterSpellScript(spell_valkyr_essences); RegisterSpellScript(spell_power_of_the_twins); } diff --git a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp index 650704cb64d..1374f164eb3 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_eck.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_eck.cpp @@ -17,6 +17,7 @@ #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "SpellScript.h" #include "gundrak.h" enum Texts @@ -30,7 +31,9 @@ enum Spells SPELL_ECK_BITE = 55813, // Eck bites down hard, inflicting 150% of his normal damage to an enemy. SPELL_ECK_SPIT = 55814, // Eck spits toxic bile at enemies in a cone in front of him, inflicting 2970 Nature damage and draining 220 mana every 1 sec for 3 sec. SPELL_ECK_SPRING_1 = 55815, // Eck leaps at a distant target. --> Drops aggro and charges a random player. Tank can simply taunt him back. - SPELL_ECK_SPRING_2 = 55837 // Eck leaps at a distant target. + SPELL_ECK_SPRING_2 = 55837, // Eck leaps at a distant target. + + SPELL_ECK_RESIDUE = 55817 }; enum Events @@ -108,7 +111,29 @@ private: bool _berserk; }; +// 55814 - Eck Spit +class spell_eck_spit : public AuraScript +{ + PrepareAuraScript(spell_eck_spit); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ECK_RESIDUE }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_ECK_RESIDUE, true); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_eck_spit::AfterRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_boss_eck() { RegisterGundrakCreatureAI(boss_eck); + RegisterSpellScript(spell_eck_spit); } diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index 838baad156b..2142d6b8577 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -2009,6 +2009,36 @@ class spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield : public AuraS } }; +/*###### +## Quest 11712: Re-Cursive +######*/ + +enum ReCursive +{ + SPELL_SUMMON_FIZZCRANK_SURVIVOR = 46022 +}; + +// 45980 - Re-Cursive Transmatter Injection +class spell_borean_tundra_re_cursive_transmatter_injection : public SpellScript +{ + PrepareSpellScript(spell_borean_tundra_re_cursive_transmatter_injection); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SUMMON_FIZZCRANK_SURVIVOR }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetCaster(), SPELL_SUMMON_FIZZCRANK_SURVIVOR); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_borean_tundra_re_cursive_transmatter_injection::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + void AddSC_borean_tundra() { RegisterCreatureAI(npc_beryl_sorcerer); @@ -2044,4 +2074,5 @@ void AddSC_borean_tundra() RegisterSpellScript(spell_borean_tundra_land_mine_barrier); RegisterSpellScript(spell_borean_tundra_taxi_amber_ledge_to_beryl_point_platform); RegisterSpellScript(spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield); + RegisterSpellScript(spell_borean_tundra_re_cursive_transmatter_injection); } diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index fec320bea96..c33babd7ea4 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -1095,6 +1095,36 @@ class spell_dragonblight_toaluus_spiritual_incense : public AuraScript } }; +/*###### +## Quest 24545: The Sacred and the Corrupt +######*/ + +enum TheSacredAndTheCorrupt +{ + SPELL_KNOCKDOWN = 13360 +}; + +// 70653 - Lich King Zap Player +class spell_dragonblight_lich_king_zap_player : public SpellScript +{ + PrepareSpellScript(spell_dragonblight_lich_king_zap_player); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_KNOCKDOWN }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetHitUnit(), SPELL_KNOCKDOWN, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_dragonblight_lich_king_zap_player::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_dragonblight() { RegisterCreatureAI(npc_commander_eligor_dawnbringer); @@ -1118,4 +1148,5 @@ void AddSC_dragonblight() RegisterSpellScript(spell_dragonblight_atop_the_woodlands_quest_completion_script); RegisterSpellScript(spell_dragonblight_end_of_the_line_quest_completion_script); RegisterSpellScript(spell_dragonblight_toaluus_spiritual_incense); + RegisterSpellScript(spell_dragonblight_lich_king_zap_player); } diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index 32017d9f486..05b106d8027 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -1099,6 +1099,87 @@ class spell_grizzly_hills_rage_of_jinarrak : public AuraScript } }; +// 61613 - Gan'jo Ressurection +class spell_grizzly_hills_ganjo_ressurection : public SpellScript +{ + PrepareSpellScript(spell_grizzly_hills_ganjo_ressurection); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ON_THE_OTHER_SIDE }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->RemoveAurasDueToSpell(SPELL_ON_THE_OTHER_SIDE); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_grizzly_hills_ganjo_ressurection::HandleScript, EFFECT_0, SPELL_EFFECT_APPLY_AURA); + } +}; + +/*###### +## Creature 26853 (Makki Wintergale) (if quest 'Shifting Priorities' (12763) is completed) +######*/ + +enum MakkiWintergale +{ + SPELL_FLIGHT_ONEQUAH_TO_LIGHTS_BREACH = 53289 +}; + +// 53288 - Flight - Onequah to Light's Breach +class spell_grizzly_hills_flight_onequah_to_lights_breach : public AuraScript +{ + PrepareAuraScript(spell_grizzly_hills_flight_onequah_to_lights_breach); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_FLIGHT_ONEQUAH_TO_LIGHTS_BREACH }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_FLIGHT_ONEQUAH_TO_LIGHTS_BREACH); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_grizzly_hills_flight_onequah_to_lights_breach::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +/*###### +## Creature 26876 (Samuel Clearbook) (if quest 'Reallocating Resources' (12770) is completed) +######*/ + +enum SamuelClearbook +{ + SPELL_FLIGHT_WESTFALL_TO_LIGHTS_BREACH = 53310 +}; + +// 53311 - Flight - Westfall to Light's Breach +class spell_grizzly_hills_flight_westfall_to_lights_breach : public AuraScript +{ + PrepareAuraScript(spell_grizzly_hills_flight_westfall_to_lights_breach); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_FLIGHT_WESTFALL_TO_LIGHTS_BREACH }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_FLIGHT_WESTFALL_TO_LIGHTS_BREACH); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_grizzly_hills_flight_westfall_to_lights_breach::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_grizzly_hills() { RegisterCreatureAI(npc_emily); @@ -1125,4 +1206,7 @@ void AddSC_grizzly_hills() RegisterSpellScript(spell_grizzly_hills_escape_from_silverbrook_summon_worgen); RegisterSpellScript(spell_grizzly_hills_hand_over_reins); RegisterSpellScript(spell_grizzly_hills_rage_of_jinarrak); + RegisterSpellScript(spell_grizzly_hills_ganjo_ressurection); + RegisterSpellScript(spell_grizzly_hills_flight_onequah_to_lights_breach); + RegisterSpellScript(spell_grizzly_hills_flight_westfall_to_lights_breach); } diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp index 006d9e31a7e..4c44123a173 100644 --- a/src/server/scripts/Northrend/zone_icecrown.cpp +++ b/src/server/scripts/Northrend/zone_icecrown.cpp @@ -1189,6 +1189,32 @@ class spell_icecrown_summon_soul_moveto_bunny : public SpellScript ## Quest 13086: The Last Line Of Defense ######*/ +enum TheLastLineOfDefense +{ + SPELL_POWERING_UP_THE_CORE = 57608 +}; + +// 57387 - Argent Cannon Assault +class spell_icecrown_argent_cannon_assault : public SpellScript +{ + PrepareSpellScript(spell_icecrown_argent_cannon_assault); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_POWERING_UP_THE_CORE }); + } + + void HandleAfterCast() + { + GetCaster()->CastSpell(GetCaster(), SPELL_POWERING_UP_THE_CORE, true); + } + + void Register() override + { + AfterCast += SpellCastFn(spell_icecrown_argent_cannon_assault::HandleAfterCast); + } +}; + // 57385 - Argent Cannon // 57412 - Reckoning Bomb class spell_icecrown_cannons_target : public SpellScript @@ -1495,6 +1521,55 @@ class spell_icecrown_burst_at_the_seams_52510 : public SpellScript } }; +/*###### +## Quest 13082: The Boon of A'dal +######*/ + +enum TheBoonOfAdal +{ + SPELL_SUMMON_SPIRIT_OF_BRIDENBRAD = 57747, + SPELL_SEE_QUEST_INVISIBILITY_1 = 57745, + SPELL_SUMMON_ADAL = 57746, + SPELL_SUMMON_MORI = 57782, + SPELL_SUMMON_KURI = 57786, + SPELL_SUMMON_LIGHT_BUNNY = 57773 +}; + +// 57787 - Forcecast Bridenbrad Ascension +class spell_icecrown_forcecast_bridenbrad_ascension : public SpellScript +{ + PrepareSpellScript(spell_icecrown_forcecast_bridenbrad_ascension); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_SUMMON_SPIRIT_OF_BRIDENBRAD, + SPELL_SEE_QUEST_INVISIBILITY_1, + SPELL_SUMMON_ADAL, + SPELL_SUMMON_MORI, + SPELL_SUMMON_KURI, + SPELL_SUMMON_LIGHT_BUNNY + }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* target = GetHitUnit(); + target->CastSpell(target, SPELL_SUMMON_SPIRIT_OF_BRIDENBRAD); + target->RemoveAurasDueToSpell(SPELL_SEE_QUEST_INVISIBILITY_1); + target->CastSpell(target, SPELL_SUMMON_ADAL); + target->CastSpell(target, SPELL_SUMMON_MORI); + target->CastSpell(target, SPELL_SUMMON_KURI); + target->CastSpell(target, SPELL_SUMMON_LIGHT_BUNNY); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_icecrown_forcecast_bridenbrad_ascension::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_icecrown() { RegisterCreatureAI(npc_argent_valiant); @@ -1518,6 +1593,7 @@ void AddSC_icecrown() RegisterSpellScript(spell_icecrown_grab_fake_soldier); RegisterSpellScript(spell_icecrown_summon_frost_wyrm); RegisterSpellScript(spell_icecrown_summon_soul_moveto_bunny); + RegisterSpellScript(spell_icecrown_argent_cannon_assault); RegisterSpellScript(spell_icecrown_cannons_target); RegisterSpellScript(spell_icecrown_bested_trigger); RegisterSpellScript(spell_icecrown_burst_at_the_seams_59576); @@ -1526,4 +1602,5 @@ void AddSC_icecrown() RegisterSpellScript(spell_icecrown_area_restrict_abom); RegisterSpellScript(spell_icecrown_assign_credit_to_master); RegisterSpellScript(spell_icecrown_burst_at_the_seams_52510); + RegisterSpellScript(spell_icecrown_forcecast_bridenbrad_ascension); } diff --git a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp index 67a3cecfd94..b0c0ecd4b04 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_warlord_najentus.cpp @@ -39,13 +39,16 @@ enum NajentusTexts enum NajentusSpells { SPELL_NEEDLE_SPINE_TARGETING = 39992, - SPELL_NEEDLE_SPINE = 39835, SPELL_TIDAL_BURST = 39878, SPELL_TIDAL_SHIELD = 39872, SPELL_IMPALING_SPINE = 39837, SPELL_CREATE_NAJENTUS_SPINE = 39956, SPELL_HURL_SPINE = 39948, - SPELL_BERSERK = 26662 + SPELL_BERSERK = 26662, + + // Scripts + SPELL_NEEDLE_SPINE = 39835, + SPELL_NEEDLE_SPINE_EXPLOSION = 39968 }; enum NajentusEvents @@ -228,9 +231,31 @@ class spell_najentus_needle_spine : public SpellScript } }; +// 39835 - Needle Spine +class spell_najentus_needle_spine_explosion : public SpellScript +{ + PrepareSpellScript(spell_najentus_needle_spine_explosion); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_NEEDLE_SPINE_EXPLOSION }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetHitUnit(), SPELL_NEEDLE_SPINE_EXPLOSION, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_najentus_needle_spine_explosion::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_boss_najentus() { RegisterBlackTempleCreatureAI(boss_najentus); RegisterGameObjectAI(go_najentus_spine); RegisterSpellScript(spell_najentus_needle_spine); + RegisterSpellScript(spell_najentus_needle_spine_explosion); } diff --git a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp index 320fb13f989..e387477f185 100644 --- a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp +++ b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp @@ -954,6 +954,36 @@ class spell_hellfire_peninsula_absorb_eye_of_grillok : public AuraScript } }; +/*###### +## Quest 10838: The Demoniac Scryer +######*/ + +enum TheDemoniacScryer +{ + SPELL_SUMMON_DEMONAIC_VISITATION = 38991 +}; + +// 38708 - Demonaic Visitation +class spell_hellfire_peninsula_demonaic_visitation : public AuraScript +{ + PrepareAuraScript(spell_hellfire_peninsula_demonaic_visitation); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SUMMON_DEMONAIC_VISITATION }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_SUMMON_DEMONAIC_VISITATION, true); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_hellfire_peninsula_demonaic_visitation::AfterRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_hellfire_peninsula() { new npc_colonel_jules(); @@ -968,4 +998,5 @@ void AddSC_hellfire_peninsula() RegisterSpellScriptWithArgs(spell_hellfire_peninsula_translocation_falcon_watch, "spell_hellfire_peninsula_translocation_falcon_watch_tower_up", SPELL_TRANSLOCATION_FALCON_WATCH_TOWER_UP); RegisterSpellScript(spell_hellfire_peninsula_purify_helboar_meat); RegisterSpellScript(spell_hellfire_peninsula_absorb_eye_of_grillok); + RegisterSpellScript(spell_hellfire_peninsula_demonaic_visitation); } diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index a3f06959d5b..bf023b9b6a6 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -74,6 +74,7 @@ enum DeathKnightSpells SPELL_DK_IMPROVED_UNHOLY_PRESENCE_TRIGGERED = 63622, SPELL_DK_ITEM_SIGIL_VENGEFUL_HEART = 64962, SPELL_DK_ITEM_T8_MELEE_4P_BONUS = 64736, + SPELL_DK_LICHBORNE = 50397, SPELL_DK_MASTER_OF_GHOULS = 52143, SPELL_DK_BLOOD_PLAGUE = 55078, SPELL_DK_RAISE_DEAD_USE_REAGENT = 48289, @@ -1299,6 +1300,33 @@ class spell_dk_improved_unholy_presence : public AuraScript } }; +// 49039 - Lichborne +class spell_dk_lichborne : public AuraScript +{ + PrepareAuraScript(spell_dk_lichborne); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DK_LICHBORNE }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_DK_LICHBORNE, true); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(SPELL_DK_LICHBORNE); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_dk_lichborne::AfterApply, EFFECT_0, SPELL_AURA_MECHANIC_IMMUNITY, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_dk_lichborne::AfterRemove, EFFECT_0, SPELL_AURA_MECHANIC_IMMUNITY, AURA_EFFECT_HANDLE_REAL); + } +}; + // 61257 - Runic Power Back on Snare/Root class spell_dk_pvp_4p_bonus : public AuraScript { @@ -2751,6 +2779,7 @@ void AddSC_deathknight_spell_scripts() RegisterSpellScript(spell_dk_improved_blood_presence_triggered); RegisterSpellScript(spell_dk_improved_frost_presence); RegisterSpellScript(spell_dk_improved_unholy_presence); + RegisterSpellScript(spell_dk_lichborne); RegisterSpellScript(spell_dk_pvp_4p_bonus); RegisterSpellScript(spell_dk_mark_of_blood); RegisterSpellScript(spell_dk_necrosis); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 006ccf2fb4c..213c847f063 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -2194,9 +2194,36 @@ private: } }; -class spell_gen_lifeblood : public AuraScript +enum GenericLifeblood { - PrepareAuraScript(spell_gen_lifeblood); + SPELL_GROW_FLOWER_PATCH = 55475 +}; + +// -55428 - Lifeblood +class spell_gen_lifeblood : public SpellScript +{ + PrepareSpellScript(spell_gen_lifeblood); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_GROW_FLOWER_PATCH }); + } + + void HandleAfterCast() + { + GetCaster()->CastSpell(GetCaster(), SPELL_GROW_FLOWER_PATCH, true); + } + + void Register() override + { + AfterCast += SpellCastFn(spell_gen_lifeblood::HandleAfterCast); + } +}; + +// -55428 - Lifeblood +class spell_gen_lifeblood_aura : public AuraScript +{ + PrepareAuraScript(spell_gen_lifeblood_aura); void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& /*canBeRecalculated*/) { @@ -2209,7 +2236,7 @@ class spell_gen_lifeblood : public AuraScript void Register() override { - DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_gen_lifeblood::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_HEAL); + DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_gen_lifeblood_aura::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_HEAL); } }; @@ -4778,7 +4805,7 @@ void AddSC_generic_spell_scripts() RegisterSpellScriptWithArgs(spell_gen_knock_away_threat_reduction, "spell_gen_knock_away_threat_reduction_100", 100); // 10101 RegisterSpellScriptWithArgs(spell_gen_knock_away_threat_reduction, "spell_gen_knock_away_threat_reduction_50", 50); // 18670, 18945 RegisterSpellScriptWithArgs(spell_gen_knock_away_threat_reduction, "spell_gen_knock_away_threat_reduction_25", 25); // 18813, 25778 - RegisterSpellScript(spell_gen_lifeblood); + RegisterSpellAndAuraScriptPair(spell_gen_lifeblood, spell_gen_lifeblood_aura); RegisterSpellScriptWithArgs(spell_gen_lifebloom, "spell_hexlord_lifebloom", SPELL_HEXLORD_MALACRASS_LIFEBLOOM_FINAL_HEAL); RegisterSpellScriptWithArgs(spell_gen_lifebloom, "spell_tur_ragepaw_lifebloom", SPELL_TUR_RAGEPAW_LIFEBLOOM_FINAL_HEAL); RegisterSpellScriptWithArgs(spell_gen_lifebloom, "spell_cenarion_scout_lifebloom", SPELL_CENARION_SCOUT_LIFEBLOOM_FINAL_HEAL); diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index ed6ab9f3c60..27eee95782b 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -4230,6 +4230,143 @@ class spell_item_titanium_seal_of_dalaran_catch : public SpellScript } }; +enum RunescrollOfFortitude +{ + SPELL_FORTITUDE = 72590 +}; + +// 69377 - Fortitude +class spell_item_runescroll_of_fortitude : public SpellScript +{ + PrepareSpellScript(spell_item_runescroll_of_fortitude); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_FORTITUDE }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetHitUnit(), SPELL_FORTITUDE, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_item_runescroll_of_fortitude::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +enum DrumsOfForgottenKings +{ + SPELL_BLESSING_OF_FORGOTTEN_KINGS = 72586 +}; + +// 69378 - Blessing of Forgotten Kings +class spell_item_drums_of_forgotten_kings : public SpellScript +{ + PrepareSpellScript(spell_item_drums_of_forgotten_kings); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_BLESSING_OF_FORGOTTEN_KINGS }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetHitUnit(), SPELL_BLESSING_OF_FORGOTTEN_KINGS, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_item_drums_of_forgotten_kings::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +enum DrumsOfTheWild +{ + SPELL_GIFT_OF_THE_WILD = 72588 +}; + +// 69381 - Gift of the Wild +class spell_item_drums_of_the_wild : public SpellScript +{ + PrepareSpellScript(spell_item_drums_of_the_wild); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_GIFT_OF_THE_WILD }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->CastSpell(GetHitUnit(), SPELL_GIFT_OF_THE_WILD, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_item_drums_of_the_wild::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +enum ThrallmarAndHonorHoldFavor +{ + SPELL_BUFFBOT_BUFF_EFFECT = 32172 +}; + +// 32096 - Thrallmar's Favor +// 32098 - Honor Hold's Favor +class spell_item_thrallmar_and_honor_hold_favor : public AuraScript +{ + PrepareAuraScript(spell_item_thrallmar_and_honor_hold_favor); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_BUFFBOT_BUFF_EFFECT }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_BUFFBOT_BUFF_EFFECT); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(SPELL_BUFFBOT_BUFF_EFFECT); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_item_thrallmar_and_honor_hold_favor::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_item_thrallmar_and_honor_hold_favor::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +enum DarkmoonCardIllusion +{ + SPELL_DARKMOON_CARD_ILLUSION = 60242 +}; + +// 57350 - Illusionary Barrier +class spell_item_darkmoon_card_illusion : public AuraScript +{ + PrepareAuraScript(spell_item_darkmoon_card_illusion); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DARKMOON_CARD_ILLUSION }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_DARKMOON_CARD_ILLUSION, true); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_item_darkmoon_card_illusion::AfterRemove, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_item_spell_scripts() { // 23074 Arcanite Dragonling @@ -4364,4 +4501,9 @@ void AddSC_item_spell_scripts() RegisterSpellScript(spell_item_eggnog); RegisterSpellScript(spell_item_titanium_seal_of_dalaran_toss); RegisterSpellScript(spell_item_titanium_seal_of_dalaran_catch); + RegisterSpellScript(spell_item_runescroll_of_fortitude); + RegisterSpellScript(spell_item_drums_of_forgotten_kings); + RegisterSpellScript(spell_item_drums_of_the_wild); + RegisterSpellScript(spell_item_thrallmar_and_honor_hold_favor); + RegisterSpellScript(spell_item_darkmoon_card_illusion); } diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 781bbe1cda7..b73cbe8ad17 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -37,12 +37,15 @@ enum PriestSpells { SPELL_PRIEST_BLESSED_RECOVERY_R1 = 27813, + SPELL_PRIEST_DISPERSION_IMMUNITY = 63230, + SPELL_PRIEST_DISPERSION_MOD_POWER = 60069, SPELL_PRIEST_DIVINE_AEGIS = 47753, SPELL_PRIEST_EMPOWERED_RENEW = 63544, SPELL_PRIEST_GLYPH_OF_CIRCLE_OF_HEALING = 55675, SPELL_PRIEST_GLYPH_OF_LIGHTWELL = 55673, SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL = 56161, SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL = 48153, + SPELL_PRIEST_HOLY_NOVA_HEAL_R1 = 23455, SPELL_PRIEST_ITEM_EFFICIENCY = 37595, SPELL_PRIEST_LIGHTWELL_CHARGES = 59907, SPELL_PRIEST_MANA_LEECH_PROC = 34650, @@ -292,6 +295,37 @@ class spell_pri_circle_of_healing : public SpellScript } }; +// 47585 - Dispersion +class spell_pri_dispersion : public AuraScript +{ + PrepareAuraScript(spell_pri_dispersion); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PRIEST_DISPERSION_MOD_POWER, SPELL_PRIEST_DISPERSION_IMMUNITY }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + target->CastSpell(target, SPELL_PRIEST_DISPERSION_MOD_POWER, true); + target->CastSpell(target, SPELL_PRIEST_DISPERSION_IMMUNITY, true); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + target->RemoveAurasDueToSpell(SPELL_PRIEST_DISPERSION_MOD_POWER); + target->RemoveAurasDueToSpell(SPELL_PRIEST_DISPERSION_IMMUNITY); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_pri_dispersion::AfterApply, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_pri_dispersion::AfterRemove, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, AURA_EFFECT_HANDLE_REAL); + } +}; + // -47509 - Divine Aegis class spell_pri_divine_aegis : public AuraScript { @@ -472,6 +506,28 @@ class spell_pri_guardian_spirit : public AuraScript } }; +// -15237 - Holy Nova +class spell_pri_holy_nova : public SpellScript +{ + PrepareSpellScript(spell_pri_holy_nova); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PRIEST_HOLY_NOVA_HEAL_R1 }); + } + + void HandleAfterCast() + { + uint32 triggerSpellId = sSpellMgr->GetSpellWithRank(SPELL_PRIEST_HOLY_NOVA_HEAL_R1, GetSpellInfo()->GetRank()); + GetCaster()->CastSpell(GetCaster(), triggerSpellId, true); + } + + void Register() override + { + AfterCast += SpellCastFn(spell_pri_holy_nova::HandleAfterCast); + } +}; + // 64904 - Hymn of Hope class spell_pri_hymn_of_hope : public SpellScript { @@ -1308,11 +1364,13 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_blessed_recovery); RegisterSpellScript(spell_pri_body_and_soul); RegisterSpellScript(spell_pri_circle_of_healing); + RegisterSpellScript(spell_pri_dispersion); RegisterSpellScript(spell_pri_divine_aegis); RegisterSpellScript(spell_pri_divine_hymn); RegisterSpellScript(spell_pri_glyph_of_dispel_magic); RegisterSpellScript(spell_pri_glyph_of_prayer_of_healing); RegisterSpellScript(spell_pri_guardian_spirit); + RegisterSpellScript(spell_pri_holy_nova); RegisterSpellScript(spell_pri_hymn_of_hope); RegisterSpellScript(spell_pri_imp_shadowform); RegisterSpellScript(spell_pri_improved_spirit_tap); |
