From 11a2123009c8e51fcef145b8e7573b747f0d3e10 Mon Sep 17 00:00:00 2001 From: Cala Date: Mon, 6 Nov 2017 22:17:31 +0100 Subject: [PATCH] Small updates for raid encounters * Fix initial Brood Affliction timer (Chromaggus) * Add missing emote (Chromaggus) * Clarify name of an enum and make use of it (Ragnaros) * Add missing additional spells for Chromatic Mutation (Chromaggus) * Code clean-up for a few spell effects --- .../blackwing_lair/boss_chromaggus.cpp | 6 ++- .../molten_core/boss_ragnaros.cpp | 4 +- src/game/Spells/SpellEffects.cpp | 37 ++++--------------- 3 files changed, 14 insertions(+), 33 deletions(-) diff --git a/src/game/AI/ScriptDevAI/scripts/eastern_kingdoms/blackwing_lair/boss_chromaggus.cpp b/src/game/AI/ScriptDevAI/scripts/eastern_kingdoms/blackwing_lair/boss_chromaggus.cpp index 68ca4f17b2f..030018f732b 100755 --- a/src/game/AI/ScriptDevAI/scripts/eastern_kingdoms/blackwing_lair/boss_chromaggus.cpp +++ b/src/game/AI/ScriptDevAI/scripts/eastern_kingdoms/blackwing_lair/boss_chromaggus.cpp @@ -27,6 +27,7 @@ EndScriptData */ enum { EMOTE_GENERIC_FRENZY_KILL = -1000001, + EMOTE_GENERIC_FRENZY = -1000002, EMOTE_SHIMMER = -1469003, SPELL_BREATH_SELECTION = 23195, @@ -71,7 +72,7 @@ struct boss_chromaggusAI : public ScriptedAI m_uiBreathLeftTimer = 30000; // Left breath is 30 seconds m_uiBreathRightTimer = 60000; // Right is 1 minute so that we can alternate } - m_uiAfflictionTimer = 10000; + m_uiAfflictionTimer = 7 * IN_MILLISECONDS; m_uiFrenzyTimer = 15000; m_bEnraged = false; } @@ -133,7 +134,7 @@ struct boss_chromaggusAI : public ScriptedAI if (m_uiAfflictionTimer < uiDiff) { if (DoCastSpellIfCan(m_creature, SPELL_BROOD_AFFLICTION) == CAST_OK) - m_uiAfflictionTimer = 7000; + m_uiAfflictionTimer = 7 * IN_MILLISECONDS; } else m_uiAfflictionTimer -= uiDiff; @@ -154,6 +155,7 @@ struct boss_chromaggusAI : public ScriptedAI if (!m_bEnraged && m_creature->GetHealthPercent() < 20.0f) { DoCastSpellIfCan(m_creature, SPELL_ENRAGE); + DoScriptText(EMOTE_GENERIC_FRENZY, m_creature); m_bEnraged = true; } diff --git a/src/game/AI/ScriptDevAI/scripts/eastern_kingdoms/molten_core/boss_ragnaros.cpp b/src/game/AI/ScriptDevAI/scripts/eastern_kingdoms/molten_core/boss_ragnaros.cpp index 39b638c953c..18264091160 100644 --- a/src/game/AI/ScriptDevAI/scripts/eastern_kingdoms/molten_core/boss_ragnaros.cpp +++ b/src/game/AI/ScriptDevAI/scripts/eastern_kingdoms/molten_core/boss_ragnaros.cpp @@ -47,7 +47,7 @@ enum SPELL_LAVA_BURST = 21908, // Randomly trigger one of spells 21886, 21900 - 21907 which summons Go 178088 SPELL_SUMMON_SONS_FLAME = 21108, // Trigger the eight spells summoning the Son of Flame adds - MAX_ADDS_IN_SUBMERGE = 8, + NB_ADDS_IN_SUBMERGE = 8, NPC_SON_OF_FLAME = 12143, NPC_FLAME_OF_RAGNAROS = 13148, }; @@ -301,7 +301,7 @@ struct boss_ragnarosAI : public Scripted_NoMovementAI // Summon 8 elementals around the boss if (DoCastSpellIfCan(m_creature, SPELL_SUMMON_SONS_FLAME) == CAST_OK) - m_uiAddCount = 8; + m_uiAddCount = NB_ADDS_IN_SUBMERGE; return; } diff --git a/src/game/Spells/SpellEffects.cpp b/src/game/Spells/SpellEffects.cpp index 1406f8dea41..06b3abc10b2 100644 --- a/src/game/Spells/SpellEffects.cpp +++ b/src/game/Spells/SpellEffects.cpp @@ -1223,15 +1223,8 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx) // until there are 15 appliance of the chosen brood affliction // Brood Affliction selection - uint32 spellAfflict = 0; - switch (urand(0, 4)) - { - case 0: spellAfflict = 23153; break; // Brood Affliction: Blue - case 1: spellAfflict = 23154; break; // Brood Affliction: Black - case 2: spellAfflict = 23155; break; // Brood Affliction: Red - case 3: spellAfflict = 23170; break; // Brood Affliction: Bronze - case 4: spellAfflict = 23169; break; // Brood Affliction: Green - } + uint32 afflictions[] = { 23153, 23154, 23155, 23170, 23169 }; // Blue / Black / Red / Bronze / Green + uint32 spellAfflict = afflictions[urand(0, 4)]; // Get the fifteen (potentially duplicate) targets from threat list GuidVector vGuids; @@ -1273,6 +1266,8 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx) { unit->RemoveAllAuras(); m_caster->CastSpell(unit, 23174, TRIGGERED_OLD_TRIGGERED); + unit->CastSpell(unit, 23175, TRIGGERED_OLD_TRIGGERED); + unit->CastSpell(unit, 23177, TRIGGERED_OLD_TRIGGERED); } } return; @@ -1287,28 +1282,12 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx) uint8 leftBreath = (rightBreath + urand(1, 4)) % 5; // Sending left breath to instance script - uint32 breathSpellId = 0; - switch (leftBreath) - { - case 0: breathSpellId = 23317; break; - case 1: breathSpellId = 23318; break; - case 2: breathSpellId = 23319; break; - case 3: breathSpellId = 23320; break; - case 4: breathSpellId = 23321; break; - } - m_caster->CastSpell(m_caster, breathSpellId, TRIGGERED_OLD_TRIGGERED); + uint32 leftBreaths[] = { 23317, 23318, 23319, 23320, 23321 }; + m_caster->CastSpell(m_caster, leftBreaths[leftBreath], TRIGGERED_OLD_TRIGGERED); // Sending right breath to instance script - breathSpellId = 0; - switch (rightBreath) - { - case 0: breathSpellId = 23322; break; - case 1: breathSpellId = 23323; break; - case 2: breathSpellId = 23324; break; - case 3: breathSpellId = 23325; break; - case 4: breathSpellId = 23326; break; - } - m_caster->CastSpell(m_caster, breathSpellId, TRIGGERED_OLD_TRIGGERED); + uint32 rightBreaths[] = { 23322, 23323, 23324, 23325, 23326 }; + m_caster->CastSpell(m_caster, rightBreaths[rightBreath], TRIGGERED_OLD_TRIGGERED); return; }