5757 SPELL_CHROMATIC_MUT_1 = 23174 , // Spell cast on player if they get all 5 debuffs
5858
5959 SPELL_FRENZY = 23128 , // 28371 The frenzy spell may be wrong
60- SPELL_ENRAGE = 28747
60+ SPELL_ENRAGE = 28747 ,
61+
62+ SPELL_CHROMATIC_MUTATION_ONE = 23175 ,
63+ SPELL_CHROMATIC_MUTATION_TWO = 23177 ,
64+ SPELL_BROOD_AFFLICTION_RED = 23168
6165};
6266
63- static uint32 const aPossibleBreaths[MAX_BREATHS] = {SPELL_INCINERATE, SPELL_TIME_LAPSE, SPELL_CORROSIVE_ACID, SPELL_IGNITE_FLESH, SPELL_FROST_BURN};
67+ static constexpr uint32 aPossibleBreaths[MAX_BREATHS] =
68+ {
69+ SPELL_INCINERATE,
70+ SPELL_TIME_LAPSE,
71+ SPELL_CORROSIVE_ACID,
72+ SPELL_IGNITE_FLESH,
73+ SPELL_FROST_BURN
74+ };
75+
76+ static constexpr uint32 NUM_BREATHS = sizeof (aPossibleBreaths) / sizeof (aPossibleBreaths[0 ]);
6477
6578struct boss_chromaggusAI : public ScriptedAI
6679{
@@ -73,7 +86,6 @@ struct boss_chromaggusAI : public ScriptedAI
7386 m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData ();
7487 if (m_pInstance)
7588 {
76- const static uint32 NUM_BREATHS = sizeof (aPossibleBreaths) / sizeof (aPossibleBreaths[0 ]);
7789 uint32 breaths = m_pInstance->GetData64 (DATA_CHROM_BREATH);
7890 m_uiBreathOneSpell = aPossibleBreaths[breaths % NUM_BREATHS];
7991 uint32 idx2 = breaths / NUM_BREATHS;
@@ -125,8 +137,8 @@ struct boss_chromaggusAI : public ScriptedAI
125137 {
126138 if (Player* pTarget = m_creature->GetMap ()->GetPlayer (guid))
127139 {
128- pTarget->RemoveAurasDueToSpell (23175 );
129- pTarget->RemoveAurasDueToSpell (23177 );
140+ pTarget->RemoveAurasDueToSpell (SPELL_CHROMATIC_MUTATION_ONE );
141+ pTarget->RemoveAurasDueToSpell (SPELL_CHROMATIC_MUTATION_TWO );
130142 pTarget->DealDamage (pTarget, pTarget->GetHealth (), nullptr , DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr , false );
131143 }
132144 }
@@ -246,25 +258,12 @@ struct boss_chromaggusAI : public ScriptedAI
246258 m_creature->RemoveAurasDueToSpell (m_uiCurrentVulnerabilitySpell);
247259
248260 // Cast new random vurlnabilty on self
249- uint32 uiSpell;
250- switch (urand (0 , 4 ))
251- {
252- case 0 :
253- uiSpell = SPELL_FIRE_VULNERABILITY;
254- break ;
255- case 1 :
256- uiSpell = SPELL_FROST_VULNERABILITY;
257- break ;
258- case 2 :
259- uiSpell = SPELL_SHADOW_VULNERABILITY;
260- break ;
261- case 3 :
262- uiSpell = SPELL_NATURE_VULNERABILITY;
263- break ;
264- case 4 :
265- uiSpell = SPELL_ARCANE_VULNERABILITY;
266- break ;
267- }
261+ uint32 uiSpell = PickRandomValue (
262+ SPELL_FIRE_VULNERABILITY,
263+ SPELL_FROST_VULNERABILITY,
264+ SPELL_SHADOW_VULNERABILITY,
265+ SPELL_NATURE_VULNERABILITY,
266+ SPELL_ARCANE_VULNERABILITY);
268267
269268 if (DoCastSpellIfCan (m_creature, uiSpell) == CAST_OK)
270269 {
@@ -298,26 +297,16 @@ struct boss_chromaggusAI : public ScriptedAI
298297 // Affliction Timer
299298 if (m_uiAfflictionTimer < uiDiff)
300299 {
301- uint32 m_uiSpellAfflict = 0 ;
302-
303- switch (urand (0 , 4 ))
300+ uint32 uiSpellAfflict = PickRandomValue (
301+ SPELL_BROODAF_BLUE,
302+ SPELL_BROODAF_BLACK,
303+ SPELL_BROODAF_RED,
304+ SPELL_BROODAF_BRONZE,
305+ SPELL_BROODAF_GREEN);
306+
307+ if (uiSpellAfflict == SPELL_BROODAF_RED)
304308 {
305- case 0 :
306- m_uiSpellAfflict = SPELL_BROODAF_BLUE;
307- break ;
308- case 1 :
309- m_uiSpellAfflict = SPELL_BROODAF_BLACK;
310- break ;
311- case 2 :
312- m_uiSpellAfflict = SPELL_BROODAF_RED;
313- m_lRedAfflictionPlayerGUID.clear ();
314- break ;
315- case 3 :
316- m_uiSpellAfflict = SPELL_BROODAF_BRONZE;
317- break ;
318- case 4 :
319- m_uiSpellAfflict = SPELL_BROODAF_GREEN;
320- break ;
309+ m_lRedAfflictionPlayerGUID.clear ();
321310 }
322311
323312 for (uint32 i = 0 ; i < urand (11 , 15 ); ++i) // Affliction is applied 11-15 times per cast. Creatures such as pets can be targetted
@@ -328,9 +317,9 @@ struct boss_chromaggusAI : public ScriptedAI
328317 continue ;
329318
330319 // Cast affliction
331- if (DoCastSpellIfCan (afflictionTarget, m_uiSpellAfflict , CF_TRIGGERED) == CAST_OK)
320+ if (DoCastSpellIfCan (afflictionTarget, uiSpellAfflict , CF_TRIGGERED) == CAST_OK)
332321 {
333- if (m_uiSpellAfflict == SPELL_BROODAF_RED && afflictionTarget->GetTypeId () == TYPEID_PLAYER)
322+ if (uiSpellAfflict == SPELL_BROODAF_RED && afflictionTarget->GetTypeId () == TYPEID_PLAYER)
334323 m_lRedAfflictionPlayerGUID.push_back (afflictionTarget->GetObjectGuid ());
335324 }
336325 // Chromatic mutation if target is effected by all afflictions
@@ -348,10 +337,10 @@ struct boss_chromaggusAI : public ScriptedAI
348337
349338 if (afflictionTarget->GetTypeId () == TYPEID_PLAYER) // Only players are mutated
350339 {
351- afflictionTarget->AddAura (SPELL_CHROMATIC_MUT_1, ADD_AURA_NO_OPTION, m_creature); // Main MC aura
352- afflictionTarget->AddAura (23175 ); // Mod DMG 500% + Mod Haste Melee 100 + Mod Haste Spell 300
353- afflictionTarget->AddAura (23177 ); // Max Health 10000 + Mod healing 1000%
354- m_lChromaticPlayerGUID.push_back (afflictionTarget->GetObjectGuid ());
340+ afflictionTarget->AddAura (SPELL_CHROMATIC_MUT_1, ADD_AURA_NO_OPTION, m_creature); // Main MC aura
341+ afflictionTarget->AddAura (SPELL_CHROMATIC_MUTATION_ONE); // Mod DMG 500% + Mod Haste Melee 100 + Mod Haste Spell 300
342+ afflictionTarget->AddAura (SPELL_CHROMATIC_MUTATION_TWO); // Max Health 10000 + Mod healing 1000%
343+ m_lChromaticPlayerGUID.push_back (afflictionTarget->GetObjectGuid ());
355344 }
356345 else // Pets die instantly
357346 afflictionTarget->DealDamage (afflictionTarget, afflictionTarget->GetHealth (), nullptr , DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr , false );
@@ -365,7 +354,7 @@ struct boss_chromaggusAI : public ScriptedAI
365354 m_uiAfflictionTimer -= uiDiff;
366355
367356 // If player dies while he had the aura SPELL_BROODAF_RED
368- for (AfflictionGuids::iterator itr = m_lRedAfflictionPlayerGUID.begin (); itr != m_lRedAfflictionPlayerGUID.end ();)
357+ for (auto itr = m_lRedAfflictionPlayerGUID.begin (); itr != m_lRedAfflictionPlayerGUID.end ();)
369358 {
370359 Player* pTarget = m_creature->GetMap ()->GetPlayer (*itr);
371360 if (pTarget && pTarget->IsAlive () && !pTarget->HasAura (SPELL_BROODAF_RED, EFFECT_INDEX_0))
@@ -384,15 +373,15 @@ struct boss_chromaggusAI : public ScriptedAI
384373 }
385374
386375 // If player dies while he had the aura SPELL_CHROMATIC_MUT_1
387- for (AfflictionGuids::iterator itr = m_lChromaticPlayerGUID.begin (); itr != m_lChromaticPlayerGUID.end ();)
376+ for (auto itr = m_lChromaticPlayerGUID.begin (); itr != m_lChromaticPlayerGUID.end ();)
388377 {
389378 if (Player* pTarget = m_creature->GetMap ()->GetPlayer (*itr))
390379 {
391380 if (pTarget->IsDead ())
392381 {
393- pTarget->RemoveAurasDueToSpell (23175 );
394- pTarget->RemoveAurasDueToSpell (23177 );
395- if (DoCastSpellIfCan (m_creature, 23168 ) == CAST_OK) // Heal 150000 HP
382+ pTarget->RemoveAurasDueToSpell (SPELL_CHROMATIC_MUTATION_ONE );
383+ pTarget->RemoveAurasDueToSpell (SPELL_CHROMATIC_MUTATION_TWO );
384+ if (DoCastSpellIfCan (m_creature, SPELL_BROOD_AFFLICTION_RED ) == CAST_OK) // Heal 150000 HP
396385 itr = m_lChromaticPlayerGUID.erase (itr);
397386 break ;
398387 }
0 commit comments