From 90866f1d284c1a63e96da7d1221b53483e1ce951 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 22 Mar 2025 05:03:22 -0300 Subject: [PATCH 01/26] fix(Scripts/SunwellPlateau): Implement twins boundary wipe mechanic (#21746) --- .../SunwellPlateau/boss_eredar_twins.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp index 4bf78c4ab..489749277 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp @@ -50,6 +50,7 @@ enum Spells SPELL_ENRAGE = 46587, SPELL_EMPOWER = 45366, SPELL_DARK_FLAME = 45345, + SPELL_FIREBLAST = 45232, //Lady Sacrolash spells SPELL_SHADOWFORM = 45455, @@ -78,6 +79,21 @@ struct boss_sacrolash : public BossAI { boss_sacrolash(Creature* creature) : BossAI(creature, DATA_EREDAR_TWINS), _isSisterDead(false) {} + bool CheckInRoom() override + { + if (me->GetExactDist2d(me->GetHomePosition()) >= 50.f) + { + DoCastAOE(SPELL_FIREBLAST, true); + + if (Creature* alythess = instance->GetCreature(DATA_ALYTHESS)) + alythess->AI()->DoCastAOE(SPELL_FIREBLAST, true); + + return false; + } + + return true; + } + void Reset() override { DoCastSelf(SPELL_SHADOWFORM, true); From 6ed7e0fe5cccc478a1b56fbdedfc4f698d33bc4b Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Sat, 22 Mar 2025 09:04:00 +0100 Subject: [PATCH 02/26] fix(Scripts/SunwellPlateau): Felmyst Strafe strafe spells (#21745) Co-authored-by: killerwife --- .../rev_1742570511379893181.sql | 50 +++++++++++++++++++ .../game/Spells/SpellInfoCorrections.cpp | 13 +++++ .../SunwellPlateau/boss_felmyst.cpp | 44 ++++++++-------- 3 files changed, 87 insertions(+), 20 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1742570511379893181.sql diff --git a/data/sql/updates/pending_db_world/rev_1742570511379893181.sql b/data/sql/updates/pending_db_world/rev_1742570511379893181.sql new file mode 100644 index 000000000..aa9062212 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1742570511379893181.sql @@ -0,0 +1,50 @@ +-- +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` IN (45635, 45635, 45635, 45635, 45635, 45635, 45623, 45635, 45623, 45635, 45633, 45633, 45633, 45622, 45633, 45633, 45633, 45622, 45633, 45633, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45586, 45585, 45586, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585)) AND (`SourceId` = 0) AND (`ConditionTypeOrReference` = 31) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 3) AND (`ConditionValue2` = 23472) AND (`ConditionValue3` IN (54796, 54792, 54788, 54785, 54781, 54777, 54774, 54774, 54794, 54794, 54773, 54789, 54602, 54798, 54798, 54790, 54808, 54608, 54608, 54772, 54800, 54603, 54795, 54597, 54782, 54793, 54804, 54802, 54783, 54783, 54435, 54435, 54797, 54775, 54779, 54769, 54593, 54806, 54778, 54595, 54776, 54801, 54771, 54623, 54791, 54784, 54770)); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 45585, 0, 0, 31, 0, 3, 23472, 54435, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 1, 31, 0, 3, 23472, 54593, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 2, 31, 0, 3, 23472, 54595, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 3, 31, 0, 3, 23472, 54597, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 4, 31, 0, 3, 23472, 54603, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 5, 31, 0, 3, 23472, 54623, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 6, 31, 0, 3, 23472, 54769, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 7, 31, 0, 3, 23472, 54770, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 8, 31, 0, 3, 23472, 54771, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 9, 31, 0, 3, 23472, 54775, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 10, 31, 0, 3, 23472, 54776, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 11, 31, 0, 3, 23472, 54778, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 12, 31, 0, 3, 23472, 54779, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 13, 31, 0, 3, 23472, 54782, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 14, 31, 0, 3, 23472, 54783, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 15, 31, 0, 3, 23472, 54784, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 16, 31, 0, 3, 23472, 54791, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 17, 31, 0, 3, 23472, 54793, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 18, 31, 0, 3, 23472, 54795, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 19, 31, 0, 3, 23472, 54797, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 20, 31, 0, 3, 23472, 54800, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 21, 31, 0, 3, 23472, 54801, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 22, 31, 0, 3, 23472, 54802, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 23, 31, 0, 3, 23472, 54804, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45585, 0, 24, 31, 0, 3, 23472, 54806, 0, 0, 0, '', 'Felmyst - Strafe (Top) - target World Trigger '), +(13, 1, 45586, 0, 0, 31, 0, 3, 23472, 54435, 0, 0, 0, '', 'Felmyst - Strafe (Trigger Top) - target World Trigger '), +(13, 1, 45586, 0, 1, 31, 0, 3, 23472, 54783, 0, 0, 0, '', 'Felmyst - Strafe (Trigger Top) - target World Trigger '), +(13, 1, 45622, 0, 0, 31, 0, 3, 23472, 54608, 0, 0, 0, '', 'Felmyst - Strafe (Trigger Middle) - target World Trigger '), +(13, 1, 45622, 0, 1, 31, 0, 3, 23472, 54798, 0, 0, 0, '', 'Felmyst - Strafe (Trigger Middle) - target World Trigger '), +(13, 1, 45623, 0, 0, 31, 0, 3, 23472, 54774, 0, 0, 0, '', 'Felmyst - Strafe (Trigger Bottom) - target World Trigger '), +(13, 1, 45623, 0, 1, 31, 0, 3, 23472, 54794, 0, 0, 0, '', 'Felmyst - Strafe (Trigger Bottom) - target World Trigger '), +(13, 1, 45633, 0, 0, 31, 0, 3, 23472, 54602, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '), +(13, 1, 45633, 0, 1, 31, 0, 3, 23472, 54608, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '), +(13, 1, 45633, 0, 2, 31, 0, 3, 23472, 54772, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '), +(13, 1, 45633, 0, 3, 31, 0, 3, 23472, 54773, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '), +(13, 1, 45633, 0, 4, 31, 0, 3, 23472, 54789, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '), +(13, 1, 45633, 0, 5, 31, 0, 3, 23472, 54790, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '), +(13, 1, 45633, 0, 6, 31, 0, 3, 23472, 54798, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '), +(13, 1, 45633, 0, 7, 31, 0, 3, 23472, 54808, 0, 0, 0, '', 'Felmyst - Strafe (Middle) - target World Trigger '), +(13, 1, 45635, 0, 0, 31, 0, 3, 23472, 54774, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '), +(13, 1, 45635, 0, 1, 31, 0, 3, 23472, 54777, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '), +(13, 1, 45635, 0, 2, 31, 0, 3, 23472, 54781, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '), +(13, 1, 45635, 0, 3, 31, 0, 3, 23472, 54785, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '), +(13, 1, 45635, 0, 4, 31, 0, 3, 23472, 54788, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '), +(13, 1, 45635, 0, 5, 31, 0, 3, 23472, 54792, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '), +(13, 1, 45635, 0, 6, 31, 0, 3, 23472, 54794, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '), +(13, 1, 45635, 0, 7, 31, 0, 3, 23472, 54796, 0, 0, 0, '', 'Felmyst - Strafe (Bottom) - target World Trigger '); diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index 1252b05b0..9ec285179 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -4885,6 +4885,19 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Effects[EFFECT_2].TargetA = SpellImplicitTargetInfo(TARGET_UNIT_TARGET_ENEMY); }); + // Felmyst Strafe (Top) + ApplySpellFix({ 45585 }, [](SpellInfo* spellInfo) + { + spellInfo->MaxAffectedTargets = 3; + spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_70_YARDS); + }); + + // Felmyst Strafe (Middle, Bottom) + ApplySpellFix({ 45633, 45635 }, [](SpellInfo* spellInfo) + { + spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_70_YARDS); + }); + for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) { SpellInfo* spellInfo = mSpellInfoMap[i]; diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp index 00e91d584..6bdfaaff4 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp @@ -49,6 +49,12 @@ enum Spells SPELL_ENCAPSULATE_CHANNEL = 45661, //Flight phase + SPELL_TRIGGER_TOP_STRAFE = 45586, + SPELL_TRIGGER_MIDDLE_STRAFE = 45622, + SPELL_TRIGGER_BOTTOM_STRAFE = 45623, + SPELL_STRAFE_TOP = 45585, + SPELL_STRAFE_MIDDLE = 45633, + SPELL_STRAFE_BOTTOM = 45635, SPELL_SUMMON_DEMONIC_VAPOR = 45391, SPELL_DEMONIC_VAPOR_SPAWN_TRIGGER = 45388, // Triggers visual beam SPELL_DEMONIC_VAPOR_PERIODIC = 45411, // Spawns cloud and deals damage @@ -110,18 +116,17 @@ public: bool Execute(uint64 /*execTime*/, uint32 /*diff*/) override { - std::list creatureList; - _caster->GetCreaturesWithEntryInRange(creatureList, 70.0f, NPC_FOG_TRIGGER); - for (auto const& creature : creatureList) + switch (_currentLane) { - if (_caster->GetExactDist2d(creature) <= 11.0f) - { - creature->CastSpell(creature, SPELL_FOG_OF_CORRUPTION, true); - continue; - } - - if (!_currentLane && creature->GetPositionX() > 1510.0f) - creature->CastSpell(creature, SPELL_FOG_OF_CORRUPTION, true); + case 0: // top + _caster->CastSpell(_caster, SPELL_STRAFE_TOP, true); + break; + case 1: // middle + _caster->CastSpell(_caster, SPELL_STRAFE_MIDDLE, true); + break; + case 2: // bottom + _caster->CastSpell(_caster, SPELL_STRAFE_BOTTOM, true); + break; } return true; } @@ -183,6 +188,12 @@ struct boss_felmyst : public BossAI Talk(YELL_KILL); } + void SpellHitTarget(Unit* target, const SpellInfo* spell) override + { + if (spell->Id == SPELL_STRAFE_TOP || spell->Id == SPELL_STRAFE_MIDDLE || spell->Id == SPELL_STRAFE_BOTTOM) + target->CastSpell(target, SPELL_FOG_OF_CORRUPTION, true); + } + void JustDied(Unit* killer) override { BossAI::JustDied(killer); @@ -297,15 +308,8 @@ struct boss_felmyst : public BossAI case POINT_LANE: Talk(EMOTE_BREATH); me->m_Events.AddEventAtOffset([&] { - me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(0)); - me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(500)); - me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(1000)); - me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(1500)); - me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(2000)); - me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(2500)); - me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(3000)); - me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(3500)); - me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(4000)); + for (uint8 i = 0; i < 16; ++i) + me->m_Events.AddEvent(new CorruptTriggers(me, _currentLane), me->m_Events.CalculateTime(i*250)); }, 5s); me->m_Events.AddEventAtOffset([&] { From ca0b8514878426a430e075a76f2150f7ec8d1c78 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 22 Mar 2025 08:04:20 +0000 Subject: [PATCH 03/26] chore(DB): import pending files Referenced commit(s): 90866f1d284c1a63e96da7d1221b53483e1ce951 --- .../rev_1742570511379893181.sql => db_world/2025_03_22_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1742570511379893181.sql => db_world/2025_03_22_00.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1742570511379893181.sql b/data/sql/updates/db_world/2025_03_22_00.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1742570511379893181.sql rename to data/sql/updates/db_world/2025_03_22_00.sql index aa9062212..05fa260eb 100644 --- a/data/sql/updates/pending_db_world/rev_1742570511379893181.sql +++ b/data/sql/updates/db_world/2025_03_22_00.sql @@ -1,3 +1,4 @@ +-- DB update 2025_03_21_00 -> 2025_03_22_00 -- DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` IN (45635, 45635, 45635, 45635, 45635, 45635, 45623, 45635, 45623, 45635, 45633, 45633, 45633, 45622, 45633, 45633, 45633, 45622, 45633, 45633, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45586, 45585, 45586, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585, 45585)) AND (`SourceId` = 0) AND (`ConditionTypeOrReference` = 31) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 3) AND (`ConditionValue2` = 23472) AND (`ConditionValue3` IN (54796, 54792, 54788, 54785, 54781, 54777, 54774, 54774, 54794, 54794, 54773, 54789, 54602, 54798, 54798, 54790, 54808, 54608, 54608, 54772, 54800, 54603, 54795, 54597, 54782, 54793, 54804, 54802, 54783, 54783, 54435, 54435, 54797, 54775, 54779, 54769, 54593, 54806, 54778, 54595, 54776, 54801, 54771, 54623, 54791, 54784, 54770)); INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES From ae76703b755cbb73efc76c768a8859bf140f78e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E9=B9=BF?= <18535853+PkllonG@users.noreply.github.com> Date: Sat, 22 Mar 2025 16:13:08 +0800 Subject: [PATCH 04/26] fix(Scripts/SunwellPlateau): M'Uru ability DARKNESS now spawns dispellable skulls (#21747) --- src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp index 7638efe9a..df02db644 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp @@ -293,7 +293,7 @@ class spell_entropius_void_zone_visual_aura : public AuraScript void Register() override { OnEffectApply += AuraEffectApplyFn(spell_entropius_void_zone_visual_aura::HandleApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - OnEffectRemove += AuraEffectRemoveFn(spell_entropius_void_zone_visual_aura::HandleApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + OnEffectRemove += AuraEffectRemoveFn(spell_entropius_void_zone_visual_aura::HandleRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); } }; From 0210f617c191591f8ffe0c958eb957c978ec4551 Mon Sep 17 00:00:00 2001 From: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com> Date: Sat, 22 Mar 2025 13:54:21 +0100 Subject: [PATCH 05/26] fix(Creature/Formations) Volatile Fiend Packs now are in formation. (#21750) --- .../pending_db_world/Volatile_Fiend_Packs.sql | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 data/sql/updates/pending_db_world/Volatile_Fiend_Packs.sql diff --git a/data/sql/updates/pending_db_world/Volatile_Fiend_Packs.sql b/data/sql/updates/pending_db_world/Volatile_Fiend_Packs.sql new file mode 100644 index 000000000..95702495f --- /dev/null +++ b/data/sql/updates/pending_db_world/Volatile_Fiend_Packs.sql @@ -0,0 +1,20 @@ + +-- Pack after Eredar Twins +DELETE FROM `creature_formations` WHERE `leaderGUID` = 47607; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(47607, 47607, 0, 0, 3, 0, 0), +(47607, 47313, 0, 0, 3, 0, 0), +(47607, 47471, 0, 0, 3, 0, 0), +(47607, 47768, 0, 0, 3, 0, 0), +(47607, 47608, 0, 0, 3, 0, 0), +(47607, 47769, 0, 0, 3, 0, 0); + +-- Pack before M'uru +DELETE FROM `creature_formations` WHERE `leaderGUID` = 47470; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(47470, 47470, 0, 0, 3, 0, 0), +(47470, 47475, 0, 0, 3, 0, 0), +(47470, 47578, 0, 0, 3, 0, 0), +(47470, 47875, 0, 0, 3, 0, 0), +(47470, 47897, 0, 0, 3, 0, 0), +(47470, 47884, 0, 0, 3, 0, 0); From 8acbd9a8898632a5f9c8ea9478f0614e9c8432eb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 22 Mar 2025 12:55:18 +0000 Subject: [PATCH 06/26] chore(DB): import pending files Referenced commit(s): 0210f617c191591f8ffe0c958eb957c978ec4551 --- .../Volatile_Fiend_Packs.sql => db_world/2025_03_22_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/Volatile_Fiend_Packs.sql => db_world/2025_03_22_01.sql} (94%) diff --git a/data/sql/updates/pending_db_world/Volatile_Fiend_Packs.sql b/data/sql/updates/db_world/2025_03_22_01.sql similarity index 94% rename from data/sql/updates/pending_db_world/Volatile_Fiend_Packs.sql rename to data/sql/updates/db_world/2025_03_22_01.sql index 95702495f..87951d909 100644 --- a/data/sql/updates/pending_db_world/Volatile_Fiend_Packs.sql +++ b/data/sql/updates/db_world/2025_03_22_01.sql @@ -1,3 +1,4 @@ +-- DB update 2025_03_22_00 -> 2025_03_22_01 -- Pack after Eredar Twins DELETE FROM `creature_formations` WHERE `leaderGUID` = 47607; From e23e4dfd52eeeb8a999fb9b869dc0103d003bfb1 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 22 Mar 2025 10:29:55 -0300 Subject: [PATCH 07/26] fix(Scripts/SunwellPlateau): Fix twin emotes in phase 2 (#21751) --- .../SunwellPlateau/boss_eredar_twins.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp index 489749277..728b31705 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp @@ -120,7 +120,11 @@ struct boss_sacrolash : public BossAI Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 100.0f); if (!target) target = me->GetVictim(); - me->CastSpell(target, SPELL_CONFLAGRATION, false); + + DoCast(target, SPELL_CONFLAGRATION); + + if (Creature* alythess = instance->GetCreature(DATA_ALYTHESS)) + alythess->AI()->Talk(EMOTE_CONFLAGRATION, target); }, 30s, 35s); } } @@ -221,6 +225,10 @@ struct boss_alythess : public BossAI if (!target) target = me->GetVictim(); DoCast(target, SPELL_SHADOW_NOVA); + + if (Creature * sacrolash = instance->GetCreature(DATA_SACROLASH)) + sacrolash->AI()->Talk(EMOTE_SHADOW_NOVA, target); + }, 30s, 35s); } } From 62ca88a2b488b1cebd9c8df09cf594cf62769aab Mon Sep 17 00:00:00 2001 From: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com> Date: Sat, 22 Mar 2025 17:16:18 +0100 Subject: [PATCH 08/26] fix(DB/Creature) Dark Fiends now despawn when dispelled. (#21749) --- .../pending_db_world/Dark_Fiend_Dsp_Desp.sql | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 data/sql/updates/pending_db_world/Dark_Fiend_Dsp_Desp.sql diff --git a/data/sql/updates/pending_db_world/Dark_Fiend_Dsp_Desp.sql b/data/sql/updates/pending_db_world/Dark_Fiend_Dsp_Desp.sql new file mode 100644 index 000000000..1e015a6ef --- /dev/null +++ b/data/sql/updates/pending_db_world/Dark_Fiend_Dsp_Desp.sql @@ -0,0 +1,14 @@ + +-- Update Comments and row 7 added. +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 25744; + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 25744); +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 +(25744, 0, 0, 1, 37, 0, 100, 512, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - On Initialize - Set Reactstate Passive'), +(25744, 0, 1, 2, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 11, 45934, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - On Initialize - Cast \'Dark Fiend\''), +(25744, 0, 2, 3, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 11, 45936, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - On Initialize - Cast \'Dark Fiend\''), +(25744, 0, 3, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 42, 1, 100, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - On Initialize - Set Invincibility Hp 1'), +(25744, 0, 4, 0, 60, 0, 100, 1, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 21, 50, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - On Update - Start Attacking (No Repeat)'), +(25744, 0, 5, 6, 9, 0, 100, 1, 0, 0, 0, 0, 0, 4, 11, 45944, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - Within 0-4 Range - Cast \'Dark Fiend\' (No Repeat)'), +(25744, 0, 6, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - Within 0-0 Range - Despawn Instant (No Repeat)'), +(25744, 0, 7, 0, 23, 0, 100, 512, 45934, 0, 500, 500, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Fiend - On Aura \'Dark Fiend\' - Despawn Instant'); From d5bee6e2a359564918f62124f36205905ae56a81 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 22 Mar 2025 16:17:17 +0000 Subject: [PATCH 09/26] chore(DB): import pending files Referenced commit(s): 62ca88a2b488b1cebd9c8df09cf594cf62769aab --- .../Dark_Fiend_Dsp_Desp.sql => db_world/2025_03_22_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/Dark_Fiend_Dsp_Desp.sql => db_world/2025_03_22_02.sql} (97%) diff --git a/data/sql/updates/pending_db_world/Dark_Fiend_Dsp_Desp.sql b/data/sql/updates/db_world/2025_03_22_02.sql similarity index 97% rename from data/sql/updates/pending_db_world/Dark_Fiend_Dsp_Desp.sql rename to data/sql/updates/db_world/2025_03_22_02.sql index 1e015a6ef..5f8fca51d 100644 --- a/data/sql/updates/pending_db_world/Dark_Fiend_Dsp_Desp.sql +++ b/data/sql/updates/db_world/2025_03_22_02.sql @@ -1,3 +1,4 @@ +-- DB update 2025_03_22_01 -> 2025_03_22_02 -- Update Comments and row 7 added. UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 25744; From 4e9148799f7eca6accc6b599b5103d4a81e6c442 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Mon, 24 Mar 2025 14:16:22 -0300 Subject: [PATCH 10/26] =?UTF-8?q?fix(Scripts/SunwellPlateau):=20Remove=20d?= =?UTF-8?q?espawn=20on=20evade=20flag=20from=20KJ=20and=E2=80=A6=20(#21753?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/sql/updates/pending_db_world/rev_1742696079168623800.sql | 2 ++ .../scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp | 1 + 2 files changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1742696079168623800.sql diff --git a/data/sql/updates/pending_db_world/rev_1742696079168623800.sql b/data/sql/updates/pending_db_world/rev_1742696079168623800.sql new file mode 100644 index 000000000..0a55b677b --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1742696079168623800.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `flags_extra` = `flags_extra` &~2147483648 WHERE `entry` = 25315; diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp index cd2ab0e1a..0fbfb4b8c 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp @@ -450,6 +450,7 @@ struct boss_kiljaeden : public BossAI if (me->GetReactState() == REACT_PASSIVE) return; ScriptedAI::EnterEvadeMode(why); + me->DespawnOrUnsummon(); } void AttackStart(Unit* who) override From 28bf680a9939f7cd5a951f8f2cbd3cdff8c28b2c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Mar 2025 17:17:24 +0000 Subject: [PATCH 11/26] chore(DB): import pending files Referenced commit(s): 4e9148799f7eca6accc6b599b5103d4a81e6c442 --- .../rev_1742696079168623800.sql => db_world/2025_03_24_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1742696079168623800.sql => db_world/2025_03_24_00.sql} (69%) diff --git a/data/sql/updates/pending_db_world/rev_1742696079168623800.sql b/data/sql/updates/db_world/2025_03_24_00.sql similarity index 69% rename from data/sql/updates/pending_db_world/rev_1742696079168623800.sql rename to data/sql/updates/db_world/2025_03_24_00.sql index 0a55b677b..03dacdb67 100644 --- a/data/sql/updates/pending_db_world/rev_1742696079168623800.sql +++ b/data/sql/updates/db_world/2025_03_24_00.sql @@ -1,2 +1,3 @@ +-- DB update 2025_03_22_02 -> 2025_03_24_00 -- UPDATE `creature_template` SET `flags_extra` = `flags_extra` &~2147483648 WHERE `entry` = 25315; From ac927769fcdf62b92ac0bfe42e0e9454b84ee781 Mon Sep 17 00:00:00 2001 From: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com> Date: Tue, 25 Mar 2025 14:09:48 +0100 Subject: [PATCH 12/26] fix(DB/Creature) Eredar Twins should be immune to taunt. (#21770) --- data/sql/updates/pending_db_world/Twins_Taunt_Immune.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/Twins_Taunt_Immune.sql diff --git a/data/sql/updates/pending_db_world/Twins_Taunt_Immune.sql b/data/sql/updates/pending_db_world/Twins_Taunt_Immune.sql new file mode 100644 index 000000000..a79933d7a --- /dev/null +++ b/data/sql/updates/pending_db_world/Twins_Taunt_Immune.sql @@ -0,0 +1,3 @@ + +-- Taunt Immune +UPDATE `creature_template` SET `flags_extra` = `flags_extra`|256 WHERE `entry` IN (25166, 25165); From c9062612098c76d36ff64972a1a485da4bf8c198 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 25 Mar 2025 13:10:46 +0000 Subject: [PATCH 13/26] chore(DB): import pending files Referenced commit(s): ac927769fcdf62b92ac0bfe42e0e9454b84ee781 --- .../Twins_Taunt_Immune.sql => db_world/2025_03_25_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/Twins_Taunt_Immune.sql => db_world/2025_03_25_00.sql} (72%) diff --git a/data/sql/updates/pending_db_world/Twins_Taunt_Immune.sql b/data/sql/updates/db_world/2025_03_25_00.sql similarity index 72% rename from data/sql/updates/pending_db_world/Twins_Taunt_Immune.sql rename to data/sql/updates/db_world/2025_03_25_00.sql index a79933d7a..4f51db812 100644 --- a/data/sql/updates/pending_db_world/Twins_Taunt_Immune.sql +++ b/data/sql/updates/db_world/2025_03_25_00.sql @@ -1,3 +1,4 @@ +-- DB update 2025_03_24_00 -> 2025_03_25_00 -- Taunt Immune UPDATE `creature_template` SET `flags_extra` = `flags_extra`|256 WHERE `entry` IN (25166, 25165); From 761cd7e6ad22778d4b00ca0ecad7d18bc012b304 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Tue, 25 Mar 2025 14:48:00 -0300 Subject: [PATCH 14/26] fix(Scripts/SunwellPlateau): Fix Alythess chasing players after casting (#21773) --- .../EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp index 728b31705..203f285f0 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp @@ -210,6 +210,13 @@ struct boss_alythess : public BossAI sacrolash->Respawn(true); } + void AttackStart(Unit* who) override + { + if (who && who->isTargetableForAttack() && me->GetReactState() != REACT_PASSIVE) + if (me->Attack(who, false)) + me->AddThreat(who, 0.0f); + } + void DoAction(int32 param) override { if (param == ACTION_SISTER_DIED) From bec7a4e3fb38765e94c74b611d2b11889dff1981 Mon Sep 17 00:00:00 2001 From: blinkysc <37940565+blinkysc@users.noreply.github.com> Date: Tue, 25 Mar 2025 14:35:15 -0500 Subject: [PATCH 15/26] fix(DB/SmartScript) Alumeth the Ascended will now repeat cast Psychicscream around 20 seconds (#21772) --- .../updates/pending_db_world/rev_1742912009931722789.sql | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1742912009931722789.sql diff --git a/data/sql/updates/pending_db_world/rev_1742912009931722789.sql b/data/sql/updates/pending_db_world/rev_1742912009931722789.sql new file mode 100644 index 000000000..3bb7b7f95 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1742912009931722789.sql @@ -0,0 +1,8 @@ +-- Update Alumeth the Ascended 32300 to repeat around psychicscream ~20 sec +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 32300; +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 32300); +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 +(32300, 0, 0, 0, 0, 0, 100, 0, 8000, 9000, 8000, 9000, 0, 0, 11, 60472, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Alumeth the Ascended - In Combat - Cast \'Mind Flay\''), +(32300, 0, 1, 0, 0, 0, 100, 0, 8000, 10000, 18000, 22000, 0, 0, 11, 34322, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Alumeth the Ascended - In Combat - Cast \'Psychic Scream\''), +(32300, 0, 2, 0, 0, 0, 100, 0, 9000, 12000, 9000, 12000, 0, 0, 11, 37978, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Alumeth the Ascended - In Combat - Cast \'Renew\''), +(32300, 0, 3, 0, 0, 0, 100, 0, 7000, 10000, 7000, 10000, 0, 0, 11, 34942, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Alumeth the Ascended - In Combat - Cast \'Shadow Word: Pain\''); From 71c337143728a9cd5a4c045ca85a468e7207a74b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 25 Mar 2025 19:36:13 +0000 Subject: [PATCH 16/26] chore(DB): import pending files Referenced commit(s): bec7a4e3fb38765e94c74b611d2b11889dff1981 --- .../rev_1742912009931722789.sql => db_world/2025_03_25_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1742912009931722789.sql => db_world/2025_03_25_01.sql} (97%) diff --git a/data/sql/updates/pending_db_world/rev_1742912009931722789.sql b/data/sql/updates/db_world/2025_03_25_01.sql similarity index 97% rename from data/sql/updates/pending_db_world/rev_1742912009931722789.sql rename to data/sql/updates/db_world/2025_03_25_01.sql index 3bb7b7f95..60fe56251 100644 --- a/data/sql/updates/pending_db_world/rev_1742912009931722789.sql +++ b/data/sql/updates/db_world/2025_03_25_01.sql @@ -1,3 +1,4 @@ +-- DB update 2025_03_25_00 -> 2025_03_25_01 -- Update Alumeth the Ascended 32300 to repeat around psychicscream ~20 sec UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 32300; DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 32300); From 242311b7b12b7b82ac5ddfbdd3cabc0a45fd6de8 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Wed, 26 Mar 2025 05:18:32 -0300 Subject: [PATCH 17/26] =?UTF-8?q?fix(Scripts/SunwellPlateau):=20Update=20t?= =?UTF-8?q?win=20timers=20and=20Flame=20Sear=20target=E2=80=A6=20(#21777)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SunwellPlateau/boss_eredar_twins.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp index 203f285f0..880a374a2 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp @@ -227,7 +227,7 @@ struct boss_alythess : public BossAI me->CastSpell(me, SPELL_EMPOWER, true); scheduler.CancelGroup(GROUP_SPECIAL_ABILITY); - ScheduleTimedEvent(20s, [&] { + ScheduleTimedEvent(20s, 26s, [&] { Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 100.0f); if (!target) target = me->GetVictim(); @@ -236,7 +236,7 @@ struct boss_alythess : public BossAI if (Creature * sacrolash = instance->GetCreature(DATA_SACROLASH)) sacrolash->AI()->Talk(EMOTE_SHADOW_NOVA, target); - }, 30s, 35s); + }, 20s, 26s); } } @@ -257,9 +257,9 @@ struct boss_alythess : public BossAI DoCastSelf(SPELL_PYROGENICS); }, 15s); - ScheduleTimedEvent(20s, [&] { - me->CastCustomSpell(SPELL_FLAME_SEAR, SPELLVALUE_MAX_TARGETS, 5, me, TRIGGERED_NONE); - }, 15s); + ScheduleTimedEvent(10s, 15s, [&] { + me->CastCustomSpell(SPELL_FLAME_SEAR, SPELLVALUE_MAX_TARGETS, urand(4, 5), me, TRIGGERED_NONE); + }, 10s, 15s); scheduler.Schedule(20s, GROUP_SPECIAL_ABILITY, [this](TaskContext context) { Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 1, 100.0f); From c528ce61cde9832c29a9220bdbe6ff600ac8e2f2 Mon Sep 17 00:00:00 2001 From: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com> Date: Thu, 27 Mar 2025 16:41:06 +0100 Subject: [PATCH 18/26] fix(DB/SunwellPlateau) M'uru should Hard Reset. (#21791) --- data/sql/updates/pending_db_world/M'uru_extra_flags.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/M'uru_extra_flags.sql diff --git a/data/sql/updates/pending_db_world/M'uru_extra_flags.sql b/data/sql/updates/pending_db_world/M'uru_extra_flags.sql new file mode 100644 index 000000000..2c1be4dab --- /dev/null +++ b/data/sql/updates/pending_db_world/M'uru_extra_flags.sql @@ -0,0 +1,3 @@ + +-- Add Hard Reset Extra Flag +UPDATE `creature_template` SET `flags_extra` = `flags_extra`|2147483648 WHERE `entry` IN (25741); From fe8dcf97659906dab14e247a03696a43c78197e1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 27 Mar 2025 15:42:09 +0000 Subject: [PATCH 19/26] chore(DB): import pending files Referenced commit(s): c528ce61cde9832c29a9220bdbe6ff600ac8e2f2 --- .../M'uru_extra_flags.sql => db_world/2025_03_27_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/M'uru_extra_flags.sql => db_world/2025_03_27_00.sql} (74%) diff --git a/data/sql/updates/pending_db_world/M'uru_extra_flags.sql b/data/sql/updates/db_world/2025_03_27_00.sql similarity index 74% rename from data/sql/updates/pending_db_world/M'uru_extra_flags.sql rename to data/sql/updates/db_world/2025_03_27_00.sql index 2c1be4dab..abd85d26f 100644 --- a/data/sql/updates/pending_db_world/M'uru_extra_flags.sql +++ b/data/sql/updates/db_world/2025_03_27_00.sql @@ -1,3 +1,4 @@ +-- DB update 2025_03_25_01 -> 2025_03_27_00 -- Add Hard Reset Extra Flag UPDATE `creature_template` SET `flags_extra` = `flags_extra`|2147483648 WHERE `entry` IN (25741); From 9c3418d4827374c5a3dd3a0ec33dce82319be976 Mon Sep 17 00:00:00 2001 From: blinkysc <37940565+blinkysc@users.noreply.github.com> Date: Thu, 27 Mar 2025 12:42:29 -0500 Subject: [PATCH 20/26] fix(DB/Creature) Set Kirtonos the Herald to level 60 (#21784) Kirtonos the Herald corrected level from 63 to 60 --- data/sql/updates/pending_db_world/rev_1742991334856523357.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1742991334856523357.sql diff --git a/data/sql/updates/pending_db_world/rev_1742991334856523357.sql b/data/sql/updates/pending_db_world/rev_1742991334856523357.sql new file mode 100644 index 000000000..c2dbdab86 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1742991334856523357.sql @@ -0,0 +1,2 @@ +-- Set Kirtonos the Herald level to 60 +UPDATE `creature_template` SET `minlevel` = 60, `maxlevel` = 60 WHERE (`entry` = 10506); From e6615c8b3ae9d686740fee2816b5046b7107e2e1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 27 Mar 2025 17:43:31 +0000 Subject: [PATCH 21/26] chore(DB): import pending files Referenced commit(s): 9c3418d4827374c5a3dd3a0ec33dce82319be976 --- .../rev_1742991334856523357.sql => db_world/2025_03_27_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1742991334856523357.sql => db_world/2025_03_27_01.sql} (74%) diff --git a/data/sql/updates/pending_db_world/rev_1742991334856523357.sql b/data/sql/updates/db_world/2025_03_27_01.sql similarity index 74% rename from data/sql/updates/pending_db_world/rev_1742991334856523357.sql rename to data/sql/updates/db_world/2025_03_27_01.sql index c2dbdab86..19e1c7cc7 100644 --- a/data/sql/updates/pending_db_world/rev_1742991334856523357.sql +++ b/data/sql/updates/db_world/2025_03_27_01.sql @@ -1,2 +1,3 @@ +-- DB update 2025_03_27_00 -> 2025_03_27_01 -- Set Kirtonos the Herald level to 60 UPDATE `creature_template` SET `minlevel` = 60, `maxlevel` = 60 WHERE (`entry` = 10506); From 094c15a323e2b5567f1ad08a5e4d41cebd441726 Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Fri, 28 Mar 2025 11:18:40 +0100 Subject: [PATCH 22/26] fix(Core/Spells): implement `SPELL_ATTR7_TREAT_AS_NPC_AOE` (#21787) Co-authored-by: Shauren --- src/server/game/Entities/Unit/Unit.cpp | 4 ++-- src/server/game/Entities/Unit/Unit.h | 2 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 12 ++++++++++-- src/server/game/Spells/Spell.cpp | 3 ++- src/server/game/Spells/SpellInfoCorrections.cpp | 6 ++++++ src/server/scripts/Spells/spell_dk.cpp | 2 +- src/server/shared/SharedDefines.h | 2 +- src/server/shared/enuminfo_SharedDefines.cpp | 2 +- 8 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 2e55c55b0..73381b98b 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -20443,10 +20443,10 @@ void Unit::PetSpellFail(SpellInfo const* spellInfo, Unit* target, uint32 result) } } -int32 Unit::CalculateAOEDamageReduction(int32 damage, uint32 schoolMask, Unit* caster) const +int32 Unit::CalculateAOEDamageReduction(int32 damage, uint32 schoolMask, bool npcCaster) const { damage = int32(float(damage) * GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE, schoolMask)); - if (caster && caster->IsCreature()) + if (npcCaster) damage = int32(float(damage) * GetTotalAuraMultiplierByMiscMask(SPELL_AURA_MOD_CREATURE_AOE_DAMAGE_AVOIDANCE, schoolMask)); return damage; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 6680bcf25..5c6330efc 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1187,7 +1187,7 @@ public: uint32 SpellDamageBonusTaken(Unit* caster, SpellInfo const* spellProto, uint32 pdamage, DamageEffectType damagetype, uint32 stack = 1); // AOE damages - int32 CalculateAOEDamageReduction(int32 damage, uint32 schoolMask, Unit* caster) const; + int32 CalculateAOEDamageReduction(int32 damage, uint32 schoolMask, bool npcCaster) const; // Armor reduction static bool IsDamageReducedByArmor(SpellSchoolMask damageSchoolMask, SpellInfo const* spellInfo = nullptr, uint8 effIndex = MAX_SPELL_EFFECTS); diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 033891ee3..050647311 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -6692,9 +6692,17 @@ void AuraEffect::HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const damage = Unit::SpellCriticalDamageBonus(caster, m_spellInfo, damage, target); // Auras reducing damage from AOE spells - if (GetSpellInfo()->Effects[GetEffIndex()].IsAreaAuraEffect() || GetSpellInfo()->Effects[GetEffIndex()].IsTargetingArea() || GetSpellInfo()->Effects[GetEffIndex()].Effect == SPELL_EFFECT_PERSISTENT_AREA_AURA) // some persistent area auras have targets like A=53 B=28 + if (!GetSpellInfo()->HasAttribute(SPELL_ATTR4_IGNORE_DAMAGE_TAKEN_MODIFIERS)) { - damage = target->CalculateAOEDamageReduction(damage, GetSpellInfo()->SchoolMask, caster); + if (GetSpellInfo()->Effects[GetEffIndex()].IsAreaAuraEffect() || + GetSpellInfo()->Effects[GetEffIndex()].IsTargetingArea() || + GetSpellInfo()->Effects[GetEffIndex()].Effect == SPELL_EFFECT_PERSISTENT_AREA_AURA || // some persistent area auras have targets like A=53 B=28 + GetSpellInfo()->HasAttribute(SPELL_ATTR5_TREAT_AS_AREA_EFFECT) || + GetSpellInfo()->HasAttribute(SPELL_ATTR7_TREAT_AS_NPC_AOE)) + { + bool npcCaster = (caster && !caster->IsControlledByPlayer()) || GetSpellInfo()->HasAttribute(SPELL_ATTR7_TREAT_AS_NPC_AOE); + damage = target->CalculateAOEDamageReduction(damage, GetSpellInfo()->SchoolMask, npcCaster); + } } int32 dmg = damage; diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 11ca29a07..7cfa77b15 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -8352,7 +8352,8 @@ void Spell::DoAllEffectOnLaunchTarget(TargetInfo& targetInfo, float* multiplier) // Xinef: Area Auras, AoE Targetting spells AND Chain Target spells (cleave etc.) if (m_spellInfo->Effects[i].IsAreaAuraEffect() || m_spellInfo->Effects[i].IsTargetingArea() || (m_spellInfo->Effects[i].ChainTarget > 1 && m_spellInfo->DmgClass != SPELL_DAMAGE_CLASS_MAGIC)) { - m_damage = unit->CalculateAOEDamageReduction(m_damage, m_spellInfo->SchoolMask, m_caster); + bool npcCaster = (m_caster && !m_caster->IsControlledByPlayer()) || GetSpellInfo()->HasAttribute(SPELL_ATTR7_TREAT_AS_NPC_AOE); + m_damage = unit->CalculateAOEDamageReduction(m_damage, m_spellInfo->SchoolMask, npcCaster); if (m_caster->IsPlayer()) { uint32 targetAmount = m_UniqueTargetInfo.size(); diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index 9ec285179..7e9af691b 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -4898,6 +4898,12 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_70_YARDS); }); + // Encapsulate + ApplySpellFix({ 45662 }, [](SpellInfo* spellInfo) + { + spellInfo->AttributesEx7 |= SPELL_ATTR7_TREAT_AS_NPC_AOE; + }); + for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) { SpellInfo* spellInfo = mSpellInfoMap[i]; diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index 3222df8df..55600e04e 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -319,7 +319,7 @@ class spell_dk_death_and_decay : public SpellScript // Xinef: include AOE damage reducing auras if (target) - damage = target->CalculateAOEDamageReduction(damage, GetSpellInfo()->SchoolMask, caster); + damage = target->CalculateAOEDamageReduction(damage, GetSpellInfo()->SchoolMask, false); SetHitDamage(damage); } diff --git a/src/server/shared/SharedDefines.h b/src/server/shared/SharedDefines.h index c3aaf05b0..1f0dac07d 100644 --- a/src/server/shared/SharedDefines.h +++ b/src/server/shared/SharedDefines.h @@ -664,7 +664,7 @@ enum SpellAttr7 : uint32 SPELL_ATTR7_NO_ATTACK_DODGE = 0x00800000, // TITLE Spell cannot be dodged 23@Attr7 DESCRIPTION Motivate, Mutilate, Shattering Throw SPELL_ATTR7_NO_ATTACK_PARRY = 0x01000000, // TITLE Spell cannot be parried 24@Attr7 DESCRIPTION Motivate, Mutilate, Perform Speech, Shattering Throw SPELL_ATTR7_NO_ATTACK_MISS = 0x02000000, // TITLE Spell cannot be missed 25@Attr7 - SPELL_ATTR7_TREAT_AS_NPC_AOE = 0x04000000, // TITLE Unknown attribute 26@Attr7 + SPELL_ATTR7_TREAT_AS_NPC_AOE = 0x04000000, // TITLE Treat as NPC AoE SPELL_ATTR7_BYPASS_NO_RESURRECTION_AURA = 0x08000000, // TITLE Bypasses the prevent resurrection aura SPELL_ATTR7_DO_NOT_COUNT_FOR_PVP_SCOREBOARD = 0x10000000, // TITLE Consolidate in raid buff frame (client only) SPELL_ATTR7_REFLECTION_ONLY_DEFENDS = 0x20000000, // TITLE Unknown attribute 29@Attr7 DESCRIPTION only 69028, 71237 diff --git a/src/server/shared/enuminfo_SharedDefines.cpp b/src/server/shared/enuminfo_SharedDefines.cpp index f8009d6b3..db0951816 100644 --- a/src/server/shared/enuminfo_SharedDefines.cpp +++ b/src/server/shared/enuminfo_SharedDefines.cpp @@ -1087,7 +1087,7 @@ AC_API_EXPORT EnumText EnumUtils::ToString(SpellAttr7 value) case SPELL_ATTR7_NO_ATTACK_DODGE: return { "SPELL_ATTR7_NO_ATTACK_DODGE", "Spell cannot be dodged 23@Attr7", "Motivate, Mutilate, Shattering Throw" }; case SPELL_ATTR7_NO_ATTACK_PARRY: return { "SPELL_ATTR7_NO_ATTACK_PARRY", "Spell cannot be parried 24@Attr7", "Motivate, Mutilate, Perform Speech, Shattering Throw" }; case SPELL_ATTR7_NO_ATTACK_MISS: return { "SPELL_ATTR7_NO_ATTACK_MISS", "Spell cannot be missed 25@Attr7", "" }; - case SPELL_ATTR7_TREAT_AS_NPC_AOE: return { "SPELL_ATTR7_TREAT_AS_NPC_AOE", "Unknown attribute 26@Attr7", "" }; + case SPELL_ATTR7_TREAT_AS_NPC_AOE: return { "SPELL_ATTR7_TREAT_AS_NPC_AOE", "Treat as NPC AoE", "" }; case SPELL_ATTR7_BYPASS_NO_RESURRECTION_AURA: return { "SPELL_ATTR7_BYPASS_NO_RESURRECTION_AURA", "Bypasses the prevent resurrection aura", "" }; case SPELL_ATTR7_DO_NOT_COUNT_FOR_PVP_SCOREBOARD: return { "SPELL_ATTR7_DO_NOT_COUNT_FOR_PVP_SCOREBOARD", "Consolidate in raid buff frame (client only)", "" }; case SPELL_ATTR7_REFLECTION_ONLY_DEFENDS: return { "SPELL_ATTR7_REFLECTION_ONLY_DEFENDS", "Unknown attribute 29@Attr7", "only 69028, 71237" }; From cf0bcf8616968b947f49a080b7b2a490981dd601 Mon Sep 17 00:00:00 2001 From: Rocco Silipo <108557877+Rorschach91@users.noreply.github.com> Date: Fri, 28 Mar 2025 17:24:16 +0100 Subject: [PATCH 23/26] =?UTF-8?q?fix(DB/Condition)=20Scarlet=20Cannons=20n?= =?UTF-8?q?ow=20require=20Massacre=20at=20Light=E2=80=99s=20Point=20to=20b?= =?UTF-8?q?e=20used.=20(#21796)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../updates/pending_db_world/Scarlet_Cannon_Condition.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 data/sql/updates/pending_db_world/Scarlet_Cannon_Condition.sql diff --git a/data/sql/updates/pending_db_world/Scarlet_Cannon_Condition.sql b/data/sql/updates/pending_db_world/Scarlet_Cannon_Condition.sql new file mode 100644 index 000000000..26e4390e9 --- /dev/null +++ b/data/sql/updates/pending_db_world/Scarlet_Cannon_Condition.sql @@ -0,0 +1,5 @@ + +-- Add Condition to use Scarlet Cannons +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 18) AND (`SourceGroup` = 28833) AND (`SourceEntry` = 52447) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 9) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 12701) AND (`ConditionValue2` = 0) AND (`ConditionValue3` = 0); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(18, 28833, 52447, 0, 0, 9, 0, 12701, 0, 0, 0, 0, 0, '', 'Scarlet Cannon spellclick require Massacre at Light’s Point quest taken'); From 0ec26eba7c456d186305a2e5653b5e669f03cc2f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 28 Mar 2025 16:25:19 +0000 Subject: [PATCH 24/26] chore(DB): import pending files Referenced commit(s): cf0bcf8616968b947f49a080b7b2a490981dd601 --- .../Scarlet_Cannon_Condition.sql => db_world/2025_03_28_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/Scarlet_Cannon_Condition.sql => db_world/2025_03_28_00.sql} (94%) diff --git a/data/sql/updates/pending_db_world/Scarlet_Cannon_Condition.sql b/data/sql/updates/db_world/2025_03_28_00.sql similarity index 94% rename from data/sql/updates/pending_db_world/Scarlet_Cannon_Condition.sql rename to data/sql/updates/db_world/2025_03_28_00.sql index 26e4390e9..299c6806f 100644 --- a/data/sql/updates/pending_db_world/Scarlet_Cannon_Condition.sql +++ b/data/sql/updates/db_world/2025_03_28_00.sql @@ -1,3 +1,4 @@ +-- DB update 2025_03_27_01 -> 2025_03_28_00 -- Add Condition to use Scarlet Cannons DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 18) AND (`SourceGroup` = 28833) AND (`SourceEntry` = 52447) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 9) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 12701) AND (`ConditionValue2` = 0) AND (`ConditionValue3` = 0); From 80627efd6f34e0dc87a9e2f90a3e6aa8873d0d7a Mon Sep 17 00:00:00 2001 From: Ryan Turner Date: Sat, 29 Mar 2025 08:35:27 +0000 Subject: [PATCH 25/26] (db/Creautre) - Adds Heroic version of Brann Bronzebeard to Halls of Stone (#21755) --- data/sql/updates/pending_db_world/rev_1742750116866370300.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1742750116866370300.sql diff --git a/data/sql/updates/pending_db_world/rev_1742750116866370300.sql b/data/sql/updates/pending_db_world/rev_1742750116866370300.sql new file mode 100644 index 000000000..ea6709943 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1742750116866370300.sql @@ -0,0 +1,2 @@ +-- Matches the Heroic Faction to the base brann, Adds "Brann Bronzebeard" (1) [Heroic] to Heroic Version | 32'052 => 40'065 HP +UPDATE `creature_template` SET `faction` = 1665, `difficulty_entry_1` = 31366 WHERE (`entry` = 28070); From 1a9000f636463f47bdc636c025e9290e52596328 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 29 Mar 2025 08:36:26 +0000 Subject: [PATCH 26/26] chore(DB): import pending files Referenced commit(s): 80627efd6f34e0dc87a9e2f90a3e6aa8873d0d7a --- .../rev_1742750116866370300.sql => db_world/2025_03_29_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1742750116866370300.sql => db_world/2025_03_29_00.sql} (83%) diff --git a/data/sql/updates/pending_db_world/rev_1742750116866370300.sql b/data/sql/updates/db_world/2025_03_29_00.sql similarity index 83% rename from data/sql/updates/pending_db_world/rev_1742750116866370300.sql rename to data/sql/updates/db_world/2025_03_29_00.sql index ea6709943..4291d638c 100644 --- a/data/sql/updates/pending_db_world/rev_1742750116866370300.sql +++ b/data/sql/updates/db_world/2025_03_29_00.sql @@ -1,2 +1,3 @@ +-- DB update 2025_03_28_00 -> 2025_03_29_00 -- Matches the Heroic Faction to the base brann, Adds "Brann Bronzebeard" (1) [Heroic] to Heroic Version | 32'052 => 40'065 HP UPDATE `creature_template` SET `faction` = 1665, `difficulty_entry_1` = 31366 WHERE (`entry` = 28070);