Scripts/BoT: improved reset mechanic for Ascendant Council encounter

This commit is contained in:
Ovahlord
2019-11-02 22:19:45 +01:00
parent 3dd63ff980
commit 7306afc43a

View File

@@ -272,6 +272,7 @@ enum Actions
ACTION_TELEPORT_DOWN,
ACTION_PREPARE_FUSION,
ACTION_SCHEDULE_HEROIC_ABILITY,
ACTION_DESPAWN,
// Ignacious
ACTION_CAST_INFERNO_RUSH,
@@ -368,25 +369,25 @@ class boss_ascendant_council_controller : public CreatureScript
if (Creature* feludius = instance->GetCreature(DATA_FELUDIUS))
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, feludius);
feludius->AI()->EnterEvadeMode();
feludius->AI()->DoAction(ACTION_DESPAWN);
}
if (Creature* ignacious = instance->GetCreature(DATA_IGNACIOUS))
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, ignacious);
ignacious->AI()->EnterEvadeMode();
ignacious->AI()->DoAction(ACTION_DESPAWN);
}
if (Creature* arion = instance->GetCreature(DATA_ARION))
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, arion);
arion->AI()->EnterEvadeMode();
arion->AI()->DoAction(ACTION_DESPAWN);
}
if (Creature* terrastra = instance->GetCreature(DATA_TERRASTRA))
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, terrastra);
terrastra->AI()->EnterEvadeMode();
terrastra->AI()->DoAction(ACTION_DESPAWN);
}
if (Creature* elementiumMonstrosity = instance->GetCreature(DATA_ELEMENTIUM_MONSTROSITY))
@@ -550,19 +551,10 @@ class npc_feludius : public CreatureScript
_events.ScheduleEvent(EVENT_HYDRO_LANCE, 8s + 500ms);
}
void EnterEvadeMode(EvadeReason why) override
void EnterEvadeMode(EvadeReason /*why*/) override
{
if (why == EVADE_REASON_NO_HOSTILES)
{
if (Creature* controller = _instance->GetCreature(DATA_ASCENDANT_COUNCIL_CONTROLLER))
controller->AI()->DoAction(ACTION_STOP_ENCOUNTER);
}
else
{
_EnterEvadeMode();
_summons.DespawnAll();
me->DespawnOrUnsummon();
}
if (Creature* controller = _instance->GetCreature(DATA_ASCENDANT_COUNCIL_CONTROLLER))
controller->AI()->DoAction(ACTION_STOP_ENCOUNTER);
}
void KilledUnit(Unit* who) override
@@ -615,6 +607,10 @@ class npc_feludius : public CreatureScript
_events.ScheduleEvent(EVENT_WATER_BOMB, 2s);
_events.ScheduleEvent(EVENT_GLACIATE, 15s);
break;
case ACTION_DESPAWN:
_summons.DespawnAll();
me->DespawnOrUnsummon();
break;
default:
break;
}
@@ -739,9 +735,8 @@ class npc_ignacious : public CreatureScript
void EnterEvadeMode(EvadeReason /*why*/) override
{
_EnterEvadeMode();
_summons.DespawnAll();
me->DespawnOrUnsummon();
if (Creature* controller = _instance->GetCreature(DATA_ASCENDANT_COUNCIL_CONTROLLER))
controller->AI()->DoAction(ACTION_STOP_ENCOUNTER);
}
void KilledUnit(Unit* who) override
@@ -843,6 +838,10 @@ class npc_ignacious : public CreatureScript
if (int32(_events.GetTimeUntilEvent(EVENT_FLAME_TORRENT)) < aura->GetDuration())
_events.RescheduleEvent(EVENT_FLAME_TORRENT, aura->GetDuration() + 1000);
break;
case ACTION_DESPAWN:
_summons.DespawnAll();
me->DespawnOrUnsummon();
break;
default:
break;
}
@@ -989,9 +988,8 @@ class npc_arion : public CreatureScript
void EnterEvadeMode(EvadeReason /*why*/) override
{
_EnterEvadeMode();
_summons.DespawnAll();
me->DespawnOrUnsummon();
if (Creature* controller = _instance->GetCreature(DATA_ASCENDANT_COUNCIL_CONTROLLER))
controller->AI()->DoAction(ACTION_STOP_ENCOUNTER);
}
void KilledUnit(Unit* who) override
@@ -1041,6 +1039,10 @@ class npc_arion : public CreatureScript
case ACTION_SCHEDULE_HEROIC_ABILITY:
_events.ScheduleEvent(EVENT_STATIC_OVERLOAD, 19s + 700ms);
break;
case ACTION_DESPAWN:
_summons.DespawnAll();
me->DespawnOrUnsummon();
break;
default:
break;
}
@@ -1181,9 +1183,8 @@ class npc_terrastra : public CreatureScript
void EnterEvadeMode(EvadeReason /*why*/) override
{
_EnterEvadeMode();
_summons.DespawnAll();
me->DespawnOrUnsummon();
if (Creature* controller = _instance->GetCreature(DATA_ASCENDANT_COUNCIL_CONTROLLER))
controller->AI()->DoAction(ACTION_STOP_ENCOUNTER);
}
void KilledUnit(Unit* who) override
@@ -1231,6 +1232,10 @@ class npc_terrastra : public CreatureScript
case ACTION_SCHEDULE_HEROIC_ABILITY:
_events.ScheduleEvent(EVENT_GRAVITY_CORE, 22s + 700ms);
break;
case ACTION_DESPAWN:
_summons.DespawnAll();
me->DespawnOrUnsummon();
break;
default:
break;
}
@@ -1351,7 +1356,6 @@ class npc_elementium_monstrosity : public CreatureScript
void EnterEvadeMode(EvadeReason /*why*/) override
{
_EnterEvadeMode();
_summons.DespawnAll();
if (Creature* controller = _instance->GetCreature(DATA_ASCENDANT_COUNCIL_CONTROLLER))
controller->AI()->DoAction(ACTION_STOP_ENCOUNTER);