diff options
author | offl <11556157+offl@users.noreply.github.com> | 2022-07-18 23:38:37 +0300 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-09-05 21:18:23 +0200 |
commit | c746d9a59c471c88c909a94a580b2d5c7b32cd7b (patch) | |
tree | 092a6436effb75e70cc2c1fa5044b4a661214093 /src | |
parent | 243efd378c383a42532f485b7dc9c2c3ae6cf3fd (diff) |
Scripts/Quest: Rework 'Fel Spirits' (10909) (#28134)
(cherry picked from commit aef55d5dfac99808d28f5ff5591b243f1100a89c)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Outland/zone_hellfire_peninsula.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp index 8f4b432c8c1..09335a4340f 100644 --- a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp +++ b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp @@ -24,6 +24,7 @@ #include "Player.h" #include "ScriptedEscortAI.h" #include "ScriptedGossip.h" +#include "SpellScript.h" #include "TemporarySummon.h" enum ExorcismSpells @@ -794,6 +795,60 @@ struct npc_fear_controller : public ScriptedAI EventMap _events; }; +/*###### +## Quest 10909: Fel Spirits +######*/ + +enum FelSpirits +{ + SPELL_SEND_VENGEANCE_TO_PLAYER = 39202, + SPELL_SUMMON_FEL_SPIRIT = 39206 +}; + +// 39190 - Send Vengeance +class spell_hellfire_peninsula_send_vengeance : public SpellScript +{ + PrepareSpellScript(spell_hellfire_peninsula_send_vengeance); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SEND_VENGEANCE_TO_PLAYER }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + if (TempSummon* target = GetHitUnit()->ToTempSummon()) + if (Unit* summoner = target->GetSummonerUnit()) + target->CastSpell(summoner, SPELL_SEND_VENGEANCE_TO_PLAYER, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_hellfire_peninsula_send_vengeance::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +// 39202 - Send Vengeance to Player +class spell_hellfire_peninsula_send_vengeance_to_player : public SpellScript +{ + PrepareSpellScript(spell_hellfire_peninsula_send_vengeance_to_player); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SUMMON_FEL_SPIRIT }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetHitUnit(), SPELL_SUMMON_FEL_SPIRIT, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_hellfire_peninsula_send_vengeance_to_player::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_hellfire_peninsula() { new npc_colonel_jules(); @@ -802,4 +857,6 @@ void AddSC_hellfire_peninsula() RegisterCreatureAI(npc_watch_commander_leonus); RegisterCreatureAI(npc_infernal_rain_hellfire); RegisterCreatureAI(npc_fear_controller); + RegisterSpellScript(spell_hellfire_peninsula_send_vengeance); + RegisterSpellScript(spell_hellfire_peninsula_send_vengeance_to_player); } |