From 43552868b848908fbe7dd1aedbe8c5be3bb573a0 Mon Sep 17 00:00:00 2001 From: blinkysc <37940565+blinkysc@users.noreply.github.com> Date: Thu, 30 Oct 2025 21:53:37 -0500 Subject: [PATCH 01/10] fix(Script/HoL): Volkhan timings and Molten Golem timers and abilities (#23433) --- .../Ulduar/HallsOfLightning/boss_volkhan.cpp | 111 ++++++++++-------- 1 file changed, 64 insertions(+), 47 deletions(-) diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp index bacc582570..29ff343a88 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp @@ -30,6 +30,7 @@ enum VolkahnSpells //Molten Golem SPELL_BLAST_WAVE = 23113, + SPELL_COOL_DOWN = 52443, SPELL_IMMOLATION_STRIKE = 52433, SPELL_SHATTER = 52429, }; @@ -59,8 +60,8 @@ enum VolkhanEvents EVENT_MOVE_TO_ANVIL = 5, // Molten Golem - EVENT_BLAST = 11, - EVENT_IMMOLATION = 12, + EVENT_IMMOLATION_STRIKE = 12, + EVENT_CHANGE_TARGET = 13, }; enum Yells @@ -82,7 +83,7 @@ struct boss_volkhan : public BossAI { _Reset(); x = y = z = PointID = ShatteredCount = 0; - HealthCheck = 100; + shatteredStompCast = false; me->SetSpeed(MOVE_RUN, 1.2f, true); me->SetReactState(REACT_AGGRESSIVE); instance->SetData(DATA_VOLKHAN_ACHIEVEMENT, true); @@ -93,7 +94,10 @@ struct boss_volkhan : public BossAI _JustEngagedWith(); me->SetInCombatWithZone(); Talk(SAY_AGGRO); - ScheduleEvents(false); + events.ScheduleEvent(EVENT_MOVE_TO_ANVIL, randtime(9s, 14s)); + events.ScheduleEvent(EVENT_HEAT, randtime(18s, 38s)); + events.ScheduleEvent(EVENT_CHECK_HEALTH, 1s); + events.ScheduleEvent(EVENT_POSITION, 4s); } void JustDied(Unit*) override @@ -151,15 +155,6 @@ struct boss_volkhan : public BossAI Talk(SAY_SLAY); } - void ScheduleEvents(bool anvil) - { - events.SetPhase(1); - events.RescheduleEvent(EVENT_HEAT, 8s, 0, 1); - events.RescheduleEvent(EVENT_SHATTER, 10s, 0, 1); - events.RescheduleEvent(EVENT_CHECK_HEALTH, anvil ? 1s : 6s, 0, 1); - events.RescheduleEvent(EVENT_POSITION, 4s, 0, 1); - } - void JustSummoned(Creature* summon) override { summons.Summon(summon); @@ -182,6 +177,19 @@ struct boss_volkhan : public BossAI } } + bool HasActiveGolem() + { + for (ObjectGuid const& guid : summons) + { + if (Creature* golem = ObjectAccessor::GetCreature(*me, guid)) + { + if (golem->GetEntry() == NPC_MOLTEN_GOLEM && golem->IsAlive()) + return true; + } + } + return false; + } + void MovementInform(uint32 type, uint32 id) override { if (type != POINT_MOTION_TYPE) @@ -190,10 +198,8 @@ struct boss_volkhan : public BossAI if (id == POINT_ANVIL) { me->SetSpeed(MOVE_RUN, 1.2f, true); - me->SetReactState(REACT_AGGRESSIVE); - me->CastSpell(me, SPELL_TEMPER, false); + DoCastSelf(SPELL_TEMPER); PointID = 0; - ScheduleEvents(true); // update orientation at server me->SetOrientation(2.19f); @@ -205,24 +211,26 @@ struct boss_volkhan : public BossAI me->SetControlled(true, UNIT_STATE_ROOT); } else - events.ScheduleEvent(EVENT_MOVE_TO_ANVIL, 0ms, 0, 2); + me->GetMotionMaster()->MovePoint(PointID, x, y, z); } void SpellHitTarget(Unit* /*who*/, SpellInfo const* spellInfo) override { if (spellInfo->Id == SPELL_TEMPER) { - me->CastSpell(me, SPELL_SUMMON_MOLTEN_GOLEM, true); - me->CastSpell(me, SPELL_SUMMON_MOLTEN_GOLEM, true); - me->GetMotionMaster()->MoveChase(me->GetVictim()); + DoCastSelf(SPELL_SUMMON_MOLTEN_GOLEM, true); + DoCastSelf(SPELL_SUMMON_MOLTEN_GOLEM, true); me->SetControlled(false, UNIT_STATE_ROOT); + me->SetReactState(REACT_AGGRESSIVE); + if (me->GetVictim()) + me->GetMotionMaster()->MoveChase(me->GetVictim()); + + events.RescheduleEvent(EVENT_HEAT, randtime(9s, 24s)); } } void GoToAnvil() { - events.SetPhase(2); - HealthCheck -= 20; me->SetSpeed(MOVE_RUN, 4.0f, true); me->SetReactState(REACT_PASSIVE); @@ -231,12 +239,12 @@ struct boss_volkhan : public BossAI if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) me->GetMotionMaster()->MovementExpired(); - events.ScheduleEvent(EVENT_MOVE_TO_ANVIL, 0ms, 0, 2); + GetNextPos(); + me->GetMotionMaster()->MovePoint(PointID, x, y, z); } void UpdateAI(uint32 diff) override { - //Return since we have no target if (!UpdateVictim()) return; @@ -248,31 +256,31 @@ struct boss_volkhan : public BossAI switch (events.ExecuteEvent()) { case EVENT_HEAT: - me->CastSpell(me, SPELL_HEAT, true); - events.Repeat(8s); + if (HasActiveGolem()) + { + DoCastSelf(SPELL_HEAT); + events.Repeat(randtime(9s, 24s)); + } break; case EVENT_CHECK_HEALTH: - if (HealthBelowPct(HealthCheck)) - GoToAnvil(); - + if (!shatteredStompCast && HealthBelowPct(25)) + { + shatteredStompCast = true; + DoCastAOE(SPELL_SHATTERING_STOMP); + Talk(SAY_STOMP); + summons.DoAction(ACTION_SHATTER); + } events.Repeat(1s); return; - case EVENT_SHATTER: - { - events.Repeat(10s); - summons.DoAction(ACTION_SHATTER); - break; - } case EVENT_MOVE_TO_ANVIL: - GetNextPos(); - me->GetMotionMaster()->MovePoint(PointID, x, y, z); + GoToAnvil(); + events.Repeat(randtime(30s, 36s)); return; case EVENT_POSITION: if (me->GetDistance(1331.9f, -106, 56) > 95) EnterEvadeMode(); else events.Repeat(4s); - return; } @@ -282,10 +290,10 @@ struct boss_volkhan : public BossAI private: EventMap events; SummonList summons; - uint8 HealthCheck; float x, y, z; uint8 PointID; uint8 ShatteredCount; + bool shatteredStompCast; }; struct npc_molten_golem : public ScriptedAI @@ -298,8 +306,9 @@ struct npc_molten_golem : public ScriptedAI void Reset() override { events.Reset(); - events.ScheduleEvent(EVENT_BLAST, 7s); - events.ScheduleEvent(EVENT_IMMOLATION, 3s); + events.ScheduleEvent(EVENT_IMMOLATION_STRIKE, 3s); + events.ScheduleEvent(EVENT_CHANGE_TARGET, 5s); + DoCastSelf(SPELL_COOL_DOWN, true); } void DamageTaken(Unit*, uint32& uiDamage, DamageEffectType, SpellSchoolMask) override @@ -312,6 +321,9 @@ struct npc_molten_golem : public ScriptedAI if (uiDamage >= me->GetHealth()) { + if (me->GetMap()->IsHeroic()) + DoCastSelf(SPELL_BLAST_WAVE, true); + me->UpdateEntry(NPC_BRITTLE_GOLEM, 0, false); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_DISABLE_MOVE); me->SetHealth(me->GetMaxHealth()); @@ -351,14 +363,19 @@ struct npc_molten_golem : public ScriptedAI switch (events.ExecuteEvent()) { - case EVENT_BLAST: - me->CastSpell(me, SPELL_BLAST_WAVE, false); - events.Repeat(14s); - break; - case EVENT_IMMOLATION: - me->CastSpell(me->GetVictim(), SPELL_IMMOLATION_STRIKE, false); + case EVENT_IMMOLATION_STRIKE: + if (SelectTarget(SelectTargetMethod::MaxThreat, 0, 0.0f, true, true, -SPELL_IMMOLATION_STRIKE)) + DoCastVictim(SPELL_IMMOLATION_STRIKE); events.Repeat(5s); break; + case EVENT_CHANGE_TARGET: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true)) + { + me->GetThreatMgr().ResetAllThreat(); + me->AddThreat(target, 30000.0f); + AttackStart(target); + } + break; } DoMeleeAttackIfReady(); From 2d50ee0ed9698c1a1c465ff364538868cda7751e Mon Sep 17 00:00:00 2001 From: blinkysc <37940565+blinkysc@users.noreply.github.com> Date: Thu, 30 Oct 2025 22:34:18 -0500 Subject: [PATCH 02/10] fix(Scripts/HoS): Maiden of Grief various issues (#23415) --- .../HallsOfStone/boss_maiden_of_grief.cpp | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp index 4627a2da9e..40bf8449d0 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp @@ -77,10 +77,11 @@ public: void JustEngagedWith(Unit* /*who*/) override { - events.ScheduleEvent(EVENT_STORM, 5s); - events.ScheduleEvent(EVENT_SHOCK, 26s, 32s); - events.ScheduleEvent(EVENT_PILLAR, 12s, 20s); - events.ScheduleEvent(EVENT_PARTING, 8s); + events.ScheduleEvent(EVENT_STORM, 6s, 10s); + events.ScheduleEvent(EVENT_SHOCK, 14s, 29s); + events.ScheduleEvent(EVENT_PILLAR, 7s, 15s); + if (IsHeroic()) + events.ScheduleEvent(EVENT_PARTING, 27s, 45s); Talk(SAY_AGGRO); if (pInstance) @@ -105,7 +106,7 @@ public: case EVENT_STORM: { me->CastSpell(me->GetVictim(), SPELL_STORM_OF_GRIEF, true); - events.Repeat(10s); + events.Repeat(16s, 20s); break; } case EVENT_SHOCK: @@ -113,7 +114,7 @@ public: me->CastSpell(me->GetVictim(), SPELL_SHOCK_OF_SORROW, false); Talk(SAY_STUN); - events.Repeat(16s, 22s); + events.Repeat(19s, 33s); break; } case EVENT_PILLAR: @@ -121,15 +122,28 @@ public: if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0)) me->CastSpell(target, SPELL_PILLAR_OF_WOE, false); - events.Repeat(12s, 20s); + events.Repeat(8s, 31s); break; } case EVENT_PARTING: { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true, 0)) + Unit* target = nullptr; + std::list targetList; + + SelectTargetList(targetList, 10, SelectTargetMethod::Random, 0, 50.0f, true); + for (Unit* possibleTarget : targetList) + { + if (possibleTarget && possibleTarget->IsPlayer() && possibleTarget->getPowerType() == POWER_MANA) + { + target = possibleTarget; + break; + } + } + + if (target) me->CastSpell(target, SPELL_PARTING_SORROW, false); - events.Repeat(6s, 16s); + events.Repeat(27s, 45s); break; } } From ed861160b580466ab4bc04ba21a7cf30d90cd05c Mon Sep 17 00:00:00 2001 From: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com> Date: Fri, 31 Oct 2025 12:07:44 +0100 Subject: [PATCH 03/10] fix(Script/Naxx): Remove root when Thaddius is in combat and decrease the first Polarity Shift cast by 10 seconds. (#23484) --- src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp index cf953363d4..b4fd5a861c 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp @@ -308,9 +308,10 @@ public: me->SetReactState(REACT_AGGRESSIVE); me->SetControlled(false, UNIT_STATE_STUNNED); me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); + me->SetControlled(false, UNIT_STATE_ROOT); events.ScheduleEvent(EVENT_THADDIUS_CHAIN_LIGHTNING, 14s); events.ScheduleEvent(EVENT_THADDIUS_BERSERK, 6min); - events.ScheduleEvent(EVENT_THADDIUS_POLARITY_SHIFT, 30s); + events.ScheduleEvent(EVENT_THADDIUS_POLARITY_SHIFT, 20s); events.ScheduleEvent(EVENT_ALLOW_BALL_LIGHTNING, 5s); return; case EVENT_THADDIUS_BERSERK: From b5e947cac8578e0a1120a878460c38b8f2edd93a Mon Sep 17 00:00:00 2001 From: blinkysc <37940565+blinkysc@users.noreply.github.com> Date: Fri, 31 Oct 2025 07:15:02 -0500 Subject: [PATCH 04/10] fix(DB/SAI): Dark Rune Controller will use Domination only on more then 1 group as well as summon shardling timing. (#23400) Co-authored-by: John Doe Co-authored-by: blinkysc --- .../updates/pending_db_world/rev_1761402630039422994.sql | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1761402630039422994.sql diff --git a/data/sql/updates/pending_db_world/rev_1761402630039422994.sql b/data/sql/updates/pending_db_world/rev_1761402630039422994.sql new file mode 100644 index 0000000000..01b3d04dbf --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1761402630039422994.sql @@ -0,0 +1,7 @@ +-- +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 27966; +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 27966) AND (`source_type` = 0) AND (`id` IN (0, 1, 2)); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(27966, 0, 0, 0, 0, 0, 100, 7, 6000, 14000, 20000, 23000, 0, 0, 11, 51507, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Rune Controller - In Combat - Cast \'Summon Shardling\' (No Repeat) (Dungeon)'), +(27966, 0, 1, 0, 0, 0, 100, 6, 5000, 10000, 17000, 25000, 0, 0, 11, 51503, 128, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Rune Controller - In Combat - Cast \'Domination\' (Dungeon)'), +(27966, 0, 2, 0, 16, 0, 100, 6, 51805, 15, 14000, 17000, 0, 0, 11, 51805, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Rune Controller - On Friendly Unit Missing Buff \'Crystalline Growth\' - Cast \'Crystalline Growth\' (Dungeon)'); From dea6bce8e140de790ccaaae1921c03be6bbd7bb6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 31 Oct 2025 12:16:04 +0000 Subject: [PATCH 05/10] chore(DB): import pending files Referenced commit(s): b5e947cac8578e0a1120a878460c38b8f2edd93a --- .../rev_1761402630039422994.sql => db_world/2025_10_31_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1761402630039422994.sql => db_world/2025_10_31_00.sql} (96%) diff --git a/data/sql/updates/pending_db_world/rev_1761402630039422994.sql b/data/sql/updates/db_world/2025_10_31_00.sql similarity index 96% rename from data/sql/updates/pending_db_world/rev_1761402630039422994.sql rename to data/sql/updates/db_world/2025_10_31_00.sql index 01b3d04dbf..059af8383c 100644 --- a/data/sql/updates/pending_db_world/rev_1761402630039422994.sql +++ b/data/sql/updates/db_world/2025_10_31_00.sql @@ -1,3 +1,4 @@ +-- DB update 2025_10_30_01 -> 2025_10_31_00 -- UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 27966; DELETE FROM `smart_scripts` WHERE (`entryorguid` = 27966) AND (`source_type` = 0) AND (`id` IN (0, 1, 2)); From f6cfc9693cf7e7949d1261fa3571b7a4b4a0ef20 Mon Sep 17 00:00:00 2001 From: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com> Date: Fri, 31 Oct 2025 13:17:10 +0100 Subject: [PATCH 06/10] fix(DB/Creature): Set root flag on Shadow Fissure Trigger. (#23486) --- data/sql/updates/pending_db_world/Shadow_fissure.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/Shadow_fissure.sql diff --git a/data/sql/updates/pending_db_world/Shadow_fissure.sql b/data/sql/updates/pending_db_world/Shadow_fissure.sql new file mode 100644 index 0000000000..76b309a348 --- /dev/null +++ b/data/sql/updates/pending_db_world/Shadow_fissure.sql @@ -0,0 +1,3 @@ + +-- Set Rooted +UPDATE `creature_template_movement` SET `Rooted` = 1 WHERE (`CreatureId` = 16129); From 65dac317c73e5ba8635e61778c333dc7bb8b6427 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 31 Oct 2025 12:17:15 +0000 Subject: [PATCH 07/10] chore(DB): import pending files Referenced commit(s): dea6bce8e140de790ccaaae1921c03be6bbd7bb6 --- .../Shadow_fissure.sql => db_world/2025_10_31_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/Shadow_fissure.sql => db_world/2025_10_31_01.sql} (69%) diff --git a/data/sql/updates/pending_db_world/Shadow_fissure.sql b/data/sql/updates/db_world/2025_10_31_01.sql similarity index 69% rename from data/sql/updates/pending_db_world/Shadow_fissure.sql rename to data/sql/updates/db_world/2025_10_31_01.sql index 76b309a348..653911439a 100644 --- a/data/sql/updates/pending_db_world/Shadow_fissure.sql +++ b/data/sql/updates/db_world/2025_10_31_01.sql @@ -1,3 +1,4 @@ +-- DB update 2025_10_31_00 -> 2025_10_31_01 -- Set Rooted UPDATE `creature_template_movement` SET `Rooted` = 1 WHERE (`CreatureId` = 16129); From a4a9d215d8063b7267da850f7b48d347df9f0790 Mon Sep 17 00:00:00 2001 From: Tereneckla Date: Fri, 31 Oct 2025 12:35:13 +0000 Subject: [PATCH 08/10] refactor(Scripts/Raids): move spell ids for Raids to dungeondifficulty_dbc (#23477) --- .../rev_1761752382851899257.sql | 207 ++++++++++++++++++ .../boss_anubarak_trial.cpp | 7 +- .../trial_of_the_crusader.h | 3 +- .../PitOfSaron/boss_forgemaster_garfrost.cpp | 68 +++--- .../boss_deathbringer_saurfang.cpp | 3 - .../IcecrownCitadel/boss_festergut.cpp | 56 +++-- .../IcecrownCitadel/boss_rotface.cpp | 4 +- .../IcecrownCitadel/boss_the_lich_king.cpp | 20 +- .../boss_valithria_dreamwalker.cpp | 15 +- .../Northrend/Naxxramas/boss_anubrekhan.cpp | 10 +- .../Northrend/Naxxramas/boss_faerlina.cpp | 4 +- .../Naxxramas/boss_four_horsemen.cpp | 30 +-- .../Northrend/Naxxramas/boss_gluth.cpp | 10 +- .../Northrend/Naxxramas/boss_gothik.cpp | 5 +- .../Northrend/Naxxramas/boss_grobbulus.cpp | 35 +-- .../Northrend/Naxxramas/boss_heigan.cpp | 5 +- .../Northrend/Naxxramas/boss_kelthuzad.cpp | 10 +- .../Northrend/Naxxramas/boss_loatheb.cpp | 10 +- .../Northrend/Naxxramas/boss_maexxna.cpp | 20 +- .../scripts/Northrend/Naxxramas/boss_noth.cpp | 10 +- .../Northrend/Naxxramas/boss_patchwerk.cpp | 5 +- .../Northrend/Naxxramas/boss_razuvious.cpp | 5 +- .../Northrend/Naxxramas/boss_sapphiron.cpp | 15 +- .../Northrend/Naxxramas/boss_thaddius.cpp | 15 +- .../Ulduar/Ulduar/boss_assembly_of_iron.cpp | 56 ++--- .../Northrend/Ulduar/Ulduar/boss_auriaya.cpp | 29 +-- .../Northrend/Ulduar/Ulduar/boss_freya.cpp | 99 +++------ .../Northrend/Ulduar/Ulduar/boss_hodir.cpp | 37 ++-- .../Northrend/Ulduar/Ulduar/boss_ignis.cpp | 84 ++++--- .../Northrend/Ulduar/Ulduar/boss_kologarn.cpp | 55 ++--- .../Northrend/Ulduar/Ulduar/boss_mimiron.cpp | 68 +++--- .../Ulduar/Ulduar/boss_razorscale.cpp | 20 +- .../Northrend/Ulduar/Ulduar/boss_thorim.cpp | 63 ++---- .../Northrend/Ulduar/Ulduar/boss_xt002.cpp | 21 +- .../Ulduar/Ulduar/boss_yoggsaron.cpp | 17 +- .../Northrend/Ulduar/Ulduar/ulduar.cpp | 10 +- .../VaultOfArchavon/boss_archavon.cpp | 27 +-- .../Northrend/VaultOfArchavon/boss_emalon.cpp | 10 +- 38 files changed, 586 insertions(+), 582 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1761752382851899257.sql diff --git a/data/sql/updates/pending_db_world/rev_1761752382851899257.sql b/data/sql/updates/pending_db_world/rev_1761752382851899257.sql new file mode 100644 index 0000000000..74f27f9c7a --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1761752382851899257.sql @@ -0,0 +1,207 @@ +-- | present in spelldifficulty.dbc | new -> +DELETE FROM `spelldifficulty_dbc` WHERE `ID` IN (66809,70867,70877,70879,70994,71623,68186,69037,72224,70873,28783,28785,28732,28884,57374,28863,28883,57376,28882,28371,28374,29317,28157,28158,29998,28478,28479,29865,29204,29484,28741,54121,54123,29213,29212,41926,55543,28531,55697,28542,54529,28135,28167,64717,64776,61916,61890,61903,61911,64637,62274,62269,62054,61879,61869,61915,61887,64389,64422,64666,64375,64478,64496,64458,62584,62528,62623,64587,62437,62862,62861,62451,62240,62217,62310,62275,62283,62285,62325,62337,62664,62653,62654,62648,62649,62589,62598,62478,65123,63711,62680,62546,62717,62548,65722,62836,63356,63573,62030,63716,63347,63629,63821,63766,62166,62056,63818,63666,62997,66351,63387,64019,63689,64352,64348,64626,64016,63317,46763,63809,64758,62131,62577,62334,62335,62333,62315,62316,62331,62332,62327,62328,62321,62613,62411,63024,63018,65737,64203,64227,63795,64125,64159,58695,58960,58663,58666,64213,64216); +INSERT INTO `spelldifficulty_dbc` (`ID`,`DifficultySpellID_1`,`DifficultySpellID_2`,`DifficultySpellID_3`,`DifficultySpellID_4`) VALUES +-- Trial of the Crusader +-- Anubarak +(68186,68186,68515,68186,68515), + +-- ICC +-- Lich King +(69037,69037,74361,69037,74361), +-- Valithria +(72224,72224,72224,72480,72480), +(70873,70873,70873,71941,71941), + +-- Naxxramas +-- Anubrekhan +(28783,28783,56090,0,0), +(28785,28785,54021,0,0), +-- Faerlina +(28732,28732,54097,0,0), +-- Horsemen +(28884,28884,57467,0,0), +(57374,57374,57464,0,0), +(28863,28863,57463,0,0), +(28883,28883,57466,0,0), +(57376,57376,57465,0,0), +(28882,28882,57369,0,0), +-- Gluth +(28371,28371,54427,0,0), +(28374,28374,54426,0,0), +-- Gothik +(29317,29317,56405,0,0), +-- Grobbulus +(28157,28157,54364,0,0), +(28158,28158,54362,0,0), +-- Heigan +(29998,29998,55011,0,0), +-- Kelthuzad +(28478,28478,55802,0,0), +(28479,28479,55807,0,0), +-- Loatheb +(29865,29865,55053,0,0), +(29204,29204,55052,0,0), +-- Maexxna +(29484,29484,54125,0,0), +(28741,28741,54122,0,0), +(54121,54121,28776,0,0), +(54123,54123,54124,0,0), +-- Noth +(29213,29213,54835,0,0), +(29212,29212,54814,0,0), +-- Patchwerk +(41926,41926,59192,0,0), +-- Razuvious +(55543,55543,29107,0,0), +-- Sapphiron +(28531,28531,55799,0,0), +(55697,55697,55696,0,0), +(28542,28542,55665,0,0), +-- Thaddius +(54529,54529,28134,0,0), +(28135,28135,54528,0,0), +(28167,28167,54531,0,0), + +-- Ulduar +(64717,64717,65241,0,0), +(64776,64776,65240,0,0), +-- Assembly of Iron +(61916,61916,63482,0,0), +(61890,61890,63498,0,0), +(61903,61903,63493,0,0), +(61911,61911,63495,0,0), +(64637,64637,61888,0,0), +(62274,62274,63489,0,0), +(62269,62269,63490,0,0), +(62054,62054,63491,0,0), +(61879,61879,63479,0,0), +(61869,61869,63481,0,0), +(61915,61915,63483,0,0), +(61887,61887,63486,0,0), +-- Auriaya +(64389,64389,64678,0,0), +(64422,64422,64688,0,0), +(64666,64666,64374,0,0), +(64375,64375,64667,0,0), +(64478,64478,64669,0,0), +(64496,64496,64674,0,0), +(64458,64458,64676,0,0), +-- Freya +(62584,62584,64185,0,0), +(62528,62528,62892,0,0), +(62623,62623,62872,0,0), +(64587,64587,64650,0,0), +(62437,62437,62859,0,0), +(62862,62862,62439,0,0), +(62861,62861,62438,0,0), +(62451,62451,62865,0,0), +(62240,62240,64087,0,0), +(62217,62217,62922,0,0), +(62310,62310,62928,0,0), +(62275,62275,62929,0,0), +(62283,62283,62930,0,0), +(62285,62285,62931,0,0), +(62325,62325,62932,0,0), +(62337,62337,62933,0,0), +(62664,62664,64191,0,0), +(62653,62653,62935,0,0), +(62654,62654,62936,0,0), +(62648,62648,62939,0,0), +(62649,62649,62938,0,0), +(62589,62589,63571,0,0), +(62598,62598,62937,0,0), +-- Hodir +(62478,62478,63512,0,0), +(65123,65123,65133,0,0), +(63711,63711,65134,0,0), +-- Ignis +(62680,62680,63472,0,0), +(62546,62546,63474,0,0), +(62717,62717,63477,0,0), +(62548,62548,63476,0,0), +(65722,65722,65723,0,0), +(62836,62836,63536,0,0), +-- Kologarn +(63356,63356,64003,0,0), +(63573,63573,64006,0,0), +(62030,62030,63980,0,0), +(63716,63716,64005,0,0), +(63347,63347,63977,0,0), +(63629,63629,63979,0,0), +(63821,63821,64001,0,0), +(63766,63766,63983,0,0), +(62166,62166,63981,0,0), +(62056,62056,63985,0,0), +(63818,63818,63978,0,0), +-- Mimiron +(63666,63666,65026,0,0), +(62997,62997,64529,0,0), +(66351,66351,63009,0,0), +(63387,63387,64531,0,0), +(64019,64019,64532,0,0), +(63689,63689,64535,0,0), +(64352,64352,64537,0,0), +(64348,64348,64536,0,0), +(64626,64626,65333,0,0), +-- Razorscale +(64016,64016,64023,0,0), +(63317,63317,64021,0,0), +(46763,46763,64062,0,0), +(63809,63809,64696,0,0), +(64758,64758,64759,0,0), +-- Thorim +(62131,62131,64390,0,0), +(62577,62577,62603,0,0), +(62334,62334,62442,0,0), +(62335,62335,62443,0,0), +(62333,62333,62441,0,0), +(62315,62315,62415,0,0), +(62316,62316,62417,0,0), +(62331,62331,62418,0,0), +(62332,62332,62420,0,0), +(62327,62327,62445,0,0), +(62328,62328,62446,0,0), +(62321,62321,62529,0,0), +(62613,62613,62614,0,0), +(62411,62411,62413,0,0), +-- XT +(63024,63024,64234,0,0), +(63018,63018,65121,0,0), +(65737,65737,64193,0,0), +(64203,64203,64235,0,0), +(64227,64227,64236,0,0), +-- Yoggsaron +(63795,63795,65301,0,0), +(64125,64125,64126,0,0), +(64159,64159,64160,0,0), + +-- Vault of Archavon +-- Archavon +(58695,58695,60883,0,0), +(58960,58960,60894,0,0), +(58663,58663,60880,0,0), +(58666,58666,60882,0,0), +-- Emalon +(64213,64213,64215,0,0), +(64216,64216,65279,0,0); + +DELETE FROM `spell_script_names` WHERE `spell_id` IN (63716,64005,69159,70136,69161,70139,69163,70469,70135,70138,70468,70137,70140,70470,28157,54364,66351,63009); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(63716,"spell_kologarn_stone_shout_aura"), +(64005,"spell_kologarn_stone_shout_aura"), +(69159,"spell_festergut_gaseous_blight"), +(70136,"spell_festergut_gaseous_blight"), +(69161,"spell_festergut_gaseous_blight"), +(70139,"spell_festergut_gaseous_blight"), +(69163,"spell_festergut_gaseous_blight"), +(70469,"spell_festergut_gaseous_blight"), +(70135,"spell_festergut_gaseous_blight"), +(70138,"spell_festergut_gaseous_blight"), +(70468,"spell_festergut_gaseous_blight"), +(70137,"spell_festergut_gaseous_blight"), +(70140,"spell_festergut_gaseous_blight"), +(70470,"spell_festergut_gaseous_blight"), +(28157,"spell_grobbulus_slime_spray"), +(54364,"spell_grobbulus_slime_spray"), +(66351,"spell_ulduar_mimiron_mine_explosion"), +(63009,"spell_ulduar_mimiron_mine_explosion"); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp index 0e116a4288..87c8b3ae8b 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp @@ -19,6 +19,7 @@ #include "PassiveAI.h" #include "Player.h" #include "ScriptedCreature.h" +#include "SharedDefines.h" #include "SpellAuraEffects.h" #include "SpellScript.h" #include "SpellScriptLoader.h" @@ -161,7 +162,7 @@ public: events.Reset(); bIntro = false; bPhase3 = false; - me->ApplySpellImmune(0, IMMUNITY_ID, RAID_MODE(66193, 67855, 67856, 67857), true); + me->ApplySpellImmune(0, IMMUNITY_ID, sSpellMgr->GetSpellIdForDifficulty(SPELL_PERMAFROST, me), true); me->m_SightDistance = 90.0f; // for MoveInLineOfSight distance } @@ -501,7 +502,7 @@ public: void JustDied(Unit* /*killer*/) override { - me->CastSpell(me, RAID_MODE(SPELL_TRAITOR_KING_10, SPELL_TRAITOR_KING_25, SPELL_TRAITOR_KING_10, SPELL_TRAITOR_KING_25), true); + me->CastSpell(me, SPELL_TRAITOR_KING, true); me->m_Events.AddEventAtOffset(new HideNpcEvent(*me), 5s); } @@ -679,7 +680,7 @@ public: events.Repeat(30s, 45s); break; case EVENT_SUBMERGE: - if (HealthBelowPct(80) && !me->HasAura(RAID_MODE(66193, 67855, 67856, 67857))) // not having permafrost - allow submerge + if (HealthBelowPct(80) && !me->HasAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_PERMAFROST, me))) // not having permafrost - allow submerge { me->GetMotionMaster()->MoveIdle(); me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h index edc742da4b..8b107342b6 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h @@ -351,8 +351,7 @@ enum EventSpells SPELL_JORMUNGAR_ACHIEV = 68523, SPELL_FACTION_CHAMPIONS_KILL_CREDIT = 68184, SPELL_RESILIENCE_WILL_FIX_IT_CREDIT = 68620, - SPELL_TRAITOR_KING_10 = 68186, - SPELL_TRAITOR_KING_25 = 68515, + SPELL_TRAITOR_KING = 68186, SPELL_PORTAL_TO_DALARAN = 53142, }; diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp index 0811908824..3b145dc891 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp @@ -19,7 +19,9 @@ #include "CreatureScript.h" #include "Player.h" #include "ScriptedCreature.h" +#include "SharedDefines.h" #include "SpellAuras.h" +#include "SpellMgr.h" #include "SpellScript.h" #include "SpellScriptLoader.h" #include "pit_of_saron.h" @@ -54,11 +56,11 @@ enum Spells SPELL_CHILLING_WAVE = 68778, SPELL_DEEP_FREEZE = 70381, -}; -#define SPELL_FORGE_BLADE RAID_MODE(68774, 70334) -#define SPELL_FORGE_MACE RAID_MODE(68785, 70335) -#define SPELL_SARONITE_TRIGGERED RAID_MODE(68789, 70851) + SPELL_FORGE_BLADE = 68774, + SPELL_FORGE_MACE = 68785, + SPELL_SARONITE_TRIGGERED = 68789, +}; enum Events { @@ -154,21 +156,45 @@ public: if (phase == 1) { me->SetControlled(true, UNIT_STATE_ROOT); - me->CastSpell(me, SPELL_FORGE_BLADE, false); + if (me->CastSpell(me, SPELL_FORGE_BLADE, false) == SPELL_CAST_OK) + { + events.RescheduleEvent(EVENT_SPELL_CHILLING_WAVE, 10s); + SetEquipmentSlots(false, EQUIP_ID_SWORD); + me->SetReactState(REACT_AGGRESSIVE); + me->SetControlled(false, UNIT_STATE_ROOT); + me->DisableRotate(false); + if (me->GetVictim()) + { + AttackStart(me->GetVictim()); + me->SetTarget(me->GetVictim()->GetGUID()); + } + } Talk(SAY_HP_66); } else if (phase == 2) { me->SetControlled(true, UNIT_STATE_ROOT); - me->RemoveAurasDueToSpell(SPELL_FORGE_BLADE); - me->CastSpell(me, SPELL_FORGE_MACE, false); + me->RemoveAurasDueToSpell(sSpellMgr->GetSpellIdForDifficulty(SPELL_FORGE_BLADE, me)); + if (me->CastSpell(me, SPELL_FORGE_MACE, false) == SPELL_CAST_OK) + { + events.RescheduleEvent(EVENT_SPELL_DEEP_FREEZE, 10s); + SetEquipmentSlots(false, EQUIP_ID_MACE); + me->SetReactState(REACT_AGGRESSIVE); + me->SetControlled(false, UNIT_STATE_ROOT); + me->DisableRotate(false); + if (me->GetVictim()) + { + AttackStart(me->GetVictim()); + me->SetTarget(me->GetVictim()->GetGUID()); + } + } Talk(SAY_HP_33); } } void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override { - if (spell->Id == uint32(SPELL_SARONITE_TRIGGERED)) + if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_SARONITE_TRIGGERED, me)) { if (bCanSayBoulderHit) { @@ -176,32 +202,6 @@ public: Talk(SAY_BOULDER_HIT); } } - if (spell->Id == uint32(SPELL_FORGE_BLADE)) - { - events.RescheduleEvent(EVENT_SPELL_CHILLING_WAVE, 10s); - SetEquipmentSlots(false, EQUIP_ID_SWORD); - me->SetReactState(REACT_AGGRESSIVE); - me->SetControlled(false, UNIT_STATE_ROOT); - me->DisableRotate(false); - if (me->GetVictim()) - { - AttackStart(me->GetVictim()); - me->SetTarget(me->GetVictim()->GetGUID()); - } - } - else if (spell->Id == uint32(SPELL_FORGE_MACE)) - { - events.RescheduleEvent(EVENT_SPELL_DEEP_FREEZE, 10s); - SetEquipmentSlots(false, EQUIP_ID_MACE); - me->SetReactState(REACT_AGGRESSIVE); - me->SetControlled(false, UNIT_STATE_ROOT); - me->DisableRotate(false); - if (me->GetVictim()) - { - AttackStart(me->GetVictim()); - me->SetTarget(me->GetVictim()->GetGUID()); - } - } } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index fdf3165791..4ae1a2e36a 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -118,9 +118,6 @@ enum Spells SPELL_ACHIEVEMENT = 72928, }; -// Helper to get id of the aura on different modes (HasAura(baseId) wont work) -#define BOILING_BLOOD_HELPER RAID_MODE(72385, 72441, 72442, 72443) - enum EventTypes { EVENT_INTRO_ALLIANCE_1 = 1, diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp index 11d0142cec..ff86ed409d 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp @@ -19,7 +19,10 @@ #include "CreatureScript.h" #include "ObjectMgr.h" #include "ScriptedCreature.h" +#include "SharedDefines.h" #include "SpellAuras.h" +#include "SpellInfo.h" +#include "SpellScript.h" #include "SpellScriptLoader.h" #include "icecrown_citadel.h" #include "SpellAuraEffects.h" @@ -57,10 +60,6 @@ enum Spells SPELL_PLAGUE_STENCH = 71805, }; -// Used for HasAura checks -#define PUNGENT_BLIGHT_HELPER RAID_MODE(69195, 71219, 73031, 73032) -#define INOCULATED_HELPER RAID_MODE(69291, 72101, 72102, 72103) - uint32 const gaseousBlight[3] = {69157, 69162, 69164}; uint32 const gaseousBlightVisual[3] = {69126, 69152, 69154}; @@ -168,19 +167,6 @@ public: Talk(SAY_KILL); } - void SpellHitTarget(Unit* target, SpellInfo const* spell) override - { - if (spell->Id == PUNGENT_BLIGHT_HELPER) - target->RemoveAurasDueToSpell(INOCULATED_HELPER); - else if (Player* p = target->ToPlayer()) - { - // Gaseous Blight damage - if (((spell->Id == 69159 || spell->Id == 70136 || spell->Id == 69161 || spell->Id == 70139 || spell->Id == 69163 || spell->Id == 70469) && p->GetQuestStatus(QUEST_RESIDUE_RENDEZVOUS_10) == QUEST_STATUS_INCOMPLETE) || - ((spell->Id == 70135 || spell->Id == 70138 || spell->Id == 70468 || spell->Id == 70137 || spell->Id == 70140 || spell->Id == 70470) && p->GetQuestStatus(QUEST_RESIDUE_RENDEZVOUS_25) == QUEST_STATUS_INCOMPLETE)) - p->CastSpell(p, SPELL_ORANGE_BLIGHT_RESIDUE, true); - } - } - void RemoveBlight() { if (Creature* gasDummy = ObjectAccessor::GetCreature(*me, _gasDummyGUID)) @@ -313,8 +299,15 @@ class spell_festergut_pungent_blight : public SpellScript professor->AI()->DoAction(ACTION_FESTERGUT_GAS); } + void HandleHit(SpellEffIndex /*effIndex*/) + { + if (Unit* target = GetHitUnit()) + target->RemoveAurasDueToSpell(sSpellMgr->GetSpellIdForDifficulty(SPELL_INOCULATED, GetCaster())); + } + void Register() override { + OnEffectHitTarget += SpellEffectFn(spell_festergut_pungent_blight::HandleHit, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); OnEffectHitTarget += SpellEffectFn(spell_festergut_pungent_blight::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); } }; @@ -378,6 +371,34 @@ class spell_festergut_gastric_bloat : public SpellScript } }; +class spell_festergut_gaseous_blight : public SpellScript +{ + PrepareSpellScript(spell_festergut_gaseous_blight); + + bool Validate(SpellInfo const* /*spell*/) override + { + return ValidateSpellInfo({ SPELL_ORANGE_BLIGHT_RESIDUE }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + if (Player* p = GetHitUnit()->ToPlayer()) + { + if (Map* map = GetCaster()->GetMap()) + { + uint32 questId = map->Is25ManRaid() ? QUEST_RESIDUE_RENDEZVOUS_25 : QUEST_RESIDUE_RENDEZVOUS_10; + if (p->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE) + p->CastSpell(p, SPELL_ORANGE_BLIGHT_RESIDUE, true); + } + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_festergut_gaseous_blight::HandleScript, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + class achievement_flu_shot_shortage : public AchievementCriteriaScript { public: @@ -468,6 +489,7 @@ void AddSC_boss_festergut() RegisterSpellScript(spell_festergut_pungent_blight); RegisterSpellScript(spell_festergut_blighted_spores_aura); RegisterSpellScript(spell_festergut_gastric_bloat); + RegisterSpellScript(spell_festergut_gaseous_blight); new achievement_flu_shot_shortage(); new npc_stinky_icc(); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index ef366c7072..58509fe5d8 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -72,8 +72,6 @@ enum Spells SPELL_AWAKEN_PLAGUED_ZOMBIES = 71159, }; -#define MUTATED_INFECTION RAID_MODE(69674, 71224, 73022, 73023) - enum Events { EVENT_NONE, @@ -193,7 +191,7 @@ public: void JustDied(Unit* /*killer*/) override { - instance->DoRemoveAurasDueToSpellOnPlayers(MUTATED_INFECTION); + instance->DoRemoveAurasDueToSpellOnPlayers(sSpellMgr->GetSpellIdForDifficulty(SPELL_MUTATED_INFECTION, me)); _JustDied(); Talk(SAY_DEATH); if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE))) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index 20bd79ccde..3d7225cd39 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -141,7 +141,6 @@ enum Spells SPELL_SOUL_REAPER = 69409, // instant SPELL_SOUL_REAPER_BUFF = 69410, SPELL_SUMMON_VALKYR = 69037, // instant - SPELL_SUMMON_VALKYR_PERIODIC = 74361, SPELL_WINGS_OF_THE_DAMNED = 74352, SPELL_VALKYR_TARGET_SEARCH = 69030, SPELL_HARVEST_SOUL_VALKYR = 68985, // vehicle aura used by Val'kyr Shadowguard and Strangulate Vehicle @@ -188,14 +187,6 @@ enum Spells SPELL_FRENZY = 28747, }; -#define NECROTIC_PLAGUE_LK RAID_MODE(70337, 73912, 73913, 73914) -#define NECROTIC_PLAGUE_PLR RAID_MODE(70338, 73785, 73786, 73787) -#define REMORSELESS_WINTER_1 RAID_MODE(68981, 74270, 74271, 74272) -#define REMORSELESS_WINTER_2 RAID_MODE(72259, 74273, 74274, 74275) -#define SUMMON_VALKYR RAID_MODE(69037, 74361, 69037, 74361) -//#define HARVEST_SOUL RAID_MODE(68980, 74325, 74296, 74297) -#define HARVESTED_SOUL_BUFF RAID_MODE(72679, 74318, 74319, 74320) - enum Events { EVENT_NONE, @@ -915,7 +906,7 @@ public: void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override { - if (spell->Id == HARVESTED_SOUL_BUFF && me->IsInCombat() && !IsHeroic() && _phase != PHASE_OUTRO && _lastTalkTimeBuff + 5 <= GameTime::GetGameTime().count()) + if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_HARVESTED_SOUL_LK_BUFF, me) && me->IsInCombat() && !IsHeroic() && _phase != PHASE_OUTRO && _lastTalkTimeBuff + 5 <= GameTime::GetGameTime().count()) { _lastTalkTimeBuff = GameTime::GetGameTime().count(); Talk(SAY_LK_FROSTMOURNE_KILL); @@ -924,7 +915,7 @@ public: void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override { - if (spell->Id == REMORSELESS_WINTER_1 || spell->Id == REMORSELESS_WINTER_2) + if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_REMORSELESS_WINTER_1, me) || spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_REMORSELESS_WINTER_2, me)) { me->GetMap()->SetZoneOverrideLight(AREA_THE_FROZEN_THRONE, LIGHT_SNOWSTORM, 5s); me->GetMap()->SetZoneWeather(AREA_THE_FROZEN_THRONE, WEATHER_STATE_LIGHT_SNOW, 0.5f); @@ -1064,7 +1055,7 @@ public: events.ScheduleEvent(EVENT_INFEST, 22s + 500ms, EVENT_GROUP_ABILITIES); break; case EVENT_NECROTIC_PLAGUE: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, NecroticPlagueTargetCheck(me, NECROTIC_PLAGUE_LK, NECROTIC_PLAGUE_PLR))) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, NecroticPlagueTargetCheck(me, sSpellMgr->GetSpellIdForDifficulty(SPELL_NECROTIC_PLAGUE, me), sSpellMgr->GetSpellIdForDifficulty(SPELL_NECROTIC_PLAGUE_JUMP, me)))) { Talk(EMOTE_NECROTIC_PLAGUE_WARNING, target); me->CastSpell(target, SPELL_NECROTIC_PLAGUE, false); @@ -1145,7 +1136,7 @@ public: { me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL); Talk(SAY_LK_SUMMON_VALKYR); - me->CastSpell((Unit*)nullptr, SUMMON_VALKYR, false); + me->CastSpell((Unit*)nullptr, SPELL_SUMMON_VALKYR, false); events.ScheduleEvent(EVENT_SUMMON_VALKYR, 45s, EVENT_GROUP_ABILITIES); // schedule a defile (or reschedule it) if next defile event @@ -2352,8 +2343,7 @@ class spell_the_lich_king_defile : public SpellScript { targets.remove_if(VehicleCheck()); targets.remove_if(Acore::AllWorldObjectsInExactRange(GetCaster(), 10.0f * GetCaster()->GetFloatValue(OBJECT_FIELD_SCALE_X), true)); - uint32 strangulatedAura[4] = {68980, 74325, 74296, 74297}; - targets.remove_if(Acore::UnitAuraCheck(true, strangulatedAura[GetCaster()->GetMap()->GetDifficulty()])); + targets.remove_if(Acore::UnitAuraCheck(true, sSpellMgr->GetSpellIdForDifficulty(SPELL_HARVEST_SOUL, GetCaster()))); } void ChangeDamageAndGrow() diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index d04cfdafe5..fce8465d4d 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -52,8 +52,8 @@ enum Spells SPELL_NIGHTMARE_PORTAL_VISUAL_PRE = 71986, SPELL_NIGHTMARE_CLOUD = 71970, SPELL_NIGHTMARE_CLOUD_VISUAL = 71939, - SPELL_PRE_SUMMON_DREAM_PORTAL = 72224, - SPELL_PRE_SUMMON_NIGHTMARE_PORTAL = 72480, + SPELL_PRE_SUMMON_DREAM_PORTAL = 72224, // normal + SPELL_PRE_SUMMON_NIGHTMARE_PORTAL = 72480, // heroic SPELL_SUMMON_DREAM_PORTAL = 71305, SPELL_SUMMON_NIGHTMARE_PORTAL = 71987, SPELL_DREAMWALKERS_RAGE = 71189, @@ -94,16 +94,13 @@ enum Spells SPELL_GUT_SPRAY = 70633, SPELL_ROT_WORM_SPAWNER = 70675, - // Dream Cloud + // Dream Cloud (normal) SPELL_EMERALD_VIGOR = 70873, - // Nightmare Cloud + // Nightmare Cloud (heroic) SPELL_TWISTED_NIGHTMARE = 71941, }; -#define SUMMON_PORTAL RAID_MODE(SPELL_PRE_SUMMON_DREAM_PORTAL, SPELL_PRE_SUMMON_DREAM_PORTAL, SPELL_PRE_SUMMON_NIGHTMARE_PORTAL, SPELL_PRE_SUMMON_NIGHTMARE_PORTAL) -#define EMERALD_VIGOR RAID_MODE(SPELL_EMERALD_VIGOR, SPELL_EMERALD_VIGOR, SPELL_TWISTED_NIGHTMARE, SPELL_TWISTED_NIGHTMARE) - enum Events { // Valithria Dreamwalker @@ -462,7 +459,7 @@ public: if (!IsHeroic()) Talk(SAY_VALITHRIA_DREAM_PORTAL); for (uint32 i = 0; i < _portalCount; ++i) - me->CastSpell(me, SUMMON_PORTAL, false); + me->CastSpell(me, SPELL_PRE_SUMMON_DREAM_PORTAL, false); _events.ScheduleEvent(EVENT_DREAM_PORTAL, 45s, 48s); break; case EVENT_DREAM_SLIP: @@ -885,7 +882,7 @@ public: me->GetMotionMaster()->Clear(false); me->GetMotionMaster()->MoveIdle(); // must use originalCaster the same for all clouds to allow stacking - me->CastSpell(me, EMERALD_VIGOR, false, nullptr, nullptr, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER)); + me->CastSpell(me, SPELL_EMERALD_VIGOR, false, nullptr, nullptr, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER)); me->DespawnOrUnsummon(1s); break; default: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp index b8cc1d9c2a..276bb77a2b 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp @@ -35,10 +35,8 @@ enum GuardSays enum Spells { - SPELL_IMPALE_10 = 28783, - SPELL_IMPALE_25 = 56090, - SPELL_LOCUST_SWARM_10 = 28785, - SPELL_LOCUST_SWARM_25 = 54021, + SPELL_IMPALE = 28783, + SPELL_LOCUST_SWARM = 28785, SPELL_SUMMON_CORPSE_SCRABS_5 = 29105, SPELL_SUMMON_CORPSE_SCRABS_10 = 28864, SPELL_BERSERK = 26662 @@ -138,12 +136,12 @@ public: } ScheduleTimedEvent(15s, [&] { - DoCastRandomTarget(RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25)); + DoCastRandomTarget(SPELL_IMPALE); }, 20s); ScheduleTimedEvent(70s, 2min, [&] { Talk(EMOTE_LOCUST); - DoCastSelf(RAID_MODE(SPELL_LOCUST_SWARM_10, SPELL_LOCUST_SWARM_25)); + DoCastSelf(SPELL_LOCUST_SWARM); me->m_Events.AddEventAtOffset([&] { diff --git a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp index 9ab1fcde0f..4a7a16ee72 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp @@ -18,6 +18,7 @@ #include "CreatureScript.h" #include "ScriptedCreature.h" #include "SpellInfo.h" +#include "SpellMgr.h" #include "naxxramas.h" enum Yells @@ -37,7 +38,6 @@ enum Spells SPELL_RAIN_OF_FIRE = 28794, SPELL_FRENZY = 28798, SPELL_WIDOWS_EMBRACE = 28732, - SPELL_MINION_WIDOWS_EMBRACE = 54097 }; enum Groups @@ -143,7 +143,7 @@ public: void SpellHit(Unit* caster, SpellInfo const* spell) override { - if (spell->Id == RAID_MODE(SPELL_WIDOWS_EMBRACE, SPELL_MINION_WIDOWS_EMBRACE)) + if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_WIDOWS_EMBRACE, me)) { Talk(EMOTE_WIDOWS_EMBRACE); scheduler.RescheduleGroup(GROUP_FRENZY, 1min); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp index 6439f45add..6f1405ea74 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp @@ -33,23 +33,17 @@ enum Spells SPELL_MARK_OF_ZELIEK = 28835, SPELL_MARK_DAMAGE = 28836, // Korth'azz - SPELL_KORTHAZZ_METEOR_10 = 28884, - SPELL_KORTHAZZ_METEOR_25 = 57467, + SPELL_KORTHAZZ_METEOR = 28884, // Blaumeux - SPELL_BLAUMEUX_SHADOW_BOLT_10 = 57374, - SPELL_BLAUMEUX_SHADOW_BOLT_25 = 57464, - SPELL_BLAUMEUX_VOID_ZONE_10 = 28863, - SPELL_BLAUMEUX_VOID_ZONE_25 = 57463, + SPELL_BLAUMEUX_SHADOW_BOLT = 57374, + SPELL_BLAUMEUX_VOID_ZONE = 28863, SPELL_BLAUMEUX_UNYIELDING_PAIN = 57381, // Zeliek - SPELL_ZELIEK_HOLY_WRATH_10 = 28883, - SPELL_ZELIEK_HOLY_WRATH_25 = 57466, - SPELL_ZELIEK_HOLY_BOLT_10 = 57376, - SPELL_ZELIEK_HOLY_BOLT_25 = 57465, + SPELL_ZELIEK_HOLY_WRATH = 28883, + SPELL_ZELIEK_HOLY_BOLT = 57376, SPELL_ZELIEK_CONDEMNATION = 57377, // Rivendare - SPELL_RIVENDARE_UNHOLY_SHADOW_10 = 28882, - SPELL_RIVENDARE_UNHOLY_SHADOW_25 = 57369 + SPELL_RIVENDARE_UNHOLY_SHADOW = 28882, }; enum Events @@ -87,15 +81,13 @@ enum FourHorsemen const uint32 TABLE_SPELL_MARK[4] = {SPELL_MARK_OF_ZELIEK, SPELL_MARK_OF_BLAUMEUX, SPELL_MARK_OF_RIVENDARE, SPELL_MARK_OF_KORTHAZZ}; // PRIMARY SPELL -const uint32 TABLE_SPELL_PRIMARY_10[4] = {SPELL_ZELIEK_HOLY_BOLT_10, SPELL_BLAUMEUX_SHADOW_BOLT_10, SPELL_RIVENDARE_UNHOLY_SHADOW_10, SPELL_KORTHAZZ_METEOR_10}; -const uint32 TABLE_SPELL_PRIMARY_25[4] = {SPELL_ZELIEK_HOLY_BOLT_25, SPELL_BLAUMEUX_SHADOW_BOLT_25, SPELL_RIVENDARE_UNHOLY_SHADOW_25, SPELL_KORTHAZZ_METEOR_25}; +const uint32 TABLE_SPELL_PRIMARY[4] = {SPELL_ZELIEK_HOLY_BOLT, SPELL_BLAUMEUX_SHADOW_BOLT, SPELL_RIVENDARE_UNHOLY_SHADOW, SPELL_KORTHAZZ_METEOR}; // PUNISH const uint32 TABLE_SPELL_PUNISH[4] = {SPELL_ZELIEK_CONDEMNATION, SPELL_BLAUMEUX_UNYIELDING_PAIN, 0, 0}; // SECONDARY SPELL -const uint32 TABLE_SPELL_SECONDARY_10[4] = {SPELL_ZELIEK_HOLY_WRATH_10, SPELL_BLAUMEUX_VOID_ZONE_10, 0, 0}; -const uint32 TABLE_SPELL_SECONDARY_25[4] = {SPELL_ZELIEK_HOLY_WRATH_25, SPELL_BLAUMEUX_VOID_ZONE_25, 0, 0}; +const uint32 TABLE_SPELL_SECONDARY[4] = {SPELL_ZELIEK_HOLY_WRATH, SPELL_BLAUMEUX_VOID_ZONE, 0, 0}; const Position WaypointPositions[12] = { @@ -308,11 +300,11 @@ public: return; case EVENT_PRIMARY_SPELL: Talk(SAY_TAUNT); - me->CastSpell(me->GetVictim(), RAID_MODE(TABLE_SPELL_PRIMARY_10[horsemanId], TABLE_SPELL_PRIMARY_25[horsemanId]), false); + me->CastSpell(me->GetVictim(), TABLE_SPELL_PRIMARY[horsemanId], false); events.Repeat(15s); return; case EVENT_SECONDARY_SPELL: - me->CastSpell(me->GetVictim(), RAID_MODE(TABLE_SPELL_SECONDARY_10[horsemanId], TABLE_SPELL_SECONDARY_25[horsemanId]), false); + me->CastSpell(me->GetVictim(), TABLE_SPELL_SECONDARY[horsemanId], false); events.Repeat(15s); return; } @@ -328,7 +320,7 @@ public: } if (me->IsWithinDistInMap(me->GetVictim(), 45.0f) && me->IsValidAttackTarget(me->GetVictim())) { - DoCastVictim(RAID_MODE(TABLE_SPELL_PRIMARY_10[horsemanId], TABLE_SPELL_PRIMARY_25[horsemanId])); + DoCastVictim(TABLE_SPELL_PRIMARY[horsemanId]); } else if (!me->IsWithinDistInMap(me->GetVictim(), 45.0f) || !me->IsValidAttackTarget(me->GetVictim())) { diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp index 7451caa1ab..41beeb9069 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp @@ -25,10 +25,8 @@ enum Spells { SPELL_MORTAL_WOUND = 25646, - SPELL_ENRAGE_10 = 28371, - SPELL_ENRAGE_25 = 54427, - SPELL_DECIMATE_10 = 28374, - SPELL_DECIMATE_25 = 54426, + SPELL_ENRAGE = 28371, + SPELL_DECIMATE = 28374, SPELL_DECIMATE_DAMAGE = 28375, SPELL_BERSERK = 26662, SPELL_INFECTED_WOUND = 29306, @@ -184,7 +182,7 @@ public: break; case EVENT_ENRAGE: Talk(EMOTE_ENRAGE); - me->CastSpell(me, RAID_MODE(SPELL_ENRAGE_10, SPELL_ENRAGE_25), true); + me->CastSpell(me, SPELL_ENRAGE, true); events.Repeat(22s); break; case EVENT_MORTAL_WOUND: @@ -193,7 +191,7 @@ public: break; case EVENT_DECIMATE: Talk(EMOTE_DECIMATE); - me->CastSpell(me, RAID_MODE(SPELL_DECIMATE_10, SPELL_DECIMATE_25), false); + me->CastSpell(me, SPELL_DECIMATE, false); events.Repeat(RAID_MODE(110s, 90s)); break; case EVENT_SUMMON_ZOMBIE: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp index 3e2ae759c9..b31d500e5f 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp @@ -41,8 +41,7 @@ enum Spells { // Gothik SPELL_HARVEST_SOUL = 28679, - SPELL_SHADOW_BOLT_10 = 29317, - SPELL_SHADOW_BOLT_25 = 56405, + SPELL_SHADOW_BOLT = 29317, // Teleport spells SPELL_TELEPORT_DEAD = 28025, SPELL_TELEPORT_LIVE = 28026, @@ -400,7 +399,7 @@ public: Talk(SAY_INTRO_4); break; case EVENT_SHADOW_BOLT: - me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_SHADOW_BOLT_10, SPELL_SHADOW_BOLT_25), false); + me->CastSpell(me->GetVictim(), SPELL_SHADOW_BOLT, false); events.Repeat(1s); break; case EVENT_HARVEST_SOUL: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp index 7be64fe007..60c0f0f9cf 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp @@ -29,10 +29,8 @@ enum Spells SPELL_POISON_CLOUD = 28240, SPELL_MUTATING_INJECTION = 28169, SPELL_MUTATING_EXPLOSION = 28206, - SPELL_SLIME_SPRAY_10 = 28157, - SPELL_SLIME_SPRAY_25 = 54364, - SPELL_POISON_CLOUD_DAMAGE_AURA_10 = 28158, - SPELL_POISON_CLOUD_DAMAGE_AURA_25 = 54362, + SPELL_SLIME_SPRAY = 28157, + SPELL_POISON_CLOUD_DAMAGE_AURA = 28158, SPELL_BERSERK = 26662, SPELL_BOMBARD_SLIME = 28280 }; @@ -105,14 +103,6 @@ public: events.ScheduleEvent(EVENT_BERSERK, RAID_MODE(720s, 540s)); } - void SpellHitTarget(Unit* target, SpellInfo const* spellInfo) override - { - if (spellInfo->Id == RAID_MODE(SPELL_SLIME_SPRAY_10, SPELL_SLIME_SPRAY_25) && target->IsPlayer()) - { - me->SummonCreature(NPC_FALLOUT_SLIME, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()); - } - } - void JustSummoned(Creature* cr) override { if (cr->GetEntry() == NPC_FALLOUT_SLIME) @@ -169,7 +159,7 @@ public: break; case EVENT_SLIME_SPRAY: Talk(EMOTE_SLIME); - me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_SLIME_SPRAY_10, SPELL_SLIME_SPRAY_25), false); + me->CastSpell(me->GetVictim(), SPELL_SLIME_SPRAY, false); events.Repeat(20s); break; case EVENT_MUTATING_INJECTION: @@ -223,7 +213,7 @@ public: auraVisualTimer += diff; if (auraVisualTimer >= 1000) { - me->CastSpell(me, (me->GetMap()->Is25ManRaid() ? SPELL_POISON_CLOUD_DAMAGE_AURA_25 : SPELL_POISON_CLOUD_DAMAGE_AURA_10), true); + me->CastSpell(me, SPELL_POISON_CLOUD_DAMAGE_AURA, true); auraVisualTimer = 0; } } @@ -291,10 +281,27 @@ class spell_grobbulus_mutating_injection_aura : public AuraScript } }; +class spell_grobbulus_slime_spray : public SpellScript +{ + PrepareSpellScript(spell_grobbulus_slime_spray); + + void HandleHit() + { + if (Unit* target = GetHitUnit()) + GetCaster()->SummonCreature(NPC_FALLOUT_SLIME, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()); + } + + void Register() override + { + OnHit += SpellHitFn(spell_grobbulus_slime_spray::HandleHit); + } +}; + void AddSC_boss_grobbulus() { new boss_grobbulus(); new boss_grobbulus_poison_cloud(); RegisterSpellScript(spell_grobbulus_mutating_injection_aura); RegisterSpellScript(spell_grobbulus_poison); + RegisterSpellScript(spell_grobbulus_slime_spray); } diff --git a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp index de73995e96..8ee7fe3cf8 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp @@ -34,8 +34,7 @@ enum Says enum Spells { SPELL_SPELL_DISRUPTION = 29310, - SPELL_DECREPIT_FEVER_10 = 29998, - SPELL_DECREPIT_FEVER_25 = 55011, + SPELL_DECREPIT_FEVER = 29998, SPELL_PLAGUE_CLOUD = 29350, SPELL_TELEPORT_SELF = 30211 }; @@ -168,7 +167,7 @@ public: events.Repeat(10s); break; case EVENT_DECEPIT_FEVER: - me->CastSpell(me, RAID_MODE(SPELL_DECREPIT_FEVER_10, SPELL_DECREPIT_FEVER_25), false); + me->CastSpell(me, SPELL_DECREPIT_FEVER, false); events.Repeat(22s, 25s); break; case EVENT_PLAGUE_CLOUD: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index 384ffda0f1..43c0df905b 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -43,10 +43,8 @@ enum Yells enum Spells { // Kel'Thzuad - SPELL_FROST_BOLT_SINGLE_10 = 28478, - SPELL_FROST_BOLT_SINGLE_25 = 55802, - SPELL_FROST_BOLT_MULTI_10 = 28479, - SPELL_FROST_BOLT_MULTI_25 = 55807, + SPELL_FROST_BOLT_SINGLE = 28478, + SPELL_FROST_BOLT_MULTI = 28479, SPELL_SHADOW_FISURE = 27810, SPELL_VOID_BLAST = 27812, SPELL_DETONATE_MANA = 27819, @@ -367,11 +365,11 @@ public: me->CastSpell(me, SPELL_BERSERK, true); break; case EVENT_FROST_BOLT_SINGLE: - me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_FROST_BOLT_SINGLE_10, SPELL_FROST_BOLT_SINGLE_25), false); + me->CastSpell(me->GetVictim(), SPELL_FROST_BOLT_SINGLE, false); events.Repeat(2s, 10s); break; case EVENT_FROST_BOLT_MULTI: - me->CastSpell(me, RAID_MODE(SPELL_FROST_BOLT_MULTI_10, SPELL_FROST_BOLT_MULTI_25), false); + me->CastSpell(me, SPELL_FROST_BOLT_MULTI, false); events.Repeat(15s, 30s); break; case EVENT_SHADOW_FISSURE: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp index fe8d1589e2..0ae3ab26d6 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp @@ -23,10 +23,8 @@ enum Spells { SPELL_NECROTIC_AURA = 55593, SPELL_SUMMON_SPORE = 29234, - SPELL_DEATHBLOOM_10 = 29865, - SPELL_DEATHBLOOM_25 = 55053, - SPELL_INEVITABLE_DOOM_10 = 29204, - SPELL_INEVITABLE_DOOM_25 = 55052, + SPELL_DEATHBLOOM = 29865, + SPELL_INEVITABLE_DOOM = 29204, SPELL_BERSERK = 26662 }; @@ -134,11 +132,11 @@ public: events.Repeat(20s); break; case EVENT_DEATHBLOOM: - me->CastSpell(me, RAID_MODE(SPELL_DEATHBLOOM_10, SPELL_DEATHBLOOM_25), false); + me->CastSpell(me, SPELL_DEATHBLOOM, false); events.Repeat(30s); break; case EVENT_INEVITABLE_DOOM: - me->CastSpell(me, RAID_MODE(SPELL_INEVITABLE_DOOM_10, SPELL_INEVITABLE_DOOM_25), false); + me->CastSpell(me, SPELL_INEVITABLE_DOOM, false); doomCounter++; events.Repeat(doomCounter < 6 ? 30s : 15s); break; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp index 76bf91ccb0..1b2dd9f871 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp @@ -26,14 +26,10 @@ enum Spells { - SPELL_WEB_SPRAY_10 = 29484, - SPELL_WEB_SPRAY_25 = 54125, - SPELL_POISON_SHOCK_10 = 28741, - SPELL_POISON_SHOCK_25 = 54122, - SPELL_NECROTIC_POISON_10 = 54121, - SPELL_NECROTIC_POISON_25 = 28776, - SPELL_FRENZY_10 = 54123, - SPELL_FRENZY_25 = 54124, + SPELL_WEB_SPRAY = 29484, + SPELL_POISON_SHOCK = 28741, + SPELL_NECROTIC_POISON = 54121, + SPELL_FRENZY = 54123, SPELL_WEB_WRAP_STUN = 28622, SPELL_WEB_WRAP_SUMMON = 28627, SPELL_WEB_WRAP_KILL_WEBS = 52512, @@ -231,15 +227,15 @@ public: { case EVENT_WEB_SPRAY: Talk(EMOTE_WEB_SPRAY); - me->CastSpell(me, RAID_MODE(SPELL_WEB_SPRAY_10, SPELL_WEB_SPRAY_25), true); + me->CastSpell(me, SPELL_WEB_SPRAY, true); events.Repeat(40s); break; case EVENT_POISON_SHOCK: - me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_POISON_SHOCK_10, SPELL_POISON_SHOCK_25), false); + me->CastSpell(me->GetVictim(), SPELL_POISON_SHOCK, false); events.Repeat(10s); break; case EVENT_NECROTIC_POISON: - me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_NECROTIC_POISON_10, SPELL_NECROTIC_POISON_25), false); + me->CastSpell(me->GetVictim(), SPELL_NECROTIC_POISON, false); events.Repeat(30s); break; case EVENT_SUMMON_SPIDERLINGS: @@ -253,7 +249,7 @@ public: case EVENT_HEALTH_CHECK: if (me->GetHealthPct() < 30) { - me->CastSpell(me, RAID_MODE(SPELL_FRENZY_10, SPELL_FRENZY_25), true); + me->CastSpell(me, SPELL_FRENZY, true); break; } events.Repeat(1s); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp index 79045abcfd..d494649ffa 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp @@ -34,10 +34,8 @@ enum Says enum Spells { - SPELL_CURSE_OF_THE_PLAGUEBRINGER_10 = 29213, - SPELL_CURSE_OF_THE_PLAGUEBRINGER_25 = 54835, - SPELL_CRIPPLE_10 = 29212, - SPELL_CRIPPLE_25 = 54814, + SPELL_CURSE_OF_THE_PLAGUEBRINGER = 29213, + SPELL_CRIPPLE = 29212, SPELL_SUMMON_PLAGUED_WARRIORS = 29237, SPELL_TELEPORT = 29216, SPELL_TELEPORT_BACK = 29231, @@ -207,7 +205,7 @@ public: case EVENT_CURSE: if (events.GetPhaseMask() == 0) { - me->CastCustomSpell(RAID_MODE(SPELL_CURSE_OF_THE_PLAGUEBRINGER_10, SPELL_CURSE_OF_THE_PLAGUEBRINGER_25), SPELLVALUE_MAX_TARGETS, RAID_MODE(3, 10), me, false); + me->CastCustomSpell(SPELL_CURSE_OF_THE_PLAGUEBRINGER, SPELLVALUE_MAX_TARGETS, RAID_MODE(3, 10), me, false); } events.Repeat(25s); break; @@ -228,7 +226,7 @@ public: break; case EVENT_BLINK: DoResetThreatList(); - me->CastSpell(me, RAID_MODE(SPELL_CRIPPLE_10, SPELL_CRIPPLE_25), false); + me->CastSpell(me, SPELL_CRIPPLE, false); me->CastSpell(me, SPELL_BLINK, true); Talk(EMOTE_BLINK); events.Repeat(30s); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp index 3342c9a236..bd88d28896 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp @@ -30,8 +30,7 @@ enum Yells enum Spells { - SPELL_HATEFUL_STRIKE_10 = 41926, - SPELL_HATEFUL_STRIKE_25 = 59192, + SPELL_HATEFUL_STRIKE = 41926, SPELL_FRENZY = 28131, SPELL_BERSERK = 26662, SPELL_SLIME_BOLT = 32309 @@ -155,7 +154,7 @@ public: } if (finalTarget) { - me->CastSpell(finalTarget, RAID_MODE(SPELL_HATEFUL_STRIKE_10, SPELL_HATEFUL_STRIKE_25), false); + me->CastSpell(finalTarget, SPELL_HATEFUL_STRIKE, false); } events.Repeat(1s); break; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp index 14f3342454..7e5eb48a58 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp @@ -34,8 +34,7 @@ enum Says enum Spells { SPELL_UNBALANCING_STRIKE = 26613, - SPELL_DISRUPTING_SHOUT_10 = 55543, - SPELL_DISRUPTING_SHOUT_25 = 29107, + SPELL_DISRUPTING_SHOUT = 55543, SPELL_JAGGED_KNIFE = 55550, SPELL_HOPELESS = 29125, SPELL_TAUNT = 29060 @@ -267,7 +266,7 @@ public: events.Repeat(20s); break; case EVENT_DISRUPTING_SHOUT: - me->CastSpell(me, RAID_MODE(SPELL_DISRUPTING_SHOUT_10, SPELL_DISRUPTING_SHOUT_25), false); + me->CastSpell(me, SPELL_DISRUPTING_SHOUT, false); events.Repeat(15s); break; case EVENT_JAGGED_KNIFE: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp index 22de0dac72..2204ba3f12 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp @@ -33,14 +33,11 @@ enum Yells enum Spells { // Fight - SPELL_FROST_AURA_10 = 28531, - SPELL_FROST_AURA_25 = 55799, + SPELL_FROST_AURA = 28531, SPELL_CLEAVE = 19983, - SPELL_TAIL_SWEEP_10 = 55697, - SPELL_TAIL_SWEEP_25 = 55696, + SPELL_TAIL_SWEEP = 55697, SPELL_SUMMON_BLIZZARD = 28560, - SPELL_LIFE_DRAIN_10 = 28542, - SPELL_LIFE_DRAIN_25 = 55665, + SPELL_LIFE_DRAIN = 28542, SPELL_BERSERK = 26662, // Ice block @@ -160,7 +157,7 @@ public: { BossAI::JustEngagedWith(who); EnterCombatSelfFunction(); - me->CastSpell(me, RAID_MODE(SPELL_FROST_AURA_10, SPELL_FROST_AURA_25), true); + me->CastSpell(me, SPELL_FROST_AURA, true); events.ScheduleEvent(EVENT_BERSERK, 15min); events.ScheduleEvent(EVENT_CLEAVE, 5s); events.ScheduleEvent(EVENT_TAIL_SWEEP, 10s); @@ -258,11 +255,11 @@ public: events.Repeat(10s); return; case EVENT_TAIL_SWEEP: - me->CastSpell(me, RAID_MODE(SPELL_TAIL_SWEEP_10, SPELL_TAIL_SWEEP_25), false); + me->CastSpell(me, SPELL_TAIL_SWEEP, false); events.Repeat(10s); return; case EVENT_LIFE_DRAIN: - me->CastCustomSpell(RAID_MODE(SPELL_LIFE_DRAIN_10, SPELL_LIFE_DRAIN_25), SPELLVALUE_MAX_TARGETS, RAID_MODE(2, 5), me, false); + me->CastCustomSpell(SPELL_LIFE_DRAIN, SPELLVALUE_MAX_TARGETS, RAID_MODE(2, 5), me, false); events.Repeat(24s); return; case EVENT_BLIZZARD: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp index b4fd5a861c..cf7a1591ec 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp @@ -59,20 +59,17 @@ enum Spells SPELL_SHOCK_VISUAL = 28159, // Stalagg - SPELL_POWER_SURGE_10 = 54529, - SPELL_POWER_SURGE_25 = 28134, + SPELL_POWER_SURGE = 54529, SPELL_STALAGG_CHAIN = 28096, // Feugen - SPELL_STATIC_FIELD_10 = 28135, - SPELL_STATIC_FIELD_25 = 54528, + SPELL_STATIC_FIELD = 28135, SPELL_FEUGEN_CHAIN = 28111, // Thaddius SPELL_POLARITY_SHIFT = 28089, SPELL_BALL_LIGHTNING = 28299, - SPELL_CHAIN_LIGHTNING_10 = 28167, - SPELL_CHAIN_LIGHTNING_25 = 54531, + SPELL_CHAIN_LIGHTNING = 28167, SPELL_BERSERK = 27680, SPELL_THADDIUS_VISUAL_LIGHTNING = 28136, SPELL_THADDIUS_SPAWN_STUN = 28160, @@ -318,7 +315,7 @@ public: me->CastSpell(me, SPELL_BERSERK, true); break; case EVENT_THADDIUS_CHAIN_LIGHTNING: - me->CastSpell(me->GetVictim(), RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25), false); + me->CastSpell(me->GetVictim(), SPELL_CHAIN_LIGHTNING, false); events.Repeat(15s); break; case EVENT_THADDIUS_POLARITY_SHIFT: @@ -498,11 +495,11 @@ public: switch (events.ExecuteEvent()) { case EVENT_MINION_POWER_SURGE: - me->CastSpell(me, RAID_MODE(SPELL_POWER_SURGE_10, SPELL_POWER_SURGE_25), false); + me->CastSpell(me, SPELL_POWER_SURGE, false); events.Repeat(19s); break; case EVENT_MINION_STATIC_FIELD: - me->CastSpell(me, RAID_MODE(SPELL_STATIC_FIELD_10, SPELL_STATIC_FIELD_25), false); + me->CastSpell(me, SPELL_STATIC_FIELD, false); events.Repeat(3s); break; case EVENT_MINION_MAGNETIC_PULL: diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp index 1e6dec95fe..0ef24cb14b 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp @@ -31,55 +31,35 @@ enum AssemblySpells SPELL_BERSERK = 47008, // Steelbreaker - SPELL_HIGH_VOLTAGE_10 = 61890, - SPELL_HIGH_VOLTAGE_25 = 63498, - SPELL_FUSION_PUNCH_10 = 61903, - SPELL_FUSION_PUNCH_25 = 63493, - SPELL_STATIC_DISRUPTION_10 = 61911, - SPELL_STATIC_DISRUPTION_25 = 63495, - SPELL_OVERWHELMING_POWER_10 = 64637, - SPELL_OVERWHELMING_POWER_25 = 61888, + SPELL_HIGH_VOLTAGE = 61890, + SPELL_FUSION_PUNCH = 61903, + SPELL_STATIC_DISRUPTION = 61911, + SPELL_OVERWHELMING_POWER = 64637, SPELL_ELECTRICAL_CHARGE = 61902, // Runemaster Molgeim SPELL_SHIELD_OF_RUNES_BUFF = 62277, - SPELL_SHIELD_OF_RUNES_10 = 62274, - SPELL_SHIELD_OF_RUNES_25 = 63489, + SPELL_SHIELD_OF_RUNES = 62274, SPELL_RUNE_OF_POWER = 61973, - SPELL_RUNE_OF_DEATH_10 = 62269, - SPELL_RUNE_OF_DEATH_25 = 63490, + SPELL_RUNE_OF_DEATH = 62269, SPELL_RUNE_OF_SUMMONING = 62273, SPELL_RUNE_OF_SUMMONING_SUMMON = 62020, - SPELL_LIGHTNING_BLAST_10 = 62054, - SPELL_LIGHTNING_BLAST_25 = 63491, + SPELL_LIGHTNING_BLAST = 62054, CREATURE_LIGHTNING_ELEMENTAL = 32958, CREATURE_RUNE_OF_SUMMONING = 33051, SPELL_RUNE_OF_POWER_OOC_CHANNEL = 61975, // Stormcaller Brundir - SPELL_CHAIN_LIGHTNING_10 = 61879, - SPELL_CHAIN_LIGHTNING_25 = 63479, - SPELL_OVERLOAD_10 = 61869, - SPELL_OVERLOAD_25 = 63481, - SPELL_LIGHTNING_WHIRL_10 = 61915, - SPELL_LIGHTNING_WHIRL_25 = 63483, - SPELL_LIGHTNING_TENDRILS_10 = 61887, - SPELL_LIGHTNING_TENDRILS_25 = 63486, + SPELL_CHAIN_LIGHTNING = 61879, + SPELL_OVERLOAD = 61869, + SPELL_LIGHTNING_WHIRL = 61915, + SPELL_LIGHTNING_WHIRL_TRIGG = 61916, + SPELL_LIGHTNING_TENDRILS = 61887, + SPELL_LIGHTNING_TENDRILS_2 = 61883, SPELL_STORMSHIELD = 64187, SPELL_LIGHTNING_CHANNEL_PRE = 61942, -}; -#define SPELL_HIGH_VOLTAGE RAID_MODE(SPELL_HIGH_VOLTAGE_10, SPELL_HIGH_VOLTAGE_25) -#define SPELL_FUSION_PUNCH RAID_MODE(SPELL_FUSION_PUNCH_10, SPELL_FUSION_PUNCH_25) -#define SPELL_STATIC_DISRUPTION RAID_MODE(SPELL_STATIC_DISRUPTION_10, SPELL_STATIC_DISRUPTION_25) -#define SPELL_OVERWHELMING_POWER RAID_MODE(SPELL_OVERWHELMING_POWER_10, SPELL_OVERWHELMING_POWER_25) -#define SPELL_SHIELD_OF_RUNES RAID_MODE(SPELL_SHIELD_OF_RUNES_10, SPELL_SHIELD_OF_RUNES_25) -#define SPELL_RUNE_OF_DEATH RAID_MODE(SPELL_RUNE_OF_DEATH_10, SPELL_RUNE_OF_DEATH_25) -#define SPELL_LIGHTNING_BLAST RAID_MODE(SPELL_LIGHTNING_BLAST_10, SPELL_LIGHTNING_BLAST_25) -#define SPELL_CHAIN_LIGHTNING RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25) -#define SPELL_OVERLOAD RAID_MODE(SPELL_OVERLOAD_10, SPELL_OVERLOAD_25) -#define SPELL_LIGHTNING_WHIRL RAID_MODE(SPELL_LIGHTNING_WHIRL_10, SPELL_LIGHTNING_WHIRL_25) -#define SPELL_LIGHTNING_TENDRILS RAID_MODE(SPELL_LIGHTNING_TENDRILS_10, SPELL_LIGHTNING_TENDRILS_25) +}; enum eEnums { @@ -720,7 +700,7 @@ public: void SpellHitTarget(Unit* /*target*/, SpellInfo const* spellInfo) override { - if (spellInfo->Id == SPELL_CHAIN_LIGHTNING || spellInfo->Id == uint32(RAID_MODE(61916, 63482))) // Lightning Whirl triggered + if (spellInfo->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_CHAIN_LIGHTNING, me) || spellInfo->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_LIGHTNING_WHIRL_TRIGG, me)) _stunnedAchievement = false; } @@ -797,7 +777,7 @@ public: me->SetUnitFlag(UNIT_FLAG_STUNNED); me->CastSpell(me, SPELL_LIGHTNING_TENDRILS, true); - me->CastSpell(me, 61883, true); + me->CastSpell(me, SPELL_LIGHTNING_TENDRILS_2, true); events.ScheduleEvent(EVENT_LIGHTNING_LAND, 16s); events.ScheduleEvent(EVENT_LIGHTNING_FLIGHT, 1s); break; @@ -821,8 +801,8 @@ public: me->SetRegeneratingHealth(true); _flyTargetGUID.Clear(); - me->RemoveAura(SPELL_LIGHTNING_TENDRILS); - me->RemoveAura(61883); + me->RemoveAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_LIGHTNING_TENDRILS, me)); + me->RemoveAura(SPELL_LIGHTNING_TENDRILS_2); DoResetThreatList(); events.CancelEvent(EVENT_LIGHTNING_FLIGHT); break; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp index a4b1ef6754..587e591258 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp @@ -28,40 +28,25 @@ enum AuriayaSpells { // BASIC SPELL_TERRIFYING_SCREECH = 64386, - SPELL_SENTINEL_BLAST_10 = 64389, - SPELL_SENTINEL_BLAST_25 = 64678, - SPELL_SONIC_SCREECH_10 = 64422, - SPELL_SONIC_SCREECH_25 = 64688, + SPELL_SENTINEL_BLAST = 64389, + SPELL_SONIC_SCREECH = 64422, SPELL_GUARDIAN_SWARM = 64396, SPELL_ENRAGE = 47008, SPELL_ACTIVATE_FERAL_DEFENDER = 64449, // Sanctum Sentry - SPELL_SAVAGE_POUNCE_10 = 64666, - SPELL_SAVAGE_POUNCE_25 = 64374, - SPELL_RIP_FLESH_10 = 64375, - SPELL_RIP_FLESH_25 = 64667, + SPELL_SAVAGE_POUNCE = 64666, + SPELL_RIP_FLESH = 64375, SPELL_STRENGTH_OF_THE_PACK = 64369, // Feral Defender SPELL_FERAL_ESSENCE = 64455, - SPELL_FERAL_POUNCE_10 = 64478, - SPELL_FERAL_POUNCE_25 = 64669, - SPELL_FERAL_RUSH_10 = 64496, - SPELL_FERAL_RUSH_25 = 64674, + SPELL_FERAL_POUNCE = 64478, + SPELL_FERAL_RUSH = 64496, //SPELL_SEEPING_FERAL_ESSENCE_SUMMON = 64457, - SPELL_SEEPING_FERAL_ESSENCE_10 = 64458, - SPELL_SEEPING_FERAL_ESSENCE_25 = 64676, + SPELL_SEEPING_FERAL_ESSENCE = 64458, }; -#define SPELL_SONIC_SCREECH RAID_MODE(SPELL_SONIC_SCREECH_10, SPELL_SONIC_SCREECH_25) -#define SPELL_SENTINEL_BLAST RAID_MODE(SPELL_SENTINEL_BLAST_10, SPELL_SENTINEL_BLAST_25) -#define SPELL_SAVAGE_POUNCE RAID_MODE(SPELL_SAVAGE_POUNCE_10, SPELL_SAVAGE_POUNCE_25) -#define SPELL_RIP_FLESH RAID_MODE(SPELL_RIP_FLESH_10, SPELL_RIP_FLESH_25) -#define SPELL_FERAL_POUNCE RAID_MODE(SPELL_FERAL_POUNCE_10, SPELL_FERAL_POUNCE_25) -#define SPELL_FERAL_RUSH RAID_MODE(SPELL_FERAL_RUSH_10, SPELL_FERAL_RUSH_25) -//#define SPELL_SEEPING_FERAL_ESSENCE RAID_MODE(SPELL_SEEPING_FERAL_ESSENCE_10, SPELL_SEEPING_FERAL_ESSENCE_25) - enum AuriayaNPC { NPC_FERAL_DEFENDER = 34035, diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp index 9bb1d122ae..4b21752910 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp @@ -29,31 +29,23 @@ enum FreyaSpells SPELL_AUTO_GROW = 62559, SPELL_LIFEBINDER_PHERONOMES = 62619, SPELL_LIFEBINDER_VISUAL = 62579, - SPELL_LIFEBINDER_HEAL_10 = 62584, - SPELL_LIFEBINDER_HEAL_25 = 64185, + SPELL_LIFEBINDER_HEAL = 62584, // FREYA - SPELL_TOUCH_OF_EONAR_10 = 62528, - SPELL_TOUCH_OF_EONAR_25 = 62892, + SPELL_TOUCH_OF_EONAR = 62528, SPELL_ATTUNED_TO_NATURE = 62519, SPELL_SUMMON_LIFEBINDER = 62870, - SPELL_SUNBEAM_10 = 62623, - SPELL_SUNBEAM_25 = 62872, + SPELL_SUNBEAM = 62623, SPELL_NATURE_BOMB_FLIGHT = 64648, - SPELL_NATURE_BOMB_DAMAGE_10 = 64587, - SPELL_NATURE_BOMB_DAMAGE_25 = 64650, + SPELL_NATURE_BOMB_DAMAGE = 64587, SPELL_GREEN_BANISH_STATE = 32567, SPELL_BERSERK = 47008, // HARD MODE - SPELL_GROUND_TREMOR_FREYA_10 = 62437, - SPELL_GROUND_TREMOR_FREYA_25 = 62859, - SPELL_IRON_ROOTS_FREYA_10 = 62862, - SPELL_IRON_ROOTS_FREYA_25 = 62439, - SPELL_IRON_ROOTS_FREYA_DAMAGE_10 = 62861, - SPELL_IRON_ROOTS_FREYA_DAMAGE_25 = 62438, - SPELL_UNSTABLE_SUN_FREYA_DAMAGE_10 = 62451, - SPELL_UNSTABLE_SUN_FREYA_DAMAGE_25 = 62865, + SPELL_GROUND_TREMOR_FREYA = 62437, + SPELL_IRON_ROOTS_FREYA = 62862, + SPELL_IRON_ROOTS_FREYA_DAMAGE = 62861, + SPELL_UNSTABLE_SUN_FREYA_DAMAGE = 62451, SPELL_UNSTABLE_SUN_VISUAL = 62216, // ELDERS @@ -64,86 +56,49 @@ enum FreyaSpells // BRIGHTLEAF SPELL_BRIGHTLEAF_FLUX = 62239, - SPELL_SOLAR_FLARE_10 = 62240, - SPELL_SOLAR_FLARE_25 = 64087, + SPELL_SOLAR_FLARE = 62240, SPELL_UNSTABLE_SUN_BEAM_AURA = 62211, SPELL_PHOTOSYNTHESIS = 62209, - SPELL_UNSTABLE_SUN_DAMAGE_10 = 62217, - SPELL_UNSTABLE_SUN_DAMAGE_25 = 62922, + SPELL_UNSTABLE_SUN_DAMAGE = 62217, // IRONBRANCH - SPELL_IMPALE_10 = 62310, - SPELL_IMPALE_25 = 62928, - SPELL_IRON_ROOTS_10 = 62275, - SPELL_IRON_ROOTS_25 = 62929, - SPELL_IRON_ROOTS_DAMAGE_10 = 62283, - SPELL_IRON_ROOTS_DAMAGE_25 = 62930, - SPELL_THORN_SWARM_10 = 62285, - SPELL_THORN_SWARM_25 = 62931, + SPELL_IMPALE = 62310, + SPELL_IRON_ROOTS = 62275, + SPELL_IRON_ROOTS_DAMAGE = 62283, + SPELL_THORN_SWARM = 62285, // STONEBARK SPELL_FISTS_OF_STONE = 62344, - SPELL_GROUND_TREMOR_10 = 62325, - SPELL_GROUND_TREMOR_25 = 62932, - SPELL_PETRIFIED_BARK_10 = 62337, - SPELL_PETRIFIED_BARK_25 = 62933, + SPELL_GROUND_TREMOR = 62325, + SPELL_PETRIFIED_BARK = 62337, // SNAPLASHER - SPELL_HARDENED_BARK_10 = 62664, - SPELL_HARDENED_BARK_25 = 64191, + SPELL_HARDENED_BARK = 62664, // ANCIENT WATER SPIRIT - SPELL_TIDAL_WAVE_10 = 62653, - SPELL_TIDAL_WAVE_25 = 62935, - SPELL_TIDAL_WAVE_DAMAGE_10 = 62654, - SPELL_TIDAL_WAVE_DAMAGE_25 = 62936, + SPELL_TIDAL_WAVE = 62653, + SPELL_TIDAL_WAVE_DAMAGE = 62654, SPELL_TIDAL_WAVE_AURA = 62655, // STORM LASHER - SPELL_LIGHTNING_LASH_10 = 62648, - SPELL_LIGHTNING_LASH_25 = 62939, - SPELL_STORMBOLT_10 = 62649, - SPELL_STORMBOLT_25 = 62938, + SPELL_LIGHTNING_LASH = 62648, + SPELL_STORMBOLT = 62649, // ANCIENT CONSERVATOR SPELL_CONSERVATOR_GRIP = 62532, - SPELL_NATURE_FURY_10 = 62589, - SPELL_NATURE_FURY_25 = 63571, + SPELL_NATURE_FURY = 62589, SPELL_POTENT_PHEROMONES = 62541, SPELL_HEALTHY_SPORE_VISUAL = 62538, SPELL_HEALTHY_SPORE_SUMMON = 62566, // DETONATING LASHER - SPELL_DETONATE_10 = 62598, - SPELL_DETONATE_25 = 62937, + SPELL_DETONATE = 62598, SPELL_FLAME_LASH = 62608, // ACHIEVEMENT SPELL_DEFORESTATION_CREDIT = 65015, }; -#define SPELL_GROUND_TREMOR RAID_MODE(SPELL_GROUND_TREMOR_10, SPELL_GROUND_TREMOR_25) -#define SPELL_PETRIFIED_BARK RAID_MODE(SPELL_PETRIFIED_BARK_10, SPELL_PETRIFIED_BARK_25) -#define SPELL_IRON_ROOTS RAID_MODE(SPELL_IRON_ROOTS_10, SPELL_IRON_ROOTS_25) -#define SPELL_IMPALE RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25) -#define SPELL_THORN_SWARM RAID_MODE(SPELL_THORN_SWARM_10, SPELL_THORN_SWARM_25) -#define SPELL_UNSTABLE_SUN_DAMAGE RAID_MODE(SPELL_UNSTABLE_SUN_DAMAGE_10, SPELL_UNSTABLE_SUN_DAMAGE_25) -#define SPELL_SOLAR_FLARE RAID_MODE(SPELL_SOLAR_FLARE_10, SPELL_SOLAR_FLARE_25) -#define SPELL_TOUCH_OF_EONAR RAID_MODE(SPELL_TOUCH_OF_EONAR_10, SPELL_TOUCH_OF_EONAR_25) -#define SPELL_LIFEBINDER_HEAL RAID_MODE(SPELL_LIFEBINDER_HEAL_10, SPELL_LIFEBINDER_HEAL_25) -#define SPELL_TIDAL_WAVE RAID_MODE(SPELL_TIDAL_WAVE_10, SPELL_TIDAL_WAVE_25) -#define SPELL_TIDAL_WAVE_DAMAGE RAID_MODE(SPELL_TIDAL_WAVE_DAMAGE_10, SPELL_TIDAL_WAVE_DAMAGE_25) -#define SPELL_NATURE_FURY RAID_MODE(SPELL_NATURE_FURY_10, SPELL_NATURE_FURY_25) -#define SPELL_HARDENED_BARK RAID_MODE(SPELL_HARDENED_BARK_10, SPELL_HARDENED_BARK_25) -#define SPELL_DETONATE RAID_MODE(SPELL_DETONATE_10, SPELL_DETONATE_25) -//#define SPELL_NATURE_BOMB_DAMAGE RAID_MODE(SPELL_NATURE_BOMB_DAMAGE_10, SPELL_NATURE_BOMB_DAMAGE_25) -#define SPELL_SUNBEAM RAID_MODE(SPELL_SUNBEAM_10, SPELL_SUNBEAM_25) -#define SPELL_GROUND_TREMOR_FREYA RAID_MODE(SPELL_GROUND_TREMOR_FREYA_10, SPELL_GROUND_TREMOR_FREYA_25) -#define SPELL_IRON_ROOTS_FREYA RAID_MODE(SPELL_IRON_ROOTS_FREYA_10, SPELL_IRON_ROOTS_FREYA_25) -#define SPELL_UNSTABLE_SUN_FREYA_DAMAGE RAID_MODE(SPELL_UNSTABLE_SUN_FREYA_DAMAGE_10, SPELL_UNSTABLE_SUN_FREYA_DAMAGE_25) -#define SPELL_LIGHTNING_LASH RAID_MODE(SPELL_LIGHTNING_LASH_10, SPELL_LIGHTNING_LASH_25) -#define SPELL_STORMBOLT RAID_MODE(SPELL_STORMBOLT_10, SPELL_STORMBOLT_25) - enum FreyaEvents { // FREYA @@ -983,9 +938,9 @@ public: if (Unit* target = ObjectAccessor::GetUnit(*me, me->ToTempSummon()->GetSummonerGUID())) { if (me->GetEntry() == NPC_IRON_ROOT_TRIGGER) // Iron Branch spell - target->RemoveAura(target->GetMap()->Is25ManRaid() ? SPELL_IRON_ROOTS_DAMAGE_25 : SPELL_IRON_ROOTS_DAMAGE_10); + target->RemoveAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_IRON_ROOTS_DAMAGE, me)); else - target->RemoveAura(target->GetMap()->Is25ManRaid() ? SPELL_IRON_ROOTS_FREYA_DAMAGE_25 : SPELL_IRON_ROOTS_FREYA_DAMAGE_10); + target->RemoveAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_IRON_ROOTS_FREYA_DAMAGE, me)); } } }; @@ -1023,7 +978,7 @@ public: if (_healTimer >= 12000) { me->RemoveAurasDueToSpell(SPELL_AUTO_GROW); - me->CastSpell(me, me->GetMap()->Is25ManRaid() ? SPELL_LIFEBINDER_HEAL_25 : SPELL_LIFEBINDER_HEAL_10, true); + me->CastSpell(me, SPELL_LIFEBINDER_HEAL, true); me->DespawnOrUnsummon(2s); _healTimer = 0; } @@ -1249,7 +1204,7 @@ public: _explodeTimer += diff; if (_explodeTimer >= 11000) { - me->CastSpell(me, me->GetMap()->Is25ManRaid() ? SPELL_NATURE_BOMB_DAMAGE_25 : SPELL_NATURE_BOMB_DAMAGE_10, false); + me->CastSpell(me, SPELL_NATURE_BOMB_DAMAGE, false); me->DespawnOrUnsummon(1s); _explodeTimer = 0; } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp index 013418f223..6f037c289d 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp @@ -58,8 +58,7 @@ enum HodirSpellData SPELL_ICE_SHARDS_BIG = 65370, SPELL_SNOWDRIFT = 62463, - SPELL_FROZEN_BLOWS_10 = 62478, - SPELL_FROZEN_BLOWS_25 = 63512, + SPELL_FROZEN_BLOWS = 62478, // Helpers: SPELL_PRIEST_DISPELL_MAGIC = 63499, @@ -70,9 +69,8 @@ enum HodirSpellData SPELL_DRUID_STARLIGHT_AREA_AURA = 62807, SPELL_SHAMAN_LAVA_BURST = 61924, - SPELL_SHAMAN_STORM_CLOUD_10 = 65123, - SPELL_SHAMAN_STORM_CLOUD_25 = 65133, - SPELL_SHAMAN_STORM_POWER_10 = 63711, + SPELL_SHAMAN_STORM_CLOUD = 65123, + SPELL_SHAMAN_STORM_POWER = 63711, SPELL_SHAMAN_STORM_POWER_25 = 65134, SPELL_MAGE_FIREBALL = 61909, @@ -153,9 +151,6 @@ enum HodirText TEXT_EMOTE_BLOW = 8, }; -#define SPELL_FROZEN_BLOWS RAID_MODE(SPELL_FROZEN_BLOWS_10, SPELL_FROZEN_BLOWS_25) -#define SPELL_SHAMAN_STORM_CLOUD RAID_MODE(SPELL_SHAMAN_STORM_CLOUD_10, SPELL_SHAMAN_STORM_CLOUD_25) - enum HodirSounds { SOUND_HODIR_AGGRO = 15552, @@ -483,7 +478,7 @@ public: { Talk(TEXT_EMOTE_BLOW); Talk(TEXT_STALACTITE); - me->CastSpell(me, Is25ManRaid()? SPELL_FROZEN_BLOWS_25 : SPELL_FROZEN_BLOWS_10, true); + me->CastSpell(me, SPELL_FROZEN_BLOWS, true); } break; case EVENT_FREEZE: @@ -1008,8 +1003,9 @@ public: void SpellHitTarget(Unit* target, SpellInfo const* spell) override { - if (target && spell->Id == SPELL_SHAMAN_STORM_CLOUD) - if (Aura* a = target->GetAura(SPELL_SHAMAN_STORM_CLOUD, me->GetGUID())) + uint32 spellid = sSpellMgr->GetSpellIdForDifficulty(SPELL_SHAMAN_STORM_CLOUD, me); + if (target && spell->Id == spellid) + if (Aura* a = target->GetAura(spellid, me->GetGUID())) a->SetStackAmount(spell->StackAmount); } @@ -1044,10 +1040,13 @@ public: events.Repeat(2600ms); break; case EVENT_SHAMAN_STORM_CLOUD: - if (Player* target = ScriptedAI::SelectTargetFromPlayerList(35.0f, SPELL_SHAMAN_STORM_CLOUD)) - me->CastSpell(target, SPELL_SHAMAN_STORM_CLOUD, false); - events.Repeat(30s); - break; + { + uint32 spellid = sSpellMgr->GetSpellIdForDifficulty(SPELL_SHAMAN_STORM_CLOUD, me); + if (Player* target = ScriptedAI::SelectTargetFromPlayerList(35.0f, spellid)) + me->CastSpell(target, spellid, false); + events.Repeat(30s); + break; + } } } @@ -1403,7 +1402,7 @@ class spell_hodir_storm_power_aura : public AuraScript void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { if (Unit* caster = GetCaster()) - if (Aura* a = caster->GetAura(GetId() == SPELL_SHAMAN_STORM_POWER_10 ? SPELL_SHAMAN_STORM_CLOUD_10 : SPELL_SHAMAN_STORM_CLOUD_25)) + if (Aura* a = caster->GetAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_SHAMAN_STORM_CLOUD, caster))) a->ModStackAmount(-1); } @@ -1427,14 +1426,14 @@ class spell_hodir_storm_cloud_aura : public AuraScript bool Validate(SpellInfo const* /*spellInfo*/) override { - return ValidateSpellInfo({ SPELL_SHAMAN_STORM_CLOUD_10, SPELL_SHAMAN_STORM_POWER_10, SPELL_SHAMAN_STORM_POWER_25 }); + return ValidateSpellInfo({ SPELL_SHAMAN_STORM_POWER }); } void HandleEffectPeriodic(AuraEffect const* /*aurEff*/) { PreventDefaultAction(); if (Unit* target = GetTarget()) - target->CastSpell((Unit*)nullptr, (GetId() == SPELL_SHAMAN_STORM_CLOUD_10 ? SPELL_SHAMAN_STORM_POWER_10 : SPELL_SHAMAN_STORM_POWER_25), true); + target->CastSpell((Unit*)nullptr, (sSpellMgr->GetSpellIdForDifficulty(SPELL_SHAMAN_STORM_POWER, GetCaster())), true); } void Register() override @@ -1528,7 +1527,7 @@ public: bool OnCheck(Player* player, Unit* /*target*/, uint32 /*criteria_id*/) override { - return player && player->HasAllAuras(SPELL_MAGE_TOASTY_FIRE_AURA, SPELL_DRUID_STARLIGHT_AREA_AURA, SPELL_SHAMAN_STORM_POWER_10); + return player && player->HasAllAuras(SPELL_MAGE_TOASTY_FIRE_AURA, SPELL_DRUID_STARLIGHT_AREA_AURA, SPELL_SHAMAN_STORM_POWER); } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp index 133868f332..9b6b35b114 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp @@ -26,37 +26,33 @@ #include "SpellScriptLoader.h" #include "ulduar.h" -#define SPELL_FLAME_JETS_10 62680 -#define SPELL_FLAME_JETS_25 63472 -#define S_FLAME_JETS RAID_MODE(SPELL_FLAME_JETS_10, SPELL_FLAME_JETS_25) -#define SPELL_SCORCH_10 62546 -#define SPELL_SCORCH_25 63474 -#define S_SCORCH RAID_MODE(SPELL_SCORCH_10, SPELL_SCORCH_25) -#define SPELL_ACTIVATE_CONSTRUCT 62488 -#define SPELL_STRENGTH_OF_THE_CREATOR 64473 -#define SPELL_SLAG_POT_10 62717 -#define SPELL_SLAG_POT_25 63477 -#define S_SLAG_POT RAID_MODE(SPELL_SLAG_POT_10, SPELL_SLAG_POT_25) -#define SPELL_BERSERK 64238 -#define SPELL_GRAB 62707 -#define SPELL_GRAB_TRIGGERED 62708 -#define SPELL_GRAB_CONTROL_2 62711 +enum IgnisSpellData +{ + SPELL_FLAME_JETS = 62680, + SPELL_SCORCH = 62546, + SPELL_ACTIVATE_CONSTRUCT = 62488, + SPELL_STRENGTH_OF_THE_CREATOR = 64473, + SPELL_SLAG_POT = 62717, + SPELL_BERSERK = 64238, + SPELL_GRAB = 62707, + SPELL_GRAB_TRIGGERED = 62708, + SPELL_GRAB_CONTROL_2 = 62711, -#define SPELL_SCORCHED_GROUND_10 62548 -#define SPELL_SCORCHED_GROUND_25 63476 -#define S_SCORCHED_GROUND RAID_MODE(SPELL_SCORCHED_GROUND_10, SPELL_SCORCHED_GROUND_25) -#define SPELL_HEAT_AREA 62343 -#define SPELL_HEAT_BUFF 65667 -#define SPELL_MOLTEN 62373 -#define SPELL_BRITTLE_10 62382 -#define SPELL_BRITTLE_25 67114 -#define S_BRITTLE RAID_MODE(SPELL_BRITTLE_10, SPELL_BRITTLE_25) -#define SPELL_SHATTER 62383 + SPELL_SCORCHED_GROUND = 62548, + SPELL_HEAT_AREA = 62343, + SPELL_HEAT_BUFF = 65667, + SPELL_MOLTEN = 62373, + SPELL_BRITTLE = 62382, + SPELL_SHATTER = 62383, +}; -#define BOSS_IGNIS 33118 -#define NPC_IRON_CONSTRUCT 33121 -#define NPC_SCORCHED_GROUND 33123 -#define NPC_WATER_TRIGGER 22515 +enum IgnisNPCs +{ + BOSS_IGNIS = 33118, + NPC_IRON_CONSTRUCT = 33121, + NPC_SCORCHED_GROUND = 33123, + NPC_WATER_TRIGGER = 22515, +}; enum Texts { @@ -147,7 +143,7 @@ public: void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType, SpellSchoolMask) override { - if (damage >= RAID_MODE(3000U, 5000U) && me->GetAura(S_BRITTLE)) + if (damage >= RAID_MODE(3000U, 5000U) && me->GetAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_BRITTLE, me))) { me->CastSpell(me, SPELL_SHATTER, true); Unit::Kill(attacker, me); @@ -177,7 +173,7 @@ public: if (me->FindNearestCreature(NPC_WATER_TRIGGER, 18.0f, true)) { me->RemoveAura(a); - me->CastSpell(me, S_BRITTLE, true); + me->CastSpell(me, SPELL_BRITTLE, true); } } else @@ -312,7 +308,7 @@ public: if (caster && spell->Id == SPELL_GRAB_CONTROL_2) { //caster->ClearUnitState(UNIT_STATE_ONVEHICLE); - me->CastSpell(caster, S_SLAG_POT, true); + me->CastSpell(caster, SPELL_SLAG_POT, true); } } @@ -354,7 +350,7 @@ public: me->SetControlled(true, UNIT_STATE_ROOT); me->DisableRotate(true); me->SendMovementFlagUpdate(); - me->CastSpell(me->GetVictim(), S_SCORCH, false); + me->CastSpell(me->GetVictim(), SPELL_SCORCH, false); events.Repeat(20s); events.RescheduleEvent(EVENT_ENABLE_ROTATE, 3s); break; @@ -364,7 +360,7 @@ public: break; case EVENT_SPELL_FLAME_JETS: Talk(EMOTE_JETS); - me->CastSpell(me->GetVictim(), S_FLAME_JETS, false); + me->CastSpell(me->GetVictim(), SPELL_FLAME_JETS, false); events.Repeat(25s); break; case EVENT_GRAB: @@ -431,7 +427,7 @@ class spell_ignis_scorch_aura : public AuraScript bool Validate(SpellInfo const* /*spellInfo*/) override { - return ValidateSpellInfo({ SPELL_SCORCHED_GROUND_10, SPELL_SCORCHED_GROUND_25 }); + return ValidateSpellInfo({ SPELL_SCORCHED_GROUND }); } void HandleEffectPeriodic(AuraEffect const* aurEff) @@ -441,7 +437,7 @@ class spell_ignis_scorch_aura : public AuraScript if (Creature* summon = caster->SummonCreature(NPC_SCORCHED_GROUND, caster->GetPositionX() + 20.0f * cos(caster->GetOrientation()), caster->GetPositionY() + 20.0f * std::sin(caster->GetOrientation()), 361.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 30000)) { if (!summon->FindNearestCreature(NPC_WATER_TRIGGER, 25.0f, true)) // must be away from the water - summon->CastSpell(summon, (aurEff->GetId() == SPELL_SCORCH_10 ? SPELL_SCORCHED_GROUND_10 : SPELL_SCORCHED_GROUND_25), true); + summon->CastSpell(summon, SPELL_SCORCHED_GROUND, true); } } @@ -474,12 +470,10 @@ class spell_ignis_grab_initial : public SpellScript enum SlagPot { - SPELL_SLAG_POT_DAMAGE_1 = 65722, - SPELL_SLAG_POT_DAMAGE_2 = 65723, + SPELL_SLAG_POT_DAMAGE = 65722, SPELL_SCORCH_DAMAGE_1 = 62549, SPELL_SCORCH_DAMAGE_2 = 63475, - SPELL_SLAG_IMBUED_1 = 62836, - SPELL_SLAG_IMBUED_2 = 63536 + SPELL_SLAG_IMBUED = 62836, }; class spell_ignis_slag_pot_aura : public AuraScript @@ -490,12 +484,10 @@ class spell_ignis_slag_pot_aura : public AuraScript { return ValidateSpellInfo( { - SPELL_SLAG_POT_DAMAGE_1, - SPELL_SLAG_POT_DAMAGE_2, + SPELL_SLAG_POT_DAMAGE, SPELL_SCORCH_DAMAGE_1, SPELL_SCORCH_DAMAGE_2, - SPELL_SLAG_IMBUED_1, - SPELL_SLAG_IMBUED_2 + SPELL_SLAG_IMBUED }); } @@ -503,7 +495,7 @@ class spell_ignis_slag_pot_aura : public AuraScript { if (Unit* caster = GetCaster()) if (Unit* target = GetTarget()) - caster->CastSpell(target, (GetId() == SPELL_SLAG_POT_10 ? SPELL_SLAG_POT_DAMAGE_1 : SPELL_SLAG_POT_DAMAGE_2), true); + caster->CastSpell(target, SPELL_SLAG_POT_DAMAGE, true); } void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) @@ -522,7 +514,7 @@ class spell_ignis_slag_pot_aura : public AuraScript target->ApplySpellImmune(GetId(), IMMUNITY_ID, SPELL_SCORCH_DAMAGE_1, false); target->ApplySpellImmune(GetId(), IMMUNITY_ID, SPELL_SCORCH_DAMAGE_2, false); if (target->IsAlive()) - target->CastSpell(target, (GetId() == SPELL_SLAG_POT_10 ? SPELL_SLAG_IMBUED_1 : SPELL_SLAG_IMBUED_2), true); + target->CastSpell(target, SPELL_SLAG_IMBUED, true); } } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp index b9a12638ba..ba2d626ca6 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp @@ -45,56 +45,33 @@ enum KologarnSpells SPELL_KOLOGARN_REDUCE_PARRY = 64651, // BASIC - SPELL_OVERHEAD_SMASH_10 = 63356, - SPELL_OVERHEAD_SMASH_25 = 64003, - SPELL_ONEARMED_OVERHEAD_SMASH_10 = 63573, - SPELL_ONEARMED_OVERHEAD_SMASH_25 = 64006, - SPELL_PETRIFYING_BREATH_10 = 62030, - SPELL_PETRIFYING_BREATH_25 = 63980, - SPELL_STONE_SHOUT_10 = 63716, - SPELL_STONE_SHOUT_25 = 64005, + SPELL_OVERHEAD_SMASH = 63356, + SPELL_ONEARMED_OVERHEAD_SMASH = 63573, + SPELL_PETRIFYING_BREATH = 62030, + SPELL_STONE_SHOUT = 63716, // EYEBEAM SPELL_FOCUSED_EYEBEAM_SUMMON = 63342, - SPELL_FOCUSED_EYEBEAM_10 = 63347, - SPELL_FOCUSED_EYEBEAM_25 = 63977, + SPELL_FOCUSED_EYEBEAM = 63347, SPELL_FOCUSED_EYEBEAM_RIGHT = 63702, SPELL_FOCUSED_EYEBEAM_LEFT = 63676, // ARMS - SPELL_ARM_DEAD_10 = 63629, - SPELL_ARM_DEAD_25 = 63979, - SPELL_RUBBLE_FALL_10 = 63821, - SPELL_RUBBLE_FALL_25 = 64001, + SPELL_ARM_DEAD = 63629, + SPELL_RUBBLE_FALL = 63821, SPELL_ARM_RESPAWN_VISUAL = 64753, // LEFT ARM - SPELL_ARM_SWEEP_10 = 63766, - SPELL_ARM_SWEEP_25 = 63983, + SPELL_ARM_SWEEP = 63766, // RIGHT ARM - SPELL_STONE_GRIP_10 = 62166, - SPELL_STONE_GRIP_25 = 63981, - SPELL_RIDE_RIGHT_ARM_10 = 62056, - SPELL_RIDE_RIGHT_ARM_25 = 63985, + SPELL_STONE_GRIP = 62166, + SPELL_RIDE_RIGHT_ARM = 62056, // RUBBLE TRASH - SPELL_RUBBLE_ATTACK_10 = 63818, - SPELL_RUBBLE_ATTACK_25 = 63978, + SPELL_RUBBLE_ATTACK = 63818, }; -#define SPELL_PETRIFYING_BREATH RAID_MODE(SPELL_PETRIFYING_BREATH_10, SPELL_PETRIFYING_BREATH_25) -#define SPELL_OVERHEAD_SMASH RAID_MODE(SPELL_OVERHEAD_SMASH_10, SPELL_OVERHEAD_SMASH_25) -#define SPELL_ONEARMED_OVERHEAD_SMASH RAID_MODE(SPELL_ONEARMED_OVERHEAD_SMASH_10, SPELL_ONEARMED_OVERHEAD_SMASH_25) -#define SPELL_ARM_DEAD RAID_MODE(SPELL_ARM_DEAD_10, SPELL_ARM_DEAD_25) -#define SPELL_ARM_SWEEP RAID_MODE(SPELL_ARM_SWEEP_10, SPELL_ARM_SWEEP_25) -#define SPELL_STONE_GRIP RAID_MODE(SPELL_STONE_GRIP_10, SPELL_STONE_GRIP_25) -#define SPELL_FOCUSED_EYEBEAM RAID_MODE(SPELL_FOCUSED_EYEBEAM_10, SPELL_FOCUSED_EYEBEAM_25) -#define SPELL_RUBBLE_FALL RAID_MODE(SPELL_RUBBLE_FALL_10, SPELL_RUBBLE_FALL_25) -#define SPELL_RUBBLE_ATTACK RAID_MODE(SPELL_RUBBLE_ATTACK_10, SPELL_RUBBLE_ATTACK_25) -#define SPELL_RIDE_RIGHT_ARM RAID_MODE(SPELL_RIDE_RIGHT_ARM_10, SPELL_RIDE_RIGHT_ARM_25) -#define SPELL_STONE_SHOUT RAID_MODE(SPELL_STONE_SHOUT_10, SPELL_STONE_SHOUT_25) - enum KologarnEvents { EVENT_SMASH = 1, @@ -796,9 +773,7 @@ class spell_ulduar_stone_grip_cast_target : public SpellScript // Remove "main tank" and non-player targets targets.remove_if(StoneGripTargetSelector(GetCaster()->ToCreature(), GetCaster()->GetVictim())); // Maximum affected targets per difficulty mode - uint32 maxTargets = 1; - if (GetSpellInfo()->Id == SPELL_STONE_GRIP_25) - maxTargets = 3; + uint32 maxTargets = GetSpellInfo()->Id == SPELL_STONE_GRIP ? 1 : 3; // Return a random amount of targets based on maxTargets while (maxTargets < targets.size()) @@ -850,6 +825,7 @@ class spell_ulduar_squeezed_lifeless : public SpellScript } }; +// 63720, 64004 class spell_kologarn_stone_shout : public SpellScript { PrepareSpellScript(spell_kologarn_stone_shout); @@ -861,7 +837,6 @@ class spell_kologarn_stone_shout : public SpellScript void Register() override { - if (m_scriptSpellId != SPELL_STONE_SHOUT_10 && m_scriptSpellId != SPELL_STONE_SHOUT_25) OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_kologarn_stone_shout::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY); } }; @@ -879,7 +854,6 @@ class spell_kologarn_stone_shout_aura : public AuraScript void Register() override { - if (m_scriptSpellId == SPELL_STONE_SHOUT_10 || m_scriptSpellId == SPELL_STONE_SHOUT_25) OnEffectPeriodic += AuraEffectPeriodicFn(spell_kologarn_stone_shout_aura::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); } }; @@ -945,7 +919,8 @@ void AddSC_boss_kologarn() RegisterSpellScript(spell_ulduar_stone_grip_aura); RegisterSpellScript(spell_ulduar_squeezed_lifeless); RegisterSpellScript(spell_kologarn_focused_eyebeam); - RegisterSpellAndAuraScriptPair(spell_kologarn_stone_shout, spell_kologarn_stone_shout_aura); + RegisterSpellScript(spell_kologarn_stone_shout); + RegisterSpellScript(spell_kologarn_stone_shout_aura); // Achievements new achievement_kologarn_looks_could_kill(); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp index d7ba40cdec..ef53103da8 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp @@ -23,6 +23,7 @@ #include "PassiveAI.h" #include "Player.h" #include "ScriptedCreature.h" +#include "SharedDefines.h" #include "Spell.h" #include "SpellAuraEffects.h" #include "SpellScript.h" @@ -35,18 +36,15 @@ enum SpellData SPELL_BERSERK = 64238, // PHASE 1: - SPELL_NAPALM_SHELL_25 = 65026, - SPELL_NAPALM_SHELL_10 = 63666, + SPELL_NAPALM_SHELL = 63666, - SPELL_PLASMA_BLAST_25 = 64529, - SPELL_PLASMA_BLAST_10 = 62997, + SPELL_PLASMA_BLAST = 62997, SPELL_SHOCK_BLAST = 63631, SPELL_PROXIMITY_MINES = 63027, NPC_PROXIMITY_MINE = 34362, - SPELL_MINE_EXPLOSION_25 = 63009, - SPELL_MINE_EXPLOSION_10 = 66351, + SPELL_MINE_EXPLOSION = 66351, SPELL_SUMMON_PROXIMITY_MINE = 65347, // PHASE 2: @@ -57,17 +55,14 @@ enum SpellData NPC_ROCKET_STRIKE_N = 34047, SPELL_RAPID_BURST = 63382, - SPELL_RAPID_BURST_DAMAGE_25_1 = 64531, - SPELL_RAPID_BURST_DAMAGE_25_2 = 64532, - SPELL_RAPID_BURST_DAMAGE_10_1 = 63387, - SPELL_RAPID_BURST_DAMAGE_10_2 = 64019, + SPELL_RAPID_BURST_DAMAGE_1 = 63387, + SPELL_RAPID_BURST_DAMAGE_2 = 64019, SPELL_SUMMON_BURST_TARGET = 64840, SPELL_SPINNING_UP = 63414, // PHASE 3: - SPELL_PLASMA_BALL_25 = 64535, - SPELL_PLASMA_BALL_10 = 63689, + SPELL_PLASMA_BALL = 63689, SPELL_MAGNETIC_CORE = 64436, SPELL_SPINNING = 64438, @@ -80,10 +75,8 @@ enum SpellData SPELL_BEAM_BLUE = 63294, // PHASE 4: - SPELL_HAND_PULSE_10_R = 64352, - SPELL_HAND_PULSE_25_R = 64537, - SPELL_HAND_PULSE_10_L = 64348, - SPELL_HAND_PULSE_25_L = 64536, + SPELL_HAND_PULSE_R = 64352, + SPELL_HAND_PULSE_L = 64348, SPELL_SELF_REPAIR = 64383, SPELL_SLEEP_VISUAL_1 = 64393, @@ -219,14 +212,6 @@ enum EVENTS EVENT_EMERGENCY_BOT_ATTACK = 70, }; -#define SPELL_NAPALM_SHELL RAID_MODE(SPELL_NAPALM_SHELL_10, SPELL_NAPALM_SHELL_25) -#define SPELL_PLASMA_BLAST RAID_MODE(SPELL_PLASMA_BLAST_10, SPELL_PLASMA_BLAST_25) -#define SPELL_MINE_EXPLOSION RAID_MODE(SPELL_MINE_EXPLOSION_10, SPELL_MINE_EXPLOSION_25) -#define SPELL_PLASMA_BALL RAID_MODE(SPELL_PLASMA_BALL_10, SPELL_PLASMA_BALL_25) -#define SPELL_HAND_PULSE_R RAID_MODE(SPELL_HAND_PULSE_10_R, SPELL_HAND_PULSE_25_R) -#define SPELL_HAND_PULSE_L RAID_MODE(SPELL_HAND_PULSE_10_L, SPELL_HAND_PULSE_25_L) -#define SPELL_FROST_BOMB_EXPLOSION RAID_MODE(SPELL_FROST_BOMB_EXPLOSION_10, SPELL_FROST_BOMB_EXPLOSION_25) - enum Texts { // Mimiron @@ -1889,14 +1874,6 @@ public: void MoveInLineOfSight(Unit* /*who*/) override {} bool CanAIAttack(Unit const* /*target*/) const override { return false; } - void SpellHitTarget(Unit* target, SpellInfo const* spell) override - { - if (target && spell && target->IsPlayer() && spell->Id == SPELL_MINE_EXPLOSION) - if (InstanceScript* pInstance = me->GetInstanceScript()) - if (Creature* c = GetMimiron()) - c->AI()->SetData(0, 11); - } - // MoveInLineOfSight is checked every few yards, can't use it void UpdateAI(uint32 diff) override { @@ -1927,6 +1904,24 @@ public: }; }; +class spell_ulduar_mimiron_mine_explosion : public SpellScript +{ + PrepareSpellScript(spell_ulduar_mimiron_mine_explosion); + + void HandleDamage(SpellEffIndex /*effIndex*/) + { + if (GetHitPlayer()) + if (InstanceScript* pInstance = GetCaster()->GetInstanceScript()) + if (Creature* mimi = pInstance->GetCreature(TYPE_MIMIRON)) + mimi->AI()->SetData(0, 11); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_ulduar_mimiron_mine_explosion::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + class npc_ulduar_mimiron_rocket : public CreatureScript { public: @@ -2094,10 +2089,8 @@ class spell_mimiron_rapid_burst_aura : public AuraScript { return ValidateSpellInfo( { - SPELL_RAPID_BURST_DAMAGE_10_1, - SPELL_RAPID_BURST_DAMAGE_10_2, - SPELL_RAPID_BURST_DAMAGE_25_1, - SPELL_RAPID_BURST_DAMAGE_25_2 + SPELL_RAPID_BURST_DAMAGE_1, + SPELL_RAPID_BURST_DAMAGE_2, }); } @@ -2105,7 +2098,7 @@ class spell_mimiron_rapid_burst_aura : public AuraScript { if (Unit* caster = GetCaster()) { - uint32 id = (caster->GetMap()->Is25ManRaid() ? ((aurEff->GetTickNumber() % 2) ? SPELL_RAPID_BURST_DAMAGE_25_2 : SPELL_RAPID_BURST_DAMAGE_25_1) : ((aurEff->GetTickNumber() % 2) ? SPELL_RAPID_BURST_DAMAGE_10_2 : SPELL_RAPID_BURST_DAMAGE_10_1)); + uint32 id = (aurEff->GetTickNumber() % 2) ? SPELL_RAPID_BURST_DAMAGE_2 : SPELL_RAPID_BURST_DAMAGE_1; caster->CastSpell((Unit*)nullptr, id, true); } } @@ -2498,6 +2491,7 @@ void AddSC_boss_mimiron() new npc_ulduar_bot_summon_trigger(); RegisterSpellScript(spell_mimiron_rapid_burst_aura); RegisterSpellScript(spell_mimiron_p3wx2_laser_barrage_aura); + RegisterSpellScript(spell_ulduar_mimiron_mine_explosion); new go_ulduar_do_not_push_this_button(); new npc_ulduar_flames_initial(); new npc_ulduar_flames_spread(); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp index 7d1ad52511..2ece43eb78 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp @@ -30,12 +30,10 @@ enum Spells { // Razorscale - SPELL_FLAMEBUFFET_10 = 64016, - SPELL_FLAMEBUFFET_25 = 64023, + SPELL_FLAMEBUFFET = 64016, SPELL_FIREBALL = 63815, SPELL_WINGBUFFET = 62666, - SPELL_FLAMEBREATH_10 = 63317, - SPELL_FLAMEBREATH_25 = 64021, + SPELL_FLAMEBREATH = 63317, SPELL_FUSEARMOR = 64771, SPELL_FUSED_ARMOR = 64774, // Applied on 5th stack of SPELL_FUSEARMOR SPELL_DEVOURINGFLAME = 63236, @@ -50,25 +48,17 @@ enum Spells // Dark Rune Sentinel SPELL_WHIRLWIND = 63808, - SPELL_BATTLE_SHOUT_10 = 46763, - SPELL_BATTLE_SHOUT_25 = 64062, + SPELL_BATTLE_SHOUT = 46763, // Dark Rune Guardian SPELL_STORMSTRIKE_DMG = 65971, SPELL_STORMSTRIKE_DEBUFF = 64757, // Dark Rune Watcher - SPELL_LIGHTINGBOLT_10 = 63809, - SPELL_LIGHTINGBOLT_25 = 64696, - SPELL_CHAINLIGHTNING_10 = 64758, - SPELL_CHAINLIGHTNING_25 = 64759, + SPELL_LIGHTINGBOLT = 63809, + SPELL_CHAINLIGHTNING = 64758, }; -#define SPELL_FLAMEBUFFET RAID_MODE(SPELL_FLAMEBUFFET_10, SPELL_FLAMEBUFFET_25) -#define SPELL_FLAMEBREATH RAID_MODE(SPELL_FLAMEBREATH_10, SPELL_FLAMEBREATH_25) -#define SPELL_BATTLE_SHOUT RAID_MODE(SPELL_BATTLE_SHOUT_10, SPELL_BATTLE_SHOUT_25) -#define SPELL_LIGHTINGBOLT RAID_MODE(SPELL_LIGHTINGBOLT_10, SPELL_LIGHTINGBOLT_25) -#define SPELL_CHAINLIGHTNING RAID_MODE(SPELL_CHAINLIGHTNING_10, SPELL_CHAINLIGHTNING_25) #define REQ_CHAIN_COUNT RAID_MODE(2, 4) enum NPCs diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index 5d4c85aeb8..160e8d3d50 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -23,6 +23,7 @@ #include "ScriptedCreature.h" #include "ScriptedEscortAI.h" #include "SpellAuraEffects.h" +#include "SpellMgr.h" #include "SpellScript.h" #include "SpellScriptLoader.h" #include "ulduar.h" @@ -34,8 +35,7 @@ enum ThorimSpells SPELL_SHEATH_OF_LIGHTNING = 62276, SPELL_STORMHAMMER = 62042, SPELL_BERSERK_FRIENDS = 62560, - SPELL_CHAIN_LIGHTNING_10 = 62131, - SPELL_CHAIN_LIGHTNING_25 = 64390, + SPELL_CHAIN_LIGHTNING = 62131, SPELL_UNBALANCING_STRIKE = 62130, SPELL_BERSERK = 26662, @@ -54,17 +54,13 @@ enum ThorimSpells SPELL_SIF_CHANNEL_HOLOGRAM = 64324, SPELL_FROSTBOLT = 62601, SPELL_FROSTBOLT_VALLEY = 62604, - SPELL_BLIZZARD_10 = 62577, - SPELL_BLIZZARD_25 = 62603, + SPELL_BLIZZARD = 62577, SPELL_FROST_NOVA = 62605, // DARK RUNE ACOLYTE - SPELL_GREATER_HEAL_10 = 62334, - SPELL_GREATER_HEAL_25 = 62442, - SPELL_HOLY_SMITE_10 = 62335, - SPELL_HOLY_SMITE_25 = 62443, - SPELL_RENEW_10 = 62333, - SPELL_RENEW_25 = 62441, + SPELL_GREATER_HEAL = 62334, + SPELL_HOLY_SMITE = 62335, + SPELL_RENEW = 62333, // CAPTURED MERCENARY SOLDIER SPELL_BARBED_SHOT = 62318, @@ -76,19 +72,15 @@ enum ThorimSpells SPELL_HEROIC_STRIKE = 62444, // JORMUNGAR BEHEMOTH - SPELL_ACID_BREATH_10 = 62315, - SPELL_ACID_BREATH_25 = 62415, - SPELL_SWEEP_10 = 62316, - SPELL_SWEEP_25 = 62417, + SPELL_ACID_BREATH = 62315, + SPELL_SWEEP = 62316, // IRON RING GUARD - SPELL_IMPALE_10 = 62331, - SPELL_IMPALE_25 = 62418, + SPELL_IMPALE = 62331, SPELL_WHIRLING_TRIP = 64151, // IRON HONOR GUARD - SPELL_SHIELD_SMASH_10 = 62332, - SPELL_SHIELD_SMASH_25 = 62420, + SPELL_SHIELD_SMASH = 62332, SPELL_CLEAVE = 42724, SPELL_HAMSTRING = 48639, @@ -97,12 +89,9 @@ enum ThorimSpells SPELL_RUNIC_STRIKE = 62322, // DARK RUNE EVOKER - SPELL_RUNIC_LIGHTNING_10 = 62327, - SPELL_RUNIC_LIGHTNING_25 = 62445, - SPELL_RUNIC_MENDING_10 = 62328, - SPELL_RUNIC_MENDING_25 = 62446, - SPELL_RUNIC_SHIELD_10 = 62321, - SPELL_RUNIC_SHIELD_25 = 62529, + SPELL_RUNIC_LIGHTNING = 62327, + SPELL_RUNIC_MENDING = 62328, + SPELL_RUNIC_SHIELD = 62321, // DARK RUNE CHAMPION SPELL_CHARGE = 32323, @@ -114,8 +103,7 @@ enum ThorimSpells SPELL_PUMMEL = 38313, // RUNIC COLOSSUS - SPELL_COLOSSUS_CHARGE_10 = 62613, - SPELL_COLOSSUS_CHARGE_25 = 62614, + SPELL_COLOSSUS_CHARGE = 62613, SPELL_RUNIC_BARRIER = 62338, SPELL_SMASH = 62339, SPELL_RUNIC_SMASH_LEFT = 62057, @@ -125,8 +113,7 @@ enum ThorimSpells // ANCIENT RUNE GIANT SPELL_RUNE_DETONATION = 62526, SPELL_RUNIC_FORTIFICATION = 62942, - SPELL_STOMP_10 = 62411, - SPELL_STOMP_25 = 62413, + SPELL_STOMP = 62411, // TRAPS SPELL_LIGHTNING_FIELD = 64972, @@ -134,20 +121,6 @@ enum ThorimSpells SPELL_PARALYTIC_FIELD_SECOND = 63540, }; -#define SPELL_GREATER_HEAL RAID_MODE(SPELL_GREATER_HEAL_10, SPELL_GREATER_HEAL_25) -#define SPELL_HOLY_SMITE RAID_MODE(SPELL_HOLY_SMITE_10, SPELL_HOLY_SMITE_25) -#define SPELL_RENEW RAID_MODE(SPELL_RENEW_10, SPELL_RENEW_25) -#define SPELL_ACID_BREATH RAID_MODE(SPELL_ACID_BREATH_10, SPELL_ACID_BREATH_25) -#define SPELL_SWEEP RAID_MODE(SPELL_SWEEP_10, SPELL_SWEEP_25) -#define SPELL_IMPALE RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25) -#define SPELL_COLOSSUS_CHARGE RAID_MODE(SPELL_COLOSSUS_CHARGE_10, SPELL_COLOSSUS_CHARGE_25) -#define SPELL_STOMP RAID_MODE(SPELL_STOMP_10, SPELL_STOMP_25) -#define SPELL_SHIELD_SMASH RAID_MODE(SPELL_SHIELD_SMASH_10, SPELL_SHIELD_SMASH_25) -#define SPELL_RUNIC_LIGHTNING RAID_MODE(SPELL_RUNIC_LIGHTNING_10, SPELL_RUNIC_LIGHTNING_25) -#define SPELL_RUNIC_MENDING RAID_MODE(SPELL_RUNIC_MENDING_10, SPELL_RUNIC_MENDING_25) -#define SPELL_RUNIC_SHIELD RAID_MODE(SPELL_RUNIC_SHIELD_10, SPELL_RUNIC_SHIELD_25) -#define SPELL_CHAIN_LIGHTNING RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25) - enum ThormNPCandGOs : uint32 { // ARENA INIT @@ -1044,7 +1017,7 @@ public: { me->SetSpeed(MOVE_RUN, 1); me->SetSpeed(MOVE_WALK, 1); - me->CastSpell(me, RAID_MODE(SPELL_BLIZZARD_10, SPELL_BLIZZARD_25), true); + me->CastSpell(me, SPELL_BLIZZARD, true); } void WaypointReached(uint32 /*point*/) override @@ -1206,7 +1179,7 @@ public: events.Repeat(1600ms); break; case EVENT_DR_ACOLYTE_R: - if (HealthBelowPct(75) && !me->HasAura(SPELL_RENEW)) + if (HealthBelowPct(75) && !me->HasAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_RENEW, me))) me->CastSpell(me, SPELL_GREATER_HEAL, false); else if (Unit* target = DoSelectLowestHpFriendly(60.0f, 10)) me->CastSpell(target, SPELL_RENEW, false); @@ -1331,7 +1304,7 @@ public: events.Repeat(1600ms); break; case EVENT_DR_ACOLYTE_R: - if (HealthBelowPct(75) && !me->HasAura(SPELL_RENEW)) + if (HealthBelowPct(75) && !me->HasAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_RENEW, me))) me->CastSpell(me, SPELL_GREATER_HEAL, false); else if (Unit* target = DoSelectLowestHpFriendly(60.0f, 10)) me->CastSpell(target, SPELL_RENEW, false); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index 570e7a266d..ab7e276730 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -30,10 +30,8 @@ enum XT002Spells { // BASIC - SPELL_GRAVITY_BOMB_10 = 63024, - SPELL_GRAVITY_BOMB_25 = 64234, - SPELL_SEARING_LIGHT_10 = 63018, - SPELL_SEARING_LIGHT_25 = 65121, + SPELL_GRAVITY_BOMB = 63024, + SPELL_SEARING_LIGHT = 63018, SPELL_TYMPANIC_TANTARUM = 62776, SPELL_XT002_ENRAGE = 26662, @@ -48,27 +46,18 @@ enum XT002Spells SPELL_EXPOSED_HEART = 63849, SPELL_ENERGY_ORB = 62790, SPELL_ENERGY_ORB_TRIGGER = 62826, - SPELL_HEARTBREAK_10 = 65737, - SPELL_HEARTBREAK_25 = 64193, + SPELL_HEARTBREAK = 65737, // VOID ZONE - SPELL_VOID_ZONE_SUMMON_10 = 64203, - SPELL_VOID_ZONE_SUMMON_25 = 64235, - //SPELL_VOID_ZONE_SUMMON = RAID_MODE(SPELL_VOID_ZONE_SUMMON_10, SPELL_VOID_ZONE_SUMMON_25, SPELL_VOID_ZONE_SUMMON_10, SPELL_VOID_ZONE_SUMMON_25), + SPELL_VOID_ZONE_SUMMON = 64203, SPELL_VOID_ZONE_DAMAGE = 46262, // SPARK SPELL_SPARK_SUMMON = 64210, - SPELL_SPARK_DAMAGE_10 = 64227, - SPELL_SPARK_DAMAGE_25 = 64236, + SPELL_SPARK_DAMAGE = 64227, SPELL_SPARK_MELEE = 64230, }; -#define SPELL_GRAVITY_BOMB RAID_MODE(SPELL_GRAVITY_BOMB_10, SPELL_GRAVITY_BOMB_25) -#define SPELL_SEARING_LIGHT RAID_MODE(SPELL_SEARING_LIGHT_10, SPELL_SEARING_LIGHT_25) -#define SPELL_HEARTBREAK RAID_MODE(SPELL_HEARTBREAK_10, SPELL_HEARTBREAK_25) -#define SPELL_SPARK_DAMAGE RAID_MODE(SPELL_SPARK_DAMAGE_10, SPELL_SPARK_DAMAGE_25) - enum XT002Events { EVENT_HEALTH_CHECK = 1, diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp index a00b6d1205..b7dd602db3 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp @@ -24,6 +24,7 @@ #include "ScriptedCreature.h" #include "ScriptedEscortAI.h" #include "SpellAuras.h" +#include "SpellMgr.h" #include "SpellScript.h" #include "SpellScriptLoader.h" #include "ulduar.h" @@ -102,8 +103,7 @@ enum YoggSpells // CONSTRICTOR TENTACLE SPELL_LUNGE = 64123, - SPELL_SQUEEZE_10 = 64125, - SPELL_SQUEEZE_25 = 64126, + SPELL_SQUEEZE = 64125, // CORRUPTOR TENTACLE SPELL_APATHY = 64156, @@ -142,15 +142,10 @@ enum YoggSpells SPELL_SIMPLE_TELEPORT = 64195, SPELL_EMPOWERED = 65294, SPELL_EMPOWERED_PASSIVE = 64161, - SPELL_DRAIN_LIFE_10 = 64159, - SPELL_DRAIN_LIFE_25 = 64160, + SPELL_DRAIN_LIFE = 64159, SPELL_RECENTLY_SPAWNED = 64497, }; -#define SPELL_PSYCHOSIS RAID_MODE(SPELL_SARA_PSYCHOSIS_10, SPELL_SARA_PSYCHOSIS_25) -#define SPELL_SQUEEZE RAID_MODE(SPELL_SQUEEZE_10, SPELL_SQUEEZE_25) -#define SPELL_DRAIN_LIFE RAID_MODE(SPELL_DRAIN_LIFE_10, SPELL_DRAIN_LIFE_25) - enum YoggEvents { EVENT_SARA_P1_DOORS_CLOSE = 1, @@ -846,7 +841,7 @@ public: { Talk(SAY_SARA_PSYCHOSIS_HIT); } - me->CastCustomSpell(SPELL_PSYCHOSIS, SPELLVALUE_MAX_TARGETS, 1, me, false); + me->CastCustomSpell(SPELL_SARA_PSYCHOSIS_10, SPELLVALUE_MAX_TARGETS, 1, me, false); events.Repeat(3500ms); break; case EVENT_SARA_P2_DEATH_RAY: @@ -1677,7 +1672,7 @@ public: { if (me->GetDistance(itr->GetSource()) > 10 || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster()) continue; - if (itr->GetSource()->HasAura(SPELL_SQUEEZE) || itr->GetSource()->HasAura(SPELL_INSANE1)) + if (itr->GetSource()->HasAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_SQUEEZE, me)) || itr->GetSource()->HasAura(SPELL_INSANE1)) continue; if (count <= num || !target) @@ -1719,7 +1714,7 @@ public: void JustDied(Unit*) override { if (Unit* player = ObjectAccessor::GetUnit(*me, _playerGUID)) - player->RemoveAura(SPELL_SQUEEZE); + player->RemoveAura(sSpellMgr->GetSpellIdForDifficulty(SPELL_SQUEEZE, me)); } }; }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp index be980bd557..ff9e906924 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp @@ -79,7 +79,11 @@ enum UldSpells SPELL_SIMPLE_TELEPORT = 12980, SPELL_KEEPER_TELEPORT = 62940, SPELL_SNOW_MOUND_PARTICLES = 64615, - SPELL_ENERGY_SAP_10 = 64740 + SPELL_ENERGY_SAP_10 = 64740, + + // Arachnopod Destroyer + SPELL_FLAME_SPRAY = 64717, + SPELL_MACHINE_GUN = 64776, }; class npc_ulduar_keeper : public CreatureScript @@ -473,11 +477,11 @@ public: case 0: break; case 1: - me->CastSpell(me->GetVictim(), RAID_MODE(64717, 65241), false); + me->CastSpell(me->GetVictim(), SPELL_FLAME_SPRAY, false); events.Repeat(15s, 25s); break; case 2: - me->CastSpell(me->GetVictim(), RAID_MODE(64776, 65240), false); + me->CastSpell(me->GetVictim(), SPELL_MACHINE_GUN, false); events.Repeat(10s, 15s); break; case 3: diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp index 8e3d5372ed..333cb1f94f 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp @@ -27,14 +27,10 @@ enum Archavon SPELL_ROCK_SHARDS = 58678, SPELL_ROCK_SHARDS_LEFT_HAND_VISUAL = 58689, SPELL_ROCK_SHARDS_RIGHT_HAND_VISUAL = 58692, - SPELL_ROCK_SHARDS_DAMAGE_10 = 58695, - SPELL_ROCK_SHARDS_DAMAGE_25 = 60883, - SPELL_CRUSHING_LEAP_10 = 58960, - SPELL_CRUSHING_LEAP_25 = 60894, // Instant (10-80yr range) -- Leaps at an enemy, inflicting 8000 Physical damage, knocking all nearby enemies away, and creating a cloud of choking debris. - SPELL_STOMP_10 = 58663, - SPELL_STOMP_25 = 60880, - SPELL_IMPALE_10 = 58666, - SPELL_IMPALE_25 = 60882, // Lifts an enemy off the ground with a spiked fist, inflicting 47125 to 52875 Physical damage and 9425 to 10575 additional damage each second for 8 sec. + SPELL_ROCK_SHARDS_DAMAGE = 58695, + SPELL_CRUSHING_LEAP = 58960, + SPELL_STOMP = 58663, + SPELL_IMPALE = 58666, SPELL_BERSERK = 47008 }; @@ -145,7 +141,7 @@ class boss_archavon : public CreatureScript case EVENT_CHOKING_CLOUD: if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, false)) { - DoCast(target, RAID_MODE(SPELL_CRUSHING_LEAP_10, SPELL_CRUSHING_LEAP_25), true); //10y ~ 80y, ignore range + DoCast(target, SPELL_CRUSHING_LEAP, true); //10y ~ 80y, ignore range } events.Repeat(30s); @@ -156,14 +152,14 @@ class boss_archavon : public CreatureScript snprintf(buffer, sizeof(buffer), "Archavon the Stone Watcher lunges for %s!", me->GetVictim()->GetName().c_str()); me->TextEmote(buffer); - DoCastVictim(RAID_MODE(SPELL_STOMP_10, SPELL_STOMP_25)); + DoCastVictim(SPELL_STOMP); events.Repeat(45s); events.ScheduleEvent(EVENT_IMPALE, 3s); break; } case EVENT_IMPALE: - DoCastVictim(RAID_MODE(SPELL_IMPALE_10, SPELL_IMPALE_25)); + DoCastVictim(SPELL_IMPALE); break; case EVENT_BERSERK: DoCast(me, SPELL_BERSERK, true); @@ -205,17 +201,10 @@ class spell_archavon_rock_shards : public SpellScript return; } - Map* map = caster->GetMap(); - if (!map) - { - return; - } - caster->CastSpell(target, SPELL_ROCK_SHARDS_LEFT_HAND_VISUAL, true); caster->CastSpell(target, SPELL_ROCK_SHARDS_RIGHT_HAND_VISUAL, true); - uint32 spellId = map->Is25ManRaid() ? SPELL_ROCK_SHARDS_DAMAGE_25 : SPELL_ROCK_SHARDS_DAMAGE_10; - caster->CastSpell(target, spellId, true); + caster->CastSpell(target, SPELL_ROCK_SHARDS_DAMAGE, true); } void Register() override diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp index bf8da40c88..f9cb293697 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp @@ -29,10 +29,8 @@ enum Spells SPELL_OVERCHARGE = 64218, SPELL_BERSERK = 26662, - SPELL_CHAIN_LIGHTNING_10 = 64213, - SPELL_CHAIN_LIGHTNING_25 = 64215, - SPELL_LIGHTNING_NOVA_10 = 64216, - SPELL_LIGHTNING_NOVA_25 = 65279, + SPELL_CHAIN_LIGHTNING = 64213, + SPELL_LIGHTNING_NOVA = 64216, }; enum Events @@ -171,11 +169,11 @@ public: { case EVENT_CHAIN_LIGHTNING: if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) - me->CastSpell(target, RAID_MODE(SPELL_CHAIN_LIGHTNING_10, SPELL_CHAIN_LIGHTNING_25), false); + me->CastSpell(target, SPELL_CHAIN_LIGHTNING, false); events.Repeat(25s); break; case EVENT_LIGHTNING_NOVA: - me->CastSpell(me, RAID_MODE(SPELL_LIGHTNING_NOVA_10, SPELL_LIGHTNING_NOVA_25), false); + me->CastSpell(me, SPELL_LIGHTNING_NOVA, false); events.Repeat(40s); break; case EVENT_OVERCHARGE: From 4c5c930f4ce71785fe591819523ec4dab2bd9936 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 31 Oct 2025 12:36:16 +0000 Subject: [PATCH 09/10] chore(DB): import pending files Referenced commit(s): a4a9d215d8063b7267da850f7b48d347df9f0790 --- .../rev_1761752382851899257.sql => db_world/2025_10_31_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1761752382851899257.sql => db_world/2025_10_31_02.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1761752382851899257.sql b/data/sql/updates/db_world/2025_10_31_02.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1761752382851899257.sql rename to data/sql/updates/db_world/2025_10_31_02.sql index 74f27f9c7a..bf10c217c2 100644 --- a/data/sql/updates/pending_db_world/rev_1761752382851899257.sql +++ b/data/sql/updates/db_world/2025_10_31_02.sql @@ -1,3 +1,4 @@ +-- DB update 2025_10_31_01 -> 2025_10_31_02 -- | present in spelldifficulty.dbc | new -> DELETE FROM `spelldifficulty_dbc` WHERE `ID` IN (66809,70867,70877,70879,70994,71623,68186,69037,72224,70873,28783,28785,28732,28884,57374,28863,28883,57376,28882,28371,28374,29317,28157,28158,29998,28478,28479,29865,29204,29484,28741,54121,54123,29213,29212,41926,55543,28531,55697,28542,54529,28135,28167,64717,64776,61916,61890,61903,61911,64637,62274,62269,62054,61879,61869,61915,61887,64389,64422,64666,64375,64478,64496,64458,62584,62528,62623,64587,62437,62862,62861,62451,62240,62217,62310,62275,62283,62285,62325,62337,62664,62653,62654,62648,62649,62589,62598,62478,65123,63711,62680,62546,62717,62548,65722,62836,63356,63573,62030,63716,63347,63629,63821,63766,62166,62056,63818,63666,62997,66351,63387,64019,63689,64352,64348,64626,64016,63317,46763,63809,64758,62131,62577,62334,62335,62333,62315,62316,62331,62332,62327,62328,62321,62613,62411,63024,63018,65737,64203,64227,63795,64125,64159,58695,58960,58663,58666,64213,64216); INSERT INTO `spelldifficulty_dbc` (`ID`,`DifficultySpellID_1`,`DifficultySpellID_2`,`DifficultySpellID_3`,`DifficultySpellID_4`) VALUES From 675135e19bf7d928d3b61983c7043b155e5167c7 Mon Sep 17 00:00:00 2001 From: Tereneckla Date: Fri, 31 Oct 2025 14:09:38 +0000 Subject: [PATCH 10/10] fix(Core/Spells): only include the targets size for some GroundEffects (#23478) --- src/server/game/AI/CreatureAI.cpp | 2 +- .../game/AI/ScriptedAI/ScriptedCreature.cpp | 2 +- .../game/AI/ScriptedAI/ScriptedEscortAI.cpp | 4 ++-- .../game/AI/ScriptedAI/ScriptedFollowerAI.cpp | 4 ++-- src/server/game/Entities/Creature/Creature.cpp | 4 ++-- .../game/Entities/GameObject/GameObject.h | 2 +- src/server/game/Entities/Object/Object.cpp | 18 +++++++++++------- src/server/game/Entities/Object/Object.h | 6 +++--- .../game/Grids/Notifiers/GridNotifiers.h | 7 +++---- .../Northrend/Naxxramas/boss_gothik.cpp | 2 +- 10 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp index f338e77895..dce728c142 100644 --- a/src/server/game/AI/CreatureAI.cpp +++ b/src/server/game/AI/CreatureAI.cpp @@ -182,7 +182,7 @@ void CreatureAI::MoveInLineOfSight(Unit* who) if (me->IsMoveInLineOfSightDisabled()) if (me->GetCreatureType() == CREATURE_TYPE_NON_COMBAT_PET || // nothing more to do, return !who->IsInCombat() || // if not in combat, nothing more to do - !me->IsWithinDist(who, ATTACK_DISTANCE, true, false)) // if in combat and in dist - neutral to all can actually assist other creatures + !me->IsWithinDist(who, ATTACK_DISTANCE, true, false, false)) // if in combat and in dist - neutral to all can actually assist other creatures return; if (me->HasReactState(REACT_AGGRESSIVE) && me->CanStartAttack(who)) diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp index 7a009d0aed..ca354f0938 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp @@ -566,7 +566,7 @@ Player* ScriptedAI::SelectTargetFromPlayerList(float maxdist, uint32 excludeAura std::vector tList; for(Map::PlayerList::const_iterator itr = pList.begin(); itr != pList.end(); ++itr) { - if (!me->IsWithinDistInMap(itr->GetSource(), maxdist, true, false) || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster()) + if (!me->IsWithinDistInMap(itr->GetSource(), maxdist, true, false, false) || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster()) continue; if (excludeAura && itr->GetSource()->HasAura(excludeAura)) continue; diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp index 7fe07cf1e4..85fbf8a906 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp @@ -218,10 +218,10 @@ bool npc_escortAI::IsPlayerOrGroupInRange() { for (GroupReference* groupRef = group->GetFirstMember(); groupRef != nullptr; groupRef = groupRef->next()) if (Player* member = groupRef->GetSource()) - if (me->IsWithinDistInMap(member, GetMaxPlayerDistance(), true, false)) + if (me->IsWithinDistInMap(member, GetMaxPlayerDistance(), true, false, false)) return true; } - else if (me->IsWithinDistInMap(player, GetMaxPlayerDistance(), true, false)) + else if (me->IsWithinDistInMap(player, GetMaxPlayerDistance(), true, false, false)) return true; } diff --git a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp index 019bb58b5d..c43f81ff4f 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp @@ -202,7 +202,7 @@ void FollowerAI::UpdateAI(uint32 uiDiff) { Player* member = groupRef->GetSource(); - if (member && me->IsWithinDistInMap(member, MAX_PLAYER_DISTANCE, true, false)) + if (member && me->IsWithinDistInMap(member, MAX_PLAYER_DISTANCE, true, false, false)) { bIsMaxRangeExceeded = false; break; @@ -211,7 +211,7 @@ void FollowerAI::UpdateAI(uint32 uiDiff) } else { - if (me->IsWithinDistInMap(player, MAX_PLAYER_DISTANCE, true, false)) + if (me->IsWithinDistInMap(player, MAX_PLAYER_DISTANCE, true, false, false)) bIsMaxRangeExceeded = false; } } diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 19db155907..f092428332 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -771,7 +771,7 @@ void Creature::Update(uint32 diff) } Unit* owner = GetCharmerOrOwner(); - if (IsCharmed() && !IsWithinDistInMap(owner, GetMap()->GetVisibilityRange(), true, false)) + if (IsCharmed() && !IsWithinDistInMap(owner, GetMap()->GetVisibilityRange(), true, false, false)) { RemoveCharmAuras(); } @@ -1944,7 +1944,7 @@ bool Creature::CanStartAttack(Unit const* who) const if (!_IsTargetAcceptable(who)) return false; - if (IsNeutralToAll() || !IsWithinDistInMap(who, GetAggroRange(who) + m_CombatDistance, true, false)) // pussywizard: +m_combatDistance for turrets and similar + if (IsNeutralToAll() || !IsWithinDistInMap(who, GetAggroRange(who) + m_CombatDistance, true, false, false)) // pussywizard: +m_combatDistance for turrets and similar return false; if (!CanCreatureAttack(who)) diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 5ca9ad61ee..13be19952b 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -414,7 +414,7 @@ private: void UpdatePackedRotation(); //! Object distance/size - overridden from Object::_IsWithinDist. Needs to take in account proper GO size. - bool _IsWithinDist(WorldObject const* obj, float dist2compare, bool /*is3D*/, bool /*useBoundingRadius = true*/) const override + bool _IsWithinDist(WorldObject const* obj, float dist2compare, bool /*is3D*/, bool /*incOwnRadius = true*/, bool /*incTargetRadius = true*/) const override { //! Following check does check 3d distance dist2compare += obj->GetObjectSize(); diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 15d9906dd5..142ff909b7 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1232,10 +1232,14 @@ float WorldObject::GetDistanceZ(WorldObject const* obj) const return (dist > 0 ? dist : 0); } -bool WorldObject::_IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D, bool useBoundingRadius) const +bool WorldObject::_IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D, bool incOwnRadius, bool incTargetRadius) const { - float sizefactor = useBoundingRadius ? GetObjectSize() + obj->GetObjectSize() : 0.0f; - float maxdist = dist2compare + sizefactor; + float maxdist = dist2compare; + if (incOwnRadius) + maxdist += GetObjectSize(); + + if (incTargetRadius) + maxdist += obj->GetObjectSize(); if (m_transport && obj->GetTransport() && obj->GetTransport()->GetGUID() == m_transport->GetGUID()) { @@ -1342,14 +1346,14 @@ bool WorldObject::IsWithinDist2d(const Position* pos, float dist) const } // use only if you will sure about placing both object at same map -bool WorldObject::IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D, bool useBoundingRadius) const +bool WorldObject::IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D, bool incOwnRadius, bool incTargetRadius) const { - return obj && _IsWithinDist(obj, dist2compare, is3D, useBoundingRadius); + return obj && _IsWithinDist(obj, dist2compare, is3D, incOwnRadius, incTargetRadius); } -bool WorldObject::IsWithinDistInMap(WorldObject const* obj, float dist2compare, bool is3D, bool useBoundingRadius) const +bool WorldObject::IsWithinDistInMap(WorldObject const* obj, float dist2compare, bool is3D, bool incOwnRadius, bool incTargetRadius) const { - return obj && IsInMap(obj) && InSamePhase(obj) && _IsWithinDist(obj, dist2compare, is3D, useBoundingRadius); + return obj && IsInMap(obj) && InSamePhase(obj) && _IsWithinDist(obj, dist2compare, is3D, incOwnRadius, incTargetRadius); } bool WorldObject::IsWithinLOS(float ox, float oy, float oz, VMAP::ModelIgnoreFlags ignoreFlags, LineOfSightChecks checks) const diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 0fd248d8a7..ae1ddbc171 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -541,8 +541,8 @@ public: [[nodiscard]] bool IsWithinDist2d(float x, float y, float dist) const; bool IsWithinDist2d(const Position* pos, float dist) const; // use only if you will sure about placing both object at same map - bool IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D = true, bool useBoundingRadius = true) const; - bool IsWithinDistInMap(WorldObject const* obj, float dist2compare, bool is3D = true, bool useBoundingRadius = true) const; + bool IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D = true, bool incOwnRadius = true, bool incTargetRadius = true) const; + bool IsWithinDistInMap(WorldObject const* obj, float dist2compare, bool is3D = true, bool incOwnRadius = true, bool incTargetRadius = true) const; [[nodiscard]] bool IsWithinLOS(float x, float y, float z, VMAP::ModelIgnoreFlags ignoreFlags = VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks = LINEOFSIGHT_ALL_CHECKS) const; [[nodiscard]] bool IsWithinLOSInMap(WorldObject const* obj, VMAP::ModelIgnoreFlags ignoreFlags = VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks = LINEOFSIGHT_ALL_CHECKS, Optional collisionHeight = { }, Optional combatReach = { }) const; [[nodiscard]] Position GetHitSpherePointFor(Position const& dest, Optional collisionHeight = { }, Optional combatReach = { }) const; @@ -770,7 +770,7 @@ private: uint16 m_notifyflags; uint16 m_executed_notifies; - virtual bool _IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D, bool useBoundingRadius = true) const; + virtual bool _IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D, bool incOwnRadius = true, bool incTargetRadius = true) const; bool CanNeverSee(WorldObject const* obj) const; virtual bool CanAlwaysSee(WorldObject const* /*obj*/) const { return false; } diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index b425abcc1a..d08645acdc 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -1092,10 +1092,9 @@ namespace Acore { return false; } - } - if (i_funit->_IsValidAttackTarget(u, _spellInfo, i_obj->IsDynamicObject() ? i_obj : nullptr) && i_obj->IsWithinDistInMap(u, i_range,true,false)) + if (i_funit->_IsValidAttackTarget(u, _spellInfo, i_obj->IsDynamicObject() ? i_obj : nullptr) && i_obj->IsWithinDistInMap(u, i_range,true,false, true)) return true; @@ -1192,7 +1191,7 @@ namespace Acore } bool operator()(Unit* u) { - if (!me->IsWithinDistInMap(u, m_range, true, false)) + if (!me->IsWithinDistInMap(u, m_range, true, false, false)) return false; if (!me->IsValidAttackTarget(u)) @@ -1218,7 +1217,7 @@ namespace Acore explicit NearestHostileUnitInAttackDistanceCheck(Creature const* creature, float dist) : me(creature), m_range(dist) {} bool operator()(Unit* u) { - if (!me->IsWithinDistInMap(u, m_range, true, false)) + if (!me->IsWithinDistInMap(u, m_range, true, false, false)) return false; if (!me->CanStartAttack(u)) diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp index b31d500e5f..f071424563 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp @@ -266,7 +266,7 @@ public: std::vector tList; for(Map::PlayerList::const_iterator itr = pList.begin(); itr != pList.end(); ++itr) { - if (!me->IsWithinDistInMap(itr->GetSource(), 200.0f, true, false) || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster()) + if (!me->IsWithinDistInMap(itr->GetSource(), 200.0f, true, false, false) || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster()) { continue; }