From d87a9dc58f8a7e7127a9f784bf8429ee547d2d72 Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Wed, 29 Mar 2023 00:28:15 -0300 Subject: [PATCH 01/16] fix(Scripts/Steamvault): Correct Timers for Thespia and add missing line (#15640) * Update boss_hydromancer_thespia.cpp * Create thespia.sql * Update boss_hydromancer_thespia.cpp * Lightning cloud is random as well * DoCast --- data/sql/updates/pending_db_world/thespia.sql | 4 +++ .../SteamVault/boss_hydromancer_thespia.cpp | 27 +++++++++---------- 2 files changed, 16 insertions(+), 15 deletions(-) create mode 100644 data/sql/updates/pending_db_world/thespia.sql diff --git a/data/sql/updates/pending_db_world/thespia.sql b/data/sql/updates/pending_db_world/thespia.sql new file mode 100644 index 000000000..0768898bc --- /dev/null +++ b/data/sql/updates/pending_db_world/thespia.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `creature_text` WHERE `CreatureID`=17797 AND `GroupID`=4 AND `ID`=0; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(17797, 4, 0, 'Enjoy the storm warm bloods!', 14, 0, 100, 0, 0, 0, 19456, 0, 'thespia SAY_SPELL'); diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp index 3ff8a02f2..a27e68485 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp @@ -21,10 +21,11 @@ enum HydromancerThespia { - SAY_SUMMON = 0, + SAY_SUMMON = 0, // Unused or Unknown Use SAY_AGGRO = 1, SAY_SLAY = 2, SAY_DEAD = 3, + SAY_SPELL = 4, SPELL_LIGHTNING_CLOUD = 25033, SPELL_LUNG_BURST = 31481, @@ -55,9 +56,9 @@ struct boss_hydromancer_thespia : public BossAI { Talk(SAY_AGGRO); _JustEngagedWith(); - events.ScheduleEvent(EVENT_SPELL_LIGHTNING, 15000); - events.ScheduleEvent(EVENT_SPELL_LUNG, 7000); - events.ScheduleEvent(EVENT_SPELL_ENVELOPING, 9000); + events.ScheduleEvent(EVENT_SPELL_LIGHTNING, 9800); + events.ScheduleEvent(EVENT_SPELL_LUNG, 13300); + events.ScheduleEvent(EVENT_SPELL_ENVELOPING, 14500); } void UpdateAI(uint32 diff) override @@ -69,21 +70,17 @@ struct boss_hydromancer_thespia : public BossAI switch (events.ExecuteEvent()) { case EVENT_SPELL_LIGHTNING: - for (uint8 i = 0; i < DUNGEON_MODE(1, 2); ++i) - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) - me->CastSpell(target, SPELL_LIGHTNING_CLOUD, false); - events.RepeatEvent(urand(15000, 25000)); + Talk(SAY_SPELL); + DoCastRandomTarget(SPELL_LIGHTNING_CLOUD); + events.RepeatEvent(urand(12100, 14500)); break; case EVENT_SPELL_LUNG: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) - DoCast(target, SPELL_LUNG_BURST); - events.RepeatEvent(urand(7000, 12000)); + DoCastRandomTarget(SPELL_LUNG_BURST); + events.RepeatEvent(urand(21800, 25400)); break; case EVENT_SPELL_ENVELOPING: - for (uint8 i = 0; i < DUNGEON_MODE(1, 2); ++i) - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) - me->CastSpell(target, SPELL_ENVELOPING_WINDS, false); - events.RepeatEvent(urand(10000, 15000)); + DoCastRandomTarget(SPELL_ENVELOPING_WINDS); + events.RepeatEvent(urand(30000, 40000)); break; } From 1160f3bda9ad04ecb66b8a1144b70349ba4bd9f2 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Wed, 29 Mar 2023 05:28:56 +0200 Subject: [PATCH 02/16] fix(Core/Spells): Turn the Tables can stack with itself. (#15597) Fixes #13911 --- src/server/game/Spells/SpellInfoCorrections.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index ffed7a496..fafa9caa2 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -4501,6 +4501,12 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->AttributesEx |= SPELL_ATTR1_NO_REFLECTION; }); + // Turn the Tables + ApplySpellFix({ 51627, 51628, 51629 }, [](SpellInfo* spellInfo) + { + spellInfo->AttributesEx3 |= SPELL_ATTR3_DOT_STACKING_RULE; + }); + for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) { SpellInfo* spellInfo = mSpellInfoMap[i]; From 213aaee42c338abbca975f919db33d1feb8177aa Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Wed, 29 Mar 2023 05:31:36 +0200 Subject: [PATCH 03/16] =?UTF-8?q?fix(Scripts/Spells):=20Fixed=20Improved?= =?UTF-8?q?=20Healthstone=20not=20affecting=20Ritual=20=E2=80=A6=20(#15588?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(Scripts/Spells): Fixed Improved Healthstone not affecting Ritual of Souls. Fixes #15510 --- src/server/scripts/World/go_scripts.cpp | 112 ++++++++++++++---------- 1 file changed, 66 insertions(+), 46 deletions(-) diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index 0371072b1..ac53001b3 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -1450,39 +1450,6 @@ public: { go_soulwellAI(GameObject* go) : GameObjectAI(go) { - _stoneSpell = 0; - _stoneId = 0; - switch (go->GetEntry()) - { - case GO_SOUL_WELL_R1: - _stoneSpell = SPELL_CREATE_MASTER_HEALTH_STONE_R0; - if (Unit* owner = go->GetOwner()) - { - if (owner->HasAura(SPELL_IMPROVED_HEALTH_STONE_R1)) - _stoneSpell = SPELL_CREATE_MASTER_HEALTH_STONE_R1; - else if (owner->HasAura(SPELL_CREATE_MASTER_HEALTH_STONE_R2)) - _stoneSpell = SPELL_CREATE_MASTER_HEALTH_STONE_R2; - } - break; - case GO_SOUL_WELL_R2: - _stoneSpell = SPELL_CREATE_FEL_HEALTH_STONE_R0; - if (Unit* owner = go->GetOwner()) - { - if (owner->HasAura(SPELL_IMPROVED_HEALTH_STONE_R1)) - _stoneSpell = SPELL_CREATE_FEL_HEALTH_STONE_R1; - else if (owner->HasAura(SPELL_CREATE_MASTER_HEALTH_STONE_R2)) - _stoneSpell = SPELL_CREATE_FEL_HEALTH_STONE_R2; - } - break; - } - if (_stoneSpell == 0) // Should never happen - return; - - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(_stoneSpell); - if (!spellInfo) - return; - - _stoneId = spellInfo->Effects[EFFECT_0].ItemType; } /// Due to the fact that this GameObject triggers CMSG_GAMEOBJECT_USE @@ -1495,40 +1462,93 @@ public: return false; Unit* owner = me->GetOwner(); - if (_stoneSpell == 0 || _stoneId == 0) + if (!owner) + return true; + + uint32 stoneId = 0; + uint32 stoneSpell = 0; + switch (me->GetEntry()) + { + case GO_SOUL_WELL_R1: + stoneSpell = SPELL_CREATE_MASTER_HEALTH_STONE_R0; + if (Unit* owner = me->GetOwner()) + { + if (owner->HasAura(SPELL_IMPROVED_HEALTH_STONE_R1)) + { + stoneSpell = SPELL_CREATE_MASTER_HEALTH_STONE_R1; + } + else if (owner->HasAura(SPELL_CREATE_MASTER_HEALTH_STONE_R2)) + { + stoneSpell = SPELL_CREATE_MASTER_HEALTH_STONE_R2; + } + } + break; + case GO_SOUL_WELL_R2: + stoneSpell = SPELL_CREATE_FEL_HEALTH_STONE_R0; + if (Unit* owner = me->GetOwner()) + { + if (owner->HasAura(SPELL_IMPROVED_HEALTH_STONE_R1)) + { + stoneSpell = SPELL_CREATE_FEL_HEALTH_STONE_R1; + } + else if (owner->HasAura(SPELL_CREATE_MASTER_HEALTH_STONE_R2)) + { + stoneSpell = SPELL_CREATE_FEL_HEALTH_STONE_R2; + } + } + break; + } + + if (!stoneSpell) { - if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(_stoneSpell)) - Spell::SendCastResult(player, spell, 0, SPELL_FAILED_ERROR); return true; } - if (!owner || owner->GetTypeId() != TYPEID_PLAYER || !player->IsInSameRaidWith(owner->ToPlayer())) + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(stoneSpell); + if (!spellInfo) { - if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(_stoneSpell)) + return true; + } + + stoneId = spellInfo->Effects[EFFECT_0].ItemType; + if (!stoneId) + { + if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(stoneSpell)) + { + Spell::SendCastResult(player, spell, 0, SPELL_FAILED_ERROR); + } + return true; + } + + if (owner->GetTypeId() != TYPEID_PLAYER || !player->IsInSameRaidWith(owner->ToPlayer())) + { + if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(stoneSpell)) + { Spell::SendCastResult(player, spell, 0, SPELL_FAILED_TARGET_NOT_IN_RAID); + } return true; } // Don't try to add a stone if we already have one. - if (player->HasItemCount(_stoneId)) + if (player->HasItemCount(stoneId)) { - if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(_stoneSpell)) + if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(stoneSpell)) + { Spell::SendCastResult(player, spell, 0, SPELL_FAILED_TOO_MANY_OF_ITEM); + } return true; } - player->CastSpell(player, _stoneSpell, false); + player->CastSpell(player, stoneSpell, false); // Item has to actually be created to remove a charge on the well. - if (player->HasItemCount(_stoneId)) + if (player->HasItemCount(stoneId)) + { me->AddUse(); + } return true; } - - private: - uint32 _stoneSpell; - uint32 _stoneId; }; GameObjectAI* GetAI(GameObject* go) const override From 38f2469d6c5399e30464976dc092efba62f23c78 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Wed, 29 Mar 2023 05:32:10 +0200 Subject: [PATCH 04/16] fix(DB/Creature): Added trigger flag to Gnome Cannor Shooter. (#15584) Fixes #15535 --- data/sql/updates/pending_db_world/rev_1679777836259359200.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1679777836259359200.sql diff --git a/data/sql/updates/pending_db_world/rev_1679777836259359200.sql b/data/sql/updates/pending_db_world/rev_1679777836259359200.sql new file mode 100644 index 000000000..e463cff36 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1679777836259359200.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `flags_extra`=`flags_extra`|128 WHERE `entry`=21944; From a20ce07f08c650a0bfac7cdcf63b55881c4f5865 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Wed, 29 Mar 2023 03:34:43 +0000 Subject: [PATCH 05/16] chore(DB): import pending files Referenced commit(s): 38f2469d6c5399e30464976dc092efba62f23c78 --- .../rev_1679777836259359200.sql => db_world/2023_03_29_00.sql} | 1 + .../{pending_db_world/thespia.sql => db_world/2023_03_29_01.sql} | 1 + 2 files changed, 2 insertions(+) rename data/sql/updates/{pending_db_world/rev_1679777836259359200.sql => db_world/2023_03_29_00.sql} (66%) rename data/sql/updates/{pending_db_world/thespia.sql => db_world/2023_03_29_01.sql} (89%) diff --git a/data/sql/updates/pending_db_world/rev_1679777836259359200.sql b/data/sql/updates/db_world/2023_03_29_00.sql similarity index 66% rename from data/sql/updates/pending_db_world/rev_1679777836259359200.sql rename to data/sql/updates/db_world/2023_03_29_00.sql index e463cff36..ee23ccca9 100644 --- a/data/sql/updates/pending_db_world/rev_1679777836259359200.sql +++ b/data/sql/updates/db_world/2023_03_29_00.sql @@ -1,2 +1,3 @@ +-- DB update 2023_03_28_03 -> 2023_03_29_00 -- UPDATE `creature_template` SET `flags_extra`=`flags_extra`|128 WHERE `entry`=21944; diff --git a/data/sql/updates/pending_db_world/thespia.sql b/data/sql/updates/db_world/2023_03_29_01.sql similarity index 89% rename from data/sql/updates/pending_db_world/thespia.sql rename to data/sql/updates/db_world/2023_03_29_01.sql index 0768898bc..acce78f52 100644 --- a/data/sql/updates/pending_db_world/thespia.sql +++ b/data/sql/updates/db_world/2023_03_29_01.sql @@ -1,3 +1,4 @@ +-- DB update 2023_03_29_00 -> 2023_03_29_01 -- DELETE FROM `creature_text` WHERE `CreatureID`=17797 AND `GroupID`=4 AND `ID`=0; INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES From 8e697633b820ec8bd50c8a1763f8c46bd7d9c146 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Wed, 29 Mar 2023 01:16:37 -0300 Subject: [PATCH 06/16] =?UTF-8?q?fix(Scripts/IcecrownCitadel):=20Fix=20Ner?= =?UTF-8?q?ubar=20Broodkeeper=20flickering=20anim=E2=80=A6=20(#15642)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(Scripts/IcecrownCitadel): Fix Nerubar Broodkeeper flickering animation partial cherry-pick of https://github.com/TrinityCore/TrinityCore/commit/f8db738e8da008ccb48f79f5dd10ebbd81750f5f Co-Authored-By: Ovahlord <18347559+Ovahlord@users.noreply.github.com> Co-Authored-By: Houston <69751143+HoustonCore@users.noreply.github.com> Co-Authored-By: Lucas Nascimento * Update icecrown_citadel.cpp * fix the spiders before sindragosa as well * Update icecrown_citadel.cpp --------- Co-authored-by: Ovahlord <18347559+Ovahlord@users.noreply.github.com> Co-authored-by: Houston <69751143+HoustonCore@users.noreply.github.com> Co-authored-by: Lucas Nascimento --- .../rev_1680057777548192700.sql | 6 +++++ .../IcecrownCitadel/icecrown_citadel.cpp | 22 ++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1680057777548192700.sql diff --git a/data/sql/updates/pending_db_world/rev_1680057777548192700.sql b/data/sql/updates/pending_db_world/rev_1680057777548192700.sql new file mode 100644 index 000000000..f6854f75c --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1680057777548192700.sql @@ -0,0 +1,6 @@ +-- +UPDATE `creature_template` SET `flags_extra`=512 WHERE `entry` IN (36725,38058); +UPDATE `creature_template_addon` SET `bytes1`=0 WHERE `entry` IN (36725,38058); +UPDATE `creature_template_movement` SET `Flight`=0, `Ground`=1 WHERE `CreatureId` IN (36725,38058); +UPDATE `creature_template` SET `flags_extra` = `flags_extra` | 512 WHERE `entry` IN (37501, 37502, 38197, 38198); +UPDATE `smart_scripts` SET `event_param1` = 16 WHERE `entryorguid` IN (37501, 37502) AND `source_type` = 0 AND `event_type` = 34; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index b9110e2e3..0029019b2 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -3347,13 +3347,19 @@ public: EventMap events; bool _didWebBeam; + void InitializeAI() override + { + me->SetDisableGravity(true); + me->SetImmuneToAll(true); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_CUSTOM_SPELL_03); + } + void Reset() override { events.Reset(); events.ScheduleEvent(1, 3s, 10s); // Crypt Scarabs events.ScheduleEvent(2, 15s, 25s); // Dark Mending events.ScheduleEvent(3, 8s, 15s); // Web Wrap - me->AddUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD); } void MoveInLineOfSight(Unit* who) override @@ -3364,9 +3370,10 @@ public: float nx = me->GetPositionX(); float ny = me->GetPositionY(); float nz = me->GetFloorZ(); + DoCastSelf(SPELL_WEB_BEAM); me->SetHomePosition(nx, ny, nz, me->GetOrientation()); - me->CastSpell(me, SPELL_WEB_BEAM, false); - me->GetMotionMaster()->MovePoint(1, nx, ny, nz, false); + me->GetMotionMaster()->MoveLand(1, nx, ny, nz, false); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE); return; } @@ -3386,20 +3393,19 @@ public: if (me->IsLevitating()) { me->SetDisableGravity(false); + me->SetImmuneToAll(false); me->NearTeleportTo(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation()); } } - void MovementInform(uint32 type, uint32 id) override + void MovementInform(uint32 /*type*/, uint32 id) override { - if (type == POINT_MOTION_TYPE && id == 1) + if (id == 1) { if (me->IsLevitating()) { me->SetDisableGravity(false); me->SetOrientation(0.0f); - me->NearTeleportTo(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation()); - me->ClearUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD); } } } @@ -3516,7 +3522,7 @@ public: if (spider->GetPositionZ() > 220.0f) { spider->CastSpell(spider, SPELL_WEB_BEAM2, false); - spider->GetMotionMaster()->MovePoint(POINT_ENTER_COMBAT, spider->GetPositionX(), spider->GetPositionY(), 213.03f, false); + spider->GetMotionMaster()->MoveLand(POINT_ENTER_COMBAT, spider->GetPositionX(), spider->GetPositionY(), 213.03f, false); } } From 7f711c0f3ffa2e53dc4cf8aa1fd5a9e1e241efd6 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Wed, 29 Mar 2023 04:19:04 +0000 Subject: [PATCH 07/16] chore(DB): import pending files Referenced commit(s): 8e697633b820ec8bd50c8a1763f8c46bd7d9c146 --- .../rev_1680057777548192700.sql => db_world/2023_03_29_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1680057777548192700.sql => db_world/2023_03_29_02.sql} (92%) diff --git a/data/sql/updates/pending_db_world/rev_1680057777548192700.sql b/data/sql/updates/db_world/2023_03_29_02.sql similarity index 92% rename from data/sql/updates/pending_db_world/rev_1680057777548192700.sql rename to data/sql/updates/db_world/2023_03_29_02.sql index f6854f75c..1d333a8bb 100644 --- a/data/sql/updates/pending_db_world/rev_1680057777548192700.sql +++ b/data/sql/updates/db_world/2023_03_29_02.sql @@ -1,3 +1,4 @@ +-- DB update 2023_03_29_01 -> 2023_03_29_02 -- UPDATE `creature_template` SET `flags_extra`=512 WHERE `entry` IN (36725,38058); UPDATE `creature_template_addon` SET `bytes1`=0 WHERE `entry` IN (36725,38058); From 7035e875437f992a6dc025a80307e147870f3591 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Wed, 29 Mar 2023 06:27:17 +0200 Subject: [PATCH 08/16] fix(Core/Spells): Shadow Word: Death vs critters. (#15594) Fixes #14299 --- src/server/game/Entities/Player/Player.cpp | 9 ++++++--- src/server/game/Entities/Unit/Unit.cpp | 4 +++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6067344bf..c53e3a83c 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -12566,15 +12566,18 @@ bool Player::isHonorOrXPTarget(Unit* victim) const // Victim level less gray level if (v_level <= k_grey) + { return false; + } if (victim->GetTypeId() == TYPEID_UNIT) { - if (victim->IsTotem() || - victim->IsPet() || - victim->ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_NO_XP) + if (victim->IsTotem() || victim->IsCritter() || victim->IsPet() || (victim->ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_NO_XP)) + { return false; + } } + return true; } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 96a06c55f..c201dfb9e 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -17980,8 +17980,10 @@ void Unit::Kill(Unit* killer, Unit* victim, bool durabilityLoss, WeaponAttackTyp sScriptMgr->OnCreatureKilledByPet( killer->GetCharmerOrOwnerPlayerOrPlayerItself(), victim->ToCreature()); } - if (killer != victim && !victim->IsCritter()) + if (killer != victim) + { Unit::ProcDamageAndSpell(killer, victim, killer ? PROC_FLAG_KILL : 0, PROC_FLAG_KILLED, PROC_EX_NONE, 0, attackType, spellProto, nullptr, -1, spell); + } // Proc auras on death - must be before aura/combat remove Unit::ProcDamageAndSpell(victim, nullptr, PROC_FLAG_DEATH, PROC_FLAG_NONE, PROC_EX_NONE, 0, attackType, spellProto, nullptr, -1, spell); From d4f8134b3bfb4aae4edd7adeb9c0a250f137f372 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Wed, 29 Mar 2023 06:28:00 +0200 Subject: [PATCH 09/16] fix(Core/Spells): Lightning Overload should not proc off from itself. (#15595) Fixes #15499 --- src/server/game/Entities/Unit/Unit.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c201dfb9e..8a60470ab 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8318,6 +8318,12 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere if (procEx & PROC_EX_CRITICAL_HIT) damage /= 2; + // do not proc off from itself + if (procSpell->Id == 45297 || procSpell->Id == 45284) + { + return false; + } + do { uint32 spell = 0; From fa249abb55d95b779bdcc9cef98cee9cffce4947 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Wed, 29 Mar 2023 06:28:42 +0200 Subject: [PATCH 10/16] fix(Scripts/Steamvault): Improved Door Controller event. (#15580) Fixes #15547 --- .../SteamVault/instance_steam_vault.cpp | 35 +++++++++++++++++-- .../SteamVault/steam_vault.h | 4 ++- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp index 5ec64023d..645347300 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/instance_steam_vault.cpp @@ -19,6 +19,12 @@ #include "ScriptMgr.h" #include "steam_vault.h" +enum MainChambersAccessPanelSays +{ + SAY_FAINT_ECHO = 0, + SAY_LOUD_RUMBLE = 1 +}; + class go_main_chambers_access_panel : public GameObjectScript { public: @@ -28,11 +34,16 @@ public: { if (InstanceScript* instance = go->GetInstanceScript()) { + Creature* doorController = instance->GetCreature(DATA_DOOR_CONTROLLER); if (go->GetEntry() == GO_ACCESS_PANEL_HYDRO) { if (instance->GetBossState(DATA_HYDROMANCER_THESPIA) == DONE) { go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); + if (doorController && doorController->IsAIEnabled) + { + doorController->AI()->Talk(SAY_FAINT_ECHO); + } } } else @@ -40,12 +51,31 @@ public: if (instance->GetBossState(DATA_MEKGINEER_STEAMRIGGER) == DONE) { go->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); + if (doorController && doorController->IsAIEnabled) + { + doorController->AI()->Talk(SAY_FAINT_ECHO); + } } } if (instance->GetBossState(DATA_HYDROMANCER_THESPIA) == DONE && instance->GetBossState(DATA_MEKGINEER_STEAMRIGGER) == DONE) { - if (GameObject* mainGate = instance->GetGameObject(DATA_MAIN_CHAMBERS_DOOR)) + if (doorController) + { + if (doorController->IsAIEnabled) + { + doorController->AI()->Talk(SAY_LOUD_RUMBLE); + } + + doorController->m_Events.AddEventAtOffset([instance]() + { + if (GameObject* mainGate = instance->GetGameObject(DATA_MAIN_CHAMBERS_DOOR)) + { + instance->HandleGameObject(ObjectGuid::Empty, true, mainGate); + } + }, 4s); + } + else if (GameObject* mainGate = instance->GetGameObject(DATA_MAIN_CHAMBERS_DOOR)) { instance->HandleGameObject(ObjectGuid::Empty, true, mainGate); } @@ -60,7 +90,8 @@ public: ObjectData const creatureData[] = { - { NPC_MEKGINEER_STEAMRIGGER, DATA_MEKGINEER_STEAMRIGGER } + { NPC_MEKGINEER_STEAMRIGGER, DATA_MEKGINEER_STEAMRIGGER }, + { NPC_DOOR_CONTROLLER, DATA_DOOR_CONTROLLER } }; ObjectData const objectData[] = diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/steam_vault.h b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/steam_vault.h index d34aff65f..71e384e2f 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/steam_vault.h +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/steam_vault.h @@ -36,7 +36,8 @@ enum steamVault DATA_ACCESS_PANEL_HYDROMANCER = 4, DATA_ACCESS_PANEL_MEKGINEER = 5, - DATA_MAIN_CHAMBERS_DOOR = 6 + DATA_MAIN_CHAMBERS_DOOR = 6, + DATA_DOOR_CONTROLLER = 7 }; enum steamVaultNPCGO @@ -47,6 +48,7 @@ enum steamVaultNPCGO NPC_MEKGINEER_STEAMRIGGER = 17796, NPC_WARLORD_KALITHRESH = 17798, + NPC_DOOR_CONTROLLER = 20926 }; template From 532fd59367181b32c5ea33e7d6dac763ccf7b62b Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Wed, 29 Mar 2023 01:29:35 -0300 Subject: [PATCH 11/16] fix(DB/Creature): Add missing trash pack in Mechanar (#15569) * Create rev_1679691936592297600.sql * Update rev_1679691936592297600.sql --- .../pending_db_world/rev_1679691936592297600.sql | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1679691936592297600.sql diff --git a/data/sql/updates/pending_db_world/rev_1679691936592297600.sql b/data/sql/updates/pending_db_world/rev_1679691936592297600.sql new file mode 100644 index 000000000..8bc0b6f39 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1679691936592297600.sql @@ -0,0 +1,16 @@ +-- +SET @CGUID := 138800; + +DELETE FROM `creature` WHERE `id1` IN (19168, 19510) AND `map`=554 AND `guid` BETWEEN @CGUID+94 AND @CGUID+97; +INSERT INTO `creature` (`guid`, `id1`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `VerifiedBuild`) VALUES +(@CGUID+94, 19510, 554, 3849, 3849, 3, 1, 1, 274.302032470703125, -17.8063602447509765, 26.41173362731933593, 0.157079637050628662, 86400, 0, 0, 0, 0, 0, 0, 0, 0, 43400), +(@CGUID+95, 19168, 554, 3849, 3849, 3, 1, 0, 272.1549072265625, -24.658304214477539, 26.41173171997070312, 6.161012172698974609, 86400, 0, 0, 0, 0, 0, 0, 0, 0, 43400), +(@CGUID+96, 19510, 554, 3849, 3849, 3, 1, 1, 274.13446044921875, -28.7062282562255859, 26.41173362731933593, 0, 86400, 0, 0, 0, 0, 0, 0, 0, 0, 43400), +(@CGUID+97, 19168, 554, 3849, 3849, 3, 1, 0, 272.077850341796875, -20.9663429260253906, 26.41172981262207031, 6.195918560028076171, 86400, 0, 0, 0, 0, 0, 0, 0, 0, 43400); + +DELETE FROM `creature_formations` WHERE `leaderGUID` = @CGUID+94 AND `memberGUID` IN (@CGUID+94, @CGUID+95, @CGUID+96, @CGUID+97); +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES +(@CGUID+94, @CGUID+94, 0, 0, 3), +(@CGUID+94, @CGUID+95, 0, 0, 3), +(@CGUID+94, @CGUID+96, 0, 0, 3), +(@CGUID+94, @CGUID+97, 0, 0, 3); From 1c09af401f1348d91e6eaba48ea121e84837242b Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Wed, 29 Mar 2023 01:30:59 -0300 Subject: [PATCH 12/16] fix(DB/SAI): Update Shadow Labyrinth combat SAI (#15565) * Create rev_1679676055115473900.sql * Update rev_1679676055115473900.sql * Update rev_1679676055115473900.sql * Update rev_1679676055115473900.sql --- .../rev_1679676055115473900.sql | 300 ++++++++++++++++++ 1 file changed, 300 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1679676055115473900.sql diff --git a/data/sql/updates/pending_db_world/rev_1679676055115473900.sql b/data/sql/updates/pending_db_world/rev_1679676055115473900.sql new file mode 100644 index 000000000..891f0b07b --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1679676055115473900.sql @@ -0,0 +1,300 @@ +-- +DELETE FROM `spelldifficulty_dbc` WHERE `ID` IN (33480, 32863); +INSERT INTO `spelldifficulty_dbc` (`ID`, `DifficultySpellID_1`, `DifficultySpellID_2`) VALUES +(33480, 33480, 38226), +(32863, 32863, 38252); + +-- BroadcastID +UPDATE `creature_text` SET `BroadcastTextId` = 16798 WHERE `Text` = 'Ruin finds us all!'; +UPDATE `creature_text` SET `BroadcastTextId` = 16799 WHERE `Text` = 'In Sargeras\' name!'; +UPDATE `creature_text` SET `BroadcastTextId` = 16800 WHERE `Text` = 'The end comes for you!'; +UPDATE `creature_text` SET `BroadcastTextId` = 16801 WHERE `Text` = 'I do as I must!'; +UPDATE `creature_text` SET `BroadcastTextId` = 16802 WHERE `Text` = 'The Legion reigns!'; +UPDATE `creature_text` SET `BroadcastTextId` = 16803 WHERE `Text` = 'I shall be rewarded!'; + +-- Cabal Cultist (18631) +UPDATE `creature_template_addon` SET `bytes2` = 1, `auras` = '8876' WHERE (`entry` = 18631); -- This is from ACID / TC - I don't believe this creature uses an aura +DELETE FROM `creature_template_addon` WHERE (`entry` = 20640); +INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(20640, 0, 0, 0, 1, 0, 0, '8876'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18631); +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`, `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 +(18631, 0, 0, 0, 4, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Cultist - On Aggro - Say Line 0'), +(18631, 0, 1, 0, 13, 0, 100, 0, 5000, 10000, 0, 0, 0, 11, 15614, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Cultist - On Victim Casting \'null\' - Cast \'Kick\''), +(18631, 0, 2, 0, 2, 0, 100, 1, 0, 15, 0, 0, 0, 25, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Cultist - Between 0-15% Health - Flee For Assist (No Repeat)'); + +-- Cabal Executioner (18632) +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18632); +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`, `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 +(18632, 0, 0, 0, 4, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Executioner - On Aggro - Say Line 0'), +(18632, 0, 1, 0, 0, 0, 100, 2, 7200, 15900, 15700, 32500, 0, 11, 33500, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Executioner - In Combat - Cast \'Whirlwind\' (Normal Dungeon)'), +(18632, 0, 2, 0, 0, 0, 100, 4, 7200, 15900, 15700, 32500, 0, 11, 15578, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Executioner - In Combat - Cast \'Whirlwind\' (Heroic Dungeon)'), +(18632, 0, 3, 0, 12, 0, 100, 0, 0, 20, 8000, 12000, 0, 11, 7160, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Executioner - Target Between 0-20% Health - Cast \'Execute\''), +(18632, 0, 4, 0, 2, 0, 100, 1, 0, 25, 0, 0, 0, 11, 30485, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Executioner - Between 0-25% Health - Cast \'Enrage\' (No Repeat)'); + +-- Cabal Acolyte (18633) +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18633); +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`, `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 +(18633, 0, 0, 0, 23, 0, 100, 0, 33482, 0, 3600, 3600, 0, 11, 33482, 32, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Acolyte - On Aura Missing - Cast \'Shadow Defense\''), +(18633, 0, 1, 0, 4, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Acolyte - On Aggro - Say Line 0'), +(18633, 0, 2, 0, 74, 0, 100, 2, 0, 60, 15700, 27700, 40, 11, 12039, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Acolyte - On Friendly Between 0-60% Health - Cast \'Heal\' (Normal Dungeon)'), +(18633, 0, 3, 0, 74, 0, 100, 4, 0, 60, 15700, 27700, 40, 11, 38209, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Acolyte - On Friendly Between 0-60% Health - Cast \'Heal\' (Heroic Dungeon)'), +(18633, 0, 4, 0, 74, 0, 100, 2, 0, 50, 13200, 19300, 40, 11, 25058, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Acolyte - On Friendly Between 0-50% Health - Cast \'Renew\' (Normal Dungeon)'), +(18633, 0, 5, 0, 74, 0, 100, 4, 0, 50, 13200, 19300, 40, 11, 38210, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Acolyte - On Friendly Between 0-50% Health - Cast \'Renew\' (Heroic Dungeon)'), +(18633, 0, 6, 0, 2, 0, 100, 1, 0, 15, 0, 0, 0, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Acolyte - Between 0-15% Health - Flee For Assist (No Repeat)'); + +-- Cabal Summoner (18634) +DELETE FROM `creature_text` WHERE `CreatureID` = 18634; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(18634, 0, 0, 'Ruin finds us all!', 12, 0, 100, 0, 0, 0, 16798, 0, 'Cabal Summoner'), +(18634, 0, 1, 'In Sargeras\' name!', 12, 0, 100, 0, 0, 0, 16799, 0, 'Cabal Summoner'), +(18634, 0, 2, 'The end comes for you!', 12, 0, 100, 0, 0, 0, 16800, 0, 'Cabal Summoner'), +(18634, 0, 3, 'I do as I must!', 12, 0, 100, 0, 0, 0, 16801, 0, 'Cabal Summoner'), +(18634, 0, 4, 'The Legion reigns!', 12, 0, 100, 0, 0, 0, 16802, 0, 'Cabal Summoner'), +(18634, 0, 5, 'I shall be rewarded!', 12, 0, 100, 0, 0, 0, 16803, 0, 'Cabal Summoner'), +(18634, 1, 0, '%s begins to summon in a Cabal Deathsworn!', 16, 0, 100, 0, 0, 0, 16271, 0, 'Cabal Summoner'), +(18634, 2, 0, '%s begins to summon in a Cabal Acolyte!', 16, 0, 100, 0, 0, 0, 16275, 0, 'Cabal Summoner'), +(18634, 3, 0, '%s summons a Cabal Acolyte to his aid!', 16, 0, 100, 0, 0, 0, 16278, 0, 'Cabal Summoner'), +(18634, 4, 0, '%s summons a Cabal Deathsworn to his aid!', 16, 0, 100, 0, 0, 0, 16280, 0, 'Cabal Summoner'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18634); +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`, `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 +(18634, 0, 0, 0, 4, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Summoner - On Aggro - Say Line 0'), +(18634, 0, 1, 0, 0, 0, 100, 2, 1800, 6200, 4800, 16900, 0, 11, 14034, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Summoner - In Combat - Cast \'Fireball\' (Normal Dungeon)'), +(18634, 0, 2, 0, 0, 0, 100, 4, 1800, 6200, 4800, 16900, 0, 11, 15228, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Summoner - In Combat - Cast \'Fireball\' (Heroic Dungeon)'), +(18634, 0, 3, 5, 0, 0, 100, 0, 4300, 17200, 13300, 25300, 0, 11, 33506, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Summoner - In Combat - Cast \'Summon Cabal Deathsworn\''), +(18634, 0, 4, 6, 0, 0, 100, 0, 3600, 33200, 12100, 27900, 0, 11, 33507, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Summoner - In Combat - Cast \'Summon Cabal Acolyte\''), +(18634, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Summoner - On Link - Say Line 1'), +(18634, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Summoner - On Link - Say Line 2'), +(18634, 0, 7, 0, 17, 0, 100, 0, 19208, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Summoner - On Summoned Unit - Say Line 3'), +(18634, 0, 8, 0, 17, 0, 100, 0, 19209, 0, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Summoner - On Summoned Unit - Say Line 4'); + +-- Cabal Deathsworn (18635) +DELETE FROM `creature_text` WHERE `CreatureID`=18635 AND `GroupID`=1; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES (18635, 1, 0, '%s goes into a frenzy!', 16, 0, 100, 0, 0, 0, 2384, 0, 'Cabal Deathsworn'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18635); +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`, `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 +(18635, 0, 0, 0, 4, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Deathsworn - On Aggro - Say Line 0'), +(18635, 0, 1, 0, 0, 0, 100, 0, 10200, 18100, 14100, 26200, 0, 11, 33480, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Deathsworn - In Combat - Cast \'Black Cleave\''), +(18635, 0, 2, 0, 0, 0, 100, 0, 10900, 28200, 12100, 22900, 0, 11, 11428, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Deathsworn - In Combat - Cast \'Knockdown\''), +(18635, 0, 3, 4, 2, 0, 100, 1, 0, 25, 0, 0, 0, 11, 8599, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Deathsworn - Between 0-25% Health - Cast \'Enrage\'(No Repeat)'), +(18635, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Deathsworn - On Link - Say Line 1'); + +-- Cabal Assassin (18636) +UPDATE `creature_template_addon` SET `bytes2` = 1, `auras` = '30982 30991 30998' WHERE (`entry` = 18636); +DELETE FROM `creature_template_addon` WHERE (`entry` = 20639); +INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(20639, 0, 0, 0, 1, 0, 0, '30982 30991 30998'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18636); +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`, `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 +(18636, 0, 0, 0, 4, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Assassin - On Aggro - Say Line 0'), +(18636, 0, 1, 0, 0, 0, 100, 1, 0, 1000, 0, 0, 0, 11, 30986, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Assassin - In Combat - Cast \'Cheap Shot\' (No Repeat)'), +(18636, 0, 2, 0, 0, 0, 100, 0, 5000, 7000, 4500, 6500, 0, 11, 30992, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Assassin - In Combat - Cast \'Backstab\''); + +-- Cabal Shadow Priest (18637) +UPDATE `creature_template_addon` SET `bytes2` = 1, `auras` = '16592' WHERE (`entry` = 18637); +DELETE FROM `creature_template_addon` WHERE (`entry` = 20646); +INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(20646, 0, 0, 0, 1, 0, 0, '16592'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18637); +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`, `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 +(18637, 0, 0, 0, 4, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Shadow Priest - On Aggro - Say Line 0'), +(18637, 0, 1, 0, 0, 0, 100, 2, 3200, 10800, 4800, 9700, 0, 11, 17165, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Shadow Priest - In Combat - Cast \'Mind Flay\' (Normal Dungeon)'), +(18637, 0, 2, 0, 0, 0, 100, 4, 3200, 10800, 2400, 4800, 0, 11, 38243, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Shadow Priest - In Combat - Cast \'Mind Flay\' (Heroic Dungeon)'), +(18637, 0, 3, 0, 0, 0, 100, 2, 3600, 12100, 5400, 12900, 0, 11, 14032, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Shadow Priest - In Combat - Cast \'Shadow Word: Pain\' (Normal Dungeon)'), +(18637, 0, 4, 0, 0, 0, 100, 4, 3100, 12100, 4800, 7200, 0, 11, 17146, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Shadow Priest - In Combat - Cast \'Shadow Word: Pain\' (Heroic Dungeon)'); + +-- Cabal Zealot (18638) +DELETE FROM `creature_text` WHERE `CreatureID` = 18638; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(18638, 0, 0, 'Ruin finds us all!', 12, 0, 100, 0, 0, 0, 16798, 0, 'Cabal Zealot'), +(18638, 0, 1, 'In Sargeras\' name!', 12, 0, 100, 0, 0, 0, 16799, 0, 'Cabal Zealot'), +(18638, 0, 2, 'The end comes for you!', 12, 0, 100, 0, 0, 0, 16800, 0, 'Cabal Zealot'), +(18638, 0, 3, 'I do as I must!', 12, 0, 100, 0, 0, 0, 16801, 0, 'Cabal Zealot'), +(18638, 0, 4, 'The Legion reigns!', 12, 0, 100, 0, 0, 0, 16802, 0, 'Cabal Zealot'), +(18638, 0, 5, 'I shall be rewarded!', 12, 0, 100, 0, 0, 0, 16803, 0, 'Cabal Zealot'), +(18638, 1, 0, '%s makes some strange gestures.', 16, 8, 100, 0, 0, 0, 16259, 0, 'Cabal Zealot'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18638); +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`, `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 +(18638, 0, 0, 0, 4, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Zealot - On Aggro - Say Line 0'), +(18638, 0, 1, 0, 0, 0, 100, 2, 0, 0, 3400, 4500, 0, 11, 12471, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Zealot - In Combat CMC - Cast \'Shadow Bolt\' (Normal Dungeon)'), +(18638, 0, 2, 0, 0, 0, 100, 4, 0, 0, 3400, 4500, 0, 11, 15472, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Zealot - In Combat CMC - Cast \'Shadow Bolt\' (Heroic Dungeon)'), +(18638, 0, 3, 4, 2, 0, 100, 1, 0, 50, 0, 0, 0, 11, 33949, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Zealot - Between 0-50% Health - Cast \'Shape of the Beast\' (No Repeat)'), +(18638, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 11, 33499, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Zealot - On Link - Cast \'Shape of the Beast\''), +(18638, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Zealot - On Link - Say Line 1'); + +-- Cabal Spellbinder (18639) +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18639); +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`, `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 +(18639, 0, 0, 0, 4, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Spellbinder - On Aggro - Say Line 0'), +(18639, 0, 1, 0, 0, 0, 100, 0, 5700, 19300, 9600, 16900, 0, 11, 32691, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Spellbinder - In Combat - Cast \'Spell Shock\''), +(18639, 0, 2, 0, 0, 0, 100, 0, 8000, 12000, 20000, 30000, 0, 11, 33502, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Spellbinder - In Combat - Cast \'Brain Wash\''), +(18639, 0, 3, 0, 23, 0, 100, 1, 8734, 1, 0, 0, 0, 11, 8734, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Spellbinder - On Has Aura - Cast \'Blackfathom Channeling\' (No Repeat)'); + +-- Cabal Warlock (18640) +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18640); +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`, `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 +(18640, 0, 0, 0, 23, 0, 100, 0, 13787, 0, 3600, 3600, 0, 11, 13787, 32, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Warlock - On Aura Missing - Cast \'Demon Armor\''), +(18640, 0, 1, 0, 4, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Warlock - On Aggro - Say Line 0'), +(18640, 0, 2, 0, 0, 0, 100, 2, 0, 0, 3600, 4800, 0, 11, 12471, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Warlock - In Combat - Cast \'Shadow Bolt\' (Normal Dungeon)'), +(18640, 0, 3, 0, 0, 0, 100, 4, 0, 0, 3600, 4800, 0, 11, 15232, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Warlock - In Combat - Cast \'Shadow Bolt\' (Heroic Dungeon)'), +(18640, 0, 4, 0, 0, 0, 100, 0, 7800, 24100, 19300, 36200, 0, 11, 32863, 32, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Warlock - In Combat - Cast \'Seed of Corruption\''); + +-- Cabal Familiar (18641) +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18641); +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`, `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 +(18641, 0, 0, 0, 0, 0, 100, 2, 0, 0, 2400, 3600, 0, 11, 20801, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Familiar - In Combat - Cast \'Firebolt\' (Normal Dungeon)'), +(18641, 0, 1, 0, 0, 0, 100, 4, 0, 0, 2400, 3600, 0, 11, 38239, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Familiar - In Combat - Cast \'Firebolt\' (Heroic Dungeon)'); + +-- Fel Guardhound (18642) +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18642); +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`, `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 +(18642, 0, 0, 0, 0, 0, 100, 0, 4800, 14500, 12100, 18100, 0, 11, 30849, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Fel Guardhound - In Combat - Cast \'Spell Lock\''); + +-- Invisible Target (18793) +UPDATE `creature_template_addon` SET `bytes2` = 1, `visibilityDistanceType` = 4 WHERE (`entry` = 18793); + +-- Cabal Ritualist (18794) +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18794); +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`, `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 +(18794, 0, 0, 0, 25, 0, 100, 0, 0, 0, 0, 0, 0, 11, 32958, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - On Reset - Cast \'Crystal Channel\''), +(18794, 0, 1, 0, 4, 0, 100, 512, 0, 0, 0, 0, 0, 88, 1879400, 1879403, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - On Aggro - Run Random Script'), +(18794, 0, 2, 0, 4, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - On Aggro - Say Line 0'), +(18794, 0, 3, 0, 0, 1, 100, 2, 0, 0, 3400, 4500, 0, 11, 15497, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - In Combat CMC - Cast \'Frostbolt\' (Normal Dungeon) (Phase 1)'), +(18794, 0, 4, 0, 0, 1, 100, 4, 0, 0, 3400, 4500, 0, 11, 12675, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - In Combat CMC - Cast \'Frostbolt\' (Heroic Dungeon) (Phase 1)'), +(18794, 0, 5, 0, 0, 1, 100, 2, 10000, 18000, 12100, 16900, 0, 11, 15532, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - In Combat - Cast \'Frost Nova\' (Normal Dungeon) (Phase 1)'), +(18794, 0, 6, 0, 0, 1, 100, 4, 10000, 18000, 12100, 16900, 0, 11, 15063, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - In Combat - Cast \'Frost Nova\' (Normal Dungeon) (Phase 1)'), +(18794, 0, 7, 0, 0, 2, 100, 2, 0, 0, 5000, 5000, 0, 11, 33832, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - In Combat CMC - Cast \'Arcane Missiles\' (Normal Dungeon) (Phase 2)'), +(18794, 0, 8, 0, 0, 2, 100, 4, 0, 0, 5000, 5000, 0, 11, 38263, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - In Combat CMC - Cast \'Arcane Missiles\' (Heroic Dungeon) (Phase 2)'), +(18794, 0, 9, 0, 0, 2, 100, 0, 2400, 14300, 5200, 21700, 0, 11, 33487, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - In Combat - Cast \'Addle Humanoid\' (Phase 2)'), +(18794, 0, 10, 0, 0, 4, 100, 0, 3600, 6200, 4800, 11200, 0, 11, 9574, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - In Combat - Cast \'Flame Buffet\' (Phase 3)'), +(18794, 0, 11, 0, 0, 4, 100, 2, 6100, 20200, 8400, 22900, 0, 11, 20795, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - In Combat - Cast \'Fire Blast\' (Normal Dungeon) (Phase 3)'), +(18794, 0, 12, 0, 0, 4, 100, 4, 6100, 20200, 8400, 22900, 0, 11, 14145, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - In Combat - Cast \'Fire Blast\' (Heroic Dungeon) (Phase 3)'), +(18794, 0, 13, 0, 0, 8, 100, 0, 10000, 15000, 12100, 19300, 0, 11, 12540, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - In Combat - Cast \'Gouge\' (Phase 4)'), +(18794, 0, 14, 0, 15, 0, 100, 4, 15, 15000, 20000, 0, 0, 11, 17201, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - Friendly Crowd Controlled - Cast \'Dispel Magic\' (Heroic Dungeon)'), +(18794, 0, 15, 0, 2, 0, 100, 1, 0, 15, 0, 0, 0, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - Between 0-15% Health - Flee For Assist (No Repeat)'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` BETWEEN 1879400 AND 1879403); +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`, `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 +(1879400, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - On Script - Set Event Phase 1'), +(1879400, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 71, 0, 1, 12421, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - On Script - Set Mainhand Item'), +(1879401, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - On Script - Set Event Phase 2'), +(1879401, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 71, 0, 1, 14618, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - On Script - Set Mainhand Item'), +(1879402, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 22, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - On Script - Set Event Phase 3'), +(1879402, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 71, 0, 1, 13718, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - On Script - Set Mainhand Item'), +(1879403, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 22, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - On Script - Set Event Phase 4'), +(1879403, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 71, 0, 1, 19980, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - On Script - Set Mainhand Item'), +(1879403, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 71, 0, 2, 0, 19980, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - On Script - Set Offhand Item'); + +-- Fel Overseer (18796) +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18796); +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`, `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 +(18796, 0, 0, 0, 4, 0, 15, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Fel Overseer - On Aggro - Say Line 0'), +(18796, 0, 1, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 11, 27577, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Fel Overseer - On Aggro - Cast \'Intercept\''), +(18796, 0, 2, 0, 0, 0, 100, 4, 4800, 9300, 15700, 20300, 0, 11, 16856, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Fel Overseer - In Combat - Cast \'Mortal Strike\' (Heroic Dungeon)'), +(18796, 0, 3, 0, 0, 0, 100, 4, 30000, 30000, 30000, 30000, 0, 11, 19134, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Fel Overseer - In Combat - Cast \'Frightening Shout\' (Heroic Dungeon)'), +(18796, 0, 4, 0, 0, 0, 100, 0, 13300, 18900, 15700, 26500, 0, 11, 30471, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Fel Overseer - In Combat - Cast \'Uppercut\''); + +-- Tortured Skeleton +UPDATE `creature_template` SET `unit_flags`=`unit_flags`|33587200 WHERE (`entry` IN (18797, 20662)); + +DELETE FROM `creature_template_addon` WHERE (`entry` IN (18797, 20662)); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18797); +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`, `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 +(18797, 0, 0, 1, 4, 0, 100, 0, 0, 0, 0, 0, 0, 91, 7, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tortured Skeleton - On Aggro - Remove FlagStandstate Dead'), +(18797, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 19, 33554432, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tortured Skeleton - On Aggro - Remove Flags Not Selectable'), +(18797, 0, 2, 3, 25, 0, 100, 0, 0, 0, 0, 0, 0, 18, 33554432, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tortured Skeleton - On Reset - Set Flags Not Selectable'), +(18797, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 90, 7, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Tortured Skeleton - On Reset - Set Flag Standstate Dead'); + +-- Cabal Fanatic (18830) +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18830); +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`, `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 +(18830, 0, 0, 0, 4, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Fanatic - On Aggro - Say Line 0'), +(18830, 0, 1, 0, 0, 0, 100, 0, 9600, 20500, 13300, 22900, 0, 11, 12021, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Cabal Fanatic - In Combat - Cast \'Fixate\''); + +-- Malicious Instructor (18848) +UPDATE `creature_template_addon` SET `bytes2` = 1, `auras` = '19818' WHERE (`entry` IN (18848, 20656)); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18848); +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`, `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 +(18848, 0, 0, 0, 4, 0, 15, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Malicious Instructor - On Aggro - Say Line 0'), +(18848, 0, 1, 0, 0, 0, 100, 4, 16100, 25300, 21700, 25300, 0, 11, 6713, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Malicious Instructor - In Combat - Cast \'Disarm\' (Heroic Dungeon)'), +(18848, 0, 2, 0, 0, 0, 100, 0, 10800, 15700, 18100, 29100, 0, 11, 33493, 32, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Malicious Instructor - In Combat - Cast \'Mark of Malice\''), +(18848, 0, 3, 0, 0, 0, 100, 0, 9600, 16900, 7200, 18100, 0, 11, 33501, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Malicious Instructor - In Combat - Cast \'Shadow Nova\''); + +-- Spy To'gun (18891) +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 18891; +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18891); +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`, `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 +(18891, 0, 0, 0, 19, 0, 100, 1, 10091, 0, 0, 0, 0, 80, 1889100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spy To\'gun - On Quest \'The Soul Devices\' Taken - Run Script (No Repeat)'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 1889100); +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`, `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 +(1889100, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 20, 182942, 0, 0, 0, 0, 0, 0, 0, 'Spy To\'gun - On Script - Activate Closest Gameobject (Cage)'), +(1889100, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Spy To\'gun - On Script - Set Run Off'), +(1889100, 9, 2, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 0, 69, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, -63.5416, 42.9283, 0.206252, 2.42972, 'Spy To\'gun - On Script - Move To Position'); + +-- Summoned Cabal Deathsworn (19209) +DELETE FROM `creature_text` WHERE `CreatureID`=19209; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(19209, 0, 0, '%s goes into a frenzy!', 16, 0, 100, 0, 0, 0, 2384, 0, 'Summoned Cabal Deathsworn'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 19209); +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`, `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 +(19209, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Deathsworn - On Just Summoned - Set In Combat With Zone'), +(19209, 0, 1, 0, 0, 0, 100, 0, 10200, 18100, 14100, 26200, 0, 11, 33480, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Deathsworn - In Combat - Cast \'Black Cleave\''), +(19209, 0, 2, 0, 0, 0, 100, 0, 10900, 28200, 12100, 22900, 0, 11, 11428, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Deathsworn - In Combat - Cast \'Knockdown\''), +(19209, 0, 3, 4, 2, 0, 100, 1, 0, 25, 0, 0, 0, 11, 8599, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Deathsworn - Between 0-25% Health - Cast \'Enrage\' (No Repeat)'), +(19209, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Deathsworn - On Link - Say Line 0'), +(19209, 0, 5, 0, 7, 0, 100, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Deathsworn - On Evade - Despawn (0)'), +(19209, 0, 6, 0, 7, 0, 100, 0, 0, 0, 0, 0, 0, 18, 33554432, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Deathsworn - On Evade - Set Flag Not Selectable'); + +-- Summoned Cabal Acolyte (19208) +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 19208); +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`, `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 +(19208, 0, 0, 1, 54, 0, 100, 0, 0, 0, 0, 0, 0, 11, 33482, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Acolyte - On Just Summoned - Cast \'Shadow Defense\''), +(19208, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Acolyte - On Link - Set In Combat With Zone'), +(19208, 0, 2, 0, 74, 0, 100, 2, 0, 60, 15700, 27700, 40, 11, 12039, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Acolyte - On Friendly Between 0-60% Health - Cast \'Heal\' (Normal Dungeon)'), +(19208, 0, 3, 0, 74, 0, 100, 4, 0, 60, 15700, 27700, 40, 11, 38209, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Acolyte - On Friendly Between 0-60% Health - Cast \'Heal\' (Heroic Dungeon)'), +(19208, 0, 4, 0, 74, 0, 100, 2, 0, 50, 13200, 19300, 40, 11, 25058, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Acolyte - On Friendly Between 0-50% Health - Cast \'Renew\' (Normal Dungeon)'), +(19208, 0, 5, 0, 74, 0, 100, 4, 0, 50, 13200, 19300, 40, 11, 38210, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Acolyte - On Friendly Between 0-50% Health - Cast \'Renew\' (Heroic Dungeon)'), +(19208, 0, 6, 0, 2, 0, 100, 1, 0, 15, 0, 0, 0, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Acolyte - Between 0-15% Health - Flee For Assist (No Repeat)'), +(19208, 0, 7, 0, 7, 0, 100, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Acolyte - On Evade - Despawn (0)'), +(19208, 0, 8, 0, 7, 0, 100, 0, 0, 0, 0, 0, 0, 18, 33554432, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Summoned Cabal Acolyte - On Evade - Set Flag Not Selectable'); + +-- Ambassador Hellmaw Arena +-- Target Conditions +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` IN (32958, 36220)) AND (`ConditionTypeOrReference` = 31) AND (`ConditionValue2` IN (21159, 18731, 18793)); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 32958, 0, 0, 31, 0, 3, 18793, 0, 0, 0, 0, '', 'Spell Crystal Channel (32958) only targets Invisible Target (18793)'), +(13, 1, 36220, 0, 0, 31, 0, 3, 18731, 0, 0, 0, 0, '', 'Spell Containment Beam (36220) only targets Ambassador Hellmaw (18731)'); + +-- Containment Beam +UPDATE `creature_template` SET `AIName` = '' WHERE `entry` = 21159; +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 21159) AND (`source_type` = 0); + +-- Invisible Target +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18793); +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`, `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 +(18793, 0, 0, 0, 23, 0, 100, 0, 32958, 1, 3600, 3600, 0, 86, 36220, 0, 19, 21159, 10, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Invisible Target - On Aura \'Crystal Channel\' - Cross Cast \'Containment Beam\''), +(18793, 0, 1, 0, 23, 0, 100, 0, 32958, 0, 3600, 3600, 0, 28, 36220, 0, 0, 0, 0, 0, 19, 21159, 10, 0, 0, 0, 0, 0, 0, 'Invisible Target - On Aura \'Crystal Channel\' Missing - Remove Aura \'Containment Beam\''); + +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceGroup` = 2) AND (`SourceEntry` = 18793); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 2, 18793, 0, 0, 29, 1, 18794, 20, 0, 1, 0, 0, '', 'Only play if there are no Cabal Ritualists alive nearby'); + +-- Cabal Ritualist +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 18794) AND (`source_type` = 0) AND (`id` IN (16)); +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`, `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 +(18794, 0, 16, 0, 6, 0, 100, 512, 0, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 0, 19, 18731, 200, 0, 0, 0, 0, 0, 0, 'Cabal Ritualist - On Just Died - Do Action on \'Ambassador Hellmaw\''); + +UPDATE `smart_scripts` SET `action_param2`=0 WHERE (`entryorguid` = 18794) AND (`source_type` = 0) AND (`id` IN (3, 4, 7, 8)); + +-- Targets +UPDATE `creature_template_addon` SET `visibilityDistanceType` = 5 WHERE (`entry` IN (18793, 21159)); From 43336a8443d41692a2a55505a04a1ac4b91ce116 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Wed, 29 Mar 2023 06:32:12 +0200 Subject: [PATCH 13/16] fix(Scripts/SethekkHalls): Talon King Ikiss (#15471) * fix(Scripts/SethekkHalls): Talon King Ikiss should cast his combo at 80%, 50% and 25%. After finishing the explosion, Talon King Ikiss should reset aggro. Talon King Ikiss cast sheep randomly also in normal mode. Fixes #15466 * Update. * Update. --- .../SethekkHalls/boss_talon_king_ikiss.cpp | 78 +++++++++++++++---- 1 file changed, 61 insertions(+), 17 deletions(-) diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp index 0f89a7116..521854100 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_talon_king_ikiss.cpp @@ -56,6 +56,7 @@ struct boss_talon_king_ikiss : public BossAI _Reset(); _spoken = false; _manaShield = false; + _comboHealthStages.fill(false); } void MoveInLineOfSight(Unit* who) override @@ -74,25 +75,13 @@ struct boss_talon_king_ikiss : public BossAI _JustEngagedWith(); Talk(SAY_AGGRO); - scheduler.Schedule(35s, [this](TaskContext context) - { - me->InterruptNonMeleeSpells(false); - DoCastAOE(SPELL_BLINK); - Talk(EMOTE_ARCANE_EXP); - context.Repeat(35s, 40s); - - scheduler.Schedule(1s, [this](TaskContext) - { - DoCastAOE(SPELL_ARCANE_EXPLOSION); - DoCastSelf(SPELL_ARCANE_BUBBLE, true); - }); - }).Schedule(5s, [this](TaskContext context) + scheduler.Schedule(5s, [this](TaskContext context) { DoCastAOE(SPELL_ARCANE_VOLLEY); context.Repeat(7s, 12s); }).Schedule(8s, [this](TaskContext context) { - IsHeroic() ? DoCastRandomTarget(SPELL_POLYMORPH) : DoCastMaxThreat(SPELL_POLYMORPH); + DoCastRandomTarget(SPELL_POLYMORPH); context.Repeat(15s, 17500ms); }); @@ -119,6 +108,60 @@ struct boss_talon_king_ikiss : public BossAI void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damagetype*/, SpellSchoolMask /*damageSchoolMask*/) override { + if (!_comboHealthStages[0] && me->HealthBelowPctDamaged(80, damage)) + { + _comboHealthStages[0] = true; + + me->InterruptNonMeleeSpells(false); + DoCastSelf(SPELL_ARCANE_BUBBLE, true); + DoCastAOE(SPELL_BLINK); + Talk(EMOTE_ARCANE_EXP); + + scheduler.Schedule(1s, [this](TaskContext) + { + DoCastAOE(SPELL_ARCANE_EXPLOSION); + }).Schedule(6500ms, [this](TaskContext /*context*/) + { + me->GetThreatMgr().ResetAllThreat(); + }); + } + + if (!_comboHealthStages[1] && me->HealthBelowPctDamaged(50, damage)) + { + _comboHealthStages[1] = true; + + me->InterruptNonMeleeSpells(false); + DoCastSelf(SPELL_ARCANE_BUBBLE, true); + DoCastAOE(SPELL_BLINK); + Talk(EMOTE_ARCANE_EXP); + + scheduler.Schedule(1s, [this](TaskContext) + { + DoCastAOE(SPELL_ARCANE_EXPLOSION); + }).Schedule(6500ms, [this](TaskContext /*context*/) + { + me->GetThreatMgr().ResetAllThreat(); + }); + } + + if (!_comboHealthStages[2] && me->HealthBelowPctDamaged(25, damage)) + { + _comboHealthStages[2] = true; + + me->InterruptNonMeleeSpells(false); + DoCastSelf(SPELL_ARCANE_BUBBLE, true); + DoCastAOE(SPELL_BLINK); + Talk(EMOTE_ARCANE_EXP); + + scheduler.Schedule(1s, [this](TaskContext) + { + DoCastAOE(SPELL_ARCANE_EXPLOSION); + }).Schedule(6500ms, [this](TaskContext /*context*/) + { + me->GetThreatMgr().ResetAllThreat(); + }); + } + if (!_manaShield && me->HealthBelowPctDamaged(20, damage)) { DoCast(me, SPELL_MANA_SHIELD); @@ -132,9 +175,10 @@ struct boss_talon_king_ikiss : public BossAI Talk(SAY_SLAY); } - private: - bool _spoken; - bool _manaShield; +private: + bool _spoken; + bool _manaShield; + std::array _comboHealthStages; }; // 38194 - Blink From 2b4a43e44e0ff727dd859b811d8b86c3cddd83fb Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Wed, 29 Mar 2023 04:34:46 +0000 Subject: [PATCH 14/16] chore(DB): import pending files Referenced commit(s): 43336a8443d41692a2a55505a04a1ac4b91ce116 --- .../rev_1679676055115473900.sql => db_world/2023_03_29_03.sql} | 1 + .../rev_1679691936592297600.sql => db_world/2023_03_29_04.sql} | 1 + 2 files changed, 2 insertions(+) rename data/sql/updates/{pending_db_world/rev_1679676055115473900.sql => db_world/2023_03_29_03.sql} (99%) rename data/sql/updates/{pending_db_world/rev_1679691936592297600.sql => db_world/2023_03_29_04.sql} (97%) diff --git a/data/sql/updates/pending_db_world/rev_1679676055115473900.sql b/data/sql/updates/db_world/2023_03_29_03.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1679676055115473900.sql rename to data/sql/updates/db_world/2023_03_29_03.sql index 891f0b07b..fd1fdd3ec 100644 --- a/data/sql/updates/pending_db_world/rev_1679676055115473900.sql +++ b/data/sql/updates/db_world/2023_03_29_03.sql @@ -1,3 +1,4 @@ +-- DB update 2023_03_29_02 -> 2023_03_29_03 -- DELETE FROM `spelldifficulty_dbc` WHERE `ID` IN (33480, 32863); INSERT INTO `spelldifficulty_dbc` (`ID`, `DifficultySpellID_1`, `DifficultySpellID_2`) VALUES diff --git a/data/sql/updates/pending_db_world/rev_1679691936592297600.sql b/data/sql/updates/db_world/2023_03_29_04.sql similarity index 97% rename from data/sql/updates/pending_db_world/rev_1679691936592297600.sql rename to data/sql/updates/db_world/2023_03_29_04.sql index 8bc0b6f39..fa11bc0dc 100644 --- a/data/sql/updates/pending_db_world/rev_1679691936592297600.sql +++ b/data/sql/updates/db_world/2023_03_29_04.sql @@ -1,3 +1,4 @@ +-- DB update 2023_03_29_03 -> 2023_03_29_04 -- SET @CGUID := 138800; From 7f186cce7a4ee436fca5f401a4c4ae16609e8405 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Wed, 29 Mar 2023 03:12:29 -0300 Subject: [PATCH 15/16] fix(Scripts/Arcatraz): Millhouse uses Iceblock under 50 percent hp (#15644) --- .../Outland/TempestKeep/arcatraz/arcatraz.cpp | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp index 445a5f925..0362a6097 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp @@ -67,8 +67,7 @@ enum MillhouseEvents EVENT_MILL_CHECK_HEALTH = 20, EVENT_MILL_PYROBLAST = 21, - EVENT_MILL_BASE_SPELL = 22, - EVENT_MILL_ICEBLOCK = 23 + EVENT_MILL_BASE_SPELL = 22 }; class npc_millhouse_manastorm : public CreatureScript @@ -81,6 +80,7 @@ public: npc_millhouse_manastormAI(Creature* creature) : ScriptedAI(creature) { instance = creature->GetInstanceScript(); + _usedIceblock = false; } InstanceScript* instance; @@ -101,6 +101,7 @@ public: void Reset() override { events.Reset(); + _usedIceblock = false; } void AttackStart(Unit* who) override @@ -124,7 +125,16 @@ public: events.ScheduleEvent(EVENT_MILL_CHECK_HEALTH, 1000); events.ScheduleEvent(EVENT_MILL_PYROBLAST, 30000); events.ScheduleEvent(EVENT_MILL_BASE_SPELL, 2000); - events.ScheduleEvent(EVENT_MILL_ICEBLOCK, 1000); + } + + void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*type*/, SpellSchoolMask /*school*/) override + { + if (me->HealthBelowPctDamaged(50, damage) && !_usedIceblock) + { + _usedIceblock = true; + Talk(SAY_ICEBLOCK); + DoCastSelf(SPELL_ICEBLOCK, true); + } } void UpdateAI(uint32 diff) override @@ -208,15 +218,6 @@ public: me->CastSpell(me->GetVictim(), SPELL_PYROBLAST, false); events.ScheduleEvent(EVENT_MILL_PYROBLAST, 30000); break; - case EVENT_MILL_ICEBLOCK: - if (me->GetDistance(me->GetVictim()) < 5.0f) - { - Talk(SAY_ICEBLOCK); - me->CastSpell(me, SPELL_ICEBLOCK, true); - break; - } - events.ScheduleEvent(EVENT_MILL_ICEBLOCK, 1000); - break; case EVENT_MILL_BASE_SPELL: switch (RAND(SPELL_FIREBALL, SPELL_ARCANE_MISSILES, SPELL_FROSTBOLT)) { @@ -240,6 +241,9 @@ public: DoMeleeAttackIfReady(); } + + private: + bool _usedIceblock; }; CreatureAI* GetAI(Creature* creature) const override From d030260dd4b7e0aae88f609222877bd2aabdafe0 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Wed, 29 Mar 2023 03:12:41 -0300 Subject: [PATCH 16/16] fix(Scripts/Arcatraz): Adjust Soccrothar charge timer and implement emote (#15643) --- .../arcatraz/boss_dalliah_the_doomsayer.cpp | 33 +++++-------------- .../boss_wrath_scryer_soccothrates.cpp | 13 +++----- 2 files changed, 13 insertions(+), 33 deletions(-) diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp index 1b7de47fc..9489da3ad 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp @@ -44,23 +44,24 @@ enum Spells struct boss_dalliah_the_doomsayer : public BossAI { - boss_dalliah_the_doomsayer(Creature* creature) : BossAI(creature, DATA_DALLIAH), _percentHealthCheck(false) { } + boss_dalliah_the_doomsayer(Creature* creature) : BossAI(creature, DATA_DALLIAH) { } void Reset() override { _Reset(); - _percentHealthCheck = false; - me->SetImmuneToAll(false); + + ScheduleHealthCheckEvent(25, [&] + { + if (Creature* soccothrates = instance->GetCreature(DATA_SOCCOTHRATES)) + { + soccothrates->AI()->Talk(SAY_DALLIAH_25_PERCENT); + } + }); } void InitializeAI() override { BossAI::InitializeAI(); - - if (instance->GetBossState(DATA_SOCCOTHRATES) != DONE) - { - me->SetImmuneToAll(true); - } } void JustDied(Unit* /*killer*/) override @@ -117,19 +118,6 @@ struct boss_dalliah_the_doomsayer : public BossAI } } - void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellSchoolMask /*damageSchoolMask*/) override - { - if (me->HealthBelowPctDamaged(25, damage) && !_percentHealthCheck) - { - if (Creature* soccothrates = instance->GetCreature(DATA_SOCCOTHRATES)) - { - soccothrates->AI()->Talk(SAY_DALLIAH_25_PERCENT); - } - - _percentHealthCheck = true; - } - } - void KilledUnit(Unit* victim) override { if (victim->IsPlayer()) @@ -137,9 +125,6 @@ struct boss_dalliah_the_doomsayer : public BossAI Talk(SAY_SLAY); } } - -private: - bool _percentHealthCheck; }; void AddSC_boss_dalliah_the_doomsayer() diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp index 151cc66e7..f4dcebefe 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp @@ -79,7 +79,6 @@ struct boss_wrath_scryer_soccothrates : public BossAI _Reset(); events2.Reset(); me->CastSpell(me, SPELL_FEL_IMMOLATION, true); - me->SetImmuneToAll(false); ScheduleHealthCheckEvent(25, [&] { @@ -96,8 +95,6 @@ struct boss_wrath_scryer_soccothrates : public BossAI void InitializeAI() override { BossAI::InitializeAI(); - if (!preFight) - me->SetImmuneToAll(true); } void JustDied(Unit* /*killer*/) override @@ -129,9 +126,10 @@ struct boss_wrath_scryer_soccothrates : public BossAI } } - scheduler.Schedule(11s, 12s, [this](TaskContext context) + scheduler.Schedule(30s, 35s, [this](TaskContext context) { me->CastSpell(me, SPELL_KNOCK_AWAY, false); + me->HandleEmoteCommand(EMOTE_ONESHOT_POINT); Talk(SAY_KNOCK_AWAY); scheduler.Schedule(4600ms, [this](TaskContext) @@ -141,10 +139,7 @@ struct boss_wrath_scryer_soccothrates : public BossAI scheduler.Schedule(300ms, [this](TaskContext context2) { - if (me->GetVictim() && !me->IsWithinMeleeRange(me->GetVictim())) - { - DoCastAOE(SPELL_FELFIRE, true); - } + DoCastAOE(SPELL_FELFIRE, true); if (context2.GetRepeatCounter() <= 6) { @@ -153,7 +148,7 @@ struct boss_wrath_scryer_soccothrates : public BossAI }); }); - context.Repeat(); + context.Repeat(20s, 35s); }).Schedule(12s, 14s, [this](TaskContext context) { DoCastVictim(SPELL_FELFIRE_SHOCK);