From a957b4a5b740407794f5f6fbe4d06b5ac1378b8d Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Wed, 27 Aug 2025 15:32:59 -0700 Subject: [PATCH 01/17] fix(DB/SmartAI): port Shadow of Doom script to SmartAI (#22735) --- .../rev_1756307808923704438.sql | 13 ++++ src/server/scripts/World/scourge_invasion.cpp | 64 ------------------- src/server/scripts/World/scourge_invasion.h | 4 -- 3 files changed, 13 insertions(+), 68 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1756307808923704438.sql diff --git a/data/sql/updates/pending_db_world/rev_1756307808923704438.sql b/data/sql/updates/pending_db_world/rev_1756307808923704438.sql new file mode 100644 index 000000000..1b638115a --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1756307808923704438.sql @@ -0,0 +1,13 @@ +-- +UPDATE `creature_template` SET `ScriptName` = '', `AIName` = 'SmartAI' WHERE (`entry` = 16143); + +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 16143) AND (`source_type` = 0); +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 +(16143, 0, 0, 1, 54, 0, 100, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5000, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadow of Doom - On Just Summoned - Say Line 0'), +(16143, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 10389, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadow of Doom - On Just Summoned - Cast \'Spawn Smoke\''), +(16143, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 256, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadow of Doom - On Just Summoned - Set Flags Immune To Players'), +(16143, 0, 3, 0, 52, 0, 100, 0, 0, 0, 0, 0, 0, 0, 19, 256, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadow of Doom - On Text 0 Over - Remove Flags Immune To Players'), +(16143, 0, 4, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 28056, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadow of Doom - On Just Died - Cast \'Zap Crystal Corpse\''), +(16143, 0, 5, 0, 8, 0, 100, 0, 17680, 0, 0, 0, 0, 0, 41, 3000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadow of Doom - On Spellhit \'Spirit Spawn-out\' - Despawn In 3000 ms'), +(16143, 0, 6, 0, 0, 0, 100, 0, 2000, 2000, 6500, 13000, 0, 0, 11, 16568, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadow of Doom - In Combat - Cast \'Mind Flay\''), +(16143, 0, 7, 0, 0, 0, 100, 0, 2000, 2000, 14500, 14500, 0, 0, 11, 12542, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadow of Doom - In Combat - Cast \'Fear\''); diff --git a/src/server/scripts/World/scourge_invasion.cpp b/src/server/scripts/World/scourge_invasion.cpp index eac52f705..a53075309 100644 --- a/src/server/scripts/World/scourge_invasion.cpp +++ b/src/server/scripts/World/scourge_invasion.cpp @@ -802,69 +802,6 @@ struct npc_cultist_engineer : public ScriptedAI } }; -struct npc_shadow_of_doom : public CombatAI -{ - npc_shadow_of_doom(Creature* creature) : CombatAI(creature) { } - - void JustEngagedWith(Unit* /*who*/) override - { - scheduler.Schedule(2s, [&](TaskContext context) - { - DoCastVictim(SPELL_MINDFLAY); - context.Repeat(6500ms, 13s); - }).Schedule(2s, [&](TaskContext context) - { - DoCastVictim(SPELL_FEAR); - context.Repeat(14500ms, 14500ms); - }); - } - - void Reset() override - { - scheduler.CancelAll(); - me->SetImmuneToPC(false); - } - - void IsSummonedBy(WorldObject* summoner) override - { - if (!summoner) - return; - - if (Player* player = summoner->ToPlayer()) - { - me->SetImmuneToPC(true); - me->SetFacingToObject(player); - - Talk(SHADOW_OF_DOOM_SAY_AGGRO, player); - DoCastSelf(SPELL_SPAWN_SMOKE, true); - - scheduler.Schedule(5s, [this, player](TaskContext const& /*context*/) - { - me->SetImmuneToPC(false); - if (me->CanStartAttack(player)) - AttackStart(player); - }); - } - } - - void JustDied(Unit* /*pKiller*/) override - { - DoCastSelf(SPELL_ZAP_CRYSTAL_CORPSE, true); - } - - void SpellHit(Unit* /* caster */, SpellInfo const* spell) override - { - if (spell->Id == SPELL_SPIRIT_SPAWN_OUT) - me->DespawnOrUnsummon(3000); - } - - void UpdateAI(uint32 const diff) override - { - scheduler.Update(diff); - DoMeleeAttackIfReady(); - } -}; - struct npc_flameshocker : public CombatAI { npc_flameshocker(Creature* creature) : CombatAI(creature) { } @@ -1121,7 +1058,6 @@ void AddSC_scourge_invasion() RegisterCreatureAI(npc_minion_spawner); RegisterCreatureAI(npc_pallid_horror); RegisterCreatureAI(npc_cultist_engineer); - RegisterCreatureAI(npc_shadow_of_doom); RegisterCreatureAI(npc_flameshocker); RegisterSpellScript(spell_communique_trigger); RegisterSpellScript(spell_despawner_self); diff --git a/src/server/scripts/World/scourge_invasion.h b/src/server/scripts/World/scourge_invasion.h index fa927340a..0bc511ace 100644 --- a/src/server/scripts/World/scourge_invasion.h +++ b/src/server/scripts/World/scourge_invasion.h @@ -137,10 +137,7 @@ enum ScourgeInvasionSpells */ // Shadow of Doom - SPELL_SPAWN_SMOKE = 10389, // Spawning Visual. SPELL_ZAP_CRYSTAL_CORPSE = 28056, // Casted on Shard if Shadow of Doom dies. - SPELL_MINDFLAY = 16568, - SPELL_FEAR = 12542, // Pallid Horror - Patchwerk Terror (also uses: 28315) SPELL_SUMMON_CRACKED_NECROTIC_CRYSTAL = 28424, // Alliance. @@ -336,7 +333,6 @@ enum ScourgeInvasionTalk HERALD_OF_THE_LICH_KING_SAY_ATTACK_END = 1, HERALD_OF_THE_LICH_KING_SAY_ATTACK_RANDOM = 2, PALLID_HORROR_SAY_RANDOM_YELL = 0, - SHADOW_OF_DOOM_SAY_AGGRO = 0, SYLVANAS_SAY_ATTACK_END = 3, VARIAN_SAY_ATTACK_END = 3 }; From 36138dccb7e31d1e982cc8a5b9d07152493cd63b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 27 Aug 2025 22:34:06 +0000 Subject: [PATCH 02/17] chore(DB): import pending files Referenced commit(s): a957b4a5b740407794f5f6fbe4d06b5ac1378b8d --- .../rev_1756307808923704438.sql => db_world/2025_08_27_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1756307808923704438.sql => db_world/2025_08_27_02.sql} (97%) diff --git a/data/sql/updates/pending_db_world/rev_1756307808923704438.sql b/data/sql/updates/db_world/2025_08_27_02.sql similarity index 97% rename from data/sql/updates/pending_db_world/rev_1756307808923704438.sql rename to data/sql/updates/db_world/2025_08_27_02.sql index 1b638115a..ee7d79294 100644 --- a/data/sql/updates/pending_db_world/rev_1756307808923704438.sql +++ b/data/sql/updates/db_world/2025_08_27_02.sql @@ -1,3 +1,4 @@ +-- DB update 2025_08_27_01 -> 2025_08_27_02 -- UPDATE `creature_template` SET `ScriptName` = '', `AIName` = 'SmartAI' WHERE (`entry` = 16143); From e39333abcb8150bfb71ccaf3c6dc0ad00322eeef Mon Sep 17 00:00:00 2001 From: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com> Date: Thu, 28 Aug 2025 12:34:45 -0400 Subject: [PATCH 03/17] fix(Core/WorldState): Start boss activation event when starting Scourge Invasion. (#22739) --- src/server/game/World/WorldState.cpp | 2 ++ src/server/game/World/WorldState.h | 1 + 2 files changed, 3 insertions(+) diff --git a/src/server/game/World/WorldState.cpp b/src/server/game/World/WorldState.cpp index 0ca7ea0c0..a1f71a2a5 100644 --- a/src/server/game/World/WorldState.cpp +++ b/src/server/game/World/WorldState.cpp @@ -1312,6 +1312,8 @@ void WorldState::StartScourgeInvasion(bool sendMail) Acore::Containers::RandomShuffle(randomIds); for (uint32 id : randomIds) OnEnable(m_siData.m_activeInvasions[id]); + + sGameEventMgr->StartEvent(GAME_EVENT_SCOURGE_INVASION_BOSSES); } } diff --git a/src/server/game/World/WorldState.h b/src/server/game/World/WorldState.h index be5379246..b850010ac 100644 --- a/src/server/game/World/WorldState.h +++ b/src/server/game/World/WorldState.h @@ -65,6 +65,7 @@ enum WorldStateGameEvents { // Scourge Invasion GAME_EVENT_SCOURGE_INVASION = 17, + GAME_EVENT_SCOURGE_INVASION_BOSSES = 120, GAME_EVENT_SCOURGE_INVASION_WINTERSPRING = 121, GAME_EVENT_SCOURGE_INVASION_TANARIS = 122, GAME_EVENT_SCOURGE_INVASION_AZSHARA = 123, From 99463bce9a7f1b13b4032b172dce172053627204 Mon Sep 17 00:00:00 2001 From: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com> Date: Thu, 28 Aug 2025 19:41:54 -0400 Subject: [PATCH 04/17] fix(DB/Creature): Bind players to instance upon killing Tenris Mirkblood. (#22743) --- data/sql/updates/pending_db_world/tenris-bind.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 data/sql/updates/pending_db_world/tenris-bind.sql diff --git a/data/sql/updates/pending_db_world/tenris-bind.sql b/data/sql/updates/pending_db_world/tenris-bind.sql new file mode 100644 index 000000000..83fc95a94 --- /dev/null +++ b/data/sql/updates/pending_db_world/tenris-bind.sql @@ -0,0 +1 @@ +UPDATE `creature_template` SET `flags_extra` = `flags_extra` | 1 WHERE `entry` = 28194; From 50bbddc7bf54dca615f863ddb90224542bed1a10 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 28 Aug 2025 23:42:55 +0000 Subject: [PATCH 05/17] chore(DB): import pending files Referenced commit(s): 99463bce9a7f1b13b4032b172dce172053627204 --- .../tenris-bind.sql => db_world/2025_08_28_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/tenris-bind.sql => db_world/2025_08_28_00.sql} (66%) diff --git a/data/sql/updates/pending_db_world/tenris-bind.sql b/data/sql/updates/db_world/2025_08_28_00.sql similarity index 66% rename from data/sql/updates/pending_db_world/tenris-bind.sql rename to data/sql/updates/db_world/2025_08_28_00.sql index 83fc95a94..befc80e5b 100644 --- a/data/sql/updates/pending_db_world/tenris-bind.sql +++ b/data/sql/updates/db_world/2025_08_28_00.sql @@ -1 +1,2 @@ +-- DB update 2025_08_27_02 -> 2025_08_28_00 UPDATE `creature_template` SET `flags_extra` = `flags_extra` | 1 WHERE `entry` = 28194; From 4bf57d11f2d2cc137c00612ec398dccdfecf88c1 Mon Sep 17 00:00:00 2001 From: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com> Date: Thu, 28 Aug 2025 22:53:26 -0400 Subject: [PATCH 06/17] fix(DB/Loot): Adjust drops for various Scourge Invasion related items. (#22738) --- .../scourge-invasion-loot.sql | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 data/sql/updates/pending_db_world/scourge-invasion-loot.sql diff --git a/data/sql/updates/pending_db_world/scourge-invasion-loot.sql b/data/sql/updates/pending_db_world/scourge-invasion-loot.sql new file mode 100644 index 000000000..6b812b084 --- /dev/null +++ b/data/sql/updates/pending_db_world/scourge-invasion-loot.sql @@ -0,0 +1,42 @@ +-- Necrotic Runes +DELETE FROM `creature_loot_template` WHERE `Item` = 22484; +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(14697, 22484, 0, 100, 0, 1, 0, 2, 3, 'Lumbering Horror - Necrotic Rune'), +(16379, 22484, 0, 100, 0, 1, 0, 2, 3, 'Spirit of the Damned - Necrotic Rune'), +(16380, 22484, 0, 100, 0, 1, 0, 2, 3, 'Bone Witch - Necrotic Rune'), +(16143, 22484, 0, 100, 0, 1, 0, 30, 30, 'Shadow of Doom - Necrotic Rune'), +(16141, 22484, 0, 33.33, 0, 1, 0, 1, 1, 'Ghoul Berserker - Necrotic Rune'), +(16298, 22484, 0, 33.33, 0, 1, 0, 1, 1, 'Spectral Soldier - Necrotic Rune'), +(16299, 22484, 0, 33.33, 0, 1, 0, 1, 1, 'Skeletal Shocktrooper - Necrotic Rune'), +(16383, 22484, 0, 33.33, 0, 1, 0, 1, 1, 'Flameshocker - Necrotic Rune'); + +-- Sealed Research Report items +DELETE FROM `creature_loot_template` WHERE `Item` IN (22970, 22972, 22973, 22974, 22975, 22977); +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(16141, 22970, 0, 2, 0, 1, 1, 1, 1, 'Ghoul Berserker - A Bloodstained Envelope'), +(16141, 22972, 0, 2, 0, 1, 1, 1, 1, 'Ghoul Berserker - A Careworn Note'), +(16141, 22973, 0, 2, 0, 1, 1, 1, 1, 'Ghoul Berserker - A Crumpled Missive'), +(16141, 22974, 0, 2, 0, 1, 1, 1, 1, 'Ghoul Berserker - A Ragged Page'), +(16141, 22975, 0, 2, 0, 1, 1, 1, 1, 'Ghoul Berserker - A Smudged Document'), +(16141, 22977, 0, 2, 0, 1, 1, 1, 1, 'Ghoul Berserker - A Torn Letter'), +(16298, 22970, 0, 2, 0, 1, 1, 1, 1, 'Spectral Soldier - A Bloodstained Envelope'), +(16298, 22972, 0, 2, 0, 1, 1, 1, 1, 'Spectral Soldier - A Careworn Note'), +(16298, 22973, 0, 2, 0, 1, 1, 1, 1, 'Spectral Soldier - A Crumpled Missive'), +(16298, 22974, 0, 2, 0, 1, 1, 1, 1, 'Spectral Soldier - A Ragged Page'), +(16298, 22975, 0, 2, 0, 1, 1, 1, 1, 'Spectral Soldier - A Smudged Document'), +(16298, 22977, 0, 2, 0, 1, 1, 1, 1, 'Spectral Soldier - A Torn Letter'), +(16299, 22970, 0, 2, 0, 1, 1, 1, 1, 'Skeletal Shocktrooper - A Bloodstained Envelope'), +(16299, 22972, 0, 2, 0, 1, 1, 1, 1, 'Skeletal Shocktrooper - A Careworn Note'), +(16299, 22973, 0, 2, 0, 1, 1, 1, 1, 'Skeletal Shocktrooper - A Crumpled Missive'), +(16299, 22974, 0, 2, 0, 1, 1, 1, 1, 'Skeletal Shocktrooper - A Ragged Page'), +(16299, 22975, 0, 2, 0, 1, 1, 1, 1, 'Skeletal Shocktrooper - A Smudged Document'), +(16299, 22977, 0, 2, 0, 1, 1, 1, 1, 'Skeletal Shocktrooper - A Torn Letter'), +(16383, 22970, 0, 2, 0, 1, 1, 1, 1, 'Flameshocker - A Bloodstained Envelope'), +(16383, 22972, 0, 2, 0, 1, 1, 1, 1, 'Flameshocker - A Careworn Note'), +(16383, 22973, 0, 2, 0, 1, 1, 1, 1, 'Flameshocker - A Crumpled Missive'), +(16383, 22974, 0, 2, 0, 1, 1, 1, 1, 'Flameshocker - A Ragged Page'), +(16383, 22975, 0, 2, 0, 1, 1, 1, 1, 'Flameshocker - A Smudged Document'), +(16383, 22977, 0, 2, 0, 1, 1, 1, 1, 'Flameshocker - A Torn Letter'); + +-- Dim Necrotic Stone +UPDATE `creature_loot_template` SET `Chance` = 25 WHERE `Item` = 22892; From 7756b41160e171ff850a34811f9b80fb3bdb8d16 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 29 Aug 2025 02:54:27 +0000 Subject: [PATCH 07/17] chore(DB): import pending files Referenced commit(s): 4bf57d11f2d2cc137c00612ec398dccdfecf88c1 --- .../scourge-invasion-loot.sql => db_world/2025_08_29_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/scourge-invasion-loot.sql => db_world/2025_08_29_00.sql} (98%) diff --git a/data/sql/updates/pending_db_world/scourge-invasion-loot.sql b/data/sql/updates/db_world/2025_08_29_00.sql similarity index 98% rename from data/sql/updates/pending_db_world/scourge-invasion-loot.sql rename to data/sql/updates/db_world/2025_08_29_00.sql index 6b812b084..0d320af88 100644 --- a/data/sql/updates/pending_db_world/scourge-invasion-loot.sql +++ b/data/sql/updates/db_world/2025_08_29_00.sql @@ -1,3 +1,4 @@ +-- DB update 2025_08_28_00 -> 2025_08_29_00 -- Necrotic Runes DELETE FROM `creature_loot_template` WHERE `Item` = 22484; INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES From c2b298eaacf3b9325e040e5284e30611fe946ca7 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Fri, 29 Aug 2025 00:43:36 -0300 Subject: [PATCH 08/17] fix(Scripts/SI): crash fix (#22744) --- src/server/scripts/World/scourge_invasion.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/World/scourge_invasion.cpp b/src/server/scripts/World/scourge_invasion.cpp index a53075309..982049624 100644 --- a/src/server/scripts/World/scourge_invasion.cpp +++ b/src/server/scripts/World/scourge_invasion.cpp @@ -499,7 +499,7 @@ struct npc_necrotic_shard : public ScriptedAI // Only Minions and the shard itself can deal damage. void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType /*damageType*/, SpellSchoolMask /*damageSchoolMask*/) override { - if (attacker->GetFactionTemplateEntry() != me->GetFactionTemplateEntry()) + if (attacker && attacker->GetFactionTemplateEntry() != me->GetFactionTemplateEntry()) damage = 0; } From 49dc26bf1d8cc23264fedc4e77ca7e850c7a5952 Mon Sep 17 00:00:00 2001 From: Annamaria <20357406+Annamaria-CC@users.noreply.github.com> Date: Fri, 29 Aug 2025 15:37:29 +0200 Subject: [PATCH 09/17] fix (db/smart_scripts): Skeletal Horrors only cast when 2 or more players (#22745) --- data/sql/updates/pending_db_world/skeletalhorrors.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/skeletalhorrors.sql diff --git a/data/sql/updates/pending_db_world/skeletalhorrors.sql b/data/sql/updates/pending_db_world/skeletalhorrors.sql new file mode 100644 index 000000000..d64c02fe6 --- /dev/null +++ b/data/sql/updates/pending_db_world/skeletalhorrors.sql @@ -0,0 +1,3 @@ +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 202) AND (`source_type` = 0) AND (`id` IN (0)); +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 +(202, 0, 0, 0, 101, 0, 100, 0, 2, 5, 5000, 9000, 13000, 0, 11, 7399, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Skeletal Horror - On 2 or More Players in Range - Cast \'Terrify\''); From ba607dad882fbd65b50c9af186a234a731306b49 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 29 Aug 2025 13:40:27 +0000 Subject: [PATCH 10/17] chore(DB): import pending files Referenced commit(s): 49dc26bf1d8cc23264fedc4e77ca7e850c7a5952 --- .../skeletalhorrors.sql => db_world/2025_08_29_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/skeletalhorrors.sql => db_world/2025_08_29_01.sql} (94%) diff --git a/data/sql/updates/pending_db_world/skeletalhorrors.sql b/data/sql/updates/db_world/2025_08_29_01.sql similarity index 94% rename from data/sql/updates/pending_db_world/skeletalhorrors.sql rename to data/sql/updates/db_world/2025_08_29_01.sql index d64c02fe6..0abfb0727 100644 --- a/data/sql/updates/pending_db_world/skeletalhorrors.sql +++ b/data/sql/updates/db_world/2025_08_29_01.sql @@ -1,3 +1,4 @@ +-- DB update 2025_08_29_00 -> 2025_08_29_01 DELETE FROM `smart_scripts` WHERE (`entryorguid` = 202) AND (`source_type` = 0) AND (`id` IN (0)); 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 (202, 0, 0, 0, 101, 0, 100, 0, 2, 5, 5000, 9000, 13000, 0, 11, 7399, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Skeletal Horror - On 2 or More Players in Range - Cast \'Terrify\''); From 445161d3b9d5276d1a63831e98c83015f39a9522 Mon Sep 17 00:00:00 2001 From: iThorgrim <125808072+iThorgrim@users.noreply.github.com> Date: Fri, 29 Aug 2025 22:19:57 +0200 Subject: [PATCH 11/17] refactor(Core/Script): Rename Creature_SelectLevel to OnCreatureSelectLevel for clarity (#22750) --- src/server/game/Entities/Creature/Creature.cpp | 2 +- src/server/game/Scripting/ScriptDefines/AllCreatureScript.cpp | 4 ++-- src/server/game/Scripting/ScriptDefines/AllCreatureScript.h | 2 +- src/server/game/Scripting/ScriptMgr.h | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 996b5ae05..43534a409 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1578,7 +1578,7 @@ void Creature::SelectLevel(bool changelevel) SetModifierValue(UNIT_MOD_ATTACK_POWER, BASE_VALUE, stats->AttackPower); SetModifierValue(UNIT_MOD_ATTACK_POWER_RANGED, BASE_VALUE, stats->RangedAttackPower); - sScriptMgr->Creature_SelectLevel(cInfo, this); + sScriptMgr->OnCreatureSelectLevel(cInfo, this); } float Creature::_GetHealthMod(int32 Rank) diff --git a/src/server/game/Scripting/ScriptDefines/AllCreatureScript.cpp b/src/server/game/Scripting/ScriptDefines/AllCreatureScript.cpp index 45d90cf10..f34599d81 100644 --- a/src/server/game/Scripting/ScriptDefines/AllCreatureScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/AllCreatureScript.cpp @@ -57,11 +57,11 @@ void ScriptMgr::OnBeforeCreatureSelectLevel(const CreatureTemplate* cinfo, Creat }); } -void ScriptMgr::Creature_SelectLevel(const CreatureTemplate* cinfo, Creature* creature) +void ScriptMgr::OnCreatureSelectLevel(const CreatureTemplate* cinfo, Creature* creature) { ExecuteScript([&](AllCreatureScript* script) { - script->Creature_SelectLevel(cinfo, creature); + script->OnCreatureSelectLevel(cinfo, creature); }); } diff --git a/src/server/game/Scripting/ScriptDefines/AllCreatureScript.h b/src/server/game/Scripting/ScriptDefines/AllCreatureScript.h index a4f83dd2b..71e230e8b 100644 --- a/src/server/game/Scripting/ScriptDefines/AllCreatureScript.h +++ b/src/server/game/Scripting/ScriptDefines/AllCreatureScript.h @@ -33,7 +33,7 @@ public: virtual void OnBeforeCreatureSelectLevel(const CreatureTemplate* /*cinfo*/, Creature* /*creature*/, uint8& /*level*/) { } // Called from End of Creature SelectLevel. - virtual void Creature_SelectLevel(const CreatureTemplate* /*cinfo*/, Creature* /*creature*/) { } + virtual void OnCreatureSelectLevel(const CreatureTemplate* /*cinfo*/, Creature* /*creature*/) { } /** * @brief This hook runs after add creature in world diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index e15ac9050..6b3efdb86 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -572,7 +572,7 @@ public: /* AllCreatureScript */ //listener function (OnAllCreatureUpdate) is called by OnCreatureUpdate //void OnAllCreatureUpdate(Creature* creature, uint32 diff); void OnBeforeCreatureSelectLevel(const CreatureTemplate* cinfo, Creature* creature, uint8& level); - void Creature_SelectLevel(const CreatureTemplate* cinfo, Creature* creature); + void OnCreatureSelectLevel(const CreatureTemplate* cinfo, Creature* creature); void OnCreatureSaveToDB(Creature* creature); public: /* AllGameobjectScript */ From d9c99cd0156a4329250ae3fb419d923ca25b5df5 Mon Sep 17 00:00:00 2001 From: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com> Date: Sat, 30 Aug 2025 08:43:06 -0400 Subject: [PATCH 12/17] fix(Scripts/Karazhan): Minor adjustments to Tenris Mirkblood. (#22753) --- .../pending_db_world/mirkblood-spawntime.sql | 1 + .../Karazhan/boss_tenris_mirkblood.cpp | 15 ++++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 data/sql/updates/pending_db_world/mirkblood-spawntime.sql diff --git a/data/sql/updates/pending_db_world/mirkblood-spawntime.sql b/data/sql/updates/pending_db_world/mirkblood-spawntime.sql new file mode 100644 index 000000000..a884c1288 --- /dev/null +++ b/data/sql/updates/pending_db_world/mirkblood-spawntime.sql @@ -0,0 +1 @@ +UPDATE `creature` SET `spawntimesecs` = 604800 WHERE `id1` = 28194; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp index 518a46055..bed336447 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp @@ -177,6 +177,9 @@ struct npc_sanguine_spirit : public ScriptedAI me->SetReactState(REACT_AGGRESSIVE); me->SetInCombatWithZone(); DoCastSelf(SPELL_SANGUINE_SPIRIT_AURA); + }).Schedule(30s, [this](TaskContext /*context*/) + { + me->DespawnOrUnsummon(); }); } @@ -320,6 +323,7 @@ public: events.Reset(); if (InstanceScript* instance = player->GetInstanceScript()) + { if (instance->GetBossState(DATA_MIRKBLOOD) != DONE) { opener = player; @@ -327,8 +331,10 @@ public: events.ScheduleEvent(EVENT_SAY, 1s); events.ScheduleEvent(EVENT_FLAG, 5s); - me->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } + } + + me->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); return true; } @@ -342,14 +348,13 @@ public: switch (events.ExecuteEvent()) { case EVENT_SAY: - if (!mirkblood) + if (!mirkblood || !mirkblood->IsAlive()) return; mirkblood->AI()->Talk(SAY_AGGRO, opener); break; case EVENT_FLAG: - if (!mirkblood) - return; - mirkblood->SetImmuneToPC(false); + if (mirkblood) + mirkblood->SetImmuneToPC(false); me->Delete(); break; } From 6065270a37c35663ee928b05e0f43cbe6a39e191 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 30 Aug 2025 12:44:18 +0000 Subject: [PATCH 13/17] chore(DB): import pending files Referenced commit(s): d9c99cd0156a4329250ae3fb419d923ca25b5df5 --- .../mirkblood-spawntime.sql => db_world/2025_08_30_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/mirkblood-spawntime.sql => db_world/2025_08_30_00.sql} (60%) diff --git a/data/sql/updates/pending_db_world/mirkblood-spawntime.sql b/data/sql/updates/db_world/2025_08_30_00.sql similarity index 60% rename from data/sql/updates/pending_db_world/mirkblood-spawntime.sql rename to data/sql/updates/db_world/2025_08_30_00.sql index a884c1288..884506500 100644 --- a/data/sql/updates/pending_db_world/mirkblood-spawntime.sql +++ b/data/sql/updates/db_world/2025_08_30_00.sql @@ -1 +1,2 @@ +-- DB update 2025_08_29_01 -> 2025_08_30_00 UPDATE `creature` SET `spawntimesecs` = 604800 WHERE `id1` = 28194; From 427557c3d8722704b33fd35b3c4e84f2a3fedaf1 Mon Sep 17 00:00:00 2001 From: sudlud Date: Sat, 30 Aug 2025 18:38:17 +0200 Subject: [PATCH 14/17] fix(DB/Creature): Sniffed Values for 'Tahu Sagewind' spawns (#22754) --- .../sql/updates/pending_db_world/rev_1756552312753254300.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1756552312753254300.sql diff --git a/data/sql/updates/pending_db_world/rev_1756552312753254300.sql b/data/sql/updates/pending_db_world/rev_1756552312753254300.sql new file mode 100644 index 000000000..82ccaa783 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1756552312753254300.sql @@ -0,0 +1,5 @@ +-- Update creature 'Tahu Sagewind' with sniffed values +-- new spawns +DELETE FROM `creature` WHERE (`id1` IN (34528)) AND (`guid` IN (37)); +INSERT INTO `creature` (`guid`, `id1`, `map`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`, `CreateObject`, `Comment`) VALUES +(37, 34528, 1, 1, 1, 0, -1047.1771240234375, -287.98785400390625, 159.113677978515625, 2.728425025939941406, 120, 0, 0, 0, 0, 0, "", 45435, 1, NULL); From 78b9f6ab148fa3340f680ee286ec618a2080bd43 Mon Sep 17 00:00:00 2001 From: sudlud Date: Sat, 30 Aug 2025 18:38:32 +0200 Subject: [PATCH 15/17] fix(DB/Gameobject): Sniffed Values for 'Mag'har Rug' spawns (#22755) --- .../pending_db_world/rev_1756553610733937000.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1756553610733937000.sql diff --git a/data/sql/updates/pending_db_world/rev_1756553610733937000.sql b/data/sql/updates/pending_db_world/rev_1756553610733937000.sql new file mode 100644 index 000000000..d92ad22f3 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1756553610733937000.sql @@ -0,0 +1,12 @@ +-- Update gameobject 'Mag'har Rug' with sniffed values +-- updated spawns +DELETE FROM `gameobject` WHERE (`id` IN (182257)) AND (`guid` IN (22684, 22685, 22686)); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES +(22684, 182257, 530, 0, 0, 1, 1, -1235.0460205078125, 7247.54248046875, 57.33856201171875, 4.97418975830078125, 0, 0, -0.60876083374023437, 0.793353796005249023, 120, 255, 1, "", 45704, NULL), +(22685, 182257, 530, 0, 0, 1, 1, -1242.7056884765625, 7246.685546875, 57.29010009765625, 4.97418975830078125, 0, 0, -0.60876083374023437, 0.793353796005249023, 120, 255, 1, "", 45704, NULL), +(22686, 182257, 530, 0, 0, 1, 1, -1238.972412109375, 7247.02001953125, 57.3078765869140625, 4.97418975830078125, 0, 0, -0.60876083374023437, 0.793353796005249023, 120, 255, 1, "", 45704, NULL); + +-- new spawns +DELETE FROM `gameobject` WHERE (`id` IN (182257)) AND (`guid` IN (38)); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES +(38, 182257, 1, 0, 0, 1, 1, -1049.82470703125, -286.196197509765625, 159.0303497314453125, 2.548179388046264648, 0, 0, 0.956304550170898437, 0.292372345924377441, 120, 255, 1, "", 45435, NULL); From 9a80edbe9289d1d274f79e98a6607c720c23b174 Mon Sep 17 00:00:00 2001 From: sudlud Date: Sat, 30 Aug 2025 18:38:47 +0200 Subject: [PATCH 16/17] fix(DB/Gameobject): Sniffed Values for 'Stranglekelp Sack' spawns (#22756) --- .../pending_db_world/rev_1756556406016957600.sql | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1756556406016957600.sql diff --git a/data/sql/updates/pending_db_world/rev_1756556406016957600.sql b/data/sql/updates/pending_db_world/rev_1756556406016957600.sql new file mode 100644 index 000000000..da4dc2079 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1756556406016957600.sql @@ -0,0 +1,11 @@ +-- Update gameobject 'Stranglekelp Sack' with sniffed values +-- updated spawns +DELETE FROM `gameobject` WHERE (`id` IN (185004)) AND (`guid` IN (25928)); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES +(25928, 185004, 530, 0, 0, 1, 1, 728.25927734375, 6844.61083984375, -66.3580474853515625, 4.433136463165283203, 0, 0, -0.79863548278808593, 0.60181504487991333, 120, 255, 1, "", 45942, NULL); + +-- new spawns +DELETE FROM `gameobject` WHERE (`id` IN (185004)) AND (`guid` IN (84, 85)); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES +(84, 185004, 1, 0, 0, 1, 1, -1049.5347900390625, -290.34722900390625, 159.0303497314453125, 0.209439441561698913, 0, 0, 0.104528427124023437, 0.994521915912628173, 120, 255, 1, "", 45435, NULL), +(85, 185004, 1, 0, 0, 1, 1, -1050.2257080078125, -290.552093505859375, 159.0303497314453125, 2.495818138122558593, 0, 0, 0.948323249816894531, 0.317305892705917358, 120, 255, 1, "", 45435, NULL); From 5c31e3b411ba8dfec9ecdfacca494accf7f59119 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 30 Aug 2025 16:39:19 +0000 Subject: [PATCH 17/17] chore(DB): import pending files Referenced commit(s): 427557c3d8722704b33fd35b3c4e84f2a3fedaf1 --- .../rev_1756552312753254300.sql => db_world/2025_08_30_01.sql} | 1 + .../rev_1756553610733937000.sql => db_world/2025_08_30_02.sql} | 1 + .../rev_1756556406016957600.sql => db_world/2025_08_30_03.sql} | 1 + 3 files changed, 3 insertions(+) rename data/sql/updates/{pending_db_world/rev_1756552312753254300.sql => db_world/2025_08_30_01.sql} (93%) rename data/sql/updates/{pending_db_world/rev_1756553610733937000.sql => db_world/2025_08_30_02.sql} (97%) rename data/sql/updates/{pending_db_world/rev_1756556406016957600.sql => db_world/2025_08_30_03.sql} (96%) diff --git a/data/sql/updates/pending_db_world/rev_1756552312753254300.sql b/data/sql/updates/db_world/2025_08_30_01.sql similarity index 93% rename from data/sql/updates/pending_db_world/rev_1756552312753254300.sql rename to data/sql/updates/db_world/2025_08_30_01.sql index 82ccaa783..184fa73ce 100644 --- a/data/sql/updates/pending_db_world/rev_1756552312753254300.sql +++ b/data/sql/updates/db_world/2025_08_30_01.sql @@ -1,3 +1,4 @@ +-- DB update 2025_08_30_00 -> 2025_08_30_01 -- Update creature 'Tahu Sagewind' with sniffed values -- new spawns DELETE FROM `creature` WHERE (`id1` IN (34528)) AND (`guid` IN (37)); diff --git a/data/sql/updates/pending_db_world/rev_1756553610733937000.sql b/data/sql/updates/db_world/2025_08_30_02.sql similarity index 97% rename from data/sql/updates/pending_db_world/rev_1756553610733937000.sql rename to data/sql/updates/db_world/2025_08_30_02.sql index d92ad22f3..89b84f42c 100644 --- a/data/sql/updates/pending_db_world/rev_1756553610733937000.sql +++ b/data/sql/updates/db_world/2025_08_30_02.sql @@ -1,3 +1,4 @@ +-- DB update 2025_08_30_01 -> 2025_08_30_02 -- Update gameobject 'Mag'har Rug' with sniffed values -- updated spawns DELETE FROM `gameobject` WHERE (`id` IN (182257)) AND (`guid` IN (22684, 22685, 22686)); diff --git a/data/sql/updates/pending_db_world/rev_1756556406016957600.sql b/data/sql/updates/db_world/2025_08_30_03.sql similarity index 96% rename from data/sql/updates/pending_db_world/rev_1756556406016957600.sql rename to data/sql/updates/db_world/2025_08_30_03.sql index da4dc2079..c2927a889 100644 --- a/data/sql/updates/pending_db_world/rev_1756556406016957600.sql +++ b/data/sql/updates/db_world/2025_08_30_03.sql @@ -1,3 +1,4 @@ +-- DB update 2025_08_30_02 -> 2025_08_30_03 -- Update gameobject 'Stranglekelp Sack' with sniffed values -- updated spawns DELETE FROM `gameobject` WHERE (`id` IN (185004)) AND (`guid` IN (25928));