diff --git a/data/sql/updates/db_world/2023_03_29_00.sql b/data/sql/updates/db_world/2023_03_29_00.sql new file mode 100644 index 000000000..ee23ccca9 --- /dev/null +++ b/data/sql/updates/db_world/2023_03_29_00.sql @@ -0,0 +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/db_world/2023_03_29_01.sql b/data/sql/updates/db_world/2023_03_29_01.sql new file mode 100644 index 000000000..acce78f52 --- /dev/null +++ b/data/sql/updates/db_world/2023_03_29_01.sql @@ -0,0 +1,5 @@ +-- 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 +(17797, 4, 0, 'Enjoy the storm warm bloods!', 14, 0, 100, 0, 0, 0, 19456, 0, 'thespia SAY_SPELL'); diff --git a/data/sql/updates/db_world/2023_03_29_02.sql b/data/sql/updates/db_world/2023_03_29_02.sql new file mode 100644 index 000000000..1d333a8bb --- /dev/null +++ b/data/sql/updates/db_world/2023_03_29_02.sql @@ -0,0 +1,7 @@ +-- 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); +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/data/sql/updates/db_world/2023_03_29_03.sql b/data/sql/updates/db_world/2023_03_29_03.sql new file mode 100644 index 000000000..fd1fdd3ec --- /dev/null +++ b/data/sql/updates/db_world/2023_03_29_03.sql @@ -0,0 +1,301 @@ +-- 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 +(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)); diff --git a/data/sql/updates/db_world/2023_03_29_04.sql b/data/sql/updates/db_world/2023_03_29_04.sql new file mode 100644 index 000000000..fa11bc0dc --- /dev/null +++ b/data/sql/updates/db_world/2023_03_29_04.sql @@ -0,0 +1,17 @@ +-- DB update 2023_03_29_03 -> 2023_03_29_04 +-- +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); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 3b09e938e..5d839108c 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -12568,15 +12568,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 0b1ad0ade..042081b8b 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; @@ -17997,8 +18003,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); 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]; 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); } } 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 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; } 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 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 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); 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