Merge branch 'azerothcore:master' into Playerbot

This commit is contained in:
ZhengPeiRu21
2023-04-10 08:27:49 -06:00
committed by GitHub
45 changed files with 1426 additions and 519 deletions

View File

@@ -54,14 +54,3 @@ jobs:
./worldserver -dry-run
- name: Stop MySQL
run: net stop mysql
- name: Copy dll files
shell: bash
run: |
rm -rf env/dist/data
cp "/c/tools/mysql/current/lib/libmysql.dll" "env/dist"
cp "/c/Program Files/OpenSSL-Win64/bin/libcrypto-1_1-x64.dll" "env/dist"
cp "/c/Program Files/OpenSSL-Win64/bin/libssl-1_1-x64.dll" "env/dist"
- uses: actions/upload-artifact@v2
with:
name: windows-2022-MSVC17-release
path: env/dist

View File

@@ -1,2 +1,2 @@
-- DB update 2023_04_02_01 -> 2023_04_02_02
UPDATE `smart_scripts` SET `event_type` = 25 AND `comment` = 'Arcatraz Sentinel - On Reset - Set Health 40%' WHERE `source_type` = 0 AND `entryorguid` = 20869 AND `id` = 0;
UPDATE `smart_scripts` SET `event_type` = 25, `comment` = 'Arcatraz Sentinel - On Reset - Set Health 40%' WHERE `source_type` = 0 AND `entryorguid` = 20869 AND `id` = 0;

View File

@@ -0,0 +1,234 @@
-- DB update 2023_04_06_01 -> 2023_04_08_00
DELETE FROM `spelldifficulty_dbc` WHERE `ID` IN (22911,36023,30481,30636,34100,30932);
INSERT INTO `spelldifficulty_dbc` (`ID`, `DifficultySpellID_1`, `DifficultySpellID_2`) VALUES
(22911, 22911, 37511),
(36023, 36023, 36054),
(30481, 30481, 35945),
(30636, 30636, 35942),
(34100, 34100, 35950),
(30932, 30932, 40248);
UPDATE `creature_text` SET `Text` = 'For Kargath! For Victory!', `BroadcastTextId` = 16698 WHERE `Text` = 'For Kargath! For Victory!';
UPDATE `creature_text` SET `BroadcastTextId` = 16699 WHERE `Text` = 'Gakarah ma!';
UPDATE `creature_text` SET `BroadcastTextId` = 16703 WHERE `Text` = 'Lok narash!';
UPDATE `creature_text` SET `BroadcastTextId` = 16701 WHERE `Text` = 'Lok\'tar Illadari!';
UPDATE `creature_text` SET `BroadcastTextId` = 16700 WHERE `Text` = 'The blood is our power!';
UPDATE `creature_text` SET `BroadcastTextId` = 16702 WHERE `Text` = 'This world is OURS!';
UPDATE `creature_text` SET `BroadcastTextId` = 16697 WHERE `Text` = 'We are the true Horde!';
-- Shattered Hand Sentry
DELETE FROM `creature_template_addon` WHERE (`entry` IN (16507, 20593));
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(16507, 0, 0, 0, 1, 0, 0, '18950'),
(20593, 0, 0, 0, 1, 0, 0, '18950');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 16507);
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
(16507, 0, 0, 0, 0, 0, 100, 0, 1000, 3500, 13000, 16000, 0, 11, 31553, 32, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Sentry - In Combat - Cast \'Hamstring\''),
(16507, 0, 1, 0, 4, 0, 15, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Sentry - On Aggro - Say Line 1 (No Repeat)'),
(16507, 0, 2, 0, 0, 0, 100, 1, 1000, 1000, 0, 0, 0, 11, 22911, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Sentry - In Combat - Cast \'Charge\' (No Repeat)');
-- Shattered Hand Savage
DELETE FROM `creature_text` WHERE `CreatureID` = 16523 AND `GroupID` = 1;
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(16523, 1, 0, 'For Kargath! For Victory!', 12, 0, 100, 0, 0, 0, 16698, 0, 'Shattered Hand Savage'),
(16523, 1, 1, 'Gakarah ma!', 12, 0, 100, 0, 0, 0, 16699, 0, 'Shattered Hand Savage'),
(16523, 1, 2, 'Lok narash!', 12, 0, 100, 0, 0, 0, 16703, 0, 'Shattered Hand Savage'),
(16523, 1, 3, 'Lok\'tar Illadari!', 12, 0, 100, 0, 0, 0, 16701, 0, 'Shattered Hand Savage'),
(16523, 1, 4, 'The blood is our power!', 12, 0, 100, 0, 0, 0, 16700, 0, 'Shattered Hand Savage'),
(16523, 1, 5, 'This world is OURS!', 12, 0, 100, 0, 0, 0, 16702, 0, 'Shattered Hand Savage'),
(16523, 1, 6, 'We are the true Horde!', 12, 0, 100, 0, 0, 0, 16697, 0, 'Shattered Hand Savage');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 16523);
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
(16523, 0, 0, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 11, 36023, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Savage - On Just Died - Cast \'Deathblow\''),
(16523, 0, 1, 0, 0, 0, 100, 0, 4000, 4000, 20000, 25000, 0, 11, 30470, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Savage - In Combat - Cast \'Slice and Dice\''),
(16523, 0, 2, 3, 2, 0, 100, 0, 0, 30, 120000, 120000, 0, 11, 30485, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Savage - Between 0-30% Health - Cast \'Enrage\''),
(16523, 0, 3, 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, 'Shattered Hand Savage - Between 0-30% Health - Say Line 0'),
(16523, 0, 4, 0, 4, 0, 15, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Savage - On Aggro - Say Line 1');
-- Shattered Hand Brawler
DELETE FROM `creature_template_addon` WHERE (`entry` IN (16593, 20582));
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(16593, 0, 0, 0, 1, 0, 0, '8876'),
(20582, 0, 0, 0, 1, 0, 0, '8876');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 16593);
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
(16593, 0, 0, 0, 9, 0, 100, 0, 0, 5, 12000, 21000, 0, 11, 36020, 32, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Brawler - Within 0-5 Range - Cast \'Curse of the Shattered Hand\''),
(16593, 0, 1, 0, 13, 0, 100, 0, 6000, 15000, 0, 0, 0, 11, 36033, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Brawler - On Victim Casting - Cast \'Kick\''),
(16593, 0, 2, 3, 4, 0, 15, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Brawler - On Aggro - Say Line 1'),
(16593, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 28, 16093, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Brawler - On Aggro - Remove Aura \'Self Visual - Sleep Until Cancelled (DND)\'');
-- Shattered Hand Reaver
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 16699);
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
(16699, 0, 0, 0, 0, 0, 100, 0, 1500, 1500, 5000, 9000, 0, 11, 15496, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Reaver - In Combat - Cast \'Cleave\''),
(16699, 0, 1, 0, 0, 0, 100, 0, 8000, 12000, 9000, 13000, 0, 11, 30471, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Reaver - In Combat - Cast \'Uppercut\''),
(16699, 0, 2, 3, 2, 0, 100, 0, 0, 25, 120000, 120000, 0, 11, 30485, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Reaver - Between 0-25% Health - Cast \'Enrage\''),
(16699, 0, 3, 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, 'Shattered Hand Reaver - Between 0-25% Health - Say Line 0'),
(16699, 0, 4, 0, 4, 0, 15, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Reaver - On Aggro - Say Line 1');
-- Shattered Hand Legionnaire //TODO: Proper Scripting for summons
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 16700);
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
(16700, 0, 0, 0, 0, 0, 100, 0, 1500, 5000, 240000, 240000, 0, 11, 30472, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Legionnaire - In Combat - Cast \'Aura of Discipline\''),
(16700, 0, 2, 0, 13, 0, 100, 0, 10000, 15000, 0, 0, 0, 11, 15615, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Legionnaire - On Victim Casting - Cast \'Pummel\''),
(16700, 0, 3, 4, 2, 0, 100, 0, 0, 25, 120000, 120000, 0, 11, 30485, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Legionnaire - Between 0-25% Health - Cast \'Enrage\''),
(16700, 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, 'Shattered Hand Legionnaire - Between 0-25% Health - Say Line 0'),
(16700, 0, 5, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Legionnaire - On Aggro - Say Line 1');
-- Shattered Hand Sharpshooter
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 16704);
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
(16704, 0, 0, 0, 9, 0, 100, 2, 5, 30, 2300, 5000, 0, 11, 15620, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Sharpshooter - Within 5-30 Range - Cast \'Shoot\' (Normal Dungeon)'),
(16704, 0, 1, 0, 9, 0, 100, 4, 5, 30, 2300, 5000, 0, 11, 22907, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Sharpshooter - Within 5-30 Range - Cast \'Shoot\' (Heroic Dungeon)'),
(16704, 0, 2, 0, 9, 0, 100, 0, 5, 30, 6000, 9000, 0, 11, 30481, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Sharpshooter - Within 5-30 Range - Cast \'Incendiary Shot\''),
(16704, 0, 3, 0, 9, 0, 100, 4, 5, 30, 10000, 14000, 0, 11, 37551, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Sharpshooter - Within 5-30 Range - Cast \'Viper Sting\' (Heroic Dungeon)');
-- Creeping Ooze
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17356);
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
(17356, 0, 0, 0, 0, 0, 100, 0, 3000, 6000, 3800, 6600, 0, 11, 30494, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Creeping Ooze - In Combat - Cast \'Sticky Ooze\'');
-- Creeping Oozeling
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 17357;
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17357);
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
(17357, 0, 0, 0, 0, 0, 100, 0, 3000, 6000, 3800, 6500, 0, 11, 30494, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Creeping Oozeling - In Combat - Cast \'Sticky Ooze\'');
-- Shattered Hand Heathen
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17420);
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
(17420, 0, 0, 0, 0, 0, 100, 2, 6000, 13000, 12000, 16000, 0, 11, 30474, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Heathen - In Combat - Cast \'Bloodthirst\' (Normal Dungeon)'),
(17420, 0, 1, 0, 0, 0, 100, 4, 6000, 13000, 12000, 16000, 0, 11, 35949, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Heathen - In Combat - Cast \'Bloodthirst\' (Heroic Dungeon)'),
(17420, 0, 2, 3, 2, 0, 100, 0, 0, 30, 120000, 120000, 0, 11, 30485, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Heathen - Between 0-30% Health - Cast \'Enrage\''),
(17420, 0, 3, 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, 'Shattered Hand Heathen - Between 0-30% Health - Say Line 0'),
(17420, 0, 4, 0, 4, 0, 15, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Heathen - On Aggro - Say Line 1');
-- Shattered Hand Archer
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17427);
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
(17427, 0, 0, 0, 9, 0, 100, 2, 5, 30, 2300, 5000, 0, 11, 16100, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Archer - Within 5-30 Range - Cast \'Shoot\' (Normal Dungeon)'),
(17427, 0, 1, 0, 9, 0, 100, 4, 5, 30, 2300, 5000, 0, 11, 22907, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Archer - Within 5-30 Range - Cast \'Shoot\' (Heroic Dungeon)'),
(17427, 0, 2, 0, 9, 0, 100, 0, 5, 30, 6000, 9000, 0, 11, 30990, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Archer - Within 5-30 Range - Cast \'Multi-Shot\'');
-- Shattered Hand Zealot
DELETE FROM `creature_template_addon` WHERE (`entry` IN (17462, 20595));
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(17462, 0, 0, 0, 1, 0, 0, '18950'),
(20595, 0, 0, 0, 1, 0, 0, '18950');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17462);
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
(17462, 0, 0, 0, 9, 0, 100, 0, 0, 5, 10000, 13000, 0, 11, 30989, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Zealot - Within 0-5 Range - Cast \'Hamstring\'');
-- Shattered Hand Gladiator // TODO: Sparring
DELETE FROM `creature_template_addon` WHERE (`entry` IN (17464, 20586));
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(17464, 0, 0, 0, 1, 0, 0, '19818'),
(20586, 0, 0, 0, 1, 0, 0, '19818');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17464);
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
(17464, 0, 0, 0, 0, 0, 100, 0, 6000, 18000, 10000, 20000, 0, 11, 16856, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Gladiator - In Combat - Cast \'Mortal Strike\'');
-- Shattered Hand Centurion
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17465);
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
(17465, 0, 0, 0, 0, 0, 100, 2, 1500, 2500, 4000, 6000, 0, 11, 15572, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Centurion - In Combat - Cast \'Sunder Armor\' (Normal Dungeon)'),
(17465, 0, 1, 0, 0, 0, 100, 4, 1500, 2500, 4000, 6000, 0, 11, 16145, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Centurion - In Combat - Cast \'Sunder Armor\' (Heroic Dungeon)'),
(17465, 0, 2, 0, 0, 0, 100, 2, 3000, 7000, 17000, 21000, 0, 11, 30931, 32, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Centurion - In Combat - Cast \'Battle Shout\' (Normal Dungeon)'),
(17465, 0, 3, 0, 0, 0, 100, 4, 3000, 7000, 17000, 21000, 0, 11, 31403, 32, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Centurion - In Combat - Cast \'Battle Shout\' (Heroic Dungeon)'),
(17465, 0, 4, 0, 4, 0, 15, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Centurion - On Aggro - Say Line 1');
-- Rabid Warhound
DELETE FROM `creature_template_addon` WHERE (`entry` IN (17669, 20574));
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(17669, 0, 0, 0, 1, 0, 0, '18950'),
(20574, 0, 0, 0, 1, 0, 0, '18950');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17669);
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
(17669, 0, 0, 0, 0, 0, 100, 0, 500, 500, 7000, 10000, 0, 11, 30639, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Rabid Warhound - In Combat - Cast \'Carnivorous Bite\''),
(17669, 0, 1, 0, 0, 0, 40, 0, 2000, 2000, 8000, 14000, 0, 11, 30636, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rabid Warhound - In Combat - Cast \'Furious Howl\'');
-- Shattered Hand Houndmaster
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17670);
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
(17670, 0, 0, 0, 9, 0, 100, 2, 5, 30, 2300, 5000, 0, 11, 15620, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Houndmaster - Within 5-30 Range - Cast \'Shoot\' (Normal Dungeon)'),
(17670, 0, 1, 0, 9, 0, 100, 4, 5, 30, 2300, 5000, 0, 11, 22907, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Houndmaster - Within 5-30 Range - Cast \'Shoot\' (Heroic Dungeon)'),
(17670, 0, 2, 0, 0, 0, 100, 0, 7000, 12000, 60000, 70000, 0, 11, 34100, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Houndmaster - In Combat - Cast \'Volley\''),
(17670, 0, 3, 0, 9, 0, 100, 0, 5, 30, 12000, 16000, 0, 11, 30932, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Houndmaster - Within 5-30 Range - Cast \'Impaling Bolt\'');
-- Shattered Hand Champion // Uncertain if Aggro Drop is related to Concussive Blow
DELETE FROM `creature_template_addon` WHERE (`entry` IN (17671, 20584));
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(17671, 0, 0, 0, 1, 0, 0, '12782 18950'),
(20584, 0, 0, 0, 1, 0, 0, '12782 18950');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17671);
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
(17671, 0, 0, 4, 0, 0, 100, 0, 1500, 1500, 10000, 14000, 0, 11, 32588, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Champion - In Combat - Cast \'Concussion Blow\''),
(17671, 0, 1, 0, 0, 0, 100, 0, 3000, 6000, 12000, 15000, 0, 11, 32587, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Champion - In Combat - Cast \'Shield Block\''),
(17671, 0, 2, 0, 13, 0, 100, 0, 13000, 16000, 0, 0, 0, 11, 11972, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Champion - On Victim Casting - Cast \'Shield Bash\''),
(17671, 0, 3, 0, 4, 0, 20, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Champion - On Aggro - Say Line 1'),
(17671, 0, 4, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 13, 0, 100, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Champion - Linked - Drop Threat');
-- Shadowmoon Darkcaster
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17694);
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
(17694, 0, 0, 0, 0, 0, 100, 2, 0, 0, 2400, 3800, 0, 11, 12471, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowmoon Darkcaster - In Combat - Cast \'Shadow Bolt\' (Normal Dungeon)'),
(17694, 0, 1, 0, 0, 0, 100, 4, 0, 0, 2400, 3800, 0, 11, 15232, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowmoon Darkcaster - In Combat - Cast \'Shadow Bolt\' (Heroic Dungeon)'),
(17694, 0, 2, 0, 0, 0, 100, 0, 4000, 8000, 13000, 18000, 0, 11, 12542, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowmoon Darkcaster - In Combat - Cast \'Fear\''),
(17694, 0, 3, 0, 0, 0, 100, 2, 2000, 6000, 14000, 18000, 0, 11, 11990, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowmoon Darkcaster - In Combat - Cast \'Rain of Fire\' (Normal Dungeon)'),
(17694, 0, 4, 0, 0, 0, 100, 4, 2000, 6000, 14000, 18000, 0, 11, 33508, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowmoon Darkcaster - In Combat - Cast \'Rain of Fire\' (Heroic Dungeon)'),
(17694, 0, 5, 0, 4, 0, 15, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowmoon Darkcaster - On Aggro - Say Line 1'),
(17694, 0, 6, 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, 'Shadowmoon Darkcaster - Between 0-15% Health - Flee For Assist (No Repeat)');
-- Shattered Hand Assassin
DELETE FROM `creature_template_addon` WHERE (`entry` IN (17695, 20580));
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(17695, 0, 0, 0, 1, 0, 0, '30991'),
(20580, 0, 0, 0, 1, 0, 0, '30991');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17695);
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
(17695, 0, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Assassin - On Respawn - Set Reactstate Defensive'),
(17695, 0, 1, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Assassin - On Aggro - Set Reactstate Aggressive'),
(17695, 0, 2, 0, 67, 0, 100, 0, 4500, 6500, 0, 0, 0, 11, 30992, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Assassin - On Behind Target - Cast \'Backstab\''),
(17695, 0, 3, 0, 0, 0, 100, 0, 8000, 11000, 22000, 25000, 0, 11, 36974, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Assassin - In Combat - Cast \'Wound Poison\''),
(17695, 0, 4, 0, 0, 0, 100, 0, 2000, 4500, 12000, 20000, 0, 11, 30981, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Assassin - In Combat - Cast \'Crippling Poison\''),
(17695, 0, 5, 0, 10, 0, 100, 0, 0, 15, 12000, 15000, 1, 11, 30980, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Assassin - Within 0-15 Range Out of Combat LoS - Cast \'Sap\''),
(17695, 0, 6, 0, 10, 0, 100, 0, 0, 8, 4000, 8000, 0, 11, 30986, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Assassin - Within 0-8 Range Out of Combat LoS - Cast \'Cheap Shot\''),
(17695, 0, 7, 0, 9, 0, 100, 0, 0, 8, 4000, 8000, 0, 11, 30986, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Shattered Hand Assassin - Within 0-8 Range - Cast \'Cheap Shot\'');
-- Kargath Adds // These are sniffed
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17621);
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
(17621, 0, 0, 0, 0, 0, 100, 0, 7300, 18300, 15550, 26450, 0, 11, 30474, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Heathen Guard - In Combat - Cast \'Bloodthirst\''),
(17621, 0, 1, 2, 2, 0, 100, 0, 0, 20, 120000, 120000, 0, 11, 30485, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Heathen Guard - Between 0-20% Health - Cast \'Enrage\''),
(17621, 0, 2, 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, 'Heathen Guard - Between 0-20% Health - Say Line 0');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17622);
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
(17622, 0, 0, 0, 0, 0, 100, 2, 1200, 6100, 3100, 5600, 0, 11, 15620, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sharpshooter Guard - In Combat - Cast \'Shoot\' (Normal Dungeon)'),
(17622, 0, 1, 0, 0, 0, 100, 4, 1200, 6100, 3100, 5600, 0, 11, 22907, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Sharpshooter Guard - In Combat - Cast \'Shoot\' (Heroic Dungeon)'),
(17622, 0, 2, 0, 0, 0, 100, 0, 12150, 30400, 12150, 30400, 0, 11, 30481, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Sharpshooter Guard - In Combat - Cast \'Incendiary Shot\''),
(17622, 0, 3, 0, 0, 0, 100, 0, 13350, 21000, 20700, 39250, 0, 11, 23601, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Sharpshooter Guard - In Combat - Cast \'Scatter Shot\'');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17623);
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
(17623, 0, 0, 0, 0, 0, 100, 0, 7300, 14250, 950, 14550, 0, 11, 15496, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Reaver Guard - In Combat - Cast \'Cleave\''),
(17623, 0, 1, 0, 0, 0, 100, 0, 12150, 30400, 15800, 30700, 0, 11, 30471, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Reaver Guard - In Combat - Cast \'Uppercut\''),
(17623, 0, 2, 3, 2, 0, 100, 0, 0, 25, 120000, 120000, 0, 11, 30485, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Reaver Guard - Between 0-25% Health - Cast \'Enrage\''),
(17623, 0, 3, 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, 'Reaver Guard - Between 0-25% Health - Say Line 0');
-- Shattered Hand Scout
UPDATE `creature_template_addon` SET `bytes2` = 1, `auras` = '18950' WHERE (`entry` = 17462);
-- Blood Guard
UPDATE `creature_template_addon` SET `bytes2` = 1, `auras` = '18950' WHERE (`entry` IN (17461, 20581, 20923));
-- Fel Orc Convert
UPDATE `creature_template` SET `flags_extra`=`flags_extra`|33554432 WHERE (`entry` = 17083);

View File

@@ -0,0 +1,21 @@
-- DB update 2023_04_08_00 -> 2023_04_09_00
--
UPDATE `creature_template` SET `unit_flags` = `unit_flags` |33554432, `ScriptName` = '' WHERE `entry` IN (17954, 20631);
DELETE FROM `creature_template_addon` WHERE `entry` IN (17954, 20631);
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(17954, 0, 0, 0, 0, 0, 0, '25900'),
(20631, 0, 0, 0, 0, 0, 0, '25900');
DELETE FROM `creature_template_movement` WHERE `CreatureId` IN (17954, 20631);
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Rooted`) VALUES
(17954, 1, 1),
(20631, 1, 1);
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_warlords_rage';
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(31543, 'spell_warlords_rage');
DELETE FROM `creature_text` WHERE `CreatureId` = 17798 AND `GroupID` = 5;
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(17798, 5, 0, '%s begins to channel from the nearby distiller...', 16, 0, 100, 0, 0, 0, 19166, 0, 'kalithresh EMOTE_DISTILLER');

View File

@@ -0,0 +1,64 @@
-- DB update 2023_04_09_00 -> 2023_04_09_01
--
SET @REP_MEDIUM_N := 12;
SET @REP_MEDIUM_H := 15;
SET @REP_SMALL_N := 2;
SET @REP_SMALL_H := 3;
SET @REP_BOSS_N := 120;
SET @REP_BOSS_H := 250;
SET @REP_LARGE_N := 24;
SET @REP_LARGE_H := 30;
DELETE FROM `creature_onkill_reputation` WHERE (`creature_id` IN (16507,16523,16593,16594,16699,16700,16704,16807,16808,16809,17083,17356,17357,17420,17427,17461,17462,17464,17465,17471,17552,17578,17611,17621,17622,17623,17669,17670,17671,17687,17693,17694,17695,18370,19523,19524,20709,20593,20591,20582,20576,20590,20589,20594,20568,20597,20596,20567,20565,20566,20587,20579,20581,20595,20586,20583,20570,20569,20578,20575,20574,20588,20584,20592,20577,20580,20598,20572,20573));
INSERT INTO `creature_onkill_reputation` (`creature_id`, `RewOnKillRepFaction1`, `RewOnKillRepFaction2`, `MaxStanding1`, `IsTeamAward1`, `RewOnKillRepValue1`, `MaxStanding2`, `IsTeamAward2`, `RewOnKillRepValue2`, `TeamDependent`) VALUES
(16507, 946, 947, 7, 0, @REP_MEDIUM_N, 7, 0, @REP_MEDIUM_N, 1), -- Shattered Hand Sentry
(16523, 946, 947, 7, 0, @REP_MEDIUM_N, 7, 0, @REP_MEDIUM_N, 1), -- Shattered Hand Savage
(16593, 946, 947, 7, 0, @REP_MEDIUM_N, 7, 0, @REP_MEDIUM_N, 1), -- Shattered Hand Brawler
(16594, 946, 947, 7, 0, @REP_MEDIUM_N, 7, 0, @REP_MEDIUM_N, 1), -- Shadowmoon Acolyte
(16699, 946, 947, 7, 0, @REP_MEDIUM_N, 7, 0, @REP_MEDIUM_N, 1), -- Shattered Hand Reaver
(16700, 946, 947, 7, 0, @REP_MEDIUM_N, 7, 0, @REP_MEDIUM_N, 1), -- Shattered Hand Legionnaire
(16704, 946, 947, 7, 0, @REP_MEDIUM_N, 7, 0, @REP_MEDIUM_N, 1), -- Shattered Hand Sharpshooter
(16807, 946, 947, 7, 0, @REP_BOSS_N, 7, 0, @REP_BOSS_N, 1), -- Grand Warlock Nethekurse
(16808, 946, 947, 7, 0, @REP_BOSS_N, 7, 0, @REP_BOSS_N, 1), -- Warchief Kargath Bladefist
(16809, 946, 947, 7, 0, @REP_BOSS_N, 7, 0, @REP_BOSS_N, 1), -- Warbringer O'mrogg
(17083, 946, 947, 7, 0, @REP_SMALL_N, 7, 0, @REP_SMALL_N, 1), -- Fel Orc Convert
(17420, 946, 947, 7, 0, @REP_MEDIUM_N, 7, 0, @REP_MEDIUM_N, 1), -- Shattered Hand Heathen
(17427, 946, 947, 7, 0, @REP_MEDIUM_N, 7, 0, @REP_MEDIUM_N, 1), -- Shattered Hand Archer
(17461, 946, 947, 7, 0, @REP_LARGE_N, 7, 0, @REP_LARGE_N, 1), -- Shattered Hand Blood Guard
(17462, 946, 947, 7, 0, @REP_SMALL_N, 7, 0, @REP_SMALL_N, 1), -- Shattered Hand Zealot
(17464, 946, 947, 7, 0, @REP_MEDIUM_N, 7, 0, @REP_MEDIUM_N, 1), -- Shattered Hand Gladiator
(17465, 946, 947, 7, 0, @REP_LARGE_N, 7, 0, @REP_LARGE_N, 1), -- Shattered Hand Centurion
(17621, 946, 947, 7, 0, @REP_SMALL_N, 7, 0, @REP_SMALL_N, 1), -- Heathen Guard
(17622, 946, 947, 7, 0, @REP_SMALL_N, 7, 0, @REP_SMALL_N, 1), -- Sharpshooter Guard
(17623, 946, 947, 7, 0, @REP_SMALL_N, 7, 0, @REP_SMALL_N, 1), -- Reaver Guard
(17669, 946, 947, 7, 0, @REP_SMALL_N, 7, 0, @REP_SMALL_N, 1), -- Rabid Warhound
(17670, 946, 947, 7, 0, @REP_MEDIUM_N, 7, 0, @REP_MEDIUM_N, 1), -- Shattered Hand Houndmaster
(17671, 946, 947, 7, 0, @REP_MEDIUM_N, 7, 0, @REP_MEDIUM_N, 1), -- Shattered Hand Champion
(17694, 946, 947, 7, 0, @REP_MEDIUM_N, 7, 0, @REP_MEDIUM_N, 1), -- Shadowmoon Darkcaster
(17695, 946, 947, 7, 0, @REP_SMALL_N, 7, 0, @REP_SMALL_N, 1), -- Shattered Hand Assassin
(20593, 946, 947, 7, 0, @REP_MEDIUM_H, 7, 0, @REP_MEDIUM_H, 1), -- Shattered Hand Sentry (1)
(20591, 946, 947, 7, 0, @REP_MEDIUM_H, 7, 0, @REP_MEDIUM_H, 1), -- Shattered Hand Savage (1)
(20582, 946, 947, 7, 0, @REP_MEDIUM_H, 7, 0, @REP_MEDIUM_H, 1), -- Shattered Hand Brawler (1)
(20576, 946, 947, 7, 0, @REP_MEDIUM_H, 7, 0, @REP_MEDIUM_H, 1), -- Shadowmoon Acolyte (1)
(20590, 946, 947, 7, 0, @REP_MEDIUM_H, 7, 0, @REP_MEDIUM_H, 1), -- Shattered Hand Reaver (1)
(20589, 946, 947, 7, 0, @REP_MEDIUM_H, 7, 0, @REP_MEDIUM_H, 1), -- Shattered Hand Legionnaire (1)
(20594, 946, 947, 7, 0, @REP_MEDIUM_H, 7, 0, @REP_MEDIUM_H, 1), -- Shattered Hand Sharpshooter (1)
(20568, 946, 947, 7, 0, @REP_BOSS_H, 7, 0, @REP_BOSS_H, 1), -- Grand Warlock Nethekurse (1)
(20597, 946, 947, 7, 0, @REP_BOSS_H, 7, 0, @REP_BOSS_H, 1), -- Warchief Kargath Bladefist (1)
(20596, 946, 947, 7, 0, @REP_BOSS_H, 7, 0, @REP_BOSS_H, 1), -- Warbringer O'mrogg (1)
(20567, 946, 947, 7, 0, @REP_SMALL_H, 7, 0, @REP_SMALL_H, 1), -- Fel Orc Convert (1)
(20587, 946, 947, 7, 0, @REP_MEDIUM_H, 7, 0, @REP_MEDIUM_H, 1), -- Shattered Hand Heathen (1)
(20579, 946, 947, 7, 0, @REP_MEDIUM_H, 7, 0, @REP_MEDIUM_H, 1), -- Shattered Hand Archer (1)
(20581, 946, 947, 7, 0, @REP_BOSS_H, 7, 0, @REP_BOSS_H, 1), -- Blood Guard Porung
(20595, 946, 947, 7, 0, @REP_SMALL_H, 7, 0, @REP_SMALL_H, 1), -- Shattered Hand Zealot (1)
(20586, 946, 947, 7, 0, @REP_MEDIUM_H, 7, 0, @REP_MEDIUM_H, 1), -- Shattered Hand Gladiator (1)
(20583, 946, 947, 7, 0, @REP_LARGE_H, 7, 0, @REP_LARGE_H, 1), -- Shattered Hand Centurion (1)
(20569, 946, 947, 7, 0, @REP_SMALL_H, 7, 0, @REP_SMALL_H, 1), -- Heathen Guard (1)
(20578, 946, 947, 7, 0, @REP_SMALL_H, 7, 0, @REP_SMALL_H, 1), -- Sharpshooter Guard (1)
(20575, 946, 947, 7, 0, @REP_SMALL_H, 7, 0, @REP_SMALL_H, 1), -- Reaver Guard (1)
(20574, 946, 947, 7, 0, @REP_SMALL_H, 7, 0, @REP_SMALL_H, 1), -- Rabid Warhound (1)
(20588, 946, 947, 7, 0, @REP_MEDIUM_H, 7, 0, @REP_MEDIUM_H, 1), -- Shattered Hand Houndmaster (1)
(20584, 946, 947, 7, 0, @REP_MEDIUM_H, 7, 0, @REP_MEDIUM_H, 1), -- Shattered Hand Champion (1)
(20577, 946, 947, 7, 0, @REP_MEDIUM_H, 7, 0, @REP_MEDIUM_H, 1), -- Shadowmoon Darkcaster (1)
(20580, 946, 947, 7, 0, @REP_SMALL_H, 7, 0, @REP_SMALL_H, 1); -- Shattered Hand Assassin (1)

View File

@@ -0,0 +1,53 @@
-- DB update 2023_04_09_01 -> 2023_04_09_02
-- Blood Elf Defender
UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=8581;
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 8581);
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
(8581, 0, 0, 0, 0, 0, 100, 0, 7000, 12000, 11000, 14000, 0, 11, 12169, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blood Elf Defender - In Combat - Cast \'Shield Block\''),
(8581, 0, 1, 0, 0, 0, 100, 0, 5000, 9000, 8000, 13000, 0, 11, 12170, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Blood Elf Defender - In Combat - Cast \'Revenge\''),
(8581, 0, 2, 0, 54, 0, 100, 0, 0, 0, 0, 0, 0, 80, 858100, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blood Elf Defender - On Just Summoned - Run Script'),
(8581, 0, 3, 0, 2, 0, 100, 513, 0, 50, 0, 0, 0, 80, 858101, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blood Elf Defender - Between 0-50% Health - Run Script (No Repeat)');
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 858100);
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
(858100, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 11, 51347, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blood Elf Defender - Actionlist - Cast \'Teleport Visual Only\''),
(858100, 9, 1, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 21, 50, 0, 0, 0, 0, 0, 0, 0, 'Blood Elf Defender - Actionlist - Start Attacking'),
(858100, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blood Elf Defender - Actionlist - Say Line 0');
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 858101);
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
(858101, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 12, 8578, 4, 300000, 0, 0, 0, 8, 0, 0, 0, 0, 4279.11, -6295.57, 95.56, 0.05, 'Blood Elf Defender - Actionlist - Summon Creature \'Magus Rimtori\''),
(858101, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blood Elf Defender - Actionlist - Say Line 1'),
(858101, 9, 2, 0, 0, 0, 100, 0, 6000, 6000, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blood Elf Defender - Actionlist - Say Line 2');
DELETE FROM `creature_text` WHERE `CreatureID`=8581;
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(8581,0,0,'Who dares?! I will destroy you!',12,0,100,0,0,0,4502,0,'Blood Elf Defender'),
(8581,1,0,'Mistress!! They seek to destroy your work!!',12,0,100,0,0,0,4491,0,'Blood Elf Defender'),
(8581,2,0,'Ha! Now your death is ensured!',12,0,100,0,0,0,4492,0,'Blood Elf Defender');
-- Magus Rimtori
UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=8578;
DELETE FROM `smart_scripts` WHERE `entryorguid`=8578 AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(8578,0,0,0,0,0,100,0,0,0,3000,5000,11,20823,64,0,0,0,0,2,0,0,0,0,0,0,0,'Magus Rimtori - In Combat - Cast \'Fireball\''),
(8578,0,1,0,9,0,100,0,0,8,13000,16000,11,11831,0,0,0,0,0,1,0,0,0,0,0,0,0,'Magus Rimtori - Within 0-8 Range - Cast \'Frost Nova\''),
(8578,0,2,0,54,0,100,0,0,0,0,0,11,51347,0,0,0,0,0,1,0,0,0,0,0,0,0,'Magus Rimtori - On Just Summoned - Cast \'Teleport Visual Only\''),
(8578,0,3,0,4,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Magus Rimtori - On Aggro - Say Line 0');
DELETE FROM `creature_text` WHERE `CreatureID`=8578;
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(8578,0,0,'You dare! Now feel my wrath!',14,0,100,0,0,0,4495,0,'Magus Rimtori');
-- Move from Event Scripts to SAI
DELETE FROM `event_scripts` WHERE `id` = 3241;
UPDATE `gameobject_template` SET `AIName` = 'SmartGameObjectAI' WHERE `entry` = 150140;
DELETE FROM `smart_scripts` WHERE (`source_type` = 1 AND `entryorguid` = 150140);
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
(150140, 1, 0, 0, 71, 0, 100, 0, 3241, 0, 0, 0, 0, 12, 8581, 4, 300000, 0, 0, 0, 8, 0, 0, 0, 0, 4279.11, -6295.57, 95.56, 0.05, 'Arcane Focusing Crystal - On Event 3241 Inform - Summon Creature \'Blood Elf Defender\'');
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceGroup` = 1) AND (`SourceEntry` = 150140);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(22, 1, 150140, 1, 0, 29, 1, 8581, 50, 0, 1, 0, 0, '', 'Event will not run if it has already started'),
(22, 1, 150140, 1, 0, 29, 1, 8578, 50, 0, 1, 0, 0, '', 'Event will not run if it has already started');

View File

@@ -0,0 +1,27 @@
-- DB update 2023_04_09_02 -> 2023_04_09_03
-- Shadowmoon Warlock
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17371);
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
(17371, 0, 0, 0, 9, 0, 100, 2, 0, 40, 3300, 4900, 0, 11, 12739, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowmoon Warlock - Within 0-40 Range - Cast \'Shadow Bolt\' (Normal Dungeon)'),
(17371, 0, 1, 0, 9, 0, 100, 4, 0, 40, 3300, 4900, 0, 11, 15472, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowmoon Warlock - Within 0-40 Range - Cast \'Shadow Bolt\' (Heroic Dungeon)'),
(17371, 0, 2, 0, 0, 0, 100, 2, 1100, 7800, 14800, 30100, 0, 11, 32197, 32, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowmoon Warlock - In Combat - Cast \'Corruption\' (Normal Dungeon)'),
(17371, 0, 3, 0, 0, 0, 100, 4, 1100, 7800, 14800, 30100, 0, 11, 37113, 32, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowmoon Warlock - In Combat - Cast \'Corruption\' (Heroic Dungeon)'),
(17371, 0, 4, 0, 0, 0, 100, 0, 6600, 10700, 14900, 14900, 0, 11, 13338, 32, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowmoon Warlock - In Combat - Cast \'Curse of Tongues\''),
(17371, 0, 5, 0, 1, 0, 100, 0, 12600, 13700, 21900, 24900, 0, 11, 33111, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Shadowmoon Warlock - Out of Combat - Cast \'Fel Power\'');
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceGroup` = 6) AND (`SourceEntry` = 17371) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 29) AND (`ConditionTarget` = 1) AND (`ConditionValue1` = 18894) AND (`ConditionValue2` = 10) AND (`ConditionValue3` = 0);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(22, 6, 17371, 0, 0, 29, 1, 18894, 10, 0, 0, 0, 0, '', 'Only cast Fel Power (33111) if a Felguard Brute (18894) is nearby');
-- Hellfire Imp
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 17477);
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
(17477, 0, 0, 0, 1, 0, 100, 1, 1000, 1000, 0, 0, 0, 11, 30540, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Imp - Out of Combat - Cast \'Summon Visual\' (No Repeat)'),
(17477, 0, 1, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 28, 30540, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Imp - On Aggro - Remove Aura \'Summon Visual\''),
(17477, 0, 2, 0, 0, 0, 100, 2, 1000, 3400, 3400, 4800, 0, 11, 15242, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Imp - In Combat - Cast \'Fireball\' (Normal Dungeon)'),
(17477, 0, 3, 0, 0, 0, 100, 4, 1000, 3400, 3400, 4800, 0, 11, 17290, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Imp - In Combat - Cast \'Fireball\' (Heroic Dungeon)'),
(17477, 0, 4, 0, 0, 0, 100, 4, 6000, 9000, 6000, 9000, 0, 11, 16144, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Hellfire Imp - In Combat - Cast \'Fire Blast\' (Heroic Dungeon)');
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceGroup` = 1) AND (`SourceEntry` = 17477) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 29) AND (`ConditionTarget` = 1) AND (`ConditionValue1` = 17397) AND (`ConditionValue2` = 10) AND (`ConditionValue3` = 0);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(22, 1, 17477, 0, 0, 29, 1, 17397, 10, 0, 0, 0, 0, '', 'Only cast Summon Visual (30540) if a Shadowmoon Adept (17397) is nearby');

View File

@@ -0,0 +1,3 @@
-- DB update 2023_04_09_03 -> 2023_04_09_04
-- Pattern: Drums of Restoration
DELETE FROM `reference_loot_template` WHERE `Entry`=24092 AND `Item`=29714;

View File

@@ -0,0 +1,3 @@
-- DB update 2023_04_09_04 -> 2023_04_09_05
-- Terokkarantula and Arconus the Insatiable
UPDATE `creature` SET `spawntimesecs` = 180 WHERE `guid` IN (86843, 87039) AND `id1` IN (20554, 20682);

View File

@@ -0,0 +1,41 @@
-- DB update 2023_04_09_05 -> 2023_04_09_06
--
DELETE FROM `smart_scripts` WHERE `entryorguid`=18794 AND `source_type`=0 AND `id`=16;
DELETE FROM `script_waypoint` WHERE `entry`=18731;
DELETE FROM `waypoint_data` WHERE `id` IN (1873100,1873101);
INSERT INTO `waypoint_data` VALUES
(1873100,1,-159.51387,-2.139098,8.073091,NULL,0,0,0,100,0),
(1873100,2,-163.44856,-7.553354,8.073133,NULL,0,0,0,100,0),
(1873100,3,-168.17548,-9.746803,8.073169,NULL,0,0,0,100,0),
(1873100,4,-171.3253,-13.198364,8.073106,NULL,0,0,0,100,0),
(1873100,5,-172.78348,-25.986193,8.073088,NULL,0,0,0,100,0),
(1873100,6,-173.66841,-54.100628,8.073081,NULL,0,0,0,100,0),
(1873100,7,-168.93939,-66.52654,8.073219,NULL,0,0,0,100,0),
(1873100,8,-157.49812,-73.04389,8.077904,NULL,0,0,0,100,0),
(1873100,9,-145.8215,-67.855865,8.063689,NULL,0,0,0,100,0),
(1873100,10,-141.28224,-56.002922,8.073066,NULL,0,0,0,100,0),
(1873100,11,-142.33768,-25.135996,8.073035,NULL,0,0,0,100,0),
(1873100,12,-143.23366,-14.373271,8.073031,NULL,0,0,0,100,0),
(1873100,13,-147.05266,-10.097949,8.0730295,NULL,0,0,0,100,0),
(1873100,14,-152.87035,-5.490992,8.073108,NULL,0,0,0,100,0),
(1873100,15,-156.7587,4.856207,8.073061,4.660028934478759765,0,0,0,100,0),
(1873101,16,-156.31073,24.4289,8.072962,NULL,0,0,0,100,0),
(1873101,17,-153.34592,40.90819,6.877141,NULL,0,0,0,100,0),
(1873101,18,-144.48116,52.74748,5.6318674,NULL,0,0,0,100,0),
(1873101,19,-130.80013,60.605686,4.2999473,NULL,0,0,0,100,0),
(1873101,20,-91.258835,61.131367,3.2408845,NULL,0,0,0,100,0),
(1873101,22,-73.11457,51.921284,1.4783795,2.705260276794433593,30000,0,0,100,0),
(1873101,23,-89.108116,61.20221,3.026778,NULL,0,0,0,100,0),
(1873101,24,-108.00966,63.536663,3.4476438,NULL,0,0,0,100,0),
(1873101,25,-130.86102,60.57378,4.3055944,NULL,0,0,0,100,0),
(1873101,26,-143.99977,52.971825,5.5921054,NULL,0,0,0,100,0),
(1873101,27,-152.94989,41.38679,6.888551,NULL,0,0,0,100,0),
(1873101,28,-156.86404,25.838596,8.125509,NULL,30000,0,0,100,0),
(1873101,29,-156.68945,2.408526,8.073063,NULL,20000,0,0,100,0);
UPDATE `creature_text` SET `Emote`=15 WHERE `CreatureID`=18731 AND `GroupID`=0;
UPDATE `creature_template` SET `unit_flags`=32832 WHERE `entry` IN (18731,20636);
DELETE FROM `creature_template_addon` WHERE `entry`=18731;

View File

@@ -0,0 +1,136 @@
-- DB update 2023_04_09_06 -> 2023_04_09_07
-- Populate creature_text for Highlord Tirion Fordring (ToC5) from ToC25 (34996) Should probably be 34996 for both, needs a sniff.
DELETE FROM `creature_text` WHERE `CreatureID`=33628;
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(33628, 21, 0, 'Welcome, champions. Today, before the eyes of your leaders and peers, you will prove yourselves worthy combatants.', 14, 0, 100, 1, 0, 0, 35321, 0, 'Highlord Tirion Fordring - SAY_TIRION_CHAMPION_INTRO_1'),
(33628, 22, 0, 'You will first be facing three of the Grand Champions of the Tournament! These fierce contenders have beaten out all others to reach the pinnacle of skill in the joust.', 14, 0, 100, 0, 0, 0, 35330, 0, 'Highlord Tirion Fordring - SAY_TIRION_CHAMPION_INTRO_2'),
(33628, 23, 0, 'Begin!', 14, 0, 100, 0, 0, 8574, 35331, 0, 'Highlord Tirion Fordring - SAY_TIRION_CHAMPION_BEGIN'),
(33628, 24, 0, 'Well fought! Your next challenge comes from the Crusade\'s own ranks. You will be tested against their considerable prowess.', 14, 0, 100, 0, 0, 15882, 35541, 0, 'Highlord Tirion Fordring - SAY_TIRION_PALETRESS_INTRO_1'),
(33628, 31, 0, 'Well done. You have proven yourself today-', 14, 0, 100, 0, 0, 0, 35544, 0, 'Highlord Tirion Fordring - SAY_TIRION_KNIGHT_INTRO_2'),
(33628, 34, 0, 'What is the meaning of this?', 14, 0, 100, 0, 0, 0, 35547, 0, 'Highlord Tirion Fordring - SAY_TIRION_KNIGHT_INTRO_2'),
(33628, 41, 0, 'You may begin!', 14, 0, 100, 22, 0, 8574, 35677, 0, 'Highlord Tirion Fordring - SAY_TIRION_YOU_MAY_BEGIN');
-- Alliance Announcer - Arelas Brightstar
DELETE FROM `creature_text` WHERE `creatureID`=35005;
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(35005, 0, 0, 'Entering the arena, a paladin who is no stranger to the battlefield or tournament ground, the Grand Champion of the Argent Crusade, Eadric the Pure!', 14, 0, 100, 0, 0, 8574, 35542, 0, 'Arelas Brightstar - SAY_EADRIC_INTRO'),
(35005, 1, 0, 'The next combatant is second to none in her passion for upholding the Light. I give you Argent Confessor Paletress!', 14, 0, 100, 0, 0, 8574, 35543, 0, 'Arelas Brightstar - SAY_ARELAS_PALETRESS_INTRO'),
(35005, 2, 0, 'The Silver Covenant is pleased to present their contenders for this event, Highlord.', 14, 0, 100, 396, 0, 8574, 35259, 0, 'Arelas Brightstar - SAY_ARELAS_GRAND_CHAMPIONS_INTRO_1'),
(35005, 3, 0, 'Coming out of the gate is Eressea Dawnsinger, skilled mage and Grand Champion of Silvermoon!\n', 12, 0, 100, 0, 0, 8573, 35338, 0, 'Arelas Brightstar - SAY_ARELAS_GRAND_CHAMPIONS_INTRO_2'),
(35005, 4, 0, 'Entering the arena is the lean and dangerous Zul\'tore, Grand Champion of Sen\'jin!\n', 12, 0, 100, 0, 0, 8573, 35335, 0, 'Arelas Brightstar - SAY_ARELAS_GRAND_CHAMPIONS_INTRO_2'),
(35005, 5, 0, 'Presenting the fierce Grand Champion of Orgrimmar, Mokra the Skullcrusher!\n', 12, 0, 100, 0, 0, 8573, 35334, 0, 'Arelas Brightstar - SAY_ARELAS_GRAND_CHAMPIONS_INTRO_2'),
(35005, 6, 0, 'Representing the tenacity of the Forsaken, here is the Grand Champion of the Undercity, Deathstalker Visceri!\n', 12, 0, 100, 0, 0, 8573, 35337, 0, 'Arelas Brightstar - SAY_ARELAS_GRAND_CHAMPIONS_INTRO_2'),
(35005, 7, 0, 'Tall in the saddle of his kodo, here is the venerable Runok Wildmane, Grand Champion of Thunder Bluff!\n', 12, 0, 100, 0, 0, 8573, 35336, 0, 'Arelas Brightstar - SAY_ARELAS_GRAND_CHAMPIONS_INTRO_2'),
(35005, 8, 0, 'What\'s that, up near the rafters?', 12, 0, 100, 25, 0, 0, 35545, 0, 'Arelas Brightstar - SAY_ARELAS_KNIGHT_INTRO');
DELETE FROM `creature_text_locale` WHERE `CreatureID`=35005 AND `Locale`='zhCN';
INSERT INTO `creature_text_locale` (`CreatureID`, `GroupID`, `ID`, `Locale`, `Text`) VALUES
(35005, 0, 0, 'zhCN', '正在走进竞技场的是一位对于战场和比武场都绝不陌生的圣骑士——银色十字军的总冠军,纯洁者耶德瑞克!'),
(35005, 1, 0, 'zhCN', '接下来出场的是圣光最忠实的追随者!银色神官帕尔崔丝!'),
(35005, 2, 0, 'zhCN', '银色盟约们很高兴地在此介绍他们的斗士,大领主。'),
(35005, 3, 0, 'zhCN', '从大门中走出来的是埃蕾希·晨歌,强大的法师!银月城总冠军!'),
(35005, 4, 0, 'zhCN', '进入竞技场的是削瘦却极度危险的祖尔托,森金村的总冠军!'),
(35005, 5, 0, 'zhCN', '现在请注意,强大的奥格瑞姆总冠军,碎颅者莫克拉出场!'),
(35005, 6, 0, 'zhCN', '我们现在要介绍的是幽暗城的总冠军,强韧的亡灵,死亡猎手维赛里!'),
(35005, 7, 0, 'zhCN', '高高地骑坐在科多兽上的是雷霆崖的总冠军,令人敬畏的鲁诺克·蛮鬃!'),
(35005, 8, 0, 'zhCN', '那些椽子旁边是什么?');
-- Horde Announcer - Jaeren Sunsworn, reverse matching the BroadcastTextId
DELETE FROM `creature_text` WHERE `creatureID`=35004;
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(35004, 0, 0, 'Entering the arena, a paladin who is no stranger to the battlefield or tournament ground, the Grand Champion of the Argent Crusade, Eadric the Pure!', 14, 0, 100, 0, 0, 8574, 35542, 0, 'Jaeren Sunsworn - SAY_JAEREN_INTRO'),
(35004, 1, 0, 'The next combatant is second to none in her passion for upholding the Light. I give you Argent Confessor Paletress!', 14, 0, 100, 0, 0, 8574, 35543, 0, 'Jaeren Sunsworn - SAY_JAEREN_PALETRESS_INTRO'),
(35004, 2, 0, 'The Sunreavers are proud to present their representatives in this trial by combat.', 14, 0, 100, 396, 0, 8574, 35260, 0, 'Jaeren Sunsworn - SAY_JAEREN_GRAND_CHAMPIONS_INTRO_1'),
(35004, 3, 0, 'Here comes the small but deadly Ambrose Boltspark, Grand Champion of Gnomeregan!', 12, 0, 100, 0, 0, 8573, 35248, 0, 'Jaeren Sunsworn - SAY_JAEREN_GRAND_CHAMPIONS_INTRO_2'),
(35004, 4, 0, 'Entering the arena is the Grand Champion of Darnassus, the skilled sentinel Jaelyne Evensong!', 12, 0, 100, 0, 0, 8573, 35249, 0, 'Jaeren Sunsworn - SAY_JAEREN_GRAND_CHAMPIONS_INTRO_2'),
(35004, 5, 0, 'Proud and strong, give a cheer for Marshal Jacob Alerius, the Grand Champion of Stormwind!', 12, 0, 100, 0, 0, 8573, 35245, 0, 'Jaeren Sunsworn - SAY_JAEREN_GRAND_CHAMPIONS_INTRO_2'),
(35004, 6, 0, 'The might of the dwarves is represented today by the Grand Champion of Ironforge, Lana Stouthammer!', 12, 0, 100, 0, 0, 8573, 35246, 0, 'Jaeren Sunsworn - SAY_JAEREN_GRAND_CHAMPIONS_INTRO_2'),
(35004, 7, 0, 'Coming out of the gate is Colosos, the towering Grand Champion of the Exodar!', 12, 0, 100, 0, 0, 8573, 35247, 0, 'Jaeren Sunsworn - SAY_JAEREN_GRAND_CHAMPIONS_INTRO_2'),
(35004, 8, 0, 'What\'s that, up near the rafters?', 12, 0, 100, 25, 0, 0, 35545, 0, 'Jaeren Sunsworn - SAY_JAEREN_KNIGHT_INTRO');
DELETE FROM `creature_text_locale` WHERE `CreatureID`=35004 AND `Locale`='zhCN';
INSERT INTO `creature_text_locale` (`CreatureID`, `GroupID`, `ID`, `Locale`, `Text`) VALUES
(35004, 0, 0, 'zhCN', ''),
(35004, 1, 0, 'zhCN', ''),
(35004, 2, 0, 'zhCN', ''),
(35004, 3, 0, 'zhCN', '·'),
(35004, 4, 0, 'zhCN', '·'),
(35004, 5, 0, 'zhCN', '·'),
(35004, 6, 0, 'zhCN', '·'),
(35004, 7, 0, 'zhCN', ''),
(35004, 8, 0, 'zhCN', '');
-- Argent Confessor Paletress remove empty BroadcastTextId duplicates
DELETE FROM `creature_text` WHERE `CreatureID`=34928;
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(34928, 0, 0, 'Thank you, good herald. Your words are too kind.', 12, 0, 100, 2, 0, 16245, 35762, 0, 'Argent Confessor Paletress - SAY_INTRO_1'),
(34928, 1, 0, 'May the Light give me strength to provide a worthy challenge.', 12, 0, 100, 16, 0, 16246, 35763, 0, 'Argent Confessor Paletress - SAY_INTRO_2'),
(34928, 2, 0, 'Well, then. Let us begin.', 14, 0, 100, 0, 0, 16247, 35229, 0, 'Argent Confessor Paletress - SAY_AGGRO'),
(34928, 3, 0, 'Take this time to consider your past deeds.', 14, 0, 100, 0, 0, 16248, 35764, 0, 'Argent Confessor Paletress - SAY_MEMORY_SUMMON'),
(34928, 4, 0, 'Even the darkest memory fades when confronted!', 14, 0, 100, 0, 0, 16249, 35231, 0, 'Argent Confessor Paletress - SAY_MEMORY_DEATH'),
(34928, 5, 0, 'Take your rest.', 14, 0, 100, 0, 0, 16250, 35765, 0, 'Argent Confessor Paletress - SAY_KILL_PLAYER'),
(34928, 5, 1, 'Be at ease.', 14, 0, 100, 0, 0, 16251, 35766, 0, 'Argent Confessor Paletress - SAY_KILL_PLAYER'),
(34928, 6, 0, 'Excellent work!', 14, 0, 100, 0, 0, 16252, 35232, 0, 'Argent Confessor Paletress - SAY_DEFEATED');
DELETE FROM `creature_text_locale` WHERE `CreatureID`=34928 AND `Locale`='zhCN';
INSERT INTO `creature_text_locale` (`CreatureID`, `GroupID`, `ID`, `Locale`, `Text`) VALUES
(34928, 0, 0, 'zhCN', ''),
(34928, 1, 0, 'zhCN', ''),
(34928, 2, 0, 'zhCN', ''),
(34928, 3, 0, 'zhCN', ''),
(34928, 4, 0, 'zhCN', '使'),
(34928, 5, 0, 'zhCN', ''),
(34928, 5, 1, 'zhCN', ''),
(34928, 6, 0, 'zhCN', '');
-- Eadric the Pure remove empty BroadcastTextId duplicates
DELETE FROM `creature_text` WHERE `CreatureID`=35119;
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(35119, 0, 0, 'Are you up to the challenge? I will not hold back.', 12, 0, 100, 397, 0, 16134, 35347, 0, 'Eadric the Pure - SAY_INTRO'),
(35119, 1, 0, 'Prepare yourselves!', 14, 0, 100, 0, 0, 16135, 35758, 0, 'Eadric the Pure - SAY_AGGRO'),
(35119, 2, 0, '%s begins to radiate light. Shield your eyes!', 41, 0, 100, 0, 0, 0, 35415, 0, 'Eadric the Pure - EMOTE_RADIANCE'),
(35119, 3, 0, '%s targets $n with the Hammer of the Righteous!', 41, 0, 100, 0, 0, 16136, 35408, 0, 'Eadric the Pure - EMOTE_HAMMER_RIGHTEOUS'),
(35119, 4, 0, 'Hammer of the Righteous!', 14, 0, 100, 0, 0, 16136, 35442, 0, 'Eadric the Pure - SAY_HAMMER_RIGHTEOUS'),
(35119, 5, 0, 'You! You need more practice.', 14, 0, 100, 0, 0, 16137, 35759, 0, 'Eadric the Pure - SAY_KILL_PLAYER'),
(35119, 5, 1, 'Nay, nay, and I say yet again nay! Not good enough.', 14, 0, 100, 0, 0, 16138, 35760, 0, 'Eadric the Pure - SAY_KILL_PLAYER'),
(35119, 6, 0, 'I yield! I submit. Excellent work. May I run away now?', 14, 0, 100, 0, 0, 16139, 35761, 0, 'Eadric the Pure - SAY_DEFEATED');
DELETE FROM `creature_text_locale` WHERE `CreatureID`=35119 AND `Locale`='zhCN';
INSERT INTO `creature_text_locale` (`CreatureID`, `GroupID`, `ID`, `Locale`, `Text`) VALUES
(35119, 0, 0, 'zhCN', ''),
(35119, 1, 0, 'zhCN', ''),
(35119, 2, 0, 'zhCN', '%s开始向四周放射光芒'),
(35119, 3, 0, 'zhCN', '%s用正义之锤对准了$n'),
(35119, 4, 0, 'zhCN', ''),
(35119, 5, 0, 'zhCN', ''),
(35119, 5, 1, 'zhCN', ''),
(35119, 6, 0, 'zhCN', '');
-- The Black Knight remove empty BroadcastTextId duplicates
DELETE FROM `creature_text` WHERE `CreatureID`=35451;
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(35451, 0, 0, 'You spoiled my grand entrance, rat.', 12, 0, 100, 0, 0, 16256, 35546, 0, 'The Black Knight - SAY_INTRO_1'),
(35451, 1, 0, 'Did you honestly think an agent of the Lich King would be bested on the field of your pathetic little tournament?', 12, 0, 100, 396, 0, 16257, 35548, 0, 'The Black Knight - SAY_INTRO_2'),
(35451, 2, 0, 'I\'ve come to finish my task.', 12, 0, 100, 396, 0, 16258, 35549, 0, 'The Black Knight - SAY_INTRO_3'),
(35451, 3, 0, 'This farce ends here!', 14, 0, 100, 0, 0, 16259, 35767, 0, 'The Black Knight - SAY_AGGRO'),
(35451, 4, 0, 'My rotting flesh was just getting in the way!', 14, 0, 100, 0, 0, 16262, 35771, 0, 'The Black Knight - SAY_PHASE_2'),
(35451, 5, 0, 'I have no need for bones to best you!', 14, 0, 100, 0, 0, 16263, 35772, 0, 'The Black Knight - SAY_PHASE_3'),
(35451, 6, 0, 'Pathetic.', 14, 0, 100, 0, 0, 16260, 35768, 0, 'The Black Knight - SAY_KILL_PLAYER'),
(35451, 6, 1, 'A waste of flesh.', 14, 0, 100, 0, 0, 16261, 35769, 0, 'The Black Knight - SAY_KILL_PLAYER'),
(35451, 7, 0, 'No! I must not fail... again...', 14, 0, 100, 0, 0, 16264, 35770, 0, 'The Black Knight - SAY_DEATH');
DELETE FROM `creature_text_locale` WHERE `CreatureID`=35451 AND `Locale`='zhCN';
INSERT INTO `creature_text_locale` (`CreatureID`, `GroupID`, `ID`, `Locale`, `Text`) VALUES
(35451, 0, 0, 'zhCN', '你搞砸了我的盛大登场,鼠辈。'),
(35451, 1, 0, 'zhCN', '你们真以为,巫妖王的战士会败在你们那可怜的比武场上?'),
(35451, 2, 0, 'zhCN', '我是来做个了断的。'),
(35451, 3, 0, 'zhCN', '这场闹剧该结束了!'),
(35451, 4, 0, 'zhCN', '我的烂肉还真碍事!'),
(35451, 5, 0, 'zhCN', '我可不需要用骨头来打败你!'),
(35451, 6, 0, 'zhCN', '可怜。'),
(35451, 6, 1, 'zhCN', '真是对生命的浪费。'),
(35451, 7, 0, 'zhCN', '不!我绝不能再……失败了……');

View File

@@ -0,0 +1,3 @@
-- DB update 2023_04_09_07 -> 2023_04_09_08
-- Ahn'kahet: The Old Kingdom - Jedoga Shadowseeker
DELETE FROM `spell_script_names` WHERE `spell_id`=56150 AND `ScriptName`='spell_jedoga_sacrafice_beam';

View File

@@ -0,0 +1,6 @@
-- DB update 2023_04_09_08 -> 2023_04_09_09
--
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=1 AND `SourceGroup` IN (17370,18608) AND `SourceEntry`=23894;
INSERT INTO `conditions` VALUES
(1,17370,23894,0,0,22,0,542,0,0,0,0,0,'','Drop Fel Orc Blood Vial only inside Blood Furnace'),
(1,18608,23894,0,0,22,0,542,0,0,0,0,0,'','Drop Fel Orc Blood Vial only inside Blood Furnace');

View File

@@ -0,0 +1,17 @@
-- DB update 2023_04_09_09 -> 2023_04_09_10
-- Risen Ally(30230)
DELETE FROM `creature_template_spell` WHERE `CreatureID` = 30230;
INSERT INTO `creature_template_spell` (`CreatureID`, `Index`, `Spell`, `VerifiedBuild`) VALUES
(30230, 0, 62225, 12340),
(30230, 1, 47480, 12340),
(30230, 2, 47481, 12340),
(30230, 3, 47482, 12340),
(30230, 4, 47484, 12340),
(30230, 5, 47496, 12340);
UPDATE `creature_template` SET `AIName` = '', `ScriptName` = 'npc_pet_dk_risen_ally' WHERE `entry` = 30230;
-- Thrash
DELETE FROM `spell_script_names` WHERE `spell_id`=47480 AND `ScriptName`='spell_dk_ghoul_thrash';
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(47480, 'spell_dk_ghoul_thrash');

View File

@@ -0,0 +1,119 @@
-- DB update 2023_04_09_10 -> 2023_04_09_11
-- 28728 - Feign Death - Used by outland Basilisks && 35385 - Threshalisk Charge - Used by outland Basilisks
DELETE FROM `spell_script_names` WHERE `spell_id` IN (28728,35385);
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
(28728,'spell_gen_feign_death_all_flags'),
(35385,'spell_gen_threshalisk_charge');
-- All creatures that use Threshalisk Charge (35385) and Feign Death (28728)
DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryorguid` IN (20607,20924,19730,19729,20283,19706,20279,20280,20987,20925);
DELETE FROM `creature_text` WHERE `CreatureID` IN (20607,20924,19730,19729,20283,19706,20279,20280,20987,20925);
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(20607, 0, 0, '%s stops playing dead and charges forward!', 16, 0, 100, 0, 0, 0, 18325, 0, 'Craghide Basilisk - EMOTE_STOP_PLAY_DEAD'),
(20924, 0, 0, '%s stops playing dead and charges forward!', 16, 0, 100, 0, 0, 0, 18325, 0, 'Grishnath Basilisk - EMOTE_STOP_PLAY_DEAD'),
(19730, 0, 0, '%s stops playing dead and charges forward!', 16, 0, 100, 0, 0, 0, 18325, 0, 'Ironspine Gazer - EMOTE_STOP_PLAY_DEAD'),
(19729, 0, 0, '%s stops playing dead and charges forward!', 16, 0, 100, 0, 0, 0, 18325, 0, 'Ironspine Threshalisk - EMOTE_STOP_PLAY_DEAD'),
(20283, 0, 0, '%s stops playing dead and charges forward!', 16, 0, 100, 0, 0, 0, 18325, 0, 'Marshrock Stomper - EMOTE_STOP_PLAY_DEAD'),
(19706, 0, 0, '%s stops playing dead and charges forward!', 16, 0, 100, 0, 0, 0, 18325, 0, 'Marshrock Threshalisk - EMOTE_STOP_PLAY_DEAD'),
(20279, 0, 0, '%s stops playing dead and charges forward!', 16, 0, 100, 0, 0, 0, 18325, 0, 'Ragestone Threshalisk - EMOTE_STOP_PLAY_DEAD'),
(20280, 0, 0, '%s stops playing dead and charges forward!', 16, 0, 100, 0, 0, 0, 18325, 0, 'Ragestone Trampler - EMOTE_STOP_PLAY_DEAD'),
(20987, 0, 0, '%s stops playing dead and charges forward!', 16, 0, 100, 0, 0, 0, 18325, 0, 'Ruuan Weald Basilisk - EMOTE_STOP_PLAY_DEAD'),
(20925, 0, 0, '%s stops playing dead and charges forward!', 16, 0, 100, 0, 0, 0, 18325, 0, 'Scalded Basilisk - EMOTE_STOP_PLAY_DEAD');
-- ID 20607 (Craghide Basilisk)
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
(20607, 0, 0, 0, 9, 0, 20, 0, 0, 40, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Craghide Basilisk - Within 0-40 Range - Cast \'Threshalisk Charge\''),
(20607, 0, 1, 0, 0, 0, 100, 0, 7000, 11000, 45000, 50000, 0, 11, 35313, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Craghide Basilisk - In Combat - Cast \'Hypnotic Gaze\''),
(20607, 0, 2, 3, 2, 0, 30, 0, 0, 15, 0, 0, 0, 11, 28728, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Craghide Basilisk - Between 0-15% Health - Cast \'Feign Death\''),
(20607, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Craghide Basilisk - Between 0-15% Health - Stop Attacking'),
(20607, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Craghide Basilisk - Between 0-15% Health - Set Event Phase 1'),
(20607, 0, 5, 6, 0, 1, 100, 0, 6000, 6000, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Craghide Basilisk - In Combat - Cast \'Threshalisk Charge\' (Phase 1)'),
(20607, 0, 6, 0, 61, 1, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Craghide Basilisk - In Combat - Say Line 0 (Phase 1)');
-- ID 20924 (Grishnath Basilisk)
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
(20924, 0, 0, 0, 2, 0, 100, 512, 0, 70, 0, 0, 0, 11, 37590, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Grishnath Basilisk - Between 0-70% Health - Cast \'Soften\' I'),
(20924, 0, 1, 0, 2, 0, 100, 512, 0, 40, 0, 0, 0, 11, 37590, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Grishnath Basilisk - Between 0-40% Health - Cast \'Soften\' II'),
(20924, 0, 2, 0, 2, 0, 100, 512, 0, 10, 0, 0, 0, 11, 37590, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Grishnath Basilisk - Between 0-10% Health - Cast \'Soften\' III'),
(20924, 0, 3, 4, 2, 0, 30, 0, 0, 15, 0, 0, 0, 11, 28728, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Grishnath Basilisk - Between 0-15% Health - Cast \'Feign Death\''),
(20924, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Grishnath Basilisk - Between 0-15% Health - Stop Attacking'),
(20924, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Grishnath Basilisk - Between 0-15% Health - Set Event Phase 1'),
(20924, 0, 6, 7, 0, 1, 100, 0, 6000, 6000, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Grishnath Basilisk - In Combat - Cast \'Threshalisk Charge\' (Phase 1)'),
(20924, 0, 7, 0, 61, 1, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Grishnath Basilisk - In Combat - Say Line 0 (Phase 1)');
-- ID 19730 (Ironspine Gazer)
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
(19730, 0, 0, 0, 9, 0, 20, 0, 0, 40, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironspine Gazer - Within 0-40 Range - Cast \'Threshalisk Charge\''),
(19730, 0, 1, 0, 0, 0, 100, 0, 7000, 11000, 45000, 50000, 0, 11, 35313, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironspine Gazer - In Combat - Cast \'Hypnotic Gaze\''),
(19730, 0, 2, 3, 2, 0, 30, 0, 0, 15, 0, 0, 0, 11, 28728, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironspine Gazer - Between 0-15% Health - Cast \'Feign Death\''),
(19730, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironspine Gazer - Between 0-15% Health - Stop Attacking'),
(19730, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironspine Gazer - Between 0-15% Health - Set Event Phase 1'),
(19730, 0, 5, 6, 0, 1, 100, 0, 6000, 6000, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironspine Gazer - In Combat - Cast \'Threshalisk Charge\' (Phase 1)'),
(19730, 0, 6, 0, 61, 1, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironspine Gazer - In Combat - Say Line 0 (Phase 1)');
-- ID 19729 (Ironspine Threshalisk)
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
(19729, 0, 0, 0, 9, 0, 20, 0, 0, 40, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironspine Threshalisk - Within 0-40 Range - Cast \'Threshalisk Charge\''),
(19729, 0, 1, 2, 2, 0, 60, 0, 0, 15, 0, 0, 0, 11, 28728, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironspine Threshalisk - Between 0-15% Health - Cast \'Feign Death\''),
(19729, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironspine Threshalisk - Between 0-15% Health - Stop Attacking'),
(19729, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironspine Threshalisk - Between 0-15% Health - Set Event Phase 1'),
(19729, 0, 4, 5, 0, 1, 100, 0, 6000, 6000, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironspine Threshalisk - In Combat - Cast \'Threshalisk Charge\' (Phase 1)'),
(19729, 0, 5, 0, 61, 1, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Ironspine Threshalisk - In Combat - Say Line 0 (Phase 1)');
-- ID 20283 (Marshrock Stomper)
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 20283;
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
(20283, 0, 0, 0, 0, 0, 100, 0, 5000, 10000, 15000, 30000, 0, 11, 12612, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Marshrock Stomper - In Combat - Cast \'Stomp\''),
(20283, 0, 1, 2, 2, 0, 30, 0, 0, 30, 0, 0, 0, 11, 28728, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Marshrock Threshalisk - Between 0-30% Health - Cast \'Feign Death\''),
(20283, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Marshrock Threshalisk - Between 0-30% Health - Stop Attacking'),
(20283, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Marshrock Threshalisk - Between 0-30% Health - Set Event Phase 1'),
(20283, 0, 4, 5, 0, 1, 100, 0, 6000, 6000, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Marshrock Threshalisk - In Combat - Cast \'Threshalisk Charge\' (Phase 1)'),
(20283, 0, 5, 0, 61, 1, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Marshrock Threshalisk - In Combat - Say Line 0 (Phase 1)');
-- ID 19706 (Marshrock Threshalisk)
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
(19706, 0, 0, 0, 9, 0, 20, 0, 0, 40, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Marshrock Threshalisk - Within 0-40 Range - Cast \'Threshalisk Charge\''),
(19706, 0, 1, 2, 2, 0, 50, 0, 0, 15, 0, 0, 0, 11, 28728, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Marshrock Threshalisk - Between 0-15% Health - Cast \'Feign Death\''),
(19706, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Marshrock Threshalisk - Between 0-15% Health - Stop Attacking'),
(19706, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Marshrock Threshalisk - Between 0-15% Health - Set Event Phase 1'),
(19706, 0, 4, 5, 0, 1, 100, 0, 6000, 6000, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Marshrock Threshalisk - In Combat - Cast \'Threshalisk Charge\' (Phase 1)'),
(19706, 0, 5, 0, 61, 1, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Marshrock Threshalisk - In Combat - Say Line 0 (Phase 1)');
-- ID 20279 (Ragestone Threshalisk)
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
(20279, 0, 0, 0, 2, 0, 100, 0, 0, 20, 0, 0, 0, 11, 3019, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragestone Threshalisk - Between 0-20% Health - Cast \'Frenzy\''),
(20279, 0, 1, 2, 2, 0, 30, 0, 0, 15, 0, 0, 0, 11, 28728, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragestone Threshalisk - Between 0-15% Health - Cast \'Feign Death\''),
(20279, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragestone Threshalisk - Between 0-15% Health - Stop Attacking'),
(20279, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragestone Threshalisk - Between 0-15% Health - Set Event Phase 1'),
(20279, 0, 4, 5, 0, 1, 100, 0, 6000, 6000, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragestone Threshalisk - In Combat - Cast \'Threshalisk Charge\' (Phase 1)'),
(20279, 0, 5, 0, 61, 1, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragestone Threshalisk - In Combat - Say Line 0 (Phase 1)');
-- ID 20280 (Ragestone Trampler)
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
(20280, 0, 0, 0, 0, 0, 100, 0, 5000, 11000, 25000, 28000, 0, 11, 3019, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragestone Trampler - In Combat - Cast \'Frenzy\''),
(20280, 0, 1, 0, 0, 0, 100, 0, 11000, 20000, 7000, 12000, 0, 11, 5568, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragestone Trampler - In Combat - Cast \'Trample\''),
(20280, 0, 2, 3, 2, 0, 30, 0, 0, 15, 0, 0, 0, 11, 28728, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragestone Trampler - Between 0-15% Health - Cast \'Feign Death\''),
(20280, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragestone Trampler - Between 0-15% Health - Stop Attacking'),
(20280, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragestone Trampler - Between 0-15% Health - Set Event Phase 1'),
(20280, 0, 5, 6, 0, 1, 100, 0, 6000, 6000, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragestone Trampler - In Combat - Cast \'Threshalisk Charge\' (Phase 1)'),
(20280, 0, 6, 0, 61, 1, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Ragestone Trampler - In Combat - Say Line 0 (Phase 1)');
-- ID 20987 (Ruuan Weald Basilisk)
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 20987;
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
(20987, 0, 0, 0, 9, 0, 20, 0, 0, 40, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Ruuan Weald Basilisk - Within 0-40 Range - Cast \'Threshalisk Charge\''),
(20987, 0, 1, 2, 2, 0, 60, 0, 0, 15, 0, 0, 0, 11, 28728, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ruuan Weald Basilisk - Between 0-15% Health - Cast \'Feign Death\''),
(20987, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ruuan Weald Basilisk - Between 0-15% Health - Stop Attacking'),
(20987, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ruuan Weald Basilisk - Between 0-15% Health - Set Event Phase 1'),
(20987, 0, 4, 5, 0, 1, 100, 0, 6000, 6000, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Ruuan Weald Basilisk - In Combat - Cast \'Threshalisk Charge\' (Phase 1)'),
(20987, 0, 5, 0, 61, 1, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Ruuan Weald Basilisk - In Combat - Say Line 0 (Phase 1)');
-- ID 20925 (Scalded Basilisk)
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
(20925, 0, 0, 0, 0, 0, 85, 0, 8000, 13000, 14000, 19000, 0, 11, 35236, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Scalded Basilisk - In Combat - Cast \'Heat Wave\''),
(20925, 0, 1, 2, 2, 0, 30, 0, 0, 15, 0, 0, 0, 11, 28728, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scalded Basilisk - Between 0-15% Health - Cast \'Feign Death\''),
(20925, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scalded Basilisk - Between 0-15% Health - Stop Attacking'),
(20925, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scalded Basilisk - Between 0-15% Health - Set Event Phase 1'),
(20925, 0, 4, 5, 0, 1, 100, 0, 6000, 6000, 0, 0, 0, 11, 35385, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Scalded Basilisk - In Combat - Cast \'Threshalisk Charge\' (Phase 1)'),
(20925, 0, 5, 0, 61, 1, 100, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Scalded Basilisk - In Combat - Say Line 0 (Phase 1)');

View File

@@ -0,0 +1,17 @@
-- DB update 2023_04_09_11 -> 2023_04_09_12
--
DELETE FROM `spell_target_position` WHERE `ID` IN (31528, 31529, 31530);
INSERT INTO `spell_target_position` (`ID`, `EffectIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `VerifiedBuild`) VALUES
(31528, 0, 545, -316.102, -166.444, -7.66667, 0, 48749),
(31529, 0, 545, -348.497, -161.719, -7.66667, 0, 48749),
(31530, 0, 545, -331.162, -112.213, -7.66667, 0, 48749);
UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = 17951;
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 17951) AND (`source_type` = 0) AND (`id` IN (0));
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `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
(17951, 0, 0, 0, 0, 0, 100, 0, 2000, 2000, 2000, 2000, 0, 11, 31532, 0, 0, 0, 0, 0, 205, 1, 1, 0, 0, 0, 0, 0, 0, 'Steamrigger Mechanic - In Combat - Cast \'Repair\'');
DELETE FROM `spelldifficulty_dbc` WHERE `ID` = 31532;
INSERT INTO `spelldifficulty_dbc` (`ID`, `DifficultySpellID_1`, `DifficultySpellID_2`) VALUES
(31532, 31532, 37936);

View File

@@ -117,6 +117,7 @@ void EventProcessor::CancelEventGroup(uint8 group)
{
if (itr->second->m_eventGroup != group)
{
++itr;
continue;
}

View File

@@ -691,6 +691,14 @@ void BossAI::ScheduleHealthCheckEvent(uint32 healthPct, std::function<void()> ex
_healthCheckEvents.push_back(HealthCheckEventData(healthPct, exec));
};
void BossAI::ScheduleHealthCheckEvent(std::initializer_list<uint8> healthPct, std::function<void()> exec)
{
for (auto const& checks : healthPct)
{
_healthCheckEvents.push_back(HealthCheckEventData(checks, exec));
}
}
bool BossAI::_ProccessHealthCheckEvent(uint8 healthPct, uint32 damage, std::function<void()> exec) const
{
if (me->HealthBelowPctDamaged(healthPct, damage))

View File

@@ -470,6 +470,7 @@ public:
void UpdateAI(uint32 diff) override;
void ScheduleHealthCheckEvent(uint32 healthPct, std::function<void()> exec);
void ScheduleHealthCheckEvent(std::initializer_list<uint8> healthPct, std::function<void()> exec);
// Hook used to execute events scheduled into EventMap without the need
// to override UpdateAI

View File

@@ -1635,7 +1635,9 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
float x, y, z;
target->GetPosition(x, y, z);
if (e.action.moveToPos.ContactDistance > 0)
target->GetContactPoint(me, x, y, z, e.action.moveToPos.ContactDistance);
{
target->GetNearPoint(me, x, y, z, e.action.moveToPos.ContactDistance, 0, target->GetAngle(me));
}
me->GetMotionMaster()->MovePoint(e.action.moveToPos.pointId, x + e.target.x, y + e.target.y, z + e.target.z, true, true, isControlled ? MOTION_SLOT_CONTROLLED : MOTION_SLOT_ACTIVE);
}
break;

View File

@@ -1428,7 +1428,7 @@ enum SMARTAI_TARGETS
SMART_TARGET_SUMMONED_CREATURES = 204, // Entry
SMART_TARGET_INSTANCE_STORAGE = 205, // Instance data index, Type (creature (1), gameobject (2))
SMART_TARGET_AC_END = 205 // placeholder
SMART_TARGET_AC_END = 206 // placeholder
};
struct SmartTarget

View File

@@ -208,7 +208,10 @@ void InstanceScript::UpdateMinionState(Creature* minion, EncounterState state)
minion->Respawn();
else
{
minion->AI()->DoZoneInCombat(nullptr, 100.0f);
if (minion->GetReactState() == REACT_AGGRESSIVE)
{
minion->AI()->DoZoneInCombat(nullptr, 100.0f);
}
}
break;
default:
@@ -362,6 +365,20 @@ void InstanceScript::StorePersistentData(uint32 index, uint32 data)
persistentData[index] = data;
}
void InstanceScript::DoForAllMinions(uint32 id, std::function<void(Creature*)> exec)
{
BossInfo* bossInfo = &bosses[id];
MinionSet listCopy = bossInfo->minion;
for (auto const& minion : listCopy)
{
if (minion)
{
exec(minion);
}
}
}
void InstanceScript::Load(const char* data)
{
if (!data)

View File

@@ -260,6 +260,9 @@ public:
// Allows to perform particular actions
virtual void DoAction(int32 /*action*/) {}
// Allows executing code using all creatures registered in the instance script as minions
void DoForAllMinions(uint32 id, std::function<void(Creature*)> exec);
protected:
void SetHeaders(std::string const& dataHeaders);
void SetBossNumber(uint32 number) { bosses.resize(number); }

View File

@@ -69,6 +69,7 @@ enum Events
EVENT_JEDOGA_PREPARE_RITUAL,
EVENT_JEDOGA_MOVE_UP,
EVENT_JEDOGA_MOVE_DOWN,
EVENT_JEDGA_START_RITUAL,
// Initiate
EVENT_RITUAL_BEGIN_MOVE,
@@ -384,11 +385,9 @@ struct boss_jedoga_shadowseeker : public BossAI
if (!summons.empty())
{
sacraficeTarget_GUID = Acore::Containers::SelectRandomContainerElement(summons);
if (Creature* volunteer = ObjectAccessor::GetCreature(*me, sacraficeTarget_GUID))
if (ObjectAccessor::GetCreature(*me, sacraficeTarget_GUID))
{
Talk(SAY_SACRIFICE_1);
sacraficeTarget_GUID = volunteer->GetGUID();
volunteer->AI()->DoAction(ACTION_RITUAL_BEGIN);
events.ScheduleEvent(EVENT_JEDGA_START_RITUAL, 3s, 0, PHASE_RITUAL);
}
// Something failed, let players continue but do not grant achievement
else
@@ -506,6 +505,17 @@ struct boss_jedoga_shadowseeker : public BossAI
me->GetMotionMaster()->MovePoint(POINT_DOWN, JedogaPosition[1], false);
break;
}
case EVENT_JEDGA_START_RITUAL:
{
sacraficeTarget_GUID = Acore::Containers::SelectRandomContainerElement(summons);
if (Creature* volunteer = ObjectAccessor::GetCreature(*me, sacraficeTarget_GUID))
{
Talk(SAY_SACRIFICE_1);
sacraficeTarget_GUID = volunteer->GetGUID();
volunteer->AI()->DoAction(ACTION_RITUAL_BEGIN);
}
break;
}
}
}
@@ -632,12 +642,8 @@ struct npc_twilight_volunteer : public ScriptedAI
if (Creature* jedoga = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_JEDOGA_SHADOWSEEKER)))
{
jedoga->AI()->Talk(SAY_SACRIFICE_2);
jedoga->CastSpell(nullptr, SPELL_SACRIFICE_BEAM);
if (Creature* ritualTrigger = jedoga->SummonCreature(NPC_JEDOGA_CONTROLLER, JedogaPosition[2], TEMPSUMMON_TIMED_DESPAWN, 5000))
{
ritualTrigger->CastSpell(ritualTrigger, SPELL_SACRIFICE_VISUAL);
}
jedoga->CastSpell(nullptr, SPELL_SACRIFICE_BEAM); /// @todo: Visual is not working. (cosmetic)
jedoga->AI()->DoAction(ACTION_SACRAFICE);
}
Talk(SAY_SACRIFICED);
@@ -656,6 +662,14 @@ struct npc_twilight_volunteer : public ScriptedAI
me->SetHomePosition(JedogaPosition[2]);
me->SetWalk(true);
me->GetMotionMaster()->MovePoint(POINT_RITUAL, JedogaPosition[2], false);
if (Creature* jedoga = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_JEDOGA_SHADOWSEEKER)))
{
if (Creature* ritualTrigger = jedoga->SummonCreature(NPC_JEDOGA_CONTROLLER, JedogaPosition[2], TEMPSUMMON_TIMED_DESPAWN, 15000))
{
ritualTrigger->CastSpell(ritualTrigger, SPELL_SACRIFICE_VISUAL);
}
}
}
}
@@ -688,31 +702,6 @@ class spell_random_lightning_visual_effect : public SpellScript
}
};
// 56150 - Sacrifice Beam
class spell_jedoga_sacrafice_beam : public AuraScript
{
PrepareAuraScript(spell_jedoga_sacrafice_beam);
bool Load() override
{
return GetCaster()->GetTypeId() == TYPEID_UNIT;
}
void HandleRemoval(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
AuraRemoveMode const removeMode = GetTargetApplication()->GetRemoveMode();
if (removeMode == AURA_REMOVE_BY_DEFAULT || removeMode == AURA_REMOVE_BY_EXPIRE)
{
GetCaster()->ToCreature()->AI()->DoAction(ACTION_SACRAFICE);
}
}
void Register() override
{
AfterEffectRemove += AuraEffectRemoveFn(spell_jedoga_sacrafice_beam::HandleRemoval, EFFECT_1, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
}
};
// CriteriaID 7359, Volunteer Work (2056)
class achievement_volunteer_work : public AchievementCriteriaScript
{
@@ -740,7 +729,6 @@ void AddSC_boss_jedoga_shadowseeker()
// Spells
RegisterSpellScript(spell_random_lightning_visual_effect);
RegisterSpellScript(spell_jedoga_sacrafice_beam);
// Achievements
new achievement_volunteer_work();

View File

@@ -85,8 +85,6 @@ enum PaletressEvents
EVENT_SPELL_WAKING_NIGHTMARE,
};
#define TEXT_RADIATE "Eadric the Pure begins to radiate light. Shield your eyes!"
class boss_eadric : public CreatureScript
{
public:
@@ -119,10 +117,7 @@ public:
{
if( who->GetTypeId() == TYPEID_PLAYER )
{
if( urand(0, 1) )
Talk(TEXT_EADRIC_SLAIN_1);
else
Talk(TEXT_EADRIC_SLAIN_2);
Talk(SAY_EADRIC_KILL_PLAYER);
}
}
@@ -131,7 +126,7 @@ public:
events.Reset();
events.ScheduleEvent(EVENT_SPELL_RADIANCE, 16000);
events.ScheduleEvent(EVENT_SPELL_HAMMER_RIGHTEOUS, 25000);
Talk(TEXT_EADRIC_AGGRO);
Talk(SAY_EADRIC_AGGRO);
me->CastSpell(me, SPELL_VENGEANCE, false);
if( pInstance )
pInstance->SetData(BOSS_ARGENT_CHALLENGE, IN_PROGRESS);
@@ -154,7 +149,7 @@ public:
me->GetMap()->UpdateEncounterState(ENCOUNTER_CREDIT_CAST_SPELL, 68574, me); // paletress' spell credits encounter, but shouldn't credit achievements
me->SetFaction(FACTION_FRIENDLY);
events.Reset();
Talk(TEXT_EADRIC_DEATH);
Talk(SAY_EADRIC_DEFEATED);
me->GetThreatMgr().clearReferences();
me->SetRegeneratingHealth(false);
_EnterEvadeMode();
@@ -182,16 +177,14 @@ public:
break;
case EVENT_SPELL_RADIANCE:
me->CastSpell((Unit*)nullptr, SPELL_RADIANCE, false);
me->TextEmote(TEXT_RADIATE, nullptr, true);
Talk(SAY_EADRIC_EMOTE_RADIANCE);
events.Repeat(16s);
break;
case EVENT_SPELL_HAMMER_RIGHTEOUS:
if( Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 55.0f, true) )
{
char buffer[100];
snprintf(buffer, sizeof(buffer), "Eadric the Pure targets %s with the Hammer of the Righteous!", target->GetName().c_str());
me->TextEmote(buffer, nullptr, true);
Talk(TEXT_EADRIC_HAMMER);
Talk(SAY_EADRIC_EMOTE_HAMMER_RIGHTEOUS, target);
Talk(SAY_EADRIC_HAMMER_RIGHTEOUS);
me->CastSpell(target, SPELL_HAMMER_JUSTICE, true);
me->CastSpell(target, SPELL_HAMMER_RIGHTEOUS, false);
}
@@ -251,10 +244,7 @@ public:
{
if( who->GetTypeId() == TYPEID_PLAYER )
{
if( urand(0, 1) )
Talk(TEXT_PALETRESS_SLAIN_1);
else
Talk(TEXT_PALETRESS_SLAIN_2);
Talk(SAY_PALETRESS_KILL_PLAYER);
}
}
@@ -264,7 +254,7 @@ public:
events.ScheduleEvent(EVENT_SPELL_HOLY_FIRE, 9s, 12s);
events.ScheduleEvent(EVENT_SPELL_SMITE, 2s, 3s);
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
Talk(TEXT_PALETRESS_AGGRO);
Talk(SAY_PALETRESS_AGGRO);
if( pInstance )
pInstance->SetData(BOSS_ARGENT_CHALLENGE, IN_PROGRESS);
}
@@ -275,7 +265,7 @@ public:
{
MemoryGUID.Clear();
me->RemoveAura(SPELL_SHIELD);
Talk(TEXT_PALETRESS_MEMORY_DEFEATED);
Talk(SAY_PALETRESS_MEMORY_DEATH);
}
else if( param == (-1) )
{
@@ -302,7 +292,7 @@ public:
me->CastSpell((Unit*)nullptr, 68574, true); // achievements
me->SetFaction(FACTION_FRIENDLY);
events.Reset();
Talk(TEXT_PALETRESS_DEATH);
Talk(SAY_PALETRESS_DEFEATED);
me->GetThreatMgr().clearReferences();
me->SetRegeneratingHealth(false);
_EnterEvadeMode();
@@ -341,7 +331,7 @@ public:
if( !summoned && HealthBelowPct(25) )
{
me->InterruptNonMeleeSpells(true);
Talk(TEXT_PALETRESS_MEMORY_SUMMON);
Talk(SAY_PALETRESS_MEMORY_SUMMON);
me->CastSpell((Unit*)nullptr, SPELL_HOLY_NOVA, false);
me->CastSpell(me, SPELL_SHIELD, false);
me->CastSpell((Unit*)nullptr, SPELL_SUMMON_MEMORY, false);

View File

@@ -174,7 +174,7 @@ public:
return;
pInstance->SetData(BOSS_BLACK_KNIGHT, IN_PROGRESS);
Talk(TEXT_BK_AGGRO);
Talk(SAY_BK_AGGRO);
me->CastSpell((Unit*)nullptr, (pInstance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_HORDE ? SPELL_RAISE_DEAD_JAEREN : SPELL_RAISE_DEAD_ARELAS), false);
if( Creature* announcer = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_ANNOUNCER)) )
announcer->DespawnOrUnsummon();
@@ -209,7 +209,7 @@ public:
{
case 2:
me->SetDisplayId(MODEL_SKELETON);
Talk(TEXT_BK_SKELETON_RES);
Talk(SAY_BK_PHASE_2);
me->CastSpell(me, SPELL_ARMY_DEAD, false);
events.Reset();
@@ -220,7 +220,7 @@ public:
break;
case 3:
me->SetDisplayId(MODEL_GHOST);
Talk(TEXT_BK_GHOST_RES);
Talk(SAY_BK_PHASE_3);
events.Reset();
events.ScheduleEvent(EVENT_SPELL_DEATH_BITE, 2s);
@@ -251,8 +251,8 @@ public:
case EVENT_ANNOUNCER_SAY_ZOMBIE:
if( pInstance && !summons.empty() )
if( Creature* ghoul = pInstance->instance->GetCreature(*summons.begin()) )
ghoul->Yell("[Zombie] .... . Brains ....", LANG_UNIVERSAL);
if (urand(0, 1))
ghoul->Yell("[Zombie] .... . Brains ....", LANG_UNIVERSAL); /// @todo: Multiple variations + not always happening, from video sources, needs sniff to transition from DB.
break;
case EVENT_SPELL_PLAGUE_STRIKE:
if( me->GetVictim() )
@@ -307,17 +307,14 @@ public:
{
if( victim->GetTypeId() == TYPEID_PLAYER )
{
if( urand(0, 1) )
Talk(TEXT_BK_SLAIN_1);
else
Talk(TEXT_BK_SLAIN_2);
Talk(SAY_BK_KILL_PLAYER);
}
}
void JustDied(Unit* /*killer*/) override
{
me->CastSpell((Unit*)nullptr, SPELL_BK_KILL_CREDIT, true);
Talk(TEXT_BK_DEATH);
Talk(SAY_BK_DEATH);
if( pInstance )
pInstance->SetData(BOSS_BLACK_KNIGHT, DONE);
if( me->ToTempSummon() )

View File

@@ -90,6 +90,11 @@ enum ChampionSpells
SPELL_ROLLING_THROW = 67546, // not implemented yet!
};
enum Texts
{
SAY_TRAMPLED = 0,
};
#define SPELL_FIREBALL DUNGEON_MODE(SPELL_FIREBALL_N, SPELL_FIREBALL_H)
#define SPELL_BLAST_WAVE DUNGEON_MODE(SPELL_BLAST_WAVE_N, SPELL_BLAST_WAVE_H)
#define SPELL_POLYMORPH DUNGEON_MODE(SPELL_POLYMORPH_N, SPELL_POLYMORPH_H)
@@ -647,16 +652,8 @@ public:
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{
switch( spell->Id )
{
case SPELL_TRAMPLE_STUN:
{
char buffer[50];
snprintf(buffer, sizeof(buffer), "%s is trampled!", me->GetName().c_str());
me->TextEmote(buffer);
}
break;
}
if (spell->Id == SPELL_TRAMPLE_STUN)
Talk(SAY_TRAMPLED, me);
}
void UpdateAI(uint32 diff) override

View File

@@ -25,6 +25,17 @@
const Position SpawnPosition = {746.67f, 684.08f, 412.5f, 4.65f};
#define CLEANUP_CHECK_INTERVAL 5000
/**
* @todo: Missing dialog/RP (already populated in DB) && spawns (can use ToC25 locations?) for:
*
* Garrosh Hellscream 34995
* King Varian Wrynn 34990
* Lady Jaina Proudmoore 34992 (missing in DB)
* Thrall 34994
*
* And possibly NPC_TIRION 33628 is wrong (should be 34996, from ToC25, needs a sniff to confirm, check .h)
*/
class Group;
class instance_trial_of_the_champion : public InstanceMapScript
@@ -523,9 +534,9 @@ public:
{
Counter = urand(0, 1);
if( Counter )
announcer->AI()->Talk(TEXT_INTRODUCE_EADRIC);
announcer->AI()->Talk(SAY_EADRIC_INTRO_ANNOUNCER);
else
announcer->AI()->Talk(TEXT_INTRODUCE_PALETRESS);
announcer->AI()->Talk(SAY_JAEREN_PALETRESS_INTRO);
}
HandleGameObject(GO_EnterGateGUID, false);
events.RescheduleEvent(EVENT_START_ARGENT_CHALLENGE_INTRO, 0ms);
@@ -702,27 +713,27 @@ public:
case 0:
CHAMPION_TO_SUMMON = NPC_MOKRA;
MINION_TO_SUMMON = NPC_ORGRIMMAR_MINION;
TEXT_ID = TEXT_MOKRA_SKILLCRUSHER;
TEXT_ID = SAY_GRAND_CHAMPIONS_INTRO_SKULLCRUSHER;
break;
case 1:
CHAMPION_TO_SUMMON = NPC_ERESSEA;
MINION_TO_SUMMON = NPC_SILVERMOON_MINION;
TEXT_ID = TEXT_ERESSEA_DAWNSINGER;
TEXT_ID = SAY_GRAND_CHAMPIONS_INTRO_DAWNSINGER;
break;
case 2:
CHAMPION_TO_SUMMON = NPC_RUNOK;
MINION_TO_SUMMON = NPC_THUNDER_BLUFF_MINION;
TEXT_ID = TEXT_RUNOK_WILDMANE;
TEXT_ID = SAY_GRAND_CHAMPIONS_INTRO_WILDMANE;
break;
case 3:
CHAMPION_TO_SUMMON = NPC_ZULTORE;
MINION_TO_SUMMON = NPC_SENJIN_MINION;
TEXT_ID = TEXT_ZUL_TORE;
TEXT_ID = SAY_GRAND_CHAMPIONS_INTRO_ZULTORE;
break;
case 4:
CHAMPION_TO_SUMMON = NPC_VISCERI;
MINION_TO_SUMMON = NPC_UNDERCITY_MINION;
TEXT_ID = TEXT_DEATHSTALKER_VESCERI;
TEXT_ID = SAY_GRAND_CHAMPIONS_INTRO_DEATHSTALKER;
break;
default:
return;
@@ -767,10 +778,7 @@ public:
if (!shortver)
if( Creature* announcer = instance->GetCreature(NPC_AnnouncerGUID) )
{
if( TeamIdInInstance == TEAM_HORDE )
TEXT_ID -= 10;
announcer->AI()->Talk(TEXT_ID);
announcer->AI()->Talk(TEXT_ID + 1);
announcer->AI()->Talk(TEXT_ID); /// @todo: Missing Argent Raid Spectator cheers.
}
}
@@ -1007,16 +1015,6 @@ public:
HandleGameObject(GO_MainGateGUID, true, gate);
HandleGameObject(GO_EnterGateGUID, false, gate);
}
if( Counter )
{
announcer->AI()->Talk(TEXT_CHEER_EADRIC_1);
announcer->AI()->Talk(TEXT_CHEER_EADRIC_2);
}
else
{
announcer->AI()->Talk(TEXT_CHEER_PALETRESS_1);
announcer->AI()->Talk(TEXT_CHEER_PALETRESS_2);
}
}
for( int8 i = 0; i < 3; ++i )
@@ -1060,7 +1058,7 @@ public:
case EVENT_ARGENT_CHALLENGE_SAY_1:
{
if( Creature* ac = instance->GetCreature(NPC_ArgentChampionGUID) )
ac->AI()->Talk(Counter ? TEXT_EADRIC_SAY_1 : TEXT_PALETRESS_SAY_1);
ac->AI()->Talk(Counter ? SAY_EADRIC_INTRO : SAY_PALETRESS_INTRO_1);
if( !Counter )
events.ScheduleEvent(EVENT_ARGENT_CHALLENGE_SAY_2, 6s);
}
@@ -1068,7 +1066,7 @@ public:
case EVENT_ARGENT_CHALLENGE_SAY_2:
{
if( Creature* ac = instance->GetCreature(NPC_ArgentChampionGUID) )
ac->AI()->Talk(TEXT_PALETRESS_SAY_2);
ac->AI()->Talk(SAY_PALETRESS_INTRO_2);
}
break;
case EVENT_ARGENT_SOLDIER_GROUP_ATTACK:
@@ -1163,7 +1161,7 @@ public:
}
announcer->SetFacingToObject(bk_vehicle);
announcer->AI()->Talk(TEXT_BK_RAFTERS);
announcer->AI()->Talk(SAY_KNIGHT_INTRO);
}
}
break;
@@ -1174,7 +1172,7 @@ public:
Position exitPos = { 751.003357f, 638.145508f, 411.570129f, M_PI };
bk->ExitVehicle(/*&exitPos*/);
bk->GetMotionMaster()->MoveJump(exitPos, 2.0f, 2.0f);
bk->AI()->Talk(TEXT_BK_SPOILED);
bk->AI()->Talk(SAY_BK_INTRO_1);
}
events.ScheduleEvent(EVENT_BLACK_KNIGHT_CAST_ANNOUNCER, 2s);
}
@@ -1212,7 +1210,7 @@ public:
{
bk->SetUnitMovementFlags(MOVEMENTFLAG_WALKING);
bk->GetMotionMaster()->MovePoint(0, 746.81f, 623.15f, 411.42f);
bk->AI()->Talk(TEXT_BK_LICH);
bk->AI()->Talk(SAY_BK_INTRO_2);
}
if( Creature* announcer = instance->GetCreature(NPC_AnnouncerGUID) )
if (announcer->IsAlive())
@@ -1225,7 +1223,7 @@ public:
if( Creature* bk = instance->GetCreature(NPC_BlackKnightGUID) )
{
bk->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
bk->AI()->Talk(TEXT_BK_TASK);
bk->AI()->Talk(SAY_BK_INTRO_3);
}
events.ScheduleEvent(EVENT_BLACK_KNIGHT_ATTACK, 5s);
}

View File

@@ -21,10 +21,23 @@
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#define GOSSIP_START_EVENT1a "I am ready."
#define GOSSIP_START_EVENT1b "I am ready. However I'd like to skip the pageantry."
#define GOSSIP_START_EVENT2 "I'm ready for the next challenge."
#define GOSSIP_START_EVENT3 "I'm ready."
enum Texts
{
NPC_TEXT_NOT_MOUNTED_H = 15043, // Horde text
NPC_TEXT_NOT_MOUNTED_A = 14757, // Alliance text
NPC_TEXT_CHALLENGE_1 = 14688,
NPC_TEXT_CHALLENGE_2 = 14737,
NPC_TEXT_CHALLENGE_3 = 14738,
GOSSIP_MENU_STAGE = 10614,
GOSSIP_START_EVENT_1A = 0,
GOSSIP_START_EVENT_1B = 3, // Skip roleplay
GOSSIP_START_EVENT_2 = 1,
GOSSIP_START_EVENT_3 = 2,
};
class npc_announcer_toc5 : public CreatureScript
{
@@ -47,29 +60,28 @@ public:
if (!player->GetVehicle())
{
if (pInstance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_HORDE)
gossipTextId = 15043; //Horde text
gossipTextId = NPC_TEXT_NOT_MOUNTED_H;
else
gossipTextId = 14757; //Alliance text
gossipTextId = NPC_TEXT_NOT_MOUNTED_A;
}
else
{
gossipTextId = 14688;
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1a, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1338);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1b, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1341);
gossipTextId = NPC_TEXT_CHALLENGE_1;
AddGossipItemFor(player, GOSSIP_MENU_STAGE, GOSSIP_START_EVENT_1A, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_MENU_STAGE, GOSSIP_START_EVENT_1B, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
}
break;
case INSTANCE_PROGRESS_CHAMPIONS_DEAD:
gossipTextId = 14737;
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1339);
gossipTextId = NPC_TEXT_CHALLENGE_2;
AddGossipItemFor(player, GOSSIP_MENU_STAGE, GOSSIP_START_EVENT_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
break;
case INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED:
gossipTextId = 14738;
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1340);
gossipTextId = NPC_TEXT_CHALLENGE_3;
AddGossipItemFor(player, GOSSIP_MENU_STAGE, GOSSIP_START_EVENT_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
break;
default:
return true;
}
SendGossipMenuFor(player, gossipTextId, creature->GetGUID());
return true;
}
@@ -83,9 +95,9 @@ public:
if(!pInstance)
return true;
if(uiAction == GOSSIP_ACTION_INFO_DEF + 1338 || uiAction == GOSSIP_ACTION_INFO_DEF + 1341 || uiAction == GOSSIP_ACTION_INFO_DEF + 1339 || uiAction == GOSSIP_ACTION_INFO_DEF + 1340)
if(uiAction == GOSSIP_ACTION_INFO_DEF + 1 || uiAction == GOSSIP_ACTION_INFO_DEF + 2 || uiAction == GOSSIP_ACTION_INFO_DEF + 3 || uiAction == GOSSIP_ACTION_INFO_DEF + 4)
{
pInstance->SetData(DATA_ANNOUNCER_GOSSIP_SELECT, (uiAction == GOSSIP_ACTION_INFO_DEF + 1341 ? 1 : 0));
pInstance->SetData(DATA_ANNOUNCER_GOSSIP_SELECT, (uiAction == GOSSIP_ACTION_INFO_DEF + 2 ? 1 : 0));
creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
}

View File

@@ -141,11 +141,28 @@ enum eNpcs
NPC_BLACK_KNIGHT = 35451,
NPC_JAEREN = 35004,
NPC_ARELAS = 35005,
NPC_JAEREN = 35004, // Horde
NPC_ARELAS = 35005, // Alliance
NPC_RISEN_JAEREN = 35545,
NPC_RISEN_ARELAS = 35564,
NPC_TIRION = 33628,
NPC_TIRION = 33628, // Possibly wrong npc here, 34996 had already populated creature_text (from ToC25) that matches. Needs a sniff to confirm.
/// @todo: Argent Raid Spectator - FX - Missing spawns for Toc5 (map 650), ToC25 probably matches positions, needs a sniff to confirm.
// Horde
NPC_SPECTATOR_HORDE = 34883,
NPC_SPECTATOR_BELF = 34904,
NPC_SPECTATOR_TAUREN = 34903,
NPC_SPECTATOR_TROLL = 34902,
NPC_SPECTATOR_ORC = 34901,
NPC_SPECTATOR_UNDEAD = 34905,
// Alliance
NPC_SPECTATOR_ALLIANCE = 34887,
NPC_SPECTATOR_DWARF = 34906,
NPC_SPECTATOR_GNOME = 34910,
NPC_SPECTATOR_HUMAN = 34900,
NPC_SPECTATOR_NELF = 34909,
NPC_SPECTATOR_DRAENEI = 34908,
};
enum eGameObjects
@@ -175,69 +192,57 @@ enum eVehicles
enum eTexts
{
TEXT_LANA_STOUTHAMMER = 1,
TEXT_CHEER_LANA_STOUTHAMMER = 2,
TEXT_COLOSOS = 3,
TEXT_CHEER_COLOSOS = 4,
TEXT_EVENSONG = 5,
TEXT_CHEER_EVENSONG = 6,
TEXT_MARSHAL_JACOB_ALERIUS = 7,
TEXT_CHEER_MARSHAL_JACOB_ALERIUS = 8,
TEXT_AMBROSE_BOLTSPARK = 9,
TEXT_CHEER_AMBROSE_BOLTSPARK = 10,
// Spectators
SAY_SPECTATOR_CHEER = 0,
TEXT_DEATHSTALKER_VESCERI = 11,
TEXT_CHEER_DEATHSTALKER_VESCERI = 12,
TEXT_RUNOK_WILDMANE = 13,
TEXT_CHEER_RUNOK_WILDMANE = 14,
TEXT_ZUL_TORE = 15,
TEXT_CHEER_ZUL_TORE = 16,
TEXT_MOKRA_SKILLCRUSHER = 17,
TEXT_CHEER_MOKRA_SKILLCRUSHER = 18,
TEXT_ERESSEA_DAWNSINGER = 19,
TEXT_CHEER_ERESSEA_DAWNSINGER = 20,
// Announcers: Alliance Announcer - Arelas Brightstar && Horde Announcer - Jaeren Sunsworn
SAY_EADRIC_INTRO_ANNOUNCER = 0,
SAY_JAEREN_PALETRESS_INTRO = 1,
SAY_GRAND_CHAMPIONS_INTRO_1 = 2,
SAY_GRAND_CHAMPIONS_INTRO_DAWNSINGER = 3, // Boltspark
SAY_GRAND_CHAMPIONS_INTRO_ZULTORE = 4, // Jaelyne
SAY_GRAND_CHAMPIONS_INTRO_SKULLCRUSHER = 5, // Jacob
SAY_GRAND_CHAMPIONS_INTRO_DEATHSTALKER = 6, // Lana
SAY_GRAND_CHAMPIONS_INTRO_WILDMANE = 7, // Colosos
SAY_KNIGHT_INTRO = 8,
// Eadric
SAY_EADRIC_INTRO = 0,
SAY_EADRIC_AGGRO = 1,
SAY_EADRIC_EMOTE_RADIANCE = 2,
SAY_EADRIC_EMOTE_HAMMER_RIGHTEOUS = 3,
SAY_EADRIC_HAMMER_RIGHTEOUS = 4,
SAY_EADRIC_KILL_PLAYER = 5, // "You! You need more practice." && "Nay, nay, and I say yet again nay! Not good enough."
SAY_EADRIC_DEFEATED = 6,
// Confessor Paletress
SAY_PALETRESS_INTRO_1 = 0,
SAY_PALETRESS_INTRO_2 = 1,
SAY_PALETRESS_AGGRO = 2,
SAY_PALETRESS_MEMORY_SUMMON = 3,
SAY_PALETRESS_MEMORY_DEATH = 4,
SAY_PALETRESS_KILL_PLAYER = 5, // "Take your rest. "&& "Be at ease."
SAY_PALETRESS_DEFEATED = 6,
// Tirion
TEXT_WELCOME = 21,
TEXT_WELCOME_2 = 22,
TEXT_BEGIN = 23,
TEXT_GRATZ_SLAIN_CHAMPIONS = 24,
TEXT_INTRODUCE_EADRIC = 25,
TEXT_INTRODUCE_PALETRESS = 26,
TEXT_CHEER_EADRIC_1 = 27,
TEXT_CHEER_EADRIC_2 = 28,
TEXT_EADRIC_SAY_1 = 39,
TEXT_CHEER_PALETRESS_1 = 29,
TEXT_CHEER_PALETRESS_2 = 30,
TEXT_PALETRESS_SAY_1 = 37,
TEXT_PALETRESS_SAY_2 = 38,
TEXT_YOU_MAY_BEGIN = 41,
// Tirion - The Black Knight Interactions
TEXT_BK_INTRO = 31,
TEXT_BK_RAFTERS = 32,
TEXT_BK_SPOILED = 33,
TEXT_BK_MEANING = 34,
TEXT_BK_LICH = 35,
TEXT_BK_TASK = 36,
TEXT_EADRIC_AGGRO = 42,
TEXT_EADRIC_HAMMER = 43,
TEXT_EADRIC_SLAIN_1 = 44,
TEXT_EADRIC_SLAIN_2 = 45,
TEXT_EADRIC_DEATH = 46,
TEXT_PALETRESS_AGGRO = 47,
TEXT_PALETRESS_MEMORY_SUMMON = 48,
TEXT_PALETRESS_MEMORY_DEFEATED = 51,
TEXT_PALETRESS_SLAIN_1 = 49,
TEXT_PALETRESS_SLAIN_2 = 50,
TEXT_PALETRESS_DEATH = 52,
TEXT_BK_AGGRO = 53,
TEXT_BK_SLAIN_1 = 57,
TEXT_BK_SLAIN_2 = 58,
TEXT_BK_SKELETON_RES = 54,
TEXT_BK_GHOST_RES = 55,
TEXT_BK_DEATH = 56,
// The Black Knight
SAY_BK_INTRO_1 = 0,
SAY_BK_INTRO_2 = 1,
SAY_BK_INTRO_3 = 2,
SAY_BK_AGGRO = 3,
SAY_BK_PHASE_2 = 4, // Skeleton
SAY_BK_PHASE_3 = 5, // Ghost
SAY_BK_KILL_PLAYER = 6, // "Pathetic." && "A waste of flesh."
SAY_BK_DEATH = 7,
};
template <class AI, class T>

View File

@@ -277,12 +277,6 @@ public:
_experimentState = (data ? 1 : 0);
}
void AttackStart(Unit* who) override
{
if (instance->CheckRequiredBosses(DATA_PROFESSOR_PUTRICIDE))
BossAI::AttackStart(who);
}
bool CanAIAttack(Unit const* target) const override
{
return me->IsVisible() && target->GetPositionZ() > 388.0f && target->GetPositionZ() < 410.0f && target->GetPositionY() > 3157.1f && target->GetExactDist2dSq(4356.0f, 3211.0f) < 80.0f * 80.0f;

View File

@@ -1007,13 +1007,6 @@ public:
me->SendMovementFlagUpdate();
}
void AttackStart(Unit* victim) override
{
if (me->HasReactState(REACT_PASSIVE) || me->IsImmuneToAll())
return;
BossAI::AttackStart(victim);
}
void JustDied(Unit* /*killer*/) override
{
_JustDied();
@@ -1039,13 +1032,6 @@ public:
void JustEngagedWith(Unit* /*attacker*/) override
{
if (me->HasReactState(REACT_PASSIVE) || me->IsImmuneToAll())
{
me->CombatStop(false);
me->SetImmuneToAll(true);
me->SetReactState(REACT_PASSIVE);
return;
}
_JustEngagedWith();
me->LowerPlayerDamageReq(me->GetMaxHealth());
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_CROK_SCOURGEBANE)))

View File

@@ -1457,7 +1457,7 @@ public:
bool CheckRequiredBosses(uint32 bossId, Player const* player) const override
{
if (player->GetSession() && player->GetSession()->GetSecurity() >= SEC_MODERATOR)
if (player && player->GetSession() && player->GetSession()->GetSecurity() >= SEC_MODERATOR)
{
return true;
}

View File

@@ -56,16 +56,19 @@ struct boss_talon_king_ikiss : public BossAI
_Reset();
_spoken = false;
ScheduleHealthCheckEvent(80, [&] {
TeleportAndCastExplosion();
});
ScheduleHealthCheckEvent({ 80, 50, 25 }, [&] {
me->InterruptNonMeleeSpells(false);
DoCastAOE(SPELL_BLINK);
DoCastSelf(SPELL_ARCANE_BUBBLE, true);
Talk(EMOTE_ARCANE_EXP);
ScheduleHealthCheckEvent(50, [&] {
TeleportAndCastExplosion();
});
ScheduleHealthCheckEvent(25, [&] {
TeleportAndCastExplosion();
scheduler.Schedule(1s, [this](TaskContext)
{
DoCastAOE(SPELL_ARCANE_EXPLOSION);
}).Schedule(6500ms, [this](TaskContext /*context*/)
{
me->GetThreatMgr().ResetAllThreat();
});
});
ScheduleHealthCheckEvent(20, [&] {
@@ -79,22 +82,6 @@ struct boss_talon_king_ikiss : public BossAI
return _spoken;
}
void TeleportAndCastExplosion()
{
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();
});
}
void MoveInLineOfSight(Unit* who) override
{
if (!_spoken && who->IsPlayer())

View File

@@ -17,7 +17,6 @@
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "ScriptedEscortAI.h"
#include "shadow_labyrinth.h"
enum eEnums
@@ -35,7 +34,12 @@ enum eEnums
EVENT_SPELL_CORROSIVE = 1,
EVENT_SPELL_FEAR = 2,
EVENT_SPELL_ENRAGE = 3
EVENT_SPELL_ENRAGE = 3,
PATH_ID_START = 1873100,
PATH_ID_PATHING = 1873101,
SOUND_INTRO = 9349
};
class boss_ambassador_hellmaw : public CreatureScript
@@ -48,9 +52,9 @@ public:
return GetShadowLabyrinthAI<boss_ambassador_hellmawAI>(creature);
}
struct boss_ambassador_hellmawAI : public npc_escortAI
struct boss_ambassador_hellmawAI : public ScriptedAI
{
boss_ambassador_hellmawAI(Creature* creature) : npc_escortAI(creature)
boss_ambassador_hellmawAI(Creature* creature) : ScriptedAI(creature)
{
instance = creature->GetInstanceScript();
}
@@ -59,64 +63,102 @@ public:
EventMap events;
bool isBanished;
void DoAction(int32 param) override
void InitializeAI() override
{
if (param != 1)
return;
Reset();
me->RemoveAurasDueToSpell(SPELL_BANISH);
Talk(SAY_INTRO);
Start(true, false, ObjectGuid::Empty, nullptr, false, true);
isBanished = false;
if (instance && instance->GetData(TYPE_RITUALISTS) != DONE)
{
isBanished = true;
me->SetImmuneToAll(true);
me->m_Events.AddEventAtOffset([this]()
{
DoCastSelf(SPELL_BANISH, true);
}, 500ms);
}
else
{
me->GetMotionMaster()->MovePath(PATH_ID_START, false);
}
}
void Reset() override
{
events.Reset();
isBanished = false;
me->SetImmuneToAll(false);
if (instance)
{
instance->SetData(TYPE_HELLMAW, NOT_STARTED);
if (instance->GetData(TYPE_OVERSEER) != DONE)
{
isBanished = true;
me->CastSpell(me, SPELL_BANISH, true);
}
else
Start(true, false, ObjectGuid::Empty, nullptr, false, true);
}
}
void DoAction(int32 param) override
{
if (param != 1)
{
return;
}
me->RemoveAurasDueToSpell(SPELL_BANISH);
Talk(SAY_INTRO);
DoPlaySoundToSet(me, SOUND_INTRO);
isBanished = false;
me->SetImmuneToAll(false);
me->GetMotionMaster()->MovePath(PATH_ID_START, false);
}
void JustEngagedWith(Unit*) override
{
if (isBanished)
{
return;
}
Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_SPELL_CORROSIVE, urand(5000, 10000));
events.ScheduleEvent(EVENT_SPELL_FEAR, urand(15000, 20000));
if (IsHeroic())
{
events.ScheduleEvent(EVENT_SPELL_ENRAGE, 180000);
}
if (instance)
{
instance->SetData(TYPE_HELLMAW, IN_PROGRESS);
}
}
void MoveInLineOfSight(Unit* who) override
{
if (isBanished)
{
return;
npc_escortAI::MoveInLineOfSight(who);
}
ScriptedAI::MoveInLineOfSight(who);
}
void AttackStart(Unit* who) override
{
if (isBanished)
{
return;
npc_escortAI::AttackStart(who);
}
ScriptedAI::AttackStart(who);
}
void WaypointReached(uint32 /*waypointId*/) override
void PathEndReached(uint32 pathId) override
{
if (pathId == PATH_ID_START)
{
me->m_Events.AddEventAtOffset([this]()
{
me->GetMotionMaster()->MovePath(PATH_ID_PATHING, true);
}, 20s);
}
}
void KilledUnit(Unit* victim) override
@@ -132,19 +174,63 @@ public:
instance->SetData(TYPE_HELLMAW, DONE);
}
void UpdateAI(uint32 diff) override
bool CanAIAttack(Unit const* /*unit*/) const override
{
npc_escortAI::UpdateAI(diff);
return !isBanished;
}
if (!UpdateVictim())
return;
if (isBanished)
void DoMeleeAttackIfReady(bool ignoreCasting)
{
if (!ignoreCasting && me->HasUnitState(UNIT_STATE_CASTING))
{
EnterEvadeMode();
return;
}
Unit* victim = me->GetVictim();
if (!victim || !victim->IsInWorld())
{
return;
}
if (!me->IsWithinMeleeRange(victim))
{
return;
}
//Make sure our attack is ready and we aren't currently casting before checking distance
if (me->isAttackReady())
{
// xinef: prevent base and off attack in same time, delay attack at 0.2 sec
if (me->haveOffhandWeapon())
{
if (me->getAttackTimer(OFF_ATTACK) < ATTACK_DISPLAY_DELAY)
{
me->setAttackTimer(OFF_ATTACK, ATTACK_DISPLAY_DELAY);
}
}
me->AttackerStateUpdate(victim, BASE_ATTACK, false, ignoreCasting);
me->resetAttackTimer();
}
if (me->haveOffhandWeapon() && me->isAttackReady(OFF_ATTACK))
{
// xinef: delay main hand attack if both will hit at the same time (players code)
if (me->getAttackTimer(BASE_ATTACK) < ATTACK_DISPLAY_DELAY)
{
me->setAttackTimer(BASE_ATTACK, ATTACK_DISPLAY_DELAY);
}
me->AttackerStateUpdate(victim, OFF_ATTACK, false, ignoreCasting);
me->resetAttackTimer(OFF_ATTACK);
}
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
events.Update(diff);
switch (events.ExecuteEvent())
{
@@ -161,7 +247,7 @@ public:
break;
}
DoMeleeAttackIfReady();
DoMeleeAttackIfReady(me->FindCurrentSpellBySpellId(SPELL_CORROSIVE_ACID) != nullptr);
}
};
};

View File

@@ -39,13 +39,13 @@ public:
ObjectGuid m_uiRefectoryDoorGUID;
ObjectGuid m_uiScreamingHallDoorGUID;
uint32 m_uiFelOverseerCount;
uint32 _ritualistsAliveCount;
void Initialize() override
{
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
m_uiFelOverseerCount = 0;
_ritualistsAliveCount = 0;
}
bool IsEncounterInProgress() const override
@@ -76,11 +76,13 @@ public:
void OnCreatureCreate(Creature* creature) override
{
InstanceScript::OnCreatureCreate(creature);
switch (creature->GetEntry())
{
case NPC_FEL_OVERSEER:
case NPC_CABAL_RITUALIST:
if (creature->IsAlive())
++m_uiFelOverseerCount;
++_ritualistsAliveCount;
break;
case NPC_HELLMAW:
m_uiHellmawGUID = creature->GetGUID();
@@ -88,19 +90,26 @@ public:
}
}
void OnUnitDeath(Unit* unit) override
{
InstanceScript::OnUnitDeath(unit);
if (unit->GetEntry() == NPC_CABAL_RITUALIST)
if (!--_ritualistsAliveCount)
{
m_auiEncounter[TYPE_RITUALISTS] = DONE;
SaveToDB();
if (Creature* cr = instance->GetCreature(m_uiHellmawGUID))
{
cr->AI()->DoAction(1);
}
}
}
void SetData(uint32 type, uint32 uiData) override
{
switch (type)
{
case TYPE_OVERSEER:
if (!--m_uiFelOverseerCount)
{
m_auiEncounter[type] = DONE;
if (Creature* cr = instance->GetCreature(m_uiHellmawGUID))
cr->AI()->DoAction(1);
}
break;
case DATA_BLACKHEARTTHEINCITEREVENT:
if (uiData == DONE)
DoUseDoorOrButton(m_uiRefectoryDoorGUID);
@@ -125,7 +134,7 @@ public:
uint32 GetData(uint32 type) const override
{
if (type == TYPE_OVERSEER)
if (type == TYPE_RITUALISTS)
return m_auiEncounter[0];
return 0;
}

View File

@@ -27,7 +27,7 @@
enum slData
{
TYPE_OVERSEER = 0,
TYPE_RITUALISTS = 0,
TYPE_HELLMAW = 1,
DATA_BLACKHEARTTHEINCITEREVENT = 2,
DATA_GRANDMASTERVORPILEVENT = 3,
@@ -37,7 +37,7 @@ enum slData
enum slNPCandGO
{
NPC_FEL_OVERSEER = 18796,
NPC_CABAL_RITUALIST = 18794,
NPC_HELLMAW = 18731,
REFECTORY_DOOR = 183296, //door opened when blackheart the inciter dies

View File

@@ -29,11 +29,7 @@ enum HydromancerThespia
SPELL_LIGHTNING_CLOUD = 25033,
SPELL_LUNG_BURST = 31481,
SPELL_ENVELOPING_WINDS = 31718,
EVENT_SPELL_LIGHTNING = 1,
EVENT_SPELL_LUNG = 2,
EVENT_SPELL_ENVELOPING = 3
SPELL_ENVELOPING_WINDS = 31718
};
struct boss_hydromancer_thespia : public BossAI
@@ -44,47 +40,39 @@ struct boss_hydromancer_thespia : public BossAI
{
_JustDied();
Talk(SAY_DEAD);
instance->DoForAllMinions(DATA_HYDROMANCER_THESPIA, [&](Creature* creature) {
creature->DespawnOrUnsummon();
});
}
void KilledUnit(Unit* victim) override
{
if (victim->IsPlayer())
{
Talk(SAY_SLAY);
}
}
void JustEngagedWith(Unit* /*who*/) override
{
Talk(SAY_AGGRO);
_JustEngagedWith();
events.ScheduleEvent(EVENT_SPELL_LIGHTNING, 9800);
events.ScheduleEvent(EVENT_SPELL_LUNG, 13300);
events.ScheduleEvent(EVENT_SPELL_ENVELOPING, 14500);
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
events.Update(diff);
switch (events.ExecuteEvent())
scheduler.Schedule(9800ms, [this](TaskContext context)
{
case EVENT_SPELL_LIGHTNING:
Talk(SAY_SPELL);
DoCastRandomTarget(SPELL_LIGHTNING_CLOUD);
events.RepeatEvent(urand(12100, 14500));
break;
case EVENT_SPELL_LUNG:
context.Repeat(12100ms, 14500ms);
}).Schedule(13300ms, [this](TaskContext context)
{
DoCastRandomTarget(SPELL_LUNG_BURST);
events.RepeatEvent(urand(21800, 25400));
break;
case EVENT_SPELL_ENVELOPING:
context.Repeat(21800ms, 25400ms);
}).Schedule(14500ms, [this](TaskContext context)
{
DoCastRandomTarget(SPELL_ENVELOPING_WINDS);
events.RepeatEvent(urand(30000, 40000));
break;
}
DoMeleeAttackIfReady();
context.Repeat(30s, 40s);
});
}
};

View File

@@ -33,20 +33,22 @@ enum MekgineerSteamrigger
SPELL_REPAIR_N = 31532,
SPELL_REPAIR_H = 37936,
NPC_STREAMRIGGER_MECHANIC = 17951,
SPELL_SUMMON_MECHANICS_1 = 31528,
SPELL_SUMMON_MECHANICS_2 = 31529,
SPELL_SUMMON_MECHANICS_3 = 31530,
EVENT_CHECK_HP25 = 1,
EVENT_CHECK_HP50 = 2,
EVENT_CHECK_HP75 = 3,
EVENT_SPELL_SHRINK = 4,
EVENT_SPELL_SAW = 5,
EVENT_SPELL_NET = 6,
EVENT_ENRAGE = 7
NPC_STREAMRIGGER_MECHANIC = 17951
};
struct boss_mekgineer_steamrigger : public BossAI
{
boss_mekgineer_steamrigger(Creature* creature) : BossAI(creature, DATA_MEKGINEER_STEAMRIGGER) { }
boss_mekgineer_steamrigger(Creature* creature) : BossAI(creature, DATA_MEKGINEER_STEAMRIGGER)
{
scheduler.SetValidator([this]
{
return !me->HasUnitState(UNIT_STATE_CASTING);
});
}
void JustDied(Unit* /*killer*/) override
{
@@ -57,131 +59,73 @@ struct boss_mekgineer_steamrigger : public BossAI
void KilledUnit(Unit* victim) override
{
if (victim->IsPlayer())
{
Talk(SAY_SLAY);
}
}
void JustEngagedWith(Unit* /*who*/) override
{
Talk(SAY_AGGRO);
_JustEngagedWith();
events.ScheduleEvent(EVENT_SPELL_SHRINK, 26550);
events.ScheduleEvent(EVENT_SPELL_SAW, 6050, 17650);
events.ScheduleEvent(EVENT_SPELL_NET, 14400);
events.ScheduleEvent(EVENT_ENRAGE, 300000);
events.ScheduleEvent(EVENT_CHECK_HP75, 5000);
events.ScheduleEvent(EVENT_CHECK_HP50, 5000);
events.ScheduleEvent(EVENT_CHECK_HP25, 5000);
}
void SummonMechanics()
{
Talk(SAY_MECHANICS);
me->SummonCreature(NPC_STREAMRIGGER_MECHANIC, me->GetPositionX() + 15.0f, me->GetPositionY() + 15.0f, me->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
me->SummonCreature(NPC_STREAMRIGGER_MECHANIC, me->GetPositionX() - 15.0f, me->GetPositionY() + 15.0f, me->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
me->SummonCreature(NPC_STREAMRIGGER_MECHANIC, me->GetPositionX() - 15.0f, me->GetPositionY() - 15.0f, me->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
if (urand(0, 1))
me->SummonCreature(NPC_STREAMRIGGER_MECHANIC, me->GetPositionX() + 15.0f, me->GetPositionY() - 15.0f, me->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
}
void JustSummoned(Creature* cr) override
{
cr->GetMotionMaster()->MoveFollow(me, 0.0f, 0.0f);
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
events.Update(diff);
switch (uint32 eventId = events.ExecuteEvent())
scheduler.Schedule(26550ms, [this](TaskContext context)
{
DoCastVictim(SPELL_SUPER_SHRINK_RAY);
context.Repeat(35100ms, 54100ms);
}).Schedule(6050ms, 17650ms, [this](TaskContext context)
{
if (DoCastRandomTarget(SPELL_SAW_BLADE, 1) != SPELL_CAST_OK)
{
DoCastVictim(SPELL_SAW_BLADE);
}
context.Repeat(6050ms, 17650ms);
}).Schedule(14400ms, [this](TaskContext context)
{
DoCastRandomTarget(SPELL_ELECTRIFIED_NET);
context.Repeat(21800ms, 34200ms);
}).Schedule(5min, [this](TaskContext /*context*/)
{
case EVENT_SPELL_SHRINK:
me->CastSpell(me->GetVictim(), SPELL_SUPER_SHRINK_RAY, false);
events.Repeat(35100ms, 54100ms);
break;
case EVENT_SPELL_SAW:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1))
me->CastSpell(target, SPELL_SAW_BLADE, false);
else
me->CastSpell(me->GetVictim(), SPELL_SAW_BLADE, false);
events.Repeat(6050ms, 17650ms);
break;
case EVENT_SPELL_NET:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
me->CastSpell(target, SPELL_ELECTRIFIED_NET, false);
events.Repeat(21800ms, 34200ms);
break;
case EVENT_ENRAGE:
DoCastSelf(SPELL_ENRAGE, true);
break;
case EVENT_CHECK_HP25:
case EVENT_CHECK_HP50:
case EVENT_CHECK_HP75:
if (me->HealthBelowPct(eventId * 25))
{
SummonMechanics();
return;
}
events.RepeatEvent(2000);
break;
}
DoMeleeAttackIfReady();
}
};
struct npc_steamrigger_mechanic : public ScriptedAI
{
npc_steamrigger_mechanic(Creature* creature) : ScriptedAI(creature) { }
void Reset() override
{
_scheduler.CancelAll();
}
void JustEngagedWith(Unit* victim) override
{
ScriptedAI::JustEngagedWith(victim);
_scheduler.Schedule(2s, [this](TaskContext context)
{
if (InstanceScript* instance = me->GetInstanceScript())
{
if (Creature* boss = instance->GetCreature(DATA_MEKGINEER_STEAMRIGGER))
{
if (me->IsWithinDistInMap(boss, 13.0f))
{
if (!me->HasUnitState(UNIT_STATE_CASTING))
{
me->CastSpell(me, DUNGEON_MODE(SPELL_REPAIR_N, SPELL_REPAIR_H), false);
}
}
}
}
context.Repeat();
});
if (!IsHeroic())
{
ScheduleHealthCheckEvent({ 75, 50, 25 }, [&] {
Talk(SAY_MECHANICS);
for (auto const& spell : { SPELL_SUMMON_MECHANICS_1, SPELL_SUMMON_MECHANICS_2, SPELL_SUMMON_MECHANICS_3 })
{
DoCastAOE(spell, true);
}
});
}
else
{
scheduler.Schedule(15600ms, [this](TaskContext context)
{
if (roll_chance_i(15))
{
Talk(SAY_MECHANICS);
}
DoCastAOE(RAND(SPELL_SUMMON_MECHANICS_1, SPELL_SUMMON_MECHANICS_2, SPELL_SUMMON_MECHANICS_3), true);
context.Repeat(15600ms, 25400ms);
});
}
}
void MoveInLineOfSight(Unit* /*who*/) override {}
void UpdateAI(uint32 diff) override
void JustSummoned(Creature* creature) override
{
if (!UpdateVictim())
return;
_scheduler.Update(diff,
std::bind(&BossAI::DoMeleeAttackIfReady, this));
if (creature->GetEntry() == NPC_STREAMRIGGER_MECHANIC)
{
creature->GetMotionMaster()->MoveFollow(me, 5.0f, 0.0f);
}
}
private:
TaskScheduler _scheduler;
};
void AddSC_boss_mekgineer_steamrigger()
{
RegisterSteamvaultCreatureAI(boss_mekgineer_steamrigger);
RegisterSteamvaultCreatureAI(npc_steamrigger_mechanic);
}

View File

@@ -17,44 +17,110 @@
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "SpellInfo.h"
#include "SpellScript.h"
#include "SpellAuras.h"
#include "steam_vault.h"
enum NagaDistiller
enum Texts
{
SAY_INTRO = 0,
SAY_REGEN = 1,
SAY_AGGRO = 2,
SAY_SLAY = 3,
SAY_DEATH = 4,
SAY_INTRO = 0,
SAY_REGEN = 1,
SAY_AGGRO = 2,
SAY_SLAY = 3,
SAY_DEATH = 4,
EMOTE_DISTILLER = 5
};
SPELL_SPELL_REFLECTION = 31534,
SPELL_IMPALE = 39061,
SPELL_HEAD_CRACK = 16172,
SPELL_WARLORDS_RAGE = 37081,
SPELL_WARLORDS_RAGE_NAGA = 31543,
SPELL_WARLORDS_RAGE_PROC = 36453,
enum Spells
{
SPELL_SPELL_REFLECTION = 31534,
SPELL_IMPALE = 39061,
SPELL_HEAD_CRACK = 16172,
SPELL_WARLORDS_RAGE = 37081,
SPELL_WARLORDS_RAGE_DISTILLER = 31543,
SPELL_WARLORDS_RAGE_PROC = 36453
};
NPC_NAGA_DISTILLER = 17954,
EVENT_SPELL_REFLECTION = 1,
EVENT_SPELL_IMPALE = 2,
EVENT_SPELL_HEAD_CRACK = 3,
EVENT_SPELL_RAGE = 4
enum Misc
{
POINT_DISTILLER = 1
};
struct boss_warlord_kalithresh : public BossAI
{
boss_warlord_kalithresh(Creature* creature) : BossAI(creature, DATA_WARLORD_KALITHRESH) { }
boss_warlord_kalithresh(Creature* creature) : BossAI(creature, DATA_WARLORD_KALITHRESH), _introDone(false) { }
void Reset() override
{
_Reset();
instance->DoForAllMinions(DATA_WARLORD_KALITHRESH, [&](Creature* minion) {
minion->SetReactState(REACT_PASSIVE);
minion->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
});
}
void MoveInLineOfSight(Unit* who) override
{
if (!_introDone && who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 35.0f))
{
Talk(SAY_INTRO);
_introDone = true;
}
ScriptedAI::MoveInLineOfSight(who);
}
void JustEngagedWith(Unit* /*who*/) override
{
Talk(SAY_AGGRO);
_JustEngagedWith();
events.ScheduleEvent(EVENT_SPELL_REFLECTION, 20000, 36000);
events.ScheduleEvent(EVENT_SPELL_IMPALE, 7000, 14000);
events.ScheduleEvent(EVENT_SPELL_HEAD_CRACK, 15000);
events.ScheduleEvent(EVENT_SPELL_RAGE, 20000);
scheduler.Schedule(20s, 36s, [this](TaskContext context)
{
DoCastSelf(SPELL_SPELL_REFLECTION);
context.Repeat();
}).Schedule(7s, 14s, [this](TaskContext context)
{
DoCastRandomTarget(SPELL_IMPALE, 0, 10.0f);
context.Repeat(7500ms, 12500ms);
}).Schedule(15s, [this](TaskContext context)
{
DoCastVictim(SPELL_HEAD_CRACK);
context.Repeat(45s, 55s);
}).Schedule(20s, [this](TaskContext context)
{
Talk(SAY_REGEN);
Talk(EMOTE_DISTILLER);
if (Creature* distiller = me->FindNearestCreature(NPC_NAGA_DISTILLER, 8.0f))
{
distiller->AI()->DoCast(me, SPELL_WARLORDS_RAGE_DISTILLER, true);
distiller->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
}
else
{
if (Creature* distiller = me->FindNearestCreature(NPC_NAGA_DISTILLER, 100.0f))
{
me->GetMotionMaster()->MoveFollow(distiller, 8.0f, 0.0f);
scheduler.Schedule(1s, [this](TaskContext chaseContext)
{
if (Creature* distiller = me->FindNearestCreature(NPC_NAGA_DISTILLER, 8.0f))
{
distiller->AI()->DoCast(me, SPELL_WARLORDS_RAGE_DISTILLER, true);
distiller->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
me->ResumeChasingVictim();
}
else
{
chaseContext.Repeat();
}
});
}
}
context.Repeat(45s);
});
}
void KilledUnit(Unit* victim) override
@@ -69,85 +135,39 @@ struct boss_warlord_kalithresh : public BossAI
{
Talk(SAY_DEATH);
_JustDied();
instance->DoForAllMinions(DATA_WARLORD_KALITHRESH, [&](Creature* minion) {
minion->KillSelf();
});
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
events.Update(diff);
switch (events.ExecuteEvent())
{
case EVENT_SPELL_REFLECTION:
me->CastSpell(me, SPELL_SPELL_REFLECTION, false);
events.Repeat(20s, 36s);
break;
case EVENT_SPELL_IMPALE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 10.0f, true))
me->CastSpell(target, SPELL_IMPALE, false);
events.Repeat(7500ms, 12500ms);
break;
case EVENT_SPELL_HEAD_CRACK:
DoCastVictim(SPELL_HEAD_CRACK);
events.Repeat(45s, 55s);
break;
case EVENT_SPELL_RAGE:
if (Creature* distiller = me->FindNearestCreature(NPC_NAGA_DISTILLER, 100.0f))
{
Talk(SAY_REGEN);
//me->CastSpell(me, SPELL_WARLORDS_RAGE, false);
distiller->AI()->DoAction(1);
}
events.RepeatEvent(45000);
break;
}
DoMeleeAttackIfReady();
}
private:
bool _introDone;
};
struct npc_naga_distiller : public NullCreatureAI
// 31543 - Warlord's Rage
class spell_warlords_rage : public AuraScript
{
npc_naga_distiller(Creature* creature) : NullCreatureAI(creature) { }
PrepareAuraScript(spell_warlords_rage);
uint32 spellTimer;
void Reset() override
void HandleAfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
spellTimer = 0;
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
}
void DoAction(int32 param) override
{
if (param != 1)
return;
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->CastSpell(me, SPELL_WARLORDS_RAGE_NAGA, true);
spellTimer = 1;
}
void UpdateAI(uint32 diff) override
{
if (spellTimer)
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE)
{
spellTimer += diff;
if (spellTimer >= 12000)
if (GetTarget())
{
if (Creature* kali = me->FindNearestCreature(NPC_WARLORD_KALITHRESH, 100.0f))
kali->CastSpell(kali, SPELL_WARLORDS_RAGE_PROC, true);
me->KillSelf();
GetTarget()->CastSpell(GetTarget(), SPELL_WARLORDS_RAGE_PROC, true);
}
}
}
void Register() override
{
AfterEffectRemove += AuraEffectRemoveFn(spell_warlords_rage::HandleAfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
void AddSC_boss_warlord_kalithresh()
{
RegisterSteamvaultCreatureAI(boss_warlord_kalithresh);
RegisterSteamvaultCreatureAI(npc_naga_distiller);
RegisterSpellScript(spell_warlords_rage);
}

View File

@@ -25,6 +25,13 @@ enum MainChambersAccessPanelSays
SAY_LOUD_RUMBLE = 1
};
MinionData const minionData[] =
{
{ NPC_NAGA_DISTILLER, DATA_WARLORD_KALITHRESH },
{ NPC_THESPIA_WATER_ELEMENTAL, DATA_HYDROMANCER_THESPIA },
{ 0, 0 }
};
class go_main_chambers_access_panel : public GameObjectScript
{
public:
@@ -91,14 +98,16 @@ public:
ObjectData const creatureData[] =
{
{ NPC_MEKGINEER_STEAMRIGGER, DATA_MEKGINEER_STEAMRIGGER },
{ NPC_DOOR_CONTROLLER, DATA_DOOR_CONTROLLER }
{ NPC_DOOR_CONTROLLER, DATA_DOOR_CONTROLLER },
{ 0, 0 }
};
ObjectData const objectData[] =
{
{ GO_ACCESS_PANEL_HYDRO, DATA_ACCESS_PANEL_HYDROMANCER },
{ GO_ACCESS_PANEL_MEK, DATA_ACCESS_PANEL_MEKGINEER },
{ GO_MAIN_CHAMBERS_DOOR, DATA_MAIN_CHAMBERS_DOOR }
{ GO_MAIN_CHAMBERS_DOOR, DATA_MAIN_CHAMBERS_DOOR },
{ 0, 0, }
};
class instance_steam_vault : public InstanceMapScript
@@ -113,6 +122,7 @@ public:
SetHeaders(DataHeaders);
SetBossNumber(EncounterCount);
LoadObjectData(creatureData, objectData);
LoadMinionData(minionData);
}
void OnGameObjectCreate(GameObject* go) override

View File

@@ -51,6 +51,12 @@ enum steamVaultNPCGO
NPC_DOOR_CONTROLLER = 20926
};
enum Creatures
{
NPC_NAGA_DISTILLER = 17954,
NPC_THESPIA_WATER_ELEMENTAL = 17917
};
template <class AI, class T>
inline AI* GetSteamVaultAI(T* obj)
{

View File

@@ -43,7 +43,10 @@ enum DeathKnightSpells
SPELL_DK_DISMISS_GARGOYLE = 50515,
SPELL_DK_SANCTUARY = 54661,
SPELL_DK_NIGHT_OF_THE_DEAD = 62137,
SPELL_DK_PET_SCALING = 61017
SPELL_DK_PET_SCALING = 61017,
// Risen Ally
SPELL_DK_RAISE_ALLY = 46619,
SPELL_GHOUL_FRENZY = 62218,
};
class npc_pet_dk_ebon_gargoyle : public CreatureScript
@@ -255,6 +258,38 @@ public:
}
};
class npc_pet_dk_risen_ally : public CreatureScript
{
public:
npc_pet_dk_risen_ally() : CreatureScript("npc_pet_dk_risen_ally") { }
struct npc_pet_dk_risen_allyAI : public PossessedAI
{
npc_pet_dk_risen_allyAI(Creature* c) : PossessedAI(c) { }
void OnCharmed(bool apply) override
{
if (!apply)
{
if (Unit* owner = me->GetCharmerOrOwner())
{
if (Player* player = owner->ToPlayer())
{
player->RemoveAurasDueToSpell(SPELL_DK_RAISE_ALLY); // Remove Raise Ally aura
player->RemoveAurasDueToSpell(SPELL_GHOUL_FRENZY); // Remove Frenzy aura
//player->ClearResurrectRequestData();
}
}
}
}
};
CreatureAI* GetAI(Creature* pCreature) const override
{
return new npc_pet_dk_risen_allyAI (pCreature);
}
};
class npc_pet_dk_army_of_the_dead : public CreatureScript
{
public:
@@ -335,6 +370,7 @@ void AddSC_deathknight_pet_scripts()
{
new npc_pet_dk_ebon_gargoyle();
new npc_pet_dk_ghoul();
new npc_pet_dk_risen_ally();
new npc_pet_dk_army_of_the_dead();
new npc_pet_dk_dancing_rune_weapon();
RegisterSpellScript(spell_pet_dk_gargoyle_strike);

View File

@@ -72,7 +72,11 @@ enum DeathKnightSpells
SPELL_DK_UNHOLY_PRESENCE = 48265,
SPELL_DK_UNHOLY_PRESENCE_TRIGGERED = 49772,
SPELL_DK_WILL_OF_THE_NECROPOLIS_TALENT_R1 = 49189,
SPELL_DK_WILL_OF_THE_NECROPOLIS_AURA_R1 = 52284
SPELL_DK_WILL_OF_THE_NECROPOLIS_AURA_R1 = 52284,
// Risen Ally
SPELL_DK_RAISE_ALLY = 46619,
SPELL_DK_THRASH = 47480,
SPELL_GHOUL_FRENZY = 62218,
};
enum DeathKnightSpellIcons
@@ -82,7 +86,8 @@ enum DeathKnightSpellIcons
enum Misc
{
NPC_DK_GHOUL = 26125
NPC_DK_GHOUL = 26125,
NPC_RISEN_ALLY = 30230
};
// 50526 - Wandering Plague
@@ -1496,6 +1501,53 @@ class spell_dk_ghoul_explode : public SpellScript
}
};
// 47480 - Thrash
class spell_dk_ghoul_thrash : public SpellScript
{
PrepareSpellScript(spell_dk_ghoul_thrash);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_GHOUL_FRENZY });
}
void CalcDamage(SpellEffIndex /*effIndex*/)
{
/*
Causes more damage per frenzy point:
1 point : (Attack power * 40 * 0.01 + Attack power * 0.05)-(Attack power * 40 * 0.01 + Attack power * 0.10) damage
2 points : (Attack power * 40 * 0.01 + Attack power * 0.10)-(Attack power * 40 * 0.01 + Attack power * 0.20) damage
3 points : (Attack power * 40 * 0.01 + Attack power * 0.15)-(Attack power * 40 * 0.01 + Attack power * 0.30) damage
4 points : (Attack power * 40 * 0.01 + Attack power * 0.20)-(Attack power * 40 * 0.01 + Attack power * 0.40) damage
5 points : (Attack power * 40 * 0.01 + Attack power * 0.25)-(Attack power * 40 * 0.01 + Attack power * 0.50) damage
*/
if (Aura* frenzy = GetCaster()->GetAura(SPELL_GHOUL_FRENZY))
{
float APBonus = GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK);
float fixedDamageBonus = APBonus * GetEffectValue() * 0.01f;
APBonus *= 0.05f * frenzy->GetStackAmount();
SetEffectValue(fixedDamageBonus + urand(int32(APBonus), int32(APBonus * 2.f)));
if (Unit* caster = GetCaster())
{
caster->RemoveAurasDueToSpell(SPELL_GHOUL_FRENZY);
if (Unit* charmer = caster->GetCharmer())
{
charmer->RemoveAurasDueToSpell(SPELL_GHOUL_FRENZY);
}
}
}
}
void Register() override
{
OnEffectLaunchTarget += SpellEffectFn(spell_dk_ghoul_thrash::CalcDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
// 48792 - Icebound Fortitude
class spell_dk_icebound_fortitude : public AuraScript
{
@@ -2184,4 +2236,5 @@ void AddSC_deathknight_spell_scripts()
RegisterSpellScript(spell_dk_spell_deflection);
RegisterSpellScript(spell_dk_vampiric_blood);
RegisterSpellScript(spell_dk_will_of_the_necropolis);
RegisterSpellScript(spell_dk_ghoul_thrash);
}

View File

@@ -4792,6 +4792,41 @@ class spell_freezing_circle : public SpellScript
}
};
enum Threshalisk
{
SPELL_THRESHALISK_CHARGE = 35385,
SPELL_RUSHING_CHARGE = 35382,
};
class spell_gen_threshalisk_charge : public SpellScript
{
PrepareSpellScript(spell_gen_threshalisk_charge);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_THRESHALISK_CHARGE });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
{
if (Creature* caster = GetCaster()->ToCreature())
{
if (Unit* victim = caster->GetVictim())
{
if (caster->GetReactState() != REACT_PASSIVE)
{
caster->CastSpell(victim, GetSpellInfo()->Effects[EFFECT_1].TriggerSpell, true);
}
}
}
}
void Register() override
{
OnEffectHit += SpellEffectFn(spell_gen_threshalisk_charge::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
void AddSC_generic_spell_scripts()
{
RegisterSpellScript(spell_silithyst);
@@ -4934,4 +4969,5 @@ void AddSC_generic_spell_scripts()
RegisterSpellScriptWithArgs(spell_gen_apply_aura_after_expiration, "spell_itch_aq40", SPELL_VEKNISS_CATALYST, EFFECT_0, SPELL_AURA_DUMMY);
RegisterSpellScript(spell_gen_basic_campfire);
RegisterSpellScript(spell_freezing_circle);
RegisterSpellScript(spell_gen_threshalisk_charge);
}