diff --git a/src/server/scripts/EasternKingdoms/BastionOfTwilight/boss_ascendant_council.cpp b/src/server/scripts/EasternKingdoms/BastionOfTwilight/boss_ascendant_council.cpp index e1e401f1342..f97bd9a7997 100644 --- a/src/server/scripts/EasternKingdoms/BastionOfTwilight/boss_ascendant_council.cpp +++ b/src/server/scripts/EasternKingdoms/BastionOfTwilight/boss_ascendant_council.cpp @@ -318,13 +318,22 @@ class boss_ascendant_council_controller : public CreatureScript switch (action) { case ACTION_START_ENCOUNTER: + if (instance->GetBossState(DATA_ASCENDANT_COUNCIL) == IN_PROGRESS) + break; + instance->SetBossState(DATA_ASCENDANT_COUNCIL, IN_PROGRESS); if (Creature* feludius = instance->GetCreature(DATA_FELUDIUS)) + { + feludius->AI()->DoZoneInCombat(); instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, feludius, 3); + } if (Creature* ignacious = instance->GetCreature(DATA_IGNACIOUS)) + { + ignacious->AI()->DoZoneInCombat(); instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, ignacious, 4); + } if (IsHeroic()) { @@ -500,9 +509,6 @@ class npc_feludius : public CreatureScript if (Creature* controller = _instance->GetCreature(DATA_ASCENDANT_COUNCIL_CONTROLLER)) controller->AI()->DoAction(ACTION_START_ENCOUNTER); - if (Creature* ignacious = _instance->GetCreature(DATA_IGNACIOUS)) - ignacious->AI()->AttackStart(who); - Talk(SAY_ENGAGE); _events.ScheduleEvent(EVENT_GLACIATE, Seconds(31) + Milliseconds(500)); _events.ScheduleEvent(EVENT_HEART_OF_ICE, Seconds(15) + Milliseconds(500)); @@ -565,6 +571,7 @@ class npc_feludius : public CreatureScript _events.Reset(); me->SetWalk(true); me->CastStop(); + _summons.DespawnAll(); _events.ScheduleEvent(EVENT_TELEPORT_PREPARE_FUSION, Seconds(1) + Milliseconds(200)); break; case ACTION_SCHEDULE_HEROIC_ABILITY: @@ -697,8 +704,8 @@ class npc_ignacious : public CreatureScript void JustEngagedWith(Unit* who) override { - if (Creature* feludius = _instance->GetCreature(DATA_FELUDIUS)) - feludius->AI()->AttackStart(who); + if (Creature* controller = _instance->GetCreature(DATA_ASCENDANT_COUNCIL_CONTROLLER)) + controller->AI()->DoAction(ACTION_START_ENCOUNTER); _events.ScheduleEvent(EVENT_TALK_ENGAGE, Seconds(5)); _events.ScheduleEvent(EVENT_FLAME_TORRENT, Seconds(8) + Milliseconds(300)); @@ -801,6 +808,7 @@ class npc_ignacious : public CreatureScript _events.Reset(); me->SetWalk(true); me->CastStop(); + _summons.DespawnAll(); _events.ScheduleEvent(EVENT_TELEPORT_PREPARE_FUSION, Seconds(1) + Milliseconds(200)); break; case ACTION_SCHEDULE_HEROIC_ABILITY: @@ -975,6 +983,7 @@ class npc_arion : public CreatureScript me->SetReactState(REACT_PASSIVE); me->CastStop(); me->SetWalk(true); + _summons.DespawnAll(); DoCastSelf(SPELL_CLEAR_ALL_DEBUFFS); _events.ScheduleEvent(EVENT_TELEPORT_PREPARE_FUSION, Seconds(1) + Milliseconds(200)); break; @@ -1062,7 +1071,7 @@ class npc_arion : public CreatureScript case EVENT_LIGHTNING_BLAST: me->SetReactState(REACT_AGGRESSIVE); if (Unit* victim = me->GetVictim()) - me->AI()->AttackStart(victim); + AttackStart(victim); me->MakeInterruptable(true); DoCastAOE(SPELL_LIGHTNING_BLAST); @@ -1163,6 +1172,7 @@ class npc_terrastra : public CreatureScript me->SetReactState(REACT_PASSIVE); me->CastStop(); me->SetWalk(true); + _summons.DespawnAll(); DoCastAOE(SPELL_ELEMENTAL_STASIS); DoCastSelf(SPELL_CLEAR_ALL_DEBUFFS); _events.ScheduleEvent(EVENT_TELEPORT_PREPARE_FUSION, Seconds(1) + Milliseconds(200)); @@ -1817,6 +1827,10 @@ class npc_ascendant_council_flame_strike : public CreatureScript me->DespawnOrUnsummon(Seconds(2) + Milliseconds(300)); } } + + void UpdateAI(uint32 /*diff*/) override + { + } }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/EasternKingdoms/BastionOfTwilight/boss_theralion_and_valiona.cpp b/src/server/scripts/EasternKingdoms/BastionOfTwilight/boss_theralion_and_valiona.cpp index fb3af3e2510..45c90e16e68 100644 --- a/src/server/scripts/EasternKingdoms/BastionOfTwilight/boss_theralion_and_valiona.cpp +++ b/src/server/scripts/EasternKingdoms/BastionOfTwilight/boss_theralion_and_valiona.cpp @@ -431,7 +431,7 @@ class boss_theralion : public CreatureScript case EVENT_ATTACK_PLAYERS: me->SetReactState(REACT_AGGRESSIVE); if (Unit* target = me->GetVictim()) - me->AI()->AttackStart(target); + AttackStart(target); events.ScheduleEvent(EVENT_FABULOUS_FLAMES, Seconds(3) + Milliseconds(600)); events.ScheduleEvent(EVENT_ENGULFING_MAGIC, Seconds(12)); @@ -787,7 +787,7 @@ class boss_valiona : public CreatureScript case EVENT_ATTACK_PLAYERS: me->SetReactState(REACT_AGGRESSIVE); if (Unit* target = me->GetVictim()) - me->AI()->AttackStart(target); + AttackStart(target); events.ScheduleEvent(EVENT_BLACKOUT, Seconds(8) + Milliseconds(500)); events.ScheduleEvent(EVENT_DEVOURING_FLAMES, Seconds(23));