mirror of
https://github.com/azerothcore/azerothcore-wotlk.git
synced 2025-11-10 12:24:22 +08:00
Compare commits
43 Commits
ef74cd345d
...
7ae6db02ad
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7ae6db02ad | ||
|
|
5bef92d5ea | ||
|
|
723aae9039 | ||
|
|
283f03bdcd | ||
|
|
57daeed03a | ||
|
|
36d739ee42 | ||
|
|
3ad79541f6 | ||
|
|
be58898d06 | ||
|
|
611a85529d | ||
|
|
040e7a0a4d | ||
|
|
d4cd580ddc | ||
|
|
37833c66e6 | ||
|
|
ec274182a2 | ||
|
|
d9b2e775e3 | ||
|
|
c85c86b285 | ||
|
|
125e1aec9d | ||
|
|
fca2e12056 | ||
|
|
c9aedce67f | ||
|
|
e1d28ae712 | ||
|
|
983557345e | ||
|
|
743a764c3c | ||
|
|
dab83dd19e | ||
|
|
af779202e6 | ||
|
|
09e0343491 | ||
|
|
433be02111 | ||
|
|
494326656d | ||
|
|
6b66ae22e3 | ||
|
|
fb96e65696 | ||
|
|
dea8cd64df | ||
|
|
7ac7228315 | ||
|
|
24ca7efb73 | ||
|
|
0bdf7a6b0f | ||
|
|
639ee028fd | ||
|
|
6ef3383b12 | ||
|
|
695448a7b4 | ||
|
|
1dc05a5254 | ||
|
|
b272f503ff | ||
|
|
ee955e74ab | ||
|
|
f909e9b6eb | ||
|
|
f13b557b4e | ||
|
|
422ccc8e44 | ||
|
|
cd4dfa2166 | ||
|
|
7460218bc2 |
@ -155,7 +155,7 @@ function inst_simple_restarter {
|
||||
|
||||
function inst_download_client_data {
|
||||
# change the following version when needed
|
||||
local VERSION=v17
|
||||
local VERSION=v18.0
|
||||
|
||||
echo "#######################"
|
||||
echo "Client data downloader"
|
||||
|
||||
183
data/sql/updates/db_world/2025_11_05_00.sql
Normal file
183
data/sql/updates/db_world/2025_11_05_00.sql
Normal file
@ -0,0 +1,183 @@
|
||||
-- DB update 2025_11_04_01 -> 2025_11_05_00
|
||||
|
||||
-- Change Spawn Point
|
||||
UPDATE `creature` SET `position_x` = 532.0706, `position_y` = 1473.9459, `position_z` = 109.76107, `orientation` = 5.4972 WHERE (`id1` = 6497) AND (`guid` IN (44738));
|
||||
|
||||
-- Delete old waypoint and create a new one in waypoint_data (sniffed wp)
|
||||
DELETE FROM `waypoints` WHERE (`entry` IN (6497));
|
||||
DELETE FROM `waypoint_data` WHERE `id` = 649700;
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(649700, 1, 550.32355, 1453.3601, 102.83995, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 2, 560.8089, 1444.4222, 100.17067, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 3, 579.13367, 1414.7158, 95.58017, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 4, 593.57294, 1391.2076, 90.5457, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 5, 605.4873, 1365.1119, 86.89633, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 6, 615.50714, 1349.1395, 85.748085, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 7, 633.94946, 1310.1539, 84.25693, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 8, 643.6682, 1301.1842, 85.17119, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 9, 661.93774, 1305.103, 83.19177, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 10, 679.4544, 1316.6484, 81.121284, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 11, 701.6529, 1333.9889, 77.97731, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 12, 716.3771, 1350.1677, 76.052864, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 13, 735.5919, 1359.9868, 74.7311, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 14, 759.6556, 1362.045, 71.884674, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 15, 788.24805, 1362.3418, 67.00611, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 16, 817.2476, 1361.4927, 60.508972, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 17, 838.4114, 1360.8605, 56.570217, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 18, 866.9464, 1361.3516, 51.768867, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 19, 888.2806, 1355.868, 48.78437, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 20, 917.56415, 1347.1743, 45.49018, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 21, 942.1607, 1334.9868, 45.564545, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 22, 976.56726, 1310.7413, 46.00013, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 23, 1005.0521, 1289.1754, 45.481735, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 24, 1033.7482, 1272.1211, 46.23719, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 25, 1055.1008, 1253.4108, 45.855003, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 26, 1080.6647, 1228.3652, 45.75068, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 27, 1106.6715, 1205.8969, 46.48162, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 28, 1126.8285, 1195.9891, 47.394684, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 29, 1154.6526, 1177.5419, 48.430305, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 30, 1187.787, 1155.515, 46.71021, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 31, 1214.3774, 1137.9454, 47.540554, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 32, 1245.4918, 1111.4078, 50.944595, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 33, 1259.9783, 1096.3925, 52.763363, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 34, 1281.7661, 1077.2633, 54.107376, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 35, 1305.2642, 1048.9967, 54.54281, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 36, 1318.6704, 1023.2604, 54.663284, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 37, 1332.5304, 990.83575, 54.651577, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 38, 1339.3923, 960.9286, 54.73848, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 39, 1345.629, 924.2967, 53.814915, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 40, 1357.6875, 883.0408, 52.67861, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 41, 1374.4548, 840.12335, 50.35277, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 42, 1390.0712, 800.3881, 48.731716, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 43, 1407.2906, 766.57434, 46.998886, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 44, 1421.0477, 732.81036, 45.700684, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 45, 1438.3928, 700.6654, 44.742863, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 46, 1462.6694, 666.44934, 46.350983, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 47, 1493.479, 632.8775, 46.6881, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 48, 1527.412, 601.90704, 46.683678, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 49, 1569.2615, 578.867, 41.605648, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 50, 1599.7749, 566.5255, 37.452827, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 51, 1633.1173, 557.6922, 33.72048, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 52, 1666.5055, 548.7752, 33.39571, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 53, 1699.4762, 543.5129, 33.418396, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 54, 1733.0693, 534.8109, 33.39686, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 55, 1766.3834, 526.622, 33.396313, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 56, 1799.5571, 518.5047, 33.451973, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 57, 1833.5399, 506.51108, 34.09343, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 58, 1846.7709, 500.30872, 34.65273, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 59, 1866.7739, 482.8489, 34.661674, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 60, 1876.65, 467.884, 34.267147, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 61, 1890.4196, 433.71887, 33.8925, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 62, 1899.9106, 400.08536, 34.257324, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 63, 1911.1168, 366.9929, 33.98939, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 64, 1929.4626, 333.79535, 35.294994, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 65, 1946.6372, 299.84537, 38.30006, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 66, 1967.2408, 265.27518, 37.96951, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 67, 1984.9171, 233.64508, 36.106697, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 68, 2000.3663, 214.46593, 34.19722, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 69, 2008.7366, 199.68561, 33.87147, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 70, 2033.007, 168.96138, 33.986916, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 71, 2066.642, 154.05067, 33.89913, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 72, 2100.0747, 154.13618, 35.464554, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 73, 2133.1018, 165.71138, 37.972244, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 74, 2159.929, 180.03609, 41.871323, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 75, 2162.2976, 200.29182, 42.721146, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 76, 2164.7114, 218.72179, 40.85692, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 77, 2181.5547, 232.85938, 36.67536, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 78, 2200.375, 243.88374, 34.444607, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 79, 2218.8154, 249.37343, 33.94611, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 80, 2229.708, 247.84766, 33.11627, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 81, 2235.1897, 251.33485, 33.6035, NULL, 2000, 0, 0, 100, 0),
|
||||
(649700, 82, 2229.708, 247.84766, 33.11627, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 83, 2218.8154, 249.37343, 33.94611, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 84, 2200.375, 243.88374, 34.444607, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 85, 2181.5547, 232.85938, 36.67536, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 86, 2164.7114, 218.72179, 40.85692, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 87, 2162.2976, 200.29182, 42.721146, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 88, 2159.929, 180.03609, 41.871323, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 89, 2133.1018, 165.71138, 37.972244, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 90, 2100.0747, 154.13618, 35.464554, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 91, 2066.642, 154.05067, 33.89913, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 92, 2033.007, 168.96138, 33.986916, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 93, 2008.7366, 199.68561, 33.87147, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 94, 2000.3663, 214.46593, 34.19722, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 95, 1984.9171, 233.64508, 36.106697, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 96, 1967.2408, 265.27518, 37.96951, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 97, 1946.6372, 299.84537, 38.30006, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 98, 1929.4626, 333.79535, 35.294994, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 99, 1911.1168, 366.9929, 33.98939, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 100, 1899.9106, 400.08536, 34.257324, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 101, 1890.4196, 433.71887, 33.8925, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 102, 1876.65, 467.884, 34.267147, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 103, 1866.7739, 482.8489, 34.661674, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 104, 1846.7709, 500.30872, 34.65273, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 105, 1833.5399, 506.51108, 34.09343, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 106, 1799.5571, 518.5047, 33.451973, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 107, 1766.3834, 526.622, 33.396313, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 108, 1733.0693, 534.8109, 33.39686, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 109, 1699.4762, 543.5129, 33.418396, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 110, 1666.5055, 548.7752, 33.39571, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 111, 1633.1173, 557.6922, 33.72048, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 112, 1599.7749, 566.5255, 37.452827, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 113, 1569.2615, 578.867, 41.605648, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 114, 1527.412, 601.90704, 46.683678, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 115, 1493.479, 632.8775, 46.6881, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 116, 1462.6694, 666.44934, 46.350983, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 117, 1438.3928, 700.6654, 44.742863, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 118, 1421.0477, 732.81036, 45.700684, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 119, 1407.2906, 766.57434, 46.998886, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 120, 1390.0712, 800.3881, 48.731716, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 121, 1374.4548, 840.12335, 50.35277, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 122, 1357.6875, 883.0408, 52.67861, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 123, 1345.629, 924.2967, 53.814915, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 124, 1339.3923, 960.9286, 54.73848, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 125, 1332.5304, 990.83575, 54.651577, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 126, 1318.6704, 1023.2604, 54.663284, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 127, 1305.2642, 1048.9967, 54.54281, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 128, 1281.7661, 1077.2633, 54.107376, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 129, 1259.9783, 1096.3925, 52.763363, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 130, 1245.4918, 1111.4078, 50.944595, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 131, 1214.3774, 1137.9454, 47.540554, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 132, 1187.787, 1155.515, 46.71021, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 133, 1154.6526, 1177.5419, 48.430305, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 134, 1126.8285, 1195.9891, 47.394684, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 135, 1106.6715, 1205.8969, 46.48162, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 136, 1080.6647, 1228.3652, 45.75068, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 137, 1055.1008, 1253.4108, 45.855003, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 138, 1033.7482, 1272.1211, 46.23719, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 139, 1005.0521, 1289.1754, 45.481735, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 140, 976.56726, 1310.7413, 46.00013, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 141, 942.1607, 1334.9868, 45.564545, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 142, 917.56415, 1347.1743, 45.49018, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 143, 888.2806, 1355.868, 48.78437, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 144, 866.9464, 1361.3516, 51.768867, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 145, 838.4114, 1360.8605, 56.570217, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 146, 817.2476, 1361.4927, 60.508972, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 147, 788.24805, 1362.3418, 67.00611, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 148, 759.6556, 1362.045, 71.884674, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 149, 735.5919, 1359.9868, 74.7311, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 150, 716.3771, 1350.1677, 76.052864, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 151, 701.6529, 1333.9889, 77.97731, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 152, 679.4544, 1316.6484, 81.121284, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 153, 661.93774, 1305.103, 83.19177, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 154, 643.6682, 1301.1842, 85.17119, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 155, 633.94946, 1310.1539, 84.25693, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 156, 615.50714, 1349.1395, 85.748085, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 157, 605.4873, 1365.1119, 86.89633, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 158, 593.57294, 1391.2076, 90.5457, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 159, 579.13367, 1414.7158, 95.58017, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 160, 560.8089, 1444.4222, 100.17067, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 161, 550.32355, 1453.3601, 102.83995, NULL, 0, 0, 0, 100, 0),
|
||||
(649700, 162, 532.0706, 1473.9459, 109.76107, NULL, 2000, 0, 0, 100, 0);
|
||||
|
||||
-- Edit SmartAI
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 6497;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 6497);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(6497, 0, 0, 0, 25, 0, 100, 0, 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Astor Hadren - On Reset - Set Reactstate Defensive'),
|
||||
(6497, 0, 1, 0, 11, 0, 100, 512, 0, 0, 0, 0, 0, 0, 232, 649700, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Astor Hadren - On Respawn - Start Path 649700'),
|
||||
(6497, 0, 2, 3, 62, 0, 100, 512, 125, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Astor Hadren - On Gossip Option 0 Selected - Close Gossip'),
|
||||
(6497, 0, 3, 4, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 2, 14, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Astor Hadren - On Gossip Option 0 Selected - Set Faction 14'),
|
||||
(6497, 0, 4, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Astor Hadren - On Gossip Option 0 Selected - Start Attacking'),
|
||||
(6497, 0, 5, 0, 7, 0, 100, 512, 0, 0, 0, 0, 0, 0, 2, 68, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Astor Hadren - On Evade - Set Faction 68');
|
||||
33
data/sql/updates/db_world/2025_11_06_00.sql
Normal file
33
data/sql/updates/db_world/2025_11_06_00.sql
Normal file
@ -0,0 +1,33 @@
|
||||
-- DB update 2025_11_05_00 -> 2025_11_06_00
|
||||
|
||||
-- Remove NPC Flag, Unit Flag and set RegenHealth
|
||||
UPDATE `creature_template` SET `npcflag` = `npcflag` &~ 16777216, `unit_flags` = `unit_flags` &~ 2, `RegenHealth` = 1 WHERE (`entry` = 28782);
|
||||
|
||||
-- Update SmartAI (Acherus Deathcharger and Dark Rider of Acherus)
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE (`entry` IN (28768, 28782));
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0) AND (`entryorguid` IN (28768, 28782));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(28782, 0, 0, 1, 28, 0, 100, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acherus Deathcharger - On Passenger Removed - Set Home Position'),
|
||||
(28782, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 2, 2082, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acherus Deathcharger - On Passenger Removed - Set Faction 2082'),
|
||||
(28782, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 82, 16777216, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acherus Deathcharger - On Passenger Removed - Add Npc Flags Spellclick'),
|
||||
(28782, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 19, 33554432, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acherus Deathcharger - On Passenger Removed - Remove Flags Not Selectable'),
|
||||
(28782, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acherus Deathcharger - On Passenger Removed - Say Line 0'),
|
||||
(28782, 0, 5, 6, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acherus Deathcharger - On Passenger Removed - Evade'),
|
||||
(28782, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acherus Deathcharger - On Passenger Removed - Set Rooted On'),
|
||||
(28782, 0, 7, 8, 28, 0, 100, 0, 0, 0, 0, 0, 0, 0, 5, 377, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acherus Deathcharger - On Passenger Removed - Play Emote 377'),
|
||||
(28782, 0, 8, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 3000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acherus Deathcharger - On Passenger Removed - Despawn In 3000 ms'),
|
||||
(28782, 0, 9, 10, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 33554432, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acherus Deathcharger - On Respawn - Set Flags Not Selectable'),
|
||||
(28782, 0, 10, 11, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 83, 16777216, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acherus Deathcharger - On Respawn - Remove Npc Flags Spellclick'),
|
||||
(28782, 0, 11, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 2, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acherus Deathcharger - On Respawn - Set Faction 16'),
|
||||
(28782, 0, 12, 0, 27, 0, 100, 512, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Acherus Deathcharger - On Passenger Boarded - Set Rooted Off'),
|
||||
(28768, 0, 0, 0, 0, 0, 100, 0, 1000, 1000, 6000, 6000, 0, 0, 11, 52372, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Rider of Acherus - In Combat - Cast \'Icy Touch\''),
|
||||
(28768, 0, 1, 0, 0, 0, 100, 0, 3000, 3000, 6000, 6000, 0, 0, 11, 52374, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Rider of Acherus - In Combat - Cast \'Blood Strike\''),
|
||||
(28768, 0, 2, 0, 0, 0, 100, 0, 5000, 5000, 6000, 6000, 0, 0, 11, 50688, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Rider of Acherus - In Combat - Cast \'Plague Strike\''),
|
||||
(28768, 0, 3, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 203, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dark Rider of Acherus - On Just Died - Exit vehicle');
|
||||
|
||||
-- Set Conditions
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 22) AND (`SourceGroup` IN (1, 3, 8)) AND (`SourceEntry` = 28782) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 32) AND (`ConditionTarget` = 0) AND (`ConditionValue1` IN (8, 16)) AND (`ConditionValue2` = 0) AND (`ConditionValue3` = 0);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(22, 8, 28782, 0, 0, 32, 0, 16, 0, 0, 0, 0, 0, '', 'Only despawn Archerus Deathcharger if dismounting unit is player'),
|
||||
(22, 1, 28782, 0, 0, 32, 0, 8, 0, 0, 0, 0, 0, '', 'Event only occurs when Passenger is an NPC');
|
||||
2
data/sql/updates/db_world/2025_11_06_01.sql
Normal file
2
data/sql/updates/db_world/2025_11_06_01.sql
Normal file
@ -0,0 +1,2 @@
|
||||
-- DB update 2025_11_06_00 -> 2025_11_06_01
|
||||
DELETE FROM `vehicle_template_accessory` WHERE `entry` = 24083;
|
||||
3
data/sql/updates/db_world/2025_11_07_00.sql
Normal file
3
data/sql/updates/db_world/2025_11_07_00.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_11_06_01 -> 2025_11_07_00
|
||||
--
|
||||
DELETE FROM `creature` WHERE `guid` = 3564 AND `id1` = 1135;
|
||||
43
data/sql/updates/db_world/2025_11_07_01.sql
Normal file
43
data/sql/updates/db_world/2025_11_07_01.sql
Normal file
@ -0,0 +1,43 @@
|
||||
-- DB update 2025_11_07_00 -> 2025_11_07_01
|
||||
--
|
||||
-- v11_2_5_63906
|
||||
SET @VBUILD := 63906;
|
||||
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 28932;
|
||||
UPDATE `creature_template_addon` SET `bytes2` = 1 WHERE (`entry` = 28932);
|
||||
|
||||
DELETE FROM `creature` WHERE (`id1` = 28932) AND `guid` IN (96663, 96664, 96671, 96798, 96800, 96865, 96870, 96871);
|
||||
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`, `CreateObject`, `Comment`) VALUES
|
||||
(96663, 28932, 0, 0, 571, 0, 0, 1, 1, 0, 6146.6094, -1971.1476, 481.92764, 5.305801, 300, 5, 0, 4979, 0, 1, 0, 0, 0, '', @VBUILD, 0, NULL),
|
||||
(96664, 28932, 0, 0, 571, 0, 0, 1, 1, 0, 6143.005, -1973.7048, 482.06653, 4.520403, 300, 5, 0, 4979, 0, 1, 0, 0, 0, '', @VBUILD, 0, NULL),
|
||||
(96671, 28932, 0, 0, 571, 0, 0, 1, 1, 0, 6218.721, -1985.6326, 482.0804, 4.3982296, 300, 5, 0, 4979, 0, 1, 0, 0, 0, '', @VBUILD, 0, NULL),
|
||||
(96798, 28932, 0, 0, 571, 0, 0, 1, 1, 0, 6221.371, -1989.2194, 482.06653, 1.5009831, 300, 5, 0, 4979, 0, 1, 0, 0, 0, '', @VBUILD, 0, NULL),
|
||||
(96800, 28932, 0, 0, 571, 0, 0, 1, 1, 0, 6128.758, -2046.2726, 482.0735, 2.7052603, 300, 5, 0, 4979, 0, 1, 0, 0, 0, '', @VBUILD, 0, NULL),
|
||||
(96865, 28932, 0, 0, 571, 0, 0, 1, 1, 0, 6131.65, -2049.7249, 482.03876, 0.6806784, 300, 5, 0, 4979, 0, 1, 0, 0, 0, '', @VBUILD, 0, NULL),
|
||||
(96870, 28932, 0, 0, 571, 0, 0, 1, 1, 0, 6203.877, -2064.1401, 482.06653, 0.06981317, 300, 5, 0, 4979, 0, 1, 0, 0, 0, '', @VBUILD, 0, NULL),
|
||||
(96871, 28932, 0, 0, 571, 0, 0, 1, 1, 0, 6207.528, -2061.5386, 482.02487, 4.08407, 300, 5, 0, 4979, 0, 1, 0, 0, 0, '', @VBUILD, 0, NULL);
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` IN (-96663, -96798, -96800, -96870, -96664, -96671, -96865, -96871)) 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`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(-96663, 0, 0, 0, 60, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52686, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blight Effect Bunny - On Update - Cast \'Voltarus Blight Beam LH\''),
|
||||
(-96798, 0, 0, 0, 60, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52686, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blight Effect Bunny - On Update - Cast \'Voltarus Blight Beam LH\''),
|
||||
(-96800, 0, 0, 0, 60, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52686, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blight Effect Bunny - On Update - Cast \'Voltarus Blight Beam LH\''),
|
||||
(-96870, 0, 0, 0, 60, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52686, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blight Effect Bunny - On Update - Cast \'Voltarus Blight Beam LH\''),
|
||||
(-96664, 0, 0, 0, 60, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52681, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blight Effect Bunny - On Update - Cast \'Voltarus Blight Beam RH\''),
|
||||
(-96671, 0, 0, 0, 60, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52681, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blight Effect Bunny - On Update - Cast \'Voltarus Blight Beam RH\''),
|
||||
(-96865, 0, 0, 0, 60, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52681, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blight Effect Bunny - On Update - Cast \'Voltarus Blight Beam RH\''),
|
||||
(-96871, 0, 0, 0, 60, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 52681, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Blight Effect Bunny - On Update - Cast \'Voltarus Blight Beam RH\'');
|
||||
|
||||
-- Set `unitflag` to IMMUNE_TO_PC, verify spawns, add missing spawn
|
||||
DELETE FROM `creature` WHERE (`id1` = 28931) and `guid` IN (96497, 96498, 96499, 96545);
|
||||
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`, `Comment`, `VerifiedBuild`) VALUES
|
||||
(96497, 28931, 0, 0, 571, 0, 0, 1, 1, 0, 6144.44, -1971.41, 461.385, 5.16617, 300, 0, 0, 200000, 0, 0, 0, 256, 0, '', NULL, @VBUILD),
|
||||
(96498, 28931, 0, 0, 571, 0, 0, 1, 1, 0, 6206.33, -2063.48, 461.385, 2.14675, 300, 0, 0, 200000, 0, 0, 0, 256, 0, '', NULL, @VBUILD),
|
||||
(96499, 28931, 0, 0, 571, 0, 0, 1, 1, 0, 6129.33, -2047.82, 461.385, 0.506145, 300, 0, 0, 200000, 0, 0, 0, 256, 0, '', NULL, @VBUILD),
|
||||
(96545, 28931, 0, 0, 571, 0, 0, 1, 1, 0, 6221.2, -1986.5, 461.385, 3.78736, 300, 0, 0, 200000, 0, 0, 0, 256, 0, '', NULL, @VBUILD);
|
||||
|
||||
-- Voltarus Blight Beam LH, RH
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` IN (52686, 52681)) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 31) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 3) AND (`ConditionValue2` = 28931) AND (`ConditionValue3` = 0);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13, 1, 52686, 0, 0, 31, 0, 3, 28931, 0, 0, 0, 0, '', 'target Blightblood Troll'),
|
||||
(13, 1, 52681, 0, 0, 31, 0, 3, 28931, 0, 0, 0, 0, '', 'target Blightblood Troll');
|
||||
108
data/sql/updates/db_world/2025_11_07_02.sql
Normal file
108
data/sql/updates/db_world/2025_11_07_02.sql
Normal file
@ -0,0 +1,108 @@
|
||||
-- DB update 2025_11_07_01 -> 2025_11_07_02
|
||||
|
||||
-- Add Waypoints (Scarlet Miner)
|
||||
DELETE FROM `waypoint_data` WHERE (`id` IN (2884100, 2884101));
|
||||
INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES
|
||||
(2884100, 1, 2376.9087, -5906.2495, 108.593, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 2, 2340.1587, -5903.4995, 102.593, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 3, 2306.4087, -5904.7495, 90.593, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 4, 2292.6587, -5917.4995, 82.343, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 5, 2285.6587, -5943.4995, 64.093, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 6, 2271.9087, -5968.4995, 49.843, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 7, 2248.1587, -5978.4995, 36.843, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 8, 2234.6587, -5996.9995, 25.842999, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 9, 2223.4087, -6014.9995, 11.5929985, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 10, 2216.1587, -6035.9995, 7.3429985, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 11, 2195.4087, -6061.2495, 6.3429985, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 12, 2184.4087, -6091.9995, 2.0929985, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 13, 2179.6587, -6120.2495, 1.5929985, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 14, 2175.4087, -6142.9995, 1.5929985, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 15, 2167.9087, -6159.4995, 1.8429985, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 16, 2149.4087, -6161.4995, 1.5929985, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 17, 2134.9087, -6166.2495, 0.8429985, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 18, 2130.9087, -6173.2495, 4.3429985, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 19, 2125.9087, -6180.7495, 10.0929985, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 20, 2123.4087, -6184.7495, 14.0929985, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 21, 2115.9087, -6196.2495, 13.8429985, NULL, 0, 1, 0, 100, 0),
|
||||
(2884100, 22, 2119.1106, -6191.905, 13.275559, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 1, 2376.855, -5906.1553, 108.57493, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 2, 2340.105, -5903.4053, 102.57493, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 3, 2306.855, -5904.9053, 90.57493, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 4, 2292.855, -5917.6553, 82.32493, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 5, 2285.855, -5943.4053, 64.07493, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 6, 2272.105, -5968.4053, 49.82493, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 7, 2248.355, -5978.4053, 36.82493, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 8, 2234.605, -5996.9053, 25.824928, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 9, 2223.605, -6015.1553, 11.574928, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 10, 2216.105, -6035.9053, 7.3249283, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 11, 2195.105, -6059.4053, 6.3249283, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 12, 2184.855, -6087.1553, 3.0749283, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 13, 2180.605, -6119.4053, 1.5749283, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 14, 2177.605, -6149.4053, 1.8249283, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 15, 2188.855, -6170.4053, 1.3249283, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 16, 2213.105, -6165.4053, 1.0749283, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 17, 2241.855, -6160.4053, 2.0749283, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 18, 2269.105, -6163.4053, 2.3249283, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 19, 2269.605, -6168.9053, 2.3249283, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 20, 2270.105, -6174.6553, 5.8249283, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 21, 2270.605, -6180.9053, 9.824928, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 22, 2271.105, -6186.1553, 14.074928, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 23, 2273.855, -6196.4053, 13.824928, NULL, 0, 1, 0, 100, 0),
|
||||
(2884101, 24, 2273.0032, -6191.717, 13.239414, NULL, 0, 1, 0, 100, 0);
|
||||
|
||||
-- Remove Script Names.
|
||||
UPDATE `creature_template` SET `ScriptName` = '' WHERE (`entry` IN (28817, 28833, 28841));
|
||||
UPDATE `gameobject_template` SET `ScriptName` = '' WHERE (`entry` = 190767);
|
||||
|
||||
-- Set spell target position for Mine Car spawn.
|
||||
UPDATE `spell_target_position` SET `PositionX` = 2389.58, `PositionY` = -5901.18, `PositionZ` = 109.02134, `Orientation` = 0 WHERE `ID` = 52462;
|
||||
|
||||
-- Set Unit Flag for Mine Car (immune_to_npc)
|
||||
UPDATE `creature_template` SET `unit_flags` = `unit_flags` |512 WHERE (`entry` = 28817);
|
||||
|
||||
-- Set SmartAI (Mine Car)
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 28817;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 28817);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(28817, 0, 0, 1, 54, 0, 100, 0, 0, 0, 0, 0, 0, 0, 3, 0, 25703, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Mine Car - On Just Summoned - Morph To Model 25703'),
|
||||
(28817, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 12, 28841, 8, 0, 0, 0, 0, 8, 0, 0, 0, 0, 2382.171, -5899.672, 107.74545, 0, 'Mine Car - On Just Summoned - Summon Creature \'Scarlet Miner\''),
|
||||
(28817, 0, 2, 0, 8, 0, 100, 0, 52465, 0, 0, 0, 0, 0, 29, 3, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Mine Car - On Spellhit \'Drag Mine Cart\' - Start Follow Invoker');
|
||||
|
||||
-- Set SmartAI (Scarlet Miner)
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 28841;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 28841);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(28841, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 0, 0, 80, 2884100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Just Summoned - Run Script'),
|
||||
(28841, 0, 1, 0, 109, 0, 100, 0, 0, 0, 0, 0, 0, 0, 80, 2884101, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - On Path 0 Finished - Run Script');
|
||||
|
||||
-- Set Scarlet Miner Action List
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 9) AND (`entryorguid` IN (2884100, 2884101));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(2884100, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - Actionlist - Set Run Off'),
|
||||
(2884100, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 1, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - Actionlist - Move To Owner Or Summoner'),
|
||||
(2884100, 9, 2, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - Actionlist - Say Line 0'),
|
||||
(2884100, 9, 3, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 0, 0, 11, 52465, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - Actionlist - Cast \'Drag Mine Cart\''),
|
||||
(2884100, 9, 4, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - Actionlist - Set Run On'),
|
||||
(2884100, 9, 5, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 233, 2884100, 2884101, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - Actionlist - Start Random Path 2884100-2884101'),
|
||||
(2884101, 9, 0, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - Actionlist - Set Orientation Owner Or Summoner'),
|
||||
(2884101, 9, 1, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - Actionlist - Say Line 1'),
|
||||
(2884101, 9, 2, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 0, 0, 28, 52465, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - Actionlist - Remove Aura \'Drag Mine Cart\''),
|
||||
(2884101, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - Actionlist - Despawn Instant'),
|
||||
(2884101, 9, 4, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Miner - Actionlist - Despawn Instant');
|
||||
|
||||
-- Set SmartAI (Scarlet Fleet Defender)
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 28834;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 28834);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(28834, 0, 0, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 3000, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Fleet Defender - On Just Died - Despawn In 3000 ms'),
|
||||
(28834, 0, 1, 0, 0, 0, 100, 0, 1000, 5000, 5000, 8000, 0, 0, 11, 52566, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Fleet Defender - In Combat - Cast \'Shoot\'');
|
||||
|
||||
-- Update SmartAI (Scarlet Cannon)
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 28850;
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 28850) AND (`source_type` = 0) AND (`id` IN (2));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(28850, 0, 2, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 3000, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Scarlet Land Cannon - On Just Died - Despawn In 3000 ms');
|
||||
2481
data/sql/updates/db_world/2025_11_08_00.sql
Normal file
2481
data/sql/updates/db_world/2025_11_08_00.sql
Normal file
File diff suppressed because it is too large
Load Diff
5
data/sql/updates/db_world/2025_11_08_01.sql
Normal file
5
data/sql/updates/db_world/2025_11_08_01.sql
Normal file
@ -0,0 +1,5 @@
|
||||
-- DB update 2025_11_08_00 -> 2025_11_08_01
|
||||
--
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 17) AND (`SourceGroup` = 0) AND (`SourceEntry` = 40969) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 31) AND (`ConditionTarget` = 1) AND (`ConditionValue1` = 3) AND (`ConditionValue2` = 23689) AND (`ConditionValue3` = 0);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(17, 0, 40969, 0, 0, 31, 1, 3, 23689, 0, 0, 0, 0, '', 'Malister Frost Wand require Proto-Drake');
|
||||
172
data/sql/updates/db_world/2025_11_08_02.sql
Normal file
172
data/sql/updates/db_world/2025_11_08_02.sql
Normal file
@ -0,0 +1,172 @@
|
||||
-- DB update 2025_11_08_01 -> 2025_11_08_02
|
||||
SET @BossXPMod = 7.5,
|
||||
@FinalBossXPMod = 10;
|
||||
|
||||
UPDATE `creature_template` SET `ExperienceModifier` = @BossXPMod WHERE `entry` IN (
|
||||
-- Utgarde Keep
|
||||
23953, -- Prince Keleseth
|
||||
30748,
|
||||
24200, -- Skarvald the Constructor
|
||||
31679,
|
||||
24201, -- Dalronn the Controller
|
||||
31656,
|
||||
-- Azjol-Nerub
|
||||
28684, -- Krik'thir the Gatewatcher
|
||||
31612,
|
||||
28921, -- Hadronox
|
||||
31611,
|
||||
-- Ahn'kahet: The Old Kingdom
|
||||
29309, -- Elder Nadox
|
||||
31456,
|
||||
29308, -- Prince Taldaram
|
||||
31469,
|
||||
29310, -- Jedoga Shadowseeker
|
||||
31465,
|
||||
30258, -- Amanitar
|
||||
31463,
|
||||
-- The Nexus
|
||||
26731, -- Grand Magus Telestra
|
||||
30510,
|
||||
26763, -- Anomalus
|
||||
30529,
|
||||
26794, -- Ormorok the Tree-Shaper
|
||||
30532,
|
||||
26796, -- Commander Stoutbeard
|
||||
30398,
|
||||
26798, -- Commander Kolurg
|
||||
30397,
|
||||
-- Drak'Tharon Keep
|
||||
26630, -- Trollgore
|
||||
31362,
|
||||
26631, -- Novos the Summoner
|
||||
31350,
|
||||
-- 27483, -- King Dred, observed to not give as much experience as this
|
||||
-- 31349,
|
||||
-- The Violet Hold
|
||||
29315, -- Erekem
|
||||
31507,
|
||||
29316, -- Moragg
|
||||
31510,
|
||||
29313, -- Ichoron
|
||||
31508,
|
||||
29266, -- Xevozz
|
||||
31511,
|
||||
29312, -- Lavanthor
|
||||
31509,
|
||||
29314, -- Zuramat the Obliterator
|
||||
31512,
|
||||
-- Gundrak
|
||||
29304, -- Slad'ran
|
||||
31370,
|
||||
-- 29573, -- Drakkari Elemental, observed to not give as much experience as this
|
||||
-- 31367,
|
||||
29305, -- Moorabi
|
||||
30530,
|
||||
29932, -- Eck the Ferocious
|
||||
-- Halls of Stone
|
||||
27975, -- Maiden of Grief
|
||||
31384,
|
||||
27977, -- Krystallus
|
||||
31381,
|
||||
-- Halls of Lightning
|
||||
28586, -- General Bjarngrim
|
||||
31533,
|
||||
28587, -- Volkhan
|
||||
31536,
|
||||
28546, -- Ionar
|
||||
31537,
|
||||
-- The Oculus
|
||||
27654, -- Drakos the Interrogator
|
||||
31558,
|
||||
27447, -- Varos Cloudstrider
|
||||
31559,
|
||||
27655, -- Mage-Lord Urom
|
||||
31560,
|
||||
-- Utgarde Pinnacle
|
||||
26668, -- Svala Sorrowgrave
|
||||
30810,
|
||||
26687, -- Gortok Palehoof
|
||||
30774,
|
||||
26693, -- Skadi the Ruthless
|
||||
30807,
|
||||
-- The Culling of Stratholme
|
||||
26529, -- Meathook
|
||||
31211,
|
||||
26530, -- Salramm the Fleshcrafter
|
||||
31212,
|
||||
26532, -- Chrono-Lord Epoch
|
||||
31215,
|
||||
32273, -- Infinite Corruptor
|
||||
32313,
|
||||
-- Trial of the Champion
|
||||
34705, -- Marshal Jacob Alerius
|
||||
36088,
|
||||
34702, -- Ambrose Boltspark
|
||||
36082,
|
||||
34701, -- Colosos
|
||||
36083,
|
||||
34657, -- Jaelyne Evensong
|
||||
36086,
|
||||
34703, -- Lana Stouthammer
|
||||
36087,
|
||||
35572, -- Mokra the Skullcrusher
|
||||
36089,
|
||||
35569, -- Eressea Dawnsinger
|
||||
36085,
|
||||
35571, -- Runok Wildmane
|
||||
36090,
|
||||
35570, -- Zul'tore
|
||||
36091,
|
||||
35617, -- Deathstalker Visceri
|
||||
36084,
|
||||
35119, -- Eadric the Pure
|
||||
35518,
|
||||
34928, -- Argent Confessor Paletress
|
||||
35517,
|
||||
-- The Forge of Souls
|
||||
36497, -- Bronjahm
|
||||
36498,
|
||||
-- Pit of Saron
|
||||
36494, -- Forgemaster Garfrost
|
||||
37613,
|
||||
36476, -- Ick
|
||||
37627,
|
||||
-- Halls of Reflection
|
||||
38112, -- Falric
|
||||
38599,
|
||||
38113, -- Marwyn
|
||||
38603
|
||||
);
|
||||
|
||||
UPDATE `creature_template` SET `ExperienceModifier` = @FinalBossXPMod WHERE `entry` IN (
|
||||
23954, -- Ingvar the Plunderer, Utgarde Keep
|
||||
31673,
|
||||
29120, -- Anub'arak, Azjol-Nerub
|
||||
31610,
|
||||
29311, -- Herald Volazj,
|
||||
31464,
|
||||
26723, -- Keristrasza
|
||||
30540,
|
||||
26632, -- The Prophet Tharon'ja
|
||||
31360,
|
||||
31134, -- Cyanigosa
|
||||
31506,
|
||||
29306, -- Gal'darah
|
||||
31368,
|
||||
27978, -- Sjonnir The Ironshaper
|
||||
31386,
|
||||
28923, -- Loken
|
||||
31538,
|
||||
27656, -- Ley-Guardian Eregos
|
||||
31561,
|
||||
26861, -- King Ymiron
|
||||
30788,
|
||||
26533, -- Mal'Ganis
|
||||
31217,
|
||||
35451, -- The Black Knight, Trial of the Champion
|
||||
35490,
|
||||
36502, -- Devourer of Souls, Forge of Souls
|
||||
37677,
|
||||
36658, -- Scourgelord Tyrannus, Pit of Saron
|
||||
36938
|
||||
);
|
||||
3
data/sql/updates/db_world/2025_11_09_00.sql
Normal file
3
data/sql/updates/db_world/2025_11_09_00.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_11_08_02 -> 2025_11_09_00
|
||||
--
|
||||
UPDATE `creature_addon` SET `visibilityDistanceType` = 3 WHERE `guid` = 103278;
|
||||
3
data/sql/updates/db_world/2025_11_09_01.sql
Normal file
3
data/sql/updates/db_world/2025_11_09_01.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_11_09_00 -> 2025_11_09_01
|
||||
--
|
||||
UPDATE `creature_template` SET `flags_extra` = `flags_extra`|64 WHERE `entry` IN (28220, 28218, 28242, 28103, 28212, 28207, 28170);
|
||||
3
data/sql/updates/db_world/2025_11_09_02.sql
Normal file
3
data/sql/updates/db_world/2025_11_09_02.sql
Normal file
@ -0,0 +1,3 @@
|
||||
-- DB update 2025_11_09_01 -> 2025_11_09_02
|
||||
--
|
||||
DELETE FROM `creature` WHERE `id1` = 10218;
|
||||
67
data/sql/updates/db_world/2025_11_09_03.sql
Normal file
67
data/sql/updates/db_world/2025_11_09_03.sql
Normal file
@ -0,0 +1,67 @@
|
||||
-- DB update 2025_11_09_02 -> 2025_11_09_03
|
||||
--
|
||||
-- Fixes "Bluff", Set `allowOverride` of action list
|
||||
UPDATE `smart_scripts` SET `action_param3` = 1 WHERE (`entryorguid` IN (23672, 23673, 23675, 24271)) AND (`source_type` = 0) AND (`event_type` = 8) AND (`event_param1` = 44609);
|
||||
|
||||
-- Removes double spawns
|
||||
DELETE FROM `gameobject` WHERE `id` = 186959 AND `guid` IN (264459, 264460, 264461, 264462, 264463, 264464, 264465);
|
||||
|
||||
-- Add missing aura. Usage is unknown
|
||||
DELETE FROM `creature_template_addon` WHERE (`entry` = 24825);
|
||||
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(24825, 0, 0, 0, 0, 0, 0, '44652');
|
||||
|
||||
-- Disable flying vehicle, but causes camera stuttering on rocket jump
|
||||
UPDATE `creature_template_movement` SET `Flight` = 0 WHERE (`CreatureId` = 24825);
|
||||
|
||||
DELETE FROM `creature_text` WHERE (`CreatureID` = 24825) AND (`GroupID` = 1);
|
||||
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
|
||||
(24825, 1, 0, 'Launching.', 12, 0, 100, 0, 0, 0, 23860, 0, 'Iron Rune Construct');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 24825) AND (`source_type` = 0) AND (`id` IN (15, 16));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(24825, 0, 15, 0, 31, 0, 100, 512, 44609, 0, 3000, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Spellhit \'Bluff\' - Say Line 0'),
|
||||
(24825, 0, 16, 0, 8, 0, 100, 512, 44626, 0, 5000, 5000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Spellhit \'Rocket Jump\' - Say Line 1');
|
||||
-- Remove unused 'Say Line 0' in actionscripts
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` IN (2367201, 2367301, 2367501, 2427101)) AND `source_type` = 9 AND `id` = 1 AND `target_type` = 19 AND `target_param1` = 24825 AND `action_type` = 1 AND `target_param2` = 20;
|
||||
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` IN (2, 4)) AND (`SourceEntry` = 44608) AND (`SourceId` = 0) AND (`ConditionTypeOrReference` = 31);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13, 4, 44608, 0, 0, 31, 0, 3, 24826, 0, 0, 0, 0, '', 'Rocket Jump'),
|
||||
(13, 4, 44608, 0, 1, 31, 0, 3, 24827, 0, 0, 0, 0, '', 'Rocket Jump'),
|
||||
(13, 4, 44608, 0, 2, 31, 0, 3, 24828, 0, 0, 0, 0, '', 'Rocket Jump'),
|
||||
(13, 4, 44608, 0, 3, 31, 0, 3, 24829, 0, 0, 0, 0, '', 'Rocket Jump'),
|
||||
(13, 4, 44608, 0, 4, 31, 0, 3, 24831, 0, 0, 0, 0, '', 'Rocket Jump'),
|
||||
(13, 4, 44608, 0, 5, 31, 0, 3, 24832, 0, 0, 0, 0, '', 'Rocket Jump'),
|
||||
(13, 2, 44608, 0, 0, 31, 0, 5, 186953, 0, 0, 0, 0, '', 'Rocket Jump'),
|
||||
(13, 2, 44608, 0, 1, 31, 0, 5, 186960, 0, 0, 0, 0, '', 'Rocket Jump'),
|
||||
(13, 2, 44608, 0, 2, 31, 0, 5, 186961, 0, 0, 0, 0, '', 'Rocket Jump'),
|
||||
(13, 2, 44608, 0, 3, 31, 0, 5, 186963, 0, 0, 0, 0, '', 'Rocket Jump'),
|
||||
(13, 2, 44608, 0, 4, 31, 0, 5, 186962, 0, 0, 0, 0, '', 'Rocket Jump'),
|
||||
(13, 2, 44608, 0, 5, 31, 0, 5, 186964, 0, 0, 0, 0, '', 'Rocket Jump');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 24825);
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(24825, 0, 0, 0, 54, 0, 100, 512, 0, 0, 0, 0, 0, 0, 75, 44643, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Just Summoned - Add Aura \'Reputation and Language\''),
|
||||
(24825, 0, 1, 0, 28, 0, 100, 512, 0, 0, 0, 0, 0, 0, 28, 44643, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Passenger Removed - Remove Aura \'Reputation and Language\''),
|
||||
(24825, 0, 2, 0, 38, 0, 100, 512, 0, 1, 0, 0, 0, 0, 53, 2, 24826, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Data Set 0 1 - Start Waypoint Path 24826'),
|
||||
(24825, 0, 3, 0, 38, 0, 100, 512, 0, 2, 0, 0, 0, 0, 53, 2, 24827, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Data Set 0 2 - Start Waypoint Path 24827'),
|
||||
(24825, 0, 4, 0, 38, 0, 100, 512, 0, 3, 0, 0, 0, 0, 53, 2, 24828, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Data Set 0 3 - Start Waypoint Path 24828'),
|
||||
(24825, 0, 5, 0, 38, 0, 100, 512, 0, 4, 0, 0, 0, 0, 53, 2, 24831, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Data Set 0 4 - Start Waypoint Path 24831'),
|
||||
(24825, 0, 6, 0, 38, 0, 100, 512, 0, 5, 0, 0, 0, 0, 53, 2, 24829, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Data Set 0 5 - Start Waypoint Path 24829'),
|
||||
(24825, 0, 7, 0, 38, 0, 100, 512, 0, 6, 0, 0, 0, 0, 53, 2, 24832, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Data Set 0 6 - Start Waypoint Path 24832'),
|
||||
(24825, 0, 8, 0, 58, 0, 100, 512, 0, 0, 0, 0, 0, 0, 28, 44626, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Path 0 Finished - Remove Aura \'Rocket Jump\''),
|
||||
(24825, 0, 9, 0, 31, 0, 100, 512, 44609, 0, 3000, 3000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Target Spellhit \'Bluff\' - Say Line 0'),
|
||||
(24825, 0, 10, 0, 8, 0, 100, 512, 44626, 0, 5000, 5000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Iron Rune Construct - On Spellhit \'Rocket Jump\' - Say Line 1');
|
||||
--
|
||||
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE (`entry` IN (24826, 24827, 24828, 24829, 24831, 24832));
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` IN (24826, 24827, 24828, 24829, 24831, 24832));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(24826, 0, 0, 0, 8, 0, 100, 0, 44608, 0, 0, 0, 0, 0, 45, 0, 1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'On Spellhit \'Rocket Jump\' - Set Data 0 1'),
|
||||
(24827, 0, 0, 0, 8, 0, 100, 0, 44608, 0, 0, 0, 0, 0, 45, 0, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'On Spellhit \'Rocket Jump\' - Set Data 0 2'),
|
||||
(24828, 0, 0, 0, 8, 0, 100, 0, 44608, 0, 0, 0, 0, 0, 45, 0, 3, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'On Spellhit \'Rocket Jump\' - Set Data 0 3'),
|
||||
(24831, 0, 0, 0, 8, 0, 100, 0, 44608, 0, 0, 0, 0, 0, 45, 0, 4, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'On Spellhit \'Rocket Jump\' - Set Data 0 4'),
|
||||
(24829, 0, 0, 0, 8, 0, 100, 0, 44608, 0, 0, 0, 0, 0, 45, 0, 5, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'On Spellhit \'Rocket Jump\' - Set Data 0 5'),
|
||||
(24832, 0, 0, 0, 8, 0, 100, 0, 44608, 0, 0, 0, 0, 0, 45, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'On Spellhit \'Rocket Jump\' - Set Data 0 6');
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE `source_type` = 9 AND `entryorguid` IN (2482600, 2482700, 2482800, 2482900, 2483100, 2483200);
|
||||
6
data/sql/updates/db_world/2025_11_09_04.sql
Normal file
6
data/sql/updates/db_world/2025_11_09_04.sql
Normal file
@ -0,0 +1,6 @@
|
||||
-- DB update 2025_11_09_03 -> 2025_11_09_04
|
||||
--
|
||||
DELETE FROM `spell_custom_attr` WHERE `spell_id` IN (52671, 59834);
|
||||
INSERT INTO `spell_custom_attr` (`spell_id`, `attributes`) VALUES
|
||||
(52671, 0x00400000),
|
||||
(59834, 0x00400000);
|
||||
79
data/sql/updates/db_world/2025_11_09_05.sql
Normal file
79
data/sql/updates/db_world/2025_11_09_05.sql
Normal file
@ -0,0 +1,79 @@
|
||||
-- DB update 2025_11_09_04 -> 2025_11_09_05
|
||||
--
|
||||
-- v11_2_5_63906
|
||||
SET @VBUILD := 63906;
|
||||
|
||||
DELETE FROM `creature_template_addon` WHERE (`entry` = 28503);
|
||||
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(28503, 0, 0, 0, 0, 0, 0, '58837');
|
||||
|
||||
DELETE FROM `creature_template_addon` WHERE (`entry` = 28998);
|
||||
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(28998, 0, 0, 0, 0, 0, 0, '58837');
|
||||
|
||||
DELETE FROM `creature` WHERE (`id1` = 28998) AND (`guid` IN (1974609));
|
||||
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`, `Comment`, `VerifiedBuild`) VALUES
|
||||
(1974609, 28998, 0, 0, 571, 0, 0, 1, 1, 0, 6175.2456, -2017.6545, 590.9613, 3.0019662, 300, 0, 0, 550001, 0, 0, 0, 0, 0, '', NULL, @VBUILD);
|
||||
|
||||
DELETE FROM `creature_template_addon` WHERE (`entry` = 28998);
|
||||
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(28998, 0, 0, 0, 1, 0, 0, '');
|
||||
|
||||
UPDATE `spell_target_position` SET `PositionX`=6161.15, `PositionY`=-2015.36, `PositionZ`=590.878, `Orientation`=6.283189773559570312, `VerifiedBuild`=@VBUILD WHERE `ID`=52863 AND `EffectIndex`=0;
|
||||
|
||||
UPDATE `creature_template_addon` SET `bytes2` = 1 WHERE (`entry` = 28717);
|
||||
|
||||
-- Update comments
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 28498) AND (`source_type` = 0) AND (`id` IN (0, 1, 2, 3, 4));
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(28498, 0, 0, 0, 54, 0, 100, 512, 0, 0, 0, 0, 0, 0, 53, 1, 28498, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - On Just Summoned - Start Waypoint Path 28498'),
|
||||
(28498, 0, 1, 2, 40, 0, 100, 512, 2, 0, 0, 0, 0, 0, 54, 83000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - On Point 2 of Path Any Reached - Pause Waypoint'),
|
||||
(28498, 0, 2, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 80, 2849800, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - On Point 2 of Path Any Reached - Run Script'),
|
||||
(28498, 0, 3, 4, 40, 0, 100, 512, 3, 0, 0, 0, 0, 0, 45, 0, 2, 0, 0, 0, 0, 10, 127495, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - On Point 3 of Path Any Reached - Set Data 0 2'),
|
||||
(28498, 0, 4, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - On Point 3 of Path Any Reached - Despawn Instant');
|
||||
|
||||
-- Disable gravity
|
||||
DELETE FROM `creature_template_movement` WHERE (`CreatureId` = 29100);
|
||||
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES
|
||||
(29100, 0, 0, 1, 0, 0, 0, 0);
|
||||
|
||||
-- Idle
|
||||
UPDATE `creature` SET `MovementType` = 0, `wander_distance` = 0 WHERE `id1` = 29100 AND `guid` IN (112307, 112308, 112309, 112310);
|
||||
|
||||
UPDATE `gameobject_template` SET `AIName` = 'SmartGameObjectAI' WHERE `entry` = 202357;
|
||||
DELETE FROM `smart_scripts` WHERE (`entryorguid` = 202357) AND (`source_type` = 1) 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`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||
(202357, 1, 0, 0, 62, 0, 100, 0, 11091, 0, 0, 0, 0, 0, 11, 57553, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Drakuru\'s Last Wish - On Gossip Option 0 Selected - Cast \'Escape Voltarus\'');
|
||||
|
||||
-- Drakuru's Last Wish
|
||||
UPDATE `gameobject_template_addon` SET `flags` = 32 WHERE (`entry` = 202357);
|
||||
|
||||
-- Skull and Portal spells target 'Totally Generic Bunny (JSB)'
|
||||
DELETE FROM `creature` WHERE (`id1` = 28960) and `guid` IN (98914, 98920);
|
||||
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`, `Comment`, `VerifiedBuild`) VALUES
|
||||
(98914, 28960, 0, 0, 571, 0, 0, 1, 1, 0, 6144.01, -2011.8, 590.963, 6.16101, 300, 0, 0, 4979, 0, 0, 0, 0, 0, '', '\'Throw Portal Crystal\' guid target', @VBUILD),
|
||||
(98920, 28960, 0, 0, 571, 0, 0, 1, 1, 0, 6181.5137, -2032.4258, 590.96124, 1.01229, 300, 0, 0, 4979, 0, 0, 0, 0, 0, '', '\'Drakuru\'s Skull Missile\' guid target', @VBUILD);
|
||||
|
||||
UPDATE `conditions` SET `ConditionValue3` = 98914, `Comment` = 'target Totally Generic Bunny (JSB)' WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` = 54209) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 31) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 3) AND (`ConditionValue2` = 28960) AND (`ConditionValue3` = 0);
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` = 54250) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 31) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 3) AND (`ConditionValue2` = 28960);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13, 1, 54250, 0, 0, 31, 0, 3, 28960, 98920, 0, 0, 0, '', 'target Totally Generic Bunny (JSB)');
|
||||
|
||||
DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 13) AND (`SourceGroup` = 1) AND (`SourceEntry` = 54089) AND (`SourceId` = 0) AND (`ElseGroup` = 0) AND (`ConditionTypeOrReference` = 1) AND (`ConditionTarget` = 0) AND (`ConditionValue1` = 51966) AND (`ConditionValue2` = 0) AND (`ConditionValue3` = 0);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13, 1, 54089, 0, 0, 1, 0, 51966, 0, 0, 0, 0, 0, '', 'Has Aura \'Scourge Disguise\'');
|
||||
|
||||
-- 54104 Blight Fog
|
||||
UPDATE `creature_template_addon` SET `auras` = '54104' WHERE (`entry` = 28998);
|
||||
|
||||
DELETE FROM `creature_summon_groups` WHERE `summonerId` = 28998 and `summonerType` = 0 AND `groupId` = 1;
|
||||
INSERT INTO `creature_summon_groups` (`summonerId`, `summonerType`, `groupId`, `entry`, `position_x`, `position_y`, `position_z`, `orientation`, `summonType`, `summonTime`, `Comment`) VALUES
|
||||
(28998, 0, 1, 28931, 6184.1455, -1970.1699, 586.84186, 4.5902, 8, 0, 'Overlord Drakuru - Group 1 - Blightblood Troll'),
|
||||
(28998, 0, 1, 28931, 6222.855, -2026.6315, 586.84186, 3.00197, 8, 0, 'Overlord Drakuru - Group 1 - Blightblood Troll'),
|
||||
(28998, 0, 1, 28931, 6166.278, -2065.3123, 586.84186, 1.44862, 8, 0, 'Overlord Drakuru - Group 1 - Blightblood Troll'),
|
||||
(28998, 0, 1, 28931, 6127.5117, -2008.6506, 586.84186, 6.16101, 8, 0, 'Overlord Drakuru - Group 1 - Blightblood Troll');
|
||||
|
||||
-- 54105 Blight Fog
|
||||
DELETE FROM `spell_script_names` WHERE (`spell_id` = 54105);
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(54105, 'spell_blight_fog');
|
||||
@ -26,7 +26,7 @@
|
||||
#define SIZE_OF_GRIDS 533.3333f
|
||||
|
||||
#define MMAP_MAGIC 0x4d4d4150 // 'MMAP'
|
||||
#define MMAP_VERSION 17
|
||||
#define MMAP_VERSION 18
|
||||
|
||||
struct MmapTileRecastConfig
|
||||
{
|
||||
|
||||
@ -185,7 +185,7 @@ void CreatureAI::MoveInLineOfSight(Unit* who)
|
||||
!me->IsWithinDist(who, ATTACK_DISTANCE, true, false, false)) // if in combat and in dist - neutral to all can actually assist other creatures
|
||||
return;
|
||||
|
||||
if (me->HasReactState(REACT_AGGRESSIVE) && me->CanStartAttack(who))
|
||||
if (me->HasReactState(REACT_AGGRESSIVE) && me->CanStartAttack(who) && (me->IsAggroGracePeriodExpired() || me->GetMap()->Instanceable()))
|
||||
AttackStart(who);
|
||||
}
|
||||
|
||||
|
||||
@ -274,7 +274,7 @@ Creature::Creature(): Unit(), MovableMapObject(), m_groupLootTimer(0), lootingGr
|
||||
m_transportCheckTimer(1000), lootPickPocketRestoreTime(0), m_combatPulseTime(0), m_combatPulseDelay(0), m_reactState(REACT_AGGRESSIVE), m_defaultMovementType(IDLE_MOTION_TYPE),
|
||||
m_spawnId(0), m_equipmentId(0), m_originalEquipmentId(0), m_alreadyCallForHelp(false), m_AlreadyCallAssistance(false),
|
||||
m_AlreadySearchedAssistance(false), m_regenHealth(true), m_regenPower(true), m_AI_locked(false), m_meleeDamageSchoolMask(SPELL_SCHOOL_MASK_NORMAL), m_originalEntry(0), m_moveInLineOfSightDisabled(false), m_moveInLineOfSightStrictlyDisabled(false),
|
||||
m_homePosition(), m_transportHomePosition(), m_creatureInfo(nullptr), m_creatureData(nullptr), m_detectionDistance(20.0f),_sparringPct(0.0f), m_waypointID(0), m_path_id(0), m_formation(nullptr), m_lastLeashExtensionTime(nullptr), m_cannotReachTimer(0),
|
||||
m_homePosition(), m_transportHomePosition(), m_creatureInfo(nullptr), m_creatureData(nullptr), m_detectionDistance(20.0f),_sparringPct(0.0f), m_waypointID(0), m_path_id(0), m_formation(nullptr), _aggroGracePeriodExpired(false), m_lastLeashExtensionTime(nullptr), m_cannotReachTimer(0),
|
||||
_isMissingSwimmingFlagOutOfCombat(false), m_assistanceTimer(0), _playerDamageReq(0), _damagedByPlayer(false), _isCombatMovementAllowed(true)
|
||||
{
|
||||
m_regenTimer = CREATURE_REGEN_INTERVAL;
|
||||
@ -944,6 +944,21 @@ void Creature::Update(uint32 diff)
|
||||
}
|
||||
}
|
||||
|
||||
void Creature::Heartbeat()
|
||||
{
|
||||
Unit::Heartbeat();
|
||||
|
||||
// creatures should only attack surroundings initially after heartbeat has passed or until attacked
|
||||
if (!_aggroGracePeriodExpired)
|
||||
{
|
||||
_aggroGracePeriodExpired = true;
|
||||
|
||||
// trigger MoveInLineOfSight
|
||||
Acore::CreatureAggroGracePeriodExpiredNotifier notifier(*this);
|
||||
Cell::VisitObjects(this, notifier, GetVisibilityRange());
|
||||
}
|
||||
}
|
||||
|
||||
bool Creature::IsFreeToMove()
|
||||
{
|
||||
uint32 moveFlags = m_movementInfo.GetMovementFlags();
|
||||
@ -2654,12 +2669,6 @@ bool Creature::CanCreatureAttack(Unit const* victim, bool skipDistCheck) const
|
||||
if (victim->IsCreature() && victim->ToCreature()->IsInEvadeMode())
|
||||
return false;
|
||||
|
||||
// cannot attack if is during 5 second grace period, unless being attacked
|
||||
if (m_respawnedTime && (GameTime::GetGameTime().count() - m_respawnedTime) < 5 && !IsEngagedBy(victim))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// if victim is in FD and we can't see that
|
||||
if (victim->HasUnitFlag2(UNIT_FLAG2_FEIGN_DEATH) && !CanIgnoreFeignDeath())
|
||||
{
|
||||
|
||||
@ -69,6 +69,8 @@ public:
|
||||
[[nodiscard]] ObjectGuid::LowType GetSpawnId() const { return m_spawnId; }
|
||||
|
||||
void Update(uint32 time) override; // overwrited Unit::Update
|
||||
void Heartbeat() override;
|
||||
|
||||
void GetRespawnPosition(float& x, float& y, float& z, float* ori = nullptr, float* dist = nullptr) const;
|
||||
|
||||
void SetCorpseDelay(uint32 delay) { m_corpseDelay = delay; }
|
||||
@ -187,6 +189,8 @@ public:
|
||||
void UpdateAttackPowerAndDamage(bool ranged = false) override;
|
||||
void CalculateMinMaxDamage(WeaponAttackType attType, bool normalized, bool addTotalPct, float& minDamage, float& maxDamage, uint8 damageIndex) override;
|
||||
|
||||
bool IsAggroGracePeriodExpired() { return _aggroGracePeriodExpired; }
|
||||
|
||||
void LoadSparringPct();
|
||||
[[nodiscard]] float GetSparringPct() const { return _sparringPct; }
|
||||
|
||||
@ -516,6 +520,8 @@ private:
|
||||
CreatureGroup* m_formation;
|
||||
bool TriggerJustRespawned;
|
||||
|
||||
bool _aggroGracePeriodExpired;
|
||||
|
||||
// Shared timer between mobs who assist another.
|
||||
// Damaging one extends leash range on all of them.
|
||||
mutable std::shared_ptr<time_t> m_lastLeashExtensionTime;
|
||||
|
||||
@ -1848,8 +1848,13 @@ InventoryResult Player::CanEquipItem(uint8 slot, uint16& dest, Item* pItem, bool
|
||||
return EQUIP_ERR_NOT_DURING_ARENA_MATCH;
|
||||
}
|
||||
|
||||
if (IsInCombat() && (pProto->Class == ITEM_CLASS_WEAPON || pProto->InventoryType == INVTYPE_RELIC) && m_weaponChangeTimer != 0)
|
||||
if (IsInCombat() && (pProto->Class == ITEM_CLASS_WEAPON || pProto->InventoryType == INVTYPE_RELIC))
|
||||
{
|
||||
uint32 cooldownSpell = IsClass(CLASS_ROGUE, CLASS_CONTEXT_WEAPON_SWAP) ? 6123 : 6119;
|
||||
uint32 startRecoveryTime = sSpellMgr->GetSpellInfo(cooldownSpell)->StartRecoveryTime;
|
||||
if (m_weaponChangeTimer != 0 && m_weaponChangeTimer != startRecoveryTime)
|
||||
return EQUIP_ERR_CANT_DO_RIGHT_NOW; // maybe exist better err
|
||||
}
|
||||
|
||||
if (IsNonMeleeSpellCast(false))
|
||||
return EQUIP_ERR_CANT_DO_RIGHT_NOW;
|
||||
|
||||
@ -19586,12 +19586,6 @@ void Unit::_ExitVehicle(Position const* exitPosition)
|
||||
|
||||
sScriptMgr->AnticheatSetUnderACKmount(player);
|
||||
}
|
||||
else if (HasUnitMovementFlag(MOVEMENTFLAG_ROOT))
|
||||
{
|
||||
WorldPacket data(SMSG_SPLINE_MOVE_UNROOT, 8);
|
||||
data << GetPackGUID();
|
||||
SendMessageToSet(&data, false);
|
||||
}
|
||||
|
||||
// xinef: hack for flameleviathan seat vehicle
|
||||
VehicleEntry const* vehicleInfo = vehicle->GetVehicleInfo();
|
||||
|
||||
@ -186,6 +186,25 @@ void AIRelocationNotifier::Visit(CreatureMapType& m)
|
||||
}
|
||||
}
|
||||
|
||||
void CreatureAggroGracePeriodExpiredNotifier::Visit(CreatureMapType& m)
|
||||
{
|
||||
for (CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
|
||||
{
|
||||
Creature* c = iter->GetSource();
|
||||
CreatureUnitRelocationWorker(c, &i_creature);
|
||||
CreatureUnitRelocationWorker(&i_creature, c);
|
||||
}
|
||||
}
|
||||
|
||||
void CreatureAggroGracePeriodExpiredNotifier::Visit(PlayerMapType& m)
|
||||
{
|
||||
for (PlayerMapType::iterator iter = m.begin(); iter != m.end(); ++iter)
|
||||
{
|
||||
Player* player = iter->GetSource();
|
||||
CreatureUnitRelocationWorker(&i_creature, player);
|
||||
}
|
||||
}
|
||||
|
||||
// Uses visibility map
|
||||
void MessageDistDeliverer::Visit(VisiblePlayersMap const& m)
|
||||
{
|
||||
|
||||
@ -96,6 +96,14 @@ namespace Acore
|
||||
void Visit(CreatureMapType&);
|
||||
};
|
||||
|
||||
struct CreatureAggroGracePeriodExpiredNotifier
|
||||
{
|
||||
Creature& i_creature;
|
||||
CreatureAggroGracePeriodExpiredNotifier(Creature& c) : i_creature(c) {}
|
||||
template<class T> void Visit(GridRefMgr<T>&) {}
|
||||
void Visit(CreatureMapType&);
|
||||
void Visit(PlayerMapType&);
|
||||
};
|
||||
struct MessageDistDeliverer
|
||||
{
|
||||
WorldObject const* i_source;
|
||||
|
||||
@ -1170,6 +1170,12 @@ void WorldSession::HandlePlayerLoginToCharInWorld(Player* pCurrChar)
|
||||
pCurrChar->RemoveUnitFlag(UNIT_FLAG_STUNNED);
|
||||
}
|
||||
|
||||
if (pCurrChar->GetPendingFlightChange() <= pCurrChar->GetMapChangeOrderCounter())
|
||||
{
|
||||
if (!pCurrChar->HasIncreaseMountedFlightSpeedAura() && !pCurrChar->HasFlyAura())
|
||||
pCurrChar->m_movementInfo.RemoveMovementFlag(MOVEMENTFLAG_CAN_FLY);
|
||||
}
|
||||
|
||||
pCurrChar->SendInitialPacketsBeforeAddToMap();
|
||||
|
||||
// necessary actions from AddPlayerToMap:
|
||||
|
||||
@ -84,14 +84,9 @@ uint32 Acore::XP::Gain(Player* player, Unit* unit, bool isBattleGround /*= false
|
||||
if (gain && creature)
|
||||
{
|
||||
if (creature->isElite())
|
||||
{
|
||||
// Elites in instances have a 2.75x XP bonus instead of the regular 2x world bonus.
|
||||
if (unit->GetMap() && unit->GetMap()->IsDungeon())
|
||||
xpMod *= 2.75f;
|
||||
else
|
||||
xpMod *= 2.0f;
|
||||
}
|
||||
|
||||
// Instanced mobs (particularly bosses) oftentimes have higher bonuses, especially in later content levels
|
||||
xpMod *= creature->GetCreatureTemplate()->ModExperience;
|
||||
}
|
||||
|
||||
|
||||
@ -2187,12 +2187,6 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(1);
|
||||
});
|
||||
|
||||
// Halls of Lightning, Arcing Burn
|
||||
ApplySpellFix({ 52671, 59834 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->AttributesEx3 |= SPELL_ATTR3_DOT_STACKING_RULE;
|
||||
});
|
||||
|
||||
// Trial of the Champion, Death's Respite
|
||||
ApplySpellFix({ 68306 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
|
||||
@ -502,49 +502,6 @@ public:
|
||||
};
|
||||
};
|
||||
|
||||
class npc_scarlet_cannon : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_scarlet_cannon() : CreatureScript("npc_scarlet_cannon") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_scarlet_cannonAI(creature);
|
||||
}
|
||||
|
||||
struct npc_scarlet_cannonAI : public VehicleAI
|
||||
{
|
||||
npc_scarlet_cannonAI(Creature* creature) : VehicleAI(creature) { summonAttackers = 0; }
|
||||
|
||||
uint32 summonAttackers;
|
||||
void PassengerBoarded(Unit* /*passenger*/, int8 /*seatId*/, bool apply) override
|
||||
{
|
||||
summonAttackers = apply ? 8000 : 0;
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
VehicleAI::UpdateAI(diff);
|
||||
|
||||
if (summonAttackers)
|
||||
{
|
||||
summonAttackers += diff;
|
||||
if (summonAttackers >= 15000)
|
||||
{
|
||||
for (uint8 i = 0; i < 15; ++i)
|
||||
if (Creature* summon = me->SummonCreature(28834 /*NPC_SCARLET_FLEET_DEFENDER*/, 2192.56f + irand(-10, 10), -6147.90f + irand(-10, 10), 5.2f, 4.7f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 45000))
|
||||
{
|
||||
summon->SetHomePosition(me->GetHomePosition());
|
||||
summon->AI()->AttackStart(me);
|
||||
}
|
||||
|
||||
summonAttackers = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
/*######
|
||||
##Quest 12848
|
||||
######*/
|
||||
@ -835,253 +792,6 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
/*####
|
||||
## npc_scarlet_miner_cart
|
||||
####*/
|
||||
|
||||
enum Spells_SM
|
||||
{
|
||||
SPELL_CART_CHECK = 54173,
|
||||
SPELL_CART_DRAG = 52465
|
||||
};
|
||||
|
||||
class npc_scarlet_miner_cart : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_scarlet_miner_cart() : CreatureScript("npc_scarlet_miner_cart") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_scarlet_miner_cartAI(creature);
|
||||
}
|
||||
|
||||
struct npc_scarlet_miner_cartAI : public PassiveAI
|
||||
{
|
||||
npc_scarlet_miner_cartAI(Creature* creature) : PassiveAI(creature)
|
||||
{
|
||||
me->SetImmuneToAll(true);
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->SetDisplayFromModel(0); // Modelid2 is a horse.
|
||||
}
|
||||
|
||||
ObjectGuid minerGUID;
|
||||
|
||||
void SetGUID(ObjectGuid const& guid, int32 /*id*/) override
|
||||
{
|
||||
minerGUID = guid;
|
||||
}
|
||||
|
||||
void DoAction(int32 /*param*/) override
|
||||
{
|
||||
if (Creature* miner = ObjectAccessor::GetCreature(*me, minerGUID))
|
||||
{
|
||||
me->SetWalk(false);
|
||||
|
||||
//Not 100% correct, but movement is smooth. Sometimes miner walks faster
|
||||
//than normal, this speed is fast enough to keep up at those times.
|
||||
me->SetSpeed(MOVE_RUN, 1.25f);
|
||||
|
||||
me->GetMotionMaster()->MoveFollow(miner, 1.0f, 0);
|
||||
me->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetImmuneToAll(true);
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
}
|
||||
}
|
||||
|
||||
void PassengerBoarded(Unit* who, int8 /*seatId*/, bool apply) override
|
||||
{
|
||||
who->SetVisible(!apply);
|
||||
if (!apply)
|
||||
if (Creature* miner = ObjectAccessor::GetCreature(*me, minerGUID))
|
||||
miner->DisappearAndDie();
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
/*####
|
||||
## npc_scarlet_miner
|
||||
####*/
|
||||
|
||||
enum Says_SM
|
||||
{
|
||||
SAY_SCARLET_MINER_0 = 0,
|
||||
SAY_SCARLET_MINER_1 = 1
|
||||
};
|
||||
|
||||
class npc_scarlet_miner : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_scarlet_miner() : CreatureScript("npc_scarlet_miner") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_scarlet_minerAI(creature);
|
||||
}
|
||||
|
||||
struct npc_scarlet_minerAI : public npc_escortAI
|
||||
{
|
||||
npc_scarlet_minerAI(Creature* creature) : npc_escortAI(creature)
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
uint32 IntroTimer;
|
||||
uint32 IntroPhase;
|
||||
ObjectGuid carGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
carGUID.Clear();
|
||||
IntroTimer = 0;
|
||||
IntroPhase = 0;
|
||||
}
|
||||
|
||||
void InitWaypoint()
|
||||
{
|
||||
AddWaypoint(1, 2389.03f, -5902.74f, 109.014f, 5000);
|
||||
AddWaypoint(2, 2341.812012f, -5900.484863f, 102.619743f);
|
||||
AddWaypoint(3, 2308.34f, -5904.2f, 91.1099f);
|
||||
AddWaypoint(4, 2300.69f, -5912.99f, 86.1572f);
|
||||
AddWaypoint(5, 2294.142090f, -5927.274414f, 75.316849f);
|
||||
AddWaypoint(6, 2286.984375f, -5944.955566f, 63.714966f);
|
||||
AddWaypoint(7, 2280.001709f, -5961.186035f, 54.228283f);
|
||||
AddWaypoint(8, 2259.389648f, -5974.197754f, 42.359348f);
|
||||
AddWaypoint(9, 2242.882812f, -5984.642578f, 32.827850f);
|
||||
AddWaypoint(10, 2239.79f, -5989.31f, 30.4453f);
|
||||
AddWaypoint(11, 2236.52f, -5994.28f, 27.4829f);
|
||||
AddWaypoint(12, 2232.61f, -6000.23f, 23.1281f);
|
||||
AddWaypoint(13, 2228.69f, -6006.46f, 17.6638f);
|
||||
AddWaypoint(14, 2225.2f, -6012.39f, 12.9487f);
|
||||
AddWaypoint(15, 2217.265625f, -6028.959473f, 7.675705f);
|
||||
AddWaypoint(16, 2202.595947f, -6061.325684f, 5.882018f);
|
||||
AddWaypoint(17, 2188.974609f, -6080.866699f, 3.370027f);
|
||||
|
||||
if (urand(0, 1))
|
||||
{
|
||||
AddWaypoint(18, 2176.483887f, -6110.407227f, 1.855181f);
|
||||
AddWaypoint(19, 2172.516602f, -6146.752441f, 1.074235f);
|
||||
AddWaypoint(20, 2138.918457f, -6158.920898f, 1.342926f);
|
||||
AddWaypoint(21, 2129.866699f, -6174.107910f, 4.380779f);
|
||||
AddWaypoint(22, 2125.250001f, -6181.230001f, 9.91997f);
|
||||
AddWaypoint(23, 2117.709473f, -6193.830078f, 13.3542f, 10000);
|
||||
}
|
||||
else
|
||||
{
|
||||
AddWaypoint(18, 2184.190186f, -6166.447266f, 0.968877f);
|
||||
AddWaypoint(19, 2234.265625f, -6163.741211f, 0.916021f);
|
||||
AddWaypoint(20, 2268.071777f, -6158.750977f, 1.822252f);
|
||||
AddWaypoint(21, 2270.028320f, -6176.505859f, 6.340538f);
|
||||
AddWaypoint(22, 2270.350001f, -6182.410001f, 10.42431f);
|
||||
AddWaypoint(23, 2271.739014f, -6195.401855f, 13.3542f, 10000);
|
||||
}
|
||||
}
|
||||
|
||||
void InitCartQuest(Player* who)
|
||||
{
|
||||
carGUID = who->GetVehicleBase()->GetGUID();
|
||||
InitWaypoint();
|
||||
me->SetWalk(true);
|
||||
Start(false, who->GetGUID());
|
||||
SetDespawnAtFar(false);
|
||||
}
|
||||
|
||||
void WaypointReached(uint32 waypointId) override
|
||||
{
|
||||
switch (waypointId)
|
||||
{
|
||||
case 1:
|
||||
if (Unit* car = ObjectAccessor::GetCreature(*me, carGUID))
|
||||
{
|
||||
me->SetFacingToObject(car);
|
||||
// xinef: add some flags
|
||||
car->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE);
|
||||
car->SetImmuneToAll(true);
|
||||
car->SetFaction(FACTION_FRIENDLY);
|
||||
}
|
||||
Talk(SAY_SCARLET_MINER_0);
|
||||
me->SetWalk(false);
|
||||
IntroTimer = 4000;
|
||||
IntroPhase = 1;
|
||||
break;
|
||||
case 23:
|
||||
if (Creature* car = ObjectAccessor::GetCreature(*me, carGUID))
|
||||
{
|
||||
car->SetPosition(car->GetPositionX(), car->GetPositionY(), me->GetPositionZ() + 1, car->GetOrientation());
|
||||
car->StopMovingOnCurrentPos();
|
||||
me->SetFacingToObject(car);
|
||||
car->RemoveAura(SPELL_CART_DRAG);
|
||||
}
|
||||
Talk(SAY_SCARLET_MINER_1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (IntroPhase)
|
||||
{
|
||||
if (IntroTimer <= diff)
|
||||
{
|
||||
if (IntroPhase == 1)
|
||||
{
|
||||
if (Creature* car = ObjectAccessor::GetCreature(*me, carGUID))
|
||||
DoCast(car, SPELL_CART_DRAG);
|
||||
IntroTimer = 800;
|
||||
IntroPhase = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Creature* car = ObjectAccessor::GetCreature(*me, carGUID))
|
||||
car->AI()->DoAction(0);
|
||||
IntroPhase = 0;
|
||||
}
|
||||
}
|
||||
else IntroTimer -= diff;
|
||||
}
|
||||
npc_escortAI::UpdateAI(diff);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
/*######
|
||||
## go_inconspicuous_mine_car
|
||||
######*/
|
||||
|
||||
enum Spells_Cart
|
||||
{
|
||||
SPELL_CART_SUMM = 52463
|
||||
};
|
||||
|
||||
class go_inconspicuous_mine_car : public GameObjectScript
|
||||
{
|
||||
public:
|
||||
go_inconspicuous_mine_car() : GameObjectScript("go_inconspicuous_mine_car") { }
|
||||
|
||||
bool OnGossipHello(Player* player, GameObject* /*go*/) override
|
||||
{
|
||||
if (player->GetQuestStatus(12701) == QUEST_STATUS_INCOMPLETE)
|
||||
{
|
||||
// Hack Why Trinity Dont Support Custom Summon Location
|
||||
if (Creature* miner = player->SummonCreature(28841, 2383.869629f, -5900.312500f, 107.996086f, player->GetOrientation(), TEMPSUMMON_DEAD_DESPAWN, 1))
|
||||
{
|
||||
player->CastSpell(player, SPELL_CART_SUMM, true);
|
||||
if (Creature* car = player->GetVehicleCreatureBase())
|
||||
{
|
||||
if (car->GetEntry() == 28817)
|
||||
{
|
||||
car->AI()->SetGUID(miner->GetGUID());
|
||||
CAST_AI(npc_scarlet_miner::npc_scarlet_minerAI, miner->AI())->InitCartQuest(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
class spell_death_knight_initiate_visual : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_death_knight_initiate_visual);
|
||||
@ -1219,13 +929,9 @@ void AddSC_the_scarlet_enclave_c1()
|
||||
RegisterSpellScript(spell_q12698_the_gift_that_keeps_on_giving);
|
||||
new npc_scarlet_ghoul();
|
||||
new npc_dkc1_gothik();
|
||||
new npc_scarlet_cannon();
|
||||
new npc_unworthy_initiate();
|
||||
new npc_unworthy_initiate_anchor();
|
||||
new go_acherus_soul_prison();
|
||||
new npc_scarlet_miner();
|
||||
new npc_scarlet_miner_cart();
|
||||
new go_inconspicuous_mine_car();
|
||||
RegisterSpellScript(spell_death_knight_initiate_visual);
|
||||
RegisterSpellScript(spell_lich_king_whisper);
|
||||
RegisterSpellScript(spell_lich_king_vo_blocker);
|
||||
|
||||
@ -133,13 +133,13 @@ struct boss_anub_arak : public BossAI
|
||||
DoCastSelf(SPELL_IMPALE_PERIODIC, true);
|
||||
|
||||
++_submergePhase;
|
||||
events.Reset();
|
||||
ScheduleSubmerged();
|
||||
}
|
||||
}
|
||||
|
||||
void ScheduleEmerged()
|
||||
{
|
||||
events.Reset();
|
||||
events.SetPhase(PHASE_EMERGED);
|
||||
events.ScheduleEvent(EVENT_CARRION_BEETLES, 6500ms, 0, PHASE_EMERGED);
|
||||
events.ScheduleEvent(EVENT_LEECHING_SWARM, 20s, 0, PHASE_EMERGED);
|
||||
@ -148,7 +148,6 @@ struct boss_anub_arak : public BossAI
|
||||
|
||||
void ScheduleSubmerged()
|
||||
{
|
||||
events.Reset();
|
||||
events.SetPhase(PHASE_SUBMERGED);
|
||||
events.ScheduleEvent(EVENT_EMERGE, 60s, 0, PHASE_SUBMERGED);
|
||||
|
||||
@ -209,14 +208,13 @@ struct boss_anub_arak : public BossAI
|
||||
}
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* who) override
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
{
|
||||
BossAI::JustEngagedWith(who);
|
||||
Talk(SAY_AGGRO);
|
||||
instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
|
||||
|
||||
events.SetPhase(PHASE_EMERGED);
|
||||
events.ScheduleEvent(EVENT_CLOSE_DOORS, 5s);
|
||||
events.ScheduleEvent(EVENT_CLOSE_DOORS, 5s, 0, PHASE_EMERGED);
|
||||
ScheduleEmerged();
|
||||
|
||||
// set up world triggers
|
||||
@ -288,7 +286,8 @@ struct boss_anub_arak : public BossAI
|
||||
if (_remainingLargeSummonsBeforeEmerge == 0)
|
||||
{
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_EMERGE, 5s);
|
||||
events.SetPhase(PHASE_SUBMERGED);
|
||||
events.ScheduleEvent(EVENT_EMERGE, 5s, 0, PHASE_SUBMERGED);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -333,10 +332,10 @@ struct boss_anub_arak : public BossAI
|
||||
DoCastSelf(SPELL_SELF_ROOT, true);
|
||||
me->DisableRotate(true);
|
||||
me->SendMovementFlagUpdate();
|
||||
events.ScheduleEvent(EVENT_ENABLE_ROTATE, 3300ms);
|
||||
events.ScheduleEvent(EVENT_ENABLE_ROTATE, 3300ms, 0, PHASE_EMERGED);
|
||||
DoCast(target, SPELL_POUND);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_POUND, 18s);
|
||||
events.ScheduleEvent(EVENT_POUND, 18s, 0, PHASE_EMERGED);
|
||||
break;
|
||||
case EVENT_ENABLE_ROTATE:
|
||||
me->RemoveAurasDueToSpell(SPELL_SELF_ROOT);
|
||||
|
||||
@ -77,51 +77,52 @@ enum Misc
|
||||
DATA_SET_INSANITY_PHASE = 1,
|
||||
};
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_HERALD_MIND_FLAY = 1,
|
||||
EVENT_HERALD_SHADOW,
|
||||
EVENT_HERALD_SHIVER,
|
||||
};
|
||||
|
||||
const std::array<uint32, MAX_INSANITY_TARGETS> InsanitySpells = { SPELL_INSANITY_PHASING_1, SPELL_INSANITY_PHASING_2, SPELL_INSANITY_PHASING_3, SPELL_INSANITY_PHASING_4, SPELL_INSANITY_PHASING_5 };
|
||||
|
||||
struct boss_volazj : public BossAI
|
||||
{
|
||||
boss_volazj(Creature* pCreature) : BossAI(pCreature, DATA_HERALD_VOLAZJ),
|
||||
insanityTimes(0),
|
||||
insanityPhase(false)
|
||||
{ }
|
||||
|
||||
void InitializeAI() override
|
||||
{
|
||||
BossAI::InitializeAI();
|
||||
// Visible for all players in insanity
|
||||
me->SetPhaseMask((1 | 16 | 32 | 64 | 128 | 256), true);
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_Reset();
|
||||
insanityTimes = 0;
|
||||
insanityPhase = false;
|
||||
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetControlled(false, UNIT_STATE_STUNNED);
|
||||
ResetPlayersPhaseMask();
|
||||
instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_QUICK_DEMISE_START_EVENT);
|
||||
me->SetPhaseMask((1 | 16 | 32 | 64 | 128 | 256), true);
|
||||
|
||||
ScheduleHealthCheckEvent({ 66, 33 }, [&]{
|
||||
scheduler.CancelAll();
|
||||
DoCastSelf(SPELL_INSANITY);
|
||||
}, false);
|
||||
}
|
||||
|
||||
void ScheduleTasks() override
|
||||
{
|
||||
ScheduleTimedEvent(8s, [&] {
|
||||
DoCastVictim(SPELL_MIND_FLAY);
|
||||
}, 20s);
|
||||
|
||||
ScheduleTimedEvent(5s, [&] {
|
||||
DoCastVictim(SPELL_SHADOW_BOLT_VOLLEY);
|
||||
}, 5s);
|
||||
|
||||
ScheduleTimedEvent(15s, [&] {
|
||||
DoCastRandomTarget(SPELL_SHIVER);
|
||||
}, 15s);
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
{
|
||||
_JustEngagedWith();
|
||||
events.ScheduleEvent(EVENT_HERALD_MIND_FLAY, 8s);
|
||||
events.ScheduleEvent(EVENT_HERALD_SHADOW, 5s);
|
||||
events.ScheduleEvent(EVENT_HERALD_SHIVER, 15s);
|
||||
Talk(SAY_AGGRO);
|
||||
DoCastSelf(SPELL_WHISPER_AGGRO);
|
||||
instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_QUICK_DEMISE_START_EVENT);
|
||||
me->SetInCombatWithZone();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@ -184,36 +185,13 @@ struct boss_volazj : public BossAI
|
||||
}
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damagetype*/, SpellSchoolMask /*damageSchoolMask*/) override
|
||||
{
|
||||
// Do not perform insanity recast if boss is casting Insanity already
|
||||
if (me->FindCurrentSpellBySpellId(SPELL_INSANITY))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// First insanity
|
||||
if (insanityTimes == 0 && me->HealthBelowPctDamaged(66, damage))
|
||||
{
|
||||
DoCastSelf(SPELL_INSANITY, false);
|
||||
++insanityTimes;
|
||||
}
|
||||
// Second insanity
|
||||
else if (insanityTimes == 1 && me->HealthBelowPctDamaged(33, damage))
|
||||
{
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
DoCastSelf(SPELL_INSANITY, false);
|
||||
++insanityTimes;
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
scheduler.Update(diff);
|
||||
|
||||
if (insanityPhase)
|
||||
{
|
||||
@ -226,53 +204,13 @@ struct boss_volazj : public BossAI
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetControlled(false, UNIT_STATE_STUNNED);
|
||||
me->RemoveAurasDueToSpell(INSANITY_VISUAL);
|
||||
}
|
||||
|
||||
events.Update(diff);
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
while (uint32 const eventId = events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_HERALD_MIND_FLAY:
|
||||
{
|
||||
DoCastVictim(SPELL_MIND_FLAY, false);
|
||||
events.Repeat(20s);
|
||||
break;
|
||||
}
|
||||
case EVENT_HERALD_SHADOW:
|
||||
{
|
||||
DoCastVictim(SPELL_SHADOW_BOLT_VOLLEY, false);
|
||||
events.Repeat(5s);
|
||||
break;
|
||||
}
|
||||
case EVENT_HERALD_SHIVER:
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true))
|
||||
{
|
||||
DoCast(pTarget, SPELL_SHIVER, false);
|
||||
}
|
||||
|
||||
events.Repeat(15s);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
{
|
||||
return;
|
||||
}
|
||||
ScheduleTasks();
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
private:
|
||||
uint8 insanityTimes;
|
||||
bool insanityPhase; // Indicates if boss enter to insanity phase
|
||||
|
||||
uint32 GetPlrInsanityAuraId(uint32 phaseMask) const
|
||||
@ -312,6 +250,7 @@ private:
|
||||
bool CheckPhaseMinions()
|
||||
{
|
||||
summons.RemoveNotExisting();
|
||||
|
||||
if (summons.empty())
|
||||
{
|
||||
ResetPlayersPhaseMask();
|
||||
|
||||
@ -33,7 +33,6 @@ enum Yells
|
||||
enum Spells
|
||||
{
|
||||
SPELL_CURSE_OF_LIFE = 49527,
|
||||
SPELL_RAIN_OF_FIRE = 49518,
|
||||
SPELL_SHADOW_VOLLEY = 49528,
|
||||
|
||||
// flesh spells
|
||||
@ -56,7 +55,6 @@ enum Misc
|
||||
ACTION_TURN_BONES = 1,
|
||||
|
||||
EVENT_SPELL_CURSE_OF_LIFE = 1,
|
||||
EVENT_SPELL_RAIN_OF_FIRE = 2,
|
||||
EVENT_SPELL_SHADOW_VOLLEY = 3,
|
||||
EVENT_SPELL_EYE_BEAM = 4,
|
||||
EVENT_SPELL_LIGHTNING_BREATH = 5,
|
||||
@ -97,7 +95,6 @@ public:
|
||||
Talk(SAY_AGGRO);
|
||||
BossAI::JustEngagedWith(who);
|
||||
events.ScheduleEvent(EVENT_SPELL_CURSE_OF_LIFE, 5s);
|
||||
events.ScheduleEvent(EVENT_SPELL_RAIN_OF_FIRE, 14s, 18s);
|
||||
events.ScheduleEvent(EVENT_SPELL_SHADOW_VOLLEY, 8s, 10s);
|
||||
events.ScheduleEvent(EVENT_SPELL_TURN_FLESH, 1s);
|
||||
}
|
||||
@ -146,17 +143,11 @@ public:
|
||||
switch (events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_SPELL_CURSE_OF_LIFE:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true))
|
||||
me->CastSpell(target, SPELL_CURSE_OF_LIFE, false);
|
||||
DoCastRandomTarget(SPELL_CURSE_OF_LIFE, 0, 30.0f, false);
|
||||
events.ScheduleEvent(EVENT_SPELL_CURSE_OF_LIFE, 13s);
|
||||
break;
|
||||
case EVENT_SPELL_RAIN_OF_FIRE:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true))
|
||||
me->CastSpell(target, SPELL_RAIN_OF_FIRE, false);
|
||||
events.ScheduleEvent(EVENT_SPELL_RAIN_OF_FIRE, 16s);
|
||||
break;
|
||||
case EVENT_SPELL_SHADOW_VOLLEY:
|
||||
me->CastSpell(me, SPELL_SHADOW_VOLLEY, false);
|
||||
DoCastAOE(SPELL_SHADOW_VOLLEY);
|
||||
events.ScheduleEvent(EVENT_SPELL_SHADOW_VOLLEY, 9s);
|
||||
break;
|
||||
case EVENT_SPELL_TURN_FLESH:
|
||||
@ -173,9 +164,8 @@ public:
|
||||
events.ScheduleEvent(EVENT_SPELL_TURN_FLESH, 1s);
|
||||
break;
|
||||
case EVENT_TURN_FLESH_REAL:
|
||||
me->CastSpell(me, SPELL_DUMMY, true);
|
||||
|
||||
me->GetMotionMaster()->MoveChase(me->GetVictim());
|
||||
DoCastSelf(SPELL_DUMMY, true);
|
||||
me->ResumeChasingVictim();
|
||||
events.ScheduleEvent(EVENT_SPELL_EYE_BEAM, 11s);
|
||||
events.ScheduleEvent(EVENT_SPELL_LIGHTNING_BREATH, 3s);
|
||||
events.ScheduleEvent(EVENT_SPELL_POISON_CLOUD, 6s);
|
||||
@ -199,7 +189,6 @@ public:
|
||||
me->CastSpell(me, SPELL_CLEAR_GIFT, true);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_SPELL_CURSE_OF_LIFE, 1s);
|
||||
events.ScheduleEvent(EVENT_SPELL_RAIN_OF_FIRE, 12s, 14s);
|
||||
events.ScheduleEvent(EVENT_SPELL_SHADOW_VOLLEY, 8s, 10s);
|
||||
break;
|
||||
}
|
||||
@ -249,7 +238,6 @@ class spell_tharon_ja_dummy_aura : public AuraScript
|
||||
{
|
||||
PreventDefaultAction();
|
||||
GetUnitOwner()->GetThreatMgr().ResetAllThreat();
|
||||
GetUnitOwner()->GetMotionMaster()->Clear();
|
||||
GetUnitOwner()->CastSpell((Unit*)nullptr, SPELL_TURN_BONES, false);
|
||||
GetUnitOwner()->GetAI()->DoAction(ACTION_TURN_BONES);
|
||||
}
|
||||
|
||||
@ -41,6 +41,7 @@ enum VolkhanOther
|
||||
NPC_VOLKHAN_ANVIL = 28823,
|
||||
NPC_MOLTEN_GOLEM = 28695,
|
||||
NPC_BRITTLE_GOLEM = 28681,
|
||||
NPC_SLAG = 28585,
|
||||
|
||||
// Misc
|
||||
ACTION_SHATTER = 1,
|
||||
@ -77,7 +78,7 @@ enum Yells
|
||||
|
||||
struct boss_volkhan : public BossAI
|
||||
{
|
||||
boss_volkhan(Creature* creature) : BossAI(creature, DATA_VOLKHAN), summons(creature) { }
|
||||
boss_volkhan(Creature* creature) : BossAI(creature, DATA_VOLKHAN) { }
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@ -104,6 +105,18 @@ struct boss_volkhan : public BossAI
|
||||
{
|
||||
_JustDied();
|
||||
Talk(SAY_DEATH);
|
||||
|
||||
std::list<Creature*> slags;
|
||||
GetCreatureListWithEntryInGrid(slags, me, NPC_SLAG, 100.0f);
|
||||
|
||||
if (!slags.empty())
|
||||
{
|
||||
for (Creature* slag : slags)
|
||||
{
|
||||
if (slag)
|
||||
slag->DespawnOrUnsummon();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GetNextPos()
|
||||
@ -286,8 +299,6 @@ struct boss_volkhan : public BossAI
|
||||
}
|
||||
|
||||
private:
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
float x, y, z;
|
||||
uint8 PointID;
|
||||
uint8 ShatteredCount;
|
||||
|
||||
@ -17,6 +17,7 @@
|
||||
|
||||
#include "CreatureScript.h"
|
||||
#include "GameObjectScript.h"
|
||||
#include "GridNotifiers.h"
|
||||
#include "PassiveAI.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
@ -26,6 +27,7 @@
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "Vehicle.h"
|
||||
#include <algorithm>
|
||||
|
||||
enum AlchemistItemRequirements
|
||||
{
|
||||
@ -234,12 +236,14 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
enum overlordDrakuru
|
||||
enum OverlordDrakuru
|
||||
{
|
||||
SPELL_SHADOW_BOLT = 54113,
|
||||
SPELL_SCOURGE_DISGUISE_EXPIRING = 52010,
|
||||
SPELL_DROP_DISGUISE = 54089,
|
||||
SPELL_THROW_BRIGHT_CRYSTAL = 54087,
|
||||
SPELL_TELEPORT_EFFECT = 52096,
|
||||
SPELL_SCOURGE_SPOTLIGHT = 53104,
|
||||
SPELL_SCOURGE_DISGUISE = 51966,
|
||||
SPELL_SCOURGE_DISGUISE_INSTANT_CAST = 52192,
|
||||
SPELL_BLIGHT_FOG = 54104,
|
||||
@ -248,29 +252,41 @@ enum overlordDrakuru
|
||||
SPELL_TOUCH_OF_DEATH = 54236,
|
||||
SPELL_DRAKURU_DEATH = 54248,
|
||||
SPELL_SUMMON_SKULL = 54253,
|
||||
SPELL_BLOATED_ABOMINATION_FEIGN_DEATH = 52593,
|
||||
SPELL_EXPLODE_ABOMINATION_BLOODY_MEAT = 52523,
|
||||
SPELL_EXPLODE_ABOMINATION_MEAT = 52520,
|
||||
SPELL_DRAKURUS_SKULL_MISSILE = 54250,
|
||||
SPELL_BURST_AT_THE_SEAMS_BONE = 52516,
|
||||
|
||||
QUEST_BETRAYAL = 12713,
|
||||
|
||||
NPC_BLIGHTBLOOD_TROLL = 28931,
|
||||
NPC_LICH_KING = 28498,
|
||||
NPC_TOTALLY_GENERIC_BUNNY = 29100,
|
||||
NPC_TOTALLY_GENERIC_BUNNY_JSB = 28960,
|
||||
GO_DRAKURUS_LAST_WISH = 202357,
|
||||
|
||||
EVENT_BETRAYAL_1 = 1,
|
||||
EVENT_BETRAYAL_2 = 2,
|
||||
EVENT_BETRAYAL_3 = 3,
|
||||
EVENT_BETRAYAL_4 = 4,
|
||||
EVENT_BETRAYAL_5 = 5,
|
||||
EVENT_BETRAYAL_6 = 6,
|
||||
EVENT_BETRAYAL_7 = 7,
|
||||
EVENT_BETRAYAL_8 = 8,
|
||||
EVENT_BETRAYAL_9 = 9,
|
||||
EVENT_BETRAYAL_10 = 10,
|
||||
EVENT_BETRAYAL_11 = 11,
|
||||
EVENT_BETRAYAL_12 = 12,
|
||||
EVENT_BETRAYAL_13 = 13,
|
||||
EVENT_BETRAYAL_14 = 14,
|
||||
EVENT_BETRAYAL_SHADOW_BOLT = 20,
|
||||
EVENT_BETRAYAL_CRYSTAL = 21,
|
||||
EVENT_BETRAYAL_COMBAT_TALK = 22,
|
||||
ACTION_SUMMON_DRAKURU_LAST_WISH = 1,
|
||||
ACTION_DESTROY_DRAKURU_LAST_WISH = 2,
|
||||
ACTION_REMOVE_SPOTLIGHTS = 3,
|
||||
|
||||
SUMMON_GROUP_BLIGHTBLOOD_TROLL = 1,
|
||||
|
||||
EVENT_BETRAYAL_INTRO_1 = 1,
|
||||
EVENT_BETRAYAL_INTRO_2 = 2,
|
||||
EVENT_BETRAYAL_INTRO_3 = 3,
|
||||
EVENT_BETRAYAL_INTRO_4 = 4,
|
||||
EVENT_BETRAYAL_EVADE_CHECK = 5,
|
||||
EVENT_BETRAYAL_EPILOGUE_1 = 6,
|
||||
EVENT_BETRAYAL_EPILOGUE_2 = 7,
|
||||
EVENT_BETRAYAL_EPILOGUE_3 = 8,
|
||||
EVENT_BETRAYAL_EPILOGUE_4 = 9,
|
||||
EVENT_BETRAYAL_EPILOGUE_5 = 10,
|
||||
EVENT_BETRAYAL_EPILOGUE_6 = 11,
|
||||
EVENT_BETRAYAL_EPILOGUE_7 = 12,
|
||||
EVENT_BETRAYAL_EPILOGUE_8 = 13,
|
||||
EVENT_BETRAYAL_EPILOGUE_9 = 14,
|
||||
EVENT_BETRAYAL_EPILOGUE_10 = 15,
|
||||
|
||||
SAY_DRAKURU_0 = 0,
|
||||
SAY_DRAKURU_1 = 1,
|
||||
@ -288,32 +304,24 @@ enum overlordDrakuru
|
||||
SAY_LICH_12 = 12,
|
||||
};
|
||||
|
||||
class npc_overlord_drakuru_betrayal : public CreatureScript
|
||||
enum BetrayalState
|
||||
{
|
||||
public:
|
||||
npc_overlord_drakuru_betrayal() : CreatureScript("npc_overlord_drakuru_betrayal") { }
|
||||
BETRAYAL_NOT_STARTED,
|
||||
BETRAYAL_IN_PROGRESS,
|
||||
BETRAYAL_EPILOGUE,
|
||||
BETRAYAL_EVADE,
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
struct npc_overlord_drakuru_betrayal : public ScriptedAI
|
||||
{
|
||||
return new npc_overlord_drakuru_betrayalAI(creature);
|
||||
npc_overlord_drakuru_betrayal(Creature* creature) : ScriptedAI(creature), _summons(me), _state(BETRAYAL_NOT_STARTED)
|
||||
{
|
||||
me->SetCombatMovement(false);
|
||||
}
|
||||
|
||||
struct npc_overlord_drakuru_betrayalAI : public ScriptedAI
|
||||
{
|
||||
npc_overlord_drakuru_betrayalAI(Creature* creature) : ScriptedAI(creature), summons(me)
|
||||
{
|
||||
}
|
||||
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
ObjectGuid playerGUID;
|
||||
ObjectGuid lichGUID;
|
||||
|
||||
void EnterEvadeMode(EvadeReason why) override
|
||||
{
|
||||
if (playerGUID)
|
||||
if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID))
|
||||
if (player->IsWithinDistInMap(me, 80))
|
||||
if (_state != BETRAYAL_EVADE)
|
||||
return;
|
||||
me->SetFaction(FACTION_UNDEAD_SCOURGE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
@ -323,68 +331,104 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
playerGUID.Clear();
|
||||
lichGUID.Clear();
|
||||
scheduler.CancelAll();
|
||||
_summons.DespawnAll();
|
||||
_playerGUID.Clear();
|
||||
_lichGUID.Clear();
|
||||
me->SetFaction(FACTION_UNDEAD_SCOURGE);
|
||||
me->SetVisible(false);
|
||||
DoAction(ACTION_SUMMON_DRAKURU_LAST_WISH);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetImmuneToPC(true);
|
||||
_state = BETRAYAL_NOT_STARTED;
|
||||
DoAction(ACTION_REMOVE_SPOTLIGHTS);
|
||||
}
|
||||
|
||||
void DoAction(int32 action) override
|
||||
{
|
||||
switch (action)
|
||||
{
|
||||
case ACTION_SUMMON_DRAKURU_LAST_WISH:
|
||||
if (!me->FindNearestGameObject(GO_DRAKURUS_LAST_WISH, 80.0f))
|
||||
me->SummonGameObject(GO_DRAKURUS_LAST_WISH, 6185.989, -2029.6979, 590.87787, 0, 0, 0, 0, 0, 0, true, GO_SUMMON_TIMED_DESPAWN);
|
||||
break;
|
||||
case ACTION_DESTROY_DRAKURU_LAST_WISH:
|
||||
if (GameObject* go = me->FindNearestGameObject(GO_DRAKURUS_LAST_WISH, 80.0f))
|
||||
go->Delete();
|
||||
break;
|
||||
case ACTION_REMOVE_SPOTLIGHTS:
|
||||
{
|
||||
std::list<Creature*> creatures;
|
||||
me->GetCreatureListWithEntryInGrid(creatures, NPC_TOTALLY_GENERIC_BUNNY, 55.0f);
|
||||
for (Creature* creature : creatures)
|
||||
creature->RemoveAurasDueToSpell(SPELL_SCOURGE_SPOTLIGHT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool IsPlayerOnQuest(Player* player)
|
||||
{
|
||||
return player->GetQuestStatus(QUEST_BETRAYAL) == QUEST_STATUS_INCOMPLETE;
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* who) override
|
||||
{
|
||||
if (who->IsPlayer())
|
||||
if (Player* player = who->ToPlayer())
|
||||
{
|
||||
if (playerGUID)
|
||||
{
|
||||
if (who->GetGUID() != playerGUID)
|
||||
{
|
||||
Player* player = ObjectAccessor::GetPlayer(*me, playerGUID);
|
||||
if (player && player->IsWithinDistInMap(me, 80))
|
||||
who->ToPlayer()->NearTeleportTo(6143.76f, -1969.7f, 417.57f, 2.08f);
|
||||
else
|
||||
{
|
||||
EnterEvadeMode(EVADE_REASON_OTHER);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
ScriptedAI::MoveInLineOfSight(who);
|
||||
}
|
||||
else if (who->ToPlayer()->GetQuestStatus(QUEST_BETRAYAL) == QUEST_STATUS_INCOMPLETE && who->HasAura(SPELL_SCOURGE_DISGUISE))
|
||||
bool shouldStartEvent = (_state == BETRAYAL_NOT_STARTED) && IsPlayerOnQuest(player) && player->HasAura(SPELL_SCOURGE_DISGUISE) && player->IsWithinDistInMap(me, 80.0f);
|
||||
if (shouldStartEvent)
|
||||
{
|
||||
me->SetVisible(true);
|
||||
playerGUID = who->GetGUID();
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_1, 5s);
|
||||
_state = BETRAYAL_IN_PROGRESS;
|
||||
DoAction(ACTION_DESTROY_DRAKURU_LAST_WISH);
|
||||
_playerGUID = who->GetGUID();
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_INTRO_1, 6s);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_EVADE_CHECK, 10s);
|
||||
}
|
||||
}
|
||||
else
|
||||
ScriptedAI::MoveInLineOfSight(who);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* cr) override
|
||||
void JustSummoned(Creature* summon) override
|
||||
{
|
||||
summons.Summon(cr);
|
||||
if (cr->GetEntry() == NPC_BLIGHTBLOOD_TROLL)
|
||||
cr->CastSpell(cr, SPELL_TELEPORT_EFFECT, true);
|
||||
else
|
||||
_summons.Summon(summon);
|
||||
switch (summon->GetEntry())
|
||||
{
|
||||
me->SetFacingToObject(cr);
|
||||
lichGUID = cr->GetGUID();
|
||||
float o = me->GetAngle(cr);
|
||||
cr->GetMotionMaster()->MovePoint(0, me->GetPositionX() + cos(o) * 6.0f, me->GetPositionY() + std::sin(o) * 6.0f, me->GetPositionZ());
|
||||
case NPC_BLIGHTBLOOD_TROLL:
|
||||
if (Creature* target = summon->FindNearestCreature(NPC_TOTALLY_GENERIC_BUNNY, 10.0f, true))
|
||||
target->CastSpell(target, SPELL_TELEPORT_EFFECT, true);
|
||||
break;
|
||||
case NPC_LICH_KING:
|
||||
me->SetFacingToObject(summon);
|
||||
_lichGUID = summon->GetGUID();
|
||||
summon->GetMotionMaster()->MovePoint(0, 6164.2695, -2016.8978, 590.8636);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit*) override
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
{
|
||||
Talk(SAY_DRAKURU_3);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_SHADOW_BOLT, 2s);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_CRYSTAL, 5s);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_COMBAT_TALK, 20s);
|
||||
scheduler.Schedule(0s, [this](TaskContext context)
|
||||
{
|
||||
if (!me->IsWithinMeleeRange(me->GetVictim()))
|
||||
DoCastVictim(SPELL_SHADOW_BOLT);
|
||||
context.Repeat(2s);
|
||||
}).Schedule(5s, [this](TaskContext context)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true))
|
||||
DoCast(target, SPELL_THROW_BRIGHT_CRYSTAL);
|
||||
context.Repeat(6s, 15s);
|
||||
}).Schedule(20s, [this](TaskContext context)
|
||||
{
|
||||
Talk(SAY_DRAKURU_4);
|
||||
context.Repeat(10s, 20s);
|
||||
});
|
||||
}
|
||||
|
||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
|
||||
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*dmgType*/, SpellSchoolMask /*school*/) override
|
||||
{
|
||||
if (damage >= me->GetHealth() && !me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||
{
|
||||
@ -392,25 +436,48 @@ public:
|
||||
me->RemoveAllAuras();
|
||||
me->CombatStop();
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->SetFaction(2082);
|
||||
me->SetImmuneToPC(true);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_4, 1s);
|
||||
scheduler.CancelAll();
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_EPILOGUE_1, 4200ms);
|
||||
_state = BETRAYAL_EPILOGUE;
|
||||
}
|
||||
}
|
||||
|
||||
void SpellHitTarget(Unit* target, SpellInfo const* spellInfo) override
|
||||
{
|
||||
if (spellInfo->Id == SPELL_THROW_PORTAL_CRYSTAL)
|
||||
switch (spellInfo->Id)
|
||||
{
|
||||
case SPELL_THROW_PORTAL_CRYSTAL:
|
||||
if (Aura* aura = target->AddAura(SPELL_ARTHAS_PORTAL, target))
|
||||
aura->SetDuration(48000);
|
||||
aura->SetDuration(77'000);
|
||||
break;
|
||||
case SPELL_DRAKURUS_SKULL_MISSILE:
|
||||
target->CastSpell(target, SPELL_SUMMON_SKULL, true);
|
||||
break;
|
||||
case SPELL_DROP_DISGUISE:
|
||||
target->CastSpell(target, SPELL_SCOURGE_DISGUISE_EXPIRING, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override
|
||||
{
|
||||
if (spellInfo->Id == SPELL_TOUCH_OF_DEATH)
|
||||
{
|
||||
me->CastSpell(me, SPELL_DRAKURU_DEATH, true);
|
||||
me->CastSpell(me, SPELL_SUMMON_SKULL, true);
|
||||
DoCastAOE(SPELL_DRAKURUS_SKULL_MISSILE, true);
|
||||
DoCastSelf(SPELL_BLOATED_ABOMINATION_FEIGN_DEATH, true);
|
||||
DoCastSelf(SPELL_BURST_AT_THE_SEAMS_BONE, true);
|
||||
DoCastSelf(SPELL_BURST_AT_THE_SEAMS_BONE, true);
|
||||
DoCastSelf(SPELL_BURST_AT_THE_SEAMS_BONE, true);
|
||||
DoCastSelf(SPELL_EXPLODE_ABOMINATION_MEAT, true);
|
||||
DoCastSelf(SPELL_EXPLODE_ABOMINATION_BLOODY_MEAT, true);
|
||||
DoCastSelf(SPELL_EXPLODE_ABOMINATION_BLOODY_MEAT, true);
|
||||
DoCastSelf(SPELL_EXPLODE_ABOMINATION_BLOODY_MEAT, true);
|
||||
DoCastSelf(SPELL_DRAKURU_DEATH, true);
|
||||
DoAction(ACTION_SUMMON_DRAKURU_LAST_WISH);
|
||||
me->SetImmuneToPC(true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -419,112 +486,126 @@ public:
|
||||
events.Update(diff);
|
||||
switch (events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_BETRAYAL_1:
|
||||
case EVENT_BETRAYAL_EVADE_CHECK:
|
||||
{
|
||||
if (_state == BETRAYAL_IN_PROGRESS)
|
||||
{
|
||||
float radius = 80.0f;
|
||||
std::list<Player*> players;
|
||||
Acore::AnyPlayerInObjectRangeCheck checker(me, radius, true, true);
|
||||
Acore::PlayerListSearcher<Acore::AnyPlayerInObjectRangeCheck> searcher(me, players, checker);
|
||||
Cell::VisitObjects(me, searcher, radius);
|
||||
if (std::ranges::any_of(players, [this](Player* player)
|
||||
{
|
||||
return IsPlayerOnQuest(player);
|
||||
}))
|
||||
{
|
||||
events.Repeat(10s);
|
||||
}
|
||||
else
|
||||
{
|
||||
_state = BETRAYAL_EVADE;
|
||||
EnterEvadeMode(EVADE_REASON_OTHER);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case EVENT_BETRAYAL_INTRO_1:
|
||||
Talk(SAY_DRAKURU_0);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_2, 5s);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_INTRO_2, 4s);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_INTRO_3, 6600ms);
|
||||
break;
|
||||
case EVENT_BETRAYAL_2:
|
||||
me->SummonCreature(NPC_BLIGHTBLOOD_TROLL, 6184.1f, -1969.9f, 586.76f, 4.5f);
|
||||
me->SummonCreature(NPC_BLIGHTBLOOD_TROLL, 6222.9f, -2026.5f, 586.76f, 2.9f);
|
||||
me->SummonCreature(NPC_BLIGHTBLOOD_TROLL, 6166.2f, -2065.4f, 586.76f, 1.4f);
|
||||
me->SummonCreature(NPC_BLIGHTBLOOD_TROLL, 6127.5f, -2008.7f, 586.76f, 0.0f);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_3, 5s);
|
||||
case EVENT_BETRAYAL_INTRO_2:
|
||||
me->SummonCreatureGroup(SUMMON_GROUP_BLIGHTBLOOD_TROLL);
|
||||
break;
|
||||
case EVENT_BETRAYAL_3:
|
||||
case EVENT_BETRAYAL_INTRO_3:
|
||||
Talk(SAY_DRAKURU_1);
|
||||
DoCastAOE(SPELL_DROP_DISGUISE);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_INTRO_4, 9600ms);
|
||||
break;
|
||||
case EVENT_BETRAYAL_INTRO_4:
|
||||
{
|
||||
Talk(SAY_DRAKURU_2);
|
||||
if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID))
|
||||
player->CastSpell(player, SPELL_SCOURGE_DISGUISE_EXPIRING, true);
|
||||
if (Aura* aur = me->AddAura(SPELL_BLIGHT_FOG, me))
|
||||
aur->SetDuration(22000);
|
||||
Talk(SAY_DRAKURU_3);
|
||||
me->SetImmuneToPC(false);
|
||||
std::list<Creature*> creatures;
|
||||
me->GetCreatureListWithEntryInGrid(creatures, NPC_TOTALLY_GENERIC_BUNNY, 55.0f);
|
||||
for (Creature* creature : creatures)
|
||||
creature->CastSpell(creature, SPELL_SCOURGE_SPOTLIGHT, true);
|
||||
break;
|
||||
case EVENT_BETRAYAL_4:
|
||||
}
|
||||
case EVENT_BETRAYAL_EPILOGUE_1:
|
||||
{
|
||||
Talk(SAY_DRAKURU_5);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_5, 6s);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_EPILOGUE_2, 4800ms);
|
||||
DoAction(ACTION_REMOVE_SPOTLIGHTS);
|
||||
break;
|
||||
case EVENT_BETRAYAL_5:
|
||||
}
|
||||
case EVENT_BETRAYAL_EPILOGUE_2:
|
||||
Talk(SAY_DRAKURU_6);
|
||||
me->CastSpell(me, SPELL_THROW_PORTAL_CRYSTAL, true);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_6, 8s);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_EPILOGUE_3, 1800ms);
|
||||
break;
|
||||
case EVENT_BETRAYAL_6:
|
||||
me->SummonCreature(NPC_LICH_KING, 6142.9f, -2011.6f, 590.86f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 41000);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_7, 8s);
|
||||
case EVENT_BETRAYAL_EPILOGUE_3:
|
||||
DoCastSelf(SPELL_THROW_PORTAL_CRYSTAL, true);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_EPILOGUE_4, 3600ms);
|
||||
break;
|
||||
case EVENT_BETRAYAL_7:
|
||||
case EVENT_BETRAYAL_EPILOGUE_4:
|
||||
me->SummonCreature(NPC_LICH_KING, 6140.4233, -2010.9938, 589.1911, 6.126106, TEMPSUMMON_TIMED_DESPAWN, 77'000);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_EPILOGUE_5, 8400ms);
|
||||
break;
|
||||
case EVENT_BETRAYAL_EPILOGUE_5:
|
||||
Talk(SAY_DRAKURU_7);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_8, 5s);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_EPILOGUE_6, 9600ms);
|
||||
break;
|
||||
case EVENT_BETRAYAL_8:
|
||||
if (Creature* lich = ObjectAccessor::GetCreature(*me, lichGUID))
|
||||
case EVENT_BETRAYAL_EPILOGUE_6:
|
||||
if (Creature* lich = ObjectAccessor::GetCreature(*me, _lichGUID))
|
||||
{
|
||||
lich->AI()->Talk(SAY_LICH_7);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_9, 6s);
|
||||
lich->AI()->Talk(SAY_LICH_8, 5400ms);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_EPILOGUE_7, 7800ms);
|
||||
break;
|
||||
case EVENT_BETRAYAL_9:
|
||||
if (Creature* lich = ObjectAccessor::GetCreature(*me, lichGUID))
|
||||
{
|
||||
lich->AI()->Talk(SAY_LICH_8);
|
||||
case EVENT_BETRAYAL_EPILOGUE_7:
|
||||
if (Creature* lich = ObjectAccessor::GetCreature(*me, _lichGUID))
|
||||
lich->CastSpell(me, SPELL_TOUCH_OF_DEATH, false);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_10, 4s);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_EPILOGUE_8, 4200ms);
|
||||
break;
|
||||
case EVENT_BETRAYAL_10:
|
||||
case EVENT_BETRAYAL_EPILOGUE_8:
|
||||
me->SetVisible(false);
|
||||
if (Creature* lich = ObjectAccessor::GetCreature(*me, lichGUID))
|
||||
lich->AI()->Talk(SAY_LICH_9);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_11, 4s);
|
||||
break;
|
||||
case EVENT_BETRAYAL_11:
|
||||
if (Creature* lich = ObjectAccessor::GetCreature(*me, lichGUID))
|
||||
lich->AI()->Talk(SAY_LICH_10);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_12, 6s);
|
||||
break;
|
||||
case EVENT_BETRAYAL_12:
|
||||
if (Creature* lich = ObjectAccessor::GetCreature(*me, lichGUID))
|
||||
lich->AI()->Talk(SAY_LICH_11);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_13, 3s);
|
||||
break;
|
||||
case EVENT_BETRAYAL_13:
|
||||
if (Creature* lich = ObjectAccessor::GetCreature(*me, lichGUID))
|
||||
if (Creature* lich = ObjectAccessor::GetCreature(*me, _lichGUID))
|
||||
{
|
||||
lich->AI()->Talk(SAY_LICH_12);
|
||||
lich->GetMotionMaster()->MovePoint(0, 6143.8f, -2011.5f, 590.9f);
|
||||
lich->AI()->Talk(SAY_LICH_9, 3600ms);
|
||||
lich->AI()->Talk(SAY_LICH_10, 8400ms);
|
||||
lich->AI()->Talk(SAY_LICH_11, 22800ms);
|
||||
lich->AI()->Talk(SAY_LICH_12, 27600ms);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_14, 7s);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_EPILOGUE_9, 32600ms);
|
||||
events.ScheduleEvent(EVENT_BETRAYAL_EPILOGUE_10, 37200ms);
|
||||
break;
|
||||
case EVENT_BETRAYAL_14:
|
||||
playerGUID.Clear();
|
||||
case EVENT_BETRAYAL_EPILOGUE_9:
|
||||
if (Creature* lich = ObjectAccessor::GetCreature(*me, _lichGUID))
|
||||
lich->GetMotionMaster()->MovePoint(0, 6141.2393, -2011.2728, 589.8653);
|
||||
break;
|
||||
case EVENT_BETRAYAL_EPILOGUE_10:
|
||||
EnterEvadeMode(EVADE_REASON_OTHER);
|
||||
break;
|
||||
}
|
||||
|
||||
if (me->GetFaction() == FACTION_FRIENDLY || me->HasUnitState(UNIT_STATE_CASTING | UNIT_STATE_STUNNED))
|
||||
if (me->GetFaction() == 2082 || me->HasUnitState(UNIT_STATE_CASTING | UNIT_STATE_STUNNED))
|
||||
return;
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
switch (events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_BETRAYAL_SHADOW_BOLT:
|
||||
if (!me->IsWithinMeleeRange(me->GetVictim()))
|
||||
me->CastSpell(me->GetVictim(), SPELL_SHADOW_BOLT, false);
|
||||
events.Repeat(2s);
|
||||
break;
|
||||
case EVENT_BETRAYAL_CRYSTAL:
|
||||
if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID))
|
||||
me->CastSpell(player, SPELL_THROW_BRIGHT_CRYSTAL, true);
|
||||
events.Repeat(6s, 15s);
|
||||
break;
|
||||
case EVENT_BETRAYAL_COMBAT_TALK:
|
||||
Talk(SAY_DRAKURU_4);
|
||||
events.Repeat(20s);
|
||||
break;
|
||||
}
|
||||
|
||||
scheduler.Update(diff);
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
private:
|
||||
SummonList _summons;
|
||||
ObjectGuid _playerGUID;
|
||||
ObjectGuid _lichGUID;
|
||||
BetrayalState _state;
|
||||
};
|
||||
|
||||
/*####
|
||||
@ -864,11 +945,32 @@ class spell_scourge_disguise_instability : public AuraScript
|
||||
}
|
||||
};
|
||||
|
||||
// 54105 - Blight Fog
|
||||
class spell_blight_fog : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_blight_fog);
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
targets.remove_if([](WorldObject* target) -> bool
|
||||
{
|
||||
float z = target->GetPositionZ();
|
||||
bool isInBlightFog = (582.0f <= z && z <= 583.0f) || (586.0f <= z && z <= 587.0f);
|
||||
return !isInBlightFog;
|
||||
});
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_blight_fog::FilterTargets, EFFECT_ALL, TARGET_UNIT_SRC_AREA_ENEMY);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_zuldrak()
|
||||
{
|
||||
new npc_finklestein();
|
||||
new go_finklestein_cauldron();
|
||||
new npc_overlord_drakuru_betrayal();
|
||||
RegisterCreatureAI(npc_overlord_drakuru_betrayal);
|
||||
new npc_drakuru_shackles();
|
||||
new npc_captured_rageclaw();
|
||||
new npc_released_offspring_harkoa();
|
||||
@ -876,4 +978,5 @@ void AddSC_zuldrak()
|
||||
new go_scourge_enclosure();
|
||||
|
||||
RegisterSpellScript(spell_scourge_disguise_instability);
|
||||
RegisterSpellScript(spell_blight_fog);
|
||||
}
|
||||
|
||||
@ -25,7 +25,7 @@ namespace MMAP
|
||||
{
|
||||
float ComputeBaseUnitDim(int vertexPerMapEdge)
|
||||
{
|
||||
return GRID_SIZE / static_cast<float>(vertexPerMapEdge - 1);
|
||||
return GRID_SIZE / static_cast<float>(vertexPerMapEdge);
|
||||
}
|
||||
|
||||
std::pair<uint32, uint32> MakeTileKey(uint32 x, uint32 y)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user