Merge branch 'master' into Playerbot

# Conflicts:
#	src/server/game/World/IWorld.h
#	src/server/game/World/World.h
This commit is contained in:
郑佩茹
2023-03-01 11:52:02 -07:00
85 changed files with 3717 additions and 1220 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "azerothcore-wotlk",
"version": "7.0.0-dev.0",
"version": "7.0.0-dev.1",
"license": "AGPL3"
}
@@ -0,0 +1,12 @@
-- DB update 2023_01_31_00 -> 2023_02_20_00
--
DROP TABLE IF EXISTS `motd`;
CREATE TABLE `motd` (
`realmid` INT NOT NULL,
`text` LONGTEXT NULL DEFAULT NULL,
PRIMARY KEY (`realmid`)
) ENGINE=InnoDB;
DELETE FROM `motd` WHERE `realmid`=1;
INSERT INTO `motd` (`realmid`, `text`) VALUES
(-1, 'Welcome to an AzerothCore server.');
+184
View File
@@ -0,0 +1,184 @@
-- DB update 2023_02_17_11 -> 2023_02_17_12
-- Ambassador Jerrikar
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18695);
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
(18695, 0, 0, 0, 0, 0, 100, 0, 3000, 6000, 10000, 15000, 0, 11, 38926, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Ambassador Jerrikar - In Combat - Cast \'Dark Strike\''),
(18695, 0, 1, 0, 0, 0, 100, 0, 8000, 16000, 18000, 24000, 0, 11, 38916, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ambassador Jerrikar - In Combat - Cast \'Diplomatic Immunity\''),
(18695, 0, 2, 0, 0, 0, 100, 0, 9000, 12000, 14000, 19000, 0, 11, 38913, 0, 0, 0, 0, 0, 5, 20, 0, 0, 0, 0, 0, 0, 0, 'Ambassador Jerrikar - In Combat - Cast \'Silence\'');
-- Kraator
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18696);
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
(18696, 0, 0, 0, 0, 0, 100, 0, 10000, 20000, 20000, 25000, 0, 11, 39293, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Kraator - In Combat - Cast \'Conflagration\''),
(18696, 0, 1, 0, 0, 0, 100, 512, 15000, 15000, 15000, 30000, 0, 11, 24670, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Kraator - In Combat - Cast \'Inferno\'');
SET @CGUID := 24965;
DELETE FROM `creature` WHERE `id1` IN (18695, 18696);
INSERT INTO `creature` (`guid`, `id1`, `map`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`, `wander_distance`) VALUES
-- Ambassador Jerrikar
(@CGUID+0, 18695, 530, 1, -4075.71, 2580.33, 135.002, 1.76514, 86400, 2, 0),
(@CGUID+1, 18695, 530, 1, -4465.49, 1741.74, 159.227, 5.19891, 100800, 2, 0),
(@CGUID+2, 18695, 530, 1, -4169.96, 516.327, 26.1044, 3.79743, 108000, 2, 0),
(@CGUID+3, 18695, 530, 1, -3361.35, 1196.06, 62.5299, 4.75752, 115200, 2, 0),
(@CGUID+4, 18695, 530, 1, -3028.02, 1581.67, 64.2494, 2.03534, 122400, 2, 0),
-- Kraator
(@CGUID+5, 18696, 530, 0, -4428.79, 1879.54, 159.279, 3.89207, 86400, 2, 0),
(@CGUID+6, 18696, 530, 0, -3751.22, 902.85, 71.8097, 0.152557, 93600, 1, 15),
(@CGUID+7, 18696, 530, 0, -2397.45, 1727.58, -0.901711, 3.14493, 100800, 1, 15),
(@CGUID+8, 18696, 530, 0, -3434.12, 1966.03, 73.1387, 4.16987, 115200, 1, 15);
DELETE FROM `creature_addon` WHERE (`guid` IN (@CGUID+0,@CGUID+1,@CGUID+2,@CGUID+3,@CGUID+4,@CGUID+5));
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(@CGUID+0, (@CGUID+0)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+1, (@CGUID+1)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+2, (@CGUID+2)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+3, (@CGUID+3)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+4, (@CGUID+4)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+5, (@CGUID+5)*10, 0, 0, 0, 0, 0, '');
DELETE FROM `waypoint_data` WHERE `id` IN ((@CGUID+0)*10,(@CGUID+1)*10,(@CGUID+2)*10,(@CGUID+3)*10,(@CGUID+4)*10,(@CGUID+5)*10);
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES
-- Ambassador Jerrikar
((@CGUID+0)*10, 1, -4075.71, 2580.33, 135.002),
((@CGUID+0)*10, 2, -4057.45, 2580.98, 129.419),
((@CGUID+0)*10, 3, -4016.42, 2603.85, 114.945),
((@CGUID+0)*10, 4, -3971.13, 2618.28, 105.677),
((@CGUID+0)*10, 5, -3931.96, 2620.31, 103.518),
((@CGUID+0)*10, 6, -3891.68, 2609.75, 94.2714),
((@CGUID+0)*10, 7, -3861.79, 2588.95, 92.7909),
((@CGUID+0)*10, 8, -3811.96, 2593.8, 90.239),
((@CGUID+0)*10, 9, -3798.66, 2606.71, 90.3513),
((@CGUID+0)*10, 10, -3795.06, 2630.71, 92.2314),
((@CGUID+0)*10, 11, -3795.33, 2657.06, 101.73),
((@CGUID+0)*10, 12, -3779.87, 2668.97, 101.232),
((@CGUID+0)*10, 13, -3693.65, 2668.37, 107.487),
((@CGUID+1)*10, 1, -4465.49, 1741.74, 159.227),
((@CGUID+1)*10, 2, -4468.25, 1715.11, 159.499),
((@CGUID+1)*10, 3, -4473.41, 1702.46, 160.759),
((@CGUID+1)*10, 4, -4473.76, 1681.35, 162.28),
((@CGUID+1)*10, 5, -4497.81, 1677.15, 165.846),
((@CGUID+1)*10, 6, -4526.19, 1678.13, 175.257),
((@CGUID+1)*10, 7, -4548.16, 1678.87, 174.776),
((@CGUID+1)*10, 8, -4560.57, 1696.35, 174.429),
((@CGUID+1)*10, 9, -4534.67, 1715.35, 174.333),
((@CGUID+1)*10, 10, -4540.7, 1722.39, 174.364),
((@CGUID+1)*10, 11, -4570.23, 1673.95, 174.765),
((@CGUID+1)*10, 12, -4556.09, 1634.04, 174.413),
((@CGUID+1)*10, 13, -4549.2, 1662.49, 174.447),
((@CGUID+1)*10, 14, -4524.23, 1673.72, 175.252),
((@CGUID+1)*10, 15, -4498.8, 1671.21, 165.909),
((@CGUID+1)*10, 16, -4474.22, 1655.08, 162.994),
((@CGUID+1)*10, 17, -4460.39, 1606.96, 163.121),
((@CGUID+1)*10, 18, -4448.64, 1583.59, 164.034),
((@CGUID+1)*10, 19, -4411.11, 1580.13, 163.702),
((@CGUID+1)*10, 20, -4392.48, 1591.57, 163.285),
((@CGUID+1)*10, 21, -4368.67, 1635.85, 156.371),
((@CGUID+1)*10, 22, -4367.68, 1675.5, 157.308),
((@CGUID+1)*10, 23, -4388.41, 1705.66, 156.436),
((@CGUID+1)*10, 24, -4423.9, 1722.95, 157.067),
((@CGUID+2)*10, 1, -4169.96, 516.327, 26.1044),
((@CGUID+2)*10, 2, -4177.71, 515.877, 25.2113),
((@CGUID+2)*10, 3, -4181.79, 505.748, 27.8272),
((@CGUID+2)*10, 4, -4182.5, 492.379, 29.1442),
((@CGUID+2)*10, 5, -4195.37, 482.944, 29.7653),
((@CGUID+2)*10, 6, -4216.87, 482.478, 33.6687),
((@CGUID+2)*10, 7, -4229.05, 471.532, 40.1721),
((@CGUID+2)*10, 8, -4230.16, 457.913, 45.8716),
((@CGUID+2)*10, 9, -4217.24, 441.858, 47.4628),
((@CGUID+2)*10, 10, -4223.83, 424.661, 49.881),
((@CGUID+2)*10, 11, -4253.25, 378.726, 77.7883),
((@CGUID+2)*10, 12, -4268.08, 376.821, 79.3743),
((@CGUID+2)*10, 13, -4287.69, 350.027, 101.469),
((@CGUID+2)*10, 14, -4299.35, 330.594, 110.523),
((@CGUID+2)*10, 15, -4297.03, 309.694, 118.697),
((@CGUID+2)*10, 16, -4292.15, 296.065, 121.796),
((@CGUID+2)*10, 17, -4238.48, 271.237, 122.493),
((@CGUID+2)*10, 18, -4221.39, 274.691, 122.37),
((@CGUID+2)*10, 19, -4215.31, 280.698, 122.542),
((@CGUID+2)*10, 20, -4210.35, 293.733, 122.793),
((@CGUID+2)*10, 21, -4207.68, 312.923, 123.018),
((@CGUID+2)*10, 22, -4195.38, 321.624, 122.314),
((@CGUID+2)*10, 23, -4196.27, 331.13, 119.068),
((@CGUID+2)*10, 24, -4228.72, 322.865, 122.659),
((@CGUID+3)*10, 1, -3361.35, 1196.06, 62.5307),
((@CGUID+3)*10, 2, -3365.38, 1173.51, 59.1371),
((@CGUID+3)*10, 3, -3373.31, 1147.16, 53.9433),
((@CGUID+3)*10, 4, -3372.94, 1129.12, 49.5635),
((@CGUID+3)*10, 5, -3377.21, 1118.26, 48.4891),
((@CGUID+3)*10, 6, -3367.83, 1077.38, 45.7798),
((@CGUID+3)*10, 7, -3342.6, 1054.95, 45.4535),
((@CGUID+3)*10, 8, -3342.39, 1043.87, 43.4964),
((@CGUID+3)*10, 9, -3357.42, 1034.57, 41.0994),
((@CGUID+3)*10, 10, -3365.29, 1017.92, 33.716),
((@CGUID+3)*10, 11, -3358.28, 986.865, 28.8074),
((@CGUID+3)*10, 12, -3343.54, 975.584, 30.8439),
((@CGUID+3)*10, 13, -3331.61, 970.294, 29.6034),
((@CGUID+3)*10, 14, -3315.27, 966.89, 32.3896),
((@CGUID+3)*10, 15, -3302.97, 967.504, 34.9652),
((@CGUID+3)*10, 16, -3291.19, 975.843, 38.2663),
((@CGUID+3)*10, 17, -3278.5, 991.971, 42.9526),
((@CGUID+3)*10, 18, -3276.74, 1007.7, 47.4324),
((@CGUID+3)*10, 19, -3273.8, 1018.81, 48.3504),
((@CGUID+3)*10, 20, -3247.58, 1044.13, 54.8317),
((@CGUID+3)*10, 21, -3282, 1113.23, 55.3277),
((@CGUID+3)*10, 22, -3281.22, 1143.76, 54.9456),
((@CGUID+3)*10, 23, -3304.47, 1170.87, 57.3955),
((@CGUID+3)*10, 24, -3329.39, 1161.3, 57.2152),
((@CGUID+3)*10, 25, -3343.26, 1173.6, 59.9309),
((@CGUID+3)*10, 26, -3345.25, 1178.61, 60.6426),
((@CGUID+4)*10, 1, -3028.02, 1581.67, 64.2494),
((@CGUID+4)*10, 2, -3028.36, 1586.81, 64.194),
((@CGUID+4)*10, 3, -3028.46, 1596.54, 59.418),
((@CGUID+4)*10, 4, -3064.63, 1628.56, 60.3787),
((@CGUID+4)*10, 5, -3054.28, 1645.89, 64.0629),
((@CGUID+4)*10, 6, -3059.14, 1668.62, 67.1315),
((@CGUID+4)*10, 7, -3097.5, 1706.17, 68.492),
((@CGUID+4)*10, 8, -3082.57, 1740.85, 72.1624),
((@CGUID+4)*10, 9, -3059.49, 1742.78, 75.1391),
((@CGUID+4)*10, 10, -3046.86, 1752.01, 75.399),
((@CGUID+4)*10, 11, -3023.05, 1733.12, 75.1709),
((@CGUID+4)*10, 12, -3001.55, 1739.61, 75.5879),
((@CGUID+4)*10, 13, -2997.25, 1722.5, 74.1977),
((@CGUID+4)*10, 14, -2994.86, 1702.15, 71.6494),
((@CGUID+4)*10, 15, -2967.53, 1666.31, 66.9312),
((@CGUID+4)*10, 16, -2950.68, 1643.32, 57.4303),
((@CGUID+4)*10, 17, -2975.16, 1615.84, 54.3787),
((@CGUID+4)*10, 18, -2979.98, 1606.67, 55.4944),
((@CGUID+4)*10, 19, -3003.71, 1605.77, 58.9754),
((@CGUID+4)*10, 20, -3028.1, 1596.8, 59.3902),
((@CGUID+4)*10, 21, -3027.81, 1585.9, 64.2028),
-- Kraator
((@CGUID+5)*10, 1, -4394.72, 1864.71, 157.072),
((@CGUID+5)*10, 2, -4461.79, 1886.59, 160.185),
((@CGUID+5)*10, 3, -4483.14, 1923.24, 147.075),
((@CGUID+5)*10, 4, -4482.07, 1945.44, 137.237),
((@CGUID+5)*10, 5, -4466.53, 1966.46, 122.571),
((@CGUID+5)*10, 6, -4450.53, 1991.66, 104.083),
((@CGUID+5)*10, 7, -4469.15, 1990.33, 111.189),
((@CGUID+5)*10, 8, -4468.9, 1970.66, 121.295),
((@CGUID+5)*10, 9, -4486.36, 1927.62, 146.364),
((@CGUID+5)*10, 10, -4450.83, 1884.11, 160.943);
-- Pooling
DELETE FROM `pool_template` WHERE `entry`=1074 AND `description` LIKE '%Ambassador Jerrikar%';
DELETE FROM `pool_template` WHERE `entry`=1116 AND `description`='Kraator (18696)';
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
(1074, 1, 'Ambassador Jerrikar (18695)'),
(1116, 1, 'Kraator (18696)');
DELETE FROM `pool_creature` WHERE `pool_entry`=1074 AND `description` LIKE '%Ambassador Jerrikar%';
DELETE FROM `pool_creature` WHERE `pool_entry`=1116 AND `description`='Kraator (18696)';
INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES
(@CGUID+0, 1074, 0, 'Ambassador Jerrikar (18695)'),
(@CGUID+1, 1074, 0, 'Ambassador Jerrikar (18695)'),
(@CGUID+2, 1074, 0, 'Ambassador Jerrikar (18695)'),
(@CGUID+3, 1074, 0, 'Ambassador Jerrikar (18695)'),
(@CGUID+4, 1074, 0, 'Ambassador Jerrikar (18695)'),
(@CGUID+5, 1116, 0, 'Kraator (18696)'),
(@CGUID+6, 1116, 0, 'Kraator (18696)'),
(@CGUID+7, 1116, 0, 'Kraator (18696)'),
(@CGUID+8, 1116, 0, 'Kraator (18696)');
-- Remove DISABLE_MOVE from Ambassador Jerrikar
UPDATE `creature_template` SET `unit_flags`=`unit_flags`&~4 WHERE (`entry` = 18695);
@@ -0,0 +1,50 @@
-- DB update 2023_02_17_12 -> 2023_02_18_00
--
DELETE FROM `smart_scripts` WHERE `entryorguid`=18956 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`, `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
(18956, 0, 0, 2, 62, 0, 100, 1, 7868, 0, 0, 0, 0, 80, 1895600, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Gossip Option 0 Selected - Run Script (No Repeat)'),
(18956, 0, 1, 0, 40, 0, 100, 0, 9, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Waypoint 9 Reached - Despawn (0)'),
(18956, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Link - Close Gossip');
DELETE FROM `smart_scripts` WHERE `entryorguid`=1895600 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`, `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
(1895600, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 33, 18956, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Script - Quest Credit \'Brother Against Brother\''),
(1895600, 9, 1, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Script - Say Line 0'),
(1895600, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Script - Remove NPC Flag Gossip'),
(1895600, 9, 3, 0, 0, 0, 100, 0, 1500, 1500, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 20, 183051, 5, 0, 0, 0, 0, 0, 0, 'Lakka - On Script - Activate Closest Gameobject \'Sethekk Cage\''),
(1895600, 9, 4, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 0, 53, 0, 1895600, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Lakka - On Script - Start Waypoint');
DELETE FROM `waypoints` WHERE `entry`=1895600 AND `point_comment`='Lakka';
INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `point_comment`) VALUES
(1895600, 1, -156.811, 159.9, 0.552411, NULL, 0, 'Lakka'),
(1895600, 2, -152.811, 162.15, 0.552411, NULL, 0, 'Lakka'),
(1895600, 3, -148.561, 163.65, 0.552411, NULL, 0, 'Lakka'),
(1895600, 4, -141.811, 164.9, 0.552411, NULL, 0, 'Lakka'),
(1895600, 5, -136.061, 167.4, 0.552411, NULL, 0, 'Lakka'),
(1895600, 6, -129.811, 171.4, 0.552411, NULL, 0, 'Lakka'),
(1895600, 7, -118.061, 173.9, 0.552411, NULL, 0, 'Lakka'),
(1895600, 8, -99.0612, 173.4, 0.302411, NULL, 0, 'Lakka'),
(1895600, 9, -79.8091, 172.757, 0.010726, NULL, 0, 'Lakka');
DELETE FROM `gossip_menu` WHERE `MenuID`=7868;
INSERT INTO `gossip_menu` (`MenuID`, `TextID`) VALUES
(7868, 9635),
(7868, 9636);
DELETE FROM `gossip_menu_option` WHERE `MenuID`=7868;
INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`) VALUES
(7868, 0, 0, 'I\'ll have you out of there in just a moment.', 16054, 1, 1, 0, 0, 0, 0, '', 0);
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14, 15) AND `SourceGroup`=7868;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(14, 7868, 9635, 0, 0, 29, 1, 18472, 20, 0, 0, 0, 0, '', 'Gossip text requires boss Darkweaver Sith NOT defeated'),
(14, 7868, 9636, 0, 0, 29, 1, 18472, 20, 1, 0, 0, 0, '', 'Gossip text requires boss Darkweaver Sith defeated'),
(15, 7868, 0, 0, 0, 29, 1, 18472, 20, 1, 0, 0, 0, '', 'Gossip option requires boss Darkweaver Sith defeated');
DELETE FROM `npc_text` WHERE `ID`=9635;
INSERT INTO `npc_text` (`ID`, `text0_0`) VALUES
(9635,'Please, $r, get me out of here! Unlocking the cage will surely attract my brother\'s attention. Kill Darkweaver Syth!');
DELETE FROM `gameobject_template_addon` WHERE `entry`=183051;
INSERT INTO `gameobject_template_addon` VALUES
(183051,112,32,0,0,0,0,0,0);
+118
View File
@@ -0,0 +1,118 @@
-- DB update 2023_02_18_00 -> 2023_02_18_01
--
DELETE from `creature` where `guid`=77831 AND `id1`=22060;
INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES
(77831, 22060, 0, 0, 530, 0, 0, 1, 1, 1, -2024.52, -10786.1, 81.9137, 0.664982, 3600, 0, 0, 0, 0, 2, 0, 0, 0, '', 0);
UPDATE `creature_template_addon` SET `bytes1` = 0 WHERE (`entry` = 22060);
-- Pathing for Entry: 22060
SET @NPC := 77831;
SET @CPATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-1970.9095,`position_y`=-10545.881,`position_z`=176.9451 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@CPATH,0,0,1,0,0, '34189');
DELETE FROM `waypoint_data` WHERE `id`=@CPATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@CPATH,1,-1970.9095,-10545.881,176.9451,0,0,0,0,100,0),
(@CPATH,2,-1940.0586,-10560.943,177.81454,0,0,0,0,100,0),
(@CPATH,3,-1946.3624,-10587.011,172.94002,0,0,0,0,100,0),
(@CPATH,4,-1961.7201,-10607.221,165.48112,0,0,0,0,100,0),
(@CPATH,5,-1988.8058,-10612.373,162.95183,0,0,0,0,100,0),
(@CPATH,6,-2013.801,-10602.308,154.4991,0,0,0,0,100,0),
(@CPATH,7,-2038.0187,-10619.16,146.1079,0,0,0,0,100,0),
(@CPATH,8,-2037.1124,-10638.802,140.50319,0,0,0,0,100,0),
(@CPATH,9,-2012.5981,-10662.126,122.97834,0,0,0,0,100,0),
(@CPATH,10,-1976.1384,-10684.696,112.91368,0,0,0,0,100,0),
(@CPATH,11,-1947.3251,-10695.539,110.90299,0,0,0,0,100,0),
(@CPATH,12,-1908.1012,-10710.498,111.27751,0,0,0,0,100,0),
(@CPATH,13,-1875.1051,-10702.744,111.70239,0,0,0,0,100,0),
(@CPATH,14,-1855.2137,-10689.97,112.97398,0,0,0,0,100,0),
(@CPATH,15,-1824.9171,-10668.398,136.08665,0,0,0,0,100,0),
(@CPATH,16,-1819.2031,-10647.129,144.38739,0,0,0,0,100,0),
(@CPATH,17,-1812.0326,-10612.489,148.245,0,0,0,0,100,0),
(@CPATH,18,-1833.3806,-10588.412,157.1347,0,0,0,0,100,0),
(@CPATH,19,-1867.1841,-10566.302,174.33784,0,0,0,0,100,0),
(@CPATH,20,-1877.4294,-10545.098,177.00142,0,1200,0,0,100,0),
(@CPATH,21,-1867.1841,-10566.302,174.33784,0,0,0,0,100,0),
(@CPATH,22,-1833.3806,-10588.412,157.1347,0,0,0,0,100,0),
(@CPATH,23,-1812.0326,-10612.489,148.245,0,0,0,0,100,0),
(@CPATH,24,-1819.2179,-10647.147,144.46405,0,0,0,0,100,0),
(@CPATH,25,-1824.9171,-10668.398,136.08665,0,0,0,0,100,0),
(@CPATH,26,-1855.2137,-10689.97,112.97398,0,0,0,0,100,0),
(@CPATH,27,-1875.1051,-10702.744,111.70239,0,0,0,0,100,0),
(@CPATH,28,-1908.1012,-10710.498,111.27751,0,0,0,0,100,0),
(@CPATH,29,-1947.3251,-10695.539,110.90299,0,0,0,0,100,0),
(@CPATH,30,-1976.1384,-10684.696,112.91368,0,0,0,0,100,0),
(@CPATH,31,-2012.5981,-10662.126,122.97834,0,0,0,0,100,0),
(@CPATH,32,-2037.1124,-10638.802,140.50319,0,0,0,0,100,0),
(@CPATH,33,-2038.0187,-10619.16,146.1079,0,0,0,0,100,0),
(@CPATH,34,-2013.801,-10602.308,154.4991,0,0,0,0,100,0),
(@CPATH,35,-1988.8058,-10612.373,162.95183,0,0,0,0,100,0),
(@CPATH,36,-1961.7201,-10607.221,165.48112,0,0,0,0,100,0),
(@CPATH,37,-1946.3624,-10587.011,172.94002,0,0,0,0,100,0),
(@CPATH,38,-1940.0586,-10560.943,177.81454,0,0,0,0,100,0);
-- 0x204CB04240158B0000003E0000187A4E .go xyz -1970.9095 -10545.881 176.9451
-- Pathing for Entry: 22060
SET @NPC := 77280;
SET @CPATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2062.9329,`position_y`=-10801.382,`position_z`=69.16798 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@CPATH,0,0,1,0,0, '34189');
DELETE FROM `waypoint_data` WHERE `id`=@CPATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@CPATH,1,-2062.9329,-10801.382,69.16798,0,0,0,0,100,0),
(@CPATH,2,-2032.4478,-10792.326,79.548546,0,0,0,0,100,0),
(@CPATH,3,-2011.9824,-10776.279,85.89645,0,0,0,0,100,0),
(@CPATH,4,-1988.4141,-10782.808,89.01292,0,0,0,0,100,0),
(@CPATH,5,-1956.8325,-10795.888,88.076256,0,0,0,0,100,0),
(@CPATH,6,-1941.5137,-10813.049,83.2548,0,0,0,0,100,0),
(@CPATH,7,-1942.2377,-10845.413,71.92745,0,0,0,0,100,0),
(@CPATH,8,-1928.1111,-10873.158,65.57274,0,0,0,0,100,0),
(@CPATH,9,-1907.5723,-10881.021,64.005844,0,0,0,0,100,0),
(@CPATH,10,-1882.5653,-10890.086,67.090805,0,0,0,0,100,0),
(@CPATH,11,-1869.1376,-10890.733,66.91844,0,0,0,0,100,0),
(@CPATH,12,-1863.5938,-10877.981,66.82205,0,0,0,0,100,0),
(@CPATH,13,-1857.8864,-10870.527,66.82205,0,0,0,0,100,0),
(@CPATH,14,-1864.6426,-10848.86,66.77268,0,1200,0,0,100,0),
(@CPATH,15,-1857.8864,-10870.527,66.82205,0,0,0,0,100,0),
(@CPATH,16,-1863.5938,-10877.981,66.82205,0,0,0,0,100,0),
(@CPATH,17,-1869.1376,-10890.733,66.91844,0,0,0,0,100,0),
(@CPATH,18,-1882.5653,-10890.086,67.090805,0,0,0,0,100,0),
(@CPATH,19,-1907.4796,-10881.057,64.12523,0,0,0,0,100,0),
(@CPATH,20,-1928.1111,-10873.158,65.57274,0,0,0,0,100,0),
(@CPATH,21,-1941.4618,-10813.143,83.373695,0,0,0,0,100,0),
(@CPATH,22,-1956.7793,-10795.982,88.01302,0,0,0,0,100,0),
(@CPATH,23,-1988.4141,-10782.808,89.01292,0,0,0,0,100,0),
(@CPATH,24,-2011.9735,-10776.271,85.738,0,0,0,0,100,0),
(@CPATH,25,-2032.4478,-10792.326,79.548546,0,0,0,0,100,0),
(@CPATH,26,-2062.9329,-10801.382,69.16798,0,0,0,0,100,0),
(@CPATH,27,-2090.1667,-10768.454,68.06485,0,1200,0,0,100,0);
-- 0x204CB04240158B0000003E00001879BC .go xyz -2062.9329 -10801.382 69.16798
-- Pathing for Entry: 22060 Cryo Core
SET @NPC := 77281;
SET @CPATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2070.419,`position_y`=-11257.795,`position_z`=68.73054 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@CPATH,0,0,1,0,0, '34189');
DELETE FROM `waypoint_data` WHERE `id`=@CPATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@CPATH,1,-2070.419,-11257.795,68.73054,0,0,0,0,100,0),
(@CPATH,2,-2103.6235,-11253.354,67.19258,0,0,0,0,100,0),
(@CPATH,3,-2134.2869,-11264.738,67.698784,0,0,0,0,100,0),
(@CPATH,4,-2140.428,-11280.03,65.155426,0,0,0,0,100,0),
(@CPATH,5,-2138.178,-11312.154,62.253426,0,0,0,0,100,0),
(@CPATH,6,-2136.1165,-11343.568,62.17387,0,0,0,0,100,0),
(@CPATH,7,-2126.4175,-11372.446,64.164536,0,0,0,0,100,0),
(@CPATH,8,-2098.3645,-11381.112,63.737923,0,0,0,0,100,0),
(@CPATH,9,-2076.6472,-11386.729,63.017952,0,0,0,0,100,0),
(@CPATH,10,-2055.42,-11392.572,61.29661,0,0,0,0,100,0),
(@CPATH,11,-2030.3889,-11375.75,63.414944,0,0,0,0,100,0),
(@CPATH,12,-2022.589,-11355.197,64.74541,0,0,0,0,100,0),
(@CPATH,13,-2019.8142,-11323.221,65.71863,0,0,0,0,100,0),
(@CPATH,14,-2031.3025,-11303.861,67.92053,0,0,0,0,100,0),
(@CPATH,15,-2026.8136,-11290.435,69.10076,0,0,0,0,100,0),
(@CPATH,16,-2026.6367,-11276.236,68.70916,0,0,0,0,100,0),
(@CPATH,17,-2042.9447,-11261.928,68.52818,0,0,0,0,100,0);
+329
View File
@@ -0,0 +1,329 @@
-- DB update 2023_02_18_01 -> 2023_02_18_02
-- Chief Engineer Lorthander
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18697);
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
(18697, 0, 0, 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, 'Chief Engineer Lorthander - Between 0-15% Health - Flee For Assist (No Repeat)'),
(18697, 0, 1, 0, 0, 0, 100, 0, 8000, 14000, 12000, 15000, 0, 11, 38898, 64, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Chief Engineer Lorthander - In Combat - Cast \'Arcane Unlocking\''),
(18697, 0, 2, 0, 0, 0, 100, 0, 15000, 21000, 15000, 21000, 0, 11, 36843, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Chief Engineer Lorthander - In Combat - Cast \'Slow\''),
(18697, 0, 3, 0, 0, 0, 100, 0, 0, 0, 3400, 4800, 0, 11, 38204, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Chief Engineer Lorthander - In Combat - Cast \'Arcane Bolt\'');
-- Ever-Core comments
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 18698) AND (`source_type` = 0) AND (`id` IN (1, 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`, `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
(18698, 0, 1, 0, 0, 0, 100, 0, 4000, 8000, 18000, 22000, 0, 11, 35892, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ever-Core the Punisher - In Combat - Cast \'Suppression\''),
(18698, 0, 2, 0, 9, 0, 100, 0, 0, 8, 19000, 23000, 0, 11, 33860, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Ever-Core the Punisher - Within 0-8 Range - Cast \'Arcane Explosion\'');
-- Nuramoc
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 20932);
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
(20932, 0, 0, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 11, 38905, 64, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Nuramoc - On Aggro - Cast \'Prismatic Shield\''),
(20932, 0, 1, 0, 0, 0, 100, 0, 2000, 3000, 4000, 7000, 0, 11, 21971, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Nuramoc - In Combat - Cast \'Poison Bolt\''),
(20932, 0, 2, 0, 0, 0, 100, 0, 0, 0, 2000, 5000, 0, 11, 15797, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Nuramoc - In Combat - Cast \'Lightning Breath\'');
-- Spawns
SET @CGUID := 24935;
DELETE FROM `creature` WHERE `id1` IN (18697, 18698, 20932);
INSERT INTO `creature` (`guid`, `id1`, `map`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`) VALUES
-- Chief Engineer Lorthander
(@CGUID+0, 18697, 530, 1, 4081.08, 4001.03, 119.01, 4.57457, 75600, 2),
(@CGUID+1, 18697, 530, 1, 2412.86, 2894.41, 131.323, 3.35328, 93600, 2),
(@CGUID+2, 18697, 530, 1, 3000.46, 2187.57, 164.398, 5.2995, 115200, 2),
-- Ever-Core
(@CGUID+3, 18698, 530, 0, 4029.03, 4134.35, 191.496, 4.54011, 86400, 2),
(@CGUID+4, 18698, 530, 0, 2943.06, 4351.28, 142.359, 0.000215, 104400, 2),
(@CGUID+5, 18698, 530, 0, 3706.06, 2078.25, 151.867, 1.03066, 115200, 2),
-- Nuramoc
(@CGUID+6, 20932, 530, 0, 3280.81, 1907.83, 133.229, 1.89858, 28800, 2),
(@CGUID+7, 20932, 530, 0, 2817.23, 2929.54, 130.138, 2.32736, 39600, 2),
(@CGUID+8, 20932, 530, 0, 4788.54, 3503.49, 119.851, 3.12453, 50400, 2);
DELETE FROM `creature_addon` WHERE (`guid` IN (@CGUID+0,@CGUID+1,@CGUID+2,@CGUID+3,@CGUID+4,@CGUID+5,@CGUID+6,@CGUID+7,@CGUID+8,86860));
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(@CGUID+0, (@CGUID+0)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+1, (@CGUID+1)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+2, (@CGUID+2)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+3, (@CGUID+3)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+4, (@CGUID+4)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+5, (@CGUID+5)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+6, (@CGUID+6)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+7, (@CGUID+7)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+8, (@CGUID+8)*10, 0, 0, 1, 0, 0, '');
DELETE FROM `waypoint_data` WHERE `id` IN ((@CGUID+0)*10,(@CGUID+1)*10,(@CGUID+2)*10,(@CGUID+3)*10,(@CGUID+4)*10,(@CGUID+5)*10,(@CGUID+6)*10,(@CGUID+7)*10,(@CGUID+8)*10,868600);
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES
-- Chief Engineer Lorthander
((@CGUID+0)*10, 1, 4081.08, 4001.03, 119.01),
((@CGUID+0)*10, 2, 4087.54, 4006.7, 117.744),
((@CGUID+0)*10, 3, 4097.75, 4003.55, 116.437),
((@CGUID+0)*10, 4, 4107.33, 3987.76, 118.036),
((@CGUID+0)*10, 5, 4074.27, 3980.02, 118.22),
((@CGUID+0)*10, 6, 4079.4, 3988.14, 118.289),
((@CGUID+1)*10, 1, 2412.86, 2894.41, 131.323),
((@CGUID+1)*10, 2, 2435.58, 2900.06, 130.183),
((@CGUID+1)*10, 3, 2463.95, 2909.32, 128.59),
((@CGUID+1)*10, 4, 2477.04, 2917.6, 128.541),
((@CGUID+1)*10, 5, 2484.46, 2904.05, 130.643),
((@CGUID+1)*10, 6, 2488, 2892.2, 132.342),
((@CGUID+1)*10, 7, 2484.72, 2881.2, 133.059),
((@CGUID+1)*10, 8, 2450.92, 2852.48, 131.622),
((@CGUID+1)*10, 9, 2424.88, 2797.83, 134.493),
((@CGUID+1)*10, 10, 2426.77, 2750.39, 133.243),
((@CGUID+1)*10, 11, 2426.77, 2750.39, 133.243),
((@CGUID+1)*10, 12, 2368, 2673.64, 132.39),
((@CGUID+1)*10, 13, 2443.76, 2745.36, 134.493),
((@CGUID+1)*10, 14, 2423.25, 2797.12, 134.491),
((@CGUID+1)*10, 15, 2448.63, 2849.79, 132.632),
((@CGUID+1)*10, 16, 2486.16, 2882.9, 133.075),
((@CGUID+1)*10, 17, 2484.64, 2905.67, 130.354),
((@CGUID+1)*10, 18, 2489.72, 2915.52, 128.954),
((@CGUID+1)*10, 19, 2476.47, 2917.2, 128.513),
((@CGUID+1)*10, 20, 2447.81, 2900.57, 129.188),
((@CGUID+2)*10, 1, 3000.46, 2187.57, 164.398),
((@CGUID+2)*10, 2, 3018.52, 2186.65, 165.329),
((@CGUID+2)*10, 3, 3076.56, 2210.99, 160.886),
((@CGUID+2)*10, 4, 3103.56, 2222.24, 155.355),
((@CGUID+2)*10, 5, 3124.82, 2243.5, 150.057),
((@CGUID+2)*10, 6, 3117.8, 2253.66, 149.953),
((@CGUID+2)*10, 7, 3096.61, 2268.98, 150.102),
((@CGUID+2)*10, 8, 3083.4, 2290.85, 150.485),
((@CGUID+2)*10, 9, 3054.61, 2284.5, 151.691),
((@CGUID+2)*10, 10, 3021.72, 2284.59, 158.405),
((@CGUID+2)*10, 11, 3009.22, 2292.73, 161.266),
((@CGUID+2)*10, 12, 2983.65, 2288.22, 161.706),
((@CGUID+2)*10, 13, 2956.54, 2284.38, 161.727),
((@CGUID+2)*10, 14, 2941.33, 2263.89, 161.708),
((@CGUID+2)*10, 15, 2966.96, 2206.15, 165.329),
-- Ever-Core
((@CGUID+3)*10, 1, 4029.03, 4134.35, 191.496),
((@CGUID+3)*10, 2, 4021.06, 4144.61, 191.502),
((@CGUID+3)*10, 3, 4007.77, 4151.29, 191.586),
((@CGUID+3)*10, 4, 3991.62, 4152.59, 191.401),
((@CGUID+3)*10, 5, 3966.21, 4145.5, 191.295),
((@CGUID+3)*10, 6, 3937.03, 4122.04, 192.695),
((@CGUID+3)*10, 7, 3924.13, 4093.4, 191.789),
((@CGUID+3)*10, 8, 3911.34, 4060.71, 187.287),
((@CGUID+3)*10, 9, 3880.16, 4036.23, 183.365),
((@CGUID+3)*10, 10, 3879.16, 4023.95, 183.11),
((@CGUID+3)*10, 11, 3890.49, 4005.85, 183.428),
((@CGUID+3)*10, 12, 3874, 3968.38, 183.774),
((@CGUID+3)*10, 13, 3873.48, 3953.19, 182.426),
((@CGUID+3)*10, 14, 3884.47, 3936.53, 179.405),
((@CGUID+3)*10, 15, 3915.08, 3918.04, 176.204),
((@CGUID+3)*10, 16, 3952.32, 3889.77, 174.977),
((@CGUID+3)*10, 17, 3965.74, 3872.72, 171.607),
((@CGUID+3)*10, 18, 3972.39, 3852.88, 166.197),
((@CGUID+3)*10, 19, 3969.66, 3840.88, 162.264),
((@CGUID+3)*10, 20, 3961.25, 3833.68, 158.329),
((@CGUID+3)*10, 21, 3908.53, 3834.6, 129.743),
((@CGUID+3)*10, 22, 3898.06, 3828.14, 123.788),
((@CGUID+3)*10, 23, 3898.27, 3787.49, 118.457),
((@CGUID+3)*10, 24, 3881.31, 3790.1, 116.619),
((@CGUID+3)*10, 25, 3865.28, 3804.66, 111.946),
((@CGUID+3)*10, 26, 3853.11, 3824.74, 106.821),
((@CGUID+3)*10, 27, 3847.02, 3830.68, 105.424),
((@CGUID+3)*10, 28, 3830.93, 3836.43, 103.431),
((@CGUID+3)*10, 29, 3817.24, 3851.85, 103.623),
((@CGUID+3)*10, 30, 3807.24, 3877.86, 105.557),
((@CGUID+3)*10, 31, 3792.14, 3888.13, 106.755),
((@CGUID+3)*10, 32, 3790.1, 3912.19, 109.532),
((@CGUID+3)*10, 33, 3798.19, 3938.67, 112.965),
((@CGUID+3)*10, 34, 3789.57, 3968.79, 114.346),
((@CGUID+3)*10, 35, 3790.27, 3993.03, 116.942),
((@CGUID+3)*10, 36, 3801.81, 4011.81, 121.598),
((@CGUID+4)*10, 1, 2943.06, 4351.28, 142.359),
((@CGUID+4)*10, 2, 2976.56, 4326.1, 146.657),
((@CGUID+4)*10, 3, 2984.38, 4318.63, 140.43),
((@CGUID+4)*10, 4, 3003.09, 4297.83, 144.609),
((@CGUID+4)*10, 5, 2997.3, 4273.92, 155.499),
((@CGUID+4)*10, 6, 2992.4, 4259.44, 159.899),
((@CGUID+4)*10, 7, 3011.36, 4227.12, 160.779),
((@CGUID+4)*10, 8, 3014.4, 4166.68, 159.855),
((@CGUID+4)*10, 9, 3022.76, 4153.83, 152.368),
((@CGUID+4)*10, 10, 3020.22, 4124.82, 150.603),
((@CGUID+4)*10, 11, 3010.89, 4107.9, 151.056),
((@CGUID+4)*10, 12, 3002.58, 4075.26, 150.101),
((@CGUID+4)*10, 13, 2986.18, 4047.61, 149.975),
((@CGUID+4)*10, 14, 2977.22, 4041.37, 149.782),
((@CGUID+4)*10, 15, 2967.34, 4049.68, 152.343),
((@CGUID+4)*10, 16, 2950.84, 4040.8, 153.404),
((@CGUID+4)*10, 17, 2910.14, 4011.95, 149.729),
((@CGUID+4)*10, 18, 2903.81, 3989.59, 148.75),
((@CGUID+4)*10, 19, 2888.34, 3972.1, 142.151),
((@CGUID+4)*10, 20, 2863.86, 3981.41, 141.777),
((@CGUID+4)*10, 21, 2836.9, 4004.29, 142.699),
((@CGUID+4)*10, 22, 2781.39, 3991.13, 144.969),
((@CGUID+4)*10, 23, 2758.93, 3999.78, 143.672),
((@CGUID+4)*10, 24, 2709.58, 4046.75, 150.37),
((@CGUID+4)*10, 25, 2650.82, 4095.06, 154.381),
((@CGUID+4)*10, 26, 2643.3, 4149.94, 158.604),
((@CGUID+4)*10, 27, 2636.57, 4196.3, 155.13),
((@CGUID+4)*10, 28, 2660.27, 4236.62, 154.33),
((@CGUID+4)*10, 29, 2669.6, 4252.5, 154.308),
((@CGUID+4)*10, 30, 2720.43, 4272.12, 153.934),
((@CGUID+4)*10, 31, 2742.16, 4288.13, 152.346),
((@CGUID+4)*10, 32, 2800.91, 4303.42, 151.593),
((@CGUID+4)*10, 33, 2830.31, 4316.65, 148.175),
((@CGUID+4)*10, 34, 2859.57, 4281.49, 158.539),
((@CGUID+4)*10, 35, 2870.11, 4280.62, 159.52),
((@CGUID+4)*10, 36, 2904.21, 4279.1, 156.87),
((@CGUID+4)*10, 37, 2931.21, 4314.67, 145.769),
((@CGUID+4)*10, 38, 2936.37, 4335.05, 147.717),
((@CGUID+4)*10, 39, 2935.57, 4348.43, 142.903),
((@CGUID+4)*10, 40, 2943.06, 4351.28, 142.359),
((@CGUID+5)*10, 1, 3706.06, 2078.25, 151.867),
((@CGUID+5)*10, 2, 3726.17, 2118.53, 149.248),
((@CGUID+5)*10, 3, 3753.52, 2168.87, 140.165),
((@CGUID+5)*10, 4, 3775.75, 2208.89, 144.852),
((@CGUID+5)*10, 5, 3780.36, 2229.51, 148.832),
((@CGUID+5)*10, 6, 3787.88, 2241.95, 149.93),
((@CGUID+5)*10, 7, 3805.08, 2254.19, 147.519),
((@CGUID+5)*10, 8, 3817.69, 2273.88, 148.95),
((@CGUID+5)*10, 9, 3855.16, 2269.88, 152.406),
((@CGUID+5)*10, 10, 3882.21, 2283.25, 154.278),
((@CGUID+5)*10, 11, 3916.8, 2277.97, 156.756),
((@CGUID+5)*10, 12, 3945.83, 2280.16, 159.016),
((@CGUID+5)*10, 13, 3994.1, 2271.92, 162.937),
((@CGUID+5)*10, 14, 4012.48, 2250.07, 163.409),
((@CGUID+5)*10, 15, 4052.18, 2235.04, 163.544),
((@CGUID+5)*10, 16, 4068.36, 2220.2, 164.592),
((@CGUID+5)*10, 17, 4079.98, 2202.1, 163.79),
((@CGUID+5)*10, 18, 4097.22, 2184.98, 160.829),
((@CGUID+5)*10, 19, 4103.19, 2154.2, 159.513),
((@CGUID+5)*10, 20, 4112.25, 2148.36, 158.521),
((@CGUID+5)*10, 21, 4143.31, 2141.96, 156.943),
((@CGUID+5)*10, 22, 4167.26, 2149.15, 157.128),
((@CGUID+5)*10, 23, 4200.38, 2173.98, 151.071),
((@CGUID+5)*10, 24, 4233.12, 2141.78, 147.754),
((@CGUID+5)*10, 25, 4244.52, 2118.75, 145.07),
((@CGUID+5)*10, 26, 4247.28, 2078.07, 143.644),
((@CGUID+5)*10, 27, 4263.61, 2039.35, 137.724),
((@CGUID+5)*10, 28, 4262.84, 2019.98, 134.967),
((@CGUID+5)*10, 29, 4256.09, 2007.07, 130.557),
((@CGUID+5)*10, 30, 4250.27, 1995.93, 135.552),
((@CGUID+5)*10, 31, 4250.13, 1967.99, 137.595),
((@CGUID+5)*10, 32, 4265.63, 1935, 137.639),
((@CGUID+5)*10, 33, 4266.21, 1898.98, 138.695),
((@CGUID+5)*10, 34, 4259, 1877.24, 140.059),
((@CGUID+5)*10, 35, 4223.69, 1842.53, 142.999),
((@CGUID+5)*10, 36, 4215.04, 1824.57, 141.276),
((@CGUID+5)*10, 37, 4207.37, 1795.16, 137.364),
((@CGUID+5)*10, 38, 4187.92, 1757.34, 130.795),
((@CGUID+5)*10, 39, 4151.56, 1755.07, 132.442),
((@CGUID+5)*10, 40, 4136.05, 1751.07, 133.77),
((@CGUID+5)*10, 41, 4124.27, 1755.99, 136.623),
((@CGUID+5)*10, 42, 4069.32, 1753.11, 144.431),
((@CGUID+5)*10, 43, 4039.85, 1741.67, 145.595),
((@CGUID+5)*10, 44, 3967.11, 1700.39, 145.255),
((@CGUID+5)*10, 45, 3943.89, 1684.72, 140.837),
((@CGUID+5)*10, 46, 3889.03, 1685.44, 138.774),
((@CGUID+5)*10, 47, 3849.84, 1667.25, 138.58),
((@CGUID+5)*10, 48, 3834.11, 1671.52, 140.663),
((@CGUID+5)*10, 49, 3813.53, 1684.09, 145.686),
((@CGUID+5)*10, 50, 3800.66, 1696.89, 151.409),
((@CGUID+5)*10, 51, 3788.9, 1727.14, 167.273),
((@CGUID+5)*10, 52, 3796.24, 1751.33, 177.772),
((@CGUID+5)*10, 53, 3775.68, 1766.3, 170.866),
((@CGUID+5)*10, 54, 3759.51, 1784.82, 163.141),
((@CGUID+5)*10, 55, 3679.22, 1853.57, 126.875),
((@CGUID+5)*10, 56, 3660.26, 1896.73, 120.891),
((@CGUID+5)*10, 57, 3662.77, 1912.97, 117.708),
((@CGUID+5)*10, 58, 3674.79, 1927.2, 115.677),
((@CGUID+5)*10, 59, 3677.09, 1977.38, 120.129),
((@CGUID+5)*10, 60, 3702.1, 2003.87, 128.244),
((@CGUID+5)*10, 61, 3701.96, 2031.67, 133.85),
((@CGUID+5)*10, 62, 3721.18, 2044.33, 142.94),
((@CGUID+5)*10, 63, 3724.31, 2061.48, 146.105),
-- Nuramoc
((@CGUID+6)*10, 1, 3250.51, 1961.25, 132.385),
((@CGUID+6)*10, 2, 3228.29, 2001.11, 138.882),
((@CGUID+6)*10, 3, 3235.93, 2084.18, 135.385),
((@CGUID+6)*10, 4, 3239.06, 2128.28, 137.825),
((@CGUID+6)*10, 5, 3207.12, 2151.5, 136.752),
((@CGUID+6)*10, 6, 3213.69, 2229.01, 138.009),
((@CGUID+6)*10, 7, 3231.47, 2305.03, 124.795),
((@CGUID+6)*10, 8, 3231.7, 2393.11, 103.663),
((@CGUID+6)*10, 9, 3269.73, 2434.75, 74.4029),
((@CGUID+6)*10, 10, 3332.71, 2467.68, 85.8992),
((@CGUID+6)*10, 11, 3384.93, 2532.03, 110.799),
((@CGUID+6)*10, 12, 3438.84, 2578.09, 142.708),
((@CGUID+6)*10, 13, 3342.11, 2593.94, 188.744),
((@CGUID+6)*10, 14, 3214.78, 2476.76, 98.5975),
((@CGUID+6)*10, 15, 3258.1, 2439.65, 112.365),
((@CGUID+6)*10, 16, 3305.8, 2397.5, 135.329),
((@CGUID+6)*10, 17, 3379.15, 2306.53, 96.941),
((@CGUID+6)*10, 18, 3302.31, 2171.94, 123.625),
((@CGUID+6)*10, 19, 3274.61, 2098.45, 115.694),
((@CGUID+6)*10, 20, 3180.44, 1989.87, 164.138),
((@CGUID+6)*10, 21, 3160.3, 1887, 152.491),
((@CGUID+6)*10, 22, 3152.02, 1758.62, 160.324),
((@CGUID+6)*10, 23, 3155.54, 1702.77, 140.429),
((@CGUID+6)*10, 24, 3255.68, 1751.95, 124.196),
((@CGUID+6)*10, 25, 3290.94, 1785.01, 139.078),
((@CGUID+6)*10, 26, 3301.79, 1853.55, 131.618),
((@CGUID+6)*10, 27, 3283.64, 1905.23, 124.957),
((@CGUID+6)*10, 28, 3280.69, 1911.33, 120.78),
((@CGUID+7)*10, 1, 2817.23, 2929.54, 122.393),
((@CGUID+7)*10, 2, 2730.13, 3012.53, 128.227),
((@CGUID+7)*10, 3, 2675.16, 3059.62, 128.247),
((@CGUID+7)*10, 4, 2645.27, 3091.27, 134.927),
((@CGUID+7)*10, 5, 2624.72, 3174.52, 141.912),
((@CGUID+7)*10, 6, 2596.74, 3254.45, 140.111),
((@CGUID+7)*10, 7, 2552.73, 3278.38, 127.29),
((@CGUID+7)*10, 8, 2510.04, 3311.72, 120.465),
((@CGUID+7)*10, 9, 2465.47, 3374.43, 123.69),
((@CGUID+7)*10, 10, 2499.48, 3465.25, 129.593),
((@CGUID+7)*10, 11, 2509.5, 3562.82, 131.936),
((@CGUID+7)*10, 12, 2486.69, 3644.09, 124.994),
((@CGUID+7)*10, 13, 2483.76, 3717.01, 126.238),
((@CGUID+7)*10, 14, 2452.58, 3773.66, 119.516),
((@CGUID+7)*10, 15, 2449.44, 3869.47, 118.01),
((@CGUID+7)*10, 16, 2441.61, 3954.58, 121.328),
((@CGUID+7)*10, 17, 2416.61, 4001.19, 115.294),
((@CGUID+7)*10, 18, 2434.59, 4063.79, 126.034),
((@CGUID+7)*10, 19, 2500.28, 4197.05, 136.513),
((@CGUID+8)*10, 1, 4788.54, 3503.49, 121.951),
((@CGUID+8)*10, 2, 4706.67, 3520.02, 136.092),
((@CGUID+8)*10, 3, 4637.13, 3533.71, 144.088),
((@CGUID+8)*10, 4, 4573.97, 3523.54, 145.267),
((@CGUID+8)*10, 5, 4513.13, 3569.78, 144.028),
((@CGUID+8)*10, 6, 4426.59, 3569.69, 159.578),
((@CGUID+8)*10, 7, 4352.02, 3594.6, 149.207),
((@CGUID+8)*10, 8, 4265.53, 3590.13, 166.896),
((@CGUID+8)*10, 9, 4201.69, 3563.6, 156.539),
((@CGUID+8)*10, 10, 4265.53, 3590.13, 166.896),
((@CGUID+8)*10, 11, 4352.02, 3594.6, 149.207),
((@CGUID+8)*10, 12, 4426.59, 3569.69, 159.578),
((@CGUID+8)*10, 13, 4513.13, 3569.78, 144.028),
((@CGUID+8)*10, 14, 4573.97, 3523.54, 145.267),
((@CGUID+8)*10, 15, 4637.13, 3533.71, 144.088),
((@CGUID+8)*10, 16, 4706.67, 3520.02, 136.092),
((@CGUID+8)*10, 17, 4788.54, 3503.49, 121.951);
-- Pooling
DELETE FROM `pool_template` WHERE `entry`=1075; -- Description for this one is wrongly attributed to Okrek
DELETE FROM `pool_template` WHERE `entry`=1078 AND `description` LIKE '%Ever-Core%';
DELETE FROM `pool_template` WHERE `entry`=1115 AND `description`='Nuramoc (20932)';
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
(1075, 1, 'Chief Engineer Lorthander (18697)'),
(1078, 1, 'Ever-Core the Punisher (18698)'),
(1115, 1, 'Nuramoc (20932)');
DELETE FROM `pool_creature` WHERE `pool_entry`=1075 AND `description` LIKE '%Lorthander%';
DELETE FROM `pool_creature` WHERE `pool_entry`=1078 AND `description` LIKE '%Ever-Core%';
DELETE FROM `pool_creature` WHERE `pool_entry`=1115 AND `description`='Nuramoc (20932)';
INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES
(@CGUID+0, 1075, 0, 'Chief Engineer Lorthander (18697)'),
(@CGUID+1, 1075, 0, 'Chief Engineer Lorthander (18697)'),
(@CGUID+2, 1075, 0, 'Chief Engineer Lorthander (18697)'),
(@CGUID+3, 1078, 0, 'Ever-Core the Punisher (18698)'),
(@CGUID+4, 1078, 0, 'Ever-Core the Punisher (18698)'),
(@CGUID+5, 1078, 0, 'Ever-Core the Punisher (18698)'),
(@CGUID+6, 1115, 0, 'Nuramoc (20932)'),
(@CGUID+7, 1115, 0, 'Nuramoc (20932)'),
(@CGUID+8, 1115, 0, 'Nuramoc (20932)');
-- Nuramoc
DELETE FROM `creature_template_movement` WHERE (`CreatureId` = 20932);
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES
(20932, 1, 0, 1, 0, 0, 0, 0);
+298
View File
@@ -0,0 +1,298 @@
-- DB update 2023_02_18_02 -> 2023_02_18_03
-- Okrek
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18685);
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
(18685, 0, 0, 0, 9, 0, 100, 0, 0, 40, 3400, 4800, 0, 11, 14034, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Okrek - Within 0-40 Range - Cast \'Fireball\''),
(18685, 0, 1, 0, 0, 0, 100, 0, 6000, 8000, 6000, 10000, 0, 11, 12471, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Okrek - In Combat - Cast \'Shadow Bolt\''),
(18685, 0, 2, 0, 9, 0, 100, 0, 0, 10, 8500, 18000, 0, 11, 32711, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Okrek - Within 0-10 Range - Cast \'Shadow Nova\''),
(18685, 0, 3, 0, 23, 0, 100, 0, 13787, 0, 15000, 30000, 0, 11, 13787, 32, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Okrek - On Missing Aura \'Demon Armor\' - Cast \'Demon Armor\'');
-- Doomsayer Jurim
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18686);
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
(18686, 0, 0, 0, 0, 0, 100, 0, 14000, 19000, 19000, 25000, 0, 11, 39212, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Doomsayer Jurim - In Combat - Cast \'Corruption\''),
(18686, 0, 1, 0, 0, 0, 100, 0, 9000, 14000, 11000, 16000, 0, 11, 38401, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Doomsayer Jurim - In Combat - Cast \'Incinerate\''),
(18686, 0, 2, 0, 0, 0, 100, 0, 8000, 14000, 15000, 21000, 0, 11, 39210, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Doomsayer Jurim - In Combat - Cast \'Fear\''),
(18686, 0, 3, 0, 0, 0, 100, 0, 3000, 8000, 5000, 11000, 0, 11, 12493, 32, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Doomsayer Jurim - In Combat - Cast \'Curse of Weakness\''),
(18686, 0, 4, 0, 9, 0, 100, 0, 0, 40, 3400, 4800, 0, 11, 12471, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Doomsayer Jurim - Within 0-40 Range - Cast \'Shadow Bolt\'');
-- The Crippler AI
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18689);
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
(18689, 0, 0, 0, 0, 0, 100, 0, 3000, 5000, 11000, 15000, 0, 11, 39214, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Crippler - In Combat - Cast \'Pierce Armor\''),
(18689, 0, 1, 0, 0, 0, 100, 0, 8000, 12000, 13000, 18000, 0, 11, 38621, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Crippler - In Combat - Cast \'Debilitating Strike\''),
(18689, 0, 2, 0, 2, 0, 100, 1, 0, 50, 0, 0, 0, 11, 38882, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Crippler - Between 0-50% Health - Cast \'Bone Armor\' (No Repeat)');
SET @CGUID := 25087;
DELETE FROM `creature` WHERE `id1` IN (18685, 18686);
INSERT INTO `creature` (`guid`, `id1`, `map`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`) VALUES
(@CGUID+0, 18685, 530, 1, -1633.09, 4416.39, 52.1155, 5.98654, 79200, 2),
(@CGUID+1, 18685, 530, 1, -2564.99, 5437.01, 28.0524, 3.10727, 93600, 2),
(@CGUID+2, 18685, 530, 1, -1843.55, 3958.17, 46.5491, 4.04581, 100800, 2),
(@CGUID+3, 18685, 530, 1, -3551.84, 3999.6, 93.7046, 5.20977, 115200, 2),
(@CGUID+4, 18686, 530, 0, -2847.33, 3195.11, 7.4167, 0.091094, 21600, 2),
(@CGUID+5, 18686, 530, 0, -1842.53, 4231.02, 20.9801, 2.23252, 21600, 2),
(@CGUID+6, 18686, 530, 0, -2595.42, 5118.68, 6.63357, 6.27732, 21600, 2);
DELETE FROM `creature_addon` WHERE (`guid` IN (@CGUID+0,@CGUID+1,@CGUID+2,@CGUID+3,@CGUID+4,@CGUID+5,@CGUID+6,40470));
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(@CGUID+0, (@CGUID+0)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+1, (@CGUID+1)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+2, (@CGUID+2)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+3, (@CGUID+3)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+4, (@CGUID+4)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+5, (@CGUID+5)*10, 0, 0, 1, 0, 0, ''),
(@CGUID+6, (@CGUID+6)*10, 0, 0, 1, 0, 0, '');
DELETE FROM `waypoint_data` WHERE `id` IN ((@CGUID+0)*10,(@CGUID+1)*10,(@CGUID+2)*10,(@CGUID+3)*10,(@CGUID+4)*10,(@CGUID+5)*10,(@CGUID+6)*10,404700);
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES
((@CGUID+0)*10, 1, -1633.09, 4416.39, 52.0432),
((@CGUID+0)*10, 2, -1618.41, 4410.16, 52.5576),
((@CGUID+0)*10, 3, -1606.43, 4420.26, 52.6329),
((@CGUID+0)*10, 4, -1611.34, 4435.12, 52.6265),
((@CGUID+0)*10, 5, -1624.94, 4436.8, 52.6168),
((@CGUID+0)*10, 6, -1633.09, 4416.39, 52.0432),
((@CGUID+1)*10, 1, -2564.99, 5437.01, 27.482),
((@CGUID+1)*10, 2, -2567.62, 5447.4, 27.2306),
((@CGUID+1)*10, 3, -2580.16, 5451.42, 27.2254),
((@CGUID+1)*10, 4, -2591.11, 5437.56, 27.2367),
((@CGUID+1)*10, 5, -2579.75, 5426.12, 26.9373),
((@CGUID+1)*10, 6, -2570.32, 5424.22, 26.635),
((@CGUID+1)*10, 7, -2552.85, 5407.97, 20.0038),
((@CGUID+1)*10, 8, -2535.35, 5390.59, 27.2097),
((@CGUID+1)*10, 9, -2535.96, 5370.64, 27.2342),
((@CGUID+1)*10, 10, -2515.76, 5363.92, 27.2173),
((@CGUID+1)*10, 11, -2515.27, 5379.05, 28.0072),
((@CGUID+2)*10, 1, -1843.55, 3958.17, 46.5491),
((@CGUID+2)*10, 2, -1849.11, 3959.83, 46.5567),
((@CGUID+2)*10, 3, -1856.92, 3952.97, 46.4926),
((@CGUID+2)*10, 4, -1856.12, 3938.67, 46.05),
((@CGUID+2)*10, 5, -1853.1, 3924.98, 45.3693),
((@CGUID+2)*10, 6, -1862.49, 3908.7, 39.1752),
((@CGUID+2)*10, 7, -1879.08, 3879.85, 45.4519),
((@CGUID+2)*10, 8, -1903.73, 3870.84, 45.3793),
((@CGUID+2)*10, 9, -1910.33, 3850.94, 45.4441),
((@CGUID+2)*10, 10, -1887.31, 3837.38, 45.4393),
((@CGUID+2)*10, 11, -1871.41, 3847.16, 45.4412),
((@CGUID+2)*10, 12, -1871.2, 3867.79, 45.4431),
((@CGUID+2)*10, 13, -1880.9, 3877.3, 45.4447),
((@CGUID+2)*10, 14, -1868.93, 3897.99, 39.0142),
((@CGUID+2)*10, 15, -1853.37, 3923.24, 45.3162),
((@CGUID+2)*10, 16, -1826.5, 3934.92, 46.5561),
((@CGUID+2)*10, 17, -1829.69, 3958.36, 46.5588),
((@CGUID+2)*10, 18, -1836.99, 3960.91, 46.5588),
((@CGUID+3)*10, 1, -3551.84, 3999.6, 93.7046),
((@CGUID+3)*10, 2, -3563.29, 4001.41, 91.8348),
((@CGUID+3)*10, 3, -3590.03, 4006.42, 75.3029),
((@CGUID+3)*10, 4, -3555.16, 4040.98, 69.5859),
((@CGUID+3)*10, 5, -3512.02, 4051.49, 60.9738),
((@CGUID+3)*10, 6, -3499.84, 4050.19, 59.424),
((@CGUID+3)*10, 7, -3482.48, 4033.23, 59.8893),
((@CGUID+3)*10, 8, -3461.45, 4028.88, 59.1618),
((@CGUID+3)*10, 9, -3428.89, 4011.93, 62.2547),
((@CGUID+3)*10, 10, -3386.09, 4008.06, 58.385),
((@CGUID+3)*10, 11, -3363.25, 4002.11, 58.7623),
((@CGUID+3)*10, 12, -3386.09, 4008.06, 58.385),
((@CGUID+3)*10, 13, -3428.89, 4011.93, 62.2547),
((@CGUID+3)*10, 14, -3461.45, 4028.88, 59.1618),
((@CGUID+3)*10, 15, -3482.48, 4033.23, 59.8893),
((@CGUID+3)*10, 16, -3499.84, 4050.19, 59.424),
((@CGUID+3)*10, 17, -3512.02, 4051.49, 60.9738),
((@CGUID+3)*10, 18, -3555.16, 4040.98, 69.5859),
((@CGUID+3)*10, 19, -3590.03, 4006.42, 75.3029),
((@CGUID+3)*10, 20, -3563.29, 4001.41, 91.8348),
((@CGUID+4)*10, 1, -2843.86, 3205.97, 5.45323),
((@CGUID+4)*10, 2, -2829.24, 3218.81, 9.59048),
((@CGUID+4)*10, 3, -2814.12, 3235.72, 10.1736),
((@CGUID+4)*10, 4, -2792.54, 3259.91, 5.91885),
((@CGUID+4)*10, 5, -2774.46, 3280.17, 2.8828),
((@CGUID+4)*10, 6, -2751.21, 3306.24, 0.199384),
((@CGUID+4)*10, 7, -2728.55, 3318.21, -0.833018),
((@CGUID+4)*10, 8, -2719.59, 3331.35, -1.04936),
((@CGUID+4)*10, 9, -2708.94, 3349.74, -0.819842),
((@CGUID+4)*10, 10, -2694.72, 3374.29, -0.156626),
((@CGUID+4)*10, 11, -2685.08, 3390.93, 0.328583),
((@CGUID+4)*10, 12, -2675.69, 3407.16, 0.474826),
((@CGUID+4)*10, 13, -2669.68, 3416.29, 0.743526),
((@CGUID+4)*10, 14, -2660.96, 3425.2, 0.805554),
((@CGUID+4)*10, 15, -2654.25, 3430.82, 0.77502),
((@CGUID+4)*10, 16, -2645.46, 3437.83, 1.28666),
((@CGUID+4)*10, 17, -2639.59, 3442.5, 3.25542),
((@CGUID+4)*10, 18, -2630.71, 3449.41, 1.86245),
((@CGUID+4)*10, 19, -2621.54, 3456.21, 0.653284),
((@CGUID+4)*10, 20, -2617.41, 3460.51, 0.593326),
((@CGUID+4)*10, 21, -2611.5, 3471.52, 0.520041),
((@CGUID+4)*10, 22, -2610.04, 3475.69, 0.53993),
((@CGUID+4)*10, 23, -2606.9, 3480.85, 0.492544),
((@CGUID+4)*10, 24, -2590.41, 3502.84, 0.225892),
((@CGUID+4)*10, 25, -2582.03, 3512, 0.101641),
((@CGUID+4)*10, 26, -2566.36, 3522.06, 0.189451),
((@CGUID+4)*10, 27, -2534.38, 3523.07, 1.3404),
((@CGUID+4)*10, 28, -2523.33, 3527.83, 1.66667),
((@CGUID+4)*10, 29, -2516.31, 3533.95, 1.65006),
((@CGUID+4)*10, 30, -2507.47, 3544.67, 1.56155),
((@CGUID+4)*10, 31, -2491.83, 3549.68, 1.43199),
((@CGUID+4)*10, 32, -2471.56, 3551.98, 1.23732),
((@CGUID+4)*10, 33, -2463.14, 3555.66, 1.03546),
((@CGUID+4)*10, 34, -2456.3, 3555.25, 0.942503),
((@CGUID+4)*10, 35, -2452.53, 3537.02, 0.402467),
((@CGUID+4)*10, 36, -2446.32, 3528.59, -0.236494),
((@CGUID+4)*10, 37, -2462.93, 3549.41, 1.08819),
((@CGUID+4)*10, 38, -2460.92, 3557.5, 1.00403),
((@CGUID+4)*10, 39, -2425.49, 3596.2, 0.274173),
((@CGUID+4)*10, 40, -2405.2, 3613.88, 0.217946),
((@CGUID+4)*10, 41, -2391.31, 3632.83, 0.792431),
((@CGUID+4)*10, 42, -2383.97, 3658.54, 0.99065),
((@CGUID+4)*10, 43, -2351.54, 3700.72, 0.420721),
((@CGUID+4)*10, 44, -2314.59, 3729.83, 0.0297019),
((@CGUID+4)*10, 45, -2296.57, 3749.89, 0.363868),
((@CGUID+4)*10, 46, -2285.44, 3767.7, 0.291327),
((@CGUID+4)*10, 47, -2279.3, 3787.95, 0.314858),
((@CGUID+4)*10, 48, -2276.3, 3799.32, 0.521091),
((@CGUID+4)*10, 49, -2254.61, 3831.13, 2.70024),
((@CGUID+4)*10, 50, -2251.75, 3848.92, 5.15061),
((@CGUID+4)*10, 51, -2249.52, 3869.55, 2.39354),
((@CGUID+4)*10, 52, -2244.66, 3893.46, 1.58335),
((@CGUID+4)*10, 53, -2239.88, 3904.19, 1.10899),
((@CGUID+4)*10, 54, -2224.28, 3927.45, 0.706091),
((@CGUID+4)*10, 55, -2187.45, 3958.22, 0.921813),
((@CGUID+4)*10, 56, -2175.09, 3978.98, 0.929392),
((@CGUID+4)*10, 57, -2171.14, 4011.04, 0.450247),
((@CGUID+4)*10, 58, -2175.93, 4027.88, 0.519539),
((@CGUID+4)*10, 59, -2187.96, 4064.43, 1.4281),
((@CGUID+4)*10, 60, -2166.44, 4102.49, 4.27243),
((@CGUID+4)*10, 61, -1700.15, 3993.57, 55.6859),
((@CGUID+4)*10, 62, -1710.59, 4034.97, 60.6101),
((@CGUID+4)*10, 63, -1719.95, 4059.83, 62.7452),
((@CGUID+4)*10, 64, -1718.67, 4104.32, 64.3796),
((@CGUID+4)*10, 65, -1743.77, 4151.6, 62.3929),
((@CGUID+4)*10, 66, -1754.61, 4173.29, 58.3691),
((@CGUID+4)*10, 67, -1788.41, 4206.51, 44.1839),
((@CGUID+4)*10, 68, -1818.93, 4214.12, 33.1137),
((@CGUID+4)*10, 69, -1841.51, 4228.1, 22.0741),
((@CGUID+4)*10, 70, -1871.54, 4263.5, 8.22153),
((@CGUID+4)*10, 71, -1891, 4295.91, 3.23019),
((@CGUID+4)*10, 72, -1911.96, 4351.49, 1.66825),
((@CGUID+4)*10, 73, -1910.12, 4389.42, 1.77078),
((@CGUID+4)*10, 74, -1907.67, 4417.31, 2.99456),
((@CGUID+4)*10, 75, -1917.63, 4452.07, 6.27493),
((@CGUID+4)*10, 76, -1929.4, 4473.47, 8.90937),
((@CGUID+4)*10, 77, -1942.74, 4489.67, 11.1029),
((@CGUID+4)*10, 78, -1958.47, 4508.45, 12.7432),
((@CGUID+4)*10, 79, -1975.36, 4519.94, 13.1616),
((@CGUID+4)*10, 80, -1982.19, 4524.49, 13.0993),
((@CGUID+4)*10, 81, -1983.38, 4507.03, 12.7591),
((@CGUID+4)*10, 82, -1984.02, 4496.55, 11.9535),
((@CGUID+4)*10, 83, -1984.87, 4482.57, 11.1499),
((@CGUID+4)*10, 84, -1978.92, 4509.87, 12.6695),
((@CGUID+4)*10, 85, -1978.12, 4527.35, 13.36),
((@CGUID+4)*10, 86, -1967.33, 4546.79, 12.8741),
((@CGUID+4)*10, 87, -1953.04, 4566.47, 10.1123),
((@CGUID+4)*10, 88, -1946.5, 4582.91, 7.44598),
((@CGUID+4)*10, 89, -1948.3, 4599.58, 4.61956),
((@CGUID+4)*10, 90, -1955.08, 4637.48, -0.0588505),
((@CGUID+4)*10, 91, -1943.63, 4685.04, -2.18987),
((@CGUID+4)*10, 92, -1941.99, 4705.25, -2.67768),
((@CGUID+4)*10, 93, -1945.22, 4727.47, -3.22917),
((@CGUID+4)*10, 94, -1951.89, 4748.79, -2.9388),
((@CGUID+4)*10, 95, -1957.77, 4773.7, -1.42409),
((@CGUID+4)*10, 96, -1957.36, 4798.11, -0.0807409),
((@CGUID+4)*10, 97, -1944.66, 4829.17, 0.67),
((@CGUID+4)*10, 98, -1929.68, 4851.09, 1.64973),
((@CGUID+4)*10, 99, -1918.23, 4883.89, 2.11937),
((@CGUID+4)*10, 100, -1901.18, 4906.49, -1.12705),
((@CGUID+4)*10, 101, -1881.87, 4926.69, -9.60835),
((@CGUID+4)*10, 102, -1870.05, 4946.21, -17.0149),
((@CGUID+4)*10, 103, -1866.49, 4960.25, -20.2899),
((@CGUID+4)*10, 104, -1860.94, 5033.3, -26.0991),
((@CGUID+4)*10, 105, -1869.8, 4962.46, -20.3781),
((@CGUID+4)*10, 106, -1884.86, 4924.67, -8.30171),
((@CGUID+4)*10, 107, -1904.83, 4905.16, -0.202733),
((@CGUID+4)*10, 108, -1922.67, 4912.5, 6.06643),
((@CGUID+4)*10, 109, -1937.46, 4934.99, 14.8054),
((@CGUID+4)*10, 110, -1953.22, 4961.69, 24.7149),
((@CGUID+4)*10, 111, -1958.07, 4992.99, 30.1767),
((@CGUID+4)*10, 112, -1958.74, 5013.42, 32.4293),
((@CGUID+4)*10, 113, -1947.03, 5042.52, 25.2899),
((@CGUID+4)*10, 114, -1942.58, 5058.03, 19.5292),
((@CGUID+4)*10, 115, -1963.32, 5083.08, 11.1075),
((@CGUID+4)*10, 116, -1984.5, 5100.08, 7.82778),
((@CGUID+4)*10, 117, -2004.59, 5114.07, 8.26657),
((@CGUID+4)*10, 118, -2029.48, 5123.26, 8.48839),
((@CGUID+4)*10, 119, -2055.94, 5125.38, 7.48301),
((@CGUID+4)*10, 120, -2089.33, 5115.44, 3.14184),
((@CGUID+4)*10, 121, -2112.53, 5107.32, -2.40737),
((@CGUID+4)*10, 122, -2137.4, 5108.51, -11.5709),
((@CGUID+4)*10, 123, -2155.69, 5115.97, -18.1534),
((@CGUID+4)*10, 124, -2170.6, 5125.13, -21.2824),
((@CGUID+4)*10, 125, -2182.81, 5131.87, -21.667),
((@CGUID+4)*10, 126, -2198.88, 5138.77, -21.2323),
((@CGUID+4)*10, 127, -2219.62, 5144.57, -19.6848),
((@CGUID+4)*10, 128, -2238.57, 5146.29, -17.4706),
((@CGUID+4)*10, 129, -2266.45, 5144.26, -13.0598),
((@CGUID+4)*10, 130, -2290.86, 5142.23, -9.17377),
((@CGUID+4)*10, 131, -2308.35, 5142.09, -7.11532),
((@CGUID+4)*10, 132, -2333.72, 5149.44, -5.0165),
((@CGUID+4)*10, 133, -2365.45, 5157.88, -2.8501),
((@CGUID+4)*10, 134, -2390.26, 5158.22, -1.19618),
((@CGUID+4)*10, 135, -2417.84, 5153.35, 0.775549),
((@CGUID+4)*10, 136, -2442.28, 5142.04, 3.53141),
((@CGUID+4)*10, 137, -2469.81, 5120.56, 6.76948),
((@CGUID+4)*10, 138, -2498.06, 5115.06, 7.87731),
((@CGUID+4)*10, 139, -2532.85, 5118.89, 7.54034),
((@CGUID+4)*10, 140, -2555.6, 5120.59, 7.69492),
((@CGUID+5)*10, 1, -1842.53, 4231.02, 20.9801),
((@CGUID+5)*10, 2, -1869.21, 4261.13, 8.89557),
((@CGUID+5)*10, 3, -1881.34, 4278.1, 5.5224),
((@CGUID+5)*10, 4, -1912.25, 4349.02, 1.68234),
((@CGUID+5)*10, 5, -1914.46, 4374.06, 1.6238),
((@CGUID+5)*10, 6, -1907.34, 4411.19, 2.60279),
((@CGUID+5)*10, 7, -1910.76, 4438.84, 4.91422),
((@CGUID+5)*10, 8, -1931.52, 4475.42, 9.21656),
((@CGUID+5)*10, 9, -1970.77, 4515.64, 13.0504),
((@CGUID+5)*10, 10, -1976.75, 4527.05, 13.3934),
((@CGUID+5)*10, 11, -1972.72, 4539.17, 13.3457),
((@CGUID+5)*10, 12, -1946.46, 4597.88, 4.94647),
((@CGUID+5)*10, 13, -1956.85, 4637.1, 0.01026),
((@CGUID+5)*10, 14, -1940.22, 4702.82, -2.56809),
((@CGUID+5)*10, 15, -1949.24, 4739.94, -3.13258),
((@CGUID+5)*10, 16, -1955.66, 4753.73, -2.74301),
((@CGUID+5)*10, 17, -1959.56, 4796.31, -0.128966),
((@CGUID+5)*10, 18, -1921.66, 4869.82, 1.85516),
((@CGUID+5)*10, 19, -1915.69, 4891.67, 2.15411),
((@CGUID+5)*10, 20, -1888.97, 4918.59, -5.75911),
((@CGUID+5)*10, 21, -1869.05, 4946.2, -17.1173),
((@CGUID+5)*10, 22, -1865.53, 4978.99, -22.5178),
((@CGUID+6)*10, 1, -2595.42, 5118.68, 6.63357),
((@CGUID+6)*10, 2, -2546, 5122.18, 7.52113),
((@CGUID+6)*10, 3, -2485.8, 5112.25, 7.9062),
((@CGUID+6)*10, 4, -2440.9, 5141.97, 3.35802),
((@CGUID+6)*10, 5, -2416.25, 5152.64, 0.680542),
((@CGUID+6)*10, 6, -2378.67, 5159.02, -1.98798),
((@CGUID+6)*10, 7, -2338.08, 5151.37, -4.80083),
((@CGUID+6)*10, 8, -2307.95, 5141.67, -7.15532),
((@CGUID+6)*10, 9, -2276.08, 5142.61, -11.4779),
((@CGUID+6)*10, 10, -2228.73, 5147.82, -18.686),
((@CGUID+6)*10, 11, -2200.59, 5140.23, -21.1159),
((@CGUID+6)*10, 12, -2165.21, 5123.69, -20.855),
((@CGUID+6)*10, 13, -2148.15, 5138.56, -22.1488);
-- Pooling
DELETE FROM `pool_template` WHERE `entry`=1073 AND `description` LIKE '%Okrek%';
DELETE FROM `pool_template` WHERE `entry`=1117 AND `description`='Doomsayer Jurim (18686)';
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
(1073, 1, 'Okrek (18685)'),
(1117, 1, 'Doomsayer Jurim (18686)');
DELETE FROM `pool_creature` WHERE `pool_entry`=1073 AND `description` LIKE '%Okrek%';
DELETE FROM `pool_creature` WHERE `pool_entry`=1117 AND `description`='Doomsayer Jurim (18686)';
INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES
(@CGUID+0, 1073, 0, 'Okrek (18685)'),
(@CGUID+1, 1073, 0, 'Okrek (18685)'),
(@CGUID+2, 1073, 0, 'Okrek (18685)'),
(@CGUID+3, 1073, 0, 'Okrek (18685)'),
(@CGUID+4, 1117, 0, 'Doomsayer Jurim (18686)'),
(@CGUID+5, 1117, 0, 'Doomsayer Jurim (18686)'),
(@CGUID+6, 1117, 0, 'Doomsayer Jurim (18686)');
@@ -0,0 +1,17 @@
-- DB update 2023_02_18_03 -> 2023_02_18_04
-- Dragonmaw Bonewarder - spawn Skeleton on reset
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 1057;
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 1057);
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
(1057, 0, 0, 0, 25, 0, 100, 0, 0, 0, 0, 0, 0, 11, 8853, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Bonewarder - On Reset - Cast \'Summon Skeleton\''),
(1057, 0, 1, 0, 4, 0, 100, 1, 0, 0, 0, 0, 0, 11, 13787, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Bonewarder - On Aggro - Cast \'Demon Armor\' (No Repeat)'),
(1057, 0, 2, 0, 0, 0, 100, 0, 3000, 4000, 120000, 120000, 0, 11, 6205, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Bonewarder - In Combat - Cast \'Curse of Weakness\''),
(1057, 0, 3, 0, 0, 0, 100, 0, 5000, 6000, 15000, 15000, 0, 11, 707, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Bonewarder - In Combat - Cast \'Immolate\'');
-- Skeleton (Dragonmaw Bonewarder's pet) - force despawn on death
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 6412;
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 6412);
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
(6412, 0, 0, 0, 6, 0, 100, 513, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Skeleton - On Just Died - Despawn In 1000 ms (No Repeat)');
@@ -0,0 +1,4 @@
-- DB update 2023_02_18_04 -> 2023_02_18_05
-- Reply-Code Alpha - All Is Well That Ends Well 10 & 25 - Remove requirement for sigil quest completion.
UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 13631); -- Normal (10m)
UPDATE `quest_template_addon` SET `PrevQuestID` = 0 WHERE (`ID` = 13819); -- Heroic (25m)
+135
View File
@@ -0,0 +1,135 @@
-- DB update 2023_02_18_05 -> 2023_02_18_06
--
DELETE FROM `creature` WHERE `id1`=18679;
INSERT INTO `creature` (`guid`, `id1`, `map`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`) VALUES
(24922, 18679, 530, 1, -368.807, 1845.98, 86.4098, 2.91794, 28800, 2),
(24923, 18679, 530, 1, -114.012, 1835.66, 73.8411, 0.612791, 28800, 2),
(24924, 18679, 530, 1, 494.112, 2187.12, 131.719, 1.88514, 28800, 2),
(24925, 18679, 530, 1, 442.586, 3516.65, 60.8444, 1.20665, 28800, 2);
DELETE FROM `creature_addon` WHERE (`guid` IN (24922, 24923, 24924, 24925, 151930));
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(24922, 249220, 0, 0, 1, 0, 0, ''),
(24923, 249230, 0, 0, 1, 0, 0, ''),
(24924, 249240, 0, 0, 1, 0, 0, ''),
(24925, 249250, 0, 0, 1, 0, 0, '');
DELETE FROM `waypoint_data` WHERE `id` IN (249220, 249230, 249240, 249250, 1519300);
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES
(249220, 1, -368.807, 1845.98, 86.4098),
(249220, 2, -394.117, 1765.65, 60.0718),
(249220, 3, -430.21, 1735.79, 50.2494),
(249220, 4, -467.137, 1759.59, 46.767),
(249220, 5, -481.167, 1743.93, 41.2044),
(249220, 6, -491.55, 1741.66, 46.4614),
(249220, 7, -501.393, 1756.58, 49.219),
(249220, 8, -534.742, 1790.65, 56.8644),
(249220, 9, -563.301, 1812.43, 66.1833),
(249220, 10, -582.342, 1829.4, 70.716),
(249220, 11, -541.357, 1879.13, 77.7951),
(249220, 12, -484.344, 1898.96, 87.2478),
(249220, 13, -392.494, 1897.04, 104.712),
(249230, 1, -114.012, 1835.66, 73.8411),
(249230, 2, -91.4783, 1847.82, 69.2832),
(249230, 3, -48.3747, 1834.22, 56.2454),
(249230, 4, -27.769, 1751.28, 45.8751),
(249230, 5, 7.84103, 1727.88, 42.7232),
(249230, 6, 61.2473, 1718.28, 40.0149),
(249230, 7, 83.7766, 1696.73, 39.1369),
(249230, 8, 100.682, 1697.19, 40.2013),
(249230, 9, 173.49, 1699.2, 29.6471),
(249230, 10, 187.283, 1739.6, 31.9241),
(249230, 11, 204.008, 1746.78, 24.8385),
(249230, 12, 211.648, 1786.65, 19.2764),
(249230, 13, 199.708, 1790.54, 22.2977),
(249230, 14, 173.246, 1781.3, 26.3822),
(249230, 15, 155.866, 1781.44, 33.661),
(249230, 16, 134.747, 1779.92, 34.6875),
(249230, 17, 128.552, 1783.87, 37.7445),
(249230, 18, 79.8076, 1800.09, 45.2287),
(249230, 19, 63.0398, 1800.49, 48.2331),
(249230, 20, 32.4485, 1861.2, 49.7156),
(249230, 21, 29.9901, 1871.98, 47.1418),
(249230, 22, 9.29734, 1874.98, 51.9819),
(249230, 23, -22.6535, 1868.99, 57.1755),
(249230, 24, -43.6076, 1863.96, 64.0862),
(249230, 25, -78.5294, 1861.73, 71.2376),
(249240, 1, 494.112, 2187.12, 131.719),
(249240, 2, 490.009, 2150.51, 126.99),
(249240, 3, 476.108, 2147.86, 118.362),
(249240, 4, 447.068, 2146.79, 117.958),
(249240, 5, 391.824, 2120.25, 115.876),
(249240, 6, 364.498, 2141.12, 120.353),
(249240, 7, 366.106, 2174.26, 120.116),
(249240, 8, 369.158, 2196.83, 119.376),
(249240, 9, 343.484, 2215.23, 117.934),
(249240, 10, 340.956, 2232.1, 118.971),
(249240, 11, 391.441, 2247.7, 117.091),
(249240, 12, 432.466, 2259.06, 117.991),
(249240, 13, 437.614, 2269.6, 114.766),
(249240, 14, 438.826, 2278.85, 118.556),
(249240, 15, 438.178, 2332.83, 119.533),
(249240, 16, 430.33, 2389.52, 125.334),
(249240, 17, 424.122, 2410.58, 132.903),
(249240, 18, 409.936, 2426.29, 140.293),
(249240, 19, 391.569, 2441.42, 147.378),
(249240, 20, 372.028, 2450.85, 153.994),
(249240, 21, 351.563, 2501.71, 158.671),
(249240, 22, 358.341, 2519.12, 157.017),
(249240, 23, 362.253, 2540.77, 155.273),
(249240, 24, 393.193, 2549.76, 151.156),
(249240, 25, 422.271, 2538.3, 151.843),
(249240, 26, 443.763, 2554.36, 162.211),
(249240, 27, 446.835, 2632.73, 179.099),
(249240, 28, 487.397, 2745.97, 201.314),
(249240, 29, 524.691, 2778.75, 213.732),
(249240, 30, 529.078, 2770.99, 213.393),
(249240, 31, 516.915, 2750.16, 211.931),
(249240, 32, 474.551, 2663.26, 192.277),
(249240, 33, 463.675, 2628.29, 184.522),
(249240, 34, 463.409, 2570.53, 174.952),
(249240, 35, 459.304, 2541.33, 164.87),
(249240, 36, 465.254, 2485.88, 156.33),
(249240, 37, 428.184, 2445.82, 139.387),
(249240, 38, 428.213, 2414.12, 133.002),
(249240, 39, 447.828, 2392.86, 133.544),
(249240, 40, 454.476, 2300.08, 124.765),
(249240, 41, 478.859, 2261.73, 129.556),
(249240, 42, 490.589, 2224.36, 131.317),
(249250, 1, 442.586, 3516.65, 60.8444),
(249250, 2, 430.167, 3506.58, 62.984),
(249250, 3, 380.869, 3507.06, 62.9783),
(249250, 4, 364.828, 3502.97, 62.3136),
(249250, 5, 359.136, 3482.24, 62.8538),
(249250, 6, 350.932, 3469.66, 61.7651),
(249250, 7, 333.588, 3465.64, 62.0532),
(249250, 8, 332.589, 3436.69, 61.9835),
(249250, 9, 344.644, 3424.99, 63.3763),
(249250, 10, 346.874, 3386.66, 64.2423),
(249250, 11, 341.957, 3361.83, 68.1707),
(249250, 12, 354.937, 3358.04, 62.9527),
(249250, 13, 373.619, 3362.38, 62.5949),
(249250, 14, 395.768, 3352.65, 62.7729),
(249250, 15, 417.721, 3338.98, 61.9029),
(249250, 16, 438.161, 3340.84, 62.9257),
(249250, 17, 463.486, 3377.86, 73.8103),
(249250, 18, 466.918, 3398.15, 69.5736),
(249250, 19, 505.131, 3430.84, 73.9158),
(249250, 20, 508.783, 3437.74, 73.853),
(249250, 21, 516.238, 3459.83, 74.7222),
(249250, 22, 527.515, 3486.28, 77.0556),
(249250, 23, 489.114, 3523.57, 65.8445),
(249250, 24, 468.23, 3526.64, 63.9368);
DELETE FROM `pool_template` WHERE `entry`=1085 AND `description` LIKE '%Vorakem%';
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES (1085, 1, 'Vorakem Doomspeaker (18679)');
DELETE FROM `pool_creature` WHERE `pool_entry`=1085 AND `description` LIKE '%Vorakem%';
INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES
(24922, 1085, 0, 'Vorakem Doomspeaker (18679)'),
(24923, 1085, 0, 'Vorakem Doomspeaker (18679)'),
(24924, 1085, 0, 'Vorakem Doomspeaker (18679)'),
(24925, 1085, 0, 'Vorakem Doomspeaker (18679)');
-- It's another rare with DISABLE_MOVE added to it
UPDATE `creature_template` SET `unit_flags`=`unit_flags`&~4 WHERE (`entry` = 18679);
+140
View File
@@ -0,0 +1,140 @@
-- DB update 2023_02_18_06 -> 2023_02_18_07
--
DELETE FROM `creature` WHERE `id1`=18648 AND `guid`=86357;
INSERT INTO `creature`(`guid`, `id1`, `map`, `spawnMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`) VALUES
(86357, 18648, 530, 1, -1996.77, 3691.44, -55.336, 4.15348, 300, 2);
DELETE FROM `creature_addon` WHERE (`guid` = 86357);
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(86357, 863570, 0, 0, 0, 0, 0, '');
DELETE FROM `waypoint_data` WHERE `id`=863570;
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES
(863570, 1, -1996.77, 3691.44, -55.336),
(863570, 2, -2003.93, 3680, -62.9563),
(863570, 3, -2012.14, 3673.5, -70.4843),
(863570, 4, -2017.82, 3668.26, -70.9137),
(863570, 5, -2025.06, 3661.79, -69.4269),
(863570, 6, -2038.99, 3660.38, -66.7324),
(863570, 7, -2053.45, 3649.44, -65.0682),
(863570, 8, -2060.97, 3637.63, -65.2084),
(863570, 9, -2065.82, 3627.13, -66.8755),
(863570, 10, -2069.63, 3618.56, -63.7202),
(863570, 11, -2075.9, 3605.38, -62.2908),
(863570, 12, -2080.72, 3593.47, -63.6726),
(863570, 13, -2086.85, 3577.68, -63.0435),
(863570, 14, -2091.53, 3561.27, -63.9136),
(863570, 15, -2091.9, 3558.99, -64.593),
(863570, 16, -2093.33, 3551.36, -71.5948),
(863570, 17, -2093.09, 3545.55, -60.957),
(863570, 18, -2095.03, 3534.02, -57.587),
(863570, 19, -2096.72, 3521.29, -56.1821),
(863570, 20, -2097.01, 3513.11, -57.028),
(863570, 21, -2099.07, 3493.34, -64.6929),
(863570, 22, -2103.58, 3483.31, -63.2184),
(863570, 23, -2105.74, 3475.41, -65.6768),
(863570, 24, -2106.44, 3467.97, -64.468),
(863570, 25, -2107.1, 3461.39, -65.8403),
(863570, 26, -2108.14, 3449.75, -63.965),
(863570, 27, -2108.91, 3436.89, -59.7906),
(863570, 28, -2109.66, 3423.51, -52.8207),
(863570, 29, -2112.76, 3413.32, -48.142),
(863570, 30, -2121.64, 3404.88, -46.3506),
(863570, 31, -2131.1, 3396.23, -44.9126),
(863570, 32, -2134.37, 3389.37, -46.1489),
(863570, 33, -2131.79, 3383.86, -49.3395),
(863570, 34, -2128.36, 3376.67, -55.9128),
(863570, 35, -2126.56, 3368.71, -56.1998),
(863570, 36, -2127.56, 3362.95, -53.5525),
(863570, 37, -2131.19, 3357.47, -46.1145),
(863570, 38, -2125.85, 3347.14, -45.6573),
(863570, 39, -2119.3, 3334.73, -47.1481),
(863570, 40, -2110.68, 3321.54, -47.8091),
(863570, 41, -2100.88, 3310.8, -48.6787),
(863570, 42, -2090.47, 3299.05, -50.4756),
(863570, 43, -2083.33, 3293.68, -55.9256),
(863570, 44, -2078.28, 3287.97, -51.4244),
(863570, 45, -2073.34, 3281.43, -52.9969),
(863570, 46, -2063.93, 3268.75, -56.6561),
(863570, 47, -2055.24, 3257.03, -59.2205),
(863570, 48, -2053.2, 3252.83, -62.8816),
(863570, 49, -2047.24, 3246.85, -73.0043),
(863570, 50, -2043.23, 3243.11, -72.4173),
(863570, 51, -2037.29, 3237.16, -69.086),
(863570, 52, -2031.93, 3231.8, -70.0572),
(863570, 53, -2037.81, 3237.48, -69.2409),
(863570, 54, -2043.55, 3243.31, -72.4278),
(863570, 55, -2047.31, 3246.89, -72.9844),
(863570, 56, -2053.51, 3253.16, -62.3759),
(863570, 57, -2055.88, 3257.93, -58.9112),
(863570, 58, -2063.94, 3268.6, -56.6398),
(863570, 59, -2073.83, 3281.86, -52.7742),
(863570, 60, -2078.86, 3288.44, -51.4462),
(863570, 61, -2083.72, 3293.82, -55.8937),
(863570, 62, -2090.97, 3299.89, -50.4188),
(863570, 63, -2101.03, 3310.92, -48.6276),
(863570, 64, -2110.38, 3321.34, -47.8336),
(863570, 65, -2118.06, 3332.77, -47.2585),
(863570, 66, -2125.31, 3345.69, -45.7645),
(863570, 67, -2131.76, 3358.36, -46.2777),
(863570, 68, -2127.94, 3363.14, -53.5166),
(863570, 69, -2126.84, 3369.1, -56.2019),
(863570, 70, -2128.84, 3377.25, -55.5198),
(863570, 71, -2132.2, 3383.99, -49.3382),
(863570, 72, -2134.55, 3389.79, -45.954),
(863570, 73, -2131.32, 3396.31, -44.8486),
(863570, 74, -2121.76, 3405.02, -46.3264),
(863570, 75, -2113.32, 3413.32, -47.9902),
(863570, 76, -2110.22, 3423.3, -52.2944),
(863570, 77, -2109.28, 3437.47, -60.2717),
(863570, 78, -2108.45, 3449.68, -63.8449),
(863570, 79, -2107.3, 3461.64, -65.6918),
(863570, 80, -2106.68, 3468.04, -64.4831),
(863570, 81, -2105.94, 3475.72, -65.4231),
(863570, 82, -2103.89, 3483.71, -63.0018),
(863570, 83, -2099.3, 3493.67, -64.4541),
(863570, 84, -2097.45, 3513.67, -56.8631),
(863570, 85, -2097.2, 3521.95, -56.0993),
(863570, 86, -2095.39, 3534.9, -57.5393),
(863570, 87, -2093.37, 3546, -61.2589),
(863570, 88, -2093.66, 3551.82, -71.882),
(863570, 89, -2092.36, 3558.82, -64.4532),
(863570, 90, -2091.93, 3561.65, -63.5573),
(863570, 91, -2086.94, 3578.34, -63.0179),
(863570, 92, -2081, 3593.7, -63.4996),
(863570, 93, -2076.34, 3605.29, -62.0478),
(863570, 94, -2070.21, 3619.16, -63.7059),
(863570, 95, -2066.15, 3627.76, -66.6732),
(863570, 96, -2061.21, 3637.91, -65.0062),
(863570, 97, -2053.49, 3650.07, -64.9078),
(863570, 98, -2039.41, 3660.59, -66.5091),
(863570, 99, -2025.45, 3662.06, -69.2666),
(863570, 100, -2018.42, 3668.33, -70.7122),
(863570, 101, -2012.08, 3674.36, -69.8961),
(863570, 102, -2003.99, 3680.59, -62.4553),
(863570, 103, -1996.95, 3691.94, -54.9681),
(863570, 104, -1987.92, 3710.84, -41.6305),
(863570, 105, -1980.74, 3729.54, -30.1387),
(863570, 106, -1970.21, 3735.92, -23.6044),
(863570, 107, -1956.11, 3741.73, -15.3974),
(863570, 108, -1944.91, 3748.26, -11.1596),
(863570, 109, -1935.12, 3754.11, -9.51987),
(863570, 110, -1918.06, 3762.94, -6.23739),
(863570, 111, -1907.43, 3768.79, -2.98779),
(863570, 112, -1894.27, 3775.38, 5.33932),
(863570, 113, -1885.92, 3779.56, 7.72026),
(863570, 114, -1865.18, 3795.66, 7.24442),
(863570, 115, -1848.48, 3803.51, 12.059),
(863570, 116, -1830.9, 3805.41, 17.8008),
(863570, 117, -1849.35, 3803.04, 11.8302),
(863570, 118, -1866.25, 3795.23, 7.0094),
(863570, 119, -1885.98, 3779.49, 7.72068),
(863570, 120, -1892.23, 3776.35, 6.22982),
(863570, 121, -1904.74, 3769.73, -1.31481),
(863570, 122, -1917.84, 3762.46, -6.18441),
(863570, 123, -1935.54, 3754.11, -9.53416),
(863570, 124, -1944.97, 3748.29, -11.1474),
(863570, 125, -1956.71, 3741.05, -16.0124),
(863570, 126, -1970.67, 3735.79, -23.8129),
(863570, 127, -1981.2, 3729.16, -30.45),
(863570, 128, -1988.06, 3710.37, -41.9423);
@@ -0,0 +1,5 @@
-- DB update 2023_02_18_07 -> 2023_02_18_08
--
DELETE FROM `spell_script_names` WHERE `spell_id` = 38194;
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(38194, 'spell_talon_king_ikiss_blink');
@@ -0,0 +1,3 @@
-- DB update 2023_02_18_08 -> 2023_02_19_00
--
DELETE FROM `creature` WHERE `id1`=22102 AND `guid` IN (86101, 86102);
+377
View File
@@ -0,0 +1,377 @@
-- DB update 2023_02_19_00 -> 2023_02_19_01
-- Add Burning Spikes to Domesticated Helboar
UPDATE `creature_template_addon` SET `bytes2` = 0, `auras` = '33908' WHERE (`entry` = 21195);
-- Water Bubble to Captured Water Spirit
DELETE FROM `creature_template_addon` WHERE (`entry` = 21029);
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(21029, 0, 0, 0, 0, 0, 0, '35929');
-- Delete ALL Creatures exclusive to Coilskar Cistern
DELETE FROM `creature` WHERE `map`=530 AND `id1` IN (
19765, -- Coilskar Myrmidon
19767, -- Coilskar Sorceress
19788, -- Coilskar Muckwatcher
21029, -- Captured Water Spirit
21041, -- Earthmender Wilda Trigger
21027, -- Earthmender Wilda
21044, -- Coilskar Assassin (Spawned from Escort Quest)
20795 -- Keeper of the Cistern
);
-- Delete Coilskar Cobra in Coilskar Cistern
DELETE FROM `creature` WHERE `id1`=19784 AND `guid` BETWEEN 70801 AND 70807;
DELETE FROM `creature` WHERE `id1` IN (19765,19767,19784,19788,21029,21041,21027,20795) AND `map`=530 AND `ZoneId`=3520 AND `guid` IN (23745,24189,24190,24191,24777,24788,24868,24869,24870,24915,24931,24944,24945,24946,24947,24948,24974,24975,24977,24978,24979,24980,24981,24982,24983,25010,25065,25094,25095,25096,25097,25098,25099,25111,25112,25113,25114,25115,25116,25117,25118,25119,25120,25121,25122,25123,25124,25125,25126,25127,25128,25129,25130,25713,25714,25715,25716,25717,25718,25719,25720,25721,25722,25723,25724,25725,25726,25727,25738,25739,25740,25741,25742,25743,25744);
INSERT INTO `creature` (`guid`, `id1`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `MovementType`, `VerifiedBuild`) VALUES
(23745, 19765, 530, 3520, 3749, 1, 1, 1, -2898.98, 1382.11, 6.15595, 1.85005, 300, 0, 0, 48069),
(24189, 19765, 530, 3520, 3749, 1, 1, 1, -2913.56, 1391.4, 7.13094, 1.0472, 300, 0, 0, 48069),
(24190, 19765, 530, 3520, 3749, 1, 1, 1, -2937.48, 1354.87, 6.92214, 4.7822, 300, 0, 0, 48069),
(24191, 19765, 530, 3520, 3749, 1, 1, 1, -2902.86, 1303.16, 7.15851, 2.37365, 300, 0, 0, 48069),
(24777, 19765, 530, 3520, 3749, 1, 1, 1, -2889.05, 1314.18, 6.65059, 3.40339, 300, 0, 0, 48069),
(24788, 19765, 530, 3520, 3749, 1, 1, 1, -2902.24, 1330.04, 6.77553, 2.79253, 300, 0, 0, 48069),
(24868, 19765, 530, 3520, 3749, 1, 1, 1, -2983.65, 1309.24, 8.58929, 3.71475, 300, 8, 1, 48069),
(24869, 19765, 530, 3520, 3749, 1, 1, 1, -2942.56, 1284.57, 8.16425, 1.88496, 300, 0, 0, 48069),
(24870, 19765, 530, 3520, 3749, 1, 1, 1, -2779.55, 1304.42, 33.4497, 5.93412, 300, 0, 0, 48069),
(24915, 19765, 530, 3520, 3749, 1, 1, 1, -2817.55, 1224.34, 6.25537, 5.38328, 300, 0, 0, 48069),
(24931, 19765, 530, 3520, 3749, 1, 1, 1, -2768.09, 1273.42, 33.7681, 1.5708, 300, 0, 0, 48069),
(24944, 19765, 530, 3520, 3749, 1, 1, 1, -2764.94, 1317.1, 33.5025, 4.85202, 300, 0, 0, 48069),
(24945, 19765, 530, 3520, 3749, 1, 1, 1, -2749.51, 1247.11, 33.245, 1.84797, 300, 0, 0, 48069),
(24946, 19765, 530, 3520, 3749, 1, 1, 2, -2798.67, 1160.3, 6.693, 4.86947, 300, 0, 0, 48069),
(24947, 19765, 530, 3520, 3749, 1, 1, 1, -2787.35, 1148.32, 7.55367, 1.06465, 300, 0, 0, 48069),
(24948, 19765, 530, 3520, 3749, 1, 1, 1, -2628.65, 1223.29, 14.6047, 4.37468, 300, 0, 0, 48069),
(24974, 19765, 530, 3520, 3749, 1, 1, 2, -2725.46, 1268.64, 33.3154, 1.15192, 300, 0, 0, 48069),
(24975, 19765, 530, 3520, 3749, 1, 1, 1, -2641.38, 1229.79, 10.9875, 0.170716, 300, 3, 1, 48069),
(24977, 19765, 530, 3520, 3749, 1, 1, 1, -2677.05, 1381.3, 38.0509, 5.044, 300, 0, 0, 48069),
(24978, 19765, 530, 3520, 3749, 1, 1, 1, -2703.08, 1375.09, 38.6636, 5.88176, 300, 0, 0, 48069),
(24979, 19767, 530, 3520, 3749, 1, 1, 1, -2976.08, 1333.87, 8.76729, 2.2356, 300, 4, 1, 48069),
(24980, 19767, 530, 3520, 3749, 1, 1, 1, -2905.72, 1359.48, 6.14664, 4.48575, 300, 10, 1, 48069),
(24981, 19767, 530, 3520, 3749, 1, 1, 1, -2934.01, 1326.69, 8.1525, 2.81793, 300, 6, 1, 48069),
(24982, 19767, 530, 3520, 3749, 1, 1, 1, -2773.13, 1157.78, 7.20267, 1.13446, 300, 0, 0, 48069),
(24983, 19767, 530, 3520, 3749, 1, 1, 1, -2731.41, 1259.01, 33.7358, 2.93215, 300, 0, 0, 48069),
(25010, 19767, 530, 3520, 3749, 1, 1, 1, -2736.81, 1278.36, 33.3747, 3.22886, 300, 0, 0, 48069),
(25065, 19767, 530, 3520, 3749, 1, 1, 1, -2690.81, 1366.14, 37.1067, 3.80006, 300, 0, 0, 48069),
(25094, 19767, 530, 3520, 3749, 1, 1, 1, -2671.05, 1273.61, 27.3407, 2.36121, 300, 4, 1, 48069),
(25095, 19767, 530, 3520, 3749, 1, 1, 1, -2650.98, 1287.83, 27.5096, 1.27681, 300, 4, 1, 48069),
(25096, 19767, 530, 3520, 3749, 1, 1, 1, -2691.4, 1388.28, 38.6635, 6.05283, 300, 4, 1, 48069),
(25097, 19767, 530, 3520, 3749, 1, 1, 1, -2655.43, 1354.2, 34.7295, 1.23625, 300, 8, 1, 48069),
(25098, 19788, 530, 3520, 3749, 1, 1, 1, -2886.79, 1306.95, 5.7373, 2.81133, 300, 0, 0, 48069),
(25099, 19788, 530, 3520, 3749, 1, 1, 1, -2805.56, 1369.56, 37.8528, 4.43144, 300, 0, 0, 48069),
(25111, 19788, 530, 3520, 3749, 1, 1, 1, -2753.25, 1307.42, 33.4562, 3.61969, 300, 0, 0, 48069),
(25112, 19788, 530, 3520, 3749, 1, 1, 1, -2729.97, 1141.34, 1.72704, 2.91288, 300, 0, 0, 48069),
(25113, 19788, 530, 3520, 3749, 1, 1, 1, -2691.24, 1173.31, 5.5279, 3.77395, 300, 0, 0, 48069),
(25114, 19788, 530, 3520, 3749, 1, 1, 1, -2670.11, 1283.01, 28.1491, 2.8624, 300, 0, 0, 48069),
(25115, 19788, 530, 3520, 3749, 1, 1, 1, -2620.26, 1353.72, 37.1255, 3.66914, 300, 0, 0, 48069),
(25116, 19788, 530, 3520, 3749, 1, 1, 1, -2636.63, 1372.52, 36.0204, 3.98698, 300, 0, 0, 48069),
(25117, 19788, 530, 3520, 3749, 1, 1, 1, -2641.96, 1270.84, 24.3307, 2.474, 300, 0, 0, 48069),
(25118, 20795, 530, 3520, 3749, 1, 1, 1, -2594.66, 1384.33, 44.3154, 6.12077, 300, 5, 1, 48069),
(25119, 21027, 530, 3520, 3749, 1, 1, 0, -2616.36, 1372.07, 46.0286, 3.85718, 300, 0, 0, 48069),
(25120, 21029, 530, 3520, 3749, 1, 1, 0, -2729.85, 1215.23, 48.2141, 1.5708, 300, 0, 0, 48069),
(25121, 21029, 530, 3520, 3749, 1, 1, 0, -2721.25, 1216.49, 41.7782, 1.79769, 300, 0, 0, 48069),
(25122, 21029, 530, 3520, 3749, 1, 1, 0, -2713.19, 1221.69, 38.1432, 2.0944, 300, 0, 0, 48069),
(25123, 21029, 530, 3520, 3749, 1, 1, 0, -2711.53, 1230.92, 37.3221, 2.54818, 300, 0, 0, 48069),
(25124, 21029, 530, 3520, 3749, 1, 1, 0, -2708.88, 1239.1, 38.1921, 3.08923, 300, 0, 0, 48069),
(25125, 21041, 530, 3520, 3749, 1, 1, 0, -2638.89, 1358.96, 36.0438, 3.90954, 300, 0, 0, 48069),
(25126, 21041, 530, 3520, 3749, 1, 1, 0, -2605.25, 1369.39, 49.1248, 4.03171, 300, 0, 0, 48069),
(25127, 21041, 530, 3520, 3749, 1, 1, 0, -2605.53, 1374.24, 45.3846, 5.55015, 300, 0, 0, 48069),
(25128, 21041, 530, 3520, 3749, 1, 1, 0, -2614.51, 1381.27, 51.6831, 5.55015, 300, 0, 0, 48069),
(25129, 21041, 530, 3520, 3749, 1, 1, 0, -2610.76, 1377.7, 41.1437, 3.50811, 300, 0, 0, 48069),
(25130, 21041, 530, 3520, 3749, 1, 1, 0, -2590.76, 1387.65, 55.0794, 4.10152, 300, 0, 0, 48069),
(25713, 19784, 530, 3520, 3749, 1, 1, 0, -2924.55, 1371.39, 9.52825, 5.55015, 300, 0, 0, 48069),
(25714, 19784, 530, 3520, 3749, 1, 1, 0, -2919.43, 1372.64, 8.37301, 6.12611, 300, 0, 0, 48069),
(25715, 19784, 530, 3520, 3749, 1, 1, 0, -2960.01, 1304.2, 7.36165, 0.226893, 300, 0, 0, 48069),
(25716, 19784, 530, 3520, 3749, 1, 1, 0, -2964.3, 1312.32, 7.70759, 0.890118, 300, 0, 0, 48069),
(25717, 19784, 530, 3520, 3749, 1, 1, 0, -2851.26, 1239.81, 6.79606, 3.09596, 300, 5, 1, 48069),
(25718, 19784, 530, 3520, 3749, 1, 1, 0, -2809.98, 1254.89, 26.471, 6.0912, 300, 0, 0, 48069),
(25719, 19784, 530, 3520, 3749, 1, 1, 0, -2842.61, 1249.25, 6.79606, 1.18107, 300, 5, 1, 48069),
(25720, 19784, 530, 3520, 3749, 1, 1, 0, -2810.6, 1257.84, 26.8763, 6.23417, 300, 0, 0, 48069),
(25721, 19784, 530, 3520, 3749, 1, 1, 0, -2738.38, 1148.7, 3.50024, 3.33358, 300, 0, 0, 48069),
(25722, 19784, 530, 3520, 3749, 1, 1, 0, -2741.38, 1138.88, 4.15881, 2.46091, 300, 0, 0, 48069),
(25723, 19784, 530, 3520, 3749, 1, 1, 0, -2639.01, 1256.11, 21.8693, 5.35816, 300, 0, 0, 48069),
(25724, 19784, 530, 3520, 3749, 1, 1, 0, -2628.61, 1256.51, 19.4139, 4.7473, 300, 0, 0, 48069),
(25725, 19784, 530, 3520, 3749, 1, 1, 0, -2702.76, 1318.11, 34.033, 4.45059, 300, 0, 0, 48069),
(25726, 19784, 530, 3520, 3749, 1, 1, 0, -2714.62, 1310.4, 34.1854, 5.3058, 300, 0, 0, 48069),
(25727, 19784, 530, 3520, 3749, 1, 1, 0, -2580.79, 1389.61, 42.4415, 0.820305, 300, 0, 0, 48069),
(25738, 19784, 530, 3520, 3749, 1, 1, 0, -2583.63, 1393.74, 42.5982, 0.471239, 300, 0, 0, 48069),
(25739, 19784, 530, 3520, 3749, 1, 1, 0, -2780.42, 1393.01, 38.8631, 0.873989, 300, 5, 1, 48069),
(25740, 19784, 530, 3520, 3749, 1, 1, 0, -2790.03, 1393.41, 39.1302, 1.59271, 300, 5, 1, 48069),
(25741, 19784, 530, 3520, 3749, 1, 1, 0, -2708.27, 1223.95, 32.8727, 1.35922, 300, 5, 1, 48069),
(25742, 19784, 530, 3520, 3749, 1, 1, 0, -2720.86, 1215.66, 37.045, 2.45076, 300, 5, 1, 48069),
(25743, 19784, 530, 3520, 3749, 1, 1, 0, -2779.55, 1279.2603, 34.014435, 2.45076, 300, 0, 0, 48069),
(25744, 19784, 530, 3520, 3749, 1, 1, 0, -2779.55, 1279.2603, 34.014435, 2.45076, 300, 0, 0, 48069);
SET @NPC := 24915;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2823.2131,`position_y`=1231.4794,`position_z`=6.2438025 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-2823.2131,1231.4794,6.2438025,NULL,0,0,0,100,0),
(@PATH,2,-2812.9219,1218.5132,6.26481,NULL,0,0,0,100,0),
(@PATH,3,-2809.2012,1208.1838,6.32249,NULL,0,0,0,100,0),
(@PATH,4,-2806.4219,1203.8843,6.3185363,NULL,0,0,0,100,0),
(@PATH,5,-2809.2012,1208.1838,6.32249,NULL,0,0,0,100,0),
(@PATH,6,-2812.9219,1218.5132,6.26481,NULL,0,0,0,100,0);
SET @NPC := 24948;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2644.4155,`position_y`=1194.6781,`position_z`=6.600725 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-2644.4155,1194.6781,6.600725,NULL,0,0,0,100,0),
(@PATH,2,-2634.681,1206.1174,10.327223,NULL,0,0,0,100,0),
(@PATH,3,-2625.3433,1232.7086,16.544775,NULL,0,0,0,100,0),
(@PATH,4,-2634.681,1206.1174,10.327223,NULL,0,0,0,100,0);
SET @NPC := 24945;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2748.4146,`position_y`=1268.3123,`position_z`=33.184956 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-2748.4146,1268.3123,33.184956,NULL,0,0,0,100,0),
(@PATH,2,-2753.3994,1260.7609,33.38965,NULL,0,0,0,100,0),
(@PATH,3,-2749.2388,1246.1364,33.239746,NULL,0,0,0,100,0),
(@PATH,4,-2740.1255,1235.6766,33.070683,NULL,0,0,0,100,0),
(@PATH,5,-2722.9575,1231.541,33.249657,NULL,0,0,0,100,0),
(@PATH,6,-2740.1255,1235.6766,33.070683,NULL,0,0,0,100,0),
(@PATH,7,-2749.2388,1246.1364,33.239746,NULL,0,0,0,100,0),
(@PATH,8,-2753.3994,1260.7609,33.38965,NULL,0,0,0,100,0);
SET @NPC := 25112;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2762.0657,`position_y`=1151.654,`position_z`=6.546216 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-2762.0657,1151.654,6.546216,NULL,0,0,0,100,0),
(@PATH,2,-2748.221,1145.59,4.7005005,NULL,0,0,0,100,0),
(@PATH,3,-2728.986,1141.1119,1.6215124,NULL,0,0,0,100,0),
(@PATH,4,-2712.8843,1145.7828,2.4614542,NULL,0,0,0,100,0),
(@PATH,5,-2704.414,1160.1536,5.125069,NULL,0,0,0,100,0),
(@PATH,6,-2712.8843,1145.7828,2.4614542,NULL,0,0,0,100,0),
(@PATH,7,-2728.986,1141.1119,1.6215124,NULL,0,0,0,100,0),
(@PATH,8,-2748.221,1145.59,4.7005005,NULL,0,0,0,100,0);
SET @NPC := 25111;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2759.5168,`position_y`=1304.1704,`position_z`=33.314373 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-2759.5168,1304.1704,33.314373,NULL,0,0,0,100,0),
(@PATH,2,-2746.1182,1311.1138,33.605423,NULL,0,0,0,100,0),
(@PATH,3,-2719.3152,1324.5756,33.971096,NULL,0,0,0,100,0),
(@PATH,4,-2698.994,1332.9515,34.436684,NULL,0,0,0,100,0),
(@PATH,5,-2683.1274,1345.1252,34.436684,NULL,0,0,0,100,0),
(@PATH,6,-2668.0637,1348.902,34.48238,NULL,0,0,0,100,0),
(@PATH,7,-2683.1274,1345.1252,34.436684,NULL,0,0,0,100,0),
(@PATH,8,-2698.9836,1332.9558,34.436684,NULL,0,0,0,100,0),
(@PATH,9,-2719.3152,1324.5756,33.971096,NULL,0,0,0,100,0),
(@PATH,10,-2746.1182,1311.1138,33.605423,NULL,0,0,0,100,0);
SET @NPC := 25117;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2641.9058,`position_y`=1268.142,`position_z`=23.927183 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1 ,-2641.9058,1268.142,23.927183,NULL,0,0,0,100,0),
(@PATH,2 ,-2650.1309,1277.2792,25.416039,NULL,0,0,0,100,0),
(@PATH,3 ,-2673.4944,1283.977,29.292665,NULL,0,0,0,100,0),
(@PATH,4 ,-2691.0823,1290.7217,33.745926,NULL,0,0,0,100,0),
(@PATH,5 ,-2705.8076,1298.7185,32.94668,NULL,0,0,0,100,0),
(@PATH,6 ,-2709.4016,1314.3235,33.262363,NULL,0,0,0,100,0),
(@PATH,7 ,-2705.8076,1298.7185,32.94668,NULL,0,0,0,100,0),
(@PATH,8 ,-2691.0823,1290.7217,33.745926,NULL,0,0,0,100,0),
(@PATH,9 ,-2673.4944,1283.977,29.292665,NULL,0,0,0,100,0),
(@PATH,10,-2650.1309,1277.2792,25.416039,NULL,0,0,0,100,0);
SET @NPC := 25098;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2912.6753,`position_y`=1318.8967,`position_z`=6.3883452 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1 ,-2912.6753,1318.8967,6.3883452,NULL,0,0,0,100,0),
(@PATH,2 ,-2906.6418,1313.7617,6.6383452,NULL,0,0,0,100,0),
(@PATH,3 ,-2893.7417,1307.0945,6.3466606,NULL,0,0,0,100,0),
(@PATH,4 ,-2880.6794,1305.1588,5.410137,NULL,0,0,0,100,0),
(@PATH,5 ,-2858.01,1298.7424,6.7960815,NULL,0,0,0,100,0),
(@PATH,6 ,-2842.9072,1292.9916,6.1282473,NULL,0,0,0,100,0),
(@PATH,7 ,-2843.1912,1280.0597,7.683124,NULL,0,0,0,100,0),
(@PATH,8 ,-2848.1216,1266.8289,8.083833,NULL,0,0,0,100,0),
(@PATH,9 ,-2853.8364,1255.8324,6.9199033,NULL,0,0,0,100,0),
(@PATH,10,-2842.4497,1243.7681,6.7960606,NULL,0,0,0,100,0),
(@PATH,11,-2853.8364,1255.8324,6.9199033,NULL,0,0,0,100,0),
(@PATH,12,-2848.1216,1266.8289,8.083833,NULL,0,0,0,100,0),
(@PATH,13,-2843.1912,1280.0597,7.683124,NULL,0,0,0,100,0),
(@PATH,14,-2842.9072,1292.9916,6.1282473,NULL,0,0,0,100,0),
(@PATH,15,-2858.01,1298.7424,6.7960815,NULL,0,0,0,100,0),
(@PATH,16,-2880.6794,1305.1588,5.410137,NULL,0,0,0,100,0),
(@PATH,17,-2893.7417,1307.0945,6.3466606,NULL,0,0,0,100,0),
(@PATH,18,-2906.6418,1313.7617,6.6383452,NULL,0,0,0,100,0);
SET @NPC := 25114;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2709.4016,`position_y`=1314.3235,`position_z`=33.262363 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1 ,-2709.4016,1314.3235,33.262363,NULL,0,0,0,100,0),
(@PATH,2 ,-2705.8076,1298.7185,32.94668,NULL,0,0,0,100,0),
(@PATH,3 ,-2691.0823,1290.7217,33.745926,NULL,0,0,0,100,0),
(@PATH,4 ,-2673.4944,1283.977,29.292665,NULL,0,0,0,100,0),
(@PATH,5 ,-2650.1309,1277.2792,25.416039,NULL,0,0,0,100,0),
(@PATH,6 ,-2641.9058,1268.142,23.927183,NULL,0,0,0,100,0),
(@PATH,7 ,-2650.1309,1277.2792,25.416039,NULL,0,0,0,100,0),
(@PATH,8 ,-2673.4944,1283.977,29.292665,NULL,0,0,0,100,0),
(@PATH,9 ,-2691.0823,1290.7217,33.745926,NULL,0,0,0,100,0),
(@PATH,10,-2705.8076,1298.7185,32.94668,NULL,0,0,0,100,0);
SET @NPC := 25116;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2643.4558,`position_y`=1364.8234,`position_z`=35.86493 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1 ,-2643.4558,1364.8234,35.86493,NULL,0,0,0,100,0),
(@PATH,2 ,-2634.716,1374.6797,36.22216,NULL,0,0,0,100,0),
(@PATH,3 ,-2626.5833,1383.2074,37.50213,NULL,0,0,0,100,0),
(@PATH,4 ,-2618.2117,1387.6519,39.28746,NULL,0,0,0,100,0),
(@PATH,5 ,-2611.0234,1393.2262,41.428757,NULL,0,0,0,100,0),
(@PATH,6 ,-2602.1787,1400.6476,41.767567,NULL,0,0,0,100,0),
(@PATH,7 ,-2611.0234,1393.2262,41.428757,NULL,0,0,0,100,0),
(@PATH,8 ,-2618.2117,1387.6519,39.28746,NULL,0,0,0,100,0),
(@PATH,9 ,-2626.5833,1383.2074,37.50213,NULL,0,0,0,100,0),
(@PATH,10,-2634.716,1374.6797,36.22216,NULL,0,0,0,100,0);
SET @NPC := 25099;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2809.3833,`position_y`=1356.3115,`position_z`=37.325497 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-2809.3833,1356.3115,37.325497,NULL,0,0,0,100,0),
(@PATH,2,-2804.8496,1338.0927,36.000645,NULL,0,0,0,100,0),
(@PATH,3,-2784.9128,1322.3423,33.37369,NULL,0,0,0,100,0),
(@PATH,4,-2772.6155,1327.1848,33.624535,NULL,0,0,0,100,0),
(@PATH,5,-2767.8467,1360.8962,35.79723,NULL,0,0,0,100,0),
(@PATH,6,-2784.864,1388.3601,38.49067,NULL,0,0,0,100,0),
(@PATH,7,-2801.9087,1382.2137,38.60972,NULL,0,0,0,100,0);
SET @NPC := 25113;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2655.3274,`position_y`=1202.3822,`position_z`=6.115521 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-2655.3274,1202.3822,6.115521,NULL,0,0,0,100,0),
(@PATH,2,-2666.605,1190.8188,3.529532,NULL,0,0,0,100,0),
(@PATH,3,-2679.0286,1182.2574,4.7928033,NULL,0,0,0,100,0),
(@PATH,4,-2699.4224,1167.3142,5.547194,NULL,0,0,0,100,0),
(@PATH,5,-2679.0286,1182.2574,4.7928033,NULL,0,0,0,100,0),
(@PATH,6,-2666.6719,1190.7727,3.5094023,NULL,0,0,0,100,0);
SET @NPC := 25115;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2634.4636,`position_y`=1345.4458,`position_z`=35.481934 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-2634.4636,1345.4458,35.481934,NULL,0,0,0,100,0),
(@PATH,2,-2620.018,1353.861,37.13554,NULL,0,0,0,100,0),
(@PATH,3,-2598.73,1358.416,38.889954,NULL,0,0,0,100,0),
(@PATH,4,-2590.0383,1365.4989,40.473846,NULL,0,0,0,100,0),
(@PATH,5,-2598.73,1358.416,38.889954,NULL,0,0,0,100,0),
(@PATH,6,-2620.018,1353.861,37.13554,NULL,0,0,0,100,0);
SET @NPC := 25743;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2779.55,`position_y`=1279.2603,`position_z`=34.014435 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-2779.55,1279.2603,34.014435,NULL,0,0,0,100,0),
(@PATH,2,-2799.971,1261.2897,33.647408,NULL,0,0,0,100,0),
(@PATH,3,-2810.8,1254.8387,31.11925,NULL,0,0,0,100,0),
(@PATH,4,-2799.971,1261.2897,33.647408,NULL,0,0,0,100,0);
DELETE FROM `creature_formations` WHERE `memberGUID` IN (25743, 25744);
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
(25743, 25743, 0, 0, 3),
(25743, 25744, 3, 90, 515);
-- Sorceress (-25065)
DELETE FROM `waypoints` WHERE `entry`=1976700 AND `point_comment`='Coilskar Sorceress';
INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `orientation`, `point_comment`) VALUES
(1976700,1,-2699.7734,1352.9802,32.96573,NULL,'Coilskar Sorceress'),
(1976700,2,-2695.3882,1362.5975,35.82666,NULL,'Coilskar Sorceress'),
(1976700,3,-2687.7195,1368.574,37.474815,NULL,'Coilskar Sorceress'),
(1976700,4,-2677.8486,1371.7639,36.15712,NULL,'Coilskar Sorceress'),
(1976700,5,-2668.1536,1368.8298,33.586617,NULL,'Coilskar Sorceress'),
(1976700,6,-2677.8486,1371.7639,36.15712,NULL,'Coilskar Sorceress'),
(1976700,7,-2687.6226,1368.6053,37.475197,NULL,'Coilskar Sorceress'),
(1976700,8,-2695.3882,1362.5975,35.82666,NULL,'Coilskar Sorceress'),
(1976700,9,-2699.7734,1352.9802,32.96573,NULL,'Coilskar Sorceress');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 19767);
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
(19767, 0, 0, 0, 0, 0, 100, 0, 0, 1000, 2500, 4700, 0, 11, 32011, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - In Combat - Cast \'Water Bolt\''),
(19767, 0, 1, 0, 2, 0, 100, 1, 0, 80, 0, 0, 0, 11, 38026, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Between 0-80% Health - Cast \'Viscous Shield\' (No Repeat)');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = -25065);
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
(-25065, 0, 0, 0, 0, 0, 100, 0, 0, 1000, 2500, 4700, 0, 11, 32011, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - In Combat - Cast \'Water Bolt\''),
(-25065, 0, 1, 0, 2, 0, 100, 1, 0, 80, 0, 0, 0, 11, 38026, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Between 0-80% Health - Cast \'Viscous Shield\' (No Repeat)'),
(-25065, 0, 1001, 1002, 11, 0, 100, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - On Respawn - Set Event Phase 1'),
(-25065, 0, 1002, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 53, 0, 1976700, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - On Respawn - Start Waypoint'),
(-25065, 0, 1003, 0, 1, 0, 100, 0, 60000, 120000, 60000, 120000, 0, 80, 1976700, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Out of Combat - Run Script');
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 1976700);
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
(1976700, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 54, 13000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Actionlist - Pause Waypoint'),
(1976700, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 2, 0, 0, 19, 19765, 30, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Actionlist - Move To Closest Creature \'Coilskar Myrmidon\''),
(1976700, 9, 2, 0, 0, 0, 100, 0, 3600, 3600, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Actionlist - Say Line 0'),
(1976700, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 19765, 10, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Actionlist - Set Data 1 1'),
(1976700, 9, 5, 0, 0, 0, 100, 0, 2600, 2600, 0, 0, 0, 45, 2, 2, 0, 0, 0, 0, 19, 19765, 10, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Actionlist - Set Data 2 2'),
(1976700, 9, 6, 0, 0, 0, 100, 0, 1200, 1200, 0, 0, 0, 5, 15, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Sorceress - Actionlist - Play Emote 15');
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 19765);
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
(19765, 0, 0, 0, 9, 0, 100, 0, 0, 20, 11500, 13000, 0, 11, 38027, 32, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Myrmidon - Within 0-20 Range - Cast \'Boiling Blood\''),
(19765, 0, 1, 0, 38, 0, 100, 0, 1, 1, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 19767, 10, 0, 0, 0, 0, 0, 0, 'Coilskar Myrmidon - On Data Set 1 1 - Set Orientation Closest Creature \'Coilskar Sorceress\''),
(19765, 0, 2, 0, 38, 0, 100, 0, 2, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilskar Myrmidon - On Data Set 2 2 - Say Line 0');
DELETE FROM `creature_text` WHERE `CreatureID` IN (19767, 19765) AND `GroupID`=0;
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Probability`, `Emote`, `BroadcastTextId`, `comment`) VALUES
(19767, 0, 0, 'Stay alert!', 12, 100, 1, 17711, 'Coilskar Sorceress'),
(19767, 0, 1, 'Be wary of intruders.', 12, 100, 1, 17713, 'Coilskar Sorceress'),
(19767, 0, 2, 'We must not fail the master.', 12, 100, 1, 17715, 'Coilskar Sorceress'),
(19765, 0, 0, 'Understood.', 12, 100, 1, 18146, 'Coilskar Myrmidon'),
(19765, 0, 1, 'We will not fail.', 12, 100, 1, 18410, 'Coilskar Myrmidon');
-- EmoteState for Myrmidons
DELETE FROM `creature_equip_template` WHERE (`CreatureID` = 19765);
INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `ItemID2`, `ItemID3`, `VerifiedBuild`) VALUES
(19765, 1, 28965, 0, 0, 18019),
(19765, 2, 2028, 0, 0, 18019);
DELETE FROM `creature_addon` WHERE `guid` IN (24946, 24974);
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES
(24946,0,0,0,1,173,0, ''),
(24974,0,0,0,1,173,0, '');
@@ -0,0 +1,4 @@
-- DB update 2023_02_19_01 -> 2023_02_19_02
--
DELETE FROM `npc_vendor` WHERE `entry` = 20130;
UPDATE `creature_template` SET `npcflag` = `npcflag`&~(128) WHERE `entry` = 20130;
@@ -0,0 +1,44 @@
-- DB update 2023_02_19_02 -> 2023_02_19_03
--
DELETE FROM `waypoints` WHERE `entry`=17848;
DELETE FROM `waypoint_data` WHERE `id` IN (178480,178481);
INSERT INTO `waypoint_data` VALUES
(178480,1,2145.6123,124.77572,76.18501,NULL,0,1,0,100,0),
(178480,2,2146.5122,117.58604,76.04292,NULL,0,1,0,100,0),
(178480,3,2148.4314,101.62945,73.041336,NULL,0,1,0,100,0),
(178480,4,2151.864,88.83778,69.48506,NULL,0,1,0,100,0),
(178480,5,2149.0708,83.53852,69.1086,NULL,0,1,0,100,0),
(178480,6,2142.1206,79.21365,68.06233,NULL,0,1,0,100,0),
(178480,7,2132.0854,73.20009,64.77117,NULL,0,1,0,100,0),
(178480,8,2128.2366,71.17936,64.41205,NULL,1200,1,0,100,0),
(178480,9,2125.2478,89.376305,54.71777,NULL,0,1,0,100,0),
(178480,10,2119.832,93.372505,52.565914,NULL,0,1,0,100,0),
(178480,11,2113.8572,93.34234,52.590572,NULL,0,1,0,100,0),
(178481,1,2113.8572,93.34234,52.590572,NULL,0,0,0,100,0),
(178481,2,2111.2415,103.42893,52.565914,NULL,0,0,0,100,0),
(178481,3,2109.1719,113.15994,52.90283,NULL,0,0,0,100,0),
(178481,4,2107.6462,126.1786,52.565914,NULL,0,0,0,100,0),
(178481,5,2107.979,138.13727,52.546013,NULL,0,0,0,100,0),
(178481,6,2112.6594,153.49968,52.56591,NULL,0,0,0,100,0),
(178481,7,2120.5117,168.8968,52.81591,NULL,0,0,0,100,0),
(178481,8,2124.643,175.81912,52.92492,NULL,0,0,0,100,0),
(178481,9,2128.9448,182.75977,53.179924,NULL,0,0,0,100,0),
(178481,10,2138.4214,195.35818,52.565907,NULL,0,0,0,100,0),
(178481,11,2147.3398,204.56651,52.92638,NULL,0,0,0,100,0),
(178481,12,2160.0496,214.06728,52.56542,NULL,0,0,0,100,0),
(178481,13,2172.4766,224.48166,52.56554,NULL,0,0,0,100,0),
(178481,14,2179.8486,230.77225,52.565907,NULL,0,0,0,100,0),
(178481,15,2172.4766,224.48166,52.56554,NULL,0,0,0,100,0),
(178481,16,2160.0496,214.06728,52.56542,NULL,0,0,0,100,0),
(178481,17,2147.3398,204.56651,52.92638,NULL,0,0,0,100,0),
(178481,18,2138.4214,195.35818,52.565907,NULL,0,0,0,100,0),
(178481,19,2128.9448,182.75977,53.179924,NULL,0,0,0,100,0),
(178481,20,2124.643,175.81912,52.92492,NULL,0,0,0,100,0),
(178481,21,2120.5117,168.8968,52.81591,NULL,0,0,0,100,0),
(178481,22,2112.6594,153.49968,52.56591,NULL,0,0,0,100,0),
(178481,23,2107.979,138.13727,52.546013,NULL,0,0,0,100,0),
(178481,24,2107.6462,126.1786,52.565914,NULL,0,0,0,100,0),
(178481,25,2109.1719,113.15994,52.90283,NULL,0,0,0,100,0),
(178481,26,2111.2415,103.42893,52.565914,NULL,0,0,0,100,0);
@@ -0,0 +1,7 @@
-- DB update 2023_02_19_03 -> 2023_02_19_04
--
UPDATE `creature_onkill_reputation` SET `MaxStanding1`=4 WHERE `creature_id` IN (18394,18429);
DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (20262,20252);
INSERT INTO `creature_onkill_reputation` VALUES
(20262,933,0,7,0,15,0,0,0,0),
(20252,933,0,7,0,15,0,0,0,0);
@@ -0,0 +1,3 @@
-- DB update 2023_02_19_04 -> 2023_02_19_05
--
UPDATE `smart_scripts` SET `event_type`=0, `event_param1`=2000, `event_param2`=6000, `event_param3`=12000, `target_type`=5, `target_param1`=25 WHERE `entryorguid`=18311 AND `source_type`=0 AND `id`=4;
@@ -0,0 +1,3 @@
-- DB update 2023_02_19_05 -> 2023_02_19_06
-- Fenrus the Devourer - Increase MaxDistance from 100 to 200
UPDATE `smart_scripts` SET `target_param2` = 200 WHERE `entryorguid` = 4274 AND `target_param1` = 4275;
+247
View File
@@ -0,0 +1,247 @@
-- DB update 2023_02_19_06 -> 2023_02_19_07
-- Marticar (18680)
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18680);
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
(18680, 0, 0, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 11, 32039, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Marticar - On Aggro - Cast \'Magnetic Pull\''),
(18680, 0, 1, 0, 9, 0, 100, 0, 0, 8, 12000, 16000, 0, 11, 35493, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Marticar - Within 0-8 Range - Cast \'Forked Lightning Tether\''),
(18680, 0, 2, 0, 9, 0, 100, 0, 10, 40, 12000, 16000, 0, 11, 32039, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Marticar - Within 10-40 Range - Cast \'Magnetic Pull\'');
-- Coilfang Emissary (18681)
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18681);
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
(18681, 0, 0, 0, 9, 0, 100, 0, 0, 10, 8000, 15000, 0, 11, 33860, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Emissary - Within 0-10 Range - Cast \'Arcane Explosion\''),
(18681, 0, 1, 0, 0, 0, 100, 0, 6000, 10000, 14000, 21000, 0, 11, 39207, 64, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Emissary - In Combat - Cast \'Water Spout\''),
(18681, 0, 2, 0, 9, 0, 100, 0, 0, 10, 12000, 16000, 0, 11, 11831, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Emissary - Within 0-10 Range - Cast \'Frost Nova\''),
(18681, 0, 3, 0, 9, 0, 100, 0, 0, 40, 3400, 4800, 0, 11, 20297, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Coilfang Emissary - Within 0-40 Range - Cast \'Frostbolt\'');
-- Bog Lurker (18682)
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 18682);
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
(18682, 0, 0, 0, 9, 0, 100, 0, 0, 5, 12000, 16000, 0, 11, 35238, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 'Bog Lurker - Within 0-5 Range - Cast \'War Stomp\''),
(18682, 0, 1, 0, 2, 0, 100, 0, 0, 50, 22000, 26000, 0, 11, 34163, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bog Lurker - Between 0-50% Health - Cast \'Fungal Regrowth\'');
SET @CGUID := 25101;
DELETE FROM `creature` WHERE `id1` IN (18680, 18681, 18682);
INSERT INTO `creature` (`guid`, `id1`, `map`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`, `wander_distance`) VALUES
-- Marticar
(@CGUID+0, 18680, 530, 0, 909.798, 6974.82, 20.7275, 4.35157, 82800, 2, 0),
(@CGUID+1, 18680, 530, 0, 641.629, 5601.53, 21.7289, 1.20404, 104400, 2, 0),
(@CGUID+2, 18680, 530, 0, -35.4279, 8945.68, 18.9934, 0.34089, 122400, 2, 0),
-- Coilfang Emissary
(@CGUID+3, 18681, 530, 1, 356.366, 8154.59, 23.4664, 5.86458, 79200, 1, 20),
(@CGUID+4, 18681, 530, 1, 658.75, 6322.29, 20.6887, 2.45849, 93600, 1, 20),
(@CGUID+5, 18681, 530, 1, -246.269, 6272.19, 21.7947, 4.60655, 100800, 1, 20),
(@CGUID+6, 18681, 530, 1, -706.367, 5922.93, 21.7108, 2.34853, 115200, 1, 20),
-- Bog Lurker
(@CGUID+7, 18682, 530, 0, -294.88, 6951.41, 19.3571, 5.86619, 10506, 2, 0),
(@CGUID+8, 18682, 530, 0, -1023.69, 5095.25, 17.3841, 6.16307, 10506, 2, 0),
(@CGUID+9, 18682, 530, 0, 1172.09, 8023.15, 17.7483, 0.670779, 10506, 2, 0);
DELETE FROM `creature_addon` WHERE (`guid` IN (@CGUID+0,@CGUID+1,@CGUID+2,@CGUID+7,@CGUID+8,@CGUID+9));
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(@CGUID+0, (@CGUID+0)*10, 0, 0, 0, 0, 0, ''),
(@CGUID+1, (@CGUID+1)*10, 0, 0, 0, 0, 0, ''),
(@CGUID+2, (@CGUID+2)*10, 0, 0, 0, 0, 0, ''),
(@CGUID+7, (@CGUID+7)*10, 0, 0, 0, 0, 0, ''),
(@CGUID+8, (@CGUID+8)*10, 0, 0, 0, 0, 0, ''),
(@CGUID+9, (@CGUID+9)*10, 0, 0, 0, 0, 0, '');
DELETE FROM `waypoint_data` WHERE `id` IN ((@CGUID+0)*10,(@CGUID+1)*10,(@CGUID+2)*10,(@CGUID+7)*10,(@CGUID+8)*10,(@CGUID+9)*10);
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES
((@CGUID+0)*10, 1, 909.798, 6974.82, 20.6049),
((@CGUID+0)*10, 2, 925.955, 6984.85, 17.5734),
((@CGUID+0)*10, 3, 942.871, 7042.5, 17.8393),
((@CGUID+0)*10, 4, 934.748, 7083.6, 17.8208),
((@CGUID+0)*10, 5, 909.849, 7105.03, 19.3418),
((@CGUID+0)*10, 6, 882.136, 7096.42, 17.9662),
((@CGUID+0)*10, 7, 817.75, 7147.84, 17.446),
((@CGUID+0)*10, 8, 805.416, 7221.27, 17.3745),
((@CGUID+0)*10, 9, 770.959, 7293.45, 17.4865),
((@CGUID+0)*10, 10, 833.662, 7369.67, 17.6963),
((@CGUID+0)*10, 11, 811.041, 7439.55, 17.6798),
((@CGUID+0)*10, 12, 822.635, 7511.4, 17.7967),
((@CGUID+0)*10, 13, 777.672, 7550.08, 17.6132),
((@CGUID+0)*10, 14, 663.722, 7553.98, 17.3779),
((@CGUID+0)*10, 15, 606.491, 7575.89, 17.434),
((@CGUID+0)*10, 16, 663.722, 7553.98, 17.3779),
((@CGUID+0)*10, 17, 777.672, 7550.08, 17.6132),
((@CGUID+0)*10, 18, 822.635, 7511.4, 17.7967),
((@CGUID+0)*10, 19, 811.041, 7439.55, 17.6798),
((@CGUID+0)*10, 20, 833.662, 7369.67, 17.6963),
((@CGUID+0)*10, 21, 770.959, 7293.45, 17.4865),
((@CGUID+0)*10, 22, 805.416, 7221.27, 17.3745),
((@CGUID+0)*10, 23, 817.75, 7147.84, 17.446),
((@CGUID+0)*10, 24, 882.136, 7096.42, 17.9662),
((@CGUID+0)*10, 25, 909.849, 7105.03, 19.3418),
((@CGUID+0)*10, 26, 934.748, 7083.6, 17.8208),
((@CGUID+0)*10, 27, 942.871, 7042.5, 17.8393),
((@CGUID+0)*10, 28, 925.955, 6984.85, 17.5734),
((@CGUID+1)*10, 1, 641.629, 5601.53, 21.7289),
((@CGUID+1)*10, 2, 681.779, 5664.12, 23.5277),
((@CGUID+1)*10, 3, 719.717, 5699.03, 21.9689),
((@CGUID+1)*10, 4, 718.233, 5734.3, 17.5044),
((@CGUID+1)*10, 5, 724.722, 5783.54, 17.7705),
((@CGUID+1)*10, 6, 745.975, 5811.38, 17.2784),
((@CGUID+1)*10, 7, 739.645, 5898.54, 17.3483),
((@CGUID+1)*10, 8, 700.262, 5944.62, 17.5259),
((@CGUID+1)*10, 9, 653.386, 5949.96, 17.3741),
((@CGUID+1)*10, 10, 616.609, 5975.77, 17.3742),
((@CGUID+1)*10, 11, 594.179, 5962.99, 17.3778),
((@CGUID+1)*10, 12, 583.11, 5926.56, 17.4075),
((@CGUID+1)*10, 13, 552.184, 5898.35, 17.3766),
((@CGUID+1)*10, 14, 528.946, 5873.05, 22.473),
((@CGUID+1)*10, 15, 507.433, 5839.19, 21.8951),
((@CGUID+1)*10, 16, 496.027, 5819.39, 17.3948),
((@CGUID+1)*10, 17, 449.619, 5753.03, 17.3779),
((@CGUID+1)*10, 18, 429.245, 5718.28, 17.3731),
((@CGUID+1)*10, 19, 386.39, 5727.86, 17.3775),
((@CGUID+1)*10, 20, 334.89, 5652.7, 17.3743),
((@CGUID+1)*10, 21, 235.352, 5652.17, 17.3747),
((@CGUID+1)*10, 22, 191.524, 5600.89, 17.3743),
((@CGUID+1)*10, 23, 155.669, 5576.97, 17.3743),
((@CGUID+1)*10, 24, 115.796, 5504.53, 17.6996),
((@CGUID+1)*10, 25, 155.669, 5576.97, 17.3743),
((@CGUID+1)*10, 26, 191.524, 5600.89, 17.3743),
((@CGUID+1)*10, 27, 235.352, 5652.17, 17.3747),
((@CGUID+1)*10, 28, 334.89, 5652.7, 17.3743),
((@CGUID+1)*10, 29, 386.39, 5727.86, 17.3775),
((@CGUID+1)*10, 30, 429.245, 5718.28, 17.3731),
((@CGUID+1)*10, 31, 449.619, 5753.03, 17.3779),
((@CGUID+1)*10, 32, 496.027, 5819.39, 17.3948),
((@CGUID+1)*10, 33, 507.433, 5839.19, 21.8951),
((@CGUID+1)*10, 34, 528.946, 5873.05, 22.473),
((@CGUID+1)*10, 35, 552.184, 5898.35, 17.3766),
((@CGUID+1)*10, 36, 583.11, 5926.56, 17.4075),
((@CGUID+1)*10, 37, 594.179, 5962.99, 17.3778),
((@CGUID+1)*10, 38, 616.609, 5975.77, 17.3742),
((@CGUID+1)*10, 39, 653.386, 5949.96, 17.3741),
((@CGUID+1)*10, 40, 700.262, 5944.62, 17.5259),
((@CGUID+1)*10, 41, 739.645, 5898.54, 17.3483),
((@CGUID+1)*10, 42, 745.975, 5811.38, 17.2784),
((@CGUID+1)*10, 43, 724.722, 5783.54, 17.7705),
((@CGUID+1)*10, 44, 718.233, 5734.3, 17.5044),
((@CGUID+1)*10, 45, 719.717, 5699.03, 21.9689),
((@CGUID+1)*10, 46, 681.779, 5664.12, 23.5277),
((@CGUID+2)*10, 1, -35.4279, 8945.68, 18.9934),
((@CGUID+2)*10, 2, 17.7719, 8948.13, 20.111),
((@CGUID+2)*10, 3, 61.182, 8973.75, 24.6196),
((@CGUID+2)*10, 4, 91.2396, 8982.79, 25.6668),
((@CGUID+2)*10, 5, 106.845, 8982.03, 21.4199),
((@CGUID+2)*10, 6, 201.82, 8958.88, 17.6188),
((@CGUID+2)*10, 7, 222.732, 8932.57, 19.2304),
((@CGUID+2)*10, 8, 241.119, 8925.89, 24.0813),
((@CGUID+2)*10, 9, 278.243, 8917.19, 26.3384),
((@CGUID+2)*10, 10, 312.837, 8915.34, 28.0207),
((@CGUID+2)*10, 11, 330.796, 8887.92, 18.6883),
((@CGUID+2)*10, 12, 345.415, 8860.49, 19.3178),
((@CGUID+2)*10, 13, 395.666, 8822.86, 18.57),
((@CGUID+2)*10, 14, 381.241, 8782.36, 19.5365),
((@CGUID+2)*10, 15, 400.399, 8721.9, 19.935),
((@CGUID+2)*10, 16, 394.703, 8695.2, 22.0397),
((@CGUID+2)*10, 17, 450.314, 8638.34, 20.7326),
((@CGUID+2)*10, 18, 493.008, 8666.39, 19.728),
((@CGUID+2)*10, 19, 502.636, 8691.85, 22.1677),
((@CGUID+2)*10, 20, 555.124, 8676.63, 20.9415),
((@CGUID+2)*10, 21, 648.747, 8661.43, 18.4553),
((@CGUID+2)*10, 22, 674.204, 8656.4, 21.7503),
((@CGUID+2)*10, 23, 714.707, 8638.13, 18.9595),
((@CGUID+2)*10, 24, 760.368, 8597.12, 17.3747),
((@CGUID+2)*10, 25, 902.179, 8556.58, 17.3745),
((@CGUID+2)*10, 26, 760.368, 8597.12, 17.3747),
((@CGUID+2)*10, 27, 714.707, 8638.13, 18.9595),
((@CGUID+2)*10, 28, 674.204, 8656.4, 21.7503),
((@CGUID+2)*10, 29, 648.747, 8661.43, 18.4553),
((@CGUID+2)*10, 30, 555.124, 8676.63, 20.9415),
((@CGUID+2)*10, 31, 502.636, 8691.85, 22.1677),
((@CGUID+2)*10, 32, 493.008, 8666.39, 19.728),
((@CGUID+2)*10, 33, 450.314, 8638.34, 20.7326),
((@CGUID+2)*10, 34, 394.703, 8695.2, 22.0397),
((@CGUID+2)*10, 35, 400.399, 8721.9, 19.935),
((@CGUID+2)*10, 36, 381.241, 8782.36, 19.5365),
((@CGUID+2)*10, 37, 395.666, 8822.86, 18.57),
((@CGUID+2)*10, 38, 345.415, 8860.49, 19.3178),
((@CGUID+2)*10, 39, 330.796, 8887.92, 18.6883),
((@CGUID+2)*10, 40, 312.837, 8915.34, 28.0207),
((@CGUID+2)*10, 41, 278.243, 8917.19, 26.3384),
((@CGUID+2)*10, 42, 241.119, 8925.89, 24.0813),
((@CGUID+2)*10, 43, 222.732, 8932.57, 19.2304),
((@CGUID+2)*10, 44, 201.82, 8958.88, 17.6188),
((@CGUID+2)*10, 45, 106.845, 8982.03, 21.4199),
((@CGUID+2)*10, 46, 91.2396, 8982.79, 25.6668),
((@CGUID+2)*10, 47, 61.182, 8973.75, 24.6196),
((@CGUID+2)*10, 48, 17.7719, 8948.13, 20.111),
((@CGUID+7)*10, 1, -294.88, 6951.41, 19.3571),
((@CGUID+7)*10, 2, -264.713, 6967.21, 18.5643),
((@CGUID+7)*10, 3, -238.936, 6962.83, 18.4649),
((@CGUID+7)*10, 4, -223.667, 6933.64, 18.847),
((@CGUID+7)*10, 5, -206.707, 6923.1, 19.2127),
((@CGUID+7)*10, 6, -174.357, 6912.01, 23.7861),
((@CGUID+7)*10, 7, -133.379, 6904.8, 19.1708),
((@CGUID+7)*10, 8, -89.2117, 6888.52, 18.7763),
((@CGUID+7)*10, 9, -10.2975, 6909.53, 18.2978),
((@CGUID+7)*10, 10, -18.0022, 6939.27, 21.741),
((@CGUID+7)*10, 11, -25.1892, 6997.55, 20.889),
((@CGUID+7)*10, 12, -24.8436, 7035.61, 17.8247),
((@CGUID+7)*10, 13, 6.85314, 7099.44, 17.3786),
((@CGUID+7)*10, 14, 25.5966, 7264.21, 17.4588),
((@CGUID+7)*10, 15, 12.2616, 7293.45, 17.3838),
((@CGUID+7)*10, 16, -41.0481, 7273.87, 17.9097),
((@CGUID+7)*10, 17, -85.6322, 7318.57, 17.6278),
((@CGUID+7)*10, 18, -89.8231, 7394.33, 17.6309),
((@CGUID+7)*10, 19, -163.533, 7388.21, 17.2929),
((@CGUID+7)*10, 20, -188.143, 7374.22, 17.5246),
((@CGUID+7)*10, 21, -209.081, 7387.84, 19.2417),
((@CGUID+7)*10, 22, -223.03, 7406.85, 17.6799),
((@CGUID+7)*10, 23, -316.638, 7413.45, 17.396),
((@CGUID+8)*10, 1, -1023.69, 5095.25, 17.3839),
((@CGUID+8)*10, 2, -931.962, 5086.47, 17.7585),
((@CGUID+8)*10, 3, -814.518, 5125.51, 17.8079),
((@CGUID+8)*10, 4, -777.376, 5149.43, 17.8128),
((@CGUID+8)*10, 5, -680.908, 5288.44, 17.7527),
((@CGUID+8)*10, 6, -689.065, 5349.76, 17.9837),
((@CGUID+9)*10, 1, 1172.09, 8023.15, 17.7483),
((@CGUID+9)*10, 2, 1205.67, 8081.13, 18.0472),
((@CGUID+9)*10, 3, 1246.97, 8119.73, 18.0185),
((@CGUID+9)*10, 4, 1244.49, 8164.48, 19.4185),
((@CGUID+9)*10, 5, 1223.65, 8202.27, 17.7094),
((@CGUID+9)*10, 6, 1221.96, 8226.97, 17.6808),
((@CGUID+9)*10, 7, 1197.53, 8287.43, 18.2173),
((@CGUID+9)*10, 8, 1216.92, 8311.79, 18.6032),
((@CGUID+9)*10, 9, 1196.57, 8343.54, 17.3991),
((@CGUID+9)*10, 10, 1088.8, 8342.08, 17.3746),
((@CGUID+9)*10, 11, 1045.06, 8342.71, 21.9398),
((@CGUID+9)*10, 12, 1011.94, 8349.03, 19.6497),
((@CGUID+9)*10, 13, 930.204, 8321.25, 17.427),
((@CGUID+9)*10, 14, 906.417, 8281.23, 18.9275),
((@CGUID+9)*10, 15, 908.587, 8226.88, 18.308),
((@CGUID+9)*10, 16, 942.57, 8148.69, 17.3847),
((@CGUID+9)*10, 17, 1006.13, 8155.76, 17.3811),
((@CGUID+9)*10, 18, 1059.14, 8110.92, 17.4296),
((@CGUID+9)*10, 19, 1108.14, 8112.69, 17.3877),
((@CGUID+9)*10, 20, 1140.55, 8059.55, 17.6974),
((@CGUID+9)*10, 21, 1151.68, 8029.68, 17.6969);
DELETE FROM `pool_template` WHERE `entry`=1118 AND `description`='Marticar (18680)';
DELETE FROM `pool_template` WHERE `entry`=1119 AND `description`='Coilfang Emissary (18681)';
DELETE FROM `pool_template` WHERE `entry`=1120 AND `description`='Bog Lurker (18682)';
INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES
(1118, 1, 'Marticar (18680)'),
(1119, 1, 'Coilfang Emissary (18681)'),
(1120, 1, 'Bog Lurker (18682)');
DELETE FROM `pool_creature` WHERE `pool_entry`=1118 AND `description`='Marticar (18680)';
DELETE FROM `pool_creature` WHERE `pool_entry`=1119 AND `description`='Coilfang Emissary (18681)';
DELETE FROM `pool_creature` WHERE `pool_entry`=1120 AND `description`='Bog Lurker (18682)';
INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES
(@CGUID+0, 1118, 0, 'Marticar (18680)'),
(@CGUID+1, 1118, 0, 'Marticar (18680)'),
(@CGUID+2, 1118, 0, 'Marticar (18680)'),
(@CGUID+3, 1119, 0, 'Coilfang Emissary (18681)'),
(@CGUID+4, 1119, 0, 'Coilfang Emissary (18681)'),
(@CGUID+5, 1119, 0, 'Coilfang Emissary (18681)'),
(@CGUID+6, 1119, 0, 'Coilfang Emissary (18681)'),
(@CGUID+7, 1120, 0, 'Bog Lurker (18682)'),
(@CGUID+8, 1120, 0, 'Bog Lurker (18682)'),
(@CGUID+9, 1120, 0, 'Bog Lurker (18682)');
@@ -0,0 +1,17 @@
-- DB update 2023_02_19_07 -> 2023_02_19_08
--
DELETE FROM `gameobject_queststarter` WHERE (`quest` = 2954) AND (`id` IN (142343));
INSERT INTO `gameobject_queststarter` (`id`, `quest`) VALUES
(142343, 2954);
DELETE FROM `creature_queststarter` WHERE `quest` = 2954;
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 142343) AND (`source_type` = 1) 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`, `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
(142343, 1, 2, 0, 19, 0, 100, 0, 2954, 0, 0, 0, 0, 80, 14234300, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Uldum Pedestal - On Quest \'The Stone Watcher\' Taken - Run Script');
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceEntry` = 142343);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(22, 1, 142343, 1, 0, 29, 1, 7918, 10, 0, 1, 0, 0, '', 'Only summon Stone Watcher of Norgannon if there isn\'t one already spawned'),
(22, 2, 142343, 1, 0, 29, 1, 7918, 10, 0, 1, 0, 0, '', 'Only summon Stone Watcher of Norgannon if there isn\'t one already spawned'),
(22, 3, 142343, 1, 0, 29, 1, 7918, 10, 0, 1, 0, 0, '', 'Only summon Stone Watcher of Norgannon if there isn\'t one already spawned');
@@ -0,0 +1,2 @@
-- DB update 2023_02_19_08 -> 2023_02_19_09
UPDATE `creature_loot_template` SET `Chance` = 100 WHERE (`Entry` = 21778) AND (`Item` = 30712);
@@ -0,0 +1,4 @@
-- DB update 2023_02_19_09 -> 2023_02_19_10
-- add NO_MOVEMENT_UPDATE flag
UPDATE `creature_template` SET `flags_extra` = 512 WHERE (`entry` = 10506);
@@ -0,0 +1,3 @@
-- DB update 2023_02_19_10 -> 2023_02_19_11
--
UPDATE `conditions` SET `ConditionValue2`=100 WHERE `SourceGroup`=7868 AND `SourceTypeOrReferenceId` IN (14, 15);
@@ -0,0 +1,10 @@
-- DB update 2023_02_19_11 -> 2023_02_20_00
--
DELETE FROM `command` WHERE `name` = 'reload motd';
INSERT INTO `command` (`name`, `security`, `help`) VALUES
('reload motd', 3, 'Syntax: .reload motd
Reload motd table.');
UPDATE `command` SET `help`='Syntax: .server set motd $realmId $MOTD\r\n\r\nSet server Message of the day for the specified realm.' WHERE `name`='server set motd';
UPDATE `acore_string` SET `content_default`='Message of the day in realm %i changed to:\r\n%s', `locale_deDE`='Nachricht des Tages in Realm %i wurde geändert zu:\r\n%s', `locale_zhCN`='每日消息更改为 in realm %i:\r\n%s' WHERE `entry`=1101;
@@ -0,0 +1,17 @@
-- DB update 2023_02_20_00 -> 2023_02_23_00
--
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` = 2242200);
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
(2242200, 9, 0, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 0, 86, 40227, 0, 10, 73126, 20736, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blade\'s Edge - Legion - Anger Camp - Invis Bunny - Actionlist - Cross Cast \'Green Beam\''),
(2242200, 9, 1, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 0, 86, 40227, 0, 10, 73126, 20736, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blade\'s Edge - Legion - Anger Camp - Invis Bunny - Actionlist - Cross Cast \'Green Beam\''),
(2242200, 9, 2, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 0, 86, 40227, 0, 10, 73129, 20736, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blade\'s Edge - Legion - Anger Camp - Invis Bunny - Actionlist - Cross Cast \'Green Beam\''),
(2242200, 9, 3, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 0, 86, 40227, 0, 10, 73130, 20736, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blade\'s Edge - Legion - Anger Camp - Invis Bunny - Actionlist - Cross Cast \'Green Beam\''),
(2242200, 9, 4, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 0, 86, 40227, 0, 10, 73133, 20736, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blade\'s Edge - Legion - Anger Camp - Invis Bunny - Actionlist - Cross Cast \'Green Beam\''),
(2242200, 9, 5, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 0, 12, 19963, 4, 120000, 0, 0, 0, 8, 0, 0, 0, 0, 2870.55, 4814.18, 283.66, 0.34, 'Blade\'s Edge - Legion - Anger Camp - Invis Bunny - Actionlist - Summon Creature \'Doomcryer\''),
(2242200, 9, 6, 0, 0, 0, 100, 0, 30000, 30000, 0, 0, 0, 63, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blade\'s Edge - Legion - Anger Camp - Invis Bunny - Actionlist - Reset Counter'),
(2242200, 9, 7, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 11, 20736, 100, 0, 0, 0, 0, 0, 0, 'Blade\'s Edge - Legion - Anger Camp - Invis Bunny - Actionlist - Interrupt Spell'),
(2242200, 9, 8, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 104, 4, 0, 0, 0, 0, 0, 20, 185193, 100, 0, 0, 0, 0, 0, 0, 'Blade\'s Edge - Legion - Anger Camp - Invis Bunny - Actionlist - Set Gameobject Flags Interact Condition'),
(2242200, 9, 9, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 104, 4, 0, 0, 0, 0, 0, 20, 185195, 100, 0, 0, 0, 0, 0, 0, 'Blade\'s Edge - Legion - Anger Camp - Invis Bunny - Actionlist - Set Gameobject Flags Interact Condition'),
(2242200, 9, 10, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 104, 4, 0, 0, 0, 0, 0, 20, 185196, 100, 0, 0, 0, 0, 0, 0, 'Blade\'s Edge - Legion - Anger Camp - Invis Bunny - Actionlist - Set Gameobject Flags Interact Condition'),
(2242200, 9, 11, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 104, 4, 0, 0, 0, 0, 0, 20, 185197, 100, 0, 0, 0, 0, 0, 0, 'Blade\'s Edge - Legion - Anger Camp - Invis Bunny - Actionlist - Set Gameobject Flags Interact Condition'),
(2242200, 9, 12, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 104, 4, 0, 0, 0, 0, 0, 20, 185198, 100, 0, 0, 0, 0, 0, 0, 'Blade\'s Edge - Legion - Anger Camp - Invis Bunny - Actionlist - Set Gameobject Flags Interact Condition');
@@ -0,0 +1,11 @@
-- DB update 2023_02_23_00 -> 2023_02_23_01
--
DROP TABLE IF EXISTS `spell_cooldown_overrides`;
CREATE TABLE `spell_cooldown_overrides` (
`Id` INT UNSIGNED NOT NULL,
`RecoveryTime` INT UNSIGNED NOT NULL DEFAULT '0',
`CategoryRecoveryTime` INT UNSIGNED NOT NULL DEFAULT '0',
`StartRecoveryTime` INT UNSIGNED NOT NULL DEFAULT '0',
`StartRecoveryCategory` INT UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (`Id`)
);
@@ -0,0 +1,4 @@
-- DB update 2023_02_23_01 -> 2023_02_25_00
-- Scarlet Gallant - Crusader Strike - single aura stack
DELETE FROM `spell_custom_attr` WHERE `spell_id` = 14517;
INSERT INTO `spell_custom_attr` (`spell_id`, `attributes`) VALUES (14517, 4194304);
@@ -0,0 +1,3 @@
-- DB update 2023_02_25_00 -> 2023_02_25_01
-- Defias Gunpowder - add missing No Repeat flag (was already in the SAI comment)
UPDATE `smart_scripts` SET `event_flags` = `event_flags`|1 WHERE `entryorguid` = 17155 AND `source_type` = 1 AND `id` = 0;
@@ -0,0 +1,5 @@
-- DB update 2023_02_25_01 -> 2023_02_27_00
--
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceID` = 15 AND `SourceGroup` = 7435;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(15, 7435, 0, 0, 0, 5, 0, 967, 224, 0, 0, 0, 0, '', 'Koren - Show vendor option only if atleast Honored with Violet Eye');
@@ -0,0 +1,5 @@
-- DB update 2023_02_27_00 -> 2023_02_27_01
--
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 11784) 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
(11784, 0, 0, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 11, 21057, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Theradrim Guardian - On Just Died - Cast \'Summon Theradrim Shardling\'');
@@ -0,0 +1,8 @@
-- DB update 2023_02_27_01 -> 2023_02_27_02
--
DELETE FROM `creature_loot_template` WHERE `entry`= 18201 AND `Item`= 22787;
UPDATE `creature_template` SET `mingold`=0, `maxgold`=0, `lootid`=0 WHERE `entry`=18201;
DELETE FROM `skinning_loot_template` WHERE `Entry`= 2565 AND `Item`= 4234;
UPDATE `creature_template` SET `skinloot`=0 WHERE `entry`=2565;
@@ -0,0 +1,6 @@
-- DB update 2023_02_27_02 -> 2023_02_27_03
--
UPDATE `creature_template` SET `unit_flags`=`unit_flags`|536871680, `unit_flags2`=`unit_flags2`|2048 WHERE `entry` = 18035;
UPDATE `creature_template_addon` SET `bytes1` = 0, `bytes2` = 0, `auras` = '29266' WHERE `Entry` = 18035;
@@ -0,0 +1,3 @@
-- DB update 2023_02_27_03 -> 2023_02_27_04
--
UPDATE `smart_scripts` SET `event_flags`=4 WHERE `entryorguid`=17622 AND `source_type`=0 AND `id`=4;
@@ -0,0 +1,5 @@
-- DB update 2023_02_27_04 -> 2023_02_27_05
-- Baron Revilgaz - On Pirates' Day - Show appropriate gossip
DELETE FROM `conditions` WHERE `SourceGroup`=6685 AND `SourceEntry`=13062;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(14, 6685, 13062, 0, 0, 12, 0, 50, 0, 0, 0, 0, 0, '', 'Baron Revilgaz - On Pirates\' Day event - Show appropriate gossip');
@@ -0,0 +1,5 @@
-- DB update 2023_02_27_05 -> 2023_02_27_06
--
UPDATE `creature_template` SET `ScriptName` = 'npc_malchezaar_axe', `unit_flags` = `unit_flags`|33554432 WHERE `entry` = 17650;
UPDATE `creature_template` SET `ScriptName` = 'npc_netherspite_infernal' WHERE `entry` = 17646;
UPDATE `creature_template` SET `flags_extra` = `flags_extra` |2147483648 WHERE `entry` = 15690;
+215
View File
@@ -0,0 +1,215 @@
-- DB update 2023_02_27_06 -> 2023_02_27_07
--
UPDATE `creature_template` SET `unit_flags`=`unit_flags`|32768, `AIName` = 'SmartAI', `ScriptName` = '' WHERE (`entry` = 21027);
DELETE FROM `creature_template_movement` WHERE (`CreatureId` = 21027);
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES
(21027, 1, 1, 0, 0, 0, 0, 0);
DELETE FROM `script_waypoint` WHERE `entry`=21027;
DELETE FROM `waypoints` WHERE `entry` IN (2102700, 2102701, 2102702) AND `point_comment`='Earthmender Wilda';
INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `orientation`, `point_comment`) VALUES
(2102700,1,-2673.4028,1347.086,34.450996,NULL,'Earthmender Wilda'),
(2102700,2,-2698.3552,1336.2699,34.436684,NULL,'Earthmender Wilda'),
(2102700,3,-2717.746,1327.2448,33.727425,NULL,'Earthmender Wilda'),
(2102700,4,-2750.501,1308.4788,33.51492,NULL,'Earthmender Wilda'),
(2102700,5,-2758.456,1291.1246,33.21175,NULL,'Earthmender Wilda'),
(2102700,6,-2749.859,1271.7311,33.179966,NULL,'Earthmender Wilda'),
(2102700,7,-2735.675,1250.0884,33.481762,NULL,'Earthmender Wilda'),
(2102700,8,-2728.0457,1239.5994,33.55585,NULL,'Earthmender Wilda'),
(2102700,9,-2724.7705,1235.3615,33.36293,NULL,'Earthmender Wilda'),
(2102701,1 ,-2747.9248,1267.6305,33.185226,NULL,'Earthmender Wilda'),
(2102701,2 ,-2759.827,1286.5345,33.22729,NULL,'Earthmender Wilda'),
(2102701,3 ,-2756.9617,1306.5089,33.385166,NULL,'Earthmender Wilda'),
(2102701,4 ,-2725.8306,1321.6727,33.399662,NULL,'Earthmender Wilda'),
(2102701,5 ,-2713.258,1311.8943,33.88253,NULL,'Earthmender Wilda'),
(2102701,6 ,-2703.6812,1297.7561,32.952988,NULL,'Earthmender Wilda'),
(2102701,7 ,-2696.5117,1290.1486,34.049046,NULL,'Earthmender Wilda'),
(2102701,8 ,-2676.7317,1285.51,30.529482,NULL,'Earthmender Wilda'),
(2102701,9 ,-2654.9558,1274.1897,25.2051,NULL,'Earthmender Wilda'),
(2102701,10,-2644.617,1264.0071,23.524517,NULL,'Earthmender Wilda'),
(2102701,11,-2638.541,1253.4718,21.101715,NULL,'Earthmender Wilda'),
(2102701,12,-2646.6775,1220.6115,7.959275,NULL,'Earthmender Wilda'),
(2102701,13,-2656.3025,1203.6542,6.292024,NULL,'Earthmender Wilda'),
(2102701,14,-2672.9521,1186.2338,3.1785104,NULL,'Earthmender Wilda'),
(2102701,15,-2686.0994,1175.7258,5.3469415,NULL,'Earthmender Wilda'),
(2102701,16,-2697.5493,1163.4832,5.5097775,NULL,'Earthmender Wilda'),
(2102701,17,-2712.2507,1149.6624,4.1310344,NULL,'Earthmender Wilda'),
(2102701,18,-2731.7368,1141.202,2.0495586,NULL,'Earthmender Wilda'),
(2102701,19,-2755.1863,1145.8915,6.0910826,NULL,'Earthmender Wilda'), -- It shouldn't be much further
(2102702,1,-2775.921,1163.6531,6.2431016,NULL,'Earthmender Wilda'),
(2102702,2,-2785.0398,1176.4891,5.9446754,NULL,'Earthmender Wilda'),
(2102702,3,-2805.2222,1203.5836,6.2892222,NULL,'Earthmender Wilda'),
(2102702,4,-2823.8367,1230.3197,6.2648115,NULL,'Earthmender Wilda'),
(2102702,5,-2841.9836,1247.9833,6.7960606,NULL,'Earthmender Wilda'),
(2102702,6,-2850.0354,1263.7803,7.0559444,NULL,'Earthmender Wilda'),
(2102702,7,-2842.1345,1282.2969,8.041483,NULL,'Earthmender Wilda'),
(2102702,8,-2845.81,1293.1658,6.371023,NULL,'Earthmender Wilda'),
(2102702,9,-2870.9836,1302.0223,6.796061,NULL,'Earthmender Wilda');
DELETE FROM `creature_text` WHERE `CreatureID` IN (21027, 21029, 21044);
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(21027, 0, 0, 'Thank you, kind soul. You have freed me from the watery prison of Coilskar but many more are being held prisoner nearby. Will you assist me in freeing them as well?', 12, 0, 100, 2, 0, 0, 18665, 0, 'Earthmender Wilda - Freed'),
(21027, 1, 0, 'I sense the tortured spirits, $n. They are this way. Come quickly!', 12, 0, 100, 0, 0, 0, 18668, 0, 'Earthmender Wilda - Escort Start'),
(21027, 2, 0, 'Watch out!', 12, 0, 100, 0, 0, 0, 18687, 0, 'Earthmender Wilda - Aggro'),
(21027, 2, 1, 'Naga attackers! Defend yourself!', 12, 0, 100, 0, 0, 0, 18688, 0, 'Earthmender Wilda - Aggro'),
(21027, 3, 0, 'Grant me protection, $n. I must break through their foul magic!', 12, 0, 100, 0, 0, 0, 18669, 0, 'Earthmender Wilda - Free Water Spirits'),
(21027, 4, 0, 'Now we must find the exit.', 12, 0, 100, 1, 0, 0, 18670, 0, 'Earthmender Wilda - Finished Water Spirits'),
(21027, 5, 0, 'The naga of Coilskar are exceptionally cruel to their prisoners. It is a miracle that I survived inside that watery prison for as long as I did. Earthmother be praised.', 12, 0, 100, 0, 0, 0, 18685, 0, 'Earthmender Wilda - Say Random'),
(21027, 5, 1, 'Lady Vashj must answer for these atrocities. She must be brought to justice!', 12, 0, 100, 0, 0, 0, 18684, 0, 'Earthmender Wilda - Say Random'),
(21027, 5, 2, 'The tumultuous nature of the great waterways of Azeroth and Draenor are a direct result of tormented water spirits.', 12, 0, 100, 0, 0, 0, 18675, 0, 'Earthmender Wilda - Say Random'),
(21027, 5, 3, 'The naga do not respect nature. They twist and corrupt it to meet their needs. They live to agitate the spirits.', 12, 0, 100, 0, 0, 0, 18673, 0, 'Earthmender Wilda - Say Random'),
(21027, 6, 0, 'It shouldn\'t be much further, $n. The exit is just up ahead.', 12, 0, 100, 1, 0, 0, 18671, 0, 'Earthmender Wilda - Escort Progress'),
(21027, 7, 0, 'Thank you, $n. Please return to my brethren at the Altar of Damnation, near the Hand of Gul\'dan, and tell them that Wilda is safe. May the Earthmother watch over you...', 12, 0, 100, 0, 0, 0, 18672, 0, 'Earthmender Wilda - Escort End'),
(21029, 0, 0, 'Thank you, earthmender.', 12, 12, 100, 0, 0, 0, 18664, 0, 'Captured Water Spirit - Earthmender Wilda Escort'),
(21044, 0, 0, 'Kill them all!', 12, 0, 100, 0, 0, 0, 18692, 0, 'Coilskar Assassin'),
(21044, 0, 1, 'You will never essscape Coilssskarrr...', 12, 0, 100, 0, 0, 0, 18693, 0, 'Coilskar Assassin');
-- Earthmender Wilda Trigger
UPDATE `creature_template_movement` SET `Rooted` = 1 WHERE (`CreatureId` = 21041);
UPDATE `creature_template` SET `unit_flags`=`unit_flags`|33555200 WHERE (`entry` = 21041);
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 21041;
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 21041);
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
(21041, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 0, 11, 35928, 0, 0, 0, 0, 0, 10, 25119, 21027, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda Trigger - On Data Set 1 1 - Cast \'Watery Prison\''),
(21041, 0, 1, 0, 38, 0, 100, 0, 2, 2, 0, 0, 0, 92, 0, 35928, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda Trigger - On Data Set 2 2 - Interrupt Spell \'Watery Prison\'');
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceEntry` = 21041) AND (`SourceId` = 0);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(22, 1, 21041, 0, 0, 31, 1, 3, 21041, 25125, 1, 0, 0, '', 'Earthmender Wilda Trigger GUID 25125 acts as movement target, does not cast spells'),
(22, 2, 21041, 0, 0, 31, 1, 3, 21041, 25125, 1, 0, 0, '', 'Earthmender Wilda Trigger GUID 25125 acts as movement target, does not cast spells');
-- Keeper of the Cistern
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 20795);
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
(20795, 0, 0, 0, 0, 0, 100, 0, 0, 1000, 2500, 4700, 0, 11, 32011, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Keeper of the Cistern - In Combat - Cast \'Water Bolt\''),
(20795, 0, 1, 0, 9, 0, 100, 0, 0, 10, 12000, 16500, 0, 11, 11831, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Keeper of the Cistern - Within 0-10 Range - Cast \'Frost Nova\''),
(20795, 0, 2, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 21027, 100, 0, 0, 0, 0, 0, 0, 'Keeper of the Cistern - On Just Died - Set Data 1 1');
-- Earthmender Wilda
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 21027);
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
(21027, 0, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 80, 2102700, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - On Respawn - Run Script'),
(21027, 0, 1, 0, 38, 0, 100, 0, 1, 1, 0, 0, 0, 80, 2102701, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - On Data Set 1 1 - Run Script'),
(21027, 0, 2, 3, 19, 0, 100, 0, 10451, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - On Quest \'Escape from Coilskar Cistern\' Taken - Store Targetlist'),
(21027, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 80, 2102702, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - On Quest \'Escape from Coilskar Cistern\' Taken - Run Script'),
(21027, 0, 4, 0, 58, 0, 100, 0, 9, 2102700, 0, 0, 0, 80, 2102703, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - On Waypoint Finished - Run Script'),
(21027, 0, 5, 0, 58, 0, 100, 0, 19, 2102701, 0, 0, 0, 80, 2102704, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - On Waypoint Finished - Run Script'),
(21027, 0, 6, 0, 58, 0, 100, 0, 9, 2102702, 0, 0, 0, 80, 2102705, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - On Waypoint Finished - Run Script'),
(21027, 0, 7, 0, 40, 0, 8, 0, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - On Waypoint 0 Reached - Say Line 5'),
(21027, 0, 8, 0, 40, 0, 10, 0, 0, 0, 0, 0, 0, 11, 35937, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - On Waypoint 0 Reached - Cast \'Serverside - Summon Ambush\''),
(21027, 0, 9, 0, 4, 0, 50, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - On Aggro - Say Line 2'),
(21027, 0, 10, 0, 0, 0, 100, 0, 1000, 3500, 1500, 4500, 0, 11, 16006, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - In Combat - Cast \'Chain Lightning\''),
(21027, 0, 11, 0, 0, 0, 100, 0, 10000, 20000, 15000, 30000, 0, 11, 15786, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - In Combat - Cast \'Earthbind Totem\''),
(21027, 0, 12, 0, 14, 0, 100, 0, 1000, 30, 5000, 15000, 0, 11, 12491, 64, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Friendly At 1000 Health - Cast \'Healing Wave\''),
(21027, 0, 13, 0, 0, 0, 100, 0, 7500, 15000, 12000, 21000, 0, 11, 12548, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - In Combat - Cast \'Frost Shock\''),
(21027, 0, 14, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 6, 10451, 0, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - On Just Died - Fail Quest \'Escape from Coilskar Cistern\'');
-- Actionlists for Earthmender Wilda
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` IN (2102700, 2102701, 2102702, 2102703, 2102704, 2102705));
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
(2102700, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 60, 0, 30, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Disable Gravity'),
(2102700, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 83, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Remove Npc Flags Questgiver'),
(2102700, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 11, 35921, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Cast \'Water Bubble\''),
(2102700, 9, 3, 0, 0, 0, 100, 0, 500, 500, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 9, 21041, 0, 40, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Set Data 1 1'),
(2102701, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 45, 2, 2, 0, 0, 0, 0, 9, 21041, 0, 50, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Set Data 2 2'),
(2102701, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 10, 25125, 21041, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Move To Closest Creature \'Earthmender Wilda Trigger\''),
(2102701, 9, 2, 0, 0, 0, 100, 0, 12000, 12000, 0, 0, 0, 28, 35921, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Remove Aura \'Water Bubble\''),
(2102701, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 60, 0, 100, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Set Fly Off'),
(2102701, 9, 4, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 205, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Fall'),
(2102701, 9, 5, 0, 0, 0, 100, 0, 2400, 2400, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 21, 100, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Set Orientation Closest Player'),
(2102701, 9, 6, 0, 0, 0, 100, 0, 1200, 1200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Say Line 0'),
(2102701, 9, 7, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 0, 82, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Add Npc Flags Questgiver'),
(2102702, 9, 0, 0, 0, 0, 100, 0, 2400, 2400, 0, 0, 0, 83, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Remove Npc Flags Questgiver'),
(2102702, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 2, 495, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Set Faction 495'),
(2102702, 9, 2, 0, 0, 0, 100, 0, 1300, 1300, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Say Line 1'),
(2102702, 9, 3, 0, 0, 0, 100, 0, 3600, 3600, 0, 0, 0, 53, 0, 2102700, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Start Waypoint'),
(2102703, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Set Reactstate Passive'),
(2102703, 9, 1, 0, 0, 0, 100, 0, 3600, 3600, 0, 0, 0, 1, 3, 0, 1, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Say Line 3'),
(2102703, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 11, 35933, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Cast \'Break Water Prison\''),
(2102703, 9, 3, 0, 0, 0, 100, 0, 15800, 15800, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 21, 40, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Set Orientation Closest Player'),
(2102703, 9, 4, 0, 0, 0, 100, 0, 1200, 1200, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 9, 21029, 0, 100, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Set Data 1 1'),
(2102703, 9, 5, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Say Line 4'),
(2102703, 9, 6, 0, 0, 0, 100, 0, 6000, 6000, 0, 0, 0, 53, 0, 2102701, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Start Waypoint'),
(2102703, 9, 7, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Set Reactstate Aggressive'),
(2102704, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 1, 6, 0, 1, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Say Line 6'),
(2102704, 9, 1, 0, 0, 0, 100, 0, 3300, 3300, 0, 0, 0, 53, 0, 2102702, 0, 10451, 6000, 2, 12, 1, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Start Waypoint'),
(2102705, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 1, 7, 0, 1, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Say Line 7'),
(2102705, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 45, 2, 2, 0, 0, 0, 0, 9, 21029, 0, 100, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Set Data 2 2'),
(2102705, 9, 2, 0, 0, 0, 100, 0, 2400, 2400, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Earthmender Wilda - Actionlist - Play Emote 5');
-- Captured Water Spirits
UPDATE `creature_template` SET `unit_flags`=`unit_flags`|33024 WHERE (`entry` = 21029);
UPDATE `creature_template_addon` SET `auras` = '' WHERE (`entry` = 21029);
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 21029;
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` IN (-25120, -25121, -25122, -25123, -25124));
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
(-25120, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 0, 80, 2102900, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Data Set 1 1 - Run Script'),
(-25120, 0, 1, 0, 38, 0, 100, 0, 2, 2, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Data Set 2 2 - Despawn Instant'),
(-25120, 0, 2, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 11, 35929, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Respawn - Cast \'Water Bubble\''),
(-25121, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 0, 80, 2102901, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Data Set 1 1 - Run Script'),
(-25121, 0, 1, 0, 38, 0, 100, 0, 2, 2, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Data Set 2 2 - Despawn Instant'),
(-25121, 0, 2, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 11, 35929, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Respawn - Cast \'Water Bubble\''),
(-25122, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 0, 80, 2102902, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Data Set 1 1 - Run Script'),
(-25122, 0, 1, 0, 38, 0, 100, 0, 2, 2, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Data Set 2 2 - Despawn Instant'),
(-25122, 0, 2, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 11, 35929, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Respawn - Cast \'Water Bubble\''),
(-25124, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 0, 80, 2102904, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Data Set 1 1 - Run Script'),
(-25124, 0, 1, 0, 38, 0, 100, 0, 2, 2, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Data Set 2 2 - Despawn Instant'),
(-25124, 0, 2, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 11, 35929, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Respawn - Cast \'Water Bubble\''),
(-25123, 0, 0, 0, 38, 0, 100, 0, 1, 1, 0, 0, 0, 80, 2102903, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Data Set 1 1 - Run Script'),
(-25123, 0, 1, 0, 38, 0, 100, 0, 2, 2, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Data Set 2 2 - Despawn Instant'),
(-25123, 0, 2, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 11, 35929, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - On Respawn - Cast \'Water Bubble\'');
DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` BETWEEN 2102900 AND 2102904);
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
(2102900, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 28, 35929, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Remove Aura \'Water Bubble\''),
(2102900, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 2, 495, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Set Faction 495'),
(2102900, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 29, 1, 90, 0, 0, 0, 0, 10, 25123, 21029, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Start Follow Closest Creature \'Captured Water Spirit\''),
(2102900, 9, 3, 0, 0, 0, 100, 0, 3600, 3600, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Set Fly Off'),
(2102900, 9, 4, 0, 0, 0, 100, 0, 800, 800, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Say Line 0'),
(2102900, 9, 5, 0, 0, 0, 100, 0, 2400, 2400, 0, 0, 0, 29, 2, 215, 0, 0, 0, 0, 10, 25123, 21029, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Start Follow Closest Creature \'Captured Water Spirit\''),
(2102901, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 28, 35929, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Remove Aura \'Water Bubble\''),
(2102901, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 2, 495, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Set Faction 495'),
(2102901, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 29, 1, 120, 0, 0, 0, 0, 10, 25123, 21029, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Start Follow Closest Creature \'Captured Water Spirit\''),
(2102901, 9, 3, 0, 0, 0, 100, 0, 3600, 3600, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Set Fly Off'),
(2102901, 9, 4, 0, 0, 0, 100, 0, 800, 800, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Say Line 0'),
(2102901, 9, 5, 0, 0, 0, 100, 0, 2400, 2400, 0, 0, 0, 29, 2, 215, 0, 0, 0, 0, 10, 25120, 21029, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Start Follow Closest Creature \'Captured Water Spirit\''),
(2102902, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 28, 35929, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Remove Aura \'Water Bubble\''),
(2102902, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 2, 495, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Set Faction 495'),
(2102902, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 29, 1, 150, 0, 0, 0, 0, 10, 25123, 21029, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Start Follow Closest Creature \'Captured Water Spirit\''),
(2102902, 9, 3, 0, 0, 0, 100, 0, 3600, 3600, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Set Fly Off'),
(2102902, 9, 4, 0, 0, 0, 100, 0, 800, 800, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Say Line 0'),
(2102902, 9, 5, 0, 0, 0, 100, 0, 2400, 2400, 0, 0, 0, 29, 2, 135, 0, 0, 0, 0, 10, 25123, 21029, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Start Follow Closest Creature \'Captured Water Spirit\''),
(2102904, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 28, 35929, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Remove Aura \'Water Bubble\''),
(2102904, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 2, 495, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Set Faction 495'),
(2102904, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 29, 1, 90, 0, 0, 0, 0, 10, 25123, 21029, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Start Follow Closest Creature \'Captured Water Spirit\''),
(2102904, 9, 3, 0, 0, 0, 100, 0, 3600, 3600, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Set Fly Off'),
(2102904, 9, 4, 0, 0, 0, 100, 0, 800, 800, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Say Line 0'),
(2102904, 9, 5, 0, 0, 0, 100, 0, 2400, 2400, 0, 0, 0, 29, 2, 135, 0, 0, 0, 0, 10, 25122, 21029, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Start Follow Closest Creature \'Captured Water Spirit\''),
(2102903, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 28, 35929, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Remove Aura \'Water Bubble\''),
(2102903, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 2, 495, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Set Faction 495'),
(2102903, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 0, 10, 25119, 21027, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Start Follow Closest Creature \'Earthmender Wilda\''),
(2102903, 9, 3, 0, 0, 0, 100, 0, 3600, 3600, 0, 0, 0, 60, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Set Fly Off'),
(2102903, 9, 4, 0, 0, 0, 100, 0, 800, 800, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Say Line 0'),
(2102903, 9, 5, 0, 0, 0, 100, 0, 2400, 2400, 0, 0, 0, 29, 2, 180, 0, 0, 0, 0, 10, 25119, 21027, 0, 0, 0, 0, 0, 0, 'Captured Water Spirit - Actionlist - Start Follow Closest Creature \'Earthmender Wilda\'');
-- Fix for serverside spell
UPDATE `spell_dbc` SET `Effect_1` = 28, `EffectMiscValueB_1` = 64, `EffectBasePoints_1` = 0 WHERE `ID` = 35937;
@@ -0,0 +1,2 @@
-- DB update 2023_02_27_07 -> 2023_02_28_00
UPDATE `creature_template` SET `flags_extra` = `flags_extra`|128 WHERE `entry` IN (21073, 21097, 21116);
+22
View File
@@ -1,3 +1,25 @@
## 7.0.0-dev.1 | Commit: [0c4feb674444210da295751a0c4e5eefb9c771f1
](https://github.com/azerothcore/azerothcore-wotlk/commit/0c4feb674444210da295751a0c4e5eefb9c771f1
### How to upgrade
Motd is removed from config file
Motd is can now be found in auth database table `motd`
`realmid` = Realm ID or -1 for all realms.
`text` = Text for Motd
Specified realmId is prioritized over -1 (All Realms)
For example:
You have realm 1, 2, 3
(-1, "This Motd will show for 2, 3")
(1, "This Motd will show for 1")
## 6.0.0-dev.3 | Commit: [44b7a0666c78dc99ab0bbc94045abb6685b3ad86
](https://github.com/azerothcore/azerothcore-wotlk/commit/44b7a0666c78dc99ab0bbc94045abb6685b3ad86
+1 -1
View File
@@ -1,6 +1,6 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by SunwellCore.rc
// Used by AzerothCore.rc
//
// Next default values for new objects
+1 -1
View File
@@ -1,6 +1,6 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by SunwellCore.rc
// Used by AzerothCore.rc
//
// Next default values for new objects
@@ -1257,30 +1257,6 @@ BeepAtStart = 1
FlashAtStart = 1
#
# Motd
# Description: Message of the Day, displayed at login.
# Use '@' for a newline and be sure to escape special characters.
# Example: "Welcome to John\'s Server@"
# Default: "Welcome to an AzerothCore server."
Motd = "Welcome to an AzerothCore server."
# PLEASE NOTE: another (hardcoded) text will appear below the MOTD:
#
# "This server runs on AzerothCore www.azerothcore.org"
#
# All the AzerothCore contributors, as well as its father projects (MaNGOS, TrinityCore, etc..),
# have worked for free to provide you this software. Please do not remove the credits.
#
# Changing or removing such hardcoded text is considered a violation of our license
# and it's not allowed. We reserve the right to take legal action in case of violations.
# Furthermore, any kind of support will be always denied.
#
# All AzerothCore contributors and its father projects are publicly listed in
# our official repository. Credits to open source contributions should always be shown.
#
#
# Server.LoginInfo
# Description: Display core version (.server info) on login.
@@ -3955,6 +3931,7 @@ Logger.module=4,Console Server
#Logger.addon=4,Console Server
#Logger.ahbot=4,Console Server
#Logger.auctionHouse=4,Console Server
#Logger.autobroadcast=4, Console Server
#Logger.bg.arena=4,Console Server
#Logger.bg.battlefield=4,Console Server
#Logger.bg.battleground=4,Console Server
@@ -115,6 +115,8 @@ void LoginDatabaseConnection::DoPrepareStatements()
PrepareStatement(LOGIN_SEL_REALMLIST_SECURITY_LEVEL, "SELECT allowedSecurityLevel from realmlist WHERE id = ?", CONNECTION_SYNCH);
PrepareStatement(LOGIN_DEL_ACCOUNT, "DELETE FROM account WHERE id = ?", CONNECTION_ASYNC);
PrepareStatement(LOGIN_SEL_AUTOBROADCAST, "SELECT id, weight, text FROM autobroadcast WHERE realmid = ? OR realmid = -1", CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_MOTD, "SELECT text FROM motd WHERE realmid = ? OR realmid = -1 ORDER BY realmid DESC", CONNECTION_SYNCH);
PrepareStatement(LOGIN_REP_MOTD, "REPLACE INTO motd (realmid, text) VALUES (?, ?)", CONNECTION_ASYNC);
PrepareStatement(LOGIN_INS_ACCOUNT_MUTE, "INSERT INTO account_muted VALUES (?, UNIX_TIMESTAMP(), ?, ?, ?)", CONNECTION_ASYNC);
PrepareStatement(LOGIN_SEL_ACCOUNT_MUTE_INFO, "SELECT mutedate, mutetime, mutereason, mutedby FROM account_muted WHERE guid = ? ORDER BY mutedate ASC", CONNECTION_SYNCH);
PrepareStatement(LOGIN_DEL_ACCOUNT_MUTED, "DELETE FROM account_muted WHERE guid = ?", CONNECTION_ASYNC);
@@ -97,6 +97,8 @@ enum LoginDatabaseStatements : uint32
LOGIN_SEL_REALMLIST_SECURITY_LEVEL,
LOGIN_DEL_ACCOUNT,
LOGIN_SEL_AUTOBROADCAST,
LOGIN_SEL_MOTD,
LOGIN_REP_MOTD,
LOGIN_SEL_LAST_ATTEMPT_IP,
LOGIN_SEL_LAST_IP,
LOGIN_INS_ALDL_IP_LOGGING,
+21
View File
@@ -264,6 +264,27 @@ SpellCastResult UnitAI::DoCastRandomTarget(uint32 spellId, uint32 threatTablePos
return SPELL_FAILED_BAD_TARGETS;
}
/**
* @brief Cast spell on the max threat target, which may not always be the current victim.
*
* @param uint32 spellId Spell ID to cast.
* @param uint32 Threat table position.
* @param float dist Distance from caster to target.
* @param bool playerOnly Select players only, excludes pets and other npcs.
* @param bool triggered Triggered cast (full triggered mask).
*
* @return SpellCastResult
*/
SpellCastResult UnitAI::DoCastMaxThreat(uint32 spellId, uint32 threatTablePosition, float dist, bool playerOnly, bool triggered)
{
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, threatTablePosition, dist, playerOnly))
{
return DoCast(target, spellId, triggered);
}
return SPELL_FAILED_BAD_TARGETS;
}
#define UPDATE_TARGET(a) {if (AIInfo->target<a) AIInfo->target=a;}
void UnitAI::FillAISpellInfo()
+3
View File
@@ -372,6 +372,9 @@ public:
SpellCastResult DoCastAOE(uint32 spellId, bool triggered = false);
SpellCastResult DoCastRandomTarget(uint32 spellId, uint32 threatTablePosition = 0, float dist = 0.0f, bool playerOnly = true, bool triggered = false);
// Cast spell on the top threat target, which may not be the current victim.
SpellCastResult DoCastMaxThreat(uint32 spellId, uint32 threatTablePosition = 0, float dist = 0.0f, bool playerOnly = true, bool triggered = false);
float DoGetSpellMaxRange(uint32 spellId, bool positive = false);
void DoMeleeAttackIfReady();
@@ -0,0 +1,142 @@
/*
* This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Affero General Public License as published by the
* Free Software Foundation; either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "AutobroadcastMgr.h"
#include "Config.h"
#include "Chat.h"
#include "Player.h"
#include "GridNotifiers.h"
AutobroadcastMgr* AutobroadcastMgr::instance()
{
static AutobroadcastMgr instance;
return &instance;
}
void AutobroadcastMgr::LoadAutobroadcasts()
{
uint32 oldMSTime = getMSTime();
_autobroadcasts.clear();
_autobroadcastsWeights.clear();
uint32 realmId = sConfigMgr->GetOption<int32>("RealmID", 0);
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_AUTOBROADCAST);
stmt->SetData(0, realmId);
PreparedQueryResult result = LoginDatabase.Query(stmt);
if (!result)
{
LOG_WARN("autobroadcast", ">> Loaded 0 autobroadcasts definitions. DB table `autobroadcast` is empty for this realm!");
LOG_INFO("autobroadcast", " ");
return;
}
_announceType = static_cast<AnnounceType>(sWorld->getIntConfig(CONFIG_AUTOBROADCAST_CENTER));
if (_announceType < AnnounceType::World || _announceType > AnnounceType::Both)
{
LOG_ERROR("autobroadcast", "AutobroadcastMgr::LoadAutobroadcasts: Config option AutoBroadcast.Center set to not allowed value {}. Set to default value 0", (int8)_announceType);
_announceType = AnnounceType::World;
}
uint32 count = 0;
do
{
Field* fields = result->Fetch();
uint8 id = fields[0].Get<uint8>();
_autobroadcasts[id] = fields[2].Get<std::string>();
_autobroadcastsWeights[id] = fields[1].Get<uint8>();
++count;
} while (result->NextRow());
LOG_INFO("autobroadcast", ">> Loaded {} Autobroadcast Definitions in {} ms", count, GetMSTimeDiffToNow(oldMSTime));
LOG_INFO("autobroadcast", " ");
}
void AutobroadcastMgr::SendAutobroadcasts()
{
if (_autobroadcasts.empty())
{
return;
}
uint32 weight = 0;
AutobroadcastsWeightMap selectionWeights;
std::string msg;
for (AutobroadcastsWeightMap::const_iterator it = _autobroadcastsWeights.begin(); it != _autobroadcastsWeights.end(); ++it)
{
if (it->second)
{
weight += it->second;
selectionWeights[it->first] = it->second;
}
}
if (weight)
{
uint32 selectedWeight = urand(0, weight - 1);
weight = 0;
for (AutobroadcastsWeightMap::const_iterator it = selectionWeights.begin(); it != selectionWeights.end(); ++it)
{
weight += it->second;
if (selectedWeight < weight)
{
msg = _autobroadcasts[it->first];
break;
}
}
}
else
{
msg = _autobroadcasts[urand(0, _autobroadcasts.size())];
}
switch (_announceType)
{
case AnnounceType::World:
SendWorldAnnouncement(msg);
break;
case AnnounceType::Notification:
SendNotificationAnnouncement(msg);
break;
case AnnounceType::Both:
SendWorldAnnouncement(msg);
SendNotificationAnnouncement(msg);
default:
break;
}
LOG_DEBUG("autobroadcast", "AutobroadcastMgr::SendAutobroadcasts: '{}'", msg);
}
void AutobroadcastMgr::SendWorldAnnouncement(std::string_view msg)
{
sWorld->SendWorldTextOptional(LANG_AUTO_BROADCAST, ANNOUNCER_FLAG_DISABLE_AUTOBROADCAST, msg.data());
}
void AutobroadcastMgr::SendNotificationAnnouncement(std::string_view msg)
{
WorldPacket data(SMSG_NOTIFICATION, (msg.size() + 1));
data << msg.data();
sWorld->SendGlobalMessage(&data);
}
@@ -0,0 +1,54 @@
/*
* This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Affero General Public License as published by the
* Free Software Foundation; either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _AUTOBROADCASTMGR_H_
#define _AUTOBROADCASTMGR_H_
#include "Common.h"
#include <map>
enum class AnnounceType : uint8
{
World = 0,
Notification = 1,
Both = 2,
};
class AC_GAME_API AutobroadcastMgr
{
public:
static AutobroadcastMgr* instance();
void LoadAutobroadcasts();
void SendAutobroadcasts();
private:
void SendWorldAnnouncement(std::string_view msg);
void SendNotificationAnnouncement(std::string_view msg);
typedef std::map<uint8, std::string> AutobroadcastsMap;
typedef std::map<uint8, uint8> AutobroadcastsWeightMap;
AutobroadcastsMap _autobroadcasts;
AutobroadcastsWeightMap _autobroadcastsWeights;
AnnounceType _announceType;
};
#define sAutobroadcastMgr AutobroadcastMgr::instance()
#endif // _AUTOBROADCASTMGR_H_
+1
View File
@@ -182,6 +182,7 @@ public:
Channel(std::string const& name, uint32 channel_id, uint32 channelDBId, TeamId teamId = TEAM_NEUTRAL, bool announce = true, bool ownership = true);
[[nodiscard]] std::string const& GetName() const { return _name; }
[[nodiscard]] uint32 GetChannelId() const { return _channelId; }
[[nodiscard]] uint32 GetChannelDBId() const { return _channelDBId; }
[[nodiscard]] bool IsConstant() const { return _channelId != 0; }
[[nodiscard]] bool IsAnnounce() const { return _announce; }
[[nodiscard]] bool IsLFG() const { return GetFlags() & CHANNEL_FLAG_LFG; }
+11 -2
View File
@@ -44,7 +44,7 @@ namespace DisableMgr
DisableMap m_DisableMap;
uint8 MAX_DISABLE_TYPES = 10;
uint8 MAX_DISABLE_TYPES = 11;
}
void LoadDisables()
@@ -258,6 +258,8 @@ namespace DisableMgr
}
break;
}
case DISABLE_TYPE_LOOT:
break;
default:
break;
}
@@ -303,7 +305,12 @@ namespace DisableMgr
bool IsDisabledFor(DisableType type, uint32 entry, Unit const* unit, uint8 flags)
{
ASSERT(type < MAX_DISABLE_TYPES);
if (type > MAX_DISABLE_TYPES)
{
LOG_ERROR("server", "Disables::IsDisabledFor() called with unknown disable type {}! (entry {}, flags {}).", type, entry, flags);
return false;
}
if (m_DisableMap[type].empty())
return false;
@@ -389,6 +396,8 @@ namespace DisableMgr
return true;
case DISABLE_TYPE_GAME_EVENT:
return true;
case DISABLE_TYPE_LOOT:
return true;
}
return false;
+2 -1
View File
@@ -35,7 +35,8 @@ enum DisableType
DISABLE_TYPE_VMAP = 6,
DISABLE_TYPE_GO_LOS = 7,
DISABLE_TYPE_LFG_MAP = 8,
DISABLE_TYPE_GAME_EVENT = 9
DISABLE_TYPE_GAME_EVENT = 9,
DISABLE_TYPE_LOOT = 10
};
enum SpellDisableTypes
@@ -2805,6 +2805,16 @@ void Creature::AddSpellCooldown(uint32 spell_id, uint32 /*itemid*/, uint32 end_t
{
_AddCreatureSpellCooldown(spellInfo->Id, 0, spellcooldown);
}
if (sSpellMgr->HasSpellCooldownOverride(spellInfo->Id))
{
if (IsCharmed() && GetCharmer()->IsPlayer())
{
WorldPacket data;
BuildCooldownPacket(data, SPELL_COOLDOWN_FLAG_NONE, spellInfo->Id, spellcooldown);
GetCharmer()->ToPlayer()->SendDirectMessage(&data);
}
}
}
uint32 Creature::GetSpellCooldown(uint32 spell_id) const
@@ -664,16 +664,22 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
for (uint8 i = 0; i < QUEST_ITEM_OBJECTIVES_COUNT; ++i)
{
if (sObjectMgr->GetItemTemplate(quest->RequiredItemId[i]))
if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(quest->RequiredItemId[i]))
{
DestroyItemCount(quest->RequiredItemId[i], quest->RequiredItemCount[i], true, true);
if (quest->RequiredItemCount[i] > 0 && itemTemplate->Bonding == BIND_QUEST_ITEM && !quest->IsRepeatable() && !HasQuestForItem(quest->RequiredItemId[i], quest_id, true))
DestroyItemCount(quest->RequiredItemId[i], 9999, true);
else
DestroyItemCount(quest->RequiredItemId[i], quest->RequiredItemCount[i], true);
}
}
for (uint8 i = 0; i < QUEST_SOURCE_ITEM_IDS_COUNT; ++i)
{
if (sObjectMgr->GetItemTemplate(quest->ItemDrop[i]))
if (ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(quest->ItemDrop[i]))
{
DestroyItemCount(quest->ItemDrop[i], quest->ItemDropQuantity[i], true, true);
if (quest->ItemDropQuantity[i] > 0 && itemTemplate->Bonding == BIND_QUEST_ITEM && !quest->IsRepeatable() && !HasQuestForItem(quest->ItemDrop[i], quest_id))
DestroyItemCount(quest->ItemDrop[i], 9999, true);
else
DestroyItemCount(quest->ItemDrop[i], quest->ItemDropQuantity[i], true);
}
}
+20 -1
View File
@@ -15893,6 +15893,24 @@ bool CharmInfo::AddSpellToActionBar(SpellInfo const* spellInfo, ActiveStates new
if (!PetActionBar[i].GetAction() && PetActionBar[i].IsActionBarForSpell())
{
SetActionBar(i, spell_id, newstate == ACT_DECIDE ? spellInfo->IsAutocastable() ? ACT_DISABLED : ACT_PASSIVE : newstate);
if (_unit->GetCharmer() && _unit->GetCharmer()->IsPlayer())
{
if (Creature* creature = _unit->ToCreature())
{
// Processing this packet needs to be delayed
_unit->m_Events.AddEventAtOffset([creature, spell_id]()
{
if (uint32 cooldown = creature->GetSpellCooldown(spell_id))
{
WorldPacket data;
creature->BuildCooldownPacket(data, SPELL_COOLDOWN_FLAG_NONE, spell_id, cooldown);
creature->GetCharmer()->ToPlayer()->SendDirectMessage(&data);
}
}, 500ms);
}
}
return true;
}
}
@@ -18095,7 +18113,6 @@ void Unit::Kill(Unit* killer, Unit* victim, bool durabilityLoss, WeaponAttackTyp
if (CreatureAI* ai = creature->AI())
{
ai->JustDied(killer);
sScriptMgr->OnUnitDeath(creature, killer);
}
if (TempSummon* summon = creature->ToTempSummon())
@@ -18179,6 +18196,8 @@ void Unit::Kill(Unit* killer, Unit* victim, bool durabilityLoss, WeaponAttackTyp
sScriptMgr->OnPlayerKilledByCreature(killerCre, killed);
}
}
sScriptMgr->OnUnitDeath(victim, killer);
}
void Unit::SetControlled(bool apply, UnitState state, Unit* source /*= nullptr*/, bool isFear /*= false*/)
@@ -351,6 +351,17 @@ bool InstanceScript::SetBossState(uint32 id, EncounterState state)
return false;
}
void InstanceScript::StorePersistentData(uint32 index, uint32 data)
{
if (index > persistentData.size())
{
LOG_ERROR("scripts", "InstanceScript::StorePersistentData() index larger than storage size. Index: {} Size: {} Data: {}.", index, persistentData.size(), data);
return;
}
persistentData[index] = data;
}
void InstanceScript::Load(const char* data)
{
if (!data)
@@ -366,6 +377,7 @@ void InstanceScript::Load(const char* data)
if (ReadSaveDataHeaders(loadStream))
{
ReadSaveDataBossStates(loadStream);
ReadSavePersistentData(loadStream);
ReadSaveDataMore(loadStream);
}
else
@@ -403,6 +415,14 @@ void InstanceScript::ReadSaveDataBossStates(std::istringstream& data)
}
}
void InstanceScript::ReadSavePersistentData(std::istringstream& data)
{
for (uint32 i = 0; i < persistentData.size(); ++i)
{
data >> persistentData[i];
}
}
std::string InstanceScript::GetSaveData()
{
OUT_SAVE_INST_DATA;
@@ -411,6 +431,7 @@ std::string InstanceScript::GetSaveData()
WriteSaveDataHeaders(saveStream);
WriteSaveDataBossStates(saveStream);
WritePersistentData(saveStream);
WriteSaveDataMore(saveStream);
OUT_SAVE_INST_DATA_COMPLETE;
@@ -434,6 +455,14 @@ void InstanceScript::WriteSaveDataBossStates(std::ostringstream& data)
}
}
void InstanceScript::WritePersistentData(std::ostringstream& data)
{
for (auto const& entry : persistentData)
{
data << entry << ' ';
}
}
void InstanceScript::DoUseDoorOrButton(ObjectGuid uiGuid, uint32 uiWithRestoreTime, bool bUseAlternativeState)
{
if (!uiGuid)
@@ -229,6 +229,9 @@ public:
CreatureBoundary const* GetBossBoundary(uint32 id) const { return id < bosses.size() ? &bosses[id].boundary : nullptr; }
BossInfo const* GetBossInfo(uint32 id) const { return &bosses[id]; }
uint32 GetPersistentData(uint32 index) const { return index < persistentData.size() ? persistentData[index] : 0; };
void StorePersistentData(uint32 index, uint32 data);
// Achievement criteria additional requirements check
// NOTE: not use this if same can be checked existed requirement types from AchievementCriteriaRequirementType
virtual bool CheckAchievementCriteriaMeet(uint32 /*criteria_id*/, Player const* /*source*/, Unit const* /*target*/ = nullptr, uint32 /*miscvalue1*/ = 0);
@@ -257,6 +260,7 @@ public:
protected:
void SetHeaders(std::string const& dataHeaders);
void SetBossNumber(uint32 number) { bosses.resize(number); }
void SetPersistentDataCount(uint32 number) { persistentData.resize(number); }
void LoadBossBoundaries(BossBoundaryData const& data);
void LoadDoorData(DoorData const* data);
void LoadMinionData(MinionData const* data);
@@ -275,9 +279,11 @@ protected:
// Instance Load and Save
bool ReadSaveDataHeaders(std::istringstream& data);
void ReadSaveDataBossStates(std::istringstream& data);
void ReadSavePersistentData(std::istringstream& data);
virtual void ReadSaveDataMore(std::istringstream& /*data*/) { }
void WriteSaveDataHeaders(std::ostringstream& data);
void WriteSaveDataBossStates(std::ostringstream& data);
void WritePersistentData(std::ostringstream& data);
virtual void WriteSaveDataMore(std::ostringstream& /*data*/) { }
private:
@@ -285,6 +291,7 @@ private:
std::vector<char> headers;
std::vector<BossInfo> bosses;
std::vector<uint32> persistentData;
DoorInfoMap doors;
MinionInfoMap minions;
ObjectInfoMap _creatureInfo;
+6
View File
@@ -17,6 +17,7 @@
#include "LootMgr.h"
#include "Containers.h"
#include "DisableMgr.h"
#include "Group.h"
#include "Log.h"
#include "ObjectMgr.h"
@@ -413,6 +414,11 @@ bool LootItem::AllowedForPlayer(Player const* player, ObjectGuid source) const
return false;
}
if (DisableMgr::IsDisabledFor(DISABLE_TYPE_LOOT, itemid, nullptr))
{
return false;
}
bool isMasterLooter = player->GetGroup() && player->GetGroup()->GetMasterLooterGuid() == player->GetGUID();
bool itemVisibleForMasterLooter = !needs_quest && (!follow_loot_rules || !is_underthreshold);
-7
View File
@@ -31,13 +31,6 @@ namespace
void Motd::SetMotd(std::string motd)
{
motd = /* fctlsup << //0x338// "63"+"cx""d2"+"1e""dd"+"cx""ds"+"ce""dd"+"ce""7D"+ << */ motd
/*"d3"+"ce"*/ + "@|" + "cf" +/*"as"+"k4"*/"fF" +"F4" +/*"d5"+"f3"*/"A2" +"DT"/*"F4"+"Az"*/ + "hi" + "s "
/*"fd"+"hy"*/ + "se" + "rv" +/*"nh"+"k3"*/"er" +" r" +/*"x1"+"A2"*/"un" +"s "/*"F2"+"Ay"*/ + "on" + " Az"
/*"xs"+"5n"*/ + "er" + "ot" +/*"xs"+"A2"*/"hC" +"or" +/*"a4"+"f3"*/"e|" +"r "/*"f2"+"A2"*/ + "|c" + "ff"
/*"5g"+"A2"*/ + "3C" + "E7" +/*"k5"+"AX"*/"FF" +"ww" +/*"sx"+"Gj"*/"w." +"az"/*"a1"+"vf"*/ + "er" + "ot"
/*"ds"+"sx"*/ + "hc" + "or" +/*"F4"+"k5"*/"e." +"or" +/*"po"+"xs"*/"g|r"/*"F4"+"p2"+"o4"+"A2"+"i2"*/;
// scripts may change motd
sScriptMgr->OnMotdChange(motd);
+3 -6
View File
@@ -141,7 +141,6 @@ WorldSession::WorldSession(uint32 id, std::string&& name, std::shared_ptr<WorldS
_offlineTime = 0;
_kicked = false;
_shouldSetOfflineInDB = true;
_timeSyncNextCounter = 0;
_timeSyncTimer = 0;
@@ -179,8 +178,7 @@ WorldSession::~WorldSession()
while (_recvQueue.next(packet))
delete packet;
if (GetShouldSetOfflineInDB())
LoginDatabase.Execute("UPDATE account SET online = 0 WHERE id = {};", GetAccountId()); // One-time query
LoginDatabase.Execute("UPDATE account SET online = 0 WHERE id = {};", GetAccountId()); // One-time query
}
std::string const& WorldSession::GetPlayerName() const
@@ -341,9 +339,8 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
{
requeuePackets.push_back(packet);
deletePacket = false;
QueuePacket(packet);
LOG_DEBUG("network", "Re-enqueueing packet with opcode %s with with status STATUS_LOGGEDIN. "
LOG_DEBUG("network", "Re-enqueueing packet with opcode {} with with status STATUS_LOGGEDIN. "
"Player {} is currently not in world yet.", GetOpcodeNameForLogging(static_cast<OpcodeClient>(packet->GetOpcode())), GetPlayerInfo());
}
}
@@ -533,7 +530,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
if (!m_Socket)
{
return false;
return false; //Will remove this session from the world session map
}
}
-3
View File
@@ -1087,8 +1087,6 @@ public: // opcodes handlers
uint32 GetOfflineTime() const { return _offlineTime; }
bool IsKicked() const { return _kicked; }
void SetKicked(bool val) { _kicked = val; }
void SetShouldSetOfflineInDB(bool val) { _shouldSetOfflineInDB = val; }
bool GetShouldSetOfflineInDB() const { return _shouldSetOfflineInDB; }
bool IsSocketClosed() const;
void SetAddress(std::string const& address) { m_Address = address; }
@@ -1207,7 +1205,6 @@ private:
ObjectGuid m_currentBankerGUID;
uint32 _offlineTime;
bool _kicked;
bool _shouldSetOfflineInDB;
// Packets cooldown
time_t _calendarEventCreationCooldown;
+70 -2
View File
@@ -2725,6 +2725,48 @@ void SpellMgr::LoadSpellInfoStore()
LOG_INFO("server.loading", " ");
}
void SpellMgr::LoadSpellCooldownOverrides()
{
uint32 oldMSTime = getMSTime();
mSpellCooldownOverrideMap.clear();
QueryResult result = WorldDatabase.Query("SELECT Id, RecoveryTime, CategoryRecoveryTime, StartRecoveryTime, StartRecoveryCategory FROM spell_cooldown_overrides");
uint32 count = 0;
if (result)
{
do
{
Field* fields = result->Fetch();
SpellCooldownOverride spellCooldown;
uint32 spellId = fields[0].Get<uint32>();
spellCooldown.RecoveryTime = fields[1].Get<uint32>();
spellCooldown.CategoryRecoveryTime = fields[2].Get<uint32>();
spellCooldown.StartRecoveryTime = fields[3].Get<uint32>();
spellCooldown.StartRecoveryCategory = fields[4].Get<uint32>();
mSpellCooldownOverrideMap[spellId] = spellCooldown;
++count;
} while (result->NextRow());
}
LOG_INFO("server.loading", ">> Loaded {} Spell Cooldown Overrides entries in {} ms", count, GetMSTimeDiffToNow(oldMSTime));
LOG_INFO("server.loading", " ");
}
bool SpellMgr::HasSpellCooldownOverride(uint32 spellId) const
{
return mSpellCooldownOverrideMap.find(spellId) != mSpellCooldownOverrideMap.end();
}
SpellCooldownOverride SpellMgr::GetSpellCooldownOverride(uint32 spellId) const
{
auto range = mSpellCooldownOverrideMap.find(spellId);
return range->second;
}
void SpellMgr::UnloadSpellInfoStore()
{
for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i)
@@ -3412,9 +3454,35 @@ void SpellMgr::LoadSpellInfoCustomAttributes()
}
}
}
spellInfo->_InitializeExplicitTargetMask();
sScriptMgr->OnLoadSpellCustomAttr(spellInfo);
spellInfo->_InitializeExplicitTargetMask();
if (sSpellMgr->HasSpellCooldownOverride(spellInfo->Id))
{
SpellCooldownOverride spellOverride = sSpellMgr->GetSpellCooldownOverride(spellInfo->Id);
if (spellInfo->RecoveryTime != spellOverride.RecoveryTime)
{
spellInfo->RecoveryTime = spellOverride.RecoveryTime;
}
if (spellInfo->CategoryRecoveryTime != spellOverride.CategoryRecoveryTime)
{
spellInfo->CategoryRecoveryTime = spellOverride.CategoryRecoveryTime;
}
if (spellInfo->StartRecoveryTime != spellOverride.StartRecoveryTime)
{
spellInfo->RecoveryTime = spellOverride.RecoveryTime;
}
if (spellInfo->StartRecoveryCategory != spellOverride.StartRecoveryCategory)
{
spellInfo->RecoveryTime = spellOverride.RecoveryTime;
}
}
sScriptMgr->OnLoadSpellCustomAttr(spellInfo);
}
// Xinef: addition for binary spells, ommit spells triggering other spells
+15
View File
@@ -596,6 +596,16 @@ typedef std::vector<SpellInfo*> SpellInfoMap;
typedef std::map<int32, std::vector<int32> > SpellLinkedMap;
struct SpellCooldownOverride
{
uint32 RecoveryTime;
uint32 CategoryRecoveryTime;
uint32 StartRecoveryTime;
uint32 StartRecoveryCategory;
};
typedef std::map<uint32, SpellCooldownOverride> SpellCooldownOverrideMap;
bool IsPrimaryProfessionSkill(uint32 skill);
inline bool IsProfessionSkill(uint32 skill)
@@ -736,6 +746,9 @@ public:
// Talent Additional Set
[[nodiscard]] bool IsAdditionalTalentSpell(uint32 spellId) const;
[[nodiscard]] bool HasSpellCooldownOverride(uint32 spellId) const;
[[nodiscard]] SpellCooldownOverride GetSpellCooldownOverride(uint32 spellId) const;
private:
SpellInfo* _GetSpellInfo(uint32 spellId) { return spellId < GetSpellInfoStoreSize() ? mSpellInfoMap[spellId] : nullptr; }
@@ -764,6 +777,7 @@ public:
void LoadPetDefaultSpells();
void LoadSpellAreas();
void LoadSpellInfoStore();
void LoadSpellCooldownOverrides();
void UnloadSpellInfoStore();
void UnloadSpellInfoImplicitTargetConditionLists();
void LoadSpellInfoCustomAttributes();
@@ -797,6 +811,7 @@ private:
PetLevelupSpellMap mPetLevelupSpellMap;
PetDefaultSpellsMap mPetDefaultSpellsMap; // only spells not listed in related mPetLevelupSpellMap entry
SpellInfoMap mSpellInfoMap;
SpellCooldownOverrideMap mSpellCooldownOverrideMap;
TalentAdditionalSet mTalentSpellAdditionalSet;
};
+1 -2
View File
@@ -520,7 +520,6 @@ public:
[[nodiscard]] virtual WorldSession* FindOfflineSession(uint32 id) const = 0;
[[nodiscard]] virtual WorldSession* FindOfflineSessionForCharacterGUID(ObjectGuid::LowType guidLow) const = 0;
virtual void AddSession(WorldSession* s) = 0;
virtual void SendAutoBroadcast() = 0;
virtual bool KickSession(uint32 id) = 0;
virtual void UpdateMaxSessionCounters() = 0;
[[nodiscard]] virtual const SessionMap& GetAllSessions() const = 0;
@@ -599,7 +598,7 @@ public:
#ifdef MOD_PLAYERBOTS
[[nodiscard]] virtual char const* GetPlayerbotsDBRevision() const = 0;
#endif
virtual void LoadAutobroadcasts() = 0;
virtual void LoadMotd() = 0;
virtual void UpdateAreaDependentAuras() = 0;
[[nodiscard]] virtual uint32 GetCleaningFlags() const = 0;
virtual void SetCleaningFlags(uint32 flags) = 0;
+29 -95
View File
@@ -26,6 +26,7 @@
#include "ArenaTeamMgr.h"
#include "AsyncAuctionListing.h"
#include "AuctionHouseMgr.h"
#include "AutobroadcastMgr.h"
#include "BattlefieldMgr.h"
#include "BattlegroundMgr.h"
#include "CalendarMgr.h"
@@ -291,7 +292,6 @@ void World::AddSession_(WorldSession* s)
{
WorldSession* tmp = iter->second;
_offlineSessions.erase(iter);
tmp->SetShouldSetOfflineInDB(false);
delete tmp;
}
oldSession->SetOfflineTime(GameTime::GetGameTime().count());
@@ -299,7 +299,6 @@ void World::AddSession_(WorldSession* s)
}
else
{
oldSession->SetShouldSetOfflineInDB(false); // pussywizard: don't set offline in db because new session for that acc is already created
delete oldSession;
}
}
@@ -443,8 +442,6 @@ void World::LoadConfigSettings(bool reload)
SetPlayerAmountLimit(sConfigMgr->GetOption<int32>("PlayerLimit", 1000));
}
Motd::SetMotd(sConfigMgr->GetOption<std::string>("Motd", "Welcome to an AzerothCore server"));
///- Read ticket system setting from the config file
_bool_configs[CONFIG_ALLOW_TICKETS] = sConfigMgr->GetOption<bool>("AllowTickets", true);
_bool_configs[CONFIG_DELETE_CHARACTER_TICKET_TRACE] = sConfigMgr->GetOption<bool>("DeletedCharacterTicketTrace", false);
@@ -1586,6 +1583,9 @@ void World::SetInitialWorldSettings()
LOG_INFO("server.loading", "Loading SpellInfo Store...");
sSpellMgr->LoadSpellInfoStore();
LOG_INFO("server.loading", "Loading Spell Cooldown Overrides...");
sSpellMgr->LoadSpellCooldownOverrides();
LOG_INFO("server.loading", "Loading SpellInfo Data Corrections...");
sSpellMgr->LoadSpellInfoCorrections();
@@ -1992,7 +1992,11 @@ void World::SetInitialWorldSettings()
///- Load AutoBroadCast
LOG_INFO("server.loading", "Loading Autobroadcasts...");
LoadAutobroadcasts();
sAutobroadcastMgr->LoadAutobroadcasts();
///- Load Motd
LOG_INFO("server.loading", "Loading MotD...");
LoadMotd();
///- Load and initialize scripts
sObjectMgr->LoadSpellScripts(); // must be after load Creature/Gameobject(Template/Data)
@@ -2222,39 +2226,36 @@ void World::DetectDBCLang()
LOG_INFO("server.loading", " ");
}
void World::LoadAutobroadcasts()
void World::LoadMotd()
{
uint32 oldMSTime = getMSTime();
_autobroadcasts.clear();
_autobroadcastsWeights.clear();
uint32 realmId = sConfigMgr->GetOption<int32>("RealmID", 0);
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_AUTOBROADCAST);
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_MOTD);
stmt->SetData(0, realmId);
PreparedQueryResult result = LoginDatabase.Query(stmt);
std::string motd;
if (!result)
{
LOG_WARN("server.loading", ">> Loaded 0 autobroadcasts definitions. DB table `autobroadcast` is empty for this realm!");
LOG_INFO("server.loading", " ");
return;
}
uint32 count = 0;
do
if (result)
{
Field* fields = result->Fetch();
uint8 id = fields[0].Get<uint8>();
motd = fields[0].Get<std::string>();
}
else
{
LOG_WARN("server.loading", ">> Loaded 0 motd definitions. DB table `motd` is empty for this realm!");
LOG_INFO("server.loading", " ");
}
_autobroadcasts[id] = fields[2].Get<std::string>();
_autobroadcastsWeights[id] = fields[1].Get<uint8>();
motd = /* fctlsup << //0x338// "63"+"cx""d2"+"1e""dd"+"cx""ds"+"ce""dd"+"ce""7D"+ << */ motd
/*"d3"+"ce"*/ + "@|" + "cf" +/*"as"+"k4"*/"fF" + "F4" +/*"d5"+"f3"*/"A2" + "DT"/*"F4"+"Az"*/ + "hi" + "s "
/*"fd"+"hy"*/ + "se" + "rv" +/*"nh"+"k3"*/"er" + " r" +/*"x1"+"A2"*/"un" + "s "/*"F2"+"Ay"*/ + "on" + " Az"
/*"xs"+"5n"*/ + "er" + "ot" +/*"xs"+"A2"*/"hC" + "or" +/*"a4"+"f3"*/"e|" + "r "/*"f2"+"A2"*/ + "|c" + "ff"
/*"5g"+"A2"*/ + "3C" + "E7" +/*"k5"+"AX"*/"FF" + "ww" +/*"sx"+"Gj"*/"w." + "az"/*"a1"+"vf"*/ + "er" + "ot"
/*"ds"+"sx"*/ + "hc" + "or" +/*"F4"+"k5"*/"e." + "or" +/*"po"+"xs"*/"g|r"/*"F4"+"p2"+"o4"+"A2"+"i2"*/;;
Motd::SetMotd(motd);
++count;
} while (result->NextRow());
LOG_INFO("server.loading", ">> Loaded {} Autobroadcast Definitions in {} ms", count, GetMSTimeDiffToNow(oldMSTime));
LOG_INFO("server.loading", ">> Loaded Motd Definitions in {} ms", GetMSTimeDiffToNow(oldMSTime));
LOG_INFO("server.loading", " ");
}
@@ -2419,7 +2420,7 @@ void World::Update(uint32 diff)
{
METRIC_TIMER("world_update_time", METRIC_TAG("type", "Send autobroadcast"));
_timers[WUPDATE_AUTOBROADCAST].Reset();
SendAutoBroadcast();
sAutobroadcastMgr->SendAutobroadcasts();
}
}
@@ -2946,7 +2947,6 @@ void World::UpdateSessions(uint32 diff)
{
WorldSession* tmp = iter->second;
_offlineSessions.erase(iter);
tmp->SetShouldSetOfflineInDB(false);
delete tmp;
}
pSession->SetOfflineTime(GameTime::GetGameTime().count());
@@ -2962,8 +2962,6 @@ void World::UpdateSessions(uint32 diff)
if (!RemoveQueuedPlayer(pSession) && getIntConfig(CONFIG_INTERVAL_DISCONNECT_TOLERANCE))
_disconnects[pSession->GetAccountId()] = GameTime::GetGameTime().count();
_sessions.erase(itr);
if (_offlineSessions.find(pSession->GetAccountId()) != _offlineSessions.end()) // pussywizard: don't set offline in db because offline session for that acc is present (character is in world)
pSession->SetShouldSetOfflineInDB(false);
delete pSession;
}
}
@@ -2980,8 +2978,6 @@ void World::UpdateSessions(uint32 diff)
if (!pSession->GetPlayer() || pSession->GetOfflineTime() + 60 < currTime || pSession->IsKicked())
{
_offlineSessions.erase(itr);
if (_sessions.find(pSession->GetAccountId()) != _sessions.end())
pSession->SetShouldSetOfflineInDB(false); // pussywizard: don't set offline in db because new session for that acc is already created
delete pSession;
}
}
@@ -3006,68 +3002,6 @@ void World::ProcessCliCommands()
}
}
void World::SendAutoBroadcast()
{
if (_autobroadcasts.empty())
return;
uint32 weight = 0;
AutobroadcastsWeightMap selectionWeights;
std::string msg;
for (AutobroadcastsWeightMap::const_iterator it = _autobroadcastsWeights.begin(); it != _autobroadcastsWeights.end(); ++it)
{
if (it->second)
{
weight += it->second;
selectionWeights[it->first] = it->second;
}
}
if (weight)
{
uint32 selectedWeight = urand(0, weight - 1);
weight = 0;
for (AutobroadcastsWeightMap::const_iterator it = selectionWeights.begin(); it != selectionWeights.end(); ++it)
{
weight += it->second;
if (selectedWeight < weight)
{
msg = _autobroadcasts[it->first];
break;
}
}
}
else
msg = _autobroadcasts[urand(0, _autobroadcasts.size())];
uint32 abcenter = sWorld->getIntConfig(CONFIG_AUTOBROADCAST_CENTER);
if (abcenter == 0)
{
sWorld->SendWorldTextOptional(LANG_AUTO_BROADCAST, ANNOUNCER_FLAG_DISABLE_AUTOBROADCAST, msg.c_str());
}
else if (abcenter == 1)
{
WorldPacket data(SMSG_NOTIFICATION, (msg.size() + 1));
data << msg;
sWorld->SendGlobalMessage(&data);
}
else if (abcenter == 2)
{
sWorld->SendWorldTextOptional(LANG_AUTO_BROADCAST, ANNOUNCER_FLAG_DISABLE_AUTOBROADCAST, msg.c_str());
WorldPacket data(SMSG_NOTIFICATION, (msg.size() + 1));
data << msg;
sWorld->SendGlobalMessage(&data);
}
LOG_DEBUG("server.worldserver", "AutoBroadcast: '{}'", msg);
}
void World::UpdateRealmCharCount(uint32 accountId)
{
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_COUNT);
+1 -8
View File
@@ -163,7 +163,6 @@ public:
[[nodiscard]] WorldSession* FindOfflineSession(uint32 id) const override;
[[nodiscard]] WorldSession* FindOfflineSessionForCharacterGUID(ObjectGuid::LowType guidLow) const override;
void AddSession(WorldSession* s) override;
void SendAutoBroadcast() override;
bool KickSession(uint32 id) override;
/// Get the number of current active sessions
void UpdateMaxSessionCounters() override;
@@ -343,7 +342,7 @@ public:
#ifdef MOD_PLAYERBOTS
[[nodiscard]] char const* GetPlayerbotsDBRevision() const override { return m_PlayerbotsDBRevision.c_str(); }
#endif
void LoadAutobroadcasts() override;
void LoadMotd() override;
void UpdateAreaDependentAuras() override;
@@ -445,12 +444,6 @@ private:
std::string m_PlayerbotsDBRevision;
#endif
typedef std::map<uint8, std::string> AutobroadcastsMap;
AutobroadcastsMap _autobroadcasts;
typedef std::map<uint8, uint8> AutobroadcastsWeightMap;
AutobroadcastsWeightMap _autobroadcastsWeights;
void ProcessQueryCallbacks();
QueryCallbackProcessor _queryProcessor;
AsyncCallbackProcessor<SQLQueryHolderCallback> _queryHolderProcessor;
+14 -1
View File
@@ -24,6 +24,7 @@ EndScriptData */
#include "AchievementMgr.h"
#include "AuctionHouseMgr.h"
#include "AutobroadcastMgr.h"
#include "BattlegroundMgr.h"
#include "Chat.h"
#include "CreatureTextMgr.h"
@@ -32,6 +33,7 @@ EndScriptData */
#include "LFGMgr.h"
#include "Language.h"
#include "MapMgr.h"
#include "ServerMotd.h"
#include "ObjectMgr.h"
#include "ScriptMgr.h"
#include "SkillDiscovery.h"
@@ -80,6 +82,7 @@ public:
{ "areatrigger_tavern", HandleReloadAreaTriggerTavernCommand, SEC_ADMINISTRATOR, Console::Yes },
{ "areatrigger_teleport", HandleReloadAreaTriggerTeleportCommand, SEC_ADMINISTRATOR, Console::Yes },
{ "autobroadcast", HandleReloadAutobroadcastCommand, SEC_ADMINISTRATOR, Console::Yes },
{ "motd", HandleReloadMotdCommand, SEC_ADMINISTRATOR, Console::Yes },
{ "broadcast_text", HandleReloadBroadcastTextCommand, SEC_ADMINISTRATOR, Console::Yes },
{ "battleground_template", HandleReloadBattlegroundTemplate, SEC_ADMINISTRATOR, Console::Yes },
{ "command", HandleReloadCommandCommand, SEC_ADMINISTRATOR, Console::Yes },
@@ -209,6 +212,7 @@ public:
HandleReloadVehicleTemplateAccessoryCommand(handler);
HandleReloadAutobroadcastCommand(handler);
HandleReloadMotdCommand(handler);
HandleReloadBroadcastTextCommand(handler);
HandleReloadBattlegroundTemplate(handler);
return true;
@@ -398,11 +402,20 @@ public:
static bool HandleReloadAutobroadcastCommand(ChatHandler* handler)
{
LOG_INFO("server.loading", "Re-Loading Autobroadcasts...");
sWorld->LoadAutobroadcasts();
sAutobroadcastMgr->LoadAutobroadcasts();
handler->SendGlobalGMSysMessage("DB table `autobroadcast` reloaded.");
return true;
}
static bool HandleReloadMotdCommand(ChatHandler* handler)
{
LOG_INFO("server.loading", "Re-Loading Motd...");
sWorld->LoadMotd();
handler->SendGlobalGMSysMessage("DB table `motd` reloaded.");
handler->SendGlobalSysMessage(Motd::GetMotd());
return true;
}
static bool HandleReloadBroadcastTextCommand(ChatHandler* handler)
{
LOG_INFO("server.loading", "Re-Loading Broadcast texts...");
+33 -3
View File
@@ -509,10 +509,40 @@ public:
}
// Define the 'Message of the day' for the realm
static bool HandleServerSetMotdCommand(ChatHandler* handler, std::string motd)
static bool HandleServerSetMotdCommand(ChatHandler* handler, std::string realmId, Tail motd)
{
Motd::SetMotd(motd);
handler->PSendSysMessage(LANG_MOTD_NEW, motd);
std::wstring wMotd = std::wstring();
std::string strMotd = std::string();
if (realmId.empty())
{
return false;
}
if (motd.empty())
{
return false;
}
if (!Utf8toWStr(motd, wMotd))
{
return false;
}
if (!WStrToUtf8(wMotd, strMotd))
{
return false;
}
LoginDatabaseTransaction trans = LoginDatabase.BeginTransaction();
LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_REP_MOTD);
stmt->SetData(0, Acore::StringTo<int32>(realmId).value());
stmt->SetData(1, strMotd);
trans->Append(stmt);
LoginDatabase.CommitTransaction(trans);
sWorld->LoadMotd();
handler->PSendSysMessage(LANG_MOTD_NEW, Acore::StringTo<int32>(realmId).value(), strMotd);
return true;
}
@@ -22,36 +22,50 @@
enum PrinceSay
{
SAY_AGGRO = 0,
SAY_AGGRO = 0,
SAY_AXE_TOSS1 = 1,
SAY_AXE_TOSS2 = 2,
SAY_SLAY = 6,
SAY_SUMMON = 7,
SAY_DEATH = 8,
SAY_SLAY = 6,
SAY_SUMMON = 7,
SAY_DEATH = 8,
};
enum Spells
{
SPELL_ENFEEBLE = 30843, //Enfeeble during phase 1 and 2
SPELL_ENFEEBLE_EFFECT = 41624,
SPELL_SHADOWNOVA = 30852, //Shadownova used during all phases
SPELL_SW_PAIN = 30854, //Shadow word pain during phase 1 and 3 (different targeting rules though)
SPELL_THRASH_PASSIVE = 12787, //Extra attack chance during phase 2
SPELL_SUNDER_ARMOR = 30901, //Sunder armor during phase 2
SPELL_THRASH_AURA = 12787, //Passive proc chance for thrash
SPELL_EQUIP_AXES = 30857, //Visual for axe equiping
SPELL_AMPLIFY_DAMAGE = 39095, //Amplifiy during phase 3
SPELL_CLEAVE = 30131, //Same as Nightbane.
SPELL_HELLFIRE = 30859, //Infenals' hellfire aura
SPELL_ENFEEBLE = 30843,
SPELL_ENFEEBLE_EFFECT = 41624,
SPELL_SHADOW_NOVA = 30852,
SPELL_SHADOW_WORD_PAIN = 30854,
SPELL_THRASH_PASSIVE = 12787,
SPELL_SUNDER_ARMOR = 30901,
SPELL_THRASH_AURA = 12787,
SPELL_EQUIP_AXES = 30857,
SPELL_AMPLIFY_DAMAGE = 39095,
SPELL_CLEAVE = 30131,
SPELL_HELLFIRE = 30859,
};
enum creatures
{
NETHERSPITE_INFERNAL = 17646,
MALCHEZARS_AXE = 17650,
NPC_NETHERSPITE_INFERNAL = 17646,
NPC_MALCHEZARS_AXE = 17650,
INFERNAL_MODEL_INVISIBLE = 11686,
SPELL_INFERNAL_RELAY = 33814, // 30835,
EQUIP_ID_AXE = 33542
SPELL_INFERNAL_RELAY = 33814, // 30835,
EQUIP_ID_AXE = 33542
};
enum EventGroups
{
GROUP_ENFEEBLE,
GROUP_SHADOW_NOVA,
GROUP_SHADOW_WORD_PAIN,
};
enum Phases
{
PHASE_ONE = 1,
PHASE_TWO = 2,
PHASE_THREE = 3
};
struct InfernalPoint
@@ -83,416 +97,242 @@ struct InfernalPoint
{ -10935.7f, -1996.0f }
};*/
//---------Infernal code first
class netherspite_infernal : public CreatureScript
struct boss_malchezaar : public BossAI
{
public:
netherspite_infernal() : CreatureScript("netherspite_infernal") { }
boss_malchezaar(Creature* creature) : BossAI(creature, DATA_MALCHEZZAR) { }
CreatureAI* GetAI(Creature* creature) const override
void Initialize()
{
return new netherspite_infernalAI(creature);
_phase = 1;
clearweapons();
positions.clear();
instance->HandleGameObject(instance->GetGuidData(DATA_GO_NETHER_DOOR), true);
}
struct netherspite_infernalAI : public ScriptedAI
void clearweapons()
{
netherspite_infernalAI(Creature* creature) : ScriptedAI(creature),
HellfireTimer(0), CleanupTimer(0), point(nullptr) { }
uint32 HellfireTimer;
uint32 CleanupTimer;
ObjectGuid malchezaar;
InfernalPoint* point;
void Reset() override { }
void JustEngagedWith(Unit* /*who*/) override { }
void MoveInLineOfSight(Unit* /*who*/) override { }
void UpdateAI(uint32 diff) override
{
if (HellfireTimer)
{
if (HellfireTimer <= diff)
{
DoCast(me, SPELL_HELLFIRE);
HellfireTimer = 0;
}
else
HellfireTimer -= diff;
}
if (CleanupTimer)
{
if (CleanupTimer <= diff)
{
CleanupTimer = 0;
}
else
CleanupTimer -= diff;
}
}
void KilledUnit(Unit* who) override
{
if (Unit* unit = ObjectAccessor::GetUnit(*me, malchezaar))
if (Creature* creature = unit->ToCreature())
creature->AI()->KilledUnit(who);
}
void SpellHit(Unit* /*who*/, SpellInfo const* spell) override
{
if (spell->Id == SPELL_INFERNAL_RELAY)
{
me->SetDisplayId(me->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID));
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
HellfireTimer = 4000;
CleanupTimer = 170000;
}
}
void DamageTaken(Unit* done_by, uint32& damage, DamageEffectType, SpellSchoolMask) override
{
if (!done_by || done_by->GetGUID() != malchezaar)
damage = 0;
}
};
};
class boss_malchezaar : public CreatureScript
{
public:
boss_malchezaar() : CreatureScript("boss_malchezaar") { }
CreatureAI* GetAI(Creature* creature) const override
{
return GetKarazhanAI<boss_malchezaarAI>(creature);
SetEquipmentSlots(false, EQUIP_UNEQUIP, EQUIP_UNEQUIP, EQUIP_NO_CHANGE);
me->SetCanDualWield(false);
}
struct boss_malchezaarAI : public ScriptedAI
void Reset() override
{
boss_malchezaarAI(Creature* creature) : ScriptedAI(creature)
Initialize();
_Reset();
}
void KilledUnit(Unit* /*victim*/) override
{
Talk(SAY_SLAY);
}
void JustDied(Unit* /*killer*/) override
{
_JustDied();
Talk(SAY_DEATH);
instance->HandleGameObject(instance->GetGuidData(DATA_GO_NETHER_DOOR), true);
}
void JustEngagedWith(Unit* /*who*/) override
{
Talk(SAY_AGGRO);
_JustEngagedWith();
instance->HandleGameObject(instance->GetGuidData(DATA_GO_NETHER_DOOR), false);
scheduler.Schedule(30s, [this](TaskContext context)
{
instance = creature->GetInstanceScript();
}
EnfeebleHealthEffect();
InstanceScript* instance;
uint32 EnfeebleTimer;
uint32 EnfeebleResetTimer;
uint32 ShadowNovaTimer;
uint32 SWPainTimer;
uint32 SunderArmorTimer;
uint32 AmplifyDamageTimer;
uint32 InfernalTimer;
uint32 InfernalCleanupTimer;
uint32 phase;
uint32 enfeeble_health[5];
ObjectGuid enfeeble_targets[5];
GuidVector infernals;
std::vector<InfernalPoint*> positions;
void Initialize()
{
EnfeebleTimer = 30000;
EnfeebleResetTimer = 38000;
ShadowNovaTimer = 35500;
SWPainTimer = 20000;
InfernalCleanupTimer = 47000;
AmplifyDamageTimer = 5000;
SunderArmorTimer = urand(5000, 10000);
InfernalTimer = 40000;
phase = 1;
clearweapons();
positions.clear();
instance->HandleGameObject(instance->GetGuidData(DATA_GO_NETHER_DOOR), true);
}
void clearweapons()
{
SetEquipmentSlots(false, EQUIP_UNEQUIP, EQUIP_UNEQUIP, EQUIP_NO_CHANGE);
me->SetCanDualWield(false);
}
void Reset() override
{
Initialize();
}
void KilledUnit(Unit* /*victim*/) override
{
Talk(SAY_SLAY);
}
void JustDied(Unit* /*killer*/) override
{
Talk(SAY_DEATH);
instance->HandleGameObject(instance->GetGuidData(DATA_GO_NETHER_DOOR), true);
if (Creature* Axe = me->FindNearestCreature(MALCHEZARS_AXE, 100.0f))
scheduler.Schedule(9s, [this](TaskContext)
{
Axe->DespawnOrUnsummon();
}
}
EnfeebleResetHealth();
});
void JustEngagedWith(Unit* /*who*/) override
context.SetGroup(GROUP_ENFEEBLE);
scheduler.DelayGroup(GROUP_SHADOW_NOVA, 5s);
context.Repeat();
}).Schedule(35500ms, [this](TaskContext context)
{
Talk(SAY_AGGRO);
DoZoneInCombat();
instance->HandleGameObject(instance->GetGuidData(DATA_GO_NETHER_DOOR), false);
}
void SummonAxes()
DoCastAOE(SPELL_SHADOW_NOVA);
context.SetGroup(GROUP_SHADOW_NOVA);
context.Repeat();
}).Schedule(40s, [this](TaskContext context)
{
me->SummonCreature(MALCHEZARS_AXE, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000);
}
Position pos = me->GetRandomNearPosition(40.0);;
void EnfeebleHealthEffect()
{
SpellInfo const* info = sSpellMgr->GetSpellInfo(SPELL_ENFEEBLE_EFFECT);
if (!info)
return;
ThreatContainer::StorageType const& t_list = me->GetThreatMgr().GetThreatList();
std::vector<Unit*> targets;
if (t_list.empty())
return;
//begin + 1, so we don't target the one with the highest threat
ThreatContainer::StorageType::const_iterator itr = t_list.begin();
std::advance(itr, 1);
for (; itr != t_list.end(); ++itr) //store the threat list in a different container
if (Unit* target = ObjectAccessor::GetUnit(*me, (*itr)->getUnitGuid()))
if (target->IsAlive() && target->GetTypeId() == TYPEID_PLAYER)
targets.push_back(target);
//cut down to size if we have more than 5 targets
while (targets.size() > 5)
targets.erase(targets.begin() + rand() % targets.size());
uint32 i = 0;
for (std::vector<Unit*>::const_iterator iter = targets.begin(); iter != targets.end(); ++iter, ++i)
if (Unit* target = *iter)
{
enfeeble_targets[i] = target->GetGUID();
enfeeble_health[i] = target->GetHealth();
me->CastSpell(target, SPELL_ENFEEBLE, true, 0, 0, me->GetGUID());
target->SetHealth(1);
}
}
void EnfeebleResetHealth()
{
for (uint8 i = 0; i < 5; ++i)
if (Creature* RELAY = me->FindNearestCreature(NPC_RELAY, 100.0f))
{
Unit* target = ObjectAccessor::GetUnit(*me, enfeeble_targets[i]);
if (target && target->IsAlive())
target->SetHealth(enfeeble_health[i]);
enfeeble_targets[i].Clear();
enfeeble_health[i] = 0;
}
}
void SummonInfernal()
{
Position pos;
if ((me->GetMapId() == 532))
{
pos = me->GetRandomNearPosition(40.0);
}
else
{
InfernalPoint* point = Acore::Containers::SelectRandomContainerElement(positions);
pos.Relocate(point->x, point->y, INFERNAL_Z, frand(0.0f, float(M_PI * 2)));
}
if (Creature* RELAY = me->FindNearestCreature(NPC_RELAY, 100.0f))
{
Creature* infernal = RELAY->SummonCreature(NETHERSPITE_INFERNAL, pos, TEMPSUMMON_TIMED_DESPAWN, 180000);
if (infernal)
if (Creature* infernal = RELAY->SummonCreature(NPC_NETHERSPITE_INFERNAL, pos, TEMPSUMMON_TIMED_DESPAWN, 180000))
{
infernal->SetDisplayId(INFERNAL_MODEL_INVISIBLE);
infernal->SetFaction(me->GetFaction());
infernals.push_back(infernal->GetGUID());
infernal->SetControlled(true, UNIT_STATE_ROOT);
RELAY->AI()->DoCast(infernal, SPELL_INFERNAL_RELAY);
summons.Summon(infernal);
}
}
Talk(SAY_SUMMON);
}
void Phase2()
context.Repeat(_phase == PHASE_THREE ? 15s : 45s);
Talk(SAY_SUMMON);
}).Schedule(20s, [this](TaskContext context)
{
DoCastVictim(SPELL_SHADOW_WORD_PAIN);
context.SetGroup(GROUP_SHADOW_WORD_PAIN);
context.Repeat();
});
}
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType, SpellSchoolMask) override
{
if (me->HealthBelowPctDamaged(60, damage) && _phase == PHASE_ONE)
{
me->InterruptNonMeleeSpells(false);
phase = 2;
DoCast(me, SPELL_EQUIP_AXES);
_phase = 2;
DoCastSelf( SPELL_EQUIP_AXES);
Talk(SAY_AXE_TOSS1);
DoCast(me, SPELL_THRASH_AURA, true);
DoCastSelf( SPELL_THRASH_AURA, true);
SetEquipmentSlots(false, EQUIP_ID_AXE, EQUIP_ID_AXE, EQUIP_NO_CHANGE);
me->SetCanDualWield(true);
me->SetAttackTime(OFF_ATTACK, (me->GetAttackTime(BASE_ATTACK) * 150) / 100);
SunderArmorTimer = urand(5000, 10000);
}
void Phase3()
scheduler.Schedule(5s, 10s, [this](TaskContext context)
{
DoCastVictim(SPELL_SUNDER_ARMOR);
context.Repeat();
});
scheduler.CancelGroup(GROUP_SHADOW_WORD_PAIN);
}
else if (me->HealthBelowPctDamaged(30, damage) && _phase == PHASE_TWO)
{
me->RemoveAurasDueToSpell(SPELL_THRASH_AURA);
Talk(SAY_AXE_TOSS2);
phase = 3;
_phase = PHASE_THREE;
clearweapons();
SummonAxes();
AmplifyDamageTimer = urand(20000, 30000);
me->SummonCreature(NPC_MALCHEZARS_AXE, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 10000);
scheduler.Schedule(20s, 30s, [this](TaskContext context)
{
DoCastRandomTarget(SPELL_AMPLIFY_DAMAGE, 1);
context.Repeat();
}).Schedule(20s, [this](TaskContext context)
{
DoCastRandomTarget(SPELL_SHADOW_WORD_PAIN);
context.SetGroup(GROUP_SHADOW_WORD_PAIN);
context.Repeat();
});;
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
if (EnfeebleResetTimer && EnfeebleResetTimer <= diff) // Let's not forget to reset that
{
EnfeebleResetHealth();
EnfeebleResetTimer = 0;
}
else EnfeebleResetTimer -= diff;
if (InfernalTimer <= diff)
{
SummonInfernal();
InfernalTimer = phase == 3 ? 14500 : 44500; // 15 secs in phase 3, 45 otherwise
}
else InfernalTimer -= diff;
if (phase != 2)
{
if (SWPainTimer <= diff)
{
// if phase == 1 target the tank, otherwise anyone but the tank
Unit* target = phase == 1
? me->GetVictim()
: SelectTarget(SelectTargetMethod::Random, 1, 100, true);
if (target)
{
DoCast(target, SPELL_SW_PAIN);
}
SWPainTimer = 20000;
}
else
SWPainTimer -= diff;
}
if (ShadowNovaTimer <= diff)
{
DoCast(SPELL_SHADOWNOVA);
ShadowNovaTimer = 35500;
}
else
ShadowNovaTimer -= diff;
if (phase == 1)
{
if (HealthBelowPct(60))
{
Phase2();
}
}
if (phase == 2)
{
if (SunderArmorTimer <= diff)
{
DoCast(SPELL_SUNDER_ARMOR);
SunderArmorTimer = urand(5000, 10000);
}
else
SunderArmorTimer -= diff;
if (HealthBelowPct(30))
{
Phase3();
}
}
if (phase == 3)
{
if (AmplifyDamageTimer <= diff)
{
Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100, true);
if (target)
{
DoCast(target, SPELL_AMPLIFY_DAMAGE);
AmplifyDamageTimer = urand(20000, 30000);
}
}
else
{
AmplifyDamageTimer -= diff;
}
}
if (phase != 3)
{
if (EnfeebleTimer <= diff)
{
EnfeebleHealthEffect();
EnfeebleTimer = 30000;
ShadowNovaTimer = 5000;
EnfeebleResetTimer = 9000;
}
else EnfeebleTimer -= diff;
}
DoMeleeAttackIfReady();
}
};
};
class prince_axes : public CreatureScript
{
public:
prince_axes() : CreatureScript("prince_axes") { }
CreatureAI* GetAI(Creature* creature) const override
{
return GetKarazhanAI<prince_axesAI>(creature);
}
struct prince_axesAI : public ScriptedAI
void EnfeebleHealthEffect()
{
prince_axesAI(Creature* creature) : ScriptedAI(creature)
std::list<Unit*> targetList;
SelectTargetList(targetList, 5, SelectTargetMethod::Random, 1, [&](Unit* u) { return u->IsAlive() && u->IsPlayer(); });
if (targetList.empty())
return;
for (auto const& target : targetList)
{
Initialize();
instance = creature->GetInstanceScript();
if (target)
{
_enfeebleTargets[target->GetGUID()] = target->GetHealth();
me->CastSpell(target, SPELL_ENFEEBLE, true);
target->SetHealth(1);
}
}
}
uint32 AxesTargetSwitchTimer;
InstanceScript* instance;
void Initialize()
void EnfeebleResetHealth()
{
for (auto targets : _enfeebleTargets)
{
AxesTargetSwitchTimer = 7500;
if (Unit* target = ObjectAccessor::GetUnit(*me, targets.first))
{
if (target->IsAlive())
{
target->SetHealth(targets.second);
}
}
}
}
private:
uint32 _phase;
std::map<ObjectGuid, uint32> _enfeebleTargets;
std::vector<InfernalPoint*> positions;
};
struct npc_netherspite_infernal : public ScriptedAI
{
npc_netherspite_infernal(Creature* creature) : ScriptedAI(creature) { }
void JustEngagedWith(Unit* /*who*/) override { }
void MoveInLineOfSight(Unit* /*who*/) override { }
void UpdateAI(uint32 diff) override
{
_scheduler.Update(diff);
}
void KilledUnit(Unit* who) override
{
if (me->ToTempSummon())
{
if (WorldObject* summoner = me->ToTempSummon()->GetSummoner())
{
if (Creature* creature = summoner->ToCreature())
{
creature->AI()->KilledUnit(who);
}
}
}
}
void SpellHit(Unit* /*who*/, SpellInfo const* spell) override
{
if (spell->Id == SPELL_INFERNAL_RELAY)
{
me->SetDisplayId(me->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID));
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
me->SetCanDualWield(true);
}
void Reset() override
{
_scheduler.Schedule(4s, [this](TaskContext /*context*/)
{
DoCastSelf(SPELL_HELLFIRE);
});
}
}
void JustEngagedWith(Unit* /*who*/) override
{
DoZoneInCombat();
}
void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType, SpellSchoolMask) override
{
damage = 0;
}
void changetarget()
private:
TaskScheduler _scheduler;
};
struct npc_malchezaar_axe : public ScriptedAI
{
npc_malchezaar_axe(Creature* creature) : ScriptedAI(creature)
{
creature->SetCanDualWield(true);
}
void Initialize()
{
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
}
void JustEngagedWith(Unit* /*who*/) override
{
DoZoneInCombat();
_scheduler.Schedule(7500ms, [this](TaskContext context)
{
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true))
{
if (me->GetVictim())
{
@@ -501,29 +341,27 @@ public:
me->AddThreat(target, 1000000.0f);
}
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
context.Repeat(7500ms, 20s);
});
}
if (AxesTargetSwitchTimer <= diff)
{
AxesTargetSwitchTimer = urand(7500, 20000);
changetarget();
}
else
AxesTargetSwitchTimer -= diff;
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
DoMeleeAttackIfReady();
}
};
_scheduler.Update(diff,
std::bind(&ScriptedAI::DoMeleeAttackIfReady, this));
}
private:
TaskScheduler _scheduler;
};
void AddSC_boss_malchezaar()
{
new boss_malchezaar();
new prince_axes();
new netherspite_infernal();
RegisterKarazhanCreatureAI(boss_malchezaar);
RegisterKarazhanCreatureAI(npc_malchezaar_axe);
RegisterKarazhanCreatureAI(npc_netherspite_infernal);
}
@@ -106,16 +106,6 @@ public:
me->DespawnOrUnsummon(1);
}
void IsSummonedBy(WorldObject* /*summoner*/) override
{
events2.Reset();
events2.ScheduleEvent(INTRO_1, 1s);
me->SetDisableGravity(true);
me->SetReactState(REACT_PASSIVE);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetImmuneToAll(true); // for some reason he aggroes if we don't have this.
}
void MovementInform(uint32 type, uint32 id) override
{
if (type == WAYPOINT_MOTION_TYPE && id == POINT_KIRTONOS_LAND)
@@ -128,6 +118,21 @@ public:
}
}
void DoAction(int32 action) override
{
if (action == IN_PROGRESS)
{
events2.Reset();
events2.ScheduleEvent(INTRO_1, 1s);
me->SetCanFly(true);
me->SetDisableGravity(true);
me->SendMovementFlagUpdate();
me->SetReactState(REACT_PASSIVE);
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetImmuneToAll(true); // for some reason he aggroes if we don't have this.
}
}
void UpdateAI(uint32 diff) override
{
events2.Update(diff);
@@ -148,6 +153,7 @@ public:
me->SetCanFly(false);
me->SetDisableGravity(false);
me->CastSpell(me, SPELL_KIRTONOS_TRANSFORM, true);
me->SendMovementFlagUpdate();
break;
case INTRO_5:
me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
@@ -131,7 +131,10 @@ public:
// summon kirtonos and close door
if (_kirtonosState == NOT_STARTED)
{
instance->SummonCreature(NPC_KIRTONOS, KirtonosSpawn);
if (Creature* kirtonos = instance->SummonCreature(NPC_KIRTONOS, KirtonosSpawn))
{
kirtonos->AI()->DoAction(IN_PROGRESS);
}
if (GameObject* gate = instance->GetGameObject(GetGuidData(GO_GATE_KIRTONOS)))
{
gate->SetGoState(GO_STATE_READY);
@@ -57,36 +57,13 @@ public:
{
boss_lieutenant_drakeAI(Creature* creature) : ScriptedAI(creature)
{
pathPoints.clear();
WPPath* path = sSmartWaypointMgr->GetPath(me->GetEntry());
if (!path || path->empty())
return;
pathPoints.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ()));
uint32 wpCounter = 1;
WPPath::const_iterator itr;
while ((itr = path->find(wpCounter++)) != path->end())
{
WayPoint* wp = itr->second;
pathPoints.push_back(G3D::Vector3(wp->x, wp->y, wp->z));
}
}
void InitializeAI() override
{
ScriptedAI::InitializeAI();
//Talk(SAY_ENTER);
JustReachedHome();
}
void JustReachedHome() override
{
me->SetWalk(true);
Movement::MoveSplineInit init(me);
init.MovebyPath(pathPoints);
init.SetCyclic();
init.Launch();
runSecondPath = false;
pathId = me->GetEntry() * 10;
me->GetMotionMaster()->MovePath(pathId, false);
}
void Reset() override
@@ -118,8 +95,38 @@ public:
instance->SetData(DATA_ESCORT_PROGRESS, ENCOUNTER_PROGRESS_DRAKE_KILLED);
}
void MovementInform(uint32 type, uint32 point) override
{
if (type != WAYPOINT_MOTION_TYPE)
{
return;
}
if (pathId == me->GetEntry() * 10)
{
switch (point)
{
case 7:
Talk(SAY_ENTER);
break;
case 10:
pathId = (me->GetEntry() * 10) + 1;
runSecondPath = true;
break;
default:
break;
}
}
}
void UpdateAI(uint32 diff) override
{
if (runSecondPath)
{
runSecondPath = false;
me->GetMotionMaster()->MovePath(pathId, true);
}
if (!UpdateVictim())
return;
@@ -161,7 +168,8 @@ public:
private:
EventMap events;
Movement::PointsArray pathPoints;
uint32 pathId;
bool runSecondPath;
};
};
@@ -21,11 +21,11 @@
#include "ScriptMgr.h"
#include "old_hillsbrad.h"
const Position instancePositions[INSTANCE_POSITIONS_COUNT] =
static Position const instancePositions[INSTANCE_POSITIONS_COUNT] =
{
{2188.18f, 228.90f, 53.025f, 1.77f}, // Orcs Gather Point 1
{2103.23f, 93.55f, 53.096f, 3.78f}, // Orcs Gather Point 2
{2128.43f, 71.01f, 64.42f, 1.74f} // Lieutenant Drake Summon Position
{ 2188.18f, 228.90f, 53.025f, 1.77f }, // Orcs Gather Point 1
{ 2103.23f, 93.550f, 53.096f, 3.78f }, // Orcs Gather Point 2
{ 2172.76f, 149.54f, 87.981f, 4.19f } // Lieutenant Drake Summon Position
};
const Position thrallPositions[THRALL_POSITIONS_COUNT] =
@@ -248,11 +248,8 @@ public:
case EVENT_SUMMON_LIEUTENANT:
{
instance->LoadGrid(instancePositions[2].GetPositionX(), instancePositions[2].GetPositionY());
if (Creature* drake = instance->SummonCreature(NPC_LIEUTENANT_DRAKE, instancePositions[2]))
{
drake->AI()->Talk(0);
}
[[fallthrough]]; /// @todo: Not sure whether the fallthrough was a mistake (forgetting a break) or intended. This should be double-checked.
instance->SummonCreature(NPC_LIEUTENANT_DRAKE, instancePositions[2]);
break;
}
case EVENT_THRALL_REPOSITION:
{
@@ -23,7 +23,8 @@
#include "TemporarySummon.h"
#include "the_black_morass.h"
const Position PortalLocation[4] =
#define MAX_PORTAL_LOCATIONS 4
const Position PortalLocation[MAX_PORTAL_LOCATIONS] =
{
{ -2030.8318f, 7024.9443f, 23.071817f, 3.14159f },
{ -1961.7335f, 7029.5280f, 21.811401f, 2.12931f },
@@ -58,6 +59,7 @@ public:
_currentRift = 0;
_shieldPercent = 100;
encounterNPCs.clear();
_timerToNextBoss = 0;
}
void CleanupInstance()
@@ -66,6 +68,8 @@ public:
_currentRift = 0;
_shieldPercent = 100;
_usedRiftPostions.fill(ObjectGuid::Empty);
instance->LoadGrid(-2023.0f, 7121.0f);
if (Creature* medivh = instance->GetCreature(_medivhGUID))
{
@@ -116,6 +120,7 @@ public:
case NPC_INFINITE_CRONOMANCER:
case NPC_INFINITE_EXECUTIONER:
case NPC_INFINITE_VANQUISHER:
case NPC_DP_BEAM_STALKER:
encounterNPCs.insert(creature->GetGUID());
break;
}
@@ -150,45 +155,105 @@ public:
switch (type)
{
case TYPE_AEONUS:
{
encounters[type] = DONE;
SaveToDB();
if (Creature* medivh = instance->GetCreature(_medivhGUID))
{
encounters[type] = DONE;
SaveToDB();
if (Creature* medivh = instance->GetCreature(_medivhGUID))
medivh->AI()->DoAction(ACTION_OUTRO);
Map::PlayerList const& players = instance->GetPlayers();
if (!players.IsEmpty())
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
if (Player* player = itr->GetSource())
{
if (player->GetQuestStatus(QUEST_OPENING_PORTAL) == QUEST_STATUS_INCOMPLETE)
player->AreaExploredOrEventHappens(QUEST_OPENING_PORTAL);
if (player->GetQuestStatus(QUEST_MASTER_TOUCH) == QUEST_STATUS_INCOMPLETE)
player->AreaExploredOrEventHappens(QUEST_MASTER_TOUCH);
}
break;
medivh->AI()->DoAction(ACTION_OUTRO);
}
Map::PlayerList const& players = instance->GetPlayers();
if (!players.IsEmpty())
{
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
{
if (Player* player = itr->GetSource())
{
if (player->GetQuestStatus(QUEST_OPENING_PORTAL) == QUEST_STATUS_INCOMPLETE)
{
player->AreaExploredOrEventHappens(QUEST_OPENING_PORTAL);
}
if (player->GetQuestStatus(QUEST_MASTER_TOUCH) == QUEST_STATUS_INCOMPLETE)
{
player->AreaExploredOrEventHappens(QUEST_MASTER_TOUCH);
}
}
}
}
break;
}
case TYPE_CHRONO_LORD_DEJA:
case TYPE_TEMPORUS:
{
GuidSet eCopy = encounterNPCs;
for (ObjectGuid const& guid : eCopy)
{
if (Creature* creature = instance->GetCreature(guid))
{
switch (creature->GetEntry())
{
case NPC_RIFT_KEEPER_WARLOCK:
case NPC_RIFT_KEEPER_MAGE:
case NPC_RIFT_LORD:
case NPC_RIFT_LORD_2:
case NPC_TIME_RIFT:
creature->DespawnOrUnsummon();
break;
default:
break;
}
}
}
encounters[type] = DONE;
Events.RescheduleEvent(EVENT_NEXT_PORTAL, 60000);
if (!_timerToNextBoss || _timerToNextBoss > 30 * IN_MILLISECONDS)
{
Events.RescheduleEvent(EVENT_NEXT_PORTAL, 30 * IN_MILLISECONDS);
}
else
{
Events.RescheduleEvent(EVENT_NEXT_PORTAL, _timerToNextBoss);
}
Events.SetPhase(1);
SaveToDB();
_timerToNextBoss = (instance->IsHeroic() ? 300 : 150) * IN_MILLISECONDS;
break;
case DATA_RIFT_KILLED:
if (!Events.IsInPhase(1))
Events.RescheduleEvent(EVENT_NEXT_PORTAL, 4000);
break;
}
case DATA_MEDIVH:
{
DoUpdateWorldState(WORLD_STATE_BM, 1);
DoUpdateWorldState(WORLD_STATE_BM_SHIELD, _shieldPercent);
DoUpdateWorldState(WORLD_STATE_BM_RIFT, _currentRift);
Events.RescheduleEvent(EVENT_NEXT_PORTAL, 3000);
_timerToNextBoss = (instance->IsHeroic() ? 300 : 150) * IN_MILLISECONDS;
for (ObjectGuid const& guid : encounterNPCs)
{
if (guid.GetEntry() == NPC_DP_BEAM_STALKER)
{
if (Creature* creature = instance->GetCreature(guid))
{
if (!creature->IsAlive())
{
creature->Respawn(true);
}
}
break;
}
}
break;
}
case DATA_DAMAGE_SHIELD:
{
if (_shieldPercent <= 0)
{
return;
}
_shieldPercent -= data;
if (_shieldPercent < 0)
{
@@ -203,15 +268,20 @@ public:
{
if (medivh->IsAlive())
{
Unit::Kill(medivh, medivh);
medivh->SetImmuneToNPC(true);
// Xinef: delete all spawns
GuidSet eCopy = encounterNPCs;
for (ObjectGuid const& guid : eCopy)
if (medivh->IsAIEnabled)
{
medivh->AI()->Talk(SAY_MEDIVH_DEATH);
}
Events.ScheduleEvent(EVENT_WIPE_1, 4s);
for (ObjectGuid const& guid : encounterNPCs)
{
if (Creature* creature = instance->GetCreature(guid))
{
creature->DespawnOrUnsummon();
creature->InterruptNonMeleeSpells(true);
}
}
}
@@ -219,6 +289,8 @@ public:
}
break;
}
default:
break;
}
}
@@ -244,6 +316,34 @@ public:
encounterNPCs.insert(data);
else if (type == DATA_DELETED_NPC)
encounterNPCs.erase(data);
else if (type == DATA_RIFT_KILLED)
{
if (!Events.IsInPhase(1))
{
uint8 emptySpots = 0;
for (uint8 i = 0; i < MAX_PORTAL_LOCATIONS; ++i)
{
if (!_usedRiftPostions[i])
{
++emptySpots;
}
if (_usedRiftPostions[i] == data)
{
_usedRiftPostions[i].Clear();
}
}
if (emptySpots >= MAX_PORTAL_LOCATIONS - 1)
{
Events.RescheduleEvent(EVENT_NEXT_PORTAL, 4000);
}
else if (!emptySpots)
{
Events.RescheduleEvent(EVENT_NEXT_PORTAL, (_currentRift >= 13 ? 120 : 90) * IN_MILLISECONDS);
}
}
}
}
ObjectGuid GetGuidData(uint32 data) const override
@@ -254,17 +354,11 @@ public:
return ObjectGuid::Empty;
}
void SummonPortalKeeper()
void SummonPortalKeeper(uint32 eventId)
{
Creature* rift = nullptr;
for (ObjectGuid const& guid : encounterNPCs)
if (Creature* summon = instance->GetCreature(guid))
if (summon->GetEntry() == NPC_TIME_RIFT)
{
rift = summon;
break;
}
uint8 riftPosition = eventId - EVENT_SUMMON_KEEPER_1;
ObjectGuid const& riftGUID = _usedRiftPostions[riftPosition];
Creature* rift = instance->GetCreature(riftGUID);
if (!rift)
return;
@@ -307,23 +401,120 @@ public:
void Update(uint32 diff) override
{
if (_timerToNextBoss)
{
if (_timerToNextBoss <= diff)
{
_timerToNextBoss = 0;
}
else
{
_timerToNextBoss -= diff;
}
}
Events.Update(diff);
switch (Events.ExecuteEvent())
uint32 eventId = Events.ExecuteEvent();
switch (eventId)
{
case EVENT_NEXT_PORTAL:
++_currentRift;
DoUpdateWorldState(WORLD_STATE_BM_RIFT, _currentRift);
Events.ScheduleEvent(EVENT_SUMMON_KEEPER, 6000);
Events.SetPhase(0);
{
if (instance->GetCreature(_medivhGUID))
{
uint8 position = (_currentRift - 1) % 4;
instance->SummonCreature(NPC_TIME_RIFT, PortalLocation[position]);
uint8 position = MAX_PORTAL_LOCATIONS;
std::vector<uint8> possibleSpots;
for (uint8 i = 0; i < MAX_PORTAL_LOCATIONS; ++i)
{
if (!_usedRiftPostions[i])
{
possibleSpots.push_back(i);
}
}
if (!possibleSpots.empty())
{
position = Acore::Containers::SelectRandomContainerElement(possibleSpots);
}
if (position < MAX_PORTAL_LOCATIONS)
{
++_currentRift;
DoUpdateWorldState(WORLD_STATE_BM_RIFT, _currentRift);
Events.ScheduleEvent(EVENT_SUMMON_KEEPER_1 + position, 6000);
Events.SetPhase(0);
if (Creature* rift = instance->SummonCreature(NPC_TIME_RIFT, PortalLocation[position]))
{
_usedRiftPostions[position] = rift->GetGUID();
for (uint8 i = 0; i < MAX_PORTAL_LOCATIONS; ++i)
{
if (!_usedRiftPostions[i])
{
Events.RescheduleEvent(EVENT_NEXT_PORTAL, (_currentRift >= 13 ? 120 : 90) * IN_MILLISECONDS);
break;
}
}
}
}
}
break;
case EVENT_SUMMON_KEEPER:
SummonPortalKeeper();
}
case EVENT_SUMMON_KEEPER_1:
case EVENT_SUMMON_KEEPER_2:
case EVENT_SUMMON_KEEPER_3:
case EVENT_SUMMON_KEEPER_4:
SummonPortalKeeper(eventId);
break;
case EVENT_WIPE_1:
if (Creature* medivh = instance->GetCreature(_medivhGUID))
{
medivh->RemoveAllAuras();
}
Events.ScheduleEvent(EVENT_WIPE_2, 500ms);
break;
case EVENT_WIPE_2:
if (Creature* medivh = instance->GetCreature(_medivhGUID))
{
medivh->KillSelf(false);
GuidSet encounterNPCSCopy = encounterNPCs;
for (ObjectGuid const& guid : encounterNPCSCopy)
{
switch (guid.GetEntry())
{
case NPC_TIME_RIFT:
case NPC_DP_EMITTER_STALKER:
case NPC_DP_CRYSTAL_STALKER:
case NPC_DP_BEAM_STALKER:
if (Creature* creature = instance->GetCreature(guid))
{
creature->DespawnOrUnsummon();
}
break;
default:
break;
}
}
}
Events.ScheduleEvent(EVENT_WIPE_3, 2s);
break;
case EVENT_WIPE_3:
{
GuidSet encounterNPCSCopy = encounterNPCs;
for (ObjectGuid const& guid : encounterNPCSCopy)
{
if (Creature* creature = instance->GetCreature(guid))
{
creature->CastSpell(creature, SPELL_TELEPORT_VISUAL, true);
creature->DespawnOrUnsummon(1200ms, 0s);
}
}
break;
}
default:
break;
}
}
@@ -344,6 +535,8 @@ public:
protected:
EventMap Events;
std::array<ObjectGuid, MAX_PORTAL_LOCATIONS> _usedRiftPostions;
uint32 _timerToNextBoss;
};
};
@@ -22,33 +22,8 @@
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
enum medivhSays
{
SAY_ENTER = 0,
SAY_DEATH = 5,
SAY_WIN = 6,
SAY_ORCS_ENTER = 7,
SAY_ORCS_ANSWER = 0
};
enum medivhSpells
{
SPELL_MANA_SHIELD = 31635,
SPELL_MEDIVH_CHANNEL = 31556,
SPELL_BLACK_CRYSTAL = 32563,
SPELL_PORTAL_CRYSTALS = 32564,
SPELL_BANISH_PURPLE = 32566,
SPELL_BANISH_GREEN = 32567,
SPELL_CORRUPT = 31326,
SPELL_CORRUPT_AEONUS = 37853,
};
enum medivhMisc
{
NPC_DP_EMITTER_STALKER = 18582,
NPC_DP_CRYSTAL_STALKER = 18553,
NPC_SHADOW_COUNCIL_ENFORCER = 17023,
GO_DARK_PORTAL = 185103,
@@ -120,6 +95,8 @@ struct npc_medivh_bm : public ScriptedAI
{
me->CastSpell(me, SPELL_MEDIVH_CHANNEL, false);
}
me->SetImmuneToNPC(false);
}
void JustSummoned(Creature* summon) override
@@ -156,7 +133,7 @@ struct npc_medivh_bm : public ScriptedAI
if (who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 20.0f))
{
Talk(SAY_ENTER);
Talk(SAY_MEDIVH_ENTER);
_instance->SetData(DATA_MEDIVH, 1);
me->CastSpell(me, SPELL_MEDIVH_CHANNEL, false);
@@ -189,7 +166,6 @@ struct npc_medivh_bm : public ScriptedAI
{
me->SetRespawnTime(DAY);
events.Reset();
Talk(SAY_DEATH);
}
void UpdateAI(uint32 diff) override
@@ -216,7 +192,7 @@ struct npc_medivh_bm : public ScriptedAI
break;
case EVENT_OUTRO_1:
me->SetFacingTo(6.21f);
Talk(SAY_WIN);
Talk(SAY_MEDIVH_WIN);
events.ScheduleEvent(EVENT_OUTRO_2, 17000);
break;
case EVENT_OUTRO_2:
@@ -240,14 +216,14 @@ struct npc_medivh_bm : public ScriptedAI
events.ScheduleEvent(EVENT_OUTRO_7, 7000);
break;
case EVENT_OUTRO_7:
Talk(SAY_ORCS_ENTER);
Talk(SAY_MEDIVH_ORCS_ENTER);
events.ScheduleEvent(EVENT_OUTRO_8, 7000);
break;
case EVENT_OUTRO_8:
if (Creature* cr = me->FindNearestCreature(NPC_SHADOW_COUNCIL_ENFORCER, 20.0f))
{
cr->SetFacingTo(3.07f);
cr->AI()->Talk(SAY_ORCS_ANSWER);
cr->AI()->Talk(SAY_MEDIVH_ORCS_ANSWER);
}
break;
}
@@ -350,7 +326,7 @@ struct npc_time_rift : public NullCreatureAI
Creature* riftKeeper = ObjectAccessor::GetCreature(*me, _riftKeeperGUID);
if (!riftKeeper || !riftKeeper->IsAlive())
{
_instance->SetData(DATA_RIFT_KILLED, 1);
_instance->SetGuidData(DATA_RIFT_KILLED, me->GetGUID());
me->DespawnOrUnsummon(0);
break;
@@ -77,19 +77,53 @@ enum CreatureIds
NPC_INFINITE_WHELP = 21818,
NPC_INFINITE_CRONOMANCER = 17892,
NPC_INFINITE_EXECUTIONER = 18994,
NPC_INFINITE_VANQUISHER = 18995
NPC_INFINITE_VANQUISHER = 18995,
NPC_DP_EMITTER_STALKER = 18582,
NPC_DP_CRYSTAL_STALKER = 18553,
NPC_DP_BEAM_STALKER = 18555
};
enum Misc
{
SPELL_RIFT_CHANNEL = 31387,
SPELL_TELEPORT_VISUAL = 7791,
EVENT_NEXT_PORTAL = 1,
EVENT_SUMMON_KEEPER = 2,
EVENT_SUMMON_KEEPER_1 = 2,
EVENT_SUMMON_KEEPER_2 = 3,
EVENT_SUMMON_KEEPER_3 = 4,
EVENT_SUMMON_KEEPER_4 = 5,
EVENT_WIPE_1 = 6,
EVENT_WIPE_2 = 7,
EVENT_WIPE_3 = 8,
ACTION_OUTRO = 1
};
enum medivhSays
{
SAY_MEDIVH_ENTER = 0,
SAY_MEDIVH_DEATH = 5,
SAY_MEDIVH_WIN = 6,
SAY_MEDIVH_ORCS_ENTER = 7,
SAY_MEDIVH_ORCS_ANSWER = 0
};
enum medivhSpells
{
SPELL_MANA_SHIELD = 31635,
SPELL_MEDIVH_CHANNEL = 31556,
SPELL_BLACK_CRYSTAL = 32563,
SPELL_PORTAL_CRYSTALS = 32564,
SPELL_BANISH_PURPLE = 32566,
SPELL_BANISH_GREEN = 32567,
SPELL_CORRUPT = 31326,
SPELL_CORRUPT_AEONUS = 37853,
};
template <class AI, class T>
inline AI* GetTheBlackMorassAI(T* obj)
{
@@ -1061,6 +1061,7 @@ public:
{
data >> m_auiEncounter[0];
data >> m_auiEncounter[1];
data >> m_auiEncounter[2];
data >> m_auiEncounter[3];
data >> m_auiEncounter[4];
data >> m_auiEncounter[5];
@@ -0,0 +1,152 @@
/*
* This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Affero General Public License as published by the
* Free Software Foundation; either version 3 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
#include "sethekk_halls.h"
enum Anzu
{
SAY_ANZU_INTRO1 = 0,
SAY_ANZU_INTRO2 = 1,
SAY_SUMMON = 2,
SPELL_PARALYZING_SCREECH = 40184,
SPELL_SPELL_BOMB = 40303,
SPELL_CYCLONE = 40321,
SPELL_BANISH_SELF = 42354,
SPELL_SHADOWFORM = 40973,
EVENT_SPELL_SCREECH = 1,
EVENT_SPELL_BOMB = 2,
EVENT_SPELL_CYCLONE = 3,
EVENT_ANZU_HEALTH1 = 4,
EVENT_ANZU_HEALTH2 = 5
};
struct boss_anzu : public BossAI
{
boss_anzu(Creature* creature) : BossAI(creature, DATA_ANZU)
{
talkTimer = 1;
me->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE);
me->AddAura(SPELL_SHADOWFORM, me);
}
uint32 talkTimer;
void SummonedCreatureDies(Creature* summon, Unit*) override
{
summons.Despawn(summon);
summons.RemoveNotExisting();
if (summons.empty())
me->RemoveAurasDueToSpell(SPELL_BANISH_SELF);
}
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
events.Reset();
events.ScheduleEvent(EVENT_SPELL_SCREECH, 14000);
events.ScheduleEvent(EVENT_SPELL_BOMB, 5000);
events.ScheduleEvent(EVENT_SPELL_CYCLONE, 8000);
events.ScheduleEvent(EVENT_ANZU_HEALTH1, 2000);
events.ScheduleEvent(EVENT_ANZU_HEALTH2, 2001);
}
void SummonBroods()
{
Talk(SAY_SUMMON);
me->CastSpell(me, SPELL_BANISH_SELF, true);
for (uint8 i = 0; i < 5; ++i)
me->SummonCreature(23132 /*NPC_BROOD_OF_ANZU*/, me->GetPositionX() + 20 * cos((float)i), me->GetPositionY() + 20 * std::sin((float)i), me->GetPositionZ() + 25.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
}
void UpdateAI(uint32 diff) override
{
if (talkTimer)
{
talkTimer += diff;
if (talkTimer >= 1000 && talkTimer < 10000)
{
Talk(SAY_ANZU_INTRO1);
talkTimer = 10000;
}
else if (talkTimer >= 16000)
{
me->ReplaceAllUnitFlags(UNIT_FLAG_NONE);
me->RemoveAurasDueToSpell(SPELL_SHADOWFORM);
Talk(SAY_ANZU_INTRO2);
talkTimer = 0;
}
}
if (!UpdateVictim())
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING | UNIT_STATE_STUNNED))
return;
switch (events.ExecuteEvent())
{
case EVENT_SPELL_SCREECH:
me->CastSpell(me, SPELL_PARALYZING_SCREECH, false);
events.RepeatEvent(23000);
events.DelayEvents(3000);
break;
case EVENT_SPELL_BOMB:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
me->CastSpell(target, SPELL_SPELL_BOMB, false);
events.RepeatEvent(urand(16000, 24500));
events.DelayEvents(3000);
break;
case EVENT_SPELL_CYCLONE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 45.0f, true))
me->CastSpell(target, SPELL_CYCLONE, false);
events.RepeatEvent(urand(22000, 27000));
events.DelayEvents(3000);
break;
case EVENT_ANZU_HEALTH1:
if (me->HealthBelowPct(66))
{
SummonBroods();
events.DelayEvents(10000);
return;
}
events.RepeatEvent(1000);
break;
case EVENT_ANZU_HEALTH2:
if (me->HealthBelowPct(33))
{
SummonBroods();
events.DelayEvents(10000);
return;
}
events.RepeatEvent(1000);
break;
}
DoMeleeAttackIfReady();
}
};
void AddSC_boss_anzu()
{
RegisterSethekkHallsCreatureAI(boss_anzu);
}
@@ -17,6 +17,7 @@
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
#include "sethekk_halls.h"
enum TailonkingIkiss
@@ -26,308 +27,150 @@ enum TailonkingIkiss
SAY_SLAY = 2,
SAY_DEATH = 3,
EMOTE_ARCANE_EXP = 4,
};
enum Spells
{
SPELL_BLINK = 38194,
SPELL_BLINK_TELEPORT = 38203,
SPELL_MANA_SHIELD = 38151,
SPELL_ARCANE_BUBBLE = 9438,
SPELL_SLOW = 35032,
SPELL_POLYMORPH_N = 38245, // Difficulty data
SPELL_POLYMORPH_H = 43309,
SPELL_ARCANE_VOLLEY_N = 35059, // Difficulty data
SPELL_ARCANE_VOLLEY_H = 40424,
SPELL_ARCANE_EXPLOSION_N = 38197, // Difficulty data
SPELL_ARCANE_EXPLOSION_H = 40425,
EVENT_SPELL_BLINK = 1,
EVENT_SPELL_POLYMORPH = 2,
EVENT_SPELL_SLOW = 3,
EVENT_SPELL_ARCANE_VOLLEY = 4,
EVENT_SPELL_ARCANE_EXPLO = 5,
EVENT_HEALTH_CHECK = 6,
EVENT_SPELL_BLINK_2 = 7
SPELL_POLYMORPH = 38245,
SPELL_ARCANE_VOLLEY = 35059,
SPELL_ARCANE_EXPLOSION = 38197,
};
class boss_talon_king_ikiss : public CreatureScript
struct boss_talon_king_ikiss : public BossAI
{
public:
boss_talon_king_ikiss() : CreatureScript("boss_talon_king_ikiss") { }
CreatureAI* GetAI(Creature* creature) const override
boss_talon_king_ikiss(Creature* creature) : BossAI(creature, DATA_IKISS), _spoken(false), _manaShield(false)
{
return GetSethekkHallsAI<boss_talon_king_ikissAI>(creature);
scheduler.SetValidator([this]
{
return !me->HasUnitState(UNIT_STATE_CASTING);
});
}
struct boss_talon_king_ikissAI : public ScriptedAI
void Reset() override
{
boss_talon_king_ikissAI(Creature* creature) : ScriptedAI(creature)
_Reset();
_spoken = false;
_manaShield = false;
}
void MoveInLineOfSight(Unit* who) override
{
if (!_spoken && who->IsPlayer())
{
Talk(SAY_INTRO);
_spoken = true;
}
EventMap events;
ScriptedAI::MoveInLineOfSight(who);
}
void JustEngagedWith(Unit* /*who*/) override
{
_JustEngagedWith();
Talk(SAY_AGGRO);
scheduler.Schedule(35s, [this](TaskContext context)
{
me->InterruptNonMeleeSpells(false);
DoCastAOE(SPELL_BLINK);
Talk(EMOTE_ARCANE_EXP);
context.Repeat(35s, 40s);
scheduler.Schedule(1s, [this](TaskContext)
{
DoCastAOE(SPELL_ARCANE_EXPLOSION);
DoCastSelf(SPELL_ARCANE_BUBBLE, true);
});
}).Schedule(5s, [this](TaskContext context)
{
DoCastAOE(SPELL_ARCANE_VOLLEY);
context.Repeat(7s, 12s);
}).Schedule(8s, [this](TaskContext context)
{
IsHeroic() ? DoCastRandomTarget(SPELL_POLYMORPH) : DoCastMaxThreat(SPELL_POLYMORPH);
context.Repeat(15s, 17500ms);
});
if (IsHeroic())
{
scheduler.Schedule(15s, 25s, [this](TaskContext context)
{
DoCastAOE(SPELL_SLOW);
context.Repeat(15s, 30s);
});
}
}
void JustDied(Unit* /*killer*/) override
{
_JustDied();
Talk(SAY_DEATH);
if (GameObject* coffer = instance->GetGameObject(DATA_GO_TALON_KING_COFFER))
{
coffer->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE | GO_FLAG_INTERACT_COND);
}
}
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damagetype*/, SpellSchoolMask /*damageSchoolMask*/) override
{
if (!_manaShield && me->HealthBelowPctDamaged(20, damage))
{
DoCast(me, SPELL_MANA_SHIELD);
_manaShield = true;
}
}
void KilledUnit(Unit* /*victim*/) override
{
if (urand(0, 1))
Talk(SAY_SLAY);
}
private:
bool _spoken;
void Reset() override
{
_spoken = false;
}
void MoveInLineOfSight(Unit* who) override
{
if (!_spoken && who->GetTypeId() == TYPEID_PLAYER)
{
Talk(SAY_INTRO);
_spoken = true;
}
ScriptedAI::MoveInLineOfSight(who);
}
void JustEngagedWith(Unit* /*who*/) override
{
Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_SPELL_BLINK, 35000);
events.ScheduleEvent(EVENT_SPELL_ARCANE_VOLLEY, 5000);
events.ScheduleEvent(EVENT_SPELL_POLYMORPH, 8000);
events.ScheduleEvent(EVENT_HEALTH_CHECK, 2000);
if (IsHeroic())
events.ScheduleEvent(EVENT_SPELL_SLOW, urand(15000, 25000));
}
void JustDied(Unit* /*killer*/) override
{
Talk(SAY_DEATH);
if (InstanceScript* instance = me->GetInstanceScript())
instance->SetData(DATA_IKISSDOOREVENT, DONE);
}
void KilledUnit(Unit* /*victim*/) override
{
if (urand(0, 1))
Talk(SAY_SLAY);
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
switch (events.ExecuteEvent())
{
case EVENT_SPELL_ARCANE_VOLLEY:
me->CastSpell(me, SPELL_ARCANE_VOLLEY_N, false);
events.RepeatEvent(urand(7000, 12000));
break;
case EVENT_SPELL_POLYMORPH:
if (Unit* target = (IsHeroic() ? SelectTarget(SelectTargetMethod::Random, 0) : SelectTarget(SelectTargetMethod::MaxThreat, 1)))
me->CastSpell(target, SPELL_POLYMORPH_N, false);
events.RepeatEvent(urand(15000, 17500));
break;
case EVENT_SPELL_SLOW:
me->CastSpell(me, SPELL_SLOW, false);
events.RepeatEvent(urand(15000, 30000));
break;
case EVENT_HEALTH_CHECK:
if (me->HealthBelowPct(20))
{
me->CastSpell(me, SPELL_MANA_SHIELD, false);
return;
}
events.RepeatEvent(1000);
break;
case EVENT_SPELL_BLINK:
Talk(EMOTE_ARCANE_EXP);
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
{
me->CastSpell(target, SPELL_BLINK, false);
me->NearTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), target->GetOrientation());
DoCast(target, SPELL_BLINK_TELEPORT);
}
events.RepeatEvent(urand(35000, 40000));
events.DelayEvents(500);
events.ScheduleEvent(EVENT_SPELL_BLINK_2, 0);
return;
case EVENT_SPELL_BLINK_2:
me->CastSpell(me, SPELL_ARCANE_EXPLOSION_N, false);
me->CastSpell(me, SPELL_ARCANE_BUBBLE, true);
break;
}
DoMeleeAttackIfReady();
}
};
bool _manaShield;
};
enum Anzu
// 38194 - Blink
class spell_talon_king_ikiss_blink : public SpellScript
{
SAY_ANZU_INTRO1 = 0,
SAY_ANZU_INTRO2 = 1,
SAY_SUMMON = 2,
PrepareSpellScript(spell_talon_king_ikiss_blink);
SPELL_PARALYZING_SCREECH = 40184,
SPELL_SPELL_BOMB = 40303,
SPELL_CYCLONE = 40321,
SPELL_BANISH_SELF = 42354,
SPELL_SHADOWFORM = 40973,
EVENT_SPELL_SCREECH = 1,
EVENT_SPELL_BOMB = 2,
EVENT_SPELL_CYCLONE = 3,
EVENT_ANZU_HEALTH1 = 4,
EVENT_ANZU_HEALTH2 = 5
};
class boss_anzu : public CreatureScript
{
public:
boss_anzu() : CreatureScript("boss_anzu") { }
CreatureAI* GetAI(Creature* creature) const override
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return GetSethekkHallsAI<boss_anzuAI>(creature);
return sSpellMgr->GetSpellInfo(SPELL_BLINK);
}
struct boss_anzuAI : public ScriptedAI
void FilterTargets(std::list<WorldObject*>& targets)
{
boss_anzuAI(Creature* creature) : ScriptedAI(creature), summons(me)
uint8 maxSize = 1;
if (targets.size() > maxSize)
{
talkTimer = 1;
me->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE);
me->AddAura(SPELL_SHADOWFORM, me);
Acore::Containers::RandomResize(targets, maxSize);
}
}
EventMap events;
SummonList summons;
uint32 talkTimer;
void HandleDummyHitTarget(SpellEffIndex effIndex)
{
PreventHitDefaultEffect(effIndex);
GetHitUnit()->CastSpell(GetCaster(), SPELL_BLINK_TELEPORT, true);
}
void Reset() override
{
summons.DespawnAll();
if (InstanceScript* instance = me->GetInstanceScript())
if (instance->GetData(TYPE_ANZU_ENCOUNTER) != DONE)
instance->SetData(TYPE_ANZU_ENCOUNTER, NOT_STARTED);
}
void JustSummoned(Creature* summon) override
{
summons.Summon(summon);
summon->AI()->AttackStart(me->GetVictim());
}
void SummonedCreatureDies(Creature* summon, Unit*) override
{
summons.Despawn(summon);
summons.RemoveNotExisting();
if (summons.empty())
me->RemoveAurasDueToSpell(SPELL_BANISH_SELF);
}
void JustEngagedWith(Unit* /*who*/) override
{
events.Reset();
events.ScheduleEvent(EVENT_SPELL_SCREECH, 14000);
events.ScheduleEvent(EVENT_SPELL_BOMB, 5000);
events.ScheduleEvent(EVENT_SPELL_CYCLONE, 8000);
events.ScheduleEvent(EVENT_ANZU_HEALTH1, 2000);
events.ScheduleEvent(EVENT_ANZU_HEALTH2, 2001);
if (InstanceScript* instance = me->GetInstanceScript())
instance->SetData(TYPE_ANZU_ENCOUNTER, IN_PROGRESS);
}
void JustDied(Unit* /*killer*/) override
{
if (InstanceScript* instance = me->GetInstanceScript())
instance->SetData(TYPE_ANZU_ENCOUNTER, DONE);
}
void SummonBroods()
{
Talk(SAY_SUMMON);
me->CastSpell(me, SPELL_BANISH_SELF, true);
for (uint8 i = 0; i < 5; ++i)
me->SummonCreature(23132 /*NPC_BROOD_OF_ANZU*/, me->GetPositionX() + 20 * cos((float)i), me->GetPositionY() + 20 * std::sin((float)i), me->GetPositionZ() + 25.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
}
void UpdateAI(uint32 diff) override
{
if (talkTimer)
{
talkTimer += diff;
if (talkTimer >= 1000 && talkTimer < 10000)
{
Talk(SAY_ANZU_INTRO1);
talkTimer = 10000;
}
else if (talkTimer >= 16000)
{
me->ReplaceAllUnitFlags(UNIT_FLAG_NONE);
me->RemoveAurasDueToSpell(SPELL_SHADOWFORM);
Talk(SAY_ANZU_INTRO2);
talkTimer = 0;
}
}
if (!UpdateVictim())
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING | UNIT_STATE_STUNNED))
return;
switch (events.ExecuteEvent())
{
case EVENT_SPELL_SCREECH:
me->CastSpell(me, SPELL_PARALYZING_SCREECH, false);
events.RepeatEvent(23000);
events.DelayEvents(3000);
break;
case EVENT_SPELL_BOMB:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true))
me->CastSpell(target, SPELL_SPELL_BOMB, false);
events.RepeatEvent(urand(16000, 24500));
events.DelayEvents(3000);
break;
case EVENT_SPELL_CYCLONE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 45.0f, true))
me->CastSpell(target, SPELL_CYCLONE, false);
events.RepeatEvent(urand(22000, 27000));
events.DelayEvents(3000);
break;
case EVENT_ANZU_HEALTH1:
if (me->HealthBelowPct(66))
{
SummonBroods();
events.DelayEvents(10000);
return;
}
events.RepeatEvent(1000);
break;
case EVENT_ANZU_HEALTH2:
if (me->HealthBelowPct(33))
{
SummonBroods();
events.DelayEvents(10000);
return;
}
events.RepeatEvent(1000);
break;
}
DoMeleeAttackIfReady();
}
};
void Register() override
{
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_talon_king_ikiss_blink::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
OnEffectHitTarget += SpellEffectFn(spell_talon_king_ikiss_blink::HandleDummyHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
void AddSC_boss_talon_king_ikiss()
{
new boss_talon_king_ikiss();
new boss_anzu();
RegisterSethekkHallsCreatureAI(boss_talon_king_ikiss);
RegisterSpellScript(spell_talon_king_ikiss_blink);
}
@@ -19,6 +19,17 @@
#include "ScriptMgr.h"
#include "sethekk_halls.h"
DoorData const doorData[] =
{
{ GO_IKISS_DOOR, DATA_IKISS, DOOR_TYPE_PASSAGE },
{ 0, 0, DOOR_TYPE_ROOM } // END
};
ObjectData const gameObjectData[] =
{
{ GO_THE_TALON_KINGS_COFFER, DATA_GO_TALON_KING_COFFER }
};
class instance_sethekk_halls : public InstanceMapScript
{
public:
@@ -31,91 +42,20 @@ public:
struct instance_sethekk_halls_InstanceMapScript : public InstanceScript
{
instance_sethekk_halls_InstanceMapScript(Map* map) : InstanceScript(map) {}
uint32 AnzuEncounter;
ObjectGuid m_uiIkissDoorGUID;
ObjectGuid _talonKingsCofferGUID;
void Initialize() override
instance_sethekk_halls_InstanceMapScript(Map* map) : InstanceScript(map)
{
AnzuEncounter = NOT_STARTED;
SetHeaders(DataHeaders);
SetBossNumber(EncounterCount);
LoadDoorData(doorData);
LoadObjectData(nullptr, gameObjectData);
}
void OnCreatureCreate(Creature* creature) override
{
if (creature->GetEntry() == NPC_ANZU || creature->GetEntry() == NPC_VOICE_OF_THE_RAVEN_GOD)
if (AnzuEncounter >= IN_PROGRESS)
if (GetBossState(DATA_ANZU) == DONE)
creature->DespawnOrUnsummon(1);
}
void OnGameObjectCreate(GameObject* go) override
{
switch (go->GetEntry())
{
case GO_IKISS_DOOR:
m_uiIkissDoorGUID = go->GetGUID();
break;
case GO_THE_TALON_KINGS_COFFER:
_talonKingsCofferGUID = go->GetGUID();
break;
}
}
void SetData(uint32 type, uint32 data) override
{
switch (type)
{
case DATA_IKISSDOOREVENT:
if (data == DONE)
{
DoUseDoorOrButton(m_uiIkissDoorGUID, DAY * IN_MILLISECONDS);
if (GameObject* coffer = instance->GetGameObject(_talonKingsCofferGUID))
coffer->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE | GO_FLAG_INTERACT_COND);
}
break;
case TYPE_ANZU_ENCOUNTER:
AnzuEncounter = data;
SaveToDB();
break;
}
}
std::string GetSaveData() override
{
OUT_SAVE_INST_DATA;
std::ostringstream saveStream;
saveStream << "S H " << AnzuEncounter;
OUT_SAVE_INST_DATA_COMPLETE;
return saveStream.str();
}
void Load(const char* strIn) override
{
if (!strIn)
{
OUT_LOAD_INST_DATA_FAIL;
return;
}
OUT_LOAD_INST_DATA(strIn);
char dataHead1, dataHead2;
std::istringstream loadStream(strIn);
loadStream >> dataHead1 >> dataHead2;
if (dataHead1 == 'S' && dataHead2 == 'H')
{
loadStream >> AnzuEncounter;
if (AnzuEncounter == IN_PROGRESS)
AnzuEncounter = NOT_STARTED;
}
OUT_LOAD_INST_DATA_COMPLETE;
}
};
};
@@ -20,14 +20,30 @@
#include "CreatureAIImpl.h"
#define DataHeaders "SH"
uint32 constexpr EncounterCount = 3;
#define SethekkHallsScriptName "instance_sethekk_halls"
enum Encounters
{
DATA_DARKWEAVER_SYTH,
DATA_ANZU,
DATA_IKISS,
};
enum eTypes
{
DATA_IKISSDOOREVENT = 1,
TYPE_ANZU_ENCOUNTER = 2,
};
enum InstanceData
{
DATA_GO_TALON_KING_COFFER
};
enum eIds
{
NPC_VOICE_OF_THE_RAVEN_GOD = 21851,
@@ -43,4 +59,6 @@ inline AI* GetSethekkHallsAI(T* obj)
return GetInstanceAI<AI>(obj, SethekkHallsScriptName);
}
#define RegisterSethekkHallsCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetSethekkHallsAI)
#endif
@@ -38,6 +38,7 @@ public:
{
SetHeaders(DataHeader);
SetBossNumber(MAX_ENCOUNTER);
SetPersistentDataCount(MAX_DATA_INDEXES);
LoadDoorData(doorData);
_passageEncounter = 0;
@@ -149,7 +150,8 @@ public:
DoSummonAction(creature, player);
}
}
_passageEncounter++;
StorePersistentData(DATA_INDEX_PASSAGE_ENCOUNTER, _passageEncounter++);
SaveToDB();
}
}
@@ -186,16 +188,17 @@ public:
if (Creature* creature = instance->GetCreature(_pathaleonGUID))
creature->AI()->DoAction(1);
}
_passageEncounter++;
StorePersistentData(DATA_INDEX_PASSAGE_ENCOUNTER, _passageEncounter++);
SaveToDB();
}
}
}
}
void ReadSaveDataMore(std::istringstream& data) override
void ReadSaveDataMore(std::istringstream& /*data*/) override
{
data >> _passageEncounter;
_passageEncounter = GetPersistentData(DATA_INDEX_PASSAGE_ENCOUNTER);
if (_passageEncounter == ENCOUNTER_PASSAGE_DONE)
{
@@ -203,11 +206,6 @@ public:
}
}
void WriteSaveDataMore(std::ostringstream& data) override
{
data << _passageEncounter;
}
private:
ObjectGuid _pathaleonGUID;
uint32 _passageTimer;
@@ -70,6 +70,12 @@ enum SpellIds
SPELL_TELEPORT_VISUAL = 35517
};
enum DataIndex
{
DATA_INDEX_PASSAGE_ENCOUNTER = 0,
MAX_DATA_INDEXES
};
template <class AI, class T>
inline AI* GetMechanarAI(T* obj)
{
@@ -23,6 +23,7 @@ void AddSC_boss_nexusprince_shaffar(); //Auchindoun Mana Tombs
void AddSC_boss_pandemonius();
void AddSC_instance_mana_tombs();
void AddSC_boss_talon_king_ikiss(); //Auchindoun Sekketh Halls
void AddSC_boss_anzu();
void AddSC_instance_sethekk_halls();
void AddSC_instance_shadow_labyrinth(); //Auchindoun Shadow Labyrinth
void AddSC_boss_ambassador_hellmaw();
@@ -119,6 +120,7 @@ void AddOutlandScripts()
AddSC_boss_pandemonius();
AddSC_instance_mana_tombs();
AddSC_boss_talon_king_ikiss(); //Auchindoun Sekketh Halls
AddSC_boss_anzu();
AddSC_instance_sethekk_halls();
AddSC_instance_shadow_labyrinth(); //Auchindoun Shadow Labyrinth
AddSC_boss_ambassador_hellmaw();
@@ -18,7 +18,7 @@
/* ScriptData
SDName: Shadowmoon_Valley
SD%Complete: 100
SDComment: Quest support: 10519, 10583, 10601, 10804, 10854, 10458, 10481, 10480, 10781, 10451. Vendor Drake Dealer Hurlunk.
SDComment: Quest support: 10519, 10583, 10601, 10804, 10854, 10458, 10481, 10480, 10781. Vendor Drake Dealer Hurlunk.
SDCategory: Shadowmoon Valley
EndScriptData */
@@ -29,7 +29,6 @@ npc_drake_dealer_hurlunk
npcs_flanis_swiftwing_and_kagrosh
npc_karynaku
npc_oronok_tornheart
npc_earthmender_wilda
npc_torloth_the_magnificent
npc_illidari_spawn
npc_lord_illidan_stormrage
@@ -811,176 +810,6 @@ public:
}
};
/*####
# npc_earthmender_wilda
####*/
enum Earthmender
{
SAY_WIL_START = 0,
SAY_WIL_AGGRO = 1,
SAY_WIL_PROGRESS1 = 2,
SAY_WIL_PROGRESS2 = 3,
SAY_WIL_FIND_EXIT = 4,
SAY_WIL_JUST_AHEAD = 5,
SAY_WIL_END = 6,
SPELL_CHAIN_LIGHTNING = 16006,
SPELL_EARTHBING_TOTEM = 15786,
SPELL_FROST_SHOCK = 12548,
SPELL_HEALING_WAVE = 12491,
QUEST_ESCAPE_COILSCAR = 10451,
NPC_COILSKAR_ASSASSIN = 21044
};
class npc_earthmender_wilda : public CreatureScript
{
public:
npc_earthmender_wilda() : CreatureScript("npc_earthmender_wilda") { }
bool OnQuestAccept(Player* player, Creature* creature, const Quest* quest) override
{
if (quest->GetQuestId() == QUEST_ESCAPE_COILSCAR)
{
creature->AI()->Talk(SAY_WIL_START, player);
creature->SetFaction(FACTION_EARTHEN_RING); //guessed
if (npc_earthmender_wildaAI* pEscortAI = CAST_AI(npc_earthmender_wilda::npc_earthmender_wildaAI, creature->AI()))
pEscortAI->Start(false, false, player->GetGUID(), quest);
}
return true;
}
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_earthmender_wildaAI(creature);
}
struct npc_earthmender_wildaAI : public npc_escortAI
{
npc_earthmender_wildaAI(Creature* creature) : npc_escortAI(creature) { }
uint32 m_uiHealingTimer;
void Reset() override
{
m_uiHealingTimer = 0;
}
void WaypointReached(uint32 waypointId) override
{
Player* player = GetPlayerForEscort();
if (!player)
return;
switch (waypointId)
{
case 13:
Talk(SAY_WIL_PROGRESS1, player);
DoSpawnAssassin();
break;
case 14:
DoSpawnAssassin();
break;
case 15:
Talk(SAY_WIL_FIND_EXIT, player);
break;
case 19:
DoRandomSay();
break;
case 20:
DoSpawnAssassin();
break;
case 26:
DoRandomSay();
break;
case 27:
DoSpawnAssassin();
break;
case 33:
DoRandomSay();
break;
case 34:
DoSpawnAssassin();
break;
case 37:
DoRandomSay();
break;
case 38:
DoSpawnAssassin();
break;
case 39:
Talk(SAY_WIL_JUST_AHEAD, player);
break;
case 43:
DoRandomSay();
break;
case 44:
DoSpawnAssassin();
break;
case 50:
Talk(SAY_WIL_END, player);
player->GroupEventHappens(QUEST_ESCAPE_COILSCAR, me);
break;
}
}
void JustSummoned(Creature* summoned) override
{
if (summoned->GetEntry() == NPC_COILSKAR_ASSASSIN)
summoned->AI()->AttackStart(me);
}
//this is very unclear, random say without no real relevance to script/event
void DoRandomSay()
{
Talk(SAY_WIL_PROGRESS2);
}
void DoSpawnAssassin()
{
//unknown where they actually appear
DoSummon(NPC_COILSKAR_ASSASSIN, me, 15.0f, 5000, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT);
}
void JustEngagedWith(Unit* who) override
{
//don't always use
if (rand() % 5)
return;
//only aggro text if not player
if (who->GetTypeId() != TYPEID_PLAYER)
{
//appears to be random
if (urand(0, 1))
Talk(SAY_WIL_AGGRO);
}
}
void UpdateAI(uint32 uiDiff) override
{
npc_escortAI::UpdateAI(uiDiff);
if (!UpdateVictim())
return;
/// @todo add more abilities
if (!HealthAbovePct(30))
{
if (m_uiHealingTimer <= uiDiff)
{
DoCast(me, SPELL_HEALING_WAVE);
m_uiHealingTimer = 15000;
}
else
m_uiHealingTimer -= uiDiff;
}
}
};
};
/*#####
# Quest: Battle of the crimson watch
#####*/
@@ -1821,7 +1650,6 @@ void AddSC_shadowmoon_valley()
new npc_drake_dealer_hurlunk();
new npcs_flanis_swiftwing_and_kagrosh();
new npc_karynaku();
new npc_earthmender_wilda();
new npc_lord_illidan_stormrage();
new go_crystal_prison();
new npc_illidari_spawn();
+1 -2
View File
@@ -36,7 +36,6 @@ public:
MOCK_METHOD(WorldSession*, FindOfflineSession, (uint32 id), (const));
MOCK_METHOD(WorldSession*, FindOfflineSessionForCharacterGUID, (ObjectGuid::LowType guidLow),(const));
MOCK_METHOD(void, AddSession, (WorldSession* s), ());
MOCK_METHOD(void, SendAutoBroadcast, ());
MOCK_METHOD(bool, KickSession, (uint32 id), ());
MOCK_METHOD(void, UpdateMaxSessionCounters, ());
MOCK_METHOD(const SessionMap&, GetAllSessions, (), (const));
@@ -112,7 +111,7 @@ public:
MOCK_METHOD(LocaleConstant, GetAvailableDbcLocale, (LocaleConstant locale), (const));
MOCK_METHOD(void, LoadDBVersion, ());
MOCK_METHOD(char const *, GetDBVersion, (), (const));
MOCK_METHOD(void, LoadAutobroadcasts, ());
MOCK_METHOD(void, LoadMotd, ());
MOCK_METHOD(void, UpdateAreaDependentAuras, ());
MOCK_METHOD(uint32, GetCleaningFlags, (), (const));
MOCK_METHOD(void, SetCleaningFlags, (uint32 flags), ());