mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/OutdoorPvP: Move Halaa spawns to db using worldstate conditions
This commit is contained in:
186
sql/updates/world/master/2022_07_18_01_world.sql
Normal file
186
sql/updates/world/master/2022_07_18_01_world.sql
Normal file
@@ -0,0 +1,186 @@
|
||||
DELETE FROM `spawn_group_template` WHERE `groupId` BETWEEN 105 AND 124;
|
||||
INSERT INTO `spawn_group_template` (`groupId`,`groupName`,`groupFlags`) VALUES
|
||||
(105,'Nagrand - Halaa - Horde Controlled',32),
|
||||
(106,'Nagrand - Halaa - Alliance Controlled',32),
|
||||
(107,'Nagrand - Halaa - Wyvern Camp (East) - Horde Uncontrolled',32),
|
||||
(108,'Nagrand - Halaa - Wyvern Camp (East) - Alliance Uncontrolled',32),
|
||||
(109,'Nagrand - Halaa - Wyvern Camp (East) - Horde Controlled',32),
|
||||
(110,'Nagrand - Halaa - Wyvern Camp (East) - Alliance Controlled',32),
|
||||
(111,'Nagrand - Halaa - Wyvern Camp (North) - Horde Uncontrolled',32),
|
||||
(112,'Nagrand - Halaa - Wyvern Camp (North) - Alliance Uncontrolled',32),
|
||||
(113,'Nagrand - Halaa - Wyvern Camp (North) - Horde Controlled',32),
|
||||
(114,'Nagrand - Halaa - Wyvern Camp (North) - Alliance Controlled',32),
|
||||
(115,'Nagrand - Halaa - Wyvern Camp (West) - Horde Uncontrolled',32),
|
||||
(116,'Nagrand - Halaa - Wyvern Camp (West) - Alliance Uncontrolled',32),
|
||||
(117,'Nagrand - Halaa - Wyvern Camp (West) - Horde Controlled',32),
|
||||
(118,'Nagrand - Halaa - Wyvern Camp (West) - Alliance Controlled',32),
|
||||
(119,'Nagrand - Halaa - Wyvern Camp (South) - Horde Uncontrolled',32),
|
||||
(120,'Nagrand - Halaa - Wyvern Camp (South) - Alliance Uncontrolled',32),
|
||||
(121,'Nagrand - Halaa - Wyvern Camp (South) - Horde Controlled',32),
|
||||
(122,'Nagrand - Halaa - Wyvern Camp (South) - Alliance Controlled',32),
|
||||
(123,'Nagrand - Halaa - Horde Guards',32),
|
||||
(124,'Nagrand - Halaa - Alliance Guards',32);
|
||||
|
||||
DELETE FROM `creature` WHERE `guid` BETWEEN 145427 AND 145466;
|
||||
INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `phaseUseFlags`, `PhaseId`, `PhaseGroup`, `terrainSwapMap`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(145427, 18816, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1523.92, 7951.76, -17.6942, 3.51172, 1000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145428, 18821, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1527.75, 7952.46, -17.6948, 3.99317, 1000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145429, 21474, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1520.14, 7927.11, -20.2527, 3.39389, 1000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145430, 21484, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1524.84, 7930.34, -20.182, 3.6405, 1000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145431, 21483, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1570.01, 7993.8, -22.4505, 5.02655, 1000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145432, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1654.06, 8000.46, -26.59, 3.37, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145433, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1487.18, 7899.1, -19.53, 0.954, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145434, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1480.88, 7908.79, -19.19, 4.485, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145435, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1540.56, 7995.44, -20.45, 0.947, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145436, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1546.95, 8000.85, -20.72, 6.035, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145437, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1595.31, 7860.53, -21.51, 3.747, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145438, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1642.31, 7995.59, -25.8, 3.317, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145439, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1545.46, 7995.35, -20.63, 1.094, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145440, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1487.58, 7907.99, -19.27, 5.567, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145441, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1651.54, 7988.56, -26.5289, 2.98451, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145442, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1602.46, 7866.43, -22.1177, 4.74729, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145443, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1591.22, 7875.29, -22.3536, 4.34587, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145444, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1550.6, 7944.45, -21.63, 3.559, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145445, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1545.57, 7935.83, -21.13, 3.448, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145446, 18192, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1550.86, 7937.56, -21.7, 3.801, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145447, 18817, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1591.18, 8020.39, -22.2042, 4.59022, 1000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145448, 18822, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1588, 8019, -22.2042, 4.06662, 1000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145449, 21485, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1521.93, 7927.37, -20.2299, 3.24631, 1000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145450, 21487, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1540.33, 7971.95, -20.7186, 3.07178, 1000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145451, 21488, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1570.01, 7993.8, -22.4505, 5.02655, 1000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145452, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1654.06, 8000.46, -26.59, 3.37, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145453, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1487.18, 7899.1, -19.53, 0.954, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145454, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1480.88, 7908.79, -19.19, 4.485, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145455, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1540.56, 7995.44, -20.45, 0.947, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145456, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1546.95, 8000.85, -20.72, 6.035, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145457, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1595.31, 7860.53, -21.51, 3.747, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145458, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1642.31, 7995.59, -25.8, 3.317, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145459, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1545.46, 7995.35, -20.63, 1.094, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145460, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1487.58, 7907.99, -19.27, 5.567, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145461, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1651.54, 7988.56, -26.5289, 2.98451, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145462, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1602.46, 7866.43, -22.1177, 4.74729, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145463, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1591.22, 7875.29, -22.3536, 4.34587, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145464, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1603.75, 8000.36, -24.18, 4.516, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145465, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1585.73, 7994.68, -23.29, 4.439, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0),
|
||||
(145466, 18256, 530, 0, 0, '0', 0, 0, 0, -1, 0, 0, -1595.5, 7991.27, -23.53, 4.738, 1000000, 0, 0, 10000000, 0, 0, 0, 0, 0, 0, 0, '', 0);
|
||||
|
||||
DELETE FROM `gameobject` WHERE `guid` BETWEEN 23273 AND 23297;
|
||||
INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `phaseUseFlags`, `PhaseId`, `PhaseGroup`, `terrainSwapMap`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`) VALUES
|
||||
(23273, 182210, 530, 0, 0, '0', 0, 0, 0, -1, -1572.57, 7945.3, -22.475, 2.05949, 0, 0, 0.857167, 0.515038, 0, 0, 1, '', 0),
|
||||
(23274, 182267, 530, 0, 0, '0', 0, 0, 0, -1, -1815.8, 8036.51, -26.2354, -2.89725, 0, 0, 0.992546, -0.121869, 0, 0, 1, '', 0), -- NA_ROOST_S
|
||||
(23275, 182280, 530, 0, 0, '0', 0, 0, 0, -1, -1507.95, 8132.1, -19.5585, -1.3439, 0, 0, 0.622515, -0.782608, 0, 0, 1, '', 0), -- NA_ROOST_W
|
||||
(23276, 182281, 530, 0, 0, '0', 0, 0, 0, -1, -1384.52, 7779.33, -11.1663, -0.575959, 0, 0, 0.284015, -0.95882, 0, 0, 1, '', 0), -- NA_ROOST_N
|
||||
(23277, 182282, 530, 0, 0, '0', 0, 0, 0, -1, -1650.11, 7732.56, -15.4505, -2.80998, 0, 0, 0.986286, -0.165048, 0, 0, 1, '', 0), -- NA_ROOST_E
|
||||
(23278, 182222, 530, 0, 0, '0', 0, 0, 0, -1, -1825.4, 8039.26, -26.08, -2.89725, 0, 0, 0.992546, -0.121869, 0, 0, 1, '', 0), -- NA_BOMB_WAGON_S
|
||||
(23279, 182272, 530, 0, 0, '0', 0, 0, 0, -1, -1515.37, 8136.91, -20.42, -1.3439, 0, 0, 0.622515, -0.782608, 0, 0, 1, '', 0), -- NA_BOMB_WAGON_W
|
||||
(23280, 182273, 530, 0, 0, '0', 0, 0, 0, -1, -1377.95, 7773.44, -10.31, -0.575959, 0, 0, 0.284015, -0.95882, 0, 0, 1, '', 0), -- NA_BOMB_WAGON_N
|
||||
(23281, 182274, 530, 0, 0, '0', 0, 0, 0, -1, -1659.87, 7733.15, -15.75, -2.80998, 0, 0, 0.986286, -0.165048, 0, 0, 1, '', 0), -- NA_BOMB_WAGON_E
|
||||
(23282, 182266, 530, 0, 0, '0', 0, 0, 0, -1, -1815.8, 8036.51, -26.2354, -2.89725, 0, 0, 0.992546, -0.121869, 0, 0, 1, '', 0), -- NA_DESTROYED_ROOST_S
|
||||
(23283, 182275, 530, 0, 0, '0', 0, 0, 0, -1, -1507.95, 8132.1, -19.5585, -1.3439, 0, 0, 0.622515, -0.782608, 0, 0, 1, '', 0), -- NA_DESTROYED_ROOST_W
|
||||
(23284, 182276, 530, 0, 0, '0', 0, 0, 0, -1, -1384.52, 7779.33, -11.1663, -0.575959, 0, 0, 0.284015, -0.95882, 0, 0, 1, '', 0), -- NA_DESTROYED_ROOST_N
|
||||
(23285, 182277, 530, 0, 0, '0', 0, 0, 0, -1, -1650.11, 7732.56, -15.4505, -2.80998, 0, 0, 0.986286, -0.165048, 0, 0, 1, '', 0), -- NA_DESTROYED_ROOST_E
|
||||
(23286, 182301, 530, 0, 0, '0', 0, 0, 0, -1, -1815.8, 8036.51, -26.2354, -2.89725, 0, 0, 0.992546, -0.121869, 0, 0, 1, '', 0), -- NA_ROOST_S
|
||||
(23287, 182302, 530, 0, 0, '0', 0, 0, 0, -1, -1507.95, 8132.1, -19.5585, -1.3439, 0, 0, 0.622515, -0.782608, 0, 0, 1, '', 0), -- NA_ROOST_W
|
||||
(23288, 182303, 530, 0, 0, '0', 0, 0, 0, -1, -1384.52, 7779.33, -11.1663, -0.575959, 0, 0, 0.284015, -0.95882, 0, 0, 1, '', 0), -- NA_ROOST_N
|
||||
(23289, 182304, 530, 0, 0, '0', 0, 0, 0, -1, -1650.11, 7732.56, -15.4505, -2.80998, 0, 0, 0.986286, -0.165048, 0, 0, 1, '', 0), -- NA_ROOST_E
|
||||
(23290, 182305, 530, 0, 0, '0', 0, 0, 0, -1, -1825.4, 8039.26, -26.08, -2.89725, 0, 0, 0.992546, -0.121869, 0, 0, 1, '', 0), -- NA_BOMB_WAGON_S
|
||||
(23291, 182306, 530, 0, 0, '0', 0, 0, 0, -1, -1515.37, 8136.91, -20.42, -1.3439, 0, 0, 0.622515, -0.782608, 0, 0, 1, '', 0), -- NA_BOMB_WAGON_W
|
||||
(23292, 182307, 530, 0, 0, '0', 0, 0, 0, -1, -1377.95, 7773.44, -10.31, -0.575959, 0, 0, 0.284015, -0.95882, 0, 0, 1, '', 0), -- NA_BOMB_WAGON_N
|
||||
(23293, 182308, 530, 0, 0, '0', 0, 0, 0, -1, -1659.87, 7733.15, -15.75, -2.80998, 0, 0, 0.986286, -0.165048, 0, 0, 1, '', 0), -- NA_BOMB_WAGON_E
|
||||
(23294, 182297, 530, 0, 0, '0', 0, 0, 0, -1, -1815.8, 8036.51, -26.2354, -2.89725, 0, 0, 0.992546, -0.121869, 0, 0, 1, '', 0), -- NA_DESTROYED_ROOST_S
|
||||
(23295, 182298, 530, 0, 0, '0', 0, 0, 0, -1, -1507.95, 8132.1, -19.5585, -1.3439, 0, 0, 0.622515, -0.782608, 0, 0, 1, '', 0), -- NA_DESTROYED_ROOST_W
|
||||
(23296, 182299, 530, 0, 0, '0', 0, 0, 0, -1, -1384.52, 7779.33, -11.1663, -0.575959, 0, 0, 0.284015, -0.95882, 0, 0, 1, '', 0), -- NA_DESTROYED_ROOST_N
|
||||
(23297, 182300, 530, 0, 0, '0', 0, 0, 0, -1, -1650.11, 7732.56, -15.4505, -2.80998, 0, 0, 0.986286, -0.165048, 0, 0, 1, '', 0); -- NA_DESTROYED_ROOST_E
|
||||
|
||||
UPDATE `gameobject_template_addon` SET `flags`=0x20 WHERE `entry` IN (182266,182275,182276,182277,182297,182298,182299,182300,182222,182272,182273,182274,182305,182306,182307,182308);
|
||||
|
||||
DELETE FROM `spawn_group` WHERE `spawnId` BETWEEN 145427 AND 145466 AND `spawnType`=0;
|
||||
DELETE FROM `spawn_group` WHERE `spawnId` BETWEEN 23273 AND 23297 AND `spawnType`=1;
|
||||
INSERT INTO `spawn_group` (`groupId`,`spawnType`,`spawnId`) VALUES
|
||||
(105,0,145427),
|
||||
(105,0,145428),
|
||||
(105,0,145429),
|
||||
(105,0,145430),
|
||||
(105,0,145431),
|
||||
(123,0,145432),
|
||||
(123,0,145433),
|
||||
(123,0,145434),
|
||||
(123,0,145435),
|
||||
(123,0,145436),
|
||||
(123,0,145437),
|
||||
(123,0,145438),
|
||||
(123,0,145439),
|
||||
(123,0,145440),
|
||||
(123,0,145441),
|
||||
(123,0,145442),
|
||||
(123,0,145443),
|
||||
(123,0,145444),
|
||||
(123,0,145445),
|
||||
(123,0,145446),
|
||||
(106,0,145447),
|
||||
(106,0,145448),
|
||||
(106,0,145449),
|
||||
(106,0,145450),
|
||||
(106,0,145451),
|
||||
(124,0,145452),
|
||||
(124,0,145453),
|
||||
(124,0,145454),
|
||||
(124,0,145455),
|
||||
(124,0,145456),
|
||||
(124,0,145457),
|
||||
(124,0,145458),
|
||||
(124,0,145459),
|
||||
(124,0,145460),
|
||||
(124,0,145461),
|
||||
(124,0,145462),
|
||||
(124,0,145463),
|
||||
(124,0,145464),
|
||||
(124,0,145465),
|
||||
(124,0,145466),
|
||||
(122,1,23274),
|
||||
(118,1,23275),
|
||||
(114,1,23276),
|
||||
(110,1,23277),
|
||||
(122,1,23278),
|
||||
(118,1,23279),
|
||||
(114,1,23280),
|
||||
(110,1,23281),
|
||||
(120,1,23282),
|
||||
(116,1,23283),
|
||||
(112,1,23284),
|
||||
(108,1,23285),
|
||||
(121,1,23286),
|
||||
(117,1,23287),
|
||||
(113,1,23288),
|
||||
(109,1,23289),
|
||||
(121,1,23290),
|
||||
(117,1,23291),
|
||||
(113,1,23292),
|
||||
(109,1,23293),
|
||||
(119,1,23294),
|
||||
(115,1,23295),
|
||||
(111,1,23296),
|
||||
(107,1,23297);
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=33 AND `SourceEntry` BETWEEN 105 AND 124;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(33, 0, 105, 0, 0, 11, 0, 2672, 1, 0, 0, 0, 0, '', 'Halaa - Spawn Horde NPCs when Horde controls it'),
|
||||
(33, 0, 106, 0, 0, 11, 0, 2673, 1, 0, 0, 0, 0, '', 'Halaa - Spawn Alliance NPCs when Alliance controls it'),
|
||||
(33, 0, 107, 0, 0, 11, 0, 2763, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (East) - Horde Uncontrolled'),
|
||||
(33, 0, 108, 0, 0, 11, 0, 2659, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (East) - Alliance Uncontrolled'),
|
||||
(33, 0, 109, 0, 0, 11, 0, 2660, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (East) - Horde Controlled'),
|
||||
(33, 0, 110, 0, 0, 11, 0, 2661, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (East) - Alliance Controlled'),
|
||||
(33, 0, 111, 0, 0, 11, 0, 2762, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (North) - Horde Uncontrolled'),
|
||||
(33, 0, 112, 0, 0, 11, 0, 2662, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (North) - Alliance Uncontrolled'),
|
||||
(33, 0, 113, 0, 0, 11, 0, 2663, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (North) - Horde Controlled'),
|
||||
(33, 0, 114, 0, 0, 11, 0, 2664, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (North) - Alliance Controlled'),
|
||||
(33, 0, 115, 0, 0, 11, 0, 2761, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (West) - Horde Uncontrolled'),
|
||||
(33, 0, 116, 0, 0, 11, 0, 2667, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (West) - Alliance Uncontrolled'),
|
||||
(33, 0, 117, 0, 0, 11, 0, 2665, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (West) - Horde Controlled'),
|
||||
(33, 0, 118, 0, 0, 11, 0, 2666, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (West) - Alliance Controlled'),
|
||||
(33, 0, 119, 0, 0, 11, 0, 2760, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (South) - Horde Uncontrolled'),
|
||||
(33, 0, 120, 0, 0, 11, 0, 2670, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (South) - Alliance Uncontrolled'),
|
||||
(33, 0, 121, 0, 0, 11, 0, 2668, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (South) - Horde Controlled'),
|
||||
(33, 0, 122, 0, 0, 11, 0, 2669, 1, 0, 0, 0, 0, '', 'Halaa - Wyvern Camp (South) - Alliance Controlled'),
|
||||
(33, 0, 123, 0, 0, 11, 0, 2672, 1, 0, 0, 0, 0, '', 'Halaa - Spawn Horde guards when Horde controls it'),
|
||||
(33, 0, 124, 0, 0, 11, 0, 2673, 1, 0, 0, 0, 0, '', 'Halaa - Spawn Alliance guards when Alliance controls it');
|
||||
@@ -3703,7 +3703,7 @@ void Map::UpdateSpawnGroupConditions()
|
||||
if (shouldBeActive)
|
||||
SpawnGroupSpawn(spawnGroupId);
|
||||
else if (ASSERT_NOTNULL(GetSpawnGroupData(spawnGroupId))->flags & SPAWNGROUP_FLAG_DESPAWN_ON_CONDITION_FAILURE)
|
||||
SpawnGroupDespawn(spawnGroupId);
|
||||
SpawnGroupDespawn(spawnGroupId, true);
|
||||
else
|
||||
SetSpawnGroupInactive(spawnGroupId);
|
||||
}
|
||||
|
||||
@@ -133,6 +133,26 @@ bool OPvPCapturePoint::AddCreature(uint32 type, uint32 entry, uint32 map, Positi
|
||||
return false;
|
||||
}
|
||||
|
||||
bool OPvPCapturePoint::SetCapturePointData(uint32 entry)
|
||||
{
|
||||
TC_LOG_DEBUG("outdoorpvp", "Creating capture point %u", entry);
|
||||
|
||||
// check info existence
|
||||
GameObjectTemplate const* goinfo = sObjectMgr->GetGameObjectTemplate(entry);
|
||||
if (!goinfo || goinfo->type != GAMEOBJECT_TYPE_CONTROL_ZONE)
|
||||
{
|
||||
TC_LOG_ERROR("outdoorpvp", "OutdoorPvP: GO %u is not capture point!", entry);
|
||||
return false;
|
||||
}
|
||||
|
||||
// get the needed values from goinfo
|
||||
m_maxValue = (float)goinfo->controlZone.maxTime;
|
||||
m_maxSpeed = m_maxValue / (goinfo->controlZone.minTime ? goinfo->controlZone.minTime : 60);
|
||||
m_neutralValuePct = goinfo->controlZone.neutralPercent;
|
||||
m_minValue = CalculatePct(m_maxValue, m_neutralValuePct);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OPvPCapturePoint::SetCapturePointData(uint32 entry, uint32 map, Position const& pos, QuaternionData const& rot)
|
||||
{
|
||||
TC_LOG_DEBUG("outdoorpvp", "Creating capture point %u", entry);
|
||||
@@ -149,12 +169,7 @@ bool OPvPCapturePoint::SetCapturePointData(uint32 entry, uint32 map, Position co
|
||||
if (!m_capturePointSpawnId)
|
||||
return false;
|
||||
|
||||
// get the needed values from goinfo
|
||||
m_maxValue = (float)goinfo->controlZone.maxTime;
|
||||
m_maxSpeed = m_maxValue / (goinfo->controlZone.minTime ? goinfo->controlZone.minTime : 60);
|
||||
m_neutralValuePct = goinfo->controlZone.neutralPercent;
|
||||
m_minValue = CalculatePct(m_maxValue, m_neutralValuePct);
|
||||
|
||||
SetCapturePointData(entry);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -128,6 +128,7 @@ class TC_GAME_API OPvPCapturePoint
|
||||
void AddGO(uint32 type, ObjectGuid::LowType guid);
|
||||
void AddCre(uint32 type, ObjectGuid::LowType guid);
|
||||
|
||||
bool SetCapturePointData(uint32 entry);
|
||||
bool SetCapturePointData(uint32 entry, uint32 map, Position const& pos, QuaternionData const& rot);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -16,8 +16,10 @@
|
||||
*/
|
||||
|
||||
#include "OutdoorPvPNA.h"
|
||||
#include "CellImpl.h"
|
||||
#include "Creature.h"
|
||||
#include "GameObject.h"
|
||||
#include "GridNotifiersImpl.h"
|
||||
#include "Map.h"
|
||||
#include "ObjectMgr.h"
|
||||
#include "Player.h"
|
||||
@@ -35,98 +37,25 @@ uint32 const FLIGHT_NODES_NUM = 4;
|
||||
uint32 const FlightPathStartNodes[FLIGHT_NODES_NUM] = { 103, 105, 107, 109 };
|
||||
uint32 const FlightPathEndNodes[FLIGHT_NODES_NUM] = { 104, 106, 108, 110 };
|
||||
|
||||
// spawned when the alliance is attacking, horde is in control
|
||||
go_type const HordeControlGOs[NA_CONTROL_GO_NUM] =
|
||||
{
|
||||
{ 182267, 530, { -1815.8000f, 8036.5100f, -26.2354f, -2.897250f }, { 0.0f, 0.0f, 0.992546f, -0.121869f } }, //ALLY_ROOST_SOUTH
|
||||
{ 182280, 530, { -1507.9500f, 8132.1000f, -19.5585f, -1.343900f }, { 0.0f, 0.0f, 0.622515f, -0.782608f } }, //ALLY_ROOST_WEST
|
||||
{ 182281, 530, { -1384.5200f, 7779.3300f, -11.1663f, -0.575959f }, { 0.0f, 0.0f, 0.284015f, -0.958820f } }, //ALLY_ROOST_NORTH
|
||||
{ 182282, 530, { -1650.1100f, 7732.5600f, -15.4505f, -2.809980f }, { 0.0f, 0.0f, 0.986286f, -0.165048f } }, //ALLY_ROOST_EAST
|
||||
|
||||
{ 182222, 530, { -1825.4022f, 8039.2602f, -26.0800f, -2.897250f }, { 0.0f, 0.0f, 0.992546f, -0.121869f } }, //HORDE_BOMB_WAGON_SOUTH
|
||||
{ 182272, 530, { -1515.3700f, 8136.9100f, -20.4200f, -1.343900f }, { 0.0f, 0.0f, 0.622515f, -0.782608f } }, //HORDE_BOMB_WAGON_WEST
|
||||
{ 182273, 530, { -1377.9500f, 7773.4400f, -10.3100f, -0.575959f }, { 0.0f, 0.0f, 0.284015f, -0.958820f } }, //HORDE_BOMB_WAGON_NORTH
|
||||
{ 182274, 530, { -1659.8700f, 7733.1500f, -15.7500f, -2.809980f }, { 0.0f, 0.0f, 0.986286f, -0.165048f } }, //HORDE_BOMB_WAGON_EAST
|
||||
|
||||
{ 182266, 530, { -1815.8000f, 8036.5100f, -26.2354f, -2.897250f }, { 0.0f, 0.0f, 0.992546f, -0.121869f } }, //DESTROYED_ALLY_ROOST_SOUTH
|
||||
{ 182275, 530, { -1507.9500f, 8132.1000f, -19.5585f, -1.343900f }, { 0.0f, 0.0f, 0.622515f, -0.782608f } }, //DESTROYED_ALLY_ROOST_WEST
|
||||
{ 182276, 530, { -1384.5200f, 7779.3300f, -11.1663f, -0.575959f }, { 0.0f, 0.0f, 0.284015f, -0.958820f } }, //DESTROYED_ALLY_ROOST_NORTH
|
||||
{ 182277, 530, { -1650.1100f, 7732.5600f, -15.4505f, -2.809980f }, { 0.0f, 0.0f, 0.986286f, -0.165048f } } //DESTROYED_ALLY_ROOST_EAST
|
||||
};
|
||||
|
||||
// spawned when the horde is attacking, alliance is in control
|
||||
go_type const AllianceControlGOs[NA_CONTROL_GO_NUM] =
|
||||
{
|
||||
{ 182301, 530, { -1815.8000f, 8036.5100f, -26.2354f, -2.897250f }, { 0.0f, 0.0f, 0.992546f, -0.121869f } }, //HORDE_ROOST_SOUTH
|
||||
{ 182302, 530, { -1507.9500f, 8132.1000f, -19.5585f, -1.343900f }, { 0.0f, 0.0f, 0.622515f, -0.782608f } }, //HORDE_ROOST_WEST
|
||||
{ 182303, 530, { -1384.5200f, 7779.3300f, -11.1663f, -0.575959f }, { 0.0f, 0.0f, 0.284015f, -0.958820f } }, //HORDE_ROOST_NORTH
|
||||
{ 182304, 530, { -1650.1100f, 7732.5600f, -15.4505f, -2.809980f }, { 0.0f, 0.0f, 0.986286f, -0.165048f } }, //HORDE_ROOST_EAST
|
||||
|
||||
{ 182305, 530, { -1825.4022f, 8039.2602f, -26.0800f, -2.897250f }, { 0.0f, 0.0f, 0.992546f, -0.121869f } }, //ALLY_BOMB_WAGON_SOUTH
|
||||
{ 182306, 530, { -1515.3700f, 8136.9100f, -20.4200f, -1.343900f }, { 0.0f, 0.0f, 0.622515f, -0.782608f } }, //ALLY_BOMB_WAGON_WEST
|
||||
{ 182307, 530, { -1377.9500f, 7773.4400f, -10.3100f, -0.575959f }, { 0.0f, 0.0f, 0.284015f, -0.958820f } }, //ALLY_BOMB_WAGON_NORTH
|
||||
{ 182308, 530, { -1659.8700f, 7733.1500f, -15.7500f, -2.809980f }, { 0.0f, 0.0f, 0.986286f, -0.165048f } }, //ALLY_BOMB_WAGON_EAST
|
||||
|
||||
{ 182297, 530, { -1815.8000f, 8036.5100f, -26.2354f, -2.897250f }, { 0.0f, 0.0f, 0.992546f, -0.121869f } }, //DESTROYED_HORDE_ROOST_SOUTH
|
||||
{ 182298, 530, { -1507.9500f, 8132.1000f, -19.5585f, -1.343900f }, { 0.0f, 0.0f, 0.622515f, -0.782608f } }, //DESTROYED_HORDE_ROOST_WEST
|
||||
{ 182299, 530, { -1384.5200f, 7779.3300f, -11.1663f, -0.575959f }, { 0.0f, 0.0f, 0.284015f, -0.958820f } }, //DESTROYED_HORDE_ROOST_NORTH
|
||||
{ 182300, 530, { -1650.1100f, 7732.5600f, -15.4505f, -2.809980f }, { 0.0f, 0.0f, 0.986286f, -0.165048f } } //DESTROYED_HORDE_ROOST_EAST
|
||||
};
|
||||
|
||||
creature_type const HordeControlNPCs[NA_CONTROL_NPC_NUM] =
|
||||
{
|
||||
{ 18816, 530, { -1523.92f, 7951.76f, -17.6942f, 3.51172f } },
|
||||
{ 18821, 530, { -1527.75f, 7952.46f, -17.6948f, 3.99317f } },
|
||||
{ 21474, 530, { -1520.14f, 7927.11f, -20.2527f, 3.39389f } },
|
||||
{ 21484, 530, { -1524.84f, 7930.34f, -20.1820f, 3.64050f } },
|
||||
{ 21483, 530, { -1570.01f, 7993.80f, -22.4505f, 5.02655f } },
|
||||
{ 18192, 530, { -1654.06f, 8000.46f, -26.5900f, 3.37000f } },
|
||||
{ 18192, 530, { -1487.18f, 7899.10f, -19.5300f, 0.95400f } },
|
||||
{ 18192, 530, { -1480.88f, 7908.79f, -19.1900f, 4.48500f } },
|
||||
{ 18192, 530, { -1540.56f, 7995.44f, -20.4500f, 0.94700f } },
|
||||
{ 18192, 530, { -1546.95f, 8000.85f, -20.7200f, 6.03500f } },
|
||||
{ 18192, 530, { -1595.31f, 7860.53f, -21.5100f, 3.74700f } },
|
||||
{ 18192, 530, { -1642.31f, 7995.59f, -25.8000f, 3.31700f } },
|
||||
{ 18192, 530, { -1545.46f, 7995.35f, -20.6300f, 1.09400f } },
|
||||
{ 18192, 530, { -1487.58f, 7907.99f, -19.2700f, 5.56700f } },
|
||||
{ 18192, 530, { -1651.54f, 7988.56f, -26.5289f, 2.98451f } },
|
||||
{ 18192, 530, { -1602.46f, 7866.43f, -22.1177f, 4.74729f } },
|
||||
{ 18192, 530, { -1591.22f, 7875.29f, -22.3536f, 4.34587f } },
|
||||
{ 18192, 530, { -1550.60f, 7944.45f, -21.6300f, 3.55900f } },
|
||||
{ 18192, 530, { -1545.57f, 7935.83f, -21.1300f, 3.44800f } },
|
||||
{ 18192, 530, { -1550.86f, 7937.56f, -21.7000f, 3.80100f } }
|
||||
};
|
||||
|
||||
creature_type const AllianceControlNPCs[NA_CONTROL_NPC_NUM] =
|
||||
{
|
||||
{ 18817, 530, { -1591.18f, 8020.39f, -22.2042f, 4.59022f } },
|
||||
{ 18822, 530, { -1588.00f, 8019.00f, -22.2042f, 4.06662f } },
|
||||
{ 21485, 530, { -1521.93f, 7927.37f, -20.2299f, 3.24631f } },
|
||||
{ 21487, 530, { -1540.33f, 7971.95f, -20.7186f, 3.07178f } },
|
||||
{ 21488, 530, { -1570.01f, 7993.80f, -22.4505f, 5.02655f } },
|
||||
{ 18256, 530, { -1654.06f, 8000.46f, -26.5900f, 3.37000f } },
|
||||
{ 18256, 530, { -1487.18f, 7899.10f, -19.5300f, 0.95400f } },
|
||||
{ 18256, 530, { -1480.88f, 7908.79f, -19.1900f, 4.48500f } },
|
||||
{ 18256, 530, { -1540.56f, 7995.44f, -20.4500f, 0.94700f } },
|
||||
{ 18256, 530, { -1546.95f, 8000.85f, -20.7200f, 6.03500f } },
|
||||
{ 18256, 530, { -1595.31f, 7860.53f, -21.5100f, 3.74700f } },
|
||||
{ 18256, 530, { -1642.31f, 7995.59f, -25.8000f, 3.31700f } },
|
||||
{ 18256, 530, { -1545.46f, 7995.35f, -20.6300f, 1.09400f } },
|
||||
{ 18256, 530, { -1487.58f, 7907.99f, -19.2700f, 5.56700f } },
|
||||
{ 18256, 530, { -1651.54f, 7988.56f, -26.5289f, 2.98451f } },
|
||||
{ 18256, 530, { -1602.46f, 7866.43f, -22.1177f, 4.74729f } },
|
||||
{ 18256, 530, { -1591.22f, 7875.29f, -22.3536f, 4.34587f } },
|
||||
{ 18256, 530, { -1603.75f, 8000.36f, -24.1800f, 4.51600f } },
|
||||
{ 18256, 530, { -1585.73f, 7994.68f, -23.2900f, 4.43900f } },
|
||||
{ 18256, 530, { -1595.50f, 7991.27f, -23.5300f, 4.73800f } }
|
||||
};
|
||||
|
||||
OutdoorPvPNA::OutdoorPvPNA()
|
||||
{
|
||||
m_TypeId = OUTDOOR_PVP_NA;
|
||||
m_obj = nullptr;
|
||||
}
|
||||
|
||||
void OutdoorPvPNA::OnGameObjectCreate(GameObject* go)
|
||||
{
|
||||
switch (go->GetEntry())
|
||||
{
|
||||
case 182210:
|
||||
m_obj->m_capturePointSpawnId = go->GetSpawnId();
|
||||
AddCapturePoint(m_obj);
|
||||
break;
|
||||
}
|
||||
|
||||
OutdoorPvP::OnGameObjectCreate(go);
|
||||
}
|
||||
|
||||
void OutdoorPvPNA::HandleKillImpl(Player* player, Unit* killed)
|
||||
{
|
||||
if (killed->GetTypeId() == TYPEID_PLAYER && player->GetTeam() != killed->ToPlayer()->GetTeam())
|
||||
@@ -139,40 +68,16 @@ void OutdoorPvPNA::HandleKillImpl(Player* player, Unit* killed)
|
||||
}
|
||||
}
|
||||
|
||||
uint32 OPvPCapturePointNA::GetAliveGuardsCount()
|
||||
uint32 OPvPCapturePointNA::GetAliveGuardsCount() const
|
||||
{
|
||||
uint32 cnt = 0;
|
||||
for (std::map<uint32, ObjectGuid::LowType>::iterator itr = m_Creatures.begin(); itr != m_Creatures.end(); ++itr)
|
||||
{
|
||||
switch (itr->first)
|
||||
{
|
||||
case NA_NPC_GUARD_01:
|
||||
case NA_NPC_GUARD_02:
|
||||
case NA_NPC_GUARD_03:
|
||||
case NA_NPC_GUARD_04:
|
||||
case NA_NPC_GUARD_05:
|
||||
case NA_NPC_GUARD_06:
|
||||
case NA_NPC_GUARD_07:
|
||||
case NA_NPC_GUARD_08:
|
||||
case NA_NPC_GUARD_09:
|
||||
case NA_NPC_GUARD_10:
|
||||
case NA_NPC_GUARD_11:
|
||||
case NA_NPC_GUARD_12:
|
||||
case NA_NPC_GUARD_13:
|
||||
case NA_NPC_GUARD_14:
|
||||
case NA_NPC_GUARD_15:
|
||||
{
|
||||
auto bounds = m_PvP->GetMap()->GetCreatureBySpawnIdStore().equal_range(itr->second);
|
||||
for (auto itr2 = bounds.first; itr2 != bounds.second; ++itr2)
|
||||
if (itr2->second->IsAlive())
|
||||
++cnt;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return cnt;
|
||||
Position searchCenter = { -1572.57f, 7945.3f, -22.475f, 2.05949f };
|
||||
|
||||
std::vector<WorldObject*> guards;
|
||||
Trinity::ObjectEntryAndPrivateOwnerIfExistsCheck check(ObjectGuid::Empty, GetControllingFaction() == HORDE ? 18192 : 18256);
|
||||
Trinity::WorldObjectListSearcher<Trinity::ObjectEntryAndPrivateOwnerIfExistsCheck> searcher(nullptr, guards, check, GRID_MAP_TYPE_MASK_CREATURE);
|
||||
Cell::VisitGridObjects(searchCenter.GetPositionX(), searchCenter.GetPositionY(), m_PvP->GetMap(), searcher, SIZE_OF_GRIDS);
|
||||
|
||||
return std::count_if(guards.begin(), guards.end(), [](WorldObject* guard) { return guard->IsUnit() && guard->ToUnit()->IsAlive(); });
|
||||
}
|
||||
|
||||
uint32 OPvPCapturePointNA::GetControllingFaction() const
|
||||
@@ -180,56 +85,6 @@ uint32 OPvPCapturePointNA::GetControllingFaction() const
|
||||
return m_ControllingFaction;
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::SpawnNPCsForTeam(uint32 team)
|
||||
{
|
||||
creature_type const* creatures = nullptr;
|
||||
if (team == ALLIANCE)
|
||||
creatures = AllianceControlNPCs;
|
||||
else if (team == HORDE)
|
||||
creatures = HordeControlNPCs;
|
||||
else
|
||||
return;
|
||||
for (int i = 0; i < NA_CONTROL_NPC_NUM; ++i)
|
||||
AddCreature(i, creatures[i].entry, creatures[i].map, creatures[i].pos, OutdoorPvP::GetTeamIdByTeam(team), 1000000);
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::DeSpawnNPCs()
|
||||
{
|
||||
for (int i = 0; i < NA_CONTROL_NPC_NUM; ++i)
|
||||
DelCreature(i);
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::SpawnGOsForTeam(uint32 team)
|
||||
{
|
||||
go_type const* gos = nullptr;
|
||||
if (team == ALLIANCE)
|
||||
gos = AllianceControlGOs;
|
||||
else if (team == HORDE)
|
||||
gos = HordeControlGOs;
|
||||
else
|
||||
return;
|
||||
|
||||
// roosts and bomb wagons are spawned when someone uses the matching destroyed roost
|
||||
static ControlGOTypes const GoTypes[] =
|
||||
{
|
||||
NA_DESTROYED_ROOST_S,
|
||||
NA_DESTROYED_ROOST_W,
|
||||
NA_DESTROYED_ROOST_N,
|
||||
NA_DESTROYED_ROOST_E
|
||||
};
|
||||
|
||||
for (ControlGOTypes goType : GoTypes)
|
||||
AddObject(goType, gos[goType].entry, gos[goType].map, gos[goType].pos, gos[goType].rot);
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::DeSpawnGOs()
|
||||
{
|
||||
for (int i = 0; i < NA_CONTROL_GO_NUM; ++i)
|
||||
{
|
||||
DelObject(i);
|
||||
}
|
||||
}
|
||||
|
||||
void OPvPCapturePointNA::FactionTakeOver(uint32 team)
|
||||
{
|
||||
if (m_ControllingFaction)
|
||||
@@ -238,13 +93,10 @@ void OPvPCapturePointNA::FactionTakeOver(uint32 team)
|
||||
m_ControllingFaction = team;
|
||||
if (m_ControllingFaction)
|
||||
sObjectMgr->AddGraveyardLink(NA_HALAA_GRAVEYARD, NA_HALAA_GRAVEYARD_ZONE, m_ControllingFaction, false);
|
||||
DeSpawnGOs();
|
||||
DeSpawnNPCs();
|
||||
SpawnGOsForTeam(team);
|
||||
SpawnNPCsForTeam(team);
|
||||
|
||||
m_GuardsAlive = NA_GUARDS_MAX;
|
||||
m_capturable = false;
|
||||
this->UpdateHalaaWorldState();
|
||||
UpdateHalaaWorldState();
|
||||
if (team == ALLIANCE)
|
||||
{
|
||||
m_WyvernStateSouth = WYVERN_NEU_HORDE;
|
||||
@@ -278,7 +130,7 @@ void OPvPCapturePointNA::FactionTakeOver(uint32 team)
|
||||
OPvPCapturePointNA::OPvPCapturePointNA(OutdoorPvP* pvp) : OPvPCapturePoint(pvp), m_capturable(true), m_GuardsAlive(0), m_ControllingFaction(0), m_WyvernStateNorth(0), m_WyvernStateSouth(0), m_WyvernStateEast(0),
|
||||
m_WyvernStateWest(0), m_HalaaState(HALAA_N), m_RespawnTimer(NA_RESPAWN_TIME), m_GuardCheckTimer(NA_GUARD_CHECK_TIME)
|
||||
{
|
||||
SetCapturePointData(182210, 530, { -1572.57f, 7945.3f, -22.475f, 2.05949f }, { 0.0f, 0.0f, 0.857167f, 0.515038f });
|
||||
SetCapturePointData(182210);
|
||||
}
|
||||
|
||||
bool OutdoorPvPNA::SetupOutdoorPvP()
|
||||
@@ -291,7 +143,6 @@ bool OutdoorPvPNA::SetupOutdoorPvP()
|
||||
// halaa
|
||||
m_obj = new OPvPCapturePointNA(this);
|
||||
|
||||
AddCapturePoint(m_obj);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -426,124 +277,77 @@ bool OPvPCapturePointNA::HandleCustomSpell(Player* player, uint32 spellId, GameO
|
||||
|
||||
int32 OPvPCapturePointNA::HandleOpenGo(Player* player, GameObject* go)
|
||||
{
|
||||
int32 retval = OPvPCapturePoint::HandleOpenGo(player, go);
|
||||
if (retval >= 0)
|
||||
switch (go->GetEntry())
|
||||
{
|
||||
go_type const* gos = nullptr;
|
||||
if (m_ControllingFaction == ALLIANCE)
|
||||
gos = AllianceControlGOs;
|
||||
else if (m_ControllingFaction == HORDE)
|
||||
gos = HordeControlGOs;
|
||||
else
|
||||
return -1;
|
||||
|
||||
int32 del = -1;
|
||||
int32 del2 = -1;
|
||||
int32 add = -1;
|
||||
int32 add2 = -1;
|
||||
|
||||
switch (retval)
|
||||
{
|
||||
case NA_DESTROYED_ROOST_S:
|
||||
del = NA_DESTROYED_ROOST_S;
|
||||
add = NA_ROOST_S;
|
||||
add2 = NA_BOMB_WAGON_S;
|
||||
if (m_ControllingFaction == HORDE)
|
||||
m_WyvernStateSouth = WYVERN_ALLIANCE;
|
||||
else
|
||||
m_WyvernStateSouth = WYVERN_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_S);
|
||||
break;
|
||||
case NA_DESTROYED_ROOST_N:
|
||||
del = NA_DESTROYED_ROOST_N;
|
||||
add = NA_ROOST_N;
|
||||
add2 = NA_BOMB_WAGON_N;
|
||||
if (m_ControllingFaction == HORDE)
|
||||
m_WyvernStateNorth = WYVERN_ALLIANCE;
|
||||
else
|
||||
m_WyvernStateNorth = WYVERN_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_N);
|
||||
break;
|
||||
case NA_DESTROYED_ROOST_W:
|
||||
del = NA_DESTROYED_ROOST_W;
|
||||
add = NA_ROOST_W;
|
||||
add2 = NA_BOMB_WAGON_W;
|
||||
if (m_ControllingFaction == HORDE)
|
||||
m_WyvernStateWest = WYVERN_ALLIANCE;
|
||||
else
|
||||
m_WyvernStateWest = WYVERN_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_W);
|
||||
break;
|
||||
case NA_DESTROYED_ROOST_E:
|
||||
del = NA_DESTROYED_ROOST_E;
|
||||
add = NA_ROOST_E;
|
||||
add2 = NA_BOMB_WAGON_E;
|
||||
if (m_ControllingFaction == HORDE)
|
||||
m_WyvernStateEast = WYVERN_ALLIANCE;
|
||||
else
|
||||
m_WyvernStateEast = WYVERN_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_E);
|
||||
break;
|
||||
case NA_BOMB_WAGON_S:
|
||||
del = NA_BOMB_WAGON_S;
|
||||
del2 = NA_ROOST_S;
|
||||
add = NA_DESTROYED_ROOST_S;
|
||||
if (m_ControllingFaction == HORDE)
|
||||
m_WyvernStateSouth = WYVERN_NEU_ALLIANCE;
|
||||
else
|
||||
m_WyvernStateSouth = WYVERN_NEU_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_S);
|
||||
break;
|
||||
case NA_BOMB_WAGON_N:
|
||||
del = NA_BOMB_WAGON_N;
|
||||
del2 = NA_ROOST_N;
|
||||
add = NA_DESTROYED_ROOST_N;
|
||||
if (m_ControllingFaction == HORDE)
|
||||
m_WyvernStateNorth = WYVERN_NEU_ALLIANCE;
|
||||
else
|
||||
m_WyvernStateNorth = WYVERN_NEU_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_N);
|
||||
break;
|
||||
case NA_BOMB_WAGON_W:
|
||||
del = NA_BOMB_WAGON_W;
|
||||
del2 = NA_ROOST_W;
|
||||
add = NA_DESTROYED_ROOST_W;
|
||||
if (m_ControllingFaction == HORDE)
|
||||
m_WyvernStateWest = WYVERN_NEU_ALLIANCE;
|
||||
else
|
||||
m_WyvernStateWest = WYVERN_NEU_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_W);
|
||||
break;
|
||||
case NA_BOMB_WAGON_E:
|
||||
del = NA_BOMB_WAGON_E;
|
||||
del2 = NA_ROOST_E;
|
||||
add = NA_DESTROYED_ROOST_E;
|
||||
if (m_ControllingFaction == HORDE)
|
||||
m_WyvernStateEast = WYVERN_NEU_ALLIANCE;
|
||||
else
|
||||
m_WyvernStateEast = WYVERN_NEU_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_E);
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (del > -1)
|
||||
DelObject(del);
|
||||
|
||||
if (del2 > -1)
|
||||
DelObject(del2);
|
||||
|
||||
if (add > -1)
|
||||
AddObject(add, gos[add].entry, gos[add].map, gos[add].pos, gos[add].rot);
|
||||
|
||||
if (add2 > -1)
|
||||
AddObject(add2, gos[add2].entry, gos[add2].map, gos[add2].pos, gos[add2].rot);
|
||||
|
||||
return retval;
|
||||
case 182222:
|
||||
m_WyvernStateSouth = WYVERN_NEU_ALLIANCE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_S);
|
||||
break;
|
||||
case 182272:
|
||||
m_WyvernStateWest = WYVERN_NEU_ALLIANCE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_W);
|
||||
break;
|
||||
case 182273:
|
||||
m_WyvernStateNorth = WYVERN_NEU_ALLIANCE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_N);
|
||||
break;
|
||||
case 182274:
|
||||
m_WyvernStateEast = WYVERN_NEU_ALLIANCE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_E);
|
||||
break;
|
||||
case 182266:
|
||||
m_WyvernStateSouth = WYVERN_ALLIANCE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_S);
|
||||
break;
|
||||
case 182275:
|
||||
m_WyvernStateWest = WYVERN_ALLIANCE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_W);
|
||||
break;
|
||||
case 182276:
|
||||
m_WyvernStateNorth = WYVERN_ALLIANCE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_N);
|
||||
break;
|
||||
case 182277:
|
||||
m_WyvernStateEast = WYVERN_ALLIANCE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_E);
|
||||
break;
|
||||
case 182305:
|
||||
m_WyvernStateSouth = WYVERN_NEU_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_S);
|
||||
break;
|
||||
case 182306:
|
||||
m_WyvernStateWest = WYVERN_NEU_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_W);
|
||||
break;
|
||||
case 182307:
|
||||
m_WyvernStateNorth = WYVERN_NEU_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_N);
|
||||
break;
|
||||
case 182308:
|
||||
m_WyvernStateEast = WYVERN_NEU_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_E);
|
||||
break;
|
||||
case 182297:
|
||||
m_WyvernStateSouth = WYVERN_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_S);
|
||||
break;
|
||||
case 182298:
|
||||
m_WyvernStateWest = WYVERN_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_W);
|
||||
break;
|
||||
case 182299:
|
||||
m_WyvernStateNorth = WYVERN_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_N);
|
||||
break;
|
||||
case 182300:
|
||||
m_WyvernStateEast = WYVERN_HORDE;
|
||||
UpdateWyvernRoostWorldState(NA_ROOST_E);
|
||||
break;
|
||||
default:
|
||||
return OPvPCapturePoint::HandleOpenGo(player, go);
|
||||
}
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool OPvPCapturePointNA::Update(uint32 diff)
|
||||
@@ -558,30 +362,37 @@ bool OPvPCapturePointNA::Update(uint32 diff)
|
||||
if (m_GuardCheckTimer < diff)
|
||||
{
|
||||
m_GuardCheckTimer = NA_GUARD_CHECK_TIME;
|
||||
uint32 cnt = GetAliveGuardsCount();
|
||||
if (cnt != m_GuardsAlive)
|
||||
m_GuardsAlive = GetAliveGuardsCount();
|
||||
if (m_GuardsAlive == 0)
|
||||
{
|
||||
m_GuardsAlive = cnt;
|
||||
if (m_GuardsAlive == 0)
|
||||
m_capturable = true;
|
||||
// update the guard count for the players in zone
|
||||
m_PvP->SetWorldState(NA_UI_GUARDS_LEFT, m_GuardsAlive);
|
||||
m_capturable = true;
|
||||
m_RespawnTimer = NA_RESPAWN_TIME;
|
||||
}
|
||||
} else m_GuardCheckTimer -= diff;
|
||||
// update the guard count for the players in zone
|
||||
m_PvP->SetWorldState(NA_UI_GUARDS_LEFT, m_GuardsAlive);
|
||||
}
|
||||
else
|
||||
m_GuardCheckTimer -= diff;
|
||||
|
||||
if (m_capturable || capturable)
|
||||
if (m_capturable)
|
||||
{
|
||||
if (m_RespawnTimer < diff)
|
||||
{
|
||||
// if the guards have been killed, then the challenger has one hour to take over halaa.
|
||||
// in case they fail to do it, the guards are respawned, and they have to start again.
|
||||
if (m_ControllingFaction)
|
||||
{
|
||||
FactionTakeOver(m_ControllingFaction);
|
||||
m_RespawnTimer = NA_RESPAWN_TIME;
|
||||
} else m_RespawnTimer -= diff;
|
||||
|
||||
return OPvPCapturePoint::Update(diff);
|
||||
m_PvP->GetMap()->SpawnGroupSpawn(m_ControllingFaction == HORDE ? SPAWN_GROUP_HORDE_GUARDS : SPAWN_GROUP_ALLIANCE_GUARDS, true);
|
||||
}
|
||||
}
|
||||
else
|
||||
m_RespawnTimer -= diff;
|
||||
}
|
||||
|
||||
if (m_capturable || capturable)
|
||||
return OPvPCapturePoint::Update(diff);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -80,18 +80,6 @@ enum ControlGOTypes
|
||||
NA_ROOST_W = 1,
|
||||
NA_ROOST_N = 2,
|
||||
NA_ROOST_E = 3,
|
||||
|
||||
NA_BOMB_WAGON_S = 4,
|
||||
NA_BOMB_WAGON_W = 5,
|
||||
NA_BOMB_WAGON_N = 6,
|
||||
NA_BOMB_WAGON_E = 7,
|
||||
|
||||
NA_DESTROYED_ROOST_S = 8,
|
||||
NA_DESTROYED_ROOST_W = 9,
|
||||
NA_DESTROYED_ROOST_N = 10,
|
||||
NA_DESTROYED_ROOST_E = 11,
|
||||
|
||||
NA_CONTROL_GO_NUM = 12
|
||||
};
|
||||
|
||||
enum FlightSpellsNA
|
||||
@@ -102,31 +90,10 @@ enum FlightSpellsNA
|
||||
NA_SPELL_FLY_EAST = 32081
|
||||
};
|
||||
|
||||
enum ControlNPCTypes
|
||||
enum HalaaSpawnGroupIds
|
||||
{
|
||||
NA_NPC_RESEARCHER = 0,
|
||||
NA_NPC_QUARTERMASTER,
|
||||
NA_NPC_BLADE_MERCHANT,
|
||||
NA_NPC_FOOD_MERCHANT,
|
||||
NA_NPC_AMMO,
|
||||
|
||||
NA_NPC_GUARD_01,
|
||||
NA_NPC_GUARD_02,
|
||||
NA_NPC_GUARD_03,
|
||||
NA_NPC_GUARD_04,
|
||||
NA_NPC_GUARD_05,
|
||||
NA_NPC_GUARD_06,
|
||||
NA_NPC_GUARD_07,
|
||||
NA_NPC_GUARD_08,
|
||||
NA_NPC_GUARD_09,
|
||||
NA_NPC_GUARD_10,
|
||||
NA_NPC_GUARD_11,
|
||||
NA_NPC_GUARD_12,
|
||||
NA_NPC_GUARD_13,
|
||||
NA_NPC_GUARD_14,
|
||||
NA_NPC_GUARD_15,
|
||||
|
||||
NA_CONTROL_NPC_NUM
|
||||
SPAWN_GROUP_HORDE_GUARDS = 123,
|
||||
SPAWN_GROUP_ALLIANCE_GUARDS = 124,
|
||||
};
|
||||
|
||||
enum WyvernStates
|
||||
@@ -159,13 +126,9 @@ class OPvPCapturePointNA : public OPvPCapturePoint
|
||||
bool HandleCustomSpell(Player* player, uint32 spellId, GameObject* go) override;
|
||||
int32 HandleOpenGo(Player* player, GameObject* go) override;
|
||||
|
||||
uint32 GetAliveGuardsCount();
|
||||
uint32 GetAliveGuardsCount() const;
|
||||
uint32 GetControllingFaction() const;
|
||||
void FactionTakeOver(uint32 team); // called when a faction takes control
|
||||
void DeSpawnNPCs();
|
||||
void DeSpawnGOs();
|
||||
void SpawnNPCsForTeam(uint32 team);
|
||||
void SpawnGOsForTeam(uint32 team);
|
||||
void UpdateWyvernRoostWorldState(uint32 roost);
|
||||
void UpdateHalaaWorldState();
|
||||
|
||||
@@ -187,6 +150,8 @@ class OutdoorPvPNA : public OutdoorPvP
|
||||
public:
|
||||
OutdoorPvPNA();
|
||||
|
||||
void OnGameObjectCreate(GameObject* go) override;
|
||||
|
||||
bool SetupOutdoorPvP() override;
|
||||
void HandlePlayerEnterZone(Player* player, uint32 zone) override;
|
||||
void HandlePlayerLeaveZone(Player* player, uint32 zone) override;
|
||||
|
||||
Reference in New Issue
Block a user