diff --git a/data/sql/updates/db_world/2025_11_08_01.sql b/data/sql/updates/db_world/2025_11_08_01.sql new file mode 100644 index 000000000..be643114a --- /dev/null +++ b/data/sql/updates/db_world/2025_11_08_01.sql @@ -0,0 +1,5 @@ +-- DB update 2025_11_08_00 -> 2025_11_08_01 +-- +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 17) AND (`SourceGroup` = 0) AND (`SourceEntry` = 40969) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 31) AND (`ConditionTarget` = 1) AND (`ConditionValue1` = 3) AND (`ConditionValue2` = 23689) AND (`ConditionValue3` = 0); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(17, 0, 40969, 0, 0, 31, 1, 3, 23689, 0, 0, 0, 0, '', 'Malister Frost Wand require Proto-Drake'); diff --git a/data/sql/updates/db_world/2025_11_08_02.sql b/data/sql/updates/db_world/2025_11_08_02.sql new file mode 100644 index 000000000..c751745a2 --- /dev/null +++ b/data/sql/updates/db_world/2025_11_08_02.sql @@ -0,0 +1,172 @@ +-- DB update 2025_11_08_01 -> 2025_11_08_02 +SET @BossXPMod = 7.5, + @FinalBossXPMod = 10; + +UPDATE `creature_template` SET `ExperienceModifier` = @BossXPMod WHERE `entry` IN ( +-- Utgarde Keep +23953, -- Prince Keleseth +30748, +24200, -- Skarvald the Constructor +31679, +24201, -- Dalronn the Controller +31656, +-- Azjol-Nerub +28684, -- Krik'thir the Gatewatcher +31612, +28921, -- Hadronox +31611, +-- Ahn'kahet: The Old Kingdom +29309, -- Elder Nadox +31456, +29308, -- Prince Taldaram +31469, +29310, -- Jedoga Shadowseeker +31465, +30258, -- Amanitar +31463, +-- The Nexus +26731, -- Grand Magus Telestra +30510, +26763, -- Anomalus +30529, +26794, -- Ormorok the Tree-Shaper +30532, +26796, -- Commander Stoutbeard +30398, +26798, -- Commander Kolurg +30397, +-- Drak'Tharon Keep +26630, -- Trollgore +31362, +26631, -- Novos the Summoner +31350, +-- 27483, -- King Dred, observed to not give as much experience as this +-- 31349, +-- The Violet Hold +29315, -- Erekem +31507, +29316, -- Moragg +31510, +29313, -- Ichoron +31508, +29266, -- Xevozz +31511, +29312, -- Lavanthor +31509, +29314, -- Zuramat the Obliterator +31512, +-- Gundrak +29304, -- Slad'ran +31370, +-- 29573, -- Drakkari Elemental, observed to not give as much experience as this +-- 31367, +29305, -- Moorabi +30530, +29932, -- Eck the Ferocious +-- Halls of Stone +27975, -- Maiden of Grief +31384, +27977, -- Krystallus +31381, +-- Halls of Lightning +28586, -- General Bjarngrim +31533, +28587, -- Volkhan +31536, +28546, -- Ionar +31537, +-- The Oculus +27654, -- Drakos the Interrogator +31558, +27447, -- Varos Cloudstrider +31559, +27655, -- Mage-Lord Urom +31560, +-- Utgarde Pinnacle +26668, -- Svala Sorrowgrave +30810, +26687, -- Gortok Palehoof +30774, +26693, -- Skadi the Ruthless +30807, +-- The Culling of Stratholme +26529, -- Meathook +31211, +26530, -- Salramm the Fleshcrafter +31212, +26532, -- Chrono-Lord Epoch +31215, +32273, -- Infinite Corruptor +32313, +-- Trial of the Champion +34705, -- Marshal Jacob Alerius +36088, +34702, -- Ambrose Boltspark +36082, +34701, -- Colosos +36083, +34657, -- Jaelyne Evensong +36086, +34703, -- Lana Stouthammer +36087, +35572, -- Mokra the Skullcrusher +36089, +35569, -- Eressea Dawnsinger +36085, +35571, -- Runok Wildmane +36090, +35570, -- Zul'tore +36091, +35617, -- Deathstalker Visceri +36084, +35119, -- Eadric the Pure +35518, +34928, -- Argent Confessor Paletress +35517, +-- The Forge of Souls +36497, -- Bronjahm +36498, +-- Pit of Saron +36494, -- Forgemaster Garfrost +37613, +36476, -- Ick +37627, +-- Halls of Reflection +38112, -- Falric +38599, +38113, -- Marwyn +38603 +); + +UPDATE `creature_template` SET `ExperienceModifier` = @FinalBossXPMod WHERE `entry` IN ( +23954, -- Ingvar the Plunderer, Utgarde Keep +31673, +29120, -- Anub'arak, Azjol-Nerub +31610, +29311, -- Herald Volazj, +31464, +26723, -- Keristrasza +30540, +26632, -- The Prophet Tharon'ja +31360, +31134, -- Cyanigosa +31506, +29306, -- Gal'darah +31368, +27978, -- Sjonnir The Ironshaper +31386, +28923, -- Loken +31538, +27656, -- Ley-Guardian Eregos +31561, +26861, -- King Ymiron +30788, +26533, -- Mal'Ganis +31217, +35451, -- The Black Knight, Trial of the Champion +35490, +36502, -- Devourer of Souls, Forge of Souls +37677, +36658, -- Scourgelord Tyrannus, Pit of Saron +36938 +); diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp index ec4dd204c..f840eb534 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp @@ -133,13 +133,13 @@ struct boss_anub_arak : public BossAI DoCastSelf(SPELL_IMPALE_PERIODIC, true); ++_submergePhase; + events.Reset(); ScheduleSubmerged(); } } void ScheduleEmerged() { - events.Reset(); events.SetPhase(PHASE_EMERGED); events.ScheduleEvent(EVENT_CARRION_BEETLES, 6500ms, 0, PHASE_EMERGED); events.ScheduleEvent(EVENT_LEECHING_SWARM, 20s, 0, PHASE_EMERGED); @@ -148,7 +148,6 @@ struct boss_anub_arak : public BossAI void ScheduleSubmerged() { - events.Reset(); events.SetPhase(PHASE_SUBMERGED); events.ScheduleEvent(EVENT_EMERGE, 60s, 0, PHASE_SUBMERGED); @@ -209,14 +208,13 @@ struct boss_anub_arak : public BossAI } } - void JustEngagedWith(Unit* who) override + void JustEngagedWith(Unit* /*who*/) override { - BossAI::JustEngagedWith(who); Talk(SAY_AGGRO); instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT); events.SetPhase(PHASE_EMERGED); - events.ScheduleEvent(EVENT_CLOSE_DOORS, 5s); + events.ScheduleEvent(EVENT_CLOSE_DOORS, 5s, 0, PHASE_EMERGED); ScheduleEmerged(); // set up world triggers @@ -288,7 +286,8 @@ struct boss_anub_arak : public BossAI if (_remainingLargeSummonsBeforeEmerge == 0) { events.Reset(); - events.ScheduleEvent(EVENT_EMERGE, 5s); + events.SetPhase(PHASE_SUBMERGED); + events.ScheduleEvent(EVENT_EMERGE, 5s, 0, PHASE_SUBMERGED); } break; } @@ -333,10 +332,10 @@ struct boss_anub_arak : public BossAI DoCastSelf(SPELL_SELF_ROOT, true); me->DisableRotate(true); me->SendMovementFlagUpdate(); - events.ScheduleEvent(EVENT_ENABLE_ROTATE, 3300ms); + events.ScheduleEvent(EVENT_ENABLE_ROTATE, 3300ms, 0, PHASE_EMERGED); DoCast(target, SPELL_POUND); } - events.ScheduleEvent(EVENT_POUND, 18s); + events.ScheduleEvent(EVENT_POUND, 18s, 0, PHASE_EMERGED); break; case EVENT_ENABLE_ROTATE: me->RemoveAurasDueToSpell(SPELL_SELF_ROOT); diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp index 94e9f2dfa..b36e991d5 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp @@ -33,7 +33,6 @@ enum Yells enum Spells { SPELL_CURSE_OF_LIFE = 49527, - SPELL_RAIN_OF_FIRE = 49518, SPELL_SHADOW_VOLLEY = 49528, // flesh spells @@ -56,7 +55,6 @@ enum Misc ACTION_TURN_BONES = 1, EVENT_SPELL_CURSE_OF_LIFE = 1, - EVENT_SPELL_RAIN_OF_FIRE = 2, EVENT_SPELL_SHADOW_VOLLEY = 3, EVENT_SPELL_EYE_BEAM = 4, EVENT_SPELL_LIGHTNING_BREATH = 5, @@ -97,7 +95,6 @@ public: Talk(SAY_AGGRO); BossAI::JustEngagedWith(who); events.ScheduleEvent(EVENT_SPELL_CURSE_OF_LIFE, 5s); - events.ScheduleEvent(EVENT_SPELL_RAIN_OF_FIRE, 14s, 18s); events.ScheduleEvent(EVENT_SPELL_SHADOW_VOLLEY, 8s, 10s); events.ScheduleEvent(EVENT_SPELL_TURN_FLESH, 1s); } @@ -146,17 +143,11 @@ public: switch (events.ExecuteEvent()) { case EVENT_SPELL_CURSE_OF_LIFE: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true)) - me->CastSpell(target, SPELL_CURSE_OF_LIFE, false); + DoCastRandomTarget(SPELL_CURSE_OF_LIFE, 0, 30.0f, false); events.ScheduleEvent(EVENT_SPELL_CURSE_OF_LIFE, 13s); break; - case EVENT_SPELL_RAIN_OF_FIRE: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true)) - me->CastSpell(target, SPELL_RAIN_OF_FIRE, false); - events.ScheduleEvent(EVENT_SPELL_RAIN_OF_FIRE, 16s); - break; case EVENT_SPELL_SHADOW_VOLLEY: - me->CastSpell(me, SPELL_SHADOW_VOLLEY, false); + DoCastAOE(SPELL_SHADOW_VOLLEY); events.ScheduleEvent(EVENT_SPELL_SHADOW_VOLLEY, 9s); break; case EVENT_SPELL_TURN_FLESH: @@ -173,9 +164,8 @@ public: events.ScheduleEvent(EVENT_SPELL_TURN_FLESH, 1s); break; case EVENT_TURN_FLESH_REAL: - me->CastSpell(me, SPELL_DUMMY, true); - - me->GetMotionMaster()->MoveChase(me->GetVictim()); + DoCastSelf(SPELL_DUMMY, true); + me->ResumeChasingVictim(); events.ScheduleEvent(EVENT_SPELL_EYE_BEAM, 11s); events.ScheduleEvent(EVENT_SPELL_LIGHTNING_BREATH, 3s); events.ScheduleEvent(EVENT_SPELL_POISON_CLOUD, 6s); @@ -199,7 +189,6 @@ public: me->CastSpell(me, SPELL_CLEAR_GIFT, true); events.Reset(); events.ScheduleEvent(EVENT_SPELL_CURSE_OF_LIFE, 1s); - events.ScheduleEvent(EVENT_SPELL_RAIN_OF_FIRE, 12s, 14s); events.ScheduleEvent(EVENT_SPELL_SHADOW_VOLLEY, 8s, 10s); break; } @@ -249,7 +238,6 @@ class spell_tharon_ja_dummy_aura : public AuraScript { PreventDefaultAction(); GetUnitOwner()->GetThreatMgr().ResetAllThreat(); - GetUnitOwner()->GetMotionMaster()->Clear(); GetUnitOwner()->CastSpell((Unit*)nullptr, SPELL_TURN_BONES, false); GetUnitOwner()->GetAI()->DoAction(ACTION_TURN_BONES); }