@@ -0,0 +1,9 @@
|
||||
-- DB update 2026_01_24_01 -> 2026_01_26_00
|
||||
--
|
||||
DELETE FROM `gossip_menu_option` WHERE `MenuID` IN (7815, 7820, 8760, 10363) AND `OptionID` = 1;
|
||||
INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`,
|
||||
`OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES
|
||||
(7815, 1, 1, 'Let me browse your goods.', 8097, 3, 128, 0, 0, 0, 0, '', 0, 0),
|
||||
(7820, 1, 1, 'Let me browse your goods.', 8097, 3, 128, 0, 0, 0, 0, '', 0, 0),
|
||||
(8760, 1, 1, 'Let me browse your goods.', 8097, 3, 128, 0, 0, 0, 0, '', 0, 0),
|
||||
(10363, 1, 1, 'Let me browse your goods.', 8097, 3, 128, 0, 0, 0, 0, '', 0, 0);
|
||||
@@ -0,0 +1,16 @@
|
||||
-- DB update 2026_01_26_00 -> 2026_01_26_01
|
||||
--
|
||||
-- Remove Weather-Beaten Journal from Dark Runed Chest ref
|
||||
DELETE FROM `reference_loot_template` WHERE (`Entry` = 35037) AND (`Item` IN (34109));
|
||||
|
||||
-- Add Weather-Beaten Journal to Bag of Fishing Treasures
|
||||
SET @CHANCE := 20;
|
||||
DELETE FROM `item_loot_template` WHERE (`Entry` = 35348) AND (`Item` IN (34109));
|
||||
INSERT INTO `item_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(35348, 34109, 0, @CHANCE, 0, 1, 0, 1, 1, 'Weather-Beaten Journal');
|
||||
|
||||
-- Add Weather-Beaten Journal to Bag of Fishing Treasures
|
||||
SET @CHANCE := 15;
|
||||
DELETE FROM `item_loot_template` WHERE (`Entry` = 34863) AND (`Item` IN (34109));
|
||||
INSERT INTO `item_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES
|
||||
(34863, 34109, 0, @CHANCE, 0, 1, 0, 1, 1, 'Weather-Beaten Journal');
|
||||
@@ -0,0 +1,21 @@
|
||||
-- DB update 2026_01_26_01 -> 2026_01_26_02
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 20040);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(20040, 0, 0, 0, 0, 0, 100, 0, 20950, 25000, 17000, 29900, 0, 0, 11, 37102, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Crystalcore Devastator - In Combat - Cast \'Knock Away\''),
|
||||
(20040, 0, 1, 0, 0, 1, 100, 0, 20000, 30000, 20000, 30000, 0, 0, 11, 35035, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crystalcore Devastator - In Combat - Start Countercharge Phase (Phase 1)'),
|
||||
(20040, 0, 2, 0, 8, 1, 100, 0, 35035, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crystalcore Devastator - On Spell \'Countercharge\' Successful - Enter Countercharge Phase'),
|
||||
(20040, 0, 3, 6, 105, 2, 10, 0, 3600, 3600, 3600, 3600, 0, 50, 11, 35039, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Crystalcore Devastator - On Hostile Casting in Range - Cast \'Countercharge\' if I have a Charge (Phase 2)'),
|
||||
(20040, 0, 4, 5, 8, 0, 100, 512, 34946, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Crystalcore Devastator - On Spellhit \'Golem Repair\' - Store Targetlist'),
|
||||
(20040, 0, 5, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 80, 2004000, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crystalcore Devastator - On Spellhit \'Golem Repair\' - Run Script'),
|
||||
(20040, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 28, 35035, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crystalcore Devastator - On Hostile Casting in Range - If Interrupt Successful, Remove Charge'),
|
||||
(20040, 0, 7, 0, 0, 2, 50, 0, 1000, 1000, 1000, 1000, 0, 0, 11, 35035, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crystalcore Devastator - In Combat, Every 1000ms - Refresh Charge on Self (Phase 2)'),
|
||||
(20040, 0, 8, 0, 0, 2, 100, 0, 15000, 15000, 15000, 15000, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crystalcore Devastator - In Combat - After 15s, Return to Initial Phase (Phase 2)'),
|
||||
(20040, 0, 9, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crystalcore Devastator - On Aggro - Set Initial Phase');
|
||||
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceEntry` = 20040) AND (`ConditionTypeOrReference` = 1) AND (`ConditionValue1` = 35035);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(22, 8, 20040, 0, 0, 1, 1, 35035, 0, 0, 1, 0, 0, '', 'Only Refresh Countercharge (35035) Aura if it is not already present'),
|
||||
(22, 4, 20040, 0, 0, 1, 1, 35035, 0, 0, 0, 0, 0, '', 'Only Interrupt if Crystalcore Devastator has a charge of Countercharge (35035) to spend');
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` = 35035 AND `ScriptName` = 'spell_the_eye_countercharge_aura';
|
||||
@@ -0,0 +1,3 @@
|
||||
-- DB update 2026_01_26_02 -> 2026_01_27_00
|
||||
-- Adds "Disoriented" and "Sapped" Immunties to "Maruading Crust Burster" outcome from MoP and Retail
|
||||
UPDATE `creature_template` SET `mechanic_immune_mask` = `mechanic_immune_mask` | 2 | 536870912 WHERE `entry` = 16857;
|
||||
@@ -0,0 +1,8 @@
|
||||
-- DB update 2026_01_27_00 -> 2026_01_27_01
|
||||
-- Updates the trainer option from "Train me." to "I seek training in Fishing."
|
||||
UPDATE `gossip_menu_option` SET `OptionText` = 'I seek training in Fishing.', `OptionBroadcastTextID` = 34245 WHERE `MenuID` = 10437 AND `OptionID` = 0;
|
||||
|
||||
-- Adds "I would like to buy from you." to gossip menu. Can't parse sniff to validate which 1 out of 5 "I would like to buy from you." is the correct one.
|
||||
DELETE FROM `gossip_menu_option` WHERE `MenuID` = 10437 AND `OptionID` = 1;
|
||||
INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES
|
||||
(10437, 1, 1, 'I would like to buy from you.', 9992, 3, 128, 0, 0, 0, 0, '', 0, 0);
|
||||
@@ -0,0 +1,59 @@
|
||||
-- DB update 2026_01_27_01 -> 2026_01_27_02
|
||||
--
|
||||
UPDATE `creature_template` SET `lootid` = 30921 WHERE (`entry` = 31321);
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 31321);
|
||||
|
||||
UPDATE `creature_template` SET `lootid` = 30922 WHERE (`entry` = 31320);
|
||||
DELETE FROM `creature_loot_template` WHERE (`Entry` = 31320);
|
||||
|
||||
UPDATE `creature_template` SET `lootid` = 31255 WHERE (`entry` = 31322);
|
||||
DELETE FROM `creature_loot_template` WHERE `Entry` = 31322;
|
||||
|
||||
UPDATE `creature_template` SET `lootid` = 30894 WHERE (`entry` = 31323);
|
||||
DELETE FROM `creature_loot_template` WHERE `Entry` = 31323;
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 31322;
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 31322);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(31322, 0, 0, 0, 0, 0, 100, 0, 5200, 9500, 11750, 16250, 0, 0, 11, 60960, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Saronite Shaper - In Combat - Cast \'War Stomp\'');
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 31320;
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 31320);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(31320, 0, 0, 1, 8, 0, 100, 512, 58283, 0, 0, 0, 0, 0, 33, 31481, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Umbral Brute - On Spellhit \'Throw Rock\' - Quest Credit'),
|
||||
(31320, 0, 1, 2, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Umbral Brute - On Spellhit \'Throw Rock\' - Say Line 0'),
|
||||
(31320, 0, 2, 3, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 2, 1692, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Umbral Brute - On Spellhit \'Throw Rock\' - Set Faction 1692'),
|
||||
(31320, 0, 3, 4, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 2, 1693, 0, 0, 0, 0, 0, 19, 31321, 15, 0, 0, 0, 0, 0, 0, 'Umbral Brute - On Spellhit \'Throw Rock\' - Set Faction 1693'),
|
||||
(31320, 0, 4, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 19, 31321, 15, 0, 0, 0, 0, 0, 0, 'Umbral Brute - On Spellhit \'Throw Rock\' - Start Attacking'),
|
||||
(31320, 0, 5, 0, 25, 0, 100, 512, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Umbral Brute - On Reset - Reset Faction'),
|
||||
(31320, 0, 6, 0, 2, 0, 100, 1, 0, 30, 0, 0, 0, 0, 11, 50420, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Umbral Brute - Between 0-30% Health - Cast \'Enrage\' (No Repeat)'),
|
||||
(31320, 0, 7, 0, 0, 0, 100, 0, 3000, 4000, 7000, 8000, 0, 0, 11, 13446, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Umbral Brute - In Combat - Cast \'Strike\''),
|
||||
(31320, 0, 8, 0, 0, 0, 100, 0, 6000, 7000, 10000, 11000, 0, 0, 11, 10966, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Umbral Brute - In Combat - Cast \'Uppercut\'');
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 31321;
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 31321);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(31321, 0, 0, 0, 25, 0, 100, 512, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Skeletal Runesmith - On Reset - Reset Faction'),
|
||||
(31321, 0, 1, 0, 0, 0, 100, 0, 3200, 7500, 9750, 13250, 0, 0, 11, 46202, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Skeletal Runesmith - In Combat - Cast \'Pierce Armor\'');
|
||||
|
||||
UPDATE `gameobject` SET `phaseMask` = `phaseMask`|4 WHERE `id` = 193004 AND `guid` IN (99724, 99725, 99726, 99727);
|
||||
|
||||
DELETE FROM `creature_text` WHERE (`CreatureID` = 30922);
|
||||
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
|
||||
(30922, 0, 0, 'No one throws rocks at me!', 12, 0, 100, 0, 0, 0, 32217, 0, 'Matchmaker (13147)'),
|
||||
(30922, 0, 1, 'You wouldn\'t like me when I\'m angry...', 12, 0, 100, 0, 0, 0, 32218, 0, 'Matchmaker (13147)'),
|
||||
(30922, 0, 2, 'Finally! An excuse to squash you!', 12, 0, 100, 0, 0, 0, 32220, 0, 'Matchmaker (13147)'),
|
||||
(30922, 0, 3, 'You die for good this time, skeleton!', 12, 0, 100, 0, 0, 0, 32221, 0, 'Matchmaker (13147)'),
|
||||
(30922, 0, 4, 'Last straw...', 12, 0, 100, 0, 0, 0, 32222, 0, 'Matchmaker (13147)'),
|
||||
(30922, 0, 5, 'I was waiting for a reason to tear you bone from bone!', 12, 0, 100, 0, 0, 0, 32223, 0, 'Matchmaker (13147)'),
|
||||
(30922, 0, 6, 'That\'s the last mistake you\'ll make, skeleton.', 12, 0, 100, 0, 0, 0, 32224, 0, 'Matchmaker (13147)');
|
||||
|
||||
DELETE FROM `creature_text` WHERE (`CreatureID` = 31320);
|
||||
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
|
||||
(31320, 0, 0, 'No one throws rocks at me!', 12, 0, 100, 0, 0, 0, 32217, 0, 'Matchmaker (13147)'),
|
||||
(31320, 0, 1, 'You wouldn\'t like me when I\'m angry...', 12, 0, 100, 0, 0, 0, 32218, 0, 'Matchmaker (13147)'),
|
||||
(31320, 0, 2, 'Finally! An excuse to squash you!', 12, 0, 100, 0, 0, 0, 32220, 0, 'Matchmaker (13147)'),
|
||||
(31320, 0, 3, 'You die for good this time, skeleton!', 12, 0, 100, 0, 0, 0, 32221, 0, 'Matchmaker (13147)'),
|
||||
(31320, 0, 4, 'Last straw...', 12, 0, 100, 0, 0, 0, 32222, 0, 'Matchmaker (13147)'),
|
||||
(31320, 0, 5, 'I was waiting for a reason to tear you bone from bone!', 12, 0, 100, 0, 0, 0, 32223, 0, 'Matchmaker (13147)'),
|
||||
(31320, 0, 6, 'That\'s the last mistake you\'ll make, skeleton.', 12, 0, 100, 0, 0, 0, 32224, 0, 'Matchmaker (13147)');
|
||||
@@ -0,0 +1,32 @@
|
||||
-- DB update 2026_01_27_02 -> 2026_01_27_03
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 28352);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(28352, 0, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 50, 190555, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethurbian Crater KC Bunny - On Respawn - Summon Gameobject \'Nerubian Crater\''),
|
||||
(28352, 0, 1, 2, 8, 0, 100, 1, 51381, 0, 0, 0, 0, 0, 80, 2835200, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethurbian Crater KC Bunny - On Spellhit \'Toss Grenade\' - Run Script (No Repeat)'),
|
||||
(28352, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 33, 28352, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethurbian Crater KC Bunny - On Spellhit \'Toss Grenade\' - Quest Credit (No Repeat)');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 2835200);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(2835200, 9, 0, 0, 0, 0, 100, 0, 4200, 4200, 0, 0, 0, 0, 11, 44762, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethurbian Crater KC Bunny - Actionlist - Cast \'Camera Shake - Med\''),
|
||||
(2835200, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 48456, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethurbian Crater KC Bunny - Actionlist - Cast \'Shredder Smoke\''),
|
||||
(2835200, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 51435, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethurbian Crater KC Bunny - Actionlist - Cast \'Summon Skimmer\''),
|
||||
(2835200, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 51435, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethurbian Crater KC Bunny - Actionlist - Cast \'Summon Skimmer\''),
|
||||
(2835200, 9, 4, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 51435, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethurbian Crater KC Bunny - Actionlist - Cast \'Summon Skimmer\''),
|
||||
(2835200, 9, 5, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 51435, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethurbian Crater KC Bunny - Actionlist - Cast \'Summon Skimmer\''),
|
||||
(2835200, 9, 6, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 51435, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethurbian Crater KC Bunny - Actionlist - Cast \'Summon Skimmer\''),
|
||||
(2835200, 9, 7, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 51435, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethurbian Crater KC Bunny - Actionlist - Cast \'Summon Skimmer\''),
|
||||
(2835200, 9, 8, 0, 0, 0, 100, 0, 11300, 11300, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 20, 190555, 5, 0, 0, 0, 0, 0, 0, 'Nethurbian Crater KC Bunny - Actionlist - Despawn Instant'),
|
||||
(2835200, 9, 9, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nethurbian Crater KC Bunny - Actionlist - Despawn Instant');
|
||||
|
||||
DELETE FROM `gameobject` WHERE `id` = 190555 AND `guid` BETWEEN 58160 AND 58168;
|
||||
DELETE FROM `creature` WHERE `id1` = 28369 AND `guid` BETWEEN 115685 AND 115691;
|
||||
UPDATE `creature` SET `spawntimesecs` = 120 WHERE `id1` = 28352 AND `guid` BETWEEN 114082 AND 114091;
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI', `speed_run` = 2 WHERE `entry` = 28369;
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 28369);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(28369, 0, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 40148, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Burning Skimmer - On Respawn - Cast \'Immolation\''),
|
||||
(28369, 0, 1, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Burning Skimmer - On Respawn - Set Run On'),
|
||||
(28369, 0, 2, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 89, 15, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Burning Skimmer - On Respawn - Start Random Movement'),
|
||||
(28369, 0, 3, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 37, 10000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Burning Skimmer - On Respawn - Kill Self');
|
||||
@@ -0,0 +1,12 @@
|
||||
-- DB update 2026_01_27_03 -> 2026_01_27_04
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 28203);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(28203, 0, 0, 1, 8, 0, 100, 512, 50918, 0, 0, 0, 0, 0, 11, 50919, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Gorged Lurking Basilisk - On Spellhit \'Gluttonous Lurkers: Create Basilisk Crystals Cover\' - Cast \'Create Basilisk Crystals\''),
|
||||
(28203, 0, 1, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Gorged Lurking Basilisk - On Spellhit \'Gluttonous Lurkers: Create Basilisk Crystals Cover\' - Despawn Instant');
|
||||
|
||||
DELETE FROM `creature_template_addon` WHERE (`entry` = 28203);
|
||||
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(28203, 0, 0, 0, 1, 0, 0, '50917');
|
||||
|
||||
DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` = 28203 AND `spell_id` = 50919;
|
||||
@@ -0,0 +1,28 @@
|
||||
-- DB update 2026_01_27_04 -> 2026_01_27_05
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 24718);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(24718, 0, 0, 0, 10, 0, 100, 512, 1, 5, 60000, 60000, 0, 0, 80, 2471800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lebronski - Within 1-5 Range Out of Combat LoS - Run Script'),
|
||||
(24718, 0, 1, 0, 8, 1, 100, 512, 44562, 0, 5000, 5000, 0, 0, 80, 2471801, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lebronski - On Spellhit \'Bluff\' - Run Script (Phase 1)'),
|
||||
(24718, 0, 2, 0, 60, 1, 100, 0, 60000, 60000, 60000, 60000, 0, 0, 80, 2471802, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lebronski - On Update - Reset Self (Phase 1)');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 2471800);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(2471800, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lebronski - Actionlist - Say Line 1'),
|
||||
(2471800, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lebronski - Actionlist - Set Event Phase 1'),
|
||||
(2471800, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lebronski - Actionlist - Set Rooted On');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 2471801);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(2471801, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lebronski - Actionlist - Set Event Phase 0'),
|
||||
(2471801, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, 24823, 20, 0, 0, 0, 0, 0, 0, 'Lebronski - Actionlist - Say Line 0'),
|
||||
(2471801, 9, 2, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lebronski - Actionlist - Say Line 2'),
|
||||
(2471801, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 45, 0, 1, 0, 0, 0, 0, 19, 24823, 20, 0, 0, 0, 0, 0, 0, 'Lebronski - Actionlist - Set Data 0 1'),
|
||||
(2471801, 9, 4, 0, 0, 0, 100, 0, 10000, 10000, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lebronski - Actionlist - Set Rooted Off');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 2471802);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(2471802, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lebronski - Actionlist - Set Event Phase 0'),
|
||||
(2471802, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lebronski - Actionlist - Set Rooted Off');
|
||||
|
||||
UPDATE `conditions` SET `Comment` = 'Only fire Event for \'Iron Rune Constructs and You: The Bluff\' if Invoker is Iron Rune Construct (24823)' WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceGroup` = 1) AND (`SourceEntry` = 24718) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 31) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 3) AND (`ConditionValue2` = 24823) AND (`ConditionValue3` = 0);
|
||||
@@ -0,0 +1,10 @@
|
||||
-- DB update 2026_01_27_05 -> 2026_01_28_00
|
||||
--
|
||||
SET @ENTRY := 24705;
|
||||
|
||||
UPDATE `creature_template` SET `flags_extra` = `flags_extra` | 128 WHERE `entry` = @ENTRY;
|
||||
|
||||
DELETE FROM `creature_template_model` WHERE `CreatureID` = @ENTRY;
|
||||
INSERT INTO `creature_template_model` (`CreatureID`, `Idx`, `CreatureDisplayID`, `DisplayScale`, `Probability`, `VerifiedBuild`) VALUES
|
||||
(@ENTRY, 0, 1126, 1, 0, 51831),
|
||||
(@ENTRY, 1, 11686, 1, 1, 51831);
|
||||
@@ -0,0 +1,289 @@
|
||||
-- DB update 2026_01_28_00 -> 2026_01_29_00
|
||||
--
|
||||
-- Add BreadcrumbForQuestId column to quest_template_addon
|
||||
--
|
||||
|
||||
ALTER TABLE `quest_template_addon`
|
||||
ADD COLUMN `BreadcrumbForQuestId` mediumint unsigned NOT NULL DEFAULT '0' AFTER `ExclusiveGroup`;
|
||||
|
||||
-- Assisting Arch Druid Runetotem
|
||||
UPDATE `quest_template_addon` SET `NextQuestID` = 0, `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 3761 WHERE `ID` IN (936, 3762, 3784);
|
||||
|
||||
-- Assisting Arch Druid Staghelm
|
||||
UPDATE `quest_template_addon` SET `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 3764 WHERE `ID` IN (3763, 3789, 3790, 10520);
|
||||
|
||||
-- Lost Deathstalkers
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 429 WHERE `ID` = 428;
|
||||
|
||||
-- On Guard in Stonetalon
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1085 WHERE `ID` = 1070;
|
||||
|
||||
-- The Crown of Will
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 518 WHERE `ID` = 495;
|
||||
|
||||
-- Camp Mojache
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 7489 WHERE `ID` = 7492;
|
||||
|
||||
-- Feathermoon Stronghold
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 7488 WHERE `ID` = 7494;
|
||||
|
||||
-- Journey to Stonetalon Peak
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1057 WHERE `ID` = 1056;
|
||||
|
||||
-- Castpipe's Task
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 2930 WHERE `ID` = 2931;
|
||||
|
||||
-- Kayneth Stillwind
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1011 WHERE `ID` = 4581;
|
||||
|
||||
-- Carendin Summons
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1472 WHERE `ID` = 10605;
|
||||
|
||||
-- Seeking Strahad (Horde)
|
||||
UPDATE `quest_template_addon` SET `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 1801 WHERE `ID` IN (2996, 3001);
|
||||
|
||||
-- Seeking Strahad (Alliance)
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1758 WHERE `ID` = 1798;
|
||||
|
||||
-- A Helping Hand
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 9517 WHERE `ID` = 9533;
|
||||
|
||||
-- Trouble In Darkshore?
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 729 WHERE `ID` = 730;
|
||||
|
||||
-- Yorus Barleybrew
|
||||
UPDATE `quest_template_addon` SET `NextQuestID` = 0, `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 1699 WHERE `ID` IN (1698, 10371);
|
||||
|
||||
-- Speak with Ruga
|
||||
UPDATE `quest_template_addon` SET `PrevQuestId` = 0 WHERE `ID` = 1824;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1824 WHERE `ID` = 1823;
|
||||
|
||||
-- A Strange One
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 4505 WHERE `ID` = 6605;
|
||||
|
||||
-- A Call to Arms: The Plaguelands! (horde)
|
||||
UPDATE `quest_template_addon` SET `NextQuestID` = 0, `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 5096 WHERE `ID` IN (5093, 5094, 5095, 10374);
|
||||
|
||||
-- A Call to Arms: The Plaguelands! (alliance)
|
||||
UPDATE `quest_template_addon` SET `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 5092 WHERE `ID` IN (5066, 5090, 5091, 10373);
|
||||
|
||||
-- Trouble in Winterspring!
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 5082 WHERE `ID` = 6603;
|
||||
|
||||
-- Neeka Bloodscar
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1420 WHERE `ID` = 1418;
|
||||
|
||||
-- Taking Back Silithus
|
||||
UPDATE `quest_template_addon` SET `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 8280 WHERE `ID` IN (8275, 8276);
|
||||
|
||||
-- To Winterspring! & Starfall
|
||||
UPDATE `quest_template_addon` SET `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 5244 WHERE `ID` IN (5249, 5250);
|
||||
|
||||
-- Tinkee Steamboil
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 4810 WHERE `ID` = 4734;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 4734 WHERE `ID` = 4907;
|
||||
|
||||
-- Westbrook Garrison Needs Help!
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 11 WHERE `ID` = 239;
|
||||
|
||||
-- Elmore's Task
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE `ID` = 353;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 353 WHERE `ID` = 1097;
|
||||
|
||||
-- Brother Anton
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 261 WHERE `ID` = 6141;
|
||||
|
||||
-- Chillwind Camp
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE `ID` = 8414;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 8414 WHERE `ID` = 8415;
|
||||
|
||||
-- Report to Jennea
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1920 WHERE `ID` = 1919;
|
||||
|
||||
-- High Sorcerer Andromath
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1938 WHERE `ID` = 1939;
|
||||
|
||||
-- Vital Supplies
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE `ID` = 1395;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1395 WHERE `ID` = 1477;
|
||||
|
||||
-- Tabetha's Task
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 2846 WHERE `ID` = 2861;
|
||||
|
||||
-- James Hyal
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE `ID` = 1302;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1302 WHERE `ID` = 1301;
|
||||
|
||||
-- Morgan Stern
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1204 WHERE `ID` = 1260;
|
||||
|
||||
-- Mayara Brightwing
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 4764 WHERE `ID` = 4766;
|
||||
|
||||
-- Tinkmaster Overspark
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 2922 WHERE `ID` = 2923;
|
||||
|
||||
-- Knowledge of the Orb of Orahil
|
||||
UPDATE `quest_template_addon` SET `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 1799 WHERE `ID` IN (4965, 4967, 4968, 4969);
|
||||
|
||||
-- In Search of Menara Voidrender
|
||||
UPDATE `quest_template_addon` SET `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 1796 WHERE `ID` IN (4736, 4737, 4738, 4739);
|
||||
|
||||
-- Gakin's Summons / The Slaughtered Lamb
|
||||
UPDATE `quest_template_addon` SET `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 1688 WHERE `ID` IN (1685, 1715);
|
||||
|
||||
-- Gakin's Summons
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE `ID` = 1716;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1716 WHERE `ID` = 1717;
|
||||
|
||||
-- Jonespyre's Request
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 3785 WHERE `ID` = 3791;
|
||||
UPDATE `quest_template_addon` SET `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 3791 WHERE `ID` IN (3787, 3788);
|
||||
|
||||
-- Malin's Request
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 691 WHERE `ID` = 690;
|
||||
|
||||
-- Report to Anastasia
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1960 WHERE `ID` = 1959;
|
||||
|
||||
-- Speak with Deino
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1944 WHERE `ID` = 1943;
|
||||
|
||||
-- Torwa Pathfinder
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE `ID` = 9052;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 9052 WHERE `ID` = 9063;
|
||||
|
||||
-- The Hermit
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 148 WHERE `ID` = 165;
|
||||
|
||||
-- Deliveries to Sven
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 95 WHERE `ID` = 164;
|
||||
|
||||
-- Raven Hill
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 5 WHERE `ID` = 163;
|
||||
|
||||
-- Enraged Wildkin
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 4861 WHERE `ID` = 6604;
|
||||
|
||||
-- Ironband's Excavation
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 297 WHERE `ID` = 436;
|
||||
|
||||
-- Stonegear's Search
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 466 WHERE `ID` = 467;
|
||||
|
||||
-- Mountaineer Stormpike's Task
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1338 WHERE `ID` = 1339;
|
||||
|
||||
-- Report to Mountaineer Rockgar
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE `ID` = 455;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 455 WHERE `ID` = 468;
|
||||
|
||||
-- Find Bingles
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 2038 WHERE `ID` = 2039;
|
||||
|
||||
-- The Greenwarden
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 276 WHERE `ID` = 463;
|
||||
|
||||
-- Rejold's New Brew
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 315 WHERE `ID` = 413;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 413 WHERE `ID` = 415;
|
||||
|
||||
-- Klockmort's Essentials
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 2924 WHERE `ID` = 2925;
|
||||
|
||||
-- Speak with Shoni
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 2040 WHERE `ID` = 2041;
|
||||
|
||||
-- Imperial Plate Armor
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 7652 WHERE `ID` IN (10891, 10892);
|
||||
|
||||
-- I Know A Guy... / To Gadgetzan You Go!
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 6610 WHERE `ID` IN (6611, 6612);
|
||||
|
||||
-- Alliance Trauma
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 6624 WHERE `ID` = 6625;
|
||||
|
||||
-- I Got Nothin' Left!
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 6607 WHERE `ID` = 6609;
|
||||
|
||||
-- Trollbane
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 639 WHERE `ID` = 638;
|
||||
|
||||
-- Horde Trauma
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 6622 WHERE `ID` = 6623;
|
||||
|
||||
-- The Hermit of Witch Hill / The Hermit of Swamplight Manor
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1218 WHERE `ID` IN (11177, 11225);
|
||||
|
||||
-- Vivian Lagrave
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 4134 WHERE `ID` = 4133;
|
||||
|
||||
-- Vivian Lagrave and the Darkstone Tablet
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 4768 WHERE `ID` = 4769;
|
||||
|
||||
-- Yuka Screwspigot
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 4136 WHERE `ID` = 4324;
|
||||
|
||||
-- Help Watcher Biggs
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1396 WHERE `ID` = 9609;
|
||||
|
||||
-- Taking a Stand
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 12503 WHERE `ID` = 12795;
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE `ID` IN (12503, 12596);
|
||||
|
||||
-- The Exiles of Ulduar
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 12930 WHERE `ID` = 12885;
|
||||
|
||||
-- Assist Exarch Orelis
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE `ID` = 10241;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 10241 WHERE `ID` = 11038;
|
||||
|
||||
-- Off To Area 52 / Out of This World Produce! / A Strange Vision / Parts for the Rocket-Chief / A Mystifying Vision
|
||||
UPDATE `quest_template_addon` SET `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 10186 WHERE `ID` IN (10183, 11036, 11037, 11040, 11042);
|
||||
|
||||
-- Horde Warlock Voidwalker questlines
|
||||
UPDATE `quest_template_addon` SET `NextQuestId` = 0, `ExclusiveGroup` = 0 WHERE `ID` IN (10789, 1478, 1473, 1471, 10790, 1506, 1501, 1504, 10788, 9529, 9619);
|
||||
UPDATE `quest_template_addon` SET `PrevQuestId` = 1473 WHERE `ID` = 1471;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1473 WHERE `ID` IN (10789, 1478);
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1501 WHERE `ID` IN (10790, 1506);
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 9529 WHERE `ID` = 10788;
|
||||
|
||||
-- Horde Mage level 10 quests
|
||||
UPDATE `quest_template_addon` SET `NextQuestId` = 0, `ExclusiveGroup` = 0 WHERE `ID` IN (1881, 1883, 9402);
|
||||
UPDATE `quest_template_addon` SET `PrevQuestId` = 0 WHERE `ID` = 1884;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1882 WHERE `ID` = 1881;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1884 WHERE `ID` = 1883;
|
||||
UPDATE `quest_template_addon` SET `ExclusiveGroup` = 1882 WHERE `ID` IN (1882, 1884, 9402);
|
||||
|
||||
-- Alliance Mage level 10 quests
|
||||
UPDATE `quest_template_addon` SET `NextQuestId` = 0, `ExclusiveGroup` = 0 WHERE `ID` IN (1860, 1879);
|
||||
UPDATE `quest_template_addon` SET `PrevQuestId` = 0 WHERE `ID` = 1880;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1861 WHERE `ID` = 1860;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 1880 WHERE `ID` = 1879;
|
||||
UPDATE `quest_template_addon` SET `NextQuestId` = 0, `ExclusiveGroup` = 1861 WHERE `ID` IN (1861, 1880, 9595);
|
||||
|
||||
-- SI:7 / Erion's Behest / Kingly Shakedown
|
||||
UPDATE `quest_template_addon` SET `NextQuestId` = 0, `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 2260 WHERE `ID` = 2259;
|
||||
UPDATE `quest_template_addon` SET `NextQuestId` = 0, `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 2298 WHERE `ID` = 2299;
|
||||
UPDATE `quest_template_addon` SET `NextQuestId` = 0, `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 2281 WHERE `ID` IN (2260, 2298, 2300);
|
||||
|
||||
-- Alliance Rogue level 10 quests
|
||||
UPDATE `quest_template_addon` SET `PrevQuestId` = 0, `ExclusiveGroup` = 2206 WHERE `ID` IN (2206, 2238, 2242);
|
||||
UPDATE `quest_template_addon` SET `NextQuestId` = 0, `ExclusiveGroup` = 0 WHERE `ID` IN (2218, 2205, 2241);
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 2238 WHERE `ID` = 2218;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 2206 WHERE `ID` = 2205;
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 2242 WHERE `ID` = 2241;
|
||||
|
||||
-- Find Sage Mistwalker (breadcrumb for The Artifacts of Steel Gate)
|
||||
UPDATE `quest_template_addon` SET `PrevQuestID` = 0, `ExclusiveGroup` = 0 WHERE (`ID` = 11286);
|
||||
UPDATE `quest_template_addon` SET `ExclusiveGroup` = 0, `BreadcrumbForQuestId` = 11286 WHERE `ID` = 11287;
|
||||
|
||||
-- Judgment Day Comes! (Alliance/Horde breadcrumbs for Honor Above All Else)
|
||||
UPDATE `quest_template_addon` SET `BreadcrumbForQuestId` = 13036 WHERE `ID` IN (13226, 13227);
|
||||
|
||||
-- Remove redundant conditions now handled by BreadcrumbForQuestId
|
||||
-- Quest 8280 (Securing the Supply Lines) no longer needs conditions requiring 8275/8276 rewarded
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 19 AND `SourceEntry` = 8280 AND `ConditionTypeOrReference` = 8 AND `ConditionValue1` IN (8275, 8276);
|
||||
|
||||
-- Judgment Day Comes! (13226/13227) no longer needs conditions checking 13036 (Honor Above All Else)
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 19 AND `SourceEntry` IN (13226, 13227) AND `ConditionValue1` = 13036;
|
||||
@@ -0,0 +1,21 @@
|
||||
-- DB update 2026_01_29_00 -> 2026_01_29_01
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` = 51774 AND `ScriptName` = 'spell_taunt_brann';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(51774, 'spell_taunt_brann');
|
||||
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` = 51774) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 31) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 3) AND (`ConditionValue2` = 28070) AND (`ConditionValue3` = 0);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13, 1, 51774, 0, 0, 31, 0, 3, 28070, 0, 0, 0, 0, '', 'Target of Taunt (51774) is Brann Bronzebeard (28070) in Halls of Stone Tribunal Event.');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 27983) AND (`source_type` = 0) AND (`id` IN (2));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(27983, 0, 2, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 51774, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Rune Protector - On Respawn - Cast \'Taunt\'');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 27984) AND (`source_type` = 0) AND (`id` IN (4));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(27984, 0, 4, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 51774, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Rune Stormcaller - On Respawn - Cast \'Taunt\'');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 27985) AND (`source_type` = 0) AND (`id` IN (3));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(27985, 0, 3, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 51774, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Golem Custodian - On Respawn - Cast \'Taunt\'');
|
||||
@@ -0,0 +1,19 @@
|
||||
-- DB update 2026_01_29_01 -> 2026_01_29_02
|
||||
--
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 2895202) AND (`source_type` = 9) AND (`id` IN (5));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(2895202, 9, 5, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Akali - Quest Reset Script - Set Active Off');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 2895200);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(2895200, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Akali - Quest Success Script - Set Active On'),
|
||||
(2895200, 9, 1, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Akali - Quest Success Script - Say Line 0'),
|
||||
(2895200, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 15, 12721, 0, 0, 0, 0, 0, 18, 60, 0, 0, 0, 0, 0, 0, 0, 'Akali - Quest Success Script - Quest Credit \'Rampage\''),
|
||||
(2895200, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Akali - Quest Success Script - Summon Creature Group 1'),
|
||||
(2895200, 9, 4, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 92, 0, 45579, 0, 0, 0, 0, 9, 28988, 0, 100, 0, 0, 0, 0, 0, 'Akali - Actionlist - Interrupt Spell \'Fire Channeling\''),
|
||||
(2895200, 9, 5, 0, 0, 0, 100, 0, 4600, 4600, 0, 0, 0, 0, 19, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Akali - Quest Success Script - Remove Flag Immune To NPC\'s'),
|
||||
(2895200, 9, 6, 0, 0, 0, 100, 0, 55000, 55000, 0, 0, 0, 0, 12, 28996, 8, 0, 0, 0, 0, 8, 0, 0, 0, 0, 6882.03, -4571, 442.312, 2.37365, 'Akali - Quest Success Script - Summon Creature \'Prophet of Akali\'');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 28996) AND (`source_type` = 0) AND (`id` IN (7));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(28996, 0, 7, 0, 37, 0, 100, 0, 0, 0, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Prophet of Akali - On Initialize - Set Active On');
|
||||
@@ -0,0 +1,4 @@
|
||||
-- DB update 2026_01_29_02 -> 2026_01_29_03
|
||||
-- Wotlk armor value
|
||||
UPDATE `creature_classlevelstats` SET `basearmor`=10643 WHERE `level`=83 AND `class`=1;
|
||||
UPDATE `creature_classlevelstats` SET `basearmor`=10643 WHERE `level`=83 AND `class`=2;
|
||||
@@ -0,0 +1,6 @@
|
||||
-- DB update 2026_01_29_03 -> 2026_01_30_00
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` IN (56072, 56070);
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(56072, 'spell_wyrmrest_skytalon_ride_red_dragon_buddy_trigger'),
|
||||
(56070, 'spell_wyrmrest_skytalon_summon_red_dragon_buddy');
|
||||
@@ -0,0 +1,54 @@
|
||||
-- DB update 2026_01_30_00 -> 2026_01_30_01
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` = 23377 AND `id` = 3 AND `source_type` = 0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(23377, 0, 3, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 53, 1, 23377, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 'Skyguard Ace - On Respawn - Start Waypoint Movement');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` = 23377 AND `id` IN (4, 5, 6) AND `source_type` = 0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(23377,0,4,0,38,0,100,0,2,2,0,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0.0,0.0,0.0,0.0,'On Data Set - Talk 2'),
|
||||
(23377,0,5,0,38,0,100,0,3,3,0,0,0,0,1,3,0,0,0,0,0,1,0,0,0,0,0.0,0.0,0.0,0.0,'On Data Set - Talk 3');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` = 2183800 AND `source_type` = 9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(2183800, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 'Terokk - On Script - Set Immune Flags'),
|
||||
(2183800, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 24240, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 'Terokk - On Script - Summon Lightning Spell'),
|
||||
(2183800, 9, 2, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 0, 0, 11, 39579, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 'Terokk - On Script - Shadow Form'),
|
||||
(2183800, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 'Terokk - On Script - Summon Talk'),
|
||||
(2183800, 9, 4, 0, 0, 0, 100, 0, 10000, 10000, 0, 0, 0, 0, 19, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 'Terokk - On Script - Remove Immune Flags'),
|
||||
(2183800, 9, 5, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 'Terokk - On Script - Attack Invoker');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` = 2183801 AND `source_type` = 9;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(2183801, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 40726, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0.0, 0.0, 0.0, 0.0, 'Terokk - On Script - Cast "Chosen One"'),
|
||||
(2183801, 9, 1, 0, 0, 0, 100, 0, 500, 500, 0, 0, 0, 0, 11, 40722, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 'Terokk - On Script - Cast "Will of the Arakkoa God"');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` = 21838 AND `id` = 19 AND `source_type` = 0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(21838, 0, 19, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 12, 23377, 3, 240000, 0, 0, 0, 8, 0, 0, 0, 0, -3771.6, 3499.32, 317.88, 2.5, 'Terokk - On Aggro Summon "Skyguard Ace"');
|
||||
|
||||
UPDATE `smart_scripts` SET `target_type` = 19 WHERE `entryorguid` = 21838 AND `id` IN (4, 7, 13, 14) AND `source_type` = 0;
|
||||
UPDATE `smart_scripts` SET `action_param1` = 2, `action_param2` = 2, `comment` = 'Terokk - Between 0-50% Health - Set Data 2 2 (Skyguard Ace) (No Repeat)' WHERE `entryorguid` = 21838 AND `id` = 4 AND `source_type` = 0;
|
||||
UPDATE `smart_scripts` SET `target_param1` = 23377 WHERE `entryorguid` = 21838 AND `id` IN (4, 7, 13, 14) AND `source_type` = 0;
|
||||
UPDATE `smart_scripts` SET `action_param1` = 1, `action_param2` = 1 WHERE `entryorguid` = 21838 AND `id` = 7 AND `source_type` = 0;
|
||||
|
||||
DELETE FROM `creature_text` WHERE `CreatureID` = 21838 AND `GroupID` = 3;
|
||||
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
|
||||
(21838,3,0,'Who calls me to this world? The stars are not yet aligned... my powers fail me! You will pay for this!',14,0,100.0,0,0,0,21639,0,'Terokk');
|
||||
|
||||
UPDATE `creature_text` SET `Text` = 'Kwa! You cannot kill me, I am immortal!' WHERE `CreatureID` = 21838 AND `GroupID` = 1;
|
||||
UPDATE `creature_text` SET `BroadcastTextId` = 24020 WHERE `CreatureID` = 21838 AND `GroupID` = 1;
|
||||
|
||||
DELETE FROM `creature_text` WHERE `CreatureID` = 23377;
|
||||
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
|
||||
(23377,1,0,'Quickly! Use the flames and support ground troops. Its ancient magic should cleanse Terokk''s shield.',14,0,100.0,0,0,0,24021,0,'Skyguard Ace'),
|
||||
(23377,2,0,'Enemy sighted! Fall into formation and prepare for bombing maneuvers!',14,0,100.0,0,0,0,21439,0,'Skyguard Ace'),
|
||||
(23377,3,0,'They did it! Enemy down! Return to base!',14,0,100.0,0,0,0,21437,0,'Skyguard Ace');
|
||||
|
||||
UPDATE `creature_template` SET `unit_flags` = 2 WHERE `entry` = 23377;
|
||||
|
||||
DELETE FROM `waypoints` WHERE `entry` = 23377;
|
||||
INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `point_comment`) VALUES
|
||||
(23377, 1, -3774.55, 3514.51, 325.551, NULL, 0, 'Skyguard Ace'),
|
||||
(23377, 2, -3794.88, 3497.48, 325.551, NULL, 0, 'Skyguard Ace'),
|
||||
(23377, 3, -3808.63, 3515.7, 325.551, NULL, 0, 'Skyguard Ace'),
|
||||
(23377, 4, -3783.6, 3524.59, 325.551, NULL, 0, 'Skyguard Ace');
|
||||
@@ -714,7 +714,9 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
||||
if (me->IsRooted()) // Rooted inhabit type, never move/reposition
|
||||
continue;
|
||||
|
||||
CAST_AI(SmartAI, me->AI())->SetCurrentRangeMode(true, std::max(spellMaxRange - NOMINAL_MELEE_RANGE, 0.0f));
|
||||
if (e.action.cast.castFlags & SMARTCAST_COMBAT_MOVE)
|
||||
CAST_AI(SmartAI, me->AI())->SetCurrentRangeMode(true, std::max(spellMaxRange - NOMINAL_MELEE_RANGE, 0.0f));
|
||||
|
||||
continue;
|
||||
}
|
||||
else if (distanceToTarget < spellMinRange || !(isWithinLOSInMap || isSpellIgnoreLOS))
|
||||
|
||||
@@ -336,6 +336,9 @@ inline void Battleground::_CheckSafePositions(uint32 diff)
|
||||
|
||||
for (auto const& [playerGuid, player] : GetPlayers())
|
||||
{
|
||||
if (player->IsGameMaster())
|
||||
continue;
|
||||
|
||||
Position pos = player->GetPosition();
|
||||
Position const* startPos = GetTeamStartPosition(player->GetBgTeamId());
|
||||
|
||||
|
||||
@@ -12852,9 +12852,21 @@ void Player::ResurectUsingRequestData()
|
||||
|
||||
void Player::SetClientControl(Unit* target, bool allowMove, bool packetOnly /*= false*/)
|
||||
{
|
||||
ASSERT(target);
|
||||
// refuse to grant control if target has UNIT_STATE_CHARMED
|
||||
if (target->HasUnitState(UNIT_STATE_CHARMED) && (GetGUID() != target->GetCharmerGUID()))
|
||||
{
|
||||
LOG_ERROR("entities.player", "Player '{}' attempt to client control '{}', which is charmed by GUID {}", GetName(), target->GetName(), target->GetCharmerGUID().ToString());
|
||||
return;
|
||||
}
|
||||
|
||||
// still affected by some aura that shouldn't allow control, only allow on last such aura to be removed
|
||||
if (target->HasUnitState(UNIT_STATE_FLEEING | UNIT_STATE_CONFUSED))
|
||||
allowMove = false;
|
||||
|
||||
WorldPacket data(SMSG_CLIENT_CONTROL_UPDATE, target->GetPackGUID().size() + 1);
|
||||
data << target->GetPackGUID();
|
||||
data << uint8((allowMove && !target->HasUnitState(UNIT_STATE_FLEEING | UNIT_STATE_CONFUSED)) ? 1 : 0);
|
||||
data << uint8(allowMove ? 1 : 0);
|
||||
SendDirectMessage(&data);
|
||||
|
||||
// We want to set the packet only
|
||||
|
||||
@@ -1447,6 +1447,7 @@ public:
|
||||
bool SatisfyQuestConditions(Quest const* qInfo, bool msg);
|
||||
bool SatisfyQuestTimed(Quest const* qInfo, bool msg) const;
|
||||
bool SatisfyQuestExclusiveGroup(Quest const* qInfo, bool msg) const;
|
||||
bool SatisfyQuestBreadcrumb(Quest const* qInfo, bool msg) const;
|
||||
bool SatisfyQuestNextChain(Quest const* qInfo, bool msg) const;
|
||||
bool SatisfyQuestPrevChain(Quest const* qInfo, bool msg) const;
|
||||
bool SatisfyQuestDay(Quest const* qInfo, bool msg) const;
|
||||
|
||||
@@ -239,7 +239,7 @@ bool Player::CanSeeStartQuest(Quest const* quest)
|
||||
if (!sDisableMgr->IsDisabledFor(DISABLE_TYPE_QUEST, quest->GetQuestId(), this) && SatisfyQuestClass(quest, false) && SatisfyQuestRace(quest, false) &&
|
||||
SatisfyQuestSkill(quest, false) && SatisfyQuestExclusiveGroup(quest, false) && SatisfyQuestReputation(quest, false) &&
|
||||
SatisfyQuestPreviousQuest(quest, false) && SatisfyQuestNextChain(quest, false) &&
|
||||
SatisfyQuestPrevChain(quest, false) && SatisfyQuestDay(quest, false) && SatisfyQuestWeek(quest, false) &&
|
||||
SatisfyQuestPrevChain(quest, false) && SatisfyQuestBreadcrumb(quest, false) && SatisfyQuestDay(quest, false) && SatisfyQuestWeek(quest, false) &&
|
||||
SatisfyQuestMonth(quest, false) && SatisfyQuestSeasonal(quest, false))
|
||||
{
|
||||
return GetLevel() + sWorld->getIntConfig(CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF) >= quest->GetMinLevel();
|
||||
@@ -256,6 +256,7 @@ bool Player::CanTakeQuest(Quest const* quest, bool msg)
|
||||
&& SatisfyQuestSkill(quest, msg) && SatisfyQuestReputation(quest, msg)
|
||||
&& SatisfyQuestPreviousQuest(quest, msg) && SatisfyQuestTimed(quest, msg)
|
||||
&& SatisfyQuestNextChain(quest, msg) && SatisfyQuestPrevChain(quest, msg)
|
||||
&& SatisfyQuestBreadcrumb(quest, msg)
|
||||
&& SatisfyQuestDay(quest, msg) && SatisfyQuestWeek(quest, msg)
|
||||
&& SatisfyQuestMonth(quest, msg) && SatisfyQuestSeasonal(quest, msg)
|
||||
&& SatisfyQuestConditions(quest, msg);
|
||||
@@ -1217,6 +1218,39 @@ bool Player::SatisfyQuestExclusiveGroup(Quest const* qInfo, bool msg) const
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Player::SatisfyQuestBreadcrumb(Quest const* qInfo, bool msg) const
|
||||
{
|
||||
uint32 breadcrumbForQuestId = qInfo->GetBreadcrumbForQuestId();
|
||||
if (breadcrumbForQuestId)
|
||||
{
|
||||
QuestStatus status = GetQuestStatus(breadcrumbForQuestId);
|
||||
if (status != QUEST_STATUS_NONE || IsQuestRewarded(breadcrumbForQuestId))
|
||||
{
|
||||
if (msg)
|
||||
SendCanTakeQuestResponse(INVALIDREASON_DONT_HAVE_REQ);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (std::vector<uint32> const* breadcrumbs = sObjectMgr->GetBreadcrumbsForQuest(qInfo->GetQuestId()))
|
||||
{
|
||||
for (uint32 breadcrumbQuestId : *breadcrumbs)
|
||||
{
|
||||
QuestStatus status = GetQuestStatus(breadcrumbQuestId);
|
||||
if (status == QUEST_STATUS_INCOMPLETE || status == QUEST_STATUS_COMPLETE || status == QUEST_STATUS_FAILED)
|
||||
{
|
||||
if (msg)
|
||||
SendCanTakeQuestResponse(INVALIDREASON_DONT_HAVE_REQ);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Player::SatisfyQuestNextChain(Quest const* qInfo, bool msg) const
|
||||
{
|
||||
uint32 nextQuest = qInfo->GetNextQuestInChain();
|
||||
|
||||
@@ -5177,7 +5177,7 @@ void Unit::RemoveAurasDueToSpellBySteal(uint32 spellId, ObjectGuid casterGUID, U
|
||||
// Xinef: if stealer has same aura
|
||||
Aura* curAura = stealer->GetAura(aura->GetId());
|
||||
if (!curAura || (!curAura->IsPermanent() && curAura->GetDuration() < (int32)dur))
|
||||
if (Aura* newAura = Aura::TryRefreshStackOrCreate(aura->GetSpellInfo(), effMask, stealer, nullptr, &baseDamage[0], nullptr, aura->GetCasterGUID()))
|
||||
if (Aura* newAura = Aura::TryRefreshStackOrCreate(aura->GetSpellInfo(), effMask, stealer, nullptr, &baseDamage[0], nullptr, stealer->GetGUID()))
|
||||
{
|
||||
// created aura must not be single target aura,, so stealer won't loose it on recast
|
||||
if (newAura->IsSingleTarget())
|
||||
@@ -5189,6 +5189,13 @@ void Unit::RemoveAurasDueToSpellBySteal(uint32 spellId, ObjectGuid casterGUID, U
|
||||
}
|
||||
// FIXME: using aura->GetMaxDuration() maybe not blizzlike but it fixes stealing of spells like Innervate
|
||||
newAura->SetLoadedState(aura->GetMaxDuration(), int32(dur), stealCharge ? 1 : aura->GetCharges(), 1, recalculateMask, &damage[0]);
|
||||
|
||||
// Reset periodic timers so stolen HoTs tick properly
|
||||
// For stolen auras we need fresh tick counters since no ticks have occurred yet
|
||||
for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
|
||||
if (AuraEffect* aurEff = newAura->GetEffect(i))
|
||||
aurEff->ResetPeriodic(true);
|
||||
|
||||
newAura->ApplyForTargets();
|
||||
}
|
||||
}
|
||||
@@ -11124,6 +11131,8 @@ void Unit::SetCharm(Unit* charm, bool apply)
|
||||
}
|
||||
else
|
||||
{
|
||||
charm->ClearUnitState(UNIT_STATE_CHARMED);
|
||||
|
||||
if (IsPlayer())
|
||||
{
|
||||
if (!RemoveGuidValue(UNIT_FIELD_CHARM, charm->GetGUID()))
|
||||
@@ -18631,7 +18640,7 @@ bool Unit::SetCharmedBy(Unit* charmer, CharmType type, AuraApplication const* au
|
||||
ASSERT(type != CHARM_TYPE_POSSESS || charmer->IsPlayer());
|
||||
if (type == CHARM_TYPE_VEHICLE && !IsVehicle()) // pussywizard
|
||||
throw 1;
|
||||
ASSERT((type == CHARM_TYPE_VEHICLE) == IsVehicle());
|
||||
ASSERT((type == CHARM_TYPE_VEHICLE) == (GetVehicleKit() && GetVehicleKit()->IsControllableVehicle()));
|
||||
|
||||
LOG_DEBUG("entities.unit", "SetCharmedBy: charmer {} ({}), charmed {} ({}), type {}.",
|
||||
charmer->GetEntry(), charmer->GetGUID().ToString(), GetEntry(), GetGUID().ToString(), uint32(type));
|
||||
@@ -18804,6 +18813,8 @@ bool Unit::SetCharmedBy(Unit* charmer, CharmType type, AuraApplication const* au
|
||||
else if (IsPlayer())
|
||||
RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT);
|
||||
|
||||
AddUnitState(UNIT_STATE_CHARMED);
|
||||
|
||||
if (Creature* creature = ToCreature())
|
||||
creature->RefreshSwimmingFlag();
|
||||
|
||||
|
||||
@@ -169,7 +169,7 @@ enum UnitState
|
||||
{
|
||||
UNIT_STATE_DIED = 0x00000001, // player has fake death aura
|
||||
UNIT_STATE_MELEE_ATTACKING = 0x00000002, // player is melee attacking someone
|
||||
//UNIT_STATE_MELEE_ATTACK_BY = 0x00000004, // player is melee attack by someone
|
||||
UNIT_STATE_CHARMED = 0x00000004, // having any kind of charm aura on self
|
||||
UNIT_STATE_STUNNED = 0x00000008,
|
||||
UNIT_STATE_ROAMING = 0x00000010,
|
||||
UNIT_STATE_CHASE = 0x00000020,
|
||||
@@ -201,7 +201,7 @@ enum UnitState
|
||||
UNIT_STATE_NO_COMBAT_MOVEMENT = 0x40000000, // should not be changed outside the core and should be placed at the end
|
||||
UNIT_STATE_LOGOUT_TIMER = 0x80000000, // Unit is logging out
|
||||
|
||||
UNIT_STATE_ALL_STATE_SUPPORTED = UNIT_STATE_DIED | UNIT_STATE_MELEE_ATTACKING | UNIT_STATE_STUNNED | UNIT_STATE_ROAMING | UNIT_STATE_CHASE
|
||||
UNIT_STATE_ALL_STATE_SUPPORTED = UNIT_STATE_DIED | UNIT_STATE_MELEE_ATTACKING | UNIT_STATE_CHARMED | UNIT_STATE_STUNNED | UNIT_STATE_ROAMING | UNIT_STATE_CHASE
|
||||
| UNIT_STATE_FLEEING | UNIT_STATE_IN_FLIGHT | UNIT_STATE_FOLLOW | UNIT_STATE_ROOT | UNIT_STATE_CONFUSED
|
||||
| UNIT_STATE_DISTRACTED | UNIT_STATE_ISOLATED | UNIT_STATE_ATTACK_PLAYER | UNIT_STATE_CASTING
|
||||
| UNIT_STATE_POSSESSED | UNIT_STATE_CHARGING | UNIT_STATE_JUMPING | UNIT_STATE_MOVE | UNIT_STATE_ROTATING
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "TemporarySummon.h"
|
||||
#include "Unit.h"
|
||||
#include "Util.h"
|
||||
#include <algorithm>
|
||||
|
||||
Vehicle::Vehicle(Unit* unit, VehicleEntry const* vehInfo, uint32 creatureEntry) :
|
||||
_me(unit), _vehicleInfo(vehInfo), _usableSeatNum(0), _creatureEntry(creatureEntry), _status(STATUS_NONE)
|
||||
@@ -562,6 +563,11 @@ bool Vehicle::IsVehicleInUse()
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Vehicle::IsControllableVehicle() const
|
||||
{
|
||||
return std::ranges::any_of(Seats, [](auto const& seat) { return seat.second.SeatInfo->CanControl(); });
|
||||
}
|
||||
|
||||
void Vehicle::TeleportVehicle(float x, float y, float z, float ang)
|
||||
{
|
||||
_me->GetMap()->LoadGrid(x, y);
|
||||
|
||||
@@ -51,6 +51,7 @@ public:
|
||||
void RemoveAllPassengers();
|
||||
void Dismiss();
|
||||
bool IsVehicleInUse();
|
||||
[[nodiscard]] bool IsControllableVehicle() const;
|
||||
void TeleportVehicle(float x, float y, float z, float ang);
|
||||
|
||||
SeatMap Seats;
|
||||
|
||||
@@ -4738,10 +4738,10 @@ void ObjectMgr::LoadQuests()
|
||||
}
|
||||
|
||||
// Load `quest_template_addon`
|
||||
// 0 1 2 3 4 5 6 7 8
|
||||
result = WorldDatabase.Query("SELECT ID, MaxLevel, AllowableClasses, SourceSpellID, PrevQuestID, NextQuestID, ExclusiveGroup, RewardMailTemplateID, RewardMailDelay, "
|
||||
//9 10 11 12 13 14 15 16 17
|
||||
"RequiredSkillID, RequiredSkillPoints, RequiredMinRepFaction, RequiredMaxRepFaction, RequiredMinRepValue, RequiredMaxRepValue, ProvidedItemCount, RewardMailSenderEntry, SpecialFlags FROM quest_template_addon LEFT JOIN quest_mail_sender ON Id=QuestId");
|
||||
// 0 1 2 3 4 5 6 7 8
|
||||
result = WorldDatabase.Query("SELECT ID, MaxLevel, AllowableClasses, SourceSpellID, PrevQuestID, NextQuestID, ExclusiveGroup, BreadcrumbForQuestId, RewardMailTemplateID, "
|
||||
//9 10 11 12 13 14 15 16 17 18
|
||||
"RewardMailDelay, RequiredSkillID, RequiredSkillPoints, RequiredMinRepFaction, RequiredMaxRepFaction, RequiredMinRepValue, RequiredMaxRepValue, ProvidedItemCount, RewardMailSenderEntry, SpecialFlags FROM quest_template_addon LEFT JOIN quest_mail_sender ON Id=QuestId");
|
||||
|
||||
if (!result)
|
||||
{
|
||||
@@ -5318,12 +5318,54 @@ void ObjectMgr::LoadQuests()
|
||||
|
||||
if (qinfo->ExclusiveGroup)
|
||||
mExclusiveQuestGroups.insert(std::pair<int32, uint32>(qinfo->ExclusiveGroup, qinfo->GetQuestId()));
|
||||
|
||||
if (uint32 breadcrumbForQuestId = qinfo->GetBreadcrumbForQuestId())
|
||||
{
|
||||
if (_questTemplates.find(breadcrumbForQuestId) == _questTemplates.end())
|
||||
LOG_ERROR("sql.sql", "Quest {} has BreadcrumbForQuestId {}, but no such quest exists", qinfo->GetQuestId(), breadcrumbForQuestId);
|
||||
else
|
||||
_breadcrumbsForQuest[breadcrumbForQuestId].push_back(qinfo->GetQuestId());
|
||||
|
||||
if (qinfo->GetNextQuestId())
|
||||
LOG_ERROR("sql.sql", "Quest {} is a breadcrumb quest but also has NextQuestID {} set", qinfo->GetQuestId(), qinfo->GetNextQuestId());
|
||||
if (qinfo->GetExclusiveGroup())
|
||||
LOG_ERROR("sql.sql", "Quest {} is a breadcrumb quest but also has ExclusiveGroup {} set", qinfo->GetQuestId(), qinfo->GetExclusiveGroup());
|
||||
}
|
||||
|
||||
if (qinfo->TimeAllowed)
|
||||
qinfo->SetSpecialFlag(QUEST_SPECIAL_FLAGS_TIMED);
|
||||
if (qinfo->RequiredPlayerKills)
|
||||
qinfo->SetSpecialFlag(QUEST_SPECIAL_FLAGS_PLAYER_KILL);
|
||||
}
|
||||
|
||||
for (auto const& [questId, quest] : _questTemplates)
|
||||
{
|
||||
if (sDisableMgr->IsDisabledFor(DISABLE_TYPE_QUEST, questId, nullptr))
|
||||
continue;
|
||||
|
||||
uint32 breadcrumbForQuestId = quest->GetBreadcrumbForQuestId();
|
||||
if (!breadcrumbForQuestId)
|
||||
continue;
|
||||
|
||||
std::set<uint32> visitedQuests;
|
||||
visitedQuests.insert(questId);
|
||||
|
||||
while (breadcrumbForQuestId)
|
||||
{
|
||||
if (!visitedQuests.insert(breadcrumbForQuestId).second)
|
||||
{
|
||||
LOG_ERROR("sql.sql", "Breadcrumb quests {} and {} form a loop", questId, breadcrumbForQuestId);
|
||||
break;
|
||||
}
|
||||
|
||||
Quest const* targetQuest = GetQuestTemplate(breadcrumbForQuestId);
|
||||
if (!targetQuest)
|
||||
break;
|
||||
|
||||
breadcrumbForQuestId = targetQuest->GetBreadcrumbForQuestId();
|
||||
}
|
||||
}
|
||||
|
||||
// check QUEST_SPECIAL_FLAGS_EXPLORATION_OR_EVENT for spell with SPELL_EFFECT_QUEST_COMPLETE
|
||||
for (uint32 i = 0; i < sSpellMgr->GetSpellInfoStoreSize(); ++i)
|
||||
{
|
||||
|
||||
@@ -1146,6 +1146,18 @@ public:
|
||||
|
||||
ExclusiveQuestGroups mExclusiveQuestGroups;
|
||||
|
||||
typedef std::unordered_map<uint32, std::vector<uint32>> BreadcrumbQuestMap;
|
||||
BreadcrumbQuestMap _breadcrumbsForQuest;
|
||||
|
||||
[[nodiscard]] std::vector<uint32> const* GetBreadcrumbsForQuest(uint32 questId) const
|
||||
{
|
||||
auto itr = _breadcrumbsForQuest.find(questId);
|
||||
if (itr != _breadcrumbsForQuest.end())
|
||||
return &itr->second;
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
MailLevelReward const* GetMailLevelReward(uint32 level, uint32 raceMask)
|
||||
{
|
||||
MailLevelRewardContainer::const_iterator map_itr = _mailLevelRewardStore.find(level);
|
||||
|
||||
@@ -128,11 +128,11 @@ namespace Movement
|
||||
// MoveSplineFlag::Enter_Cycle support dropped
|
||||
//if (splineflags & SPLINEFLAG_ENTER_CYCLE)
|
||||
//cyclic_point = 1; // shouldn't be modified, came from client
|
||||
spline.init_cyclic_spline(&args.path[0], args.path.size(), modes[args.flags.isSmooth()], cyclic_point);
|
||||
spline.init_cyclic_spline(&args.path[0], args.path.size(), modes[args.flags.isSmooth()], cyclic_point, args.initialOrientation);
|
||||
}
|
||||
else
|
||||
{
|
||||
spline.init_spline(&args.path[0], args.path.size(), modes[args.flags.isSmooth()]);
|
||||
spline.init_spline(&args.path[0], args.path.size(), modes[args.flags.isSmooth()], args.initialOrientation);
|
||||
}
|
||||
|
||||
// init spline timestamps
|
||||
|
||||
@@ -199,18 +199,20 @@ namespace Movement
|
||||
return length;
|
||||
}
|
||||
|
||||
void SplineBase::init_spline(const Vector3* controls, index_type count, EvaluationMode m)
|
||||
void SplineBase::init_spline(const Vector3* controls, index_type count, EvaluationMode m, float orientation)
|
||||
{
|
||||
m_mode = m;
|
||||
cyclic = false;
|
||||
initialOrientation = orientation;
|
||||
|
||||
(this->*initializers[m_mode])(controls, count, cyclic, 0);
|
||||
}
|
||||
|
||||
void SplineBase::init_cyclic_spline(const Vector3* controls, index_type count, EvaluationMode m, index_type cyclic_point)
|
||||
void SplineBase::init_cyclic_spline(const Vector3* controls, index_type count, EvaluationMode m, index_type cyclic_point, float orientation)
|
||||
{
|
||||
m_mode = m;
|
||||
cyclic = true;
|
||||
initialOrientation = orientation;
|
||||
|
||||
(this->*initializers[m_mode])(controls, count, cyclic, cyclic_point);
|
||||
}
|
||||
@@ -253,14 +255,18 @@ namespace Movement
|
||||
if (cyclic_point == 0)
|
||||
points[0] = controls[count - 1];
|
||||
else
|
||||
points[0] = controls[0].lerp(controls[1], -1);
|
||||
points[0] = controls[0] - G3D::Vector3{ std::cos(initialOrientation), std::sin(initialOrientation), 0.0f };
|
||||
|
||||
points[high_index + 1] = controls[cyclic_point];
|
||||
points[high_index + 2] = controls[cyclic_point + 1];
|
||||
}
|
||||
else
|
||||
{
|
||||
points[0] = controls[0].lerp(controls[1], -1);
|
||||
if (m_mode == ModeCatmullrom)
|
||||
points[0] = controls[0] - G3D::Vector3{ std::cos(initialOrientation), std::sin(initialOrientation), 0.0f };
|
||||
else
|
||||
points[0] = controls[0].lerp(controls[1], -1);
|
||||
|
||||
points[high_index + 1] = controls[count - 1];
|
||||
}
|
||||
|
||||
|
||||
@@ -48,6 +48,7 @@ namespace Movement
|
||||
|
||||
uint8 m_mode{UninitializedMode};
|
||||
bool cyclic{false};
|
||||
float initialOrientation{0};
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -116,8 +117,8 @@ namespace Movement
|
||||
[[nodiscard]] const Vector3& getPoint(index_type i) const { return points[i];}
|
||||
|
||||
/** Initializes spline. Don't call other methods while spline not initialized. */
|
||||
void init_spline(const Vector3* controls, index_type count, EvaluationMode m);
|
||||
void init_cyclic_spline(const Vector3* controls, index_type count, EvaluationMode m, index_type cyclic_point);
|
||||
void init_spline(const Vector3* controls, index_type count, EvaluationMode m, float orientation);
|
||||
void init_cyclic_spline(const Vector3* controls, index_type count, EvaluationMode m, index_type cyclic_point, float orientation);
|
||||
|
||||
/** As i can see there are a lot of ways how spline can be initialized
|
||||
would be no harm to have some custom initializers. */
|
||||
@@ -170,8 +171,8 @@ namespace Movement
|
||||
void computeIndex(float t, index_type& out_idx, float& out_u) const;
|
||||
|
||||
/** Initializes spline. Don't call other methods while spline not initialized. */
|
||||
void init_spline(const Vector3* controls, index_type count, EvaluationMode m) { SplineBase::init_spline(controls, count, m);}
|
||||
void init_cyclic_spline(const Vector3* controls, index_type count, EvaluationMode m, index_type cyclic_point) { SplineBase::init_cyclic_spline(controls, count, m, cyclic_point);}
|
||||
void init_spline(const Vector3* controls, index_type count, EvaluationMode m, float orientation = 0) { SplineBase::init_spline(controls, count, m, orientation);}
|
||||
void init_cyclic_spline(const Vector3* controls, index_type count, EvaluationMode m, index_type cyclic_point, float orientation = 0) { SplineBase::init_cyclic_spline(controls, count, m, cyclic_point, orientation);}
|
||||
|
||||
/** Initializes lengths with SplineBase::SegLength method. */
|
||||
void initLengths();
|
||||
|
||||
@@ -177,17 +177,18 @@ void Quest::LoadQuestTemplateAddon(Field* fields)
|
||||
PrevQuestId = fields[4].Get<int32>();
|
||||
NextQuestId = fields[5].Get<uint32>();
|
||||
ExclusiveGroup = fields[6].Get<int32>();
|
||||
RewardMailTemplateId = fields[7].Get<uint32>();
|
||||
RewardMailDelay = fields[8].Get<uint32>();
|
||||
RequiredSkillId = fields[9].Get<uint16>();
|
||||
RequiredSkillPoints = fields[10].Get<uint16>();
|
||||
RequiredMinRepFaction = fields[11].Get<uint16>();
|
||||
RequiredMaxRepFaction = fields[12].Get<uint16>();
|
||||
RequiredMinRepValue = fields[13].Get<int32>();
|
||||
RequiredMaxRepValue = fields[14].Get<int32>();
|
||||
StartItemCount = fields[15].Get<uint8>();
|
||||
RewardMailSenderEntry = fields[16].Get<uint32>();
|
||||
SpecialFlags = fields[17].Get<uint32>();
|
||||
BreadcrumbForQuestId = fields[7].Get<uint32>();
|
||||
RewardMailTemplateId = fields[8].Get<uint32>();
|
||||
RewardMailDelay = fields[9].Get<uint32>();
|
||||
RequiredSkillId = fields[10].Get<uint16>();
|
||||
RequiredSkillPoints = fields[11].Get<uint16>();
|
||||
RequiredMinRepFaction = fields[12].Get<uint16>();
|
||||
RequiredMaxRepFaction = fields[13].Get<uint16>();
|
||||
RequiredMinRepValue = fields[14].Get<int32>();
|
||||
RequiredMaxRepValue = fields[15].Get<int32>();
|
||||
StartItemCount = fields[16].Get<uint8>();
|
||||
RewardMailSenderEntry = fields[17].Get<uint32>();
|
||||
SpecialFlags = fields[18].Get<uint32>();
|
||||
|
||||
if ((SpecialFlags & QUEST_SPECIAL_FLAGS_AUTO_ACCEPT) && !sWorld->getBoolConfig(CONFIG_QUEST_IGNORE_AUTO_ACCEPT))
|
||||
{
|
||||
|
||||
@@ -249,6 +249,7 @@ public:
|
||||
[[nodiscard]] int32 GetPrevQuestId() const { return PrevQuestId; }
|
||||
[[nodiscard]] uint32 GetNextQuestId() const { return NextQuestId; }
|
||||
[[nodiscard]] int32 GetExclusiveGroup() const { return ExclusiveGroup; }
|
||||
[[nodiscard]] uint32 GetBreadcrumbForQuestId() const { return BreadcrumbForQuestId; }
|
||||
[[nodiscard]] uint32 GetNextQuestInChain() const { return RewardNextQuest; }
|
||||
[[nodiscard]] uint32 GetCharTitleId() const { return RewardTitleId; }
|
||||
[[nodiscard]] uint32 GetPlayersSlain() const { return RequiredPlayerKills; }
|
||||
@@ -390,6 +391,7 @@ protected:
|
||||
int32 PrevQuestId = 0;
|
||||
uint32 NextQuestId = 0;
|
||||
int32 ExclusiveGroup = 0;
|
||||
uint32 BreadcrumbForQuestId = 0;
|
||||
uint32 RewardMailTemplateId = 0;
|
||||
uint32 RewardMailDelay = 0;
|
||||
uint32 RequiredSkillId = 0;
|
||||
|
||||
@@ -89,14 +89,16 @@ struct boss_priestess_delrissa : public BossAI
|
||||
void InitializeAI() override
|
||||
{
|
||||
ScriptedAI::InitializeAI();
|
||||
std::list<uint32> helpersList;
|
||||
for (uint8 i = 0; i < MAX_HELPERS_COUNT; ++i)
|
||||
helpersList.push_back(helpersEntries[i]);
|
||||
Acore::Containers::RandomResize(helpersList, MAX_ACTIVE_HELPERS);
|
||||
|
||||
uint8 j = 0;
|
||||
for (std::list<uint32>::const_iterator itr = helpersList.begin(); itr != helpersList.end(); ++itr, ++j)
|
||||
me->SummonCreature(*itr, helpersLocations[j], TEMPSUMMON_MANUAL_DESPAWN, 0);
|
||||
if (instance->GetBossState(DATA_DELRISSA) != DONE)
|
||||
{
|
||||
std::vector<uint32> helpersList(std::begin(helpersEntries), std::end(helpersEntries));
|
||||
Acore::Containers::RandomResize(helpersList, MAX_ACTIVE_HELPERS);
|
||||
|
||||
uint8 j = 0;
|
||||
for (uint32 entry : helpersList)
|
||||
me->SummonCreature(entry, helpersLocations[j++], TEMPSUMMON_MANUAL_DESPAWN, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summon) override
|
||||
|
||||
@@ -52,6 +52,11 @@ DoorData const doorData[] =
|
||||
{ 0, 0, DOOR_TYPE_ROOM } // END
|
||||
};
|
||||
|
||||
BossBoundaryData const boundaries =
|
||||
{
|
||||
{ DATA_KAELTHAS, new RectangleBoundary(118.64f, 178.63f, 125.69f, 210.70f) }
|
||||
};
|
||||
|
||||
Position const KalecgosSpawnPos = { 164.3747f, -397.1197f, 2.151798f, 1.66219f };
|
||||
|
||||
class instance_magisters_terrace : public InstanceMapScript
|
||||
@@ -65,6 +70,7 @@ public:
|
||||
{
|
||||
SetHeaders(DataHeader);
|
||||
SetBossNumber(MAX_ENCOUNTER);
|
||||
LoadBossBoundaries(boundaries);
|
||||
SetPersistentDataCount(MAX_PERSISTENT_DATA);
|
||||
LoadObjectData(creatureData, gameobjectData);
|
||||
LoadDoorData(doorData);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -46,7 +46,6 @@ enum NPCs
|
||||
NPC_HOVER_DISK = 30248,
|
||||
NPC_ARCANE_OVERLOAD = 30282,
|
||||
NPC_SURGE_OF_POWER = 30334,
|
||||
NPC_WYRMREST_SKYTALON = 30161,
|
||||
NPC_STATIC_FIELD = 30592,
|
||||
NPC_ALEXSTRASZA = 32295,
|
||||
};
|
||||
@@ -75,6 +74,8 @@ enum eSpells
|
||||
SPELL_HASTE = 57060,
|
||||
|
||||
SPELL_ALEXSTRASZA_GIFT = 61028,
|
||||
SPELL_SUMMON_RED_DRAGON_BUDDY = 56070,
|
||||
SPELL_RIDE_RED_DRAGON = 56072
|
||||
};
|
||||
|
||||
enum eAchiev
|
||||
@@ -104,20 +105,11 @@ const Position Phase2NorthPos = {837.22f, 1301.676f, 296.10f, M_PI};
|
||||
|
||||
const uint32 MalygosIntroIntervals[] = {18000, 19000, 21000, 18000, 15000};
|
||||
|
||||
class EoEDrakeEnterVehicleEvent : public BasicEvent
|
||||
{
|
||||
public:
|
||||
EoEDrakeEnterVehicleEvent(Creature& owner, ObjectGuid playerGUID) : _owner(owner), _playerGUID(playerGUID) { }
|
||||
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override;
|
||||
private:
|
||||
Creature& _owner;
|
||||
ObjectGuid _playerGUID;
|
||||
};
|
||||
|
||||
template <class AI, class T>
|
||||
inline AI* GetEyeOfEternityAI(T* obj)
|
||||
{
|
||||
return GetInstanceAI<AI>(obj, EyeOfEternityScriptName);
|
||||
}
|
||||
#define RegisterEoECreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetEyeOfEternityAI)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -21,18 +21,6 @@
|
||||
#include "Vehicle.h"
|
||||
#include "eye_of_eternity.h"
|
||||
|
||||
bool EoEDrakeEnterVehicleEvent::Execute(uint64 /*eventTime*/, uint32 /*updateTime*/)
|
||||
{
|
||||
if (Player* p = ObjectAccessor::GetPlayer(_owner, _playerGUID))
|
||||
if (p->IsInWorld() && !p->IsDuringRemoveFromWorld() && !p->isBeingLoaded() && p->FindMap() == _owner.FindMap())
|
||||
{
|
||||
p->CastCustomSpell(60683, SPELLVALUE_BASE_POINT0, 1, &_owner, true);
|
||||
return true;
|
||||
}
|
||||
_owner.DespawnOrUnsummon(1ms);
|
||||
return true;
|
||||
}
|
||||
|
||||
class instance_eye_of_eternity : public InstanceMapScript
|
||||
{
|
||||
public:
|
||||
@@ -68,7 +56,7 @@ public:
|
||||
return EncounterStatus == IN_PROGRESS;
|
||||
}
|
||||
|
||||
void OnPlayerEnter(Player* pPlayer) override
|
||||
void OnPlayerEnter(Player* player) override
|
||||
{
|
||||
if (EncounterStatus == DONE)
|
||||
{
|
||||
@@ -79,18 +67,12 @@ public:
|
||||
go->SetPhaseMask(2, true);
|
||||
|
||||
// no floor, so put players on drakes
|
||||
if (pPlayer)
|
||||
if (player)
|
||||
{
|
||||
if (!pPlayer->IsAlive())
|
||||
if (!player->IsAlive())
|
||||
return;
|
||||
|
||||
if (Creature* c = pPlayer->SummonCreature(NPC_WYRMREST_SKYTALON, pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ() - 20.0f, 0.0f, TEMPSUMMON_MANUAL_DESPAWN, 0))
|
||||
{
|
||||
c->SetCanFly(true);
|
||||
c->SetFaction(pPlayer->GetFaction());
|
||||
//pPlayer->CastCustomSpell(60683, SPELLVALUE_BASE_POINT0, 1, c, true);
|
||||
c->m_Events.AddEventAtOffset(new EoEDrakeEnterVehicleEvent(*c, pPlayer->GetGUID()), 500ms);
|
||||
}
|
||||
player->CastSpell(player, SPELL_SUMMON_RED_DRAGON_BUDDY, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -753,7 +753,6 @@ public:
|
||||
if (cr)
|
||||
{
|
||||
cr->AI()->AttackStart(me);
|
||||
cr->AddThreat(me, 0.0f);
|
||||
cr->SetInCombatWithZone();
|
||||
}
|
||||
}
|
||||
@@ -911,6 +910,28 @@ void brann_bronzebeard::brann_bronzebeardAI::WaypointReached(uint32 id)
|
||||
}
|
||||
}
|
||||
|
||||
// 51774 - Taunt
|
||||
class spell_taunt_brann : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_taunt_brann);
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
Unit* target = GetHitUnit();
|
||||
if (!caster || !target)
|
||||
return;
|
||||
|
||||
uint32 spellId = GetEffectValue(); // 51775
|
||||
target->CastSpell(caster, spellId, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_taunt_brann::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_hos_dark_matter : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_hos_dark_matter);
|
||||
@@ -953,4 +974,5 @@ void AddSC_brann_bronzebeard()
|
||||
new brann_bronzebeard();
|
||||
RegisterSpellScript(spell_hos_dark_matter);
|
||||
RegisterSpellScript(spell_hos_dark_matter_size);
|
||||
RegisterSpellScript(spell_taunt_brann);
|
||||
}
|
||||
|
||||
@@ -558,8 +558,10 @@ public:
|
||||
{
|
||||
uint32 dist = urand(38, 48);
|
||||
float o = rand_norm() * M_PI * 2;
|
||||
float Zplus = (dist - 38) / 6.5f;
|
||||
if (Creature* cr = me->SummonCreature(entry, me->GetPositionX() + dist * cos(o), me->GetPositionY() + dist * std::sin(o), 327.2 + Zplus, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000))
|
||||
float spawnX = me->GetPositionX() + dist * cos(o);
|
||||
float spawnY = me->GetPositionY() + dist * std::sin(o);
|
||||
float spawnZ = me->GetMap()->GetHeight(me->GetPhaseMask(), spawnX, spawnY, 330.0f);
|
||||
if (Creature* cr = me->SummonCreature(entry, spawnX, spawnY, spawnZ, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000))
|
||||
{
|
||||
cr->CastSpell(cr, SPELL_TENTACLE_ERUPT, true);
|
||||
cr->CastSpell(cr, SPELL_VOID_ZONE_SMALL, true);
|
||||
|
||||
@@ -1472,6 +1472,11 @@ public:
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY1H);
|
||||
_events.ScheduleEvent(EVENT_THASSARIAN_SCRIPT_1, 2s);
|
||||
}
|
||||
else if (type == POINT_MOTION_TYPE && param == 0)
|
||||
{
|
||||
if (Creature* talbot = ObjectAccessor::GetCreature(*me, _talbotGUID))
|
||||
me->SetFacingToObject(talbot);
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1804,6 +1809,7 @@ public:
|
||||
{
|
||||
if (action == 0)
|
||||
{
|
||||
me->setActive(true);
|
||||
_playerGUID = player->GetGUID();
|
||||
CloseGossipMenuFor(player);
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
|
||||
@@ -291,10 +291,29 @@ class spell_tsh_shoot_flame_arrow : public SpellScript
|
||||
|
||||
unitList.remove_if([&](WorldObject* target) -> bool
|
||||
{
|
||||
return !target->SelectNearestPlayer(15.0f);
|
||||
if (!target)
|
||||
return true;
|
||||
|
||||
if (!target->SelectNearestPlayer(15.0f))
|
||||
return true;
|
||||
|
||||
if (target->FindNearestGameObject(GO_BLAZE, 6.0f))
|
||||
return true;
|
||||
|
||||
// Don't stack arrows on the same target
|
||||
if (InstanceScript* instance = caster->GetInstanceScript())
|
||||
if (target->GetGUID() == instance->GetGuidData(DATA_LAST_FLAME_ARROW))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
Acore::Containers::RandomResize(unitList, 1);
|
||||
|
||||
// Replace last arrow GUID
|
||||
if (!unitList.empty())
|
||||
if (InstanceScript* instance = caster->GetInstanceScript())
|
||||
instance->SetGuidData(DATA_LAST_FLAME_ARROW, unitList.front()->GetGUID());
|
||||
}
|
||||
|
||||
void HandleScriptEffect(SpellEffIndex effIndex)
|
||||
|
||||
+15
@@ -117,11 +117,25 @@ public:
|
||||
return PrisonerGUID[data - DATA_PRISONER_1];
|
||||
case DATA_EXECUTIONER:
|
||||
return ExecutionerGUID;
|
||||
case DATA_LAST_FLAME_ARROW:
|
||||
return LastArrowGUID;
|
||||
}
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
void SetGuidData(uint32 data, ObjectGuid value) override
|
||||
{
|
||||
switch (data)
|
||||
{
|
||||
case DATA_LAST_FLAME_ARROW:
|
||||
LastArrowGUID = value;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Update(uint32 diff) override
|
||||
{
|
||||
if (RescueTimer && RescueTimer < 100 * MINUTE * IN_MILLISECONDS)
|
||||
@@ -164,6 +178,7 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
ObjectGuid LastArrowGUID;
|
||||
ObjectGuid ExecutionerGUID;
|
||||
ObjectGuid PrisonerGUID[3];
|
||||
uint32 RescueTimer;
|
||||
|
||||
@@ -37,7 +37,8 @@ enum DataTypes
|
||||
DATA_EXECUTIONER = 14,
|
||||
DATA_OMROGG_LEFT_HEAD = 15,
|
||||
DATA_OMROGG_RIGHT_HEAD = 16,
|
||||
DATA_WARCHIEF_PORTAL = 17
|
||||
DATA_WARCHIEF_PORTAL = 17,
|
||||
DATA_LAST_FLAME_ARROW = 18
|
||||
};
|
||||
|
||||
enum CreatureIds
|
||||
@@ -49,6 +50,7 @@ enum CreatureIds
|
||||
NPC_SH_ZEALOT = 17462,
|
||||
NPC_SH_ARCHER = 17427,
|
||||
NPC_SH_SCOUT = 17693,
|
||||
NPC_SH_FLAME_ARROW = 17687,
|
||||
|
||||
// Warchief Kargath
|
||||
NPC_WARCHIEF_KARGATH = 16808,
|
||||
@@ -76,7 +78,8 @@ enum CreatureIds
|
||||
enum GameobjectIds
|
||||
{
|
||||
GO_GRAND_WARLOCK_CHAMBER_DOOR_1 = 182539,
|
||||
GO_GRAND_WARLOCK_CHAMBER_DOOR_2 = 182540
|
||||
GO_GRAND_WARLOCK_CHAMBER_DOOR_2 = 182540,
|
||||
GO_BLAZE = 181915
|
||||
};
|
||||
|
||||
enum SpellIds
|
||||
|
||||
@@ -146,25 +146,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class spell_the_eye_countercharge_aura : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_the_eye_countercharge_aura);
|
||||
|
||||
bool PrepareProc(ProcEventInfo& /*eventInfo*/)
|
||||
{
|
||||
// xinef: prevent charge drop
|
||||
PreventDefaultAction();
|
||||
return true;
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
DoCheckProc += AuraCheckProcFn(spell_the_eye_countercharge_aura::PrepareProc);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_instance_the_eye()
|
||||
{
|
||||
new instance_the_eye();
|
||||
RegisterSpellScript(spell_the_eye_countercharge_aura);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user