diff --git a/data/sql/updates/db_world/2024_12_05_00.sql b/data/sql/updates/db_world/2024_12_05_00.sql new file mode 100644 index 000000000..323a7ac3d --- /dev/null +++ b/data/sql/updates/db_world/2024_12_05_00.sql @@ -0,0 +1,5 @@ +-- DB update 2024_12_03_02 -> 2024_12_05_00 +-- +DELETE FROM `spell_script_names` WHERE `spell_id` = 43657; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(43657, 'spell_electrical_storm_proc'); diff --git a/data/sql/updates/db_world/2024_12_06_00.sql b/data/sql/updates/db_world/2024_12_06_00.sql new file mode 100644 index 000000000..3f1a709b8 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_06_00.sql @@ -0,0 +1,587 @@ +-- DB update 2024_12_05_00 -> 2024_12_06_00 + +-- Delete unofficial npcs + +DELETE FROM `creature` WHERE (`id1` = 28940) AND (`guid` IN (129709, 129724, 129726)); +DELETE FROM `creature_addon` WHERE (`guid` IN (129709, 129724, 129726)); + +DELETE FROM `creature` WHERE (`id1` = 28610) AND (`guid` IN (130036, 130015)); +DELETE FROM `creature_addon` WHERE (`guid` IN (130036, 130015)); + +DELETE FROM `creature` WHERE (`id1` = 28936) AND (`guid` IN (129644)); +DELETE FROM `creature_addon` WHERE (`guid` IN (129644)); + + +-- Adding Waypoints + +DELETE FROM `waypoint_data` WHERE `id` IN (12964600, 12965500, 12963900, 12964800, 12965100, 12965600, 12963800, 12964000, 12964900, 12965300, 12964300, 12965700, 12965400, 13000900, 12970200, 13001400, 12972200, 12965200); +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES + +(12964600, 1, 1732.11, -5776.87, 115.589, NULL, 0, 0, 0, 100, 0), +(12964600, 2, 1728.72, -5777.74, 115.262, NULL, 0, 0, 0, 100, 0), +(12964600, 3, 1718.53, -5780.24, 114.403, NULL, 0, 0, 0, 100, 0), +(12964600, 4, 1713.24, -5780.54, 114.028, NULL, 0, 0, 0, 100, 0), +(12964600, 5, 1698.87, -5780.64, 113.636, NULL, 0, 0, 0, 100, 0), +(12964600, 6, 1699.34, -5786.9, 114.22, NULL, 0, 0, 0, 100, 0), +(12964600, 7, 1699.64, -5796.75, 115.044, NULL, 0, 0, 0, 100, 0), +(12964600, 8, 1699.73, -5805.7, 115.703, NULL, 0, 0, 0, 100, 0), +(12964600, 9, 1699.69, -5809.83, 115.933, NULL, 0, 0, 0, 100, 0), +(12964600, 10, 1699.73, -5805.7, 115.703, NULL, 0, 0, 0, 100, 0), +(12964600, 11, 1699.64, -5796.75, 115.044, NULL, 0, 0, 0, 100, 0), +(12964600, 12, 1699.34, -5786.9, 114.22, NULL, 0, 0, 0, 100, 0), +(12964600, 13, 1698.87, -5780.64, 113.636, NULL, 0, 0, 0, 100, 0), +(12964600, 14, 1713.24, -5780.54, 114.028, NULL, 0, 0, 0, 100, 0), +(12964600, 15, 1718.53, -5780.24, 114.403, NULL, 0, 0, 0, 100, 0), +(12964600, 16, 1728.72, -5777.74, 115.262, NULL, 0, 0, 0, 100, 0), +(12964600, 17, 1732.11, -5776.87, 115.589, NULL, 0, 0, 0, 100, 0), +(12964600, 18, 1739.78, -5775.24, 116.06, NULL, 0, 0, 0, 100, 0), + +(12965500, 1, 1717.5, -5871.82, 116.139, NULL, 0, 0, 0, 100, 0), +(12965500, 2, 1708.7, -5871.41, 116.126, NULL, 0, 0, 0, 100, 0), +(12965500, 3, 1699.96, -5870.13, 116.138, NULL, 0, 0, 0, 100, 0), +(12965500, 4, 1696.44, -5869.54, 116.145, NULL, 0, 0, 0, 100, 0), +(12965500, 5, 1697.06, -5863.35, 116.147, NULL, 0, 0, 0, 100, 0), +(12965500, 6, 1697.85, -5853.36, 116.15, NULL, 0, 0, 0, 100, 0), +(12965500, 7, 1698.8, -5839.74, 116.137, NULL, 0, 0, 0, 100, 0), +(12965500, 8, 1697.85, -5853.36, 116.15, NULL, 0, 0, 0, 100, 0), +(12965500, 9, 1697.06, -5863.35, 116.147, NULL, 0, 0, 0, 100, 0), +(12965500, 10, 1696.44, -5869.54, 116.145, NULL, 0, 0, 0, 100, 0), +(12965500, 11, 1699.96, -5870.13, 116.138, NULL, 0, 0, 0, 100, 0), +(12965500, 12, 1708.7, -5871.41, 116.126, NULL, 0, 0, 0, 100, 0), +(12965500, 13, 1717.5, -5871.82, 116.139, NULL, 0, 0, 0, 100, 0), +(12965500, 14, 1726.44, -5871.98, 116.12, NULL, 0, 0, 0, 100, 0), + +(12963900, 1, 1662.2, -5842.81, 116.149, NULL, 0, 0, 0, 100, 0), +(12963900, 2, 1670.47, -5842, 116.155, NULL, 0, 0, 0, 100, 0), +(12963900, 3, 1675.52, -5837.58, 116.151, NULL, 0, 0, 0, 100, 0), +(12963900, 4, 1681.92, -5832.42, 116.132, NULL, 0, 0, 0, 100, 0), +(12963900, 5, 1691.65, -5834.89, 116.135, NULL, 0, 0, 0, 100, 0), +(12963900, 6, 1697.77, -5831.2, 116.131, NULL, 0, 0, 0, 100, 0), +(12963900, 7, 1704.59, -5827.17, 116.124, NULL, 0, 0, 0, 100, 0), +(12963900, 8, 1708.67, -5824.83, 116.123, NULL, 0, 0, 0, 100, 0), +(12963900, 9, 1706.14, -5817.84, 116.121, NULL, 0, 0, 0, 100, 0), +(12963900, 10, 1703.89, -5811.78, 116.022, NULL, 0, 0, 0, 100, 0), +(12963900, 11, 1701, -5806.55, 115.761, NULL, 0, 0, 0, 100, 0), +(12963900, 12, 1696.82, -5810.47, 115.969, NULL, 0, 0, 0, 100, 0), +(12963900, 13, 1687.4, -5820.39, 116.123, NULL, 0, 0, 0, 100, 0), +(12963900, 14, 1683.54, -5831.59, 116.129, NULL, 0, 0, 0, 100, 0), +(12963900, 15, 1671.76, -5841.22, 116.154, NULL, 0, 0, 0, 100, 0), +(12963900, 16, 1653.99, -5842.91, 116.13, NULL, 0, 0, 0, 100, 0), + +(12964800, 1, 1624.65, -5775.75, 116.118, NULL, 0, 0, 0, 100, 0), +(12964800, 2, 1633.19, -5776.35, 116.135, NULL, 0, 0, 0, 100, 0), +(12964800, 3, 1643.35, -5777.64, 116.173, NULL, 0, 0, 0, 100, 0), +(12964800, 4, 1650.32, -5778.36, 116.156, NULL, 0, 0, 0, 100, 0), +(12964800, 5, 1660.28, -5779.68, 116.114, NULL, 0, 0, 0, 100, 0), +(12964800, 6, 1660.86, -5783.13, 116.116, NULL, 0, 0, 0, 100, 0), +(12964800, 7, 1662.02, -5792.15, 116.12, NULL, 0, 0, 0, 100, 0), +(12964800, 8, 1662.83, -5799.71, 116.12, NULL, 0, 0, 0, 100, 0), +(12964800, 9, 1662.02, -5792.15, 116.12, NULL, 0, 0, 0, 100, 0), +(12964800, 10, 1660.86, -5783.13, 116.116, NULL, 0, 0, 0, 100, 0), +(12964800, 11, 1660.28, -5779.68, 116.114, NULL, 0, 0, 0, 100, 0), +(12964800, 12, 1650.32, -5778.36, 116.156, NULL, 0, 0, 0, 100, 0), +(12964800, 13, 1643.35, -5777.64, 116.173, NULL, 0, 0, 0, 100, 0), +(12964800, 14, 1633.19, -5776.35, 116.135, NULL, 0, 0, 0, 100, 0), +(12964800, 15, 1624.65, -5775.75, 116.118, NULL, 0, 0, 0, 100, 0), +(12964800, 16, 1605.68, -5769.41, 116.09, NULL, 0, 0, 0, 100, 0), + +(12965100, 1, 1697.22, -5681.61, 100.935, NULL, 0, 0, 0, 100, 0), +(12965100, 2, 1697.21, -5693.08, 100.954, NULL, 0, 0, 0, 100, 0), +(12965100, 3, 1697.24, -5703, 102.153, NULL, 0, 0, 0, 100, 0), +(12965100, 4, 1697.37, -5713.05, 103.852, NULL, 0, 0, 0, 100, 0), +(12965100, 5, 1697.4, -5722.63, 105.462, NULL, 0, 0, 0, 100, 0), +(12965100, 6, 1697.42, -5732.5, 107.141, NULL, 0, 0, 0, 100, 0), +(12965100, 7, 1697.47, -5743.48, 108.924, NULL, 0, 0, 0, 100, 0), +(12965100, 8, 1697.75, -5751.68, 110.122, NULL, 0, 0, 0, 100, 0), +(12965100, 9, 1698.26, -5763.04, 111.63, NULL, 0, 0, 0, 100, 0), +(12965100, 10, 1698.62, -5770.41, 112.531, NULL, 0, 0, 0, 100, 0), +(12965100, 11, 1698.26, -5763.04, 111.63, NULL, 0, 0, 0, 100, 0), +(12965100, 12, 1697.75, -5751.68, 110.122, NULL, 0, 0, 0, 100, 0), +(12965100, 13, 1697.47, -5743.48, 108.924, NULL, 0, 0, 0, 100, 0), +(12965100, 14, 1697.42, -5732.5, 107.141, NULL, 0, 0, 0, 100, 0), +(12965100, 15, 1697.4, -5722.63, 105.462, NULL, 0, 0, 0, 100, 0), +(12965100, 16, 1697.37, -5713.05, 103.852, NULL, 0, 0, 0, 100, 0), +(12965100, 17, 1697.24, -5703, 102.153, NULL, 0, 0, 0, 100, 0), +(12965100, 18, 1697.21, -5693.08, 100.954, NULL, 0, 0, 0, 100, 0), +(12965100, 19, 1697.22, -5681.61, 100.935, NULL, 0, 0, 0, 100, 0), +(12965100, 20, 1697.03, -5672.62, 100.93, NULL, 0, 0, 0, 100, 0), + +(12965600, 1, 1652.49, -5964.18, 130.396, NULL, 0, 0, 0, 100, 0), +(12965600, 2, 1652.54, -5957.19, 128.178, NULL, 0, 0, 0, 100, 0), +(12965600, 3, 1652.8, -5946.69, 125.333, NULL, 0, 0, 0, 100, 0), +(12965600, 4, 1652.97, -5939.69, 123.965, NULL, 0, 0, 0, 100, 0), +(12965600, 5, 1653.16, -5929.19, 121.793, NULL, 0, 0, 0, 100, 0), +(12965600, 6, 1653.53, -5918.7, 118.519, NULL, 0, 0, 0, 100, 0), +(12965600, 7, 1653.77, -5911.7, 116.768, NULL, 0, 0, 0, 100, 0), +(12965600, 8, 1654.04, -5903.89, 116.144, NULL, 0, 0, 0, 100, 0), +(12965600, 9, 1658.65, -5901, 116.141, NULL, 0, 0, 0, 100, 0), +(12965600, 10, 1667.72, -5895.71, 116.143, NULL, 0, 0, 0, 100, 0), +(12965600, 11, 1673.84, -5892.31, 116.149, NULL, 0, 0, 0, 100, 0), +(12965600, 12, 1684.22, -5886.85, 116.146, NULL, 0, 0, 0, 100, 0), +(12965600, 13, 1691.82, -5882.8, 116.14, NULL, 0, 0, 0, 100, 0), +(12965600, 14, 1684.22, -5886.85, 116.146, NULL, 0, 0, 0, 100, 0), +(12965600, 15, 1673.84, -5892.31, 116.149, NULL, 0, 0, 0, 100, 0), +(12965600, 16, 1667.72, -5895.71, 116.143, NULL, 0, 0, 0, 100, 0), +(12965600, 17, 1658.65, -5901, 116.141, NULL, 0, 0, 0, 100, 0), +(12965600, 18, 1654.04, -5903.89, 116.144, NULL, 0, 0, 0, 100, 0), +(12965600, 19, 1653.77, -5911.7, 116.768, NULL, 0, 0, 0, 100, 0), +(12965600, 20, 1653.53, -5918.7, 118.519, NULL, 0, 0, 0, 100, 0), +(12965600, 21, 1653.16, -5929.19, 121.793, NULL, 0, 0, 0, 100, 0), +(12965600, 22, 1652.97, -5939.69, 123.965, NULL, 0, 0, 0, 100, 0), +(12965600, 23, 1652.8, -5946.69, 125.333, NULL, 0, 0, 0, 100, 0), +(12965600, 24, 1652.54, -5957.19, 128.178, NULL, 0, 0, 0, 100, 0), +(12965600, 25, 1652.49, -5964.18, 130.396, NULL, 0, 0, 0, 100, 0), +(12965600, 26, 1652.36, -5975.49, 132.70, NULL, 0, 0, 0, 100, 0), + +(12963800, 1, 1561.98, -5777.51, 118.155, NULL, 0, 0, 0, 100, 0), +(12963800, 2, 1555, -5777.93, 118.64, NULL, 0, 0, 0, 100, 0), +(12963800, 3, 1548.01, -5778.28, 119.784, NULL, 0, 0, 0, 100, 0), +(12963800, 4, 1541.01, -5778.58, 121.11, NULL, 0, 0, 0, 100, 0), +(12963800, 5, 1530.52, -5778.36, 122.516, NULL, 0, 0, 0, 100, 0), +(12963800, 6, 1523.52, -5778.15, 123.093, NULL, 0, 0, 0, 100, 0), +(12963800, 7, 1515.65, -5777.74, 124.393, NULL, 0, 0, 0, 100, 0), +(12963800, 8, 1516.09, -5770.75, 122.7, NULL, 0, 0, 0, 100, 0), +(12963800, 9, 1516.54, -5763.77, 121.79, NULL, 0, 0, 0, 100, 0), +(12963800, 10, 1517.23, -5753.29, 120.96, NULL, 0, 0, 0, 100, 0), +(12963800, 11, 1517.65, -5746.3, 119.79, NULL, 0, 0, 0, 100, 0), +(12963800, 12, 1518.32, -5735.24, 117.575, NULL, 0, 0, 0, 100, 0), +(12963800, 13, 1518.56, -5731.75, 116.641, NULL, 0, 0, 0, 100, 0), +(12963800, 14, 1519.11, -5723.94, 116.102, NULL, 0, 0, 0, 100, 0), +(12963800, 15, 1519.65, -5720.09, 116.102, NULL, 0, 0, 0, 100, 0), +(12963800, 16, 1522.66, -5713.76, 116.103, NULL, 0, 0, 0, 100, 0), +(12963800, 17, 1529.94, -5703.6, 116.103, NULL, 0, 0, 0, 100, 0), +(12963800, 18, 1522.66, -5713.76, 116.103, NULL, 0, 0, 0, 100, 0), +(12963800, 19, 1519.65, -5720.09, 116.102, NULL, 0, 0, 0, 100, 0), +(12963800, 20, 1519.11, -5723.94, 116.102, NULL, 0, 0, 0, 100, 0), +(12963800, 21, 1518.56, -5731.75, 116.641, NULL, 0, 0, 0, 100, 0), +(12963800, 22, 1518.32, -5735.24, 117.575, NULL, 0, 0, 0, 100, 0), +(12963800, 23, 1517.65, -5746.3, 119.79, NULL, 0, 0, 0, 100, 0), +(12963800, 24, 1517.23, -5753.29, 120.96, NULL, 0, 0, 0, 100, 0), +(12963800, 25, 1516.54, -5763.77, 121.79, NULL, 0, 0, 0, 100, 0), +(12963800, 26, 1516.09, -5770.75, 122.7, NULL, 0, 0, 0, 100, 0), +(12963800, 27, 1515.65, -5777.74, 124.393, NULL, 0, 0, 0, 100, 0), +(12963800, 28, 1523.52, -5778.15, 123.093, NULL, 0, 0, 0, 100, 0), +(12963800, 29, 1530.52, -5778.36, 122.516, NULL, 0, 0, 0, 100, 0), +(12963800, 30, 1541.01, -5778.58, 121.11, NULL, 0, 0, 0, 100, 0), +(12963800, 31, 1548.01, -5778.28, 119.784, NULL, 0, 0, 0, 100, 0), +(12963800, 32, 1555, -5777.93, 118.64, NULL, 0, 0, 0, 100, 0), +(12963800, 33, 1561.98, -5777.51, 118.155, NULL, 0, 0, 0, 100, 0), +(12963800, 34, 1570.41, -5776.94, 117.86, NULL, 0, 0, 0, 100, 0), + +(12964000, 1, 1600.55, -5908.86, 116.317, NULL, 0, 0, 0, 100, 0), +(12964000, 2, 1593.85, -5906.81, 117.143, NULL, 0, 0, 0, 100, 0), +(12964000, 3, 1583.88, -5903.53, 119.437, NULL, 0, 0, 0, 100, 0), +(12964000, 4, 1577.6, -5901.65, 120.72, NULL, 0, 0, 0, 100, 0), +(12964000, 5, 1570.77, -5900.11, 122.094, NULL, 0, 0, 0, 100, 0), +(12964000, 6, 1562.59, -5898.43, 123.523, NULL, 0, 0, 0, 100, 0), +(12964000, 7, 1555.69, -5897.28, 125.116, NULL, 0, 0, 0, 100, 0), +(12964000, 8, 1545.34, -5895.51, 127.386, NULL, 0, 0, 0, 100, 0), +(12964000, 9, 1535.03, -5893.55, 129.08, NULL, 0, 0, 0, 100, 0), +(12964000, 10, 1526.53, -5890.97, 130.096, NULL, 0, 0, 0, 100, 0), +(12964000, 11, 1519.88, -5888.78, 130.624, NULL, 0, 0, 0, 100, 0), +(12964000, 12, 1511.25, -5885.75, 131.014, NULL, 0, 0, 0, 100, 0), +(12964000, 13, 1504.95, -5883.19, 131.188, NULL, 0, 0, 0, 100, 0), +(12964000, 14, 1511.25, -5885.75, 131.014, NULL, 0, 0, 0, 100, 0), +(12964000, 15, 1519.88, -5888.78, 130.624, NULL, 0, 0, 0, 100, 0), +(12964000, 16, 1526.53, -5890.97, 130.096, NULL, 0, 0, 0, 100, 0), +(12964000, 17, 1535.03, -5893.55, 129.08, NULL, 0, 0, 0, 100, 0), +(12964000, 18, 1545.34, -5895.51, 127.386, NULL, 0, 0, 0, 100, 0), +(12964000, 19, 1555.69, -5897.28, 125.116, NULL, 0, 0, 0, 100, 0), +(12964000, 20, 1562.59, -5898.43, 123.523, NULL, 0, 0, 0, 100, 0), +(12964000, 21, 1570.77, -5900.11, 122.094, NULL, 0, 0, 0, 100, 0), +(12964000, 22, 1577.6, -5901.65, 120.72, NULL, 0, 0, 0, 100, 0), +(12964000, 23, 1583.88, -5903.53, 119.437, NULL, 0, 0, 0, 100, 0), +(12964000, 24, 1593.85, -5906.81, 117.143, NULL, 0, 0, 0, 100, 0), +(12964000, 25, 1600.55, -5908.86, 116.317, NULL, 0, 0, 0, 100, 0), +(12964000, 26, 1608.16, -5911.04, 116.14, NULL, 0, 0, 0, 100, 0), + +(12964900, 1, 1688.65, -5983.67, 130.425, NULL, 0, 0, 0, 100, 0), +(12964900, 2, 1690.94, -5989.71, 130.732, NULL, 0, 0, 0, 100, 0), +(12964900, 3, 1693.11, -5995.7, 132.877, NULL, 0, 0, 0, 100, 0), +(12964900, 4, 1694.74, -6000.31, 134.985, NULL, 0, 0, 0, 100, 0), +(12964900, 5, 1696.61, -6005.58, 135.86, NULL, 0, 0, 0, 100, 0), +(12964900, 6, 1697.87, -6008.84, 135.329, NULL, 0, 0, 0, 100, 0), +(12964900, 7, 1701.65, -6018.64, 134.577, NULL, 0, 0, 0, 100, 0), +(12964900, 8, 1705.38, -6028.45, 133.91, NULL, 0, 0, 0, 100, 0), +(12964900, 9, 1707.82, -6035.01, 133.047, NULL, 0, 0, 0, 100, 0), +(12964900, 10, 1711.37, -6044.9, 134.387, NULL, 0, 0, 0, 100, 0), +(12964900, 11, 1713.94, -6052.34, 136.517, NULL, 0, 0, 0, 100, 0), +(12964900, 12, 1716.5, -6059.74, 140.355, NULL, 0, 0, 0, 100, 0), +(12964900, 13, 1710.82, -6059.63, 139.044, NULL, 0, 0, 0, 100, 0), +(12964900, 14, 1702.12, -6059.45, 139.905, NULL, 0, 0, 0, 100, 0), +(12964900, 15, 1698.4, -6059.93, 139.766, NULL, 0, 0, 0, 100, 0), +(12964900, 16, 1690.63, -6048.82, 134.459, NULL, 0, 0, 0, 100, 0), +(12964900, 17, 1688.63, -6037.27, 133.038, NULL, 0, 0, 0, 100, 0), +(12964900, 18, 1688.04, -6026.31, 133.144, NULL, 0, 0, 0, 100, 0), +(12964900, 19, 1687.62, -6016.61, 133.455, NULL, 0, 0, 0, 100, 0), +(12964900, 20, 1686.48, -6005.39, 133.494, NULL, 0, 0, 0, 100, 0), +(12964900, 21, 1685.56, -5993.86, 132.473, NULL, 0, 0, 0, 100, 0), +(12964900, 22, 1681.00, -5986.50, 132.497, NULL, 0, 0, 0, 100, 0), +(12964900, 23, 1675.66, -5976.37, 132.764, NULL, 0, 0, 0, 100, 0), + +(12965300, 1, 1567.97, -5940.48, 119.88, NULL, 0, 0, 0, 100, 0), +(12965300, 2, 1563.68, -5946.02, 119.894, NULL, 0, 0, 0, 100, 0), +(12965300, 3, 1557.54, -5954.54, 119.346, NULL, 0, 0, 0, 100, 0), +(12965300, 4, 1551.49, -5963.11, 118.323, NULL, 0, 0, 0, 100, 0), +(12965300, 5, 1546.54, -5968.03, 117.729, NULL, 0, 0, 0, 100, 0), +(12965300, 6, 1538.71, -5975.02, 116.86, NULL, 0, 0, 0, 100, 0), +(12965300, 7, 1530.83, -5981.96, 116.347, NULL, 0, 0, 0, 100, 0), +(12965300, 8, 1525.5, -5986.5, 116.363, NULL, 0, 0, 0, 100, 0), +(12965300, 9, 1517.01, -5994.29, 116.634, NULL, 0, 0, 0, 100, 0), +(12965300, 10, 1525.5, -5986.5, 116.363, NULL, 0, 0, 0, 100, 0), +(12965300, 11, 1530.83, -5981.96, 116.347, NULL, 0, 0, 0, 100, 0), +(12965300, 12, 1538.71, -5975.02, 116.86, NULL, 0, 0, 0, 100, 0), +(12965300, 13, 1546.54, -5968.03, 117.729, NULL, 0, 0, 0, 100, 0), +(12965300, 14, 1551.49, -5963.11, 118.323, NULL, 0, 0, 0, 100, 0), +(12965300, 15, 1557.54, -5954.54, 119.346, NULL, 0, 0, 0, 100, 0), +(12965300, 16, 1563.68, -5946.02, 119.894, NULL, 0, 0, 0, 100, 0), +(12965300, 17, 1567.97, -5940.48, 119.88, NULL, 0, 0, 0, 100, 0), +(12965300, 18, 1573.61, -5933.74, 119.60, NULL, 0, 0, 0, 100, 0), + +(12964300, 1, 1472.9, -6114.2, 116.284, NULL, 0, 0, 0, 100, 0), +(12964300, 2, 1471.64, -6106.69, 116.356, NULL, 0, 0, 0, 100, 0), +(12964300, 3, 1472.5, -6099.53, 116.542, NULL, 0, 0, 0, 100, 0), +(12964300, 4, 1474.55, -6088, 116.602, NULL, 0, 0, 0, 100, 0), +(12964300, 5, 1474.32, -6083.01, 116.443, NULL, 0, 0, 0, 100, 0), +(12964300, 6, 1474.06, -6072.51, 116.309, NULL, 0, 0, 0, 100, 0), +(12964300, 7, 1473.89, -6062.02, 116.303, NULL, 0, 0, 0, 100, 0), +(12964300, 8, 1473.73, -6051.52, 116.329, NULL, 0, 0, 0, 100, 0), +(12964300, 9, 1473.35, -6041.03, 116.308, NULL, 0, 0, 0, 100, 0), +(12964300, 10, 1474.46, -6030.12, 116.284, NULL, 0, 0, 0, 100, 0), +(12964300, 11, 1475.86, -6023.26, 116.283, NULL, 0, 0, 0, 100, 0), +(12964300, 12, 1477.33, -6016.42, 116.284, NULL, 0, 0, 0, 100, 0), +(12964300, 13, 1478.8, -6009.57, 116.283, NULL, 0, 0, 0, 100, 0), +(12964300, 14, 1485.28, -6002.28, 116.304, NULL, 0, 0, 0, 100, 0), +(12964300, 15, 1490.99, -5999.12, 116.399, NULL, 0, 0, 0, 100, 0), +(12964300, 16, 1501.04, -5996.1, 116.65, NULL, 0, 0, 0, 100, 0), +(12964300, 17, 1507.75, -5994.11, 116.622, NULL, 0, 0, 0, 100, 0), +(12964300, 18, 1516.05, -5992.28, 116.59, NULL, 0, 0, 0, 100, 0), +(12964300, 19, 1517.43, -5995.25, 116.657, NULL, 0, 0, 0, 100, 0), +(12964300, 20, 1518.63, -6004.94, 116.705, NULL, 0, 0, 0, 100, 0), +(12964300, 21, 1519.26, -6015.85, 116.698, NULL, 0, 0, 0, 100, 0), +(12964300, 22, 1520.53, -6022.74, 116.677, NULL, 0, 0, 0, 100, 0), +(12964300, 23, 1521.85, -6029.61, 116.667, NULL, 0, 0, 0, 100, 0), +(12964300, 24, 1523.13, -6040.01, 116.691, NULL, 0, 0, 0, 100, 0), +(12964300, 25, 1523.7, -6050.49, 116.641, NULL, 0, 0, 0, 100, 0), +(12964300, 26, 1524.2, -6057.48, 116.612, NULL, 0, 0, 0, 100, 0), +(12964300, 27, 1524.55, -6064.47, 116.582, NULL, 0, 0, 0, 100, 0), +(12964300, 28, 1524.98, -6074.96, 116.429, NULL, 0, 0, 0, 100, 0), +(12964300, 29, 1524.17, -6079.84, 116.371, NULL, 0, 0, 0, 100, 0), +(12964300, 30, 1521.86, -6087.35, 116.354, NULL, 0, 0, 0, 100, 0), +(12964300, 31, 1517.24, -6096.78, 116.334, NULL, 0, 0, 0, 100, 0), +(12964300, 32, 1514.14, -6103.05, 116.301, NULL, 0, 0, 0, 100, 0), +(12964300, 33, 1508.61, -6108.06, 116.283, NULL, 0, 0, 0, 100, 0), +(12964300, 34, 1502.59, -6111.64, 116.28, NULL, 0, 0, 0, 100, 0), +(12964300, 35, 1493.14, -6116.19, 116.278, NULL, 0, 0, 0, 100, 0), +(12964300, 36, 1486.7, -6118.93, 116.278, NULL, 0, 0, 0, 100, 0), +(12964300, 37, 1476.94, -6122.82, 116.278, NULL, 0, 0, 0, 100, 0), + +(12965700, 1, 1479.77, -5795.9, 131.225, NULL, 0, 0, 0, 100, 0), +(12965700, 2, 1473.2, -5788.08, 131.226, NULL, 0, 0, 0, 100, 0), +(12965700, 3, 1459.8, -5772.83, 131.277, NULL, 0, 0, 0, 100, 0), +(12965700, 4, 1453.71, -5765.56, 131.249, NULL, 0, 0, 0, 100, 0), +(12965700, 5, 1446.44, -5756.63, 131.211, NULL, 0, 0, 0, 100, 0), +(12965700, 6, 1438.99, -5751.49, 131.211, NULL, 0, 0, 0, 100, 0), +(12965700, 7, 1425.57, -5746.22, 131.211, NULL, 0, 0, 0, 100, 0), +(12965700, 8, 1416.81, -5751.64, 131.245, NULL, 0, 0, 0, 100, 0), +(12965700, 9, 1413.58, -5757.84, 131.376, NULL, 0, 0, 0, 100, 0), +(12965700, 10, 1408.82, -5766.98, 131.427, NULL, 0, 0, 0, 100, 0), +(12965700, 11, 1403.24, -5779.82, 131.324, NULL, 0, 0, 0, 100, 0), +(12965700, 12, 1398.89, -5791.07, 131.218, NULL, 0, 0, 0, 100, 0), +(12965700, 13, 1397.04, -5798.61, 131.221, NULL, 0, 0, 0, 100, 0), +(12965700, 14, 1400.24, -5806.23, 131.229, NULL, 0, 0, 0, 100, 0), +(12965700, 15, 1403.84, -5814.47, 131.213, NULL, 0, 0, 0, 100, 0), +(12965700, 16, 1413.36, -5825.58, 131.21, NULL, 0, 0, 0, 100, 0), +(12965700, 17, 1418.04, -5830.78, 131.202, NULL, 0, 0, 0, 100, 0), +(12965700, 18, 1428.02, -5842.01, 131.206, NULL, 0, 0, 0, 100, 0), +(12965700, 19, 1437.58, -5853.39, 131.21, NULL, 0, 0, 0, 100, 0), +(12965700, 20, 1450.56, -5856.58, 131.219, NULL, 0, 0, 0, 100, 0), +(12965700, 21, 1460.17, -5856.59, 131.218, NULL, 0, 0, 0, 100, 0), +(12965700, 22, 1468.48, -5856.22, 131.29, NULL, 0, 0, 0, 100, 0), +(12965700, 23, 1484.22, -5855.63, 131.217, NULL, 0, 0, 0, 100, 0), +(12965700, 24, 1493.32, -5851.1, 131.214, NULL, 0, 0, 0, 100, 0), +(12965700, 25, 1492.52, -5840.63, 131.211, NULL, 0, 0, 0, 100, 0), +(12965700, 26, 1491.61, -5830.18, 131.211, NULL, 0, 0, 0, 100, 0), +(12965700, 27, 1490.1, -5819.79, 131.211, NULL, 0, 0, 0, 100, 0), +(12965700, 28, 1487.21, -5806.08, 131.221, NULL, 0, 0, 0, 100, 0), + +(12965400, 1, 1431.17, -5838.02, 131.213, NULL, 0, 0, 0, 100, 0), +(12965400, 2, 1426.36, -5832.93, 131.21, NULL, 0, 0, 0, 100, 0), +(12965400, 3, 1421.49, -5827.91, 131.207, NULL, 0, 0, 0, 100, 0), +(12965400, 4, 1411, -5816.86, 131.208, NULL, 0, 0, 0, 100, 0), +(12965400, 5, 1407.67, -5812.31, 131.209, NULL, 0, 0, 0, 100, 0), +(12965400, 6, 1404.21, -5806.8, 131.213, NULL, 0, 0, 0, 100, 0), +(12965400, 7, 1402.93, -5801.91, 131.214, NULL, 0, 0, 0, 100, 0), +(12965400, 8, 1404.46, -5794.68, 131.211, NULL, 0, 0, 0, 100, 0), +(12965400, 9, 1407.36, -5788.31, 131.211, NULL, 0, 0, 0, 100, 0), +(12965400, 10, 1411.81, -5778.8, 131.23, NULL, 0, 0, 0, 100, 0), +(12965400, 11, 1414.23, -5773.33, 131.243, NULL, 0, 0, 0, 100, 0), +(12965400, 12, 1418.51, -5763.75, 131.241, NULL, 0, 0, 0, 100, 0), +(12965400, 13, 1421.65, -5756.73, 131.214, NULL, 0, 0, 0, 100, 0), +(12965400, 14, 1425.45, -5753.72, 131.211, NULL, 0, 0, 0, 100, 0), +(12965400, 15, 1435.95, -5755.48, 131.211, NULL, 0, 0, 0, 100, 0), +(12965400, 16, 1442.46, -5762.51, 131.211, NULL, 0, 0, 0, 100, 0), +(12965400, 17, 1447.39, -5767.48, 131.211, NULL, 0, 0, 0, 100, 0), +(12965400, 18, 1454.41, -5775.28, 131.211, NULL, 0, 0, 0, 100, 0), +(12965400, 19, 1461.21, -5783.29, 131.211, NULL, 0, 0, 0, 100, 0), +(12965400, 20, 1468.03, -5791.27, 131.211, NULL, 0, 0, 0, 100, 0), +(12965400, 21, 1476.99, -5802.03, 131.211, NULL, 0, 0, 0, 100, 0), +(12965400, 22, 1482.16, -5813.56, 131.211, NULL, 0, 0, 0, 100, 0), +(12965400, 23, 1484.44, -5820.17, 131.211, NULL, 0, 0, 0, 100, 0), +(12965400, 24, 1486.73, -5832.7, 131.222, NULL, 0, 0, 0, 100, 0), +(12965400, 25, 1487.87, -5843.14, 131.215, NULL, 0, 0, 0, 100, 0), +(12965400, 26, 1483.61, -5849.93, 131.216, NULL, 0, 0, 0, 100, 0), +(12965400, 27, 1476.62, -5850.23, 131.246, NULL, 0, 0, 0, 100, 0), +(12965400, 28, 1466.13, -5850.69, 131.242, NULL, 0, 0, 0, 100, 0), +(12965400, 29, 1457.02, -5851.2, 131.282, NULL, 0, 0, 0, 100, 0), +(12965400, 30, 1447.8, -5852.53, 131.261, NULL, 0, 0, 0, 100, 0), +(12965400, 31, 1441.34, -5848.46, 131.213, NULL, 0, 0, 0, 100, 0), +(12965400, 32, 1437.42, -5844.97, 131.213, NULL, 0, 0, 0, 100, 0), + +(13000900, 1, 1426.98, -5781.28, 131.21, NULL, 0, 0, 0, 100, 0), +(13000900, 2, 1434.25, -5776.49, 131.21, NULL, 0, 0, 0, 100, 0), +(13000900, 3, 1439.64, -5781.63, 131.21, NULL, 0, 0, 0, 100, 0), +(13000900, 4, 1444.88, -5786.62, 131.21, NULL, 0, 0, 0, 100, 0), +(13000900, 5, 1449.79, -5791.61, 131.21, NULL, 0, 0, 0, 100, 0), +(13000900, 6, 1457.11, -5799.14, 131.21, NULL, 0, 0, 0, 100, 0), +(13000900, 7, 1464.51, -5806.59, 131.211, NULL, 0, 0, 0, 100, 0), +(13000900, 8, 1474.33, -5816.57, 131.212, NULL, 0, 0, 0, 100, 0), +(13000900, 9, 1472.52, -5821.27, 131.231, NULL, 0, 0, 0, 100, 0), +(13000900, 10, 1466.63, -5826.96, 131.329, NULL, 0, 0, 0, 100, 0), +(13000900, 11, 1460.48, -5821.82, 131.277, NULL, 0, 0, 0, 100, 0), +(13000900, 12, 1451.37, -5815.2, 131.245, NULL, 0, 0, 0, 100, 0), +(13000900, 13, 1446.33, -5810.34, 131.216, NULL, 0, 0, 0, 100, 0), +(13000900, 14, 1442.31, -5806.39, 131.211, NULL, 0, 0, 0, 100, 0), +(13000900, 15, 1436.56, -5800.31, 131.211, NULL, 0, 0, 0, 100, 0), +(13000900, 16, 1435.51, -5799.23, 131.211, NULL, 0, 0, 0, 100, 0), +(13000900, 17, 1432.09, -5791.48, 131.211, NULL, 0, 0, 0, 100, 0), +(13000900, 18, 1428.52, -5787.77, 131.211, NULL, 0, 0, 0, 100, 0), + +(12970200, 1, 1429.63, -5825.72, 131.211, NULL, 0, 0, 0, 100, 0), +(12970200, 2, 1439.79, -5834.19, 131.215, NULL, 0, 0, 0, 100, 0), +(12970200, 3, 1444.87, -5836.49, 131.217, NULL, 0, 0, 0, 100, 0), +(12970200, 4, 1449.51, -5834.77, 131.231, NULL, 0, 0, 0, 100, 0), +(12970200, 5, 1458.49, -5824.22, 131.288, NULL, 0, 0, 0, 100, 0), +(12970200, 6, 1453.36, -5819.46, 131.274, NULL, 0, 0, 0, 100, 0), +(12970200, 7, 1445.71, -5812.28, 131.219, NULL, 0, 0, 0, 100, 0), +(12970200, 8, 1438.24, -5804.9, 131.211, NULL, 0, 0, 0, 100, 0), +(12970200, 9, 1431.81, -5798.58, 131.211, NULL, 0, 0, 0, 100, 0), +(12970200, 10, 1422.92, -5789.67, 131.211, NULL, 0, 0, 0, 100, 0), +(12970200, 11, 1418.38, -5794.73, 131.211, NULL, 0, 0, 0, 100, 0), +(12970200, 12, 1411.83, -5802.83, 131.211, NULL, 0, 0, 0, 100, 0), +(12970200, 13, 1415.87, -5808.55, 131.211, NULL, 0, 0, 0, 100, 0), +(12970200, 14, 1424.03, -5820.05, 131.211, NULL, 0, 0, 0, 100, 0), + +(13001400, 1, 1458.06, -5921.76, 131.27, NULL, 0, 0, 0, 100, 0), +(13001400, 2, 1475.02, -5919.98, 131.59, NULL, 0, 0, 0, 100, 0), +(13001400, 3, 1474.97, -5909.23, 131.613, NULL, 0, 0, 0, 100, 0), +(13001400, 4, 1472.46, -5906.79, 131.597, NULL, 0, 0, 0, 100, 0), +(13001400, 5, 1465.15, -5899.26, 131.481, NULL, 0, 0, 0, 100, 0), +(13001400, 6, 1457.8, -5891.76, 131.258, NULL, 0, 0, 0, 100, 0), +(13001400, 7, 1452.89, -5886.77, 131.217, NULL, 0, 0, 0, 100, 0), +(13001400, 8, 1443.26, -5877.43, 131.214, NULL, 0, 0, 0, 100, 0), +(13001400, 9, 1438.41, -5882.54, 131.214, NULL, 0, 0, 0, 100, 0), +(13001400, 10, 1432.28, -5889.9, 131.214, NULL, 0, 0, 0, 100, 0), +(13001400, 11, 1441.93, -5901.71, 131.232, NULL, 0, 0, 0, 100, 0), +(13001400, 12, 1447.28, -5908.45, 131.306, NULL, 0, 0, 0, 100, 0), +(13001400, 13, 1452.15, -5914.63, 131.353, NULL, 0, 0, 0, 100, 0), + +(12972200, 1, 1467.87, -5870.13, 131.579, NULL, 0, 0, 0, 100, 0), +(12972200, 2, 1474.8, -5877.15, 131.827, NULL, 0, 0, 0, 100, 0), +(12972200, 3, 1481.43, -5883.86, 131.999, NULL, 0, 0, 0, 100, 0), +(12972200, 4, 1483.68, -5886.54, 132, NULL, 0, 0, 0, 100, 0), +(12972200, 5, 1487.81, -5891.63, 132.238, NULL, 0, 0, 0, 100, 0), +(12972200, 6, 1491.96, -5897.79, 132.383, NULL, 0, 0, 0, 100, 0), +(12972200, 7, 1488.27, -5902.55, 132.249, NULL, 0, 0, 0, 100, 0), +(12972200, 8, 1482.63, -5910.16, 131.814, NULL, 0, 0, 0, 100, 0), +(12972200, 9, 1477.54, -5905.35, 131.701, NULL, 0, 0, 0, 100, 0), +(12972200, 10, 1469.88, -5897.95, 131.562, NULL, 0, 0, 0, 100, 0), +(12972200, 11, 1463.56, -5891.29, 131.344, NULL, 0, 0, 0, 100, 0), +(12972200, 12, 1456.9, -5884.41, 131.22, NULL, 0, 0, 0, 100, 0), +(12972200, 13, 1450.85, -5876.98, 131.214, NULL, 0, 0, 0, 100, 0), +(12972200, 14, 1447.34, -5872.19, 131.214, NULL, 0, 0, 0, 100, 0), +(12972200, 15, 1453.71, -5868.07, 131.214, NULL, 0, 0, 0, 100, 0), +(12972200, 16, 1460.86, -5863.47, 131.254, NULL, 0, 0, 0, 100, 0), +(12972200, 17, 1463.84, -5865.97, 131.358, NULL, 0, 0, 0, 100, 0), + +(12965200, 1, 1750.42, -5952.79, 116.165, NULL, 0, 0, 0, 100, 0), +(12965200, 2, 1752.08, -5949.71, 116.137, NULL, 0, 0, 0, 100, 0), +(12965200, 3, 1757.09, -5940.48, 116.12, NULL, 0, 0, 0, 100, 0), +(12965200, 4, 1760.35, -5934.29, 116.119, NULL, 0, 0, 0, 100, 0), +(12965200, 5, 1766.73, -5921.46, 116.12, NULL, 0, 0, 0, 100, 0), +(12965200, 6, 1772.87, -5923.81, 116.113, NULL, 0, 0, 0, 100, 0), +(12965200, 7, 1779.4, -5926.32, 116.119, NULL, 0, 0, 0, 100, 0), +(12965200, 8, 1785.94, -5928.83, 116.123, NULL, 0, 0, 0, 100, 0), +(12965200, 9, 1797.67, -5933.39, 115.997, NULL, 0, 0, 0, 100, 0), +(12965200, 10, 1785.94, -5928.83, 116.123, NULL, 0, 0, 0, 100, 0), +(12965200, 11, 1779.4, -5926.32, 116.119, NULL, 0, 0, 0, 100, 0), +(12965200, 12, 1772.87, -5923.81, 116.113, NULL, 0, 0, 0, 100, 0), +(12965200, 13, 1766.73, -5921.46, 116.12, NULL, 0, 0, 0, 100, 0), +(12965200, 14, 1760.35, -5934.29, 116.119, NULL, 0, 0, 0, 100, 0), +(12965200, 15, 1757.09, -5940.48, 116.12, NULL, 0, 0, 0, 100, 0), +(12965200, 16, 1752.08, -5949.71, 116.137, NULL, 0, 0, 0, 100, 0), +(12965200, 17, 1750.42, -5952.79, 116.165, NULL, 0, 0, 0, 100, 0), +(12965200, 18, 1747.20, -5958.90, 116.26, NULL, 0, 0, 0, 100, 0); + + +-- SCARLET COMMANDERS + +-- Positions + +UPDATE `creature` SET `position_x` = 1739.78, `position_y` = -5775.24, `position_z` = 116.06, `orientation` = 3.4451 WHERE `guid` = 129646 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1605.68, `position_y` = -5769.41, `position_z` = 116.09, `orientation` = 2.6490 WHERE `guid` = 129648 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1697.03, `position_y` = -5672.62, `position_z` = 100.93, `orientation` = 4.7433 WHERE `guid` = 129651 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1608.16, `position_y` = -5911.04, `position_z` = 116.14, `orientation` = 2.9603 WHERE `guid` = 129640 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1487.00, `position_y` = -5806.24, `position_z` = 131.22, `orientation` = 2.2424 WHERE `guid` = 129657 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1437.52, `position_y` = -5845.08, `position_z` = 131.21, `orientation` = 2.3013 WHERE `guid` = 129654 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1726.44, `position_y` = -5871.98, `position_z` = 116.12, `orientation` = 3.1842 WHERE `guid` = 129655 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1653.99, `position_y` = -5842.91, `position_z` = 116.13, `orientation` = 0.0018 WHERE `guid` = 129639 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1573.61, `position_y` = -5933.74, `position_z` = 119.60, `orientation` = 3.9996 WHERE `guid` = 129653 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1475.07, `position_y` = -6122.79, `position_z` = 116.27, `orientation` = 1.8018 WHERE `guid` = 129643 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1652.36, `position_y` = -5975.49, `position_z` = 132.70, `orientation` = 1.5437 WHERE `guid` = 129656 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1570.41, `position_y` = -5776.94, `position_z` = 117.86, `orientation` = 3.2414 WHERE `guid` = 129638 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1747.20, `position_y` = -5958.90, `position_z` = 116.26, `orientation` = 0.9770 WHERE `guid` = 129652 AND `id1` = 28936; + +-- Wander Distance and Movement Type + +UPDATE `creature` SET `wander_distance` = 0, `MovementType` = 2 WHERE `guid` IN (129646, 129648, 129651, 129640, 129657, 129654, 129655, 129639, 129649, 129653, 129643, 129656, 129638, 129649, 129652) AND `id1` = 28936; +UPDATE `creature` SET `wander_distance` = 0, `MovementType` = 0 WHERE `guid` = 129645 AND `id1` = 28936; + +-- Paths + +DELETE FROM `creature_addon` WHERE (`guid` IN (129646, 129655, 129639, 129648, 129651, 129656, 129638, 129640, 129649, 129653, 129657, 129643, 129654, 129652)); +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(129646, 12964600, 2404, 0, 1, 0, 0, ''), +(129655, 12965500, 2404, 0, 1, 0, 0, ''), +(129639, 12963900, 2404, 0, 1, 0, 0, ''), +(129648, 12964800, 2404, 0, 1, 0, 0, ''), +(129651, 12965100, 2404, 0, 1, 0, 0, ''), +(129656, 12965600, 2404, 0, 1, 0, 0, ''), +(129638, 12963800, 2404, 0, 1, 0, 0, ''), +(129640, 12964000, 2404, 0, 1, 0, 0, ''), +(129649, 12964900, 2404, 0, 1, 0, 0, ''), +(129653, 12965300, 2404, 0, 1, 0, 0, ''), +(129643, 12964300, 2404, 0, 1, 0, 0, ''), +(129657, 12965700, 2404, 0, 1, 0, 0, ''), +(129654, 12965400, 2404, 0, 1, 0, 0, ''), +(129652, 12965200, 2404, 0, 1, 0, 0, ''); + + +-- SCARLET PREACHERS + +-- Positions + +UPDATE `creature` SET `position_x` = 1653.99, `position_y` = -5842.91, `position_z` = 116.13, `orientation` = 0.0018 WHERE `guid` = 129674 AND `id1` = 28939; +UPDATE `creature` SET `position_x` = 1697.03, `position_y` = -5672.62, `position_z` = 100.93, `orientation` = 4.7433 WHERE `guid` = 129675 AND `id1` = 28939; +UPDATE `creature` SET `position_x` = 1605.68, `position_y` = -5769.41, `position_z` = 116.09, `orientation` = 2.6490 WHERE `guid` = 129672 AND `id1` = 28939; +UPDATE `creature` SET `position_x` = 1739.78, `position_y` = -5775.24, `position_z` = 116.06, `orientation` = 3.4451 WHERE `guid` = 129677 AND `id1` = 28939; +UPDATE `creature` SET `position_x` = 1726.44, `position_y` = -5871.98, `position_z` = 116.12, `orientation` = 3.1842 WHERE `guid` = 129673 AND `id1` = 28939; +UPDATE `creature` SET `position_x` = 1573.61, `position_y` = -5933.74, `position_z` = 119.60, `orientation` = 3.9996 WHERE `guid` = 129681 AND `id1` = 28939; +UPDATE `creature` SET `position_x` = 1475.07, `position_y` = -6122.79, `position_z` = 116.27, `orientation` = 1.8018 WHERE `guid` = 129667 AND `id1` = 28939; +UPDATE `creature` SET `position_x` = 1652.36, `position_y` = -5975.49, `position_z` = 132.70, `orientation` = 1.5437 WHERE `guid` = 129678 AND `id1` = 28939; +UPDATE `creature` SET `position_x` = 1570.41, `position_y` = -5776.94, `position_z` = 117.86, `orientation` = 3.2414 WHERE `guid` = 129679 AND `id1` = 28939; +UPDATE `creature` SET `position_x` = 1747.20, `position_y` = -5958.90, `position_z` = 116.26, `orientation` = 0.9770 WHERE `guid` = 129680 AND `id1` = 28939; +UPDATE `creature` SET `position_x` = 1608.16, `position_y` = -5911.04, `position_z` = 116.14, `orientation` = 2.9603 WHERE `guid` = 129671 AND `id1` = 28939; + +-- Wander Distance and Movement Type + +UPDATE `creature` SET `wander_distance` = 0, `MovementType` = 2 WHERE `guid` IN (129674, 129675, 129672, 129677, 129673, 129681, 129667, 129678, 129671, 129679, 129680) AND `id1` = 28939; + + +-- Paths + +DELETE FROM `creature_addon` WHERE (`guid` IN (129677, 129673, 129674, 129672, 129675, 129678, 129679, 129671, 129681, 129667, 129680)); +INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES +(129677, 12964600, 0, 0, 1, 0, 0, ''), +(129673, 12965500, 0, 0, 1, 0, 0, ''), +(129674, 12963900, 0, 0, 1, 0, 0, ''), +(129672, 12964800, 0, 0, 1, 0, 0, ''), +(129675, 12965100, 0, 0, 1, 0, 0, ''), +(129678, 12965600, 0, 0, 1, 0, 0, ''), +(129679, 12963800, 0, 0, 1, 0, 0, ''), +(129671, 12964000, 0, 0, 1, 0, 0, ''), +(129681, 12965300, 0, 0, 1, 0, 0, ''), +(129667, 12964300, 0, 0, 1, 0, 0, ''), +(129680, 12965200, 0, 0, 1, 0, 0, ''); + + +-- SCARLET CRUSADERS + +-- Positions + +UPDATE `creature` SET `position_x` = 1479.81, `position_y` = -5878.11, `position_z` = 132.03, `orientation` = 3.4523 WHERE `guid` = 129723 AND `id1` = 28940; + +-- Wander Distance and Movement Type + +UPDATE `creature` SET `wander_distance` = 5, `MovementType` = 1 WHERE `guid` = 129723 AND `id1` = 28940; +UPDATE `creature` SET `wander_distance` = 0, `MovementType` = 2 WHERE `guid` IN (129702, 129722) AND `id1` = 28940; + +-- Paths + +UPDATE `creature_addon` SET `path_id` = 12970200, `auras` = 52103 WHERE (`guid` IN (129702)); +UPDATE `creature_addon` SET `path_id` = 12972200, `auras` = 52103 WHERE (`guid` IN (129722)); + + +-- SCARLET MARKSMEN + +-- Wander Distance and Movement Type + +UPDATE `creature` SET `wander_distance` = 0, `MovementType` = 2 WHERE `guid` IN (130009, 130014) AND `id1` = 28610; + +-- Paths + +UPDATE `creature_addon` SET `path_id` = 13000900, `auras` = 52103 WHERE (`guid` IN (130009)); +UPDATE `creature_addon` SET `path_id` = 13001400, `auras` = 52103 WHERE (`guid` IN (130014)); + + +-- Random Spawn for Scarlet Commanders/Preachers with Waypoints + +DELETE FROM `pool_template` WHERE (`entry` IN (22346, 22347, 22348, 22349, 22350, 22351, 22352, 22353, 22354, 22355, 22356)); +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(22346, 1, 'Scarlet Commander/Preacher Spawn (1 out 11)'), +(22347, 1, 'Scarlet Commander/Preacher Spawn (2 out 11)'), +(22348, 1, 'Scarlet Commander/Preacher Spawn (3 out 11)'), +(22349, 1, 'Scarlet Commander/Preacher Spawn (4 out 11)'), +(22350, 1, 'Scarlet Commander/Preacher Spawn (5 out 11)'), +(22351, 1, 'Scarlet Commander/Preacher Spawn (6 out 11)'), +(22352, 1, 'Scarlet Commander/Preacher Spawn (7 out 11)'), +(22353, 1, 'Scarlet Commander/Preacher Spawn (8 out 11)'), +(22354, 1, 'Scarlet Commander/Preacher Spawn (9 out 11)'), +(22355, 1, 'Scarlet Commander/Preacher Spawn (10 out 11)'), +(22356, 1, 'Scarlet Commander/Preacher Spawn (11 out 11)'); + + +DELETE FROM `pool_creature` WHERE (`guid` IN (129656, 129678, 129655, 129673, 129639, 129674, 129646, 129677, 129651, 129675, 129648, 129672, 129638, 129679, 129640, 129671, 129653, 129681, 129643, 129667, 129652, 129680)); +INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(129656, 22346, 0, 'Scarlet Commander (28936) (1 out 11)'), +(129678, 22346, 0, 'Scarlet Preacher (28939) (1 out 11)'), + +(129655, 22347, 0, 'Scarlet Commander (28936) (2 out 11)'), +(129673, 22347, 0, 'Scarlet Preacher (28939) (2 out 11)'), + +(129639, 22348, 0, 'Scarlet Commander (28936) (3 out 11)'), +(129674, 22348, 0, 'Scarlet Preacher (28939) (3 out 11)'), + +(129646, 22349, 0, 'Scarlet Commander (28936) (4 out 11)'), +(129677, 22349, 0, 'Scarlet Preacher (28939) (4 out 11)'), + +(129651, 22350, 0, 'Scarlet Commander (28936) (5 out 11)'), +(129675, 22350, 0, 'Scarlet Preacher (28939) (5 out 11)'), + +(129648, 22351, 0, 'Scarlet Commander (28936) (6 out 11)'), +(129672, 22351, 0, 'Scarlet Preacher (28939) (6 out 11)'), + +(129638, 22352, 0, 'Scarlet Commander (28936) (7 out 11)'), +(129679, 22352, 0, 'Scarlet Preacher (28939) (7 out 11)'), + +(129640, 22353, 0, 'Scarlet Commander (28936) (8 out 11)'), +(129671, 22353, 0, 'Scarlet Preacher (28939) (8 out 11)'), + +(129653, 22354, 0, 'Scarlet Commander (28936) (9 out 11)'), +(129681, 22354, 0, 'Scarlet Preacher (28939) (9 out 11)'), + +(129643, 22355, 0, 'Scarlet Commander (28936) (10 out 11)'), +(129667, 22355, 0, 'Scarlet Preacher (28939) (10 out 11)'), + +(129652, 22356, 0, 'Scarlet Commander (28936) (11 out 11)'), +(129680, 22356, 0, 'Scarlet Preacher (28939) (11 out 11)'); diff --git a/data/sql/updates/db_world/2024_12_07_00.sql b/data/sql/updates/db_world/2024_12_07_00.sql new file mode 100644 index 000000000..0f63fe5a3 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_07_00.sql @@ -0,0 +1,15 @@ +-- DB update 2024_12_06_00 -> 2024_12_07_00 +-- Update gameobject 'Lucky Red Envelope' with sniffed values +-- new spawns +DELETE FROM `gameobject` WHERE (`id` IN (180909)) +AND (`guid` IN (165, 166, 167, 168)); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES +(165, 180909, 1, 0, 0, 1, 1, 7946.251953125, -2621.75341796875, 494.15185546875, 6.161012649536132812, 0, 0, -0.06104850769042968, 0.998134791851043701, 120, 255, 1, "", 47720, NULL), +(166, 180909, 1, 0, 0, 1, 1, 7946.6650390625, -2621.123291015625, 494.20648193359375, 2.775068521499633789, 0, 0, 0.983254432678222656, 0.182238012552261352, 120, 255, 1, "", 47720, NULL), +(167, 180909, 1, 0, 0, 1, 1, 7946.77685546875, -2621.55908203125, 494.199432373046875, 3.263772249221801757, 0, 0, -0.99813461303710937, 0.061051756143569946, 120, 255, 1, "", 47720, NULL), +(168, 180909, 1, 0, 0, 1, 1, 7947.23779296875, -2621.350830078125, 494.17816162109375, 3.822272777557373046, 0, 0, -0.94264125823974609, 0.333807557821273803, 120, 255, 1, "", 47720, NULL); + +-- enable all spawns for eventEntry 7 +DELETE FROM `game_event_gameobject` WHERE (`eventEntry` = 7) +AND (`guid` IN (SELECT `guid` FROM `gameobject` WHERE `id` IN (180909))); +INSERT INTO `game_event_gameobject` (SELECT 7, `guid` FROM `gameobject` WHERE `id` IN (180909)); diff --git a/data/sql/updates/db_world/2024_12_07_01.sql b/data/sql/updates/db_world/2024_12_07_01.sql new file mode 100644 index 000000000..58a54a3c0 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_07_01.sql @@ -0,0 +1,12 @@ +-- DB update 2024_12_07_00 -> 2024_12_07_01 +-- Update gameobject 'Starsong Scroll' with sniffed values +-- new spawns +DELETE FROM `gameobject` WHERE (`id` IN (180910)) +AND (`guid` IN (34)); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES +(34, 180910, 1, 0, 0, 1, 1, 7946.6806640625, -2621.326416015625, 494.192718505859375, 5.131268978118896484, 0, 0, -0.54463863372802734, 0.838670849800109863, 120, 255, 1, "", 47720, NULL); + +-- enable all spawns for eventEntry 7 +DELETE FROM `game_event_gameobject` WHERE (`eventEntry` = 7) +AND (`guid` IN (SELECT `guid` FROM `gameobject` WHERE `id` IN (180910))); +INSERT INTO `game_event_gameobject` (SELECT 7, `guid` FROM `gameobject` WHERE `id` IN (180910)); diff --git a/data/sql/updates/db_world/2024_12_07_02.sql b/data/sql/updates/db_world/2024_12_07_02.sql new file mode 100644 index 000000000..dc6fc8f03 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_07_02.sql @@ -0,0 +1,12 @@ +-- DB update 2024_12_07_01 -> 2024_12_07_02 +-- Update gameobject 'DwarvenTableSmall' with sniffed values +-- new spawns +DELETE FROM `gameobject` WHERE (`id` IN (180884)) +AND (`guid` IN (36)); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES +(36, 180884, 0, 0, 0, 1, 1, -4643.95556640625, -952.7752685546875, 501.660858154296875, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 120, 255, 1, "", 47720, NULL); + +-- enable all spawns for eventEntry 7 +DELETE FROM `game_event_gameobject` WHERE (`eventEntry` = 7) +AND (`guid` IN (SELECT `guid` FROM `gameobject` WHERE `id` IN (180884))); +INSERT INTO `game_event_gameobject` (SELECT 7, `guid` FROM `gameobject` WHERE `id` IN (180884)); diff --git a/data/sql/updates/db_world/2024_12_07_03.sql b/data/sql/updates/db_world/2024_12_07_03.sql new file mode 100644 index 000000000..ed2518f87 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_07_03.sql @@ -0,0 +1,13 @@ +-- DB update 2024_12_07_02 -> 2024_12_07_03 +-- Update gameobject 'Boss Fight Altar' with sniffed values +-- new spawns +DELETE FROM `gameobject` WHERE (`id` IN (180875)) +AND (`guid` IN (160, 161)); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`, `Comment`) VALUES +(160, 180875, 1, 0, 0, 1, 1, 7531.74462890625, -2851.106689453125, 457.817230224609375, 2.408554315567016601, 0, 0, 0.933580398559570312, 0.358368009328842163, 120, 255, 1, "", 47720, NULL), +(161, 180875, 1, 0, 0, 1, 1, 7561.2021484375, -2872.201171875, 459.990631103515625, 2.583080768585205078, 0, 0, 0.961260795593261718, 0.275640487670898437, 120, 255, 1, "", 47720, NULL); + +-- enable all spawns for eventEntry 7 +DELETE FROM `game_event_gameobject` WHERE (`eventEntry` = 7) +AND (`guid` IN (SELECT `guid` FROM `gameobject` WHERE `id` IN (180875))); +INSERT INTO `game_event_gameobject` (SELECT 7, `guid` FROM `gameobject` WHERE `id` IN (180875)); diff --git a/data/sql/updates/db_world/2024_12_07_04.sql b/data/sql/updates/db_world/2024_12_07_04.sql new file mode 100644 index 000000000..cbc938231 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_07_04.sql @@ -0,0 +1,9 @@ +-- DB update 2024_12_07_03 -> 2024_12_07_04 +-- improve spawns positions of 180867 `Greater Moonlight Spell Focus` +-- sync these with sniffed spawns of creature 15897 `Large Spotlight` +UPDATE `gameobject` SET `position_x` = 1642.070556640625, `position_y` = 239.8388671875, `position_z` = 62.67490386962890625 WHERE `guid` = 241003 AND `id` = 180867; +UPDATE `gameobject` SET `position_x` = 10150.49609375, `position_y` = 2602.14306640625, `position_z` = 1330.908447265625 WHERE `guid` = 241002 AND `id` = 180867; +UPDATE `gameobject` SET `position_x` = -4017.510986328125, `position_y` = -11837.7255859375, `position_z` = 0.159306332468986511 WHERE `guid` = 241009 AND `id` = 180867; +UPDATE `gameobject` SET `position_x` = 9479.2578125, `position_y` = -7295.2119140625, `position_z` = 14.40949821472167968 WHERE `guid` = 241008 AND `id` = 180867; +UPDATE `gameobject` SET `position_x` = 5821.92236328125, `position_y` = 642.78399658203125, `position_z` = 648.1099853515625 WHERE `guid` = 241007 AND `id` = 180867; +UPDATE `gameobject` SET `position_y` = -2247.21533203125 WHERE `guid` = 241012 AND `id` = 180867; diff --git a/data/sql/updates/db_world/2024_12_08_00.sql b/data/sql/updates/db_world/2024_12_08_00.sql new file mode 100644 index 000000000..488a0d624 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_08_00.sql @@ -0,0 +1,288 @@ +-- DB update 2024_12_07_04 -> 2024_12_08_00 + +-- Delete Unofficial Npcs + +DELETE FROM `creature` WHERE (`id1` = 28610) AND (`guid` IN (130030, 130012, 130010, 130016, 130029, 130033)); +DELETE FROM `creature_addon` WHERE (`guid` IN (130030, 130012, 130010, 130016, 130029, 130033)); + +DELETE FROM `creature` WHERE (`id1` = 28936) AND (`guid` IN (129650)); +DELETE FROM `creature_addon` WHERE (`guid` IN (129650)); + +DELETE FROM `creature` WHERE (`id1` = 28946) AND (`guid` IN (129809, 129810)); +DELETE FROM `creature_addon` WHERE (`guid` IN (129809, 129810)); + + +-- Adding new Npcs + +DELETE FROM `creature` WHERE (`id1` = 28940) AND (`guid` IN (129709, 129724, 129726, 129809, 129810, 129815, 129816, 129817, 129818, 129819, 129820, 129821, 129822, 129827, 129828)); +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 +(129709, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1734.43, -5784.23, 116.172, 0.406355, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129724, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1749.67, -5742.82, 114.931, 3.7556, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129726, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1623.07, -5805.79, 117.111, 1.67552, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129809, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1566.68, -5843.24, 124.486, 0.018112, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129810, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1568.07, -5872.31, 126.611, 2.97082, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129815, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1539.99, -5827.92, 126.968, 0.003454, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129816, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1620.68, -5959.25, 130.031, 4.83092, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129817, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1665, -5941.56, 125.38, 4.69872, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129818, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1532.09, -6093.49, 116.442, 2.7939, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129819, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1451.44, -6018, 116.488, 4.07183, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129820, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1580.83, -5946.55, 120.622, 5.8606, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129821, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1511.32, -5919.43, 132.269, 6.26352, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129822, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1490.2, -5941.34, 132.825, 2.79482, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129827, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1520.09, -5794.53, 129.856, 1.62651, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL), +(129828, 28940, 0, 0, 609, 0, 0, 1, 4, 1, 1729.86, -5913.41, 116.746, 3.49053, 360, 5, 0, 2533, 0, 1, 0, 0, 0, '', 0, 0, NULL); + + +DELETE FROM `creature` WHERE (`id1` = 28610) AND (`guid` IN (129999, 130000, 130010, 130012, 130015, 130016, 130029, 130030, 130033, 130036, 130037, 130039, 130040, 130041, 130223, 130224)); +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 +(129999, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1734.43, -5784.23, 116.172, 0.406355, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130000, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1663.36, -5752.88, 113.99, 3.03396, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130010, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1677.36, -5703.88, 105.353, 2.24203, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130012, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1648.06, -5674.08, 116.467, 3.081, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130015, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1660.21, -5824.9, 116.971, 3.94356, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130016, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1576.75, -5783.07, 118.481, 3.62097, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130029, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1522.65, -5847.58, 131.443, 4.58716, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130030, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1479.81, -5878.11, 132.03, 3.4523, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130033, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1503.04, -6021.4, 117.001, 2.53463, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130036, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1475.8, -5729.39, 131.817, 1.30954, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130037, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1598.54, -5873.95, 118.091, 4.6867, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130039, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1780.26, -5889.16, 116.729, 0.107993, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130040, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1511.32, -5919.43, 132.269, 6.26352, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130041, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1490.2, -5941.34, 132.825, 2.79482, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130223, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1520.09, -5794.53, 129.856, 1.62651, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL), +(130224, 28610, 0, 0, 609, 0, 0, 1, 4, 1, 1729.86, -5913.41, 116.746, 3.49053, 360, 5, 0, 2026, 2041, 1, 0, 0, 0, '', 0, 0, NULL); + + +DELETE FROM `creature` WHERE (`id1` = 28939) AND (`guid` IN (129540, 129541, 129542, 129543, 129548, 129549, 129550, 129551, 129552, 129553, 129554, 129557, 129558, 129559, 129560, 129561, 129539, 129538, 129537, 129536, 129535, 129644, 129650)); +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 +(129540, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1749.67, -5742.82, 114.931, 3.7556, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129541, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1663.36, -5752.88, 113.99, 3.03396, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129542, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1648.06, -5674.08, 116.467, 3.081, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129543, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1677.36, -5703.88, 105.353, 2.24203, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129548, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1623.07, -5805.79, 117.111, 1.67552, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129549, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1660.21, -5824.9, 116.971, 3.94356, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129550, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1576.75, -5783.07, 118.481, 3.62097, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129551, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1522.65, -5847.58, 131.443, 4.58716, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129552, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1479.81, -5878.11, 132.03, 3.4523, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129553, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1503.04, -6021.4, 117.001, 2.53463, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129554, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1475.8, -5729.39, 131.817, 1.30954, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129557, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1598.54, -5873.95, 118.091, 4.6867, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129558, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1780.26, -5889.16, 116.729, 0.107993, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129559, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1566.68, -5843.24, 124.486, 0.018112, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129560, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1568.07, -5872.31, 126.611, 2.97082, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129561, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1539.99, -5827.92, 126.968, 0.003454, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129539, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1620.68, -5959.25, 130.031, 4.83092, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129538, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1665, -5941.56, 125.38, 4.69872, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129537, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1532.09, -6093.49, 116.442, 2.7939, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129536, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1451.44, -6018, 116.488, 4.07183, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129535, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1580.83, -5946.55, 120.622, 5.8606, 360, 5, 0, 1717, 4765, 1, 0, 0, 0, '', 0, 0, NULL), +(129644, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1786.45, -5806.70, 113.72, 0.21385, 360, 0, 0, 1717, 4765, 0, 0, 0, 0, '', 0, 0, NULL), +(129650, 28939, 0, 0, 609, 0, 0, 1, 4, 1, 1805.73, -5937.30, 115.72, 0.3613, 360, 0, 0, 1717, 4765, 0, 0, 0, 0, '', 0, 0, NULL); + + +-- Update positions + +UPDATE `creature` SET `position_x` = 1802.79, `position_y` = -5914.66, `position_z` = 116.15, `orientation` = 6.0555 WHERE `guid` = 130017 AND `id1` = 28610; +UPDATE `creature` SET `position_x` = 1807.15, `position_y` = -5984.17, `position_z` = 116.08, `orientation` = 1.5276 WHERE `guid` = 129641 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1831.41, `position_y` = -5949.47, `position_z` = 116.00, `orientation` = 0.4477 WHERE `guid` = 129642 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1760.93, `position_y` = -5819.50, `position_z` = 116.11, `orientation` = 0.0865 WHERE `guid` = 129645 AND `id1` = 28936; +UPDATE `creature` SET `position_x` = 1780.02, `position_y` = -5797.99, `position_z` = 115.79, `orientation` = 0.06693 WHERE `guid` = 130018 AND `id1` = 28610; +UPDATE `creature` SET `position_x` = 1774.23, `position_y` = -5778.09, `position_z` = 116.67, `orientation` = 5.10919 WHERE `guid` = 130019 AND `id1` = 28610; +UPDATE `creature` SET `position_x` = 1813.46, `position_y` = -5798.06, `position_z` = 116.06, `orientation` = 6.15145 WHERE `guid` = 130027 AND `id1` = 28610; + + +-- Add Waypoints + +DELETE FROM `waypoint_data` WHERE `id` IN (12981300, 12981400); +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES + +(12981300, 1, 1585.32, -5710.3, 121.681, NULL, 0, 0, 0, 100, 0), +(12981300, 2, 1581.37, -5702.54, 121.681, NULL, 0, 0, 0, 100, 0), +(12981300, 3, 1585.08, -5700.96, 123.04, NULL, 0, 0, 0, 100, 0), +(12981300, 4, 1581.93, -5702.5, 121.682, NULL, 0, 0, 0, 100, 0), +(12981300, 5, 1573.53, -5706.46, 121.682, NULL, 0, 0, 0, 100, 0), +(12981300, 6, 1564.8, -5710.51, 121.682, NULL, 0, 0, 0, 100, 0), +(12981300, 7, 1557.25, -5714.21, 121.682, NULL, 0, 0, 0, 100, 0), +(12981300, 8, 1561.1, -5721.96, 121.682, NULL, 0, 0, 0, 100, 0), +(12981300, 9, 1567.68, -5718.7, 121.682, NULL, 0, 0, 0, 100, 0), +(12981300, 10, 1575.49, -5714.84, 121.682, NULL, 0, 0, 0, 100, 0), +(12981300, 11, 1578.94, -5713.27, 121.78, NULL, 0, 0, 0, 100, 0), + +(12981400, 1, 1601.89, -5753.35, 119.255, NULL, 0, 0, 0, 100, 0), +(12981400, 2, 1595.51, -5741.11, 119.235, NULL, 0, 0, 0, 100, 0), +(12981400, 3, 1592.99, -5735.69, 121.679, NULL, 0, 0, 0, 100, 0), +(12981400, 4, 1591.42, -5732.56, 121.679, NULL, 0, 0, 0, 100, 0), +(12981400, 5, 1586.49, -5722.84, 121.679, NULL, 0, 0, 0, 100, 0), +(12981400, 6, 1580.38, -5722.36, 121.68, NULL, 0, 0, 0, 100, 0), +(12981400, 7, 1577.53, -5723.89, 120.786, NULL, 0, 0, 0, 100, 0), +(12981400, 8, 1572.46, -5726.39, 120.779, NULL, 0, 0, 0, 100, 0), +(12981400, 9, 1571.4, -5724.31, 120.78, NULL, 0, 0, 0, 100, 0), +(12981400, 10, 1570.38, -5722.27, 121.681, NULL, 0, 0, 0, 100, 0), +(12981400, 11, 1564.72, -5710.61, 121.681, NULL, 0, 0, 0, 100, 0), +(12981400, 12, 1569.95, -5708.03, 121.681, NULL, 0, 0, 0, 100, 0), +(12981400, 13, 1576.13, -5705.05, 121.681, NULL, 0, 0, 0, 100, 0), +(12981400, 14, 1580.03, -5703.18, 121.681, NULL, 0, 0, 0, 100, 0), +(12981400, 15, 1576.13, -5705.05, 121.681, NULL, 0, 0, 0, 100, 0), +(12981400, 16, 1569.95, -5708.03, 121.681, NULL, 0, 0, 0, 100, 0), +(12981400, 17, 1564.72, -5710.61, 121.681, NULL, 0, 0, 0, 100, 0), +(12981400, 18, 1570.38, -5722.27, 121.681, NULL, 0, 0, 0, 100, 0), +(12981400, 19, 1571.4, -5724.31, 120.78, NULL, 0, 0, 0, 100, 0), +(12981400, 20, 1572.46, -5726.39, 120.779, NULL, 0, 0, 0, 100, 0), +(12981400, 21, 1577.53, -5723.89, 120.786, NULL, 0, 0, 0, 100, 0), +(12981400, 22, 1580.38, -5722.36, 121.68, NULL, 0, 0, 0, 100, 0), +(12981400, 23, 1586.49, -5722.84, 121.679, NULL, 0, 0, 0, 100, 0), +(12981400, 24, 1591.42, -5732.56, 121.679, NULL, 0, 0, 0, 100, 0), +(12981400, 25, 1592.99, -5735.69, 121.679, NULL, 0, 0, 0, 100, 0), +(12981400, 26, 1595.51, -5741.11, 119.235, NULL, 0, 0, 0, 100, 0), +(12981400, 27, 1601.89, -5753.35, 119.255, NULL, 0, 0, 0, 100, 0); + + +-- Set Creature wander distance and movement type + +UPDATE `creature` SET `wander_distance` = 5, `MovementType` = 1 WHERE `guid` = 130019 AND `id1` = 28610; +UPDATE `creature` SET `wander_distance` = 0, `MovementType` = 2 WHERE `guid` IN (129813, 129814) AND `id1` = 28946; + +-- Update path IDs. + +UPDATE `creature_addon` SET `path_id` = 12981300 WHERE (`guid` IN (129813)); +UPDATE `creature_addon` SET `path_id` = 12981400 WHERE (`guid` IN (129814)); + + +-- Spawn Groups + +DELETE FROM `pool_template` WHERE (`entry` IN (22357, 22358, 22359, 22360, 22361, 22362, 22363, 22364, 22365, 22366, 22367, 22368, 22369, 22370, 22371, 22372, 22373, 22374, 22375, 22376, 22377, 22378, 22379, 22380, 22381, 22382)); +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(22357, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (1 out 26)'), +(22358, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (2 out 26)'), +(22359, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (3 out 26)'), +(22360, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (4 out 26)'), +(22361, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (5 out 26)'), +(22362, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (6 out 26)'), +(22363, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (7 out 26)'), +(22364, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (8 out 26)'), +(22365, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (9 out 26)'), +(22366, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (10 out 26)'), +(22367, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (11 out 26)'), +(22368, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (12 out 26)'), +(22369, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (13 out 26)'), +(22370, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (14 out 26)'), +(22371, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (15 out 26)'), +(22372, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (16 out 26)'), +(22373, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (17 out 26)'), +(22374, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (18 out 26)'), +(22375, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (19 out 26)'), +(22376, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (20 out 26)'), +(22377, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (21 out 26)'), +(22378, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (22 out 26)'), +(22379, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (23 out 26)'), +(22380, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (24 out 26)'), +(22381, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (25 out 26)'), +(22382, 1, 'Scarlet Crusader/Preacher/Marksman Spawn (26 out 26)'); + + + +DELETE FROM `pool_creature` WHERE (`pool_entry` IN (22357, 22358, 22359, 22360, 22361, 22362, 22363, 22364, 22365, 22366, 22367, 22368, 22369, 22370, 22371, 22372, 22373, 22374, 22375, 22376, 22377, 22378, 22379, 22380, 22381, 22382)); +INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(129558, 22357, 0, 'Scarlet Preacher (28939) (1 out 26)'), +(129693, 22357, 0, 'Scarlet Crusader (28940) (1 out 26)'), +(130039, 22357, 0, 'Scarlet Marksman (28610) (1 out 26)'), + +(129676, 22358, 0, 'Scarlet Preacher (28939) (2 out 26)'), +(129709, 22358, 0, 'Scarlet Crusader (28940) (2 out 26)'), +(129999, 22358, 0, 'Scarlet Marksman (28610) (2 out 26)'), + +(129540, 22359, 0, 'Scarlet Preacher (28939) (3 out 26)'), +(129724, 22359, 0, 'Scarlet Crusader (28940) (3 out 26)'), +(130023, 22359, 0, 'Scarlet Marksman (28610) (3 out 26)'), + +(129541, 22360, 0, 'Scarlet Preacher (28939) (4 out 26)'), +(129692, 22360, 0, 'Scarlet Crusader (28940) (4 out 26)'), +(130000, 22360, 0, 'Scarlet Marksman (28610) (4 out 26)'), + +(129543, 22361, 0, 'Scarlet Preacher (28939) (5 out 26)'), +(129687, 22361, 0, 'Scarlet Crusader (28940) (5 out 26)'), +(130010, 22361, 0, 'Scarlet Marksman (28610) (5 out 26)'), + +(129542, 22362, 0, 'Scarlet Preacher (28939) (6 out 26)'), +(129684, 22362, 0, 'Scarlet Crusader (28940) (6 out 26)'), +(130012, 22362, 0, 'Scarlet Marksman (28610) (6 out 26)'), + +(129548, 22363, 0, 'Scarlet Preacher (28939) (7 out 26)'), +(129726, 22363, 0, 'Scarlet Crusader (28940) (7 out 26)'), +(130021, 22363, 0, 'Scarlet Marksman (28610) (7 out 26)'), + +(129550, 22364, 0, 'Scarlet Preacher (28939) (8 out 26)'), +(129686, 22364, 0, 'Scarlet Crusader (28940) (8 out 26)'), +(130016, 22364, 0, 'Scarlet Marksman (28610) (8 out 26)'), + +(129549, 22365, 0, 'Scarlet Preacher (28939) (9 out 26)'), +(129725, 22365, 0, 'Scarlet Crusader (28940) (9 out 26)'), +(130015, 22365, 0, 'Scarlet Marksman (28610) (9 out 26)'), + +(129554, 22366, 0, 'Scarlet Preacher (28939) (10 out 26)'), +(129685, 22366, 0, 'Scarlet Crusader (28940) (10 out 26)'), +(130036, 22366, 0, 'Scarlet Marksman (28610) (10 out 26)'), + +(129665, 22367, 0, 'Scarlet Preacher (28939) (11 out 26)'), +(129827, 22367, 0, 'Scarlet Crusader (28940) (11 out 26)'), +(130223, 22367, 0, 'Scarlet Marksman (28610) (11 out 26)'), + +(129561, 22368, 0, 'Scarlet Preacher (28939) (12 out 26)'), +(129815, 22368, 0, 'Scarlet Crusader (28940) (12 out 26)'), +(130003, 22368, 0, 'Scarlet Marksman (28610) (12 out 26)'), + +(129559, 22369, 0, 'Scarlet Preacher (28939) (13 out 26)'), +(129809, 22369, 0, 'Scarlet Crusader (28940) (13 out 26)'), +(130020, 22369, 0, 'Scarlet Marksman (28610) (13 out 26)'), + +(129560, 22370, 0, 'Scarlet Preacher (28939) (14 out 26)'), +(129810, 22370, 0, 'Scarlet Crusader (28940) (14 out 26)'), +(130006, 22370, 0, 'Scarlet Marksman (28610) (14 out 26)'), + +(129551, 22371, 0, 'Scarlet Preacher (28939) (15 out 26)'), +(129694, 22371, 0, 'Scarlet Crusader (28940) (15 out 26)'), +(130029, 22371, 0, 'Scarlet Marksman (28610) (15 out 26)'), + +(129552, 22372, 0, 'Scarlet Preacher (28939) (16 out 26)'), +(129723, 22372, 0, 'Scarlet Crusader (28940) (16 out 26)'), +(130030, 22372, 0, 'Scarlet Marksman (28610) (16 out 26)'), + +(129669, 22373, 0, 'Scarlet Preacher (28939) (17 out 26)'), +(129821, 22373, 0, 'Scarlet Crusader (28940) (17 out 26)'), +(130040, 22373, 0, 'Scarlet Marksman (28610) (17 out 26)'), + +(129666, 22374, 0, 'Scarlet Preacher (28939) (18 out 26)'), +(129822, 22374, 0, 'Scarlet Crusader (28940) (18 out 26)'), +(130041, 22374, 0, 'Scarlet Marksman (28610) (18 out 26)'), + +(129557, 22375, 0, 'Scarlet Preacher (28939) (19 out 26)'), +(129710, 22375, 0, 'Scarlet Crusader (28940) (19 out 26)'), +(130037, 22375, 0, 'Scarlet Marksman (28610) (19 out 26)'), + +(129670, 22376, 0, 'Scarlet Preacher (28939) (20 out 26)'), +(129828, 22376, 0, 'Scarlet Crusader (28940) (20 out 26)'), +(130224, 22376, 0, 'Scarlet Marksman (28610) (20 out 26)'), + +(129538, 22377, 0, 'Scarlet Preacher (28939) (21 out 26)'), +(129817, 22377, 0, 'Scarlet Crusader (28940) (21 out 26)'), +(130024, 22377, 0, 'Scarlet Marksman (28610) (21 out 26)'), + +(129539, 22378, 0, 'Scarlet Preacher (28939) (22 out 26)'), +(129816, 22378, 0, 'Scarlet Crusader (28940) (22 out 26)'), +(130008, 22378, 0, 'Scarlet Marksman (28610) (22 out 26)'), + +(129535, 22379, 0, 'Scarlet Preacher (28939) (23 out 26)'), +(129820, 22379, 0, 'Scarlet Crusader (28940) (23 out 26)'), +(130005, 22379, 0, 'Scarlet Marksman (28610) (23 out 26)'), + +(129553, 22380, 0, 'Scarlet Preacher (28939) (24 out 26)'), +(129691, 22380, 0, 'Scarlet Crusader (28940) (24 out 26)'), +(130033, 22380, 0, 'Scarlet Marksman (28610) (24 out 26)'), + +(129536, 22381, 0, 'Scarlet Preacher (28939) (25 out 26)'), +(129819, 22381, 0, 'Scarlet Crusader (28940) (25 out 26)'), +(130011, 22381, 0, 'Scarlet Marksman (28610) (25 out 26)'), + +(129537, 22382, 0, 'Scarlet Preacher (28939) (26 out 26)'), +(129818, 22382, 0, 'Scarlet Crusader (28940) (26 out 26)'), +(130004, 22382, 0, 'Scarlet Marksman (28610) (26 out 26)'); diff --git a/data/sql/updates/db_world/2024_12_08_01.sql b/data/sql/updates/db_world/2024_12_08_01.sql new file mode 100644 index 000000000..14c41620f --- /dev/null +++ b/data/sql/updates/db_world/2024_12_08_01.sql @@ -0,0 +1,6 @@ +-- DB update 2024_12_08_00 -> 2024_12_08_01 + +-- Change Z position for two Silt Crawlers. + +UPDATE `creature` SET `position_z` = -2.316132 WHERE `guid` = 34158; +UPDATE `creature` SET `position_z` = -2.4465983 WHERE `guid` = 32692; diff --git a/data/sql/updates/db_world/2024_12_08_02.sql b/data/sql/updates/db_world/2024_12_08_02.sql new file mode 100644 index 000000000..26761bdd3 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_08_02.sql @@ -0,0 +1,70 @@ +-- DB update 2024_12_08_01 -> 2024_12_08_02 +-- Update creature 'Lunar - Revelers' with sniffed values +-- updated spawns +DELETE FROM `creature` WHERE (`id1` IN (15905, 15908, 15694, 15907, 15719, 15906)) +AND (`guid` IN (91639, 91640, 91642, 91644, 91646, 91648, 91651, 91652, 91653, 91654, 91655, 91656, 91657, 91658, 91659, 91661, 91662, 91663, 91664, 91665, 91666, 91668, 91669, 91670, 91671, 91672, 91673, 91674, 91675, 91676)); +INSERT INTO `creature` (`guid`, `id1`, `map`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`, `CreateObject`, `Comment`) VALUES +(91639, 15905, 1, 1, 1, 1, 7607.189453125, -2229.43603515625, 468.269012451171875, 1.099557399749755859, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91640, 15908, 1, 1, 1, 1, 7598.31103515625, -2251.260986328125, 467.361785888671875, 1.326450228691101074, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91642, 15905, 1, 1, 1, 1, 7610.34375, -2232.98388671875, 467.60992431640625, 0.314159274101257324, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91644, 15694, 1, 1, 1, 1, 7583.0634765625, -2208.437744140625, 474.48895263671875, 2.059488534927368164, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91646, 15905, 1, 1, 1, 1, 7613.6796875, -2226.41259765625, 469.712188720703125, 1.640609502792358398, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91648, 15907, 1, 1, 1, 1, 7575.9443359375, -2234.723876953125, 471.16571044921875, 3.59537816047668457, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91651, 15719, 1, 1, 1, 1, 7603.09130859375, -2215.731689453125, 470.81268310546875, 0.750491559505462646, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91652, 15905, 1, 1, 1, 1, 7609.15185546875, -2225.593017578125, 469.877349853515625, 4.188790321350097656, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91653, 15907, 1, 1, 1, 1, 7577.27197265625, -2241.345458984375, 469.360626220703125, 1.221730470657348632, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91654, 15906, 1, 1, 1, 1, 7566.17724609375, -2220.197265625, 473.45709228515625, 0.92502450942993164, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91655, 15694, 1, 1, 1, 1, 7588.72509765625, -2203.75146484375, 475.703125, 4.485496044158935546, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91656, 15908, 1, 1, 1, 1, 7591.39306640625, -2245.126708984375, 467.384674072265625, 0.645771801471710205, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91657, 15719, 1, 1, 1, 1, 7607.03466796875, -2212.24853515625, 470.957275390625, 3.787364482879638671, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91658, 15905, 1, 1, 1, 1, 7614.68408203125, -2231.25830078125, 468.27105712890625, 3.543018341064453125, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91659, 15907, 1, 1, 1, 1, 7572.57275390625, -2240.8525390625, 468.8511962890625, 3.822271108627319335, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91661, 15719, 1, 1, 1, 1, 7598.59912109375, -2213.036376953125, 471.369476318359375, 1.48352980613708496, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91662, 15719, 1, 1, 1, 1, 7599.17431640625, -2208.4140625, 473.57928466796875, 4.590215682983398437, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91663, 15694, 1, 1, 1, 1, 7585, -2201.843017578125, 476.0362548828125, 1.710422635078430175, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91664, 15694, 1, 1, 1, 1, 7581.10009765625, -2204.703125, 475.24853515625, 5.16617441177368164, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91665, 15906, 1, 1, 1, 1, 7568.5556640625, -2224.178466796875, 472.862579345703125, 4.031710624694824218, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91666, 15908, 1, 1, 1, 1, 7599.74755859375, -2244.755126953125, 467.982666015625, 4.555309295654296875, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91668, 15906, 1, 1, 1, 1, 7573.8974609375, -2222.974853515625, 473.304473876953125, 1.640609502792358398, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91669, 15694, 1, 1, 1, 1, 7587.7109375, -2208.04296875, 474.678497314453125, 1.326450228691101074, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91670, 15908, 1, 1, 1, 1, 7596.34814453125, -2241.304443359375, 467.41064453125, 3.857177734375, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91671, 15906, 1, 1, 1, 1, 7573.52880859375, -2217.985595703125, 473.9293212890625, 4.86946868896484375, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91672, 15906, 1, 1, 1, 1, 7568.87158203125, -2216.70361328125, 474.082763671875, 4.049163818359375, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91673, 15907, 1, 1, 1, 1, 7578.69970703125, -2237.170654296875, 470.803497314453125, 4.468042850494384765, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91674, 15908, 1, 1, 1, 1, 7592.76416015625, -2251.52099609375, 465.84228515625, 4.363323211669921875, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91675, 15907, 1, 1, 1, 1, 7572.26806640625, -2236.659423828125, 470.207000732421875, 0.471238881349563598, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL), +(91676, 15719, 1, 1, 1, 1, 7604.9931640625, -2207.93212890625, 472.6412353515625, 1.047197580337524414, 120, 0, 0, 0, 0, 0, "", 47720, 1, NULL); + +DELETE FROM `game_event_creature` WHERE (`eventEntry` = 7) +AND (`guid` IN (91639, 91640, 91642, 91644, 91646, 91648, 91651, 91652, 91653, 91654, 91655, 91656, 91657, 91658, 91659, 91661, 91662, 91663, 91664, 91665, 91666, 91668, 91669, 91670, 91671, 91672, 91673, 91674, 91675, 91676)); +INSERT INTO `game_event_creature` (`eventEntry`,`guid`) VALUES +(7, 91639), +(7, 91640), +(7, 91642), +(7, 91644), +(7, 91646), +(7, 91648), +(7, 91651), +(7, 91652), +(7, 91653), +(7, 91654), +(7, 91655), +(7, 91656), +(7, 91657), +(7, 91658), +(7, 91659), +(7, 91661), +(7, 91662), +(7, 91663), +(7, 91664), +(7, 91665), +(7, 91666), +(7, 91668), +(7, 91669), +(7, 91670), +(7, 91671), +(7, 91672), +(7, 91673), +(7, 91674), +(7, 91675), +(7, 91676); diff --git a/data/sql/updates/db_world/2024_12_09_00.sql b/data/sql/updates/db_world/2024_12_09_00.sql new file mode 100644 index 000000000..4b0f7f3e5 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_09_00.sql @@ -0,0 +1,4 @@ +-- DB update 2024_12_08_02 -> 2024_12_09_00 +-- +-- Removed the requirement of the player needing to have Blacksmithing to Interact with her +UPDATE `creature_template` SET `trainer_spell` = 0 WHERE (`entry` = 29505); diff --git a/data/sql/updates/db_world/2024_12_10_00.sql b/data/sql/updates/db_world/2024_12_10_00.sql new file mode 100644 index 000000000..37b1d0c89 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_10_00.sql @@ -0,0 +1,7 @@ +-- DB update 2024_12_09_00 -> 2024_12_10_00 + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE (`entry` = 24159); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 24159); +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 +(24159, 0, 0, 0, 0, 0, 100, 0, 4000, 7000, 4000, 7000, 0, 0, 11, 43517, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Amani Eagle - In Combat - Cast \'Talon\''); diff --git a/data/sql/updates/db_world/2024_12_10_01.sql b/data/sql/updates/db_world/2024_12_10_01.sql new file mode 100644 index 000000000..965c8896f --- /dev/null +++ b/data/sql/updates/db_world/2024_12_10_01.sql @@ -0,0 +1,22 @@ +-- DB update 2024_12_10_00 -> 2024_12_10_01 +SET @TOKENENTRY := 1276883; + +DELETE FROM `creature_loot_template` WHERE (`Entry` = 22917); + +DELETE FROM `reference_loot_template` WHERE (`Entry` = 34077 AND `Item` IN (31089,31090,31091)) OR `Entry` = @TOKENENTRY; + +INSERT INTO `reference_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(@TOKENENTRY, 31089, 0, 0, 0, 1, 1, 1, 1, 'Chestguard of the Forgotten Conqueror'), +(@TOKENENTRY, 31090, 0, 0, 0, 1, 1, 1, 1, 'Chestguard of the Forgotten Vanquisher'), +(@TOKENENTRY, 31091, 0, 0, 0, 1, 1, 1, 1, 'Chestguard of the Forgotten Protector'); + +UPDATE `reference_loot_template` SET `GroupId` = 1 WHERE `Entry` = 34077; + +INSERT INTO `creature_loot_template` (`Entry`, `Item`, `Reference`, `Chance`, `QuestRequired`, `LootMode`, `GroupId`, `MinCount`, `MaxCount`, `Comment`) VALUES +(22917, 29434, 0, 100, 0, 1, 0, 2, 2, 'Illidan Stormrage - Badge of Justice'), +(22917, 32837, 0, 5, 0, 1, 1, 1, 1, 'Illidan Stormrage - Warglaive of Azzinoth'), +(22917, 32838, 0, 5, 0, 1, 2, 1, 1, 'Illidan Stormrage - Warglaive of Azzinoth'), +(22917, 34069, 34069, 2, 0, 1, 2, 1, 1, 'Illidan Stormrage - (Patterns)'), +(22917, 34077, 34077, 100, 0, 1, 1, 2, 2, 'Illidan Stormrage - (Items)'), +(22917, 90069, 34069, 10, 0, 1, 1, 1, 1, 'Illidan Stormrage - (Patterns)'), +(22917, 90077, @TOKENENTRY, 100, 0, 1, 1, 3, 3, 'Illidan Stormrage - (Tokens)'); diff --git a/data/sql/updates/db_world/2024_12_10_02.sql b/data/sql/updates/db_world/2024_12_10_02.sql new file mode 100644 index 000000000..52acc54d2 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_10_02.sql @@ -0,0 +1,104 @@ +-- DB update 2024_12_10_01 -> 2024_12_10_02 + +-- Delete/Cleaning Npcs + +DELETE FROM `creature` WHERE (`id1` = 28607) AND (`guid` IN (129247)); +DELETE FROM `creature_addon` WHERE (`guid` IN (129247)); + + +-- Havenshire Stallion spawn point + +UPDATE `creature` SET `position_x` = 2195.9116, `position_y` = -5858.604, `position_z` = 101.32708, `orientation` = 3.7085388 WHERE `guid` = 129215 AND `id1` = 28605; +UPDATE `creature` SET `position_x` = 2199.2192, `position_y` = -5850.0396, `position_z` = 101.36801, `orientation` = 4.9723105 WHERE `guid` = 129214 AND `id1` = 28605; + + +-- Havenshire Mare spawn point + +UPDATE `creature` SET `position_x` = 2204.0552, `position_y` = -5854.607, `position_z` = 101.6112, `orientation` = 4.917175 WHERE `guid` = 129236 AND `id1` = 28606; +UPDATE `creature` SET `position_x` = 2206.8572, `position_y` = -5848.667, `position_z` = 101.39461, `orientation` = 4.941651 WHERE `guid` = 129235 AND `id1` = 28606; + + +-- Havenshire Colts spawn point + +UPDATE `creature` SET `position_x` = 2207.5293, `position_y` = -5852.516, `position_z` = 101.384766, `orientation` = 4.913268 WHERE `guid` = 129246 AND `id1` = 28607; +UPDATE `creature` SET `position_x` = 2200.4082, `position_y` = -5853.1797, `position_z` = 101.39033, `orientation` = 5.2745533 WHERE `guid` = 129249 AND `id1` = 28607; +UPDATE `creature` SET `position_x` = 2203.335, `position_y` = -5849.832, `position_z` = 101.40138, `orientation` = 4.9533725 WHERE `guid` = 129251 AND `id1` = 28607; +UPDATE `creature` SET `position_x` = 2205.8127, `position_y` = -5844.881, `position_z` = 101.527245, `orientation` = 4.8709197 WHERE `guid` = 129248 AND `id1` = 28607; +UPDATE `creature` SET `position_x` = 2198.61, `position_y` = -5846.52, `position_z` = 101.70071, `orientation` = 5.0044303 WHERE `guid` = 129245 AND `id1` = 28607; + + +-- Waypoints (Sniffed) + +DELETE FROM `waypoint_data` WHERE `id` IN (12921500); +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`, `move_type`, `action`, `action_chance`, `wpguid`) VALUES +(12921500, 1, 2181.8208, -5866.014, 101.38311, NULL, 0, 1, 0, 100, 0), +(12921500, 2, 2163.5708, -5871.264, 101.38311, NULL, 0, 1, 0, 100, 0), +(12921500, 3, 2156.404, -5873.486, 101.35129, NULL, 0, 1, 0, 100, 0), +(12921500, 4, 2140.0742, -5877.82, 101.841995, NULL, 0, 1, 0, 100, 0), +(12921500, 5, 2118.6294, -5903.7754, 104.6409, NULL, 0, 1, 0, 100, 0), +(12921500, 6, 2080.034, -5913.223, 106.414085, NULL, 0, 1, 0, 100, 0), +(12921500, 7, 2009.6409, -5923.7266, 105.32761, NULL, 0, 1, 0, 100, 0), +(12921500, 8, 1970.5721, -5935.1025, 102.947174, NULL, 0, 1, 0, 100, 0), +(12921500, 9, 1895.7273, -5921.091, 103.54128, NULL, 0, 1, 0, 100, 0), +(12921500, 10, 1842.2395, -5917.941, 107.21487, NULL, 0, 1, 0, 100, 0), +(12921500, 11, 1781.0726, -5925.415, 116.29511, NULL, 0, 1, 0, 100, 0), +(12921500, 12, 1742.219, -5908.065, 116.12137, NULL, 0, 1, 0, 100, 0); + + +-- Creature Formation + +DELETE FROM `creature_formations` WHERE `leaderGUID` = 129215; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(129215, 129215, 0, 0, 512, 0, 0), +(129215, 129214, 4, 140, 512, 0, 0), +(129215, 129236, 5, 160, 512, 0, 0), +(129215, 129235, 6, 180, 512, 0, 0), +(129215, 129246, 7, 200, 512, 0, 0), +(129215, 129249, 8, 180, 512, 0, 0), +(129215, 129251, 7, 160, 512, 0, 0), +(129215, 129248, 6, 140, 512, 0, 0), +(129215, 129245, 5, 120, 512, 0, 0); + + +-- Spawn Groups + +DELETE FROM `pool_template` WHERE (`entry` IN (22383)); +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(22383, 6, 'Havenshire Stallions/Mares/Colts (1 out 1)'); + +DELETE FROM `pool_creature` WHERE (`pool_entry` IN (22383)); +INSERT INTO `pool_creature` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(129214, 22383, 0, 'Havenshire Stallion (28605)'), +(129236, 22383, 0, 'Havenshire Mare (28606)'), +(129235, 22383, 0, 'Havenshire Mare (28606)'), +(129251, 22383, 0, 'Havenshire Colt (28607)'), +(129246, 22383, 0, 'Havenshire Colt (28607)'), +(129249, 22383, 0, 'Havenshire Colt (28607)'), +(129248, 22383, 0, 'Havenshire Colt (28607)'), +(129245, 22383, 0, 'Havenshire Colt (28607)'); + + +-- Set SmartAI for Havenshire Stallion + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE (`entry` = 28605); + + +-- Comment + +UPDATE `creature` SET `Comment` = "has guid specific SAI" WHERE (`id1` = 28605) AND (`guid` IN (129215)); + + +-- DBGuid SmartAI + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = -129215); +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 +(-129215, 0, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 232, 12921500, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Respawn - Start Path 12921500'), +(-129215, 0, 1, 2, 109, 0, 100, 0, 0, 12921500, 0, 0, 0, 0, 41, 2000, 60, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129236, 28606, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129246, 28607, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129249, 28607, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 5, 6, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129251, 28607, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 6, 7, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129248, 28607, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 7, 8, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129245, 28607, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 8, 9, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129214, 28605, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'), +(-129215, 0, 9, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 41, 2000, 62, 0, 0, 0, 0, 10, 129235, 28606, 0, 0, 0, 0, 0, 0, 'Havenshire Stallion - On Path 12921500 Finished - Despawn In 2000 ms'); diff --git a/data/sql/updates/db_world/2024_12_11_00.sql b/data/sql/updates/db_world/2024_12_11_00.sql new file mode 100644 index 000000000..9b7cd0dc8 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_11_00.sql @@ -0,0 +1,3 @@ +-- DB update 2024_12_10_02 -> 2024_12_11_00 +-- +UPDATE `creature_template` SET `mechanic_immune_mask` = `mechanic_immune_mask`|16|2048, `flags_extra` = `flags_extra`|256 WHERE `entry` = 24549; diff --git a/data/sql/updates/db_world/2024_12_12_00.sql b/data/sql/updates/db_world/2024_12_12_00.sql new file mode 100644 index 000000000..6875de293 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_12_00.sql @@ -0,0 +1,3 @@ +-- DB update 2024_12_11_00 -> 2024_12_12_00 +-- +UPDATE `creature_template` SET `flags_extra` = `flags_extra`|2147483648 WHERE `entry` IN (23574, 23578, 24239); diff --git a/data/sql/updates/db_world/2024_12_12_01.sql b/data/sql/updates/db_world/2024_12_12_01.sql new file mode 100644 index 000000000..b5ac80a31 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_12_01.sql @@ -0,0 +1,10 @@ +-- DB update 2024_12_12_00 -> 2024_12_12_01 +-- +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 23580); +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 +(23580, 0, 0, 1, 2, 0, 100, 1, 30, 30, 0, 0, 0, 0, 11, 43274, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Amani\'shi Warbringer - Between 30-30% Health - Cast \'Dismount Bear\' (No Repeat)'), +(23580, 0, 1, 2, 61, 0, 100, 512, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Amani\'shi Warbringer - Between 0-19% Health - Set Flag Standstate Stand Up (No Repeat)'), +(23580, 0, 2, 3, 61, 0, 100, 3, 0, 0, 0, 0, 0, 0, 11, 40743, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Amani\'shi Warbringer - Between 0-30% Health - Cast \'Frenzy\' (No Repeat)'), +(23580, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 206, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Amani\'shi Warbringer - Between 30-30% Health - Dismount'), +(23580, 0, 4, 0, 0, 0, 100, 2, 0, 0, 12000, 12000, 0, 0, 11, 43273, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Amani\'shi Warbringer - In Combat - Cast \'Cleave\' (No Repeat)'), +(23580, 0, 5, 0, 0, 0, 100, 2, 5000, 5000, 20000, 20000, 0, 0, 11, 42496, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Amani\'shi Warbringer - In Combat - Cast \'Furious Roar\' (No Repeat)'); diff --git a/data/sql/updates/db_world/2024_12_12_02.sql b/data/sql/updates/db_world/2024_12_12_02.sql new file mode 100644 index 000000000..c173d4da9 --- /dev/null +++ b/data/sql/updates/db_world/2024_12_12_02.sql @@ -0,0 +1,3 @@ +-- DB update 2024_12_12_01 -> 2024_12_12_02 +-- +UPDATE `conditions` SET `Comment` = 'Player must have aura Lance Equipped' WHERE (`SourceTypeOrReferenceId` = 16) AND (`SourceGroup` = 0) AND (`SourceEntry` IN (35644, 36588)) AND (`ConditionValue1` = 62853); diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index a58df3c33..235cc5148 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -2165,6 +2165,21 @@ NoResetTalentsCost = 0 ToggleXP.Cost = 100000 +# +# SpellQueue.Enabled +# Description: Enable SpellQueue. +# Default: 0 - (Disabled) +# 1 - (Enabled) + +SpellQueue.Enabled = 1 + +# +# SpellQueue.Window +# Description: Time (in milliseconds) for spells to be queued. +# Default: 400 - (400ms) + +SpellQueue.Window = 400 + # ################################################################################################### diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 7f4b8e996..e5d77ca4f 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -2605,6 +2605,13 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u ProcessEventsFor((SMART_EVENT)SMART_EVENT_TIMED_EVENT_TRIGGERED, nullptr, eventId); break; } + case SMART_ACTION_DISMOUNT: + { + for (WorldObject* const target : targets) + if (IsUnit(target)) + target->ToUnit()->Dismount(); + break; + } case SMART_ACTION_SET_HOVER: { for (WorldObject* target : targets) diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 4544f73c8..ab81002ea 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -2015,6 +2015,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) case SMART_ACTION_FLEE: case SMART_ACTION_ADD_THREAT: case SMART_ACTION_TRIGGER_RANDOM_TIMED_EVENT: + case SMART_ACTION_DISMOUNT: case SMART_ACTION_SET_HOVER: case SMART_ACTION_ADD_IMMUNITY: case SMART_ACTION_REMOVE_IMMUNITY: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 3a31acbcf..7ca18d2f6 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -705,7 +705,7 @@ enum SMART_ACTION SMART_ACTION_EXIT_VEHICLE = 203, // none SMART_ACTION_SET_UNIT_MOVEMENT_FLAGS = 204, // flags SMART_ACTION_SET_COMBAT_DISTANCE = 205, // combatDistance - // UNUSED = 206, + SMART_ACTION_DISMOUNT = 206, SMART_ACTION_SET_HOVER = 207, // 0/1 SMART_ACTION_ADD_IMMUNITY = 208, // type, id, value SMART_ACTION_REMOVE_IMMUNITY = 209, // type, id, value diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 5cf90d71a..163e390f2 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -446,6 +446,8 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u void GameObject::Update(uint32 diff) { + WorldObject::Update(diff); + if (AI()) AI()->UpdateAI(diff); else if (!AIM_Initialize()) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index b37efedca..317b3441c 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1050,7 +1050,7 @@ void MovementInfo::OutDebug() WorldObject::WorldObject(bool isWorldObject) : WorldLocation(), LastUsedScriptID(0), m_name(""), m_isActive(false), m_visibilityDistanceOverride(), m_isWorldObject(isWorldObject), m_zoneScript(nullptr), _zoneId(0), _areaId(0), _floorZ(INVALID_HEIGHT), _outdoors(false), _liquidData(), _updatePositionData(false), m_transport(nullptr), - m_currMap(nullptr), m_InstanceId(0), m_phaseMask(PHASEMASK_NORMAL), m_useCombinedPhases(true), m_notifyflags(0), m_executed_notifies(0) + m_currMap(nullptr), _heartbeatTimer(HEARTBEAT_INTERVAL), m_InstanceId(0), m_phaseMask(PHASEMASK_NORMAL), m_useCombinedPhases(true), m_notifyflags(0), m_executed_notifies(0) { m_serverSideVisibility.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE | GHOST_VISIBILITY_GHOST); m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GHOST, GHOST_VISIBILITY_ALIVE); @@ -1058,9 +1058,18 @@ WorldObject::WorldObject(bool isWorldObject) : WorldLocation(), sScriptMgr->OnWorldObjectCreate(this); } -void WorldObject::Update(uint32 time_diff) +void WorldObject::Update(uint32 diff) { - sScriptMgr->OnWorldObjectUpdate(this, time_diff); + m_Events.Update(diff); + + _heartbeatTimer -= Milliseconds(diff); + while (_heartbeatTimer <= 0ms) + { + _heartbeatTimer += HEARTBEAT_INTERVAL; + Heartbeat(); + } + + sScriptMgr->OnWorldObjectUpdate(this, diff); } void WorldObject::SetWorldObject(bool on) @@ -1134,6 +1143,8 @@ void WorldObject::CleanupsBeforeDelete(bool /*finalCleanup*/) { if (IsInWorld()) RemoveFromWorld(); + + m_Events.KillAllEvents(false); // non-delatable (currently cast spells) will not deleted now but it will deleted at call in Map::RemoveAllObjectsInRemoveList } void WorldObject::_Create(ObjectGuid::LowType guidlow, HighGuid guidhigh, uint32 phaseMask) diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index e0792f840..c0b7239a2 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -20,6 +20,7 @@ #include "Common.h" #include "DataMap.h" +#include "EventProcessor.h" #include "G3D/Vector3.h" #include "GridDefines.h" #include "GridReference.h" @@ -96,6 +97,8 @@ struct PositionFullTerrainStatus; typedef std::unordered_map UpdateDataMapType; typedef GuidUnorderedSet UpdatePlayerSet; +static constexpr Milliseconds HEARTBEAT_INTERVAL = 5s + 200ms; + class Object { public: @@ -220,6 +223,8 @@ public: [[nodiscard]] inline bool IsItem() const { return GetTypeId() == TYPEID_ITEM; } + virtual void Heartbeat() {} + virtual std::string GetDebugInfo() const; DataMap CustomData; @@ -408,7 +413,7 @@ protected: public: ~WorldObject() override; - virtual void Update(uint32 /*time_diff*/); + virtual void Update(uint32 diff); void _Create(ObjectGuid::LowType guidlow, HighGuid guidhigh, uint32 phaseMask); @@ -632,7 +637,9 @@ public: std::string GetDebugInfo() const override; + // Event handler ElunaEventProcessor* elunaEvents; + EventProcessor m_Events; protected: std::string m_name; @@ -666,7 +673,7 @@ protected: virtual bool IsAlwaysDetectableFor(WorldObject const* /*seer*/) const { return false; } private: Map* m_currMap; //current object's Map location - + Milliseconds _heartbeatTimer; //uint32 m_mapId; // object at map with map_id uint32 m_InstanceId; // in map copy with instance id uint32 m_phaseMask; // in area phase state diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 7837e1d68..f49a663c2 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1026,6 +1026,9 @@ void Player::setDeathState(DeathState s, bool /*despawn = false*/) return; } + // clear all pending spell cast requests when dying + SpellQueue.clear(); + // drunken state is cleared on death SetDrunkValue(0); // lost combo points at any target (targeted combo points clear in Unit::setDeathState) @@ -1889,8 +1892,27 @@ void Player::Regenerate(Powers power) } } break; - case POWER_ENERGY: // Regenerate energy (rogue) - addvalue += 0.01f * m_regenTimer * sWorld->getRate(RATE_POWER_ENERGY); + case POWER_ENERGY: + { + float baseRegenRate = 10.0f * sWorld->getRate(RATE_POWER_ENERGY); + float hasteModifier = 1.0f; + + // Apply Vitality + if (HasAura(61329)) + hasteModifier += 0.25f; + + // Apply Overkill + if (HasAura(58426)) + hasteModifier += 0.30f; + + // Apply Adrenaline Rush + if (HasAura(13750)) + hasteModifier += 1.0f; + + float adjustedRegenRate = baseRegenRate * hasteModifier; + + addvalue += adjustedRegenRate * 0.001f * m_regenTimer; + } break; case POWER_RUNIC_POWER: { diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 6ce8d57ca..4d7c527bd 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1050,6 +1050,18 @@ struct EntryPointData [[nodiscard]] bool HasTaxiPath() const { return taxiPath[0] && taxiPath[1]; } }; +struct PendingSpellCastRequest +{ + uint32 spellId; + uint32 category; + WorldPacket requestPacket; + bool isItem = false; + bool cancelInProgress = false; + + PendingSpellCastRequest(uint32 spellId, uint32 category, WorldPacket&& packet, bool item = false, bool cancel = false) + : spellId(spellId), category(category), requestPacket(std::move(packet)), isItem(item) , cancelInProgress(cancel) {} +}; + class Player : public Unit, public GridObject { friend class WorldSession; @@ -2608,7 +2620,21 @@ public: std::string GetDebugInfo() const override; - protected: + /*********************************************************/ + /*** SPELL QUEUE SYSTEM ***/ + /*********************************************************/ +protected: + uint32 GetSpellQueueWindow() const; + void ProcessSpellQueue(); + +public: + std::deque SpellQueue; + const PendingSpellCastRequest* GetCastRequest(uint32 category) const; + bool CanExecutePendingSpellCastRequest(SpellInfo const* spellInfo); + void ExecuteOrCancelSpellCastRequest(PendingSpellCastRequest* castRequest, bool isCancel = false); + bool CanRequestSpellCast(SpellInfo const* spellInfo); + +protected: // Gamemaster whisper whitelist WhisperListContainer WhisperList; diff --git a/src/server/game/Entities/Player/PlayerUpdates.cpp b/src/server/game/Entities/Player/PlayerUpdates.cpp index aef35b3e8..13c6562db 100644 --- a/src/server/game/Entities/Player/PlayerUpdates.cpp +++ b/src/server/game/Entities/Player/PlayerUpdates.cpp @@ -79,6 +79,7 @@ void Player::Update(uint32 p_time) // used to implement delayed far teleports SetMustDelayTeleport(true); + ProcessSpellQueue(); Unit::Update(p_time); SetMustDelayTeleport(false); @@ -2256,3 +2257,89 @@ void Player::ProcessTerrainStatusUpdate() else m_MirrorTimerFlags &= ~(UNDERWATER_INWATER | UNDERWATER_INLAVA | UNDERWATER_INSLIME | UNDERWATER_INDARKWATER); } + +uint32 Player::GetSpellQueueWindow() const +{ + return sWorld->getIntConfig(CONFIG_SPELL_QUEUE_WINDOW); +} + +bool Player::CanExecutePendingSpellCastRequest(SpellInfo const* spellInfo) +{ + if (GetGlobalCooldownMgr().HasGlobalCooldown(spellInfo)) + return false; + + if (GetSpellCooldownDelay(spellInfo->Id) > GetSpellQueueWindow()) + return false; + + for (CurrentSpellTypes spellSlot : {CURRENT_MELEE_SPELL, CURRENT_GENERIC_SPELL}) + if (Spell* spell = GetCurrentSpell(spellSlot)) + { + bool autoshot = spell->m_spellInfo->IsAutoRepeatRangedSpell(); + if (IsNonMeleeSpellCast(false, true, true, autoshot)) + return false; + } + return true; +} + +const PendingSpellCastRequest* Player::GetCastRequest(uint32 category) const +{ + for (const PendingSpellCastRequest& request : SpellQueue) + if (request.category == category) + return &request; + return nullptr; +} + +bool Player::CanRequestSpellCast(SpellInfo const* spellInfo) +{ + if (!sWorld->getBoolConfig(CONFIG_SPELL_QUEUE_ENABLED)) + return false; + + // Check for existing cast request with the same category + if (GetCastRequest(spellInfo->StartRecoveryCategory)) + return false; + + if (GetGlobalCooldownMgr().GetGlobalCooldown(spellInfo) > GetSpellQueueWindow()) + return false; + + if (GetSpellCooldownDelay(spellInfo->Id) > GetSpellQueueWindow()) + return false; + + // If there is an existing cast that will last longer than the allowable + // spell queue window, then we can't request a new spell cast + for (CurrentSpellTypes spellSlot : { CURRENT_MELEE_SPELL, CURRENT_GENERIC_SPELL }) + if (Spell* spell = GetCurrentSpell(spellSlot)) + if (spell->GetCastTimeRemaining() > static_cast(GetSpellQueueWindow())) + return false; + + return true; +} + +void Player::ExecuteOrCancelSpellCastRequest(PendingSpellCastRequest* request, bool isCancel /* = false*/) +{ + if (isCancel) + request->cancelInProgress = true; + + if (WorldSession* session = GetSession()) + { + if (request->isItem) + session->HandleUseItemOpcode(request->requestPacket); + else + session->HandleCastSpellOpcode(request->requestPacket); + } +} + +void Player::ProcessSpellQueue() +{ + while (!SpellQueue.empty()) + { + PendingSpellCastRequest& request = SpellQueue.front(); // Peek at the first spell + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(request.spellId); + if (CanExecutePendingSpellCastRequest(spellInfo)) + { + ExecuteOrCancelSpellCastRequest(&request); + SpellQueue.pop_front(); // Remove from the queue + } + else // If the first spell can't execute, stop processing + break; + } +} diff --git a/src/server/game/Entities/Unit/CharmInfo.cpp b/src/server/game/Entities/Unit/CharmInfo.cpp index 8a4c6d761..6a7cde11a 100644 --- a/src/server/game/Entities/Unit/CharmInfo.cpp +++ b/src/server/game/Entities/Unit/CharmInfo.cpp @@ -400,6 +400,22 @@ bool GlobalCooldownMgr::HasGlobalCooldown(SpellInfo const* spellInfo) const return itr != m_GlobalCooldowns.end() && itr->second.duration && getMSTimeDiff(itr->second.cast_time, GameTime::GetGameTimeMS().count()) < itr->second.duration; } +uint32 GlobalCooldownMgr::GetGlobalCooldown(SpellInfo const* spellInfo) const +{ + if (!spellInfo) + return 0; + + auto itr = m_GlobalCooldowns.find(spellInfo->StartRecoveryCategory); + if (itr == m_GlobalCooldowns.end() || itr->second.duration == 0) + return 0; + + uint32 start = itr->second.cast_time; + uint32 delay = itr->second.duration; + uint32 now = getMSTime(); + + return (start + delay > now) ? (start + delay) - now : 0; +} + void GlobalCooldownMgr::AddGlobalCooldown(SpellInfo const* spellInfo, uint32 gcd) { m_GlobalCooldowns[spellInfo->StartRecoveryCategory] = GlobalCooldown(gcd, GameTime::GetGameTimeMS().count()); diff --git a/src/server/game/Entities/Unit/CharmInfo.h b/src/server/game/Entities/Unit/CharmInfo.h index 9efc7e32a..1b22d5fac 100644 --- a/src/server/game/Entities/Unit/CharmInfo.h +++ b/src/server/game/Entities/Unit/CharmInfo.h @@ -83,6 +83,7 @@ public: public: bool HasGlobalCooldown(SpellInfo const* spellInfo) const; + uint32 GetGlobalCooldown(SpellInfo const* spellInfo) const; void AddGlobalCooldown(SpellInfo const* spellInfo, uint32 gcd); void CancelGlobalCooldown(SpellInfo const* spellInfo); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f674ff9ff..c9ee07985 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -386,7 +386,7 @@ void Unit::Update(uint32 p_time) // WARNING! Order of execution here is important, do not change. // Spells must be processed with event system BEFORE they go to _UpdateSpells. // Or else we may have some SPELL_STATE_FINISHED spells stalled in pointers, that is bad. - m_Events.Update(p_time); + WorldObject::Update(p_time); if (!IsInWorld()) return; @@ -15777,7 +15777,6 @@ void Unit::CleanupBeforeRemoveFromMap(bool finalCleanup) if (finalCleanup) m_cleanupDone = true; - m_Events.KillAllEvents(false); // non-delatable (currently casted spells) will not deleted now but it will deleted at call in Map::RemoveAllObjectsInRemoveList CombatStop(); ClearComboPoints(); ClearComboPointHolders(); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 5962775b0..8a6ac2296 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1958,9 +1958,6 @@ public: float m_threatModifier[MAX_SPELL_SCHOOL]; float m_modAttackSpeedPct[3]; - // Event handler - EventProcessor m_Events; - SpellImmuneList m_spellImmune[MAX_SPELL_IMMUNITY]; uint32 m_lastSanctuaryTime; diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 3bf376688..7f11d413f 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -85,6 +85,41 @@ void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket) return; } + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId); + + if (!spellInfo) + { + LOG_ERROR("network.opcode", "WORLD: unknown spell id {}", spellId); + recvPacket.rfinish(); // prevent spam at ignore packet + return; + } + + // fail if we are cancelling pending request + if (!_player->SpellQueue.empty()) + { + PendingSpellCastRequest& request = _player->SpellQueue.front(); // Peek at the first spell + if (request.cancelInProgress) + { + pUser->SendEquipError(EQUIP_ERR_NONE, pItem, nullptr); + recvPacket.rfinish(); // prevent spam at ignore packet + return; + } + } + + // try queue spell if it can't be executed right now + if (!_player->CanExecutePendingSpellCastRequest(spellInfo)) + if (_player->CanRequestSpellCast(spellInfo)) + { + recvPacket.rpos(0); // Reset read position to the start of the buffer. + _player->SpellQueue.emplace_back( + spellId, + spellInfo->GetCategory(), + std::move(recvPacket), // Move ownership of recvPacket + true // itemCast + ); + return; + } + if (pItem->GetGUID() != itemGUID) { pUser->SendEquipError(EQUIP_ERR_ITEM_NOT_FOUND, nullptr, nullptr); @@ -341,6 +376,10 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket) { uint32 spellId; uint8 castCount, castFlags; + + if (recvPacket.empty()) + return; + recvPacket >> castCount >> spellId >> castFlags; TriggerCastFlags triggerFlag = TRIGGERED_NONE; @@ -365,6 +404,36 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket) return; } + // fail if we are cancelling pending request + if (!_player->SpellQueue.empty()) + { + PendingSpellCastRequest& request = _player->SpellQueue.front(); // Peek at the first spell + if (request.cancelInProgress) + { + Spell* spell = new Spell(_player, spellInfo, TRIGGERED_NONE); + spell->m_cast_count = castCount; + spell->SendCastResult(SPELL_FAILED_DONT_REPORT); + spell->finish(false); + recvPacket.rfinish(); // prevent spam at ignore packet + return; + } + } + + // try queue spell if it can't be executed right now + if (!_player->CanExecutePendingSpellCastRequest(spellInfo)) + { + if (_player->CanRequestSpellCast(spellInfo)) + { + recvPacket.rpos(0); // Reset read position to the start of the buffer. + _player->SpellQueue.emplace_back( + spellId, + spellInfo->GetCategory(), + std::move(recvPacket) // Move ownership of recvPacket + ); + return; + } + } + // client provided targets SpellCastTargets targets; targets.Read(recvPacket, mover); @@ -483,6 +552,8 @@ void WorldSession::HandleCancelCastOpcode(WorldPacket& recvPacket) recvPacket.read_skip(); // counter, increments with every CANCEL packet, don't use for now recvPacket >> spellId; + _player->SpellQueue.clear(); + _player->InterruptSpell(CURRENT_MELEE_SPELL); if (_player->IsNonMeleeSpellCast(false)) _player->InterruptNonMeleeSpells(false, spellId, false, true); diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp index 0a58d1450..e6bb5dd4b 100644 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp @@ -158,13 +158,13 @@ bool ChaseMovementGenerator::DoUpdate(T* owner, uint32 time_diff) i_leashExtensionTimer.Update(time_diff); if (i_leashExtensionTimer.Passed()) { - i_leashExtensionTimer.Reset(1500); + i_leashExtensionTimer.Reset(5000); if (cOwner) cOwner->UpdateLeashExtensionTime(); } } else if (i_recalculateTravel) - i_leashExtensionTimer.Reset(1500); + i_leashExtensionTimer.Reset(5000); // if the target moved, we have to consider whether to adjust if (!_lastTargetPosition || target->GetPosition() != _lastTargetPosition.value() || mutualChase != _mutualChase || !owner->IsWithinLOSInMap(target)) diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h index fd3064b51..003e967d4 100644 --- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h @@ -39,7 +39,7 @@ class ChaseMovementGenerator : public MovementGeneratorMedium range = {}, Optional angle = {}) - : TargetedMovementGeneratorBase(target), i_leashExtensionTimer(1500), i_path(nullptr), i_recheckDistance(0), i_recalculateTravel(true), _range(range), _angle(angle) {} + : TargetedMovementGeneratorBase(target), i_leashExtensionTimer(5000), i_path(nullptr), i_recheckDistance(0), i_recalculateTravel(true), _range(range), _angle(angle) {} ~ChaseMovementGenerator() { } MovementGeneratorType GetMovementGeneratorType() { return CHASE_MOTION_TYPE; } diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 8297d7ca5..033891ee3 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -494,28 +494,33 @@ int32 AuraEffect::CalculateAmount(Unit* caster) case SPELL_AURA_MOD_STUN: case SPELL_AURA_MOD_ROOT: case SPELL_AURA_TRANSFORM: + { m_canBeRecalculated = false; if (!m_spellInfo->ProcFlags || m_spellInfo->HasAura(SPELL_AURA_PROC_TRIGGER_SPELL)) // xinef: skip auras with proctriggerspell, they must have procflags... break; - amount = int32(GetBase()->GetUnitOwner()->CountPctFromMaxHealth(10)); - if (caster) + if (!caster) + break; + // not impacted by gear + // not impacted by target level + // not impacted by rank + // asumption - depends on caster level + amount = sObjectMgr->GetCreatureBaseStats(caster->GetLevel(), Classes::CLASS_WARRIOR)->BaseHealth[EXPANSION_WRATH_OF_THE_LICH_KING] / 4.75f; + // Glyphs increasing damage cap + Unit::AuraEffectList const& overrideClassScripts = caster->GetAuraEffectsByType(SPELL_AURA_OVERRIDE_CLASS_SCRIPTS); + for (Unit::AuraEffectList::const_iterator itr = overrideClassScripts.begin(); itr != overrideClassScripts.end(); ++itr) { - // Glyphs increasing damage cap - Unit::AuraEffectList const& overrideClassScripts = caster->GetAuraEffectsByType(SPELL_AURA_OVERRIDE_CLASS_SCRIPTS); - for (Unit::AuraEffectList::const_iterator itr = overrideClassScripts.begin(); itr != overrideClassScripts.end(); ++itr) + if ((*itr)->IsAffectedOnSpell(m_spellInfo)) { - if ((*itr)->IsAffectedOnSpell(m_spellInfo)) + // Glyph of Fear, Glyph of Frost nova and similar auras + if ((*itr)->GetMiscValue() == 7801) { - // Glyph of Fear, Glyph of Frost nova and similar auras - if ((*itr)->GetMiscValue() == 7801) - { - AddPct(amount, (*itr)->GetAmount()); - break; - } + AddPct(amount, (*itr)->GetAmount()); + break; } } } break; + } case SPELL_AURA_SCHOOL_ABSORB: case SPELL_AURA_MANA_SHIELD: m_canBeRecalculated = false; diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 4d44af2e4..be8ff1802 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -551,6 +551,7 @@ public: bool IsAutoRepeat() const { return m_autoRepeat; } void SetAutoRepeat(bool rep) { m_autoRepeat = rep; } void ReSetTimer() { m_timer = m_casttime > 0 ? m_casttime : 0; } + int32 GetCastTimeRemaining() { return m_timer;} bool IsNextMeleeSwingSpell() const; bool IsTriggered() const { return HasTriggeredCastFlag(TRIGGERED_FULL_MASK); }; bool HasTriggeredCastFlag(TriggerCastFlags flag) const { return _triggeredCastFlags & flag; }; diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index fd5a3252c..035d9df02 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -184,6 +184,7 @@ enum WorldBoolConfigs CONFIG_ALLOWS_RANK_MOD_FOR_PET_HEALTH, CONFIG_MUNCHING_BLIZZLIKE, CONFIG_ENABLE_DAZE, + CONFIG_SPELL_QUEUE_ENABLED, BOOL_CONFIG_VALUE_COUNT }; @@ -420,6 +421,7 @@ enum WorldIntConfigs CONFIG_WATER_BREATH_TIMER, CONFIG_AUCTION_HOUSE_SEARCH_TIMEOUT, CONFIG_DAILY_RBG_MIN_LEVEL_AP_REWARD, + CONFIG_SPELL_QUEUE_WINDOW, INT_CONFIG_VALUE_COUNT }; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index b182abe65..8c6b9d819 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1488,6 +1488,10 @@ void World::LoadConfigSettings(bool reload) // Realm Availability _bool_configs[CONFIG_REALM_LOGIN_ENABLED] = sConfigMgr->GetOption("World.RealmAvailability", true); + // SpellQueue + _bool_configs[CONFIG_SPELL_QUEUE_ENABLED] = sConfigMgr->GetOption("SpellQueue.Enabled", true); + _int_configs[CONFIG_SPELL_QUEUE_WINDOW] = sConfigMgr->GetOption("SpellQueue.Window", 400); + // call ScriptMgr if we're reloading the configuration sScriptMgr->OnAfterConfigLoad(reload); } diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp index 000d7088d..1dc1995f4 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp @@ -124,7 +124,7 @@ struct boss_nightbane : public BossAI _triggerCountTakeOffWhileFlying = 0; _airPhasesCompleted = 0; - me->SetSpeed(MOVE_RUN, me->GetCreatureTemplate()->speed_run); + me->SetSpeed(MOVE_RUN, 2.0f); me->SetCanFly(true); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->SetReactState(REACT_PASSIVE); @@ -300,7 +300,6 @@ struct boss_nightbane : public BossAI { me->ClearUnitState(UNIT_STATE_IGNORE_PATHFINDING); me->GetMotionMaster()->MovePoint(POINT_INTRO_LAND, introLandPos); - me->SetSpeed(MOVE_RUN, 2.0f); }).Schedule(3s, [this](TaskContext /*context*/) { me->SetDisableGravity(false); diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp index c851ab105..430ff20ee 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp @@ -83,6 +83,14 @@ struct boss_muru : public BossAI }, 10min); } + void JustSummoned(Creature* creature) override + { + if (creature->GetEntry() == NPC_ENTROPIUS) + creature->SetInCombatWithZone(); + else + BossAI::JustSummoned(creature); + } + void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override { if (damage >= me->GetHealth()) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp index 65c6112b0..7a8fc0ac2 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp @@ -20,6 +20,8 @@ #include "GridNotifiers.h" #include "GridNotifiersImpl.h" #include "ScriptedCreature.h" +#include "SpellAuras.h" +#include "SpellAuraEffects.h" #include "SpellScript.h" #include "SpellScriptLoader.h" #include "Weather.h" @@ -321,9 +323,30 @@ class spell_electrial_storm : public AuraScript } }; +// 43657 - Electrical Storm +class spell_electrical_storm_proc : public SpellScript +{ + PrepareSpellScript(spell_electrical_storm_proc); + + void HandleDamageCalc(SpellEffIndex /*effIndex*/) + { + if (Aura* aura = GetCaster()->GetAura(SPELL_ELECTRICAL_STORM)) + { + uint8 multiplier = aura->GetEffect(EFFECT_1)->GetTickNumber(); + SetHitDamage(GetHitDamage() * multiplier); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_electrical_storm_proc::HandleDamageCalc, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + void AddSC_boss_akilzon() { RegisterZulAmanCreatureAI(boss_akilzon); RegisterZulAmanCreatureAI(npc_akilzon_eagle); RegisterSpellScript(spell_electrial_storm); + RegisterSpellScript(spell_electrical_storm_proc); } diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp index ec5ca7e77..5f5f05a34 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp @@ -229,7 +229,13 @@ static PlayerAbilityStruct PlayerAbility[13][3] = struct boss_hexlord_malacrass : public BossAI { - boss_hexlord_malacrass(Creature* creature) : BossAI(creature, DATA_HEXLORD) { } + boss_hexlord_malacrass(Creature* creature) : BossAI(creature, DATA_HEXLORD) + { + scheduler.SetValidator([this] + { + return !me->HasUnitState(UNIT_STATE_CASTING); + }); + } void Reset() override { @@ -238,19 +244,28 @@ struct boss_hexlord_malacrass : public BossAI _classAbilityTimer = 10000ms; SpawnAdds(); ScheduleHealthCheckEvent(80, [&] { - ScheduleTimedEvent(0s, [&] { + ScheduleTimedEvent(1s, [&] { DoCastSelf(SPELL_DRAIN_POWER, true); Talk(SAY_DRAIN_POWER); - }, 30s, 30s); + }, 30s); }); } void SpawnAdds() { - for (uint8 i = 0; i < MAX_ADD_COUNT; ++i) + if (_creatureIndex.empty()) { - uint8 flip = urand(0, 1); - me->SummonCreature(AddEntrySets[i][flip], AddPosition[i], TEMPSUMMON_DEAD_DESPAWN, 0); + for (uint8 i = 0; i < MAX_ADD_COUNT; ++i) + { + uint8 flip = urand(0, 1); + me->SummonCreature(AddEntrySets[i][flip], AddPosition[i], TEMPSUMMON_DEAD_DESPAWN, 0); + _creatureIndex.push_back(flip); + } + } + else + { + for (uint8 i = 0; i < MAX_ADD_COUNT; ++i) + me->SummonCreature(AddEntrySets[i][_creatureIndex[i]], AddPosition[i], TEMPSUMMON_DEAD_DESPAWN, 0); } } @@ -339,6 +354,7 @@ struct boss_hexlord_malacrass : public BossAI private: uint8 _currentClass; std::chrono::milliseconds _classAbilityTimer; + std::vector _creatureIndex; }; struct boss_alyson_antille : public ScriptedAI diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp index 0f6bdb587..dc7e686d8 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "CreatureGroups.h" #include "CreatureScript.h" #include "Player.h" #include "ScriptedCreature.h" @@ -144,6 +145,9 @@ struct boss_zuljin : public BossAI me->SetCombatMovement(true); me->m_Events.KillAllEvents(false); _nextPhase = 0; + + if (CreatureGroup* formation = me->GetFormation()) + formation->RespawnFormation(true); } void JustEngagedWith(Unit* /*who*/) override @@ -198,10 +202,16 @@ struct boss_zuljin : public BossAI me->ResumeChasingVictim(); ScheduleTimedEvent(5s, [&] { - DoCastRandomTarget(SPELL_CLAW_RAGE_CHARGE); + if (me->HasAura(SPELL_LYNX_RUSH_HASTE)) + return; + + DoCastRandomTarget(SPELL_CLAW_RAGE_CHARGE, 1); }, 15s, 20s); ScheduleTimedEvent(14s, [&] { + if (me->HasAura(SPELL_CLAW_RAGE_AURA)) + return; + DoCastSelf(SPELL_LYNX_RUSH_HASTE); for (int8 count = 0; count <= 8; ++count) @@ -233,6 +243,21 @@ struct boss_zuljin : public BossAI }); } + void EnterEvadeMode(EvadeReason /*why*/) override + { + if (CreatureGroup* formation = me->GetFormation()) + { + for (auto const& itr : formation->GetMembers()) + { + if (itr.first && itr.first != me) + itr.first->DespawnOnEvade(2min); + } + } + + me->DespawnOnEvade(2min); + _EnterEvadeMode(); + } + void SpellHitTarget(Unit* target, SpellInfo const* spellInfo) override { if (spellInfo->Id == SPELL_CLAW_RAGE_CHARGE && target != me) diff --git a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp index bfc5ddf2f..f86186b40 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp @@ -53,7 +53,6 @@ DoorData const doorData[] = { GO_DOOR_HALAZZI, DATA_HALAZZI, DOOR_TYPE_PASSAGE }, { GO_LYNX_TEMPLE_ENTRANCE, DATA_HALAZZI, DOOR_TYPE_ROOM }, { GO_DOOR_AKILZON, DATA_AKILZON, DOOR_TYPE_ROOM }, - { GO_GATE_ZULJIN, DATA_HEXLORD, DOOR_TYPE_PASSAGE }, { 0, 0, DOOR_TYPE_ROOM } // END }; @@ -71,6 +70,7 @@ ObjectData const gameObjectData[] = { GO_STRANGE_GONG, DATA_STRANGE_GONG }, { GO_MASSIVE_GATE, DATA_MASSIVE_GATE }, { GO_GATE_HEXLORD, DATA_HEXLORD_GATE }, + { GO_GATE_ZULJIN, DATA_ZULJIN_GATE }, { 0, 0 } }; @@ -290,6 +290,11 @@ public: HandleGameObject(ObjectGuid::Empty, false, GetGameObject(DATA_HEXLORD_GATE)); else if (state == NOT_STARTED) CheckInstanceStatus(); + else if (state == DONE) + { + if (GameObject* zuljinGate = GetGameObject(DATA_ZULJIN_GATE)) + zuljinGate->RemoveGameObjectFlag(GO_FLAG_LOCKED); + } break; } diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h index f0f86ad0b..8ed6eb131 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.h @@ -41,6 +41,7 @@ enum DataTypes DATA_HARRISON_JONES = 13, TYPE_AKILZON_GAUNTLET = 14, DATA_LOOKOUT = 15, + DATA_ZULJIN_GATE = 16 }; enum CreatureIds diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp index a1616ea0a..649a60c6f 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -28,6 +28,7 @@ enum MountSpells { + SPELL_LANCE_EQUIPPED = 62853, SPELL_PLAYER_VEHICLE_DEFEND = 66482, SPELL_MINIONS_DEFEND = 64100, SPELL_BOSS_DEFEND = 62719, @@ -152,16 +153,9 @@ public: return GetTrialOfTheChampionAI(pCreature); } - struct npc_toc5_player_vehicleAI : public NullCreatureAI + struct npc_toc5_player_vehicleAI : public VehicleAI { - npc_toc5_player_vehicleAI(Creature* pCreature) : NullCreatureAI(pCreature) - { - conditions = sConditionMgr->GetConditionsForNotGroupedEntry(CONDITION_SOURCE_TYPE_CREATURE_TEMPLATE_VEHICLE, me->GetEntry()); - m_ConditionsTimer = 1000; - } - - ConditionList conditions; - uint16 m_ConditionsTimer; + npc_toc5_player_vehicleAI(Creature* creature) : VehicleAI(creature) { } void Reset() override { @@ -203,23 +197,25 @@ public: } } - //void EnterEvadeMode() { CreatureAI::EnterEvadeMode(); } - void MoveInLineOfSight(Unit* /*who*/) override {} - void UpdateAI(uint32 diff) override + bool BeforeSpellClick(Unit* clicker) override { - if (m_ConditionsTimer <= diff) - { - if (!conditions.empty()) - if (Unit* passenger = me->GetVehicleKit()->GetPassenger(0)) - if (!sConditionMgr->IsObjectMeetToConditions(passenger, me, conditions)) - passenger->ExitVehicle(); - m_ConditionsTimer = VEHICLE_CONDITION_CHECK_TIME; - } - else - m_ConditionsTimer -= diff; + if (!clicker->IsPlayer()) + return true; + + if (clicker->IsInDisallowedMountForm()) + clicker->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT); + + if (clicker->HasAura(SPELL_LANCE_EQUIPPED)) + return true; + + WorldPacket data(SMSG_CAST_FAILED, 1 + 4 + 1); + data << uint8(0); // single cast or multi 2.3 (0/1) + data << uint32(VEHICLE_SPELL_RIDE_HARDCODED); + data << uint8(SPELL_FAILED_CUSTOM_ERROR); + data << uint32(SPELL_CUSTOM_ERROR_MUST_HAVE_LANCE_EQUIPPED); + clicker->ToPlayer()->GetSession()->SendPacket(&data); + return false; } - void AttackStart(Unit* /*who*/) override {} - void JustEngagedWith(Unit* /*who*/) override {} }; }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index cc36837f7..dcc37e3ca 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -912,7 +912,7 @@ public: npc_vengeful_shadeAI(Creature* creature) : ScriptedAI(creature) { me->SetControlled(true, UNIT_STATE_ROOT); - unroot_timer = 500; + unroot_timer = 2000; targetGUID.Clear(); }