From 81251aaf5eb021b3a1e71acebd291eefc969c99d Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Sat, 28 Sep 2024 15:50:41 +0200 Subject: [PATCH 01/14] fix(DB/Creature): remove stun immunity from Coilfang Strider (#20071) remove stun mechanic immune --- data/sql/updates/pending_db_world/rev_1727516139226526128.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1727516139226526128.sql diff --git a/data/sql/updates/pending_db_world/rev_1727516139226526128.sql b/data/sql/updates/pending_db_world/rev_1727516139226526128.sql new file mode 100644 index 00000000000000..a625db345d0f09 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1727516139226526128.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `mechanic_immune_mask` = `mechanic_immune_mask` & ~2048 WHERE (`entry` = 22056); From b07670f130a0e27747f27fa54502825c04db8a3b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 28 Sep 2024 13:51:37 +0000 Subject: [PATCH 02/14] chore(DB): import pending files Referenced commit(s): 81251aaf5eb021b3a1e71acebd291eefc969c99d --- .../rev_1727516139226526128.sql => db_world/2024_09_28_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1727516139226526128.sql => db_world/2024_09_28_01.sql} (72%) diff --git a/data/sql/updates/pending_db_world/rev_1727516139226526128.sql b/data/sql/updates/db_world/2024_09_28_01.sql similarity index 72% rename from data/sql/updates/pending_db_world/rev_1727516139226526128.sql rename to data/sql/updates/db_world/2024_09_28_01.sql index a625db345d0f09..d83605ee17f8f0 100644 --- a/data/sql/updates/pending_db_world/rev_1727516139226526128.sql +++ b/data/sql/updates/db_world/2024_09_28_01.sql @@ -1,2 +1,3 @@ +-- DB update 2024_09_28_00 -> 2024_09_28_01 -- UPDATE `creature_template` SET `mechanic_immune_mask` = `mechanic_immune_mask` & ~2048 WHERE (`entry` = 22056); From 23de73652439ce3d955c8f834c94532fbe8ece02 Mon Sep 17 00:00:00 2001 From: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com> Date: Sat, 28 Sep 2024 10:48:58 -0400 Subject: [PATCH 03/14] fix(DB/Spells): Add extra craft chance for Super Healing Potion. (#20064) Init. --- data/sql/updates/pending_db_world/super-healing-extra.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/super-healing-extra.sql diff --git a/data/sql/updates/pending_db_world/super-healing-extra.sql b/data/sql/updates/pending_db_world/super-healing-extra.sql new file mode 100644 index 00000000000000..d2a53bb8549c8a --- /dev/null +++ b/data/sql/updates/pending_db_world/super-healing-extra.sql @@ -0,0 +1,2 @@ +DELETE FROM `skill_extra_item_template` WHERE `spellId` = 28551; +INSERT INTO `skill_extra_item_template` (`spellId`, `requiredSpecialization`, `additionalCreateChance`, `additionalMaxNum`) VALUES (28551, 28675, 14, 4); From af2cbd9d8c0df002ad60e23309f5108906c9910a Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Sat, 28 Sep 2024 17:13:25 +0200 Subject: [PATCH 04/14] init --- .../BlackTemple/boss_shade_of_akama.cpp | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index 69b8fad983d99c..61a06c866841c8 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -198,6 +198,7 @@ struct boss_shade_of_akama : public BossAI } }; + struct npc_akama_shade : public ScriptedAI { npc_akama_shade(Creature* creature) : ScriptedAI(creature) @@ -222,6 +223,29 @@ struct npc_akama_shade : public ScriptedAI _sayLowHealth = false; _died = false; scheduler.CancelAll(); + CreaturesAttackAkama(); + _shadeMinionList.clear(); + _generators.clear(); + } + + void CreaturesAttackAkama() + { + // populate list of creatures to keep attacking Akama + me->GetCreaturesWithEntryInRange(_shadeMinionList, 100.0f, NPC_ASHTONGUE_SPIRITBIND); + me->GetCreaturesWithEntryInRange(_shadeMinionList, 100.0f, NPC_ASHTONGUE_DEFENDER); + me->GetCreaturesWithEntryInRange(_shadeMinionList, 100.0f, NPC_ASHTONGUE_ELEMENTAL); + me->GetCreaturesWithEntryInRange(_shadeMinionList, 100.0f, NPC_ASHTONGUE_ROGUE); + for (Creature* minion : _shadeMinionList) + if (minion->IsAlive()) + minion->SetInCombatWith(instance->GetCreature(DATA_AKAMA_SHADE)); + } + + void JustDied(Unit* killer) override + { + ScriptedAI::JustDied(killer); + me->GetCreatureListWithEntryInGrid(_generators, NPC_CREATURE_GENERATOR_AKAMA, 100.0f); + for (Creature* generator : _generators) + generator->AI()->DoAction(ACTION_GENERATOR_DESPAWN_ALL); } void MovementInform(uint32 type, uint32 point) override @@ -342,6 +366,8 @@ struct npc_akama_shade : public ScriptedAI private: bool _sayLowHealth; bool _died; + std::list _shadeMinionList; + std::list _generators; }; struct npc_creature_generator_akama : public ScriptedAI @@ -355,7 +381,6 @@ struct npc_creature_generator_akama : public ScriptedAI void Reset() override { - summons.DespawnAll(); scheduler.CancelAll(); } From 412c3730f626e1bc3918106b26be56555b75f8bf Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Sat, 28 Sep 2024 17:49:32 +0200 Subject: [PATCH 05/14] test --- .../BlackTemple/boss_shade_of_akama.cpp | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index 61a06c866841c8..e2479ef804c8b0 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -109,6 +109,8 @@ struct boss_shade_of_akama : public BossAI me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); me->SetWalk(true); me->SetReactState(REACT_DEFENSIVE); + CreaturesAttackAkama(); + _shadeMinionList.clear(); BossAI::Reset(); } @@ -196,6 +198,20 @@ struct boss_shade_of_akama : public BossAI DoMeleeAttackIfReady(); } + + void CreaturesAttackAkama() + { + // populate list of creatures to keep attacking Akama + me->GetCreaturesWithEntryInRange(_shadeMinionList, 100.0f, NPC_ASHTONGUE_SPIRITBIND); + me->GetCreaturesWithEntryInRange(_shadeMinionList, 100.0f, NPC_ASHTONGUE_DEFENDER); + me->GetCreaturesWithEntryInRange(_shadeMinionList, 100.0f, NPC_ASHTONGUE_ELEMENTAL); + me->GetCreaturesWithEntryInRange(_shadeMinionList, 100.0f, NPC_ASHTONGUE_ROGUE); + for (Creature* minion : _shadeMinionList) + if (minion->IsAlive()) + minion->SetInCombatWith(instance->GetCreature(DATA_AKAMA_SHADE)); + } +private: + std::list _shadeMinionList; }; @@ -223,23 +239,9 @@ struct npc_akama_shade : public ScriptedAI _sayLowHealth = false; _died = false; scheduler.CancelAll(); - CreaturesAttackAkama(); - _shadeMinionList.clear(); _generators.clear(); } - void CreaturesAttackAkama() - { - // populate list of creatures to keep attacking Akama - me->GetCreaturesWithEntryInRange(_shadeMinionList, 100.0f, NPC_ASHTONGUE_SPIRITBIND); - me->GetCreaturesWithEntryInRange(_shadeMinionList, 100.0f, NPC_ASHTONGUE_DEFENDER); - me->GetCreaturesWithEntryInRange(_shadeMinionList, 100.0f, NPC_ASHTONGUE_ELEMENTAL); - me->GetCreaturesWithEntryInRange(_shadeMinionList, 100.0f, NPC_ASHTONGUE_ROGUE); - for (Creature* minion : _shadeMinionList) - if (minion->IsAlive()) - minion->SetInCombatWith(instance->GetCreature(DATA_AKAMA_SHADE)); - } - void JustDied(Unit* killer) override { ScriptedAI::JustDied(killer); @@ -366,7 +368,6 @@ struct npc_akama_shade : public ScriptedAI private: bool _sayLowHealth; bool _died; - std::list _shadeMinionList; std::list _generators; }; From 8a27bbf2ad4adef18cd786f77ebd0680e6adfdc7 Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Sat, 28 Sep 2024 18:17:20 +0200 Subject: [PATCH 06/14] pupdate --- .../scripts/Outland/BlackTemple/boss_shade_of_akama.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index e2479ef804c8b0..3f67bdde4bd302 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -105,7 +105,7 @@ struct boss_shade_of_akama : public BossAI { channelers.clear(); generators.clear(); - + allPlayersInactive = false; me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); me->SetWalk(true); me->SetReactState(REACT_DEFENSIVE); @@ -212,6 +212,7 @@ struct boss_shade_of_akama : public BossAI } private: std::list _shadeMinionList; + bool allPlayersInactive; }; @@ -406,7 +407,8 @@ struct npc_creature_generator_akama : public ScriptedAI summon->AI()->AttackStart(akama); break; default: - summon->SetInCombatWithZone(); + if (Creature* akama = instance->GetCreature(DATA_AKAMA_SHADE)) + summon->SetInCombatWith(akama); break; } } From f91ea840c0036aec3f64614a7bb5691e10dffacb Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Sat, 28 Sep 2024 18:19:24 +0200 Subject: [PATCH 07/14] attempt at attack --- src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index 3f67bdde4bd302..740867be679d21 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -407,8 +407,9 @@ struct npc_creature_generator_akama : public ScriptedAI summon->AI()->AttackStart(akama); break; default: + summon->SetInCombatWithZone(); if (Creature* akama = instance->GetCreature(DATA_AKAMA_SHADE)) - summon->SetInCombatWith(akama); + summon->AI()->AttackStart(akama); break; } } From b3ce5ec8935d7fc280ce366257298be726d4ab39 Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Sat, 28 Sep 2024 18:21:36 +0200 Subject: [PATCH 08/14] testytest --- src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index 740867be679d21..5c3a886026f865 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -407,6 +407,7 @@ struct npc_creature_generator_akama : public ScriptedAI summon->AI()->AttackStart(akama); break; default: + summon->SetFaction(FACTION_DEFENDER); summon->SetInCombatWithZone(); if (Creature* akama = instance->GetCreature(DATA_AKAMA_SHADE)) summon->AI()->AttackStart(akama); From e873a18b90da90866da4223a64c7a2411056156f Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Sat, 28 Sep 2024 18:26:13 +0200 Subject: [PATCH 09/14] fixes with fake-dying and attack --- .../Outland/BlackTemple/boss_shade_of_akama.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index 5c3a886026f865..373620edcfb130 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -243,14 +243,6 @@ struct npc_akama_shade : public ScriptedAI _generators.clear(); } - void JustDied(Unit* killer) override - { - ScriptedAI::JustDied(killer); - me->GetCreatureListWithEntryInGrid(_generators, NPC_CREATURE_GENERATOR_AKAMA, 100.0f); - for (Creature* generator : _generators) - generator->AI()->DoAction(ACTION_GENERATOR_DESPAWN_ALL); - } - void MovementInform(uint32 type, uint32 point) override { if (type == POINT_MOTION_TYPE) @@ -313,6 +305,9 @@ struct npc_akama_shade : public ScriptedAI shade->SetHomePosition(shade->GetHomePosition()); shade->AI()->EnterEvadeMode(); } + me->GetCreatureListWithEntryInGrid(_generators, NPC_CREATURE_GENERATOR_AKAMA, 100.0f); + for (Creature* generator : _generators) + generator->AI()->DoAction(ACTION_GENERATOR_DESPAWN_ALL); me->DespawnOrUnsummon(); ScriptedAI::EnterEvadeMode(EvadeReason::EVADE_REASON_OTHER); From d836d9bc6fa3412a2b6e43bcd6ada9022f268f67 Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Sat, 28 Sep 2024 18:31:10 +0200 Subject: [PATCH 10/14] Update boss_shade_of_akama.cpp --- .../scripts/Outland/BlackTemple/boss_shade_of_akama.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index 373620edcfb130..933f54ce554043 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -298,6 +298,10 @@ struct npc_akama_shade : public ScriptedAI else if (damage >= me->GetHealth() && !_died) { _died = true; + me->GetCreatureListWithEntryInGrid(_generators, NPC_CREATURE_GENERATOR_AKAMA, 100.0f); + for (Creature* generator : _generators) + generator->AI()->DoAction(ACTION_GENERATOR_DESPAWN_ALL); + damage = me->GetHealth() - 1; Talk(SAY_DEATH); if (Creature* shade = instance->GetCreature(DATA_SHADE_OF_AKAMA)) @@ -305,9 +309,6 @@ struct npc_akama_shade : public ScriptedAI shade->SetHomePosition(shade->GetHomePosition()); shade->AI()->EnterEvadeMode(); } - me->GetCreatureListWithEntryInGrid(_generators, NPC_CREATURE_GENERATOR_AKAMA, 100.0f); - for (Creature* generator : _generators) - generator->AI()->DoAction(ACTION_GENERATOR_DESPAWN_ALL); me->DespawnOrUnsummon(); ScriptedAI::EnterEvadeMode(EvadeReason::EVADE_REASON_OTHER); From b66485599d7b4602ed9f9de9899cd1f55c66ef5d Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Sat, 28 Sep 2024 18:44:20 +0200 Subject: [PATCH 11/14] Update boss_shade_of_akama.cpp --- .../scripts/Outland/BlackTemple/boss_shade_of_akama.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index 933f54ce554043..46ab4923bea4d6 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -298,7 +298,7 @@ struct npc_akama_shade : public ScriptedAI else if (damage >= me->GetHealth() && !_died) { _died = true; - me->GetCreatureListWithEntryInGrid(_generators, NPC_CREATURE_GENERATOR_AKAMA, 100.0f); + me->GetCreatureListWithEntryInGrid(_generators, NPC_CREATURE_GENERATOR_AKAMA, 150.0f); for (Creature* generator : _generators) generator->AI()->DoAction(ACTION_GENERATOR_DESPAWN_ALL); @@ -397,14 +397,8 @@ struct npc_creature_generator_akama : public ScriptedAI summon->GetMotionMaster()->MovePoint(POINT_ENGAGE, x, y, z); } break; - case NPC_ASHTONGUE_DEFENDER: - summon->SetFaction(FACTION_DEFENDER); - if (Creature* akama = instance->GetCreature(DATA_AKAMA_SHADE)) - summon->AI()->AttackStart(akama); - break; default: summon->SetFaction(FACTION_DEFENDER); - summon->SetInCombatWithZone(); if (Creature* akama = instance->GetCreature(DATA_AKAMA_SHADE)) summon->AI()->AttackStart(akama); break; From 79462fbce89e0ff6ef47a39d5f0b8fb726982032 Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Sat, 28 Sep 2024 18:48:36 +0200 Subject: [PATCH 12/14] debug --- src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index 46ab4923bea4d6..fc305179da954c 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -299,6 +299,7 @@ struct npc_akama_shade : public ScriptedAI { _died = true; me->GetCreatureListWithEntryInGrid(_generators, NPC_CREATURE_GENERATOR_AKAMA, 150.0f); + me->Yell(std::to_string(_generators.size())); for (Creature* generator : _generators) generator->AI()->DoAction(ACTION_GENERATOR_DESPAWN_ALL); From e2fd6d1a43c423b8e2dc5cac5b45fc48dce5f619 Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Sat, 28 Sep 2024 18:49:01 +0200 Subject: [PATCH 13/14] fix --- src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index fc305179da954c..fbb675708e08c3 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -299,7 +299,7 @@ struct npc_akama_shade : public ScriptedAI { _died = true; me->GetCreatureListWithEntryInGrid(_generators, NPC_CREATURE_GENERATOR_AKAMA, 150.0f); - me->Yell(std::to_string(_generators.size())); + me->Yell(std::to_string(_generators.size()), LANG_UNIVERSAL); for (Creature* generator : _generators) generator->AI()->DoAction(ACTION_GENERATOR_DESPAWN_ALL); From 0a7847554639b26a56872205706d869316473ed3 Mon Sep 17 00:00:00 2001 From: Dan <83884799+elthehablo@users.noreply.github.com> Date: Sat, 28 Sep 2024 18:51:59 +0200 Subject: [PATCH 14/14] testytestv2 --- src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index fbb675708e08c3..8d5cbb611a2c7f 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -387,6 +387,7 @@ struct npc_creature_generator_akama : public ScriptedAI { spawnCounter++; ScriptedAI::JustSummoned(summon); + summons.Summon(summon); switch (summon->GetEntry()) {