Core/OutdoorPvP: Move Halaa spawns to db using worldstate conditions

This commit is contained in:
Shauren
2022-07-18 20:21:58 +02:00
parent cd4e0c5929
commit c42e52f171
6 changed files with 331 additions and 353 deletions

View 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');

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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:

View File

@@ -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;
}

View File

@@ -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;