3131#include " Player.h"
3232#include " ScriptedEscortAI.h"
3333#include " ScriptedGossip.h"
34+ #include " SpellAuraEffects.h"
3435#include " SpellInfo.h"
3536#include " SpellScript.h"
3637#include " TemporarySummon.h"
@@ -517,6 +518,92 @@ struct npc_eye_of_acherus : public ScriptedAI
517518 EventMap _events;
518519};
519520
521+ enum DeathComesFromOnHigh
522+ {
523+ SPELL_FORGE_CREDIT = 51974 ,
524+ SPELL_TOWN_HALL_CREDIT = 51977 ,
525+ SPELL_SCARLET_HOLD_CREDIT = 51980 ,
526+ SPELL_CHAPEL_CREDIT = 51982 ,
527+
528+ NPC_NEW_AVALON_FORGE = 28525 ,
529+ NPC_NEW_AVALON_TOWN_HALL = 28543 ,
530+ NPC_SCARLET_HOLD = 28542 ,
531+ NPC_CHAPEL_OF_THE_CRIMSON_FLAME = 28544
532+ };
533+
534+ // 51858 - Siphon of Acherus
535+ class spell_chapter1_siphon_of_acherus : public SpellScript
536+ {
537+ PrepareSpellScript (spell_chapter1_siphon_of_acherus);
538+
539+ bool Validate (SpellInfo const * /* spellInfo*/ ) override
540+ {
541+ return ValidateSpellInfo (
542+ {
543+ SPELL_FORGE_CREDIT,
544+ SPELL_TOWN_HALL_CREDIT,
545+ SPELL_SCARLET_HOLD_CREDIT,
546+ SPELL_CHAPEL_CREDIT
547+ });
548+ }
549+
550+ void HandleDummy (SpellEffIndex /* effIndex*/ )
551+ {
552+ uint32 spellId = 0 ;
553+
554+ switch (GetHitCreature ()->GetEntry ())
555+ {
556+ case NPC_NEW_AVALON_FORGE:
557+ spellId = SPELL_FORGE_CREDIT;
558+ break ;
559+ case NPC_NEW_AVALON_TOWN_HALL:
560+ spellId = SPELL_TOWN_HALL_CREDIT;
561+ break ;
562+ case NPC_SCARLET_HOLD:
563+ spellId = SPELL_SCARLET_HOLD_CREDIT;
564+ break ;
565+ case NPC_CHAPEL_OF_THE_CRIMSON_FLAME:
566+ spellId = SPELL_CHAPEL_CREDIT;
567+ break ;
568+ default :
569+ return ;
570+ }
571+
572+ GetCaster ()->CastSpell (nullptr , spellId, true );
573+ }
574+
575+ void Register () override
576+ {
577+ OnEffectHitTarget += SpellEffectFn (spell_chapter1_siphon_of_acherus::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
578+ }
579+ };
580+
581+ // 52694 - Recall Eye of Acherus
582+ class spell_chapter1_recall_eye_of_acherus : public SpellScript
583+ {
584+ PrepareSpellScript (spell_chapter1_recall_eye_of_acherus);
585+
586+ bool Validate (SpellInfo const * /* spell*/ ) override
587+ {
588+ return ValidateSpellInfo ({ SPELL_THE_EYE_OF_ACHERUS });
589+ }
590+
591+ void HandleDummy (SpellEffIndex /* effIndex*/ )
592+ {
593+ if (Player* player = Object::ToPlayer (GetCaster ()->GetCharmerOrOwner ()))
594+ {
595+ player->StopCastingCharm ();
596+ player->StopCastingBindSight ();
597+ player->RemoveAura (SPELL_THE_EYE_OF_ACHERUS);
598+ }
599+ }
600+
601+ void Register () override
602+ {
603+ OnEffectHitTarget += SpellEffectFn (spell_chapter1_recall_eye_of_acherus::HandleDummy, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
604+ }
605+ };
606+
520607/* ######
521608## npc_death_knight_initiate
522609######*/
@@ -1169,13 +1256,58 @@ class spell_chapter1_sky_darkener_assault : public SpellScript
11691256 }
11701257};
11711258
1259+ /* ######
1260+ ## Quest 12619: The Emblazoned Runeblade
1261+ ######*/
1262+
1263+ // 51769 - Emblazon Runeblade
1264+ class spell_chapter1_emblazon_runeblade : public AuraScript
1265+ {
1266+ PrepareAuraScript (spell_chapter1_emblazon_runeblade);
1267+
1268+ void HandleEffectPeriodic (AuraEffect const * aurEff)
1269+ {
1270+ PreventDefaultAction ();
1271+ if (Unit* caster = GetCaster ())
1272+ caster->CastSpell (caster, aurEff->GetSpellEffectInfo ().TriggerSpell , aurEff);
1273+ }
1274+
1275+ void Register () override
1276+ {
1277+ OnEffectPeriodic += AuraEffectPeriodicFn (spell_chapter1_emblazon_runeblade::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
1278+ }
1279+ };
1280+
1281+ // 51770 - Emblazon Runeblade
1282+ class spell_chapter1_emblazon_runeblade_effect : public SpellScript
1283+ {
1284+ PrepareSpellScript (spell_chapter1_emblazon_runeblade_effect);
1285+
1286+ bool Validate (SpellInfo const * spellInfo) override
1287+ {
1288+ return ValidateSpellInfo ({ uint32 (spellInfo->GetEffect (EFFECT_0).CalcValue ()) });
1289+ }
1290+
1291+ void HandleScript (SpellEffIndex /* effIndex*/ )
1292+ {
1293+ GetCaster ()->CastSpell (GetCaster (), uint32 (GetEffectValue ()), false );
1294+ }
1295+
1296+ void Register () override
1297+ {
1298+ OnEffectHit += SpellEffectFn (spell_chapter1_emblazon_runeblade_effect::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
1299+ }
1300+ };
1301+
11721302void AddSC_the_scarlet_enclave_c1 ()
11731303{
11741304 new npc_unworthy_initiate ();
11751305 new npc_unworthy_initiate_anchor ();
11761306 new go_acherus_soul_prison ();
11771307 RegisterSpellScript (spell_death_knight_initiate_visual);
11781308 RegisterCreatureAI (npc_eye_of_acherus);
1309+ RegisterSpellScript (spell_chapter1_siphon_of_acherus);
1310+ RegisterSpellScript (spell_chapter1_recall_eye_of_acherus);
11791311 new npc_death_knight_initiate ();
11801312 RegisterCreatureAI (npc_dark_rider_of_acherus);
11811313 new npc_salanar_the_horseman ();
@@ -1187,4 +1319,6 @@ void AddSC_the_scarlet_enclave_c1()
11871319 RegisterSpellScript (spell_gift_of_the_harvester);
11881320 RegisterSpellScript (spell_chapter1_runeforging_credit);
11891321 RegisterSpellScript (spell_chapter1_sky_darkener_assault);
1322+ RegisterSpellScript (spell_chapter1_emblazon_runeblade);
1323+ RegisterSpellScript (spell_chapter1_emblazon_runeblade_effect);
11901324}
0 commit comments