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

This commit is contained in:
Shauren authored and Ovahlord committed 2022-12-26 11:39:40 +01:00
1 parent cbd46b7664
commit 9f7227e7b5
7 files changed
+335 -355

No files matched your search

@@ -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`, `spawnMask`, `phaseUseFlags`, `PhaseId`, `PhaseGroup`, `terrainSwapMap`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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),
(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);
DELETE FROM `gameobject` WHERE `guid` BETWEEN 23273 AND 23297;
INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `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');
@@ -1571,6 +1571,21 @@ namespace Trinity
ObjectGuid _casterGUID;
};
class ObjectEntryAndPrivateOwnerIfExistsCheck
{
public:
ObjectEntryAndPrivateOwnerIfExistsCheck(ObjectGuid ownerGUID, uint32 entry) : _ownerGUID(ownerGUID), _entry(entry) { }
bool operator()(WorldObject* object) const
{
return object->GetEntry() == _entry && (!object->IsPrivateObject() || object->GetPrivateObjectOwner() == _ownerGUID);
}
private:
ObjectGuid _ownerGUID;
uint32 _entry;
};
// Player checks and do
// Prepare using Builder localized packets with caching and send to player
+1 -1
View File
@@ -2208,7 +2208,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);
}
+22 -8
View File
@@ -138,6 +138,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_CAPTURE_POINT)
{
TC_LOG_ERROR("outdoorpvp", "OutdoorPvP: GO %u is not capture point!", entry);
return false;
}
// get the needed values from goinfo
m_maxValue = (float)goinfo->capturePoint.maxTime;
m_maxSpeed = m_maxValue / (goinfo->capturePoint.minTime ? goinfo->capturePoint.minTime : 60);
m_neutralValuePct = goinfo->capturePoint.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);
@@ -151,16 +171,10 @@ bool OPvPCapturePoint::SetCapturePointData(uint32 entry, uint32 map, Position co
}
m_capturePointSpawnId = sObjectMgr->AddGameObjectData(entry, map, pos, rot, 0);
if (m_capturePointSpawnId == 0)
if (!m_capturePointSpawnId)
return false;
// get the needed values from goinfo
m_maxValue = (float)goinfo->capturePoint.maxTime;
m_maxSpeed = m_maxValue / (goinfo->capturePoint.minTime ? goinfo->capturePoint.minTime : 60);
m_neutralValuePct = goinfo->capturePoint.neutralPercent;
m_minValue = CalculatePct(m_maxValue, m_neutralValuePct);
SetCapturePointData(entry);
return true;
}
+1
View File
@@ -131,6 +131,7 @@ class TC_GAME_API OPvPCapturePoint
void AddGO(uint32 type, ObjectGuid::LowType guid, uint32 entry = 0);
void AddCre(uint32 type, ObjectGuid::LowType guid, uint32 entry = 0);
bool SetCapturePointData(uint32 entry);
bool SetCapturePointData(uint32 entry, uint32 map, Position const& pos, QuaternionData const& rot);
protected:
+104 -302
View File
@@ -15,129 +15,50 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ScriptMgr.h"
#include "OutdoorPvPNA.h"
#include "CellImpl.h"
#include "Creature.h"
#include "GameObject.h"
#include "GridNotifiersImpl.h"
#include "MapManager.h"
#include "ObjectMgr.h"
#include "OutdoorPvPMgr.h"
#include "OutdoorPvPNA.h"
#include "Player.h"
#include "ScriptMgr.h"
#include "WorldPacket.h"
#include "WorldStatePackets.h"
// kill credit for pks
uint32 const NA_CREDIT_MARKER = 24867;
uint32 const NA_GUARDS_MAX = 15;
uint32 const NA_BUFF_ZONE = 3518;
uint32 const NA_HALAA_GRAVEYARD = 993;
uint32 const NA_HALAA_GRAVEYARD_ZONE = 3518; // need to add zone id, not area id
uint32 const NA_RESPAWN_TIME = 3600000; // one hour to capture after defeating all guards
uint32 const NA_GUARD_CHECK_TIME = 500; // every half second
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())
@@ -150,40 +71,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 it = bounds.first; it != bounds.second; ++it)
if (it->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
@@ -191,56 +88,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)
@@ -249,13 +96,9 @@ 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;
@@ -291,7 +134,7 @@ OPvPCapturePoint(pvp), m_capturable(true), m_GuardsAlive(0), m_ControllingFactio
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()
@@ -304,7 +147,6 @@ bool OutdoorPvPNA::SetupOutdoorPvP()
// halaa
m_obj = new OPvPCapturePointNA(this);
AddCapturePoint(m_obj);
return true;
}
@@ -439,124 +281,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())
{
const go_type * 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;
case 182222:
m_WyvernStateSouth = WYVERN_NEU_ALLIANCE;
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;
case 182272:
m_WyvernStateWest = WYVERN_NEU_ALLIANCE;
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;
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 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;
case 182266:
m_WyvernStateSouth = WYVERN_ALLIANCE;
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;
case 182275:
m_WyvernStateWest = WYVERN_ALLIANCE;
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;
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 -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;
return OPvPCapturePoint::HandleOpenGo(player, go);
}
return -1;
return 0;
}
bool OPvPCapturePointNA::Update(uint32 diff)
@@ -571,30 +366,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;
}
+6 -44
View File
@@ -88,18 +88,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
@@ -110,31 +98,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
@@ -171,19 +138,12 @@ class OPvPCapturePointNA : public OPvPCapturePoint
int32 HandleOpenGo(Player* player, GameObject* go) override;
uint32 GetAliveGuardsCount();
uint32 GetAliveGuardsCount() const;
uint32 GetControllingFaction() const;
protected:
// called when a faction takes control
void FactionTakeOver(uint32 team);
void DeSpawnNPCs();
void DeSpawnGOs();
void SpawnNPCsForTeam(uint32 team);
void SpawnGOsForTeam(uint32 team);
void UpdateWyvernRoostWorldState(uint32 roost);
void UpdateHalaaWorldState();
@@ -211,6 +171,8 @@ class OutdoorPvPNA : public OutdoorPvP
public:
OutdoorPvPNA();
void OnGameObjectCreate(GameObject* go) override;
bool SetupOutdoorPvP() override;
void HandlePlayerEnterZone(Player* player, uint32 zone) override;