@@ -188,16 +188,9 @@ enum MalygosLightOverrides
188188 LIGHT_OBSCURE_ARCANE_RUNES = 1825 ,
189189};
190190
191- struct boss_malygos : public ScriptedAI
191+ struct boss_malygos : public BossAI
192192{
193- boss_malygos (Creature* c) : ScriptedAI(c), summons(me)
194- {
195- pInstance = me->GetInstanceScript ();
196- }
197-
198- InstanceScript* pInstance;
199- EventMap events;
200- SummonList summons;
193+ boss_malygos (Creature* creature) : BossAI(creature, DATA_MALYGOS) { }
201194
202195 uint32 timer1, timer2;
203196 uint8 IntroCounter;
@@ -211,9 +204,7 @@ struct boss_malygos : public ScriptedAI
211204
212205 void Reset () override
213206 {
214- events.Reset ();
215- events.SetPhase (PHASE_NONE);
216- summons.DespawnAll ();
207+ _Reset ();
217208
218209 timer1 = MalygosIntroIntervals[4 ];
219210 timer2 = INTRO_MOVEMENT_INTERVAL;
@@ -226,11 +217,7 @@ struct boss_malygos : public ScriptedAI
226217
227218 me->SetAnimTier (AnimTier::Fly);
228219
229- if (pInstance)
230- {
231- pInstance->SetData (DATA_ENCOUNTER_STATUS, NOT_STARTED);
232- pInstance->DoStopTimedAchievement (ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_YOU_DONT_HAVE_AN_ENTERNITY_EVENT);
233- }
220+ instance->DoStopTimedAchievement (ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_YOU_DONT_HAVE_AN_ENTERNITY_EVENT);
234221 }
235222
236223 void MovementInform (uint32 type, uint32 id) override
@@ -305,14 +292,10 @@ struct boss_malygos : public ScriptedAI
305292
306293 void JustEngagedWith (Unit* /* who*/ ) override
307294 {
295+ _JustEngagedWith ();
308296 events.Reset ();
309- DoZoneInCombat ();
310-
311297 Talk (SAY_PHASE_1);
312-
313298 events.RescheduleEvent (EVENT_INTRO_MOVE_CENTER, 0ms, 1 );
314- if (pInstance)
315- pInstance->SetData (DATA_ENCOUNTER_STATUS, IN_PROGRESS);
316299 }
317300
318301 void AttackStart (Unit* victim) override
@@ -372,8 +355,7 @@ struct boss_malygos : public ScriptedAI
372355 break ;
373356 case EVENT_INTRO_MOVE_CENTER:
374357 {
375- if (pInstance)
376- pInstance->SetData (DATA_SET_IRIS_INACTIVE, 0 );
358+ instance->SetData (DATA_SET_IRIS_INACTIVE, 0 );
377359 summons.DespawnAll ();
378360 me->InterruptNonMeleeSpells (true );
379361 me->RemoveAllAuras ();
@@ -392,11 +374,8 @@ struct boss_malygos : public ScriptedAI
392374 }
393375 case EVENT_START_FIGHT:
394376 {
395- if (pInstance)
396- {
397- pInstance->SetData (DATA_HIDE_IRIS_AND_PORTAL, 0 );
398- pInstance->DoStartTimedAchievement (ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_YOU_DONT_HAVE_AN_ENTERNITY_EVENT);
399- }
377+ instance->SetData (DATA_HIDE_IRIS_AND_PORTAL, 0 );
378+ instance->DoStartTimedAchievement (ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_YOU_DONT_HAVE_AN_ENTERNITY_EVENT);
400379 me->RemoveUnitFlag (UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED);
401380 if (Unit* target = me->SelectNearestTarget (250 .0f ))
402381 {
@@ -689,19 +668,16 @@ struct boss_malygos : public ScriptedAI
689668
690669 me->GetThreatMgr ().ClearAllThreat (); // players on vehicle are unattackable -> leads to EnterEvadeMode() because target is not acceptable!
691670
692- // mount players:
693- Map::PlayerList const & PlayerList = me->GetMap ()->GetPlayers ();
694- if (!PlayerList.IsEmpty ())
695- for (Map::PlayerList::const_iterator i = PlayerList.begin (); i != PlayerList.end (); ++i)
696- if (Player* player = i->GetSource ())
697- {
698- sScriptMgr ->AnticheatSetUnderACKmount (player);
699-
700- if (!player->IsAlive () || player->IsGameMaster ())
701- continue ;
671+ me->GetMap ()->DoForAllPlayers ([&](Player* player)
672+ {
673+ if (player->IsAlive () && !player->IsGameMaster ())
674+ {
675+ sScriptMgr ->AnticheatSetUnderACKmount (player);
676+ player->CastSpell (player, SPELL_SUMMON_RED_DRAGON_BUDDY, true );
677+ }
678+ });
702679
703- player->CastSpell (player, SPELL_SUMMON_RED_DRAGON_BUDDY, true );
704- }
680+ DoZoneInCombat ();
705681
706682 events.RescheduleEvent (EVENT_SAY_PHASE_3_INTRO, 3s, 1 );
707683 }
@@ -744,12 +720,9 @@ struct boss_malygos : public ScriptedAI
744720
745721 void JustDied (Unit* /* killer*/ ) override
746722 {
723+ _JustDied ();
747724 Talk (SAY_DEATH);
748- if (pInstance)
749- {
750- pInstance->DoUpdateAchievementCriteria (ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, NPC_MALYGOS, 1 );
751- pInstance->SetData (DATA_ENCOUNTER_STATUS, DONE);
752- }
725+ instance->DoUpdateAchievementCriteria (ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, NPC_MALYGOS, 1 );
753726 }
754727
755728 void KilledUnit (Unit* victim) override
0 commit comments