diff options
author | Jeremy <Golrag@users.noreply.github.com> | 2024-01-27 18:22:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-27 18:22:26 +0100 |
commit | 3d56cdc08413a0682299136a763e13e67d38818b (patch) | |
tree | 47a4563495265a615de0ef6dd8aa8b89025ef979 | |
parent | 141b881fa00dca87f7f262a1fb0d2d3e8b7735b5 (diff) |
Core/Battlegrounds: Strand of the Ancients Rework (#29576)
6 files changed, 1563 insertions, 975 deletions
diff --git a/sql/updates/world/master/2024_01_27_00_world.sql b/sql/updates/world/master/2024_01_27_00_world.sql new file mode 100644 index 00000000000..36df05dde55 --- /dev/null +++ b/sql/updates/world/master/2024_01_27_00_world.sql @@ -0,0 +1,966 @@ +SET @OGUID := 166633; +SET @SPAWNGROUP := 1174; +SET @CGUID := 223867; + +-- Areatrigger Scripts for buffs +DELETE FROM `areatrigger_scripts` WHERE `entry` IN (5356, 5355, 5354); +INSERT INTO `areatrigger_scripts` (`entry`,`ScriptName`) VALUES +(5356, 'at_battleground_buffs'), +(5355, 'at_battleground_buffs'), +(5354, 'at_battleground_buffs'); + +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_place_seaforium_charge'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(52410, 'spell_place_seaforium_charge'); + +DELETE FROM `spawn_group_template` WHERE `groupId` BETWEEN @SPAWNGROUP+0 AND @SPAWNGROUP+40; +INSERT INTO `spawn_group_template` (`groupId`, `groupName`, `groupFlags`) VALUES +(@SPAWNGROUP+0, 'Strand of the Ancients - Green Emerald Gate - Sigil', 0x20), +(@SPAWNGROUP+1, 'Strand of the Ancients - Blue Sapphire Gate - Sigil', 0x20), +(@SPAWNGROUP+2, 'Strand of the Ancients - Red Sun Gate - Sigil', 0x20), +(@SPAWNGROUP+3, 'Strand of the Ancients - Purple Amethyst - Sigil', 0x20), +(@SPAWNGROUP+4, 'Strand of the Ancients - Yellow Moon - Sigil', 0x20), +(@SPAWNGROUP+5, 'Strand of the Ancients - First Line - Horde Bombs', 0x20), +(@SPAWNGROUP+6, 'Strand of the Ancients - First Line - Alliance Bombs', 0x20), +(@SPAWNGROUP+7, 'Strand of the Ancients - Second Line - Horde Bombs', 0x20), +(@SPAWNGROUP+8, 'Strand of the Ancients - Second Line - Alliance Bombs', 0x20), +(@SPAWNGROUP+9, 'Strand of the Ancients - Third Line - Horde Bombs', 0x20), +(@SPAWNGROUP+10, 'Strand of the Ancients - Third Line - Alliance Bombs', 0x20), +(@SPAWNGROUP+11, 'Strand of the Ancients - Horde Attacking', 0x20), -- Bombs, graveyards, cannons +(@SPAWNGROUP+12, 'Strand of the Ancients - Alliance Attacking', 0x20), -- Bombs, graveyards, cannons +(@SPAWNGROUP+13, 'Strand of the Ancients - Beach - Horde Demolishers', 0x20), +(@SPAWNGROUP+14, 'Strand of the Ancients - Beach - Alliance Demolishers', 0x20), +(@SPAWNGROUP+15, 'Strand of the Ancients - West Graveyard - Horde Graveyard', 0x20), +(@SPAWNGROUP+16, 'Strand of the Ancients - West Graveyard - Alliance Graveyard', 0x20), +(@SPAWNGROUP+17, 'Strand of the Ancients - West Graveyard - Horde Demolisher', 0x20), +(@SPAWNGROUP+18, 'Strand of the Ancients - West Graveyard - Alliance Demolisher', 0x20), +(@SPAWNGROUP+19, 'Strand of the Ancients - East Graveyard - Horde Graveyard', 0x20), +(@SPAWNGROUP+20, 'Strand of the Ancients - East Graveyard - Alliance Graveyard', 0x20), +(@SPAWNGROUP+21, 'Strand of the Ancients - East Graveyard - Horde Demolisher', 0x20), +(@SPAWNGROUP+22, 'Strand of the Ancients - East Graveyard - Alliance Demolisher', 0x20), +(@SPAWNGROUP+23, 'Strand of the Ancients - Mid Graveyard - Horde Graveyard', 0x20), +(@SPAWNGROUP+24, 'Strand of the Ancients - Mid Graveyard - Alliance Graveyard', 0x20), +(@SPAWNGROUP+25, 'Strand of the Ancients - Cannons - Horde Attacking', 0x20), +(@SPAWNGROUP+26, 'Strand of the Ancients - Cannons - Alliance Attacking', 0x20); + +DELETE FROM `spawn_group` WHERE `groupId` BETWEEN @SPAWNGROUP+0 AND @SPAWNGROUP+50; +INSERT INTO `spawn_group` (`groupId`, `spawnType`, `spawnId`) VALUES +-- sigils +(@SPAWNGROUP+0, 1, @OGUID+48), +(@SPAWNGROUP+1, 1, @OGUID+28), +(@SPAWNGROUP+2, 1, @OGUID+51), +(@SPAWNGROUP+3, 1, @OGUID+58), +(@SPAWNGROUP+4, 1, @OGUID+60), +-- bombs, first line, horde +(@SPAWNGROUP+5, 1, @OGUID+67), +(@SPAWNGROUP+5, 1, @OGUID+75), +(@SPAWNGROUP+5, 1, @OGUID+79), +(@SPAWNGROUP+5, 1, @OGUID+66), +(@SPAWNGROUP+5, 1, @OGUID+70), +(@SPAWNGROUP+5, 1, @OGUID+93), +(@SPAWNGROUP+5, 1, @OGUID+72), +(@SPAWNGROUP+5, 1, @OGUID+73), +(@SPAWNGROUP+5, 1, @OGUID+74), +(@SPAWNGROUP+5, 1, @OGUID+90), +(@SPAWNGROUP+5, 1, @OGUID+89), +(@SPAWNGROUP+5, 1, @OGUID+33), +(@SPAWNGROUP+5, 1, @OGUID+92), +(@SPAWNGROUP+5, 1, @OGUID+87), +(@SPAWNGROUP+5, 1, @OGUID+91), +(@SPAWNGROUP+5, 1, @OGUID+77), +(@SPAWNGROUP+5, 1, @OGUID+78), +(@SPAWNGROUP+5, 1, @OGUID+65), +(@SPAWNGROUP+5, 1, @OGUID+84), +(@SPAWNGROUP+5, 1, @OGUID+86), +(@SPAWNGROUP+5, 1, @OGUID+76), +(@SPAWNGROUP+5, 1, @OGUID+83), +(@SPAWNGROUP+5, 1, @OGUID+80), +(@SPAWNGROUP+5, 1, @OGUID+69), +(@SPAWNGROUP+5, 1, @OGUID+68), +(@SPAWNGROUP+5, 1, @OGUID+82), +(@SPAWNGROUP+5, 1, @OGUID+85), +(@SPAWNGROUP+5, 1, @OGUID+81), +(@SPAWNGROUP+5, 1, @OGUID+88), +(@SPAWNGROUP+5, 1, @OGUID+71), +-- bombs, first line, alliance +(@SPAWNGROUP+6, 1, @OGUID+203), +(@SPAWNGROUP+6, 1, @OGUID+206), +(@SPAWNGROUP+6, 1, @OGUID+202), +(@SPAWNGROUP+6, 1, @OGUID+204), +(@SPAWNGROUP+6, 1, @OGUID+197), +(@SPAWNGROUP+6, 1, @OGUID+194), +(@SPAWNGROUP+6, 1, @OGUID+192), +(@SPAWNGROUP+6, 1, @OGUID+196), +(@SPAWNGROUP+6, 1, @OGUID+198), +(@SPAWNGROUP+6, 1, @OGUID+201), +(@SPAWNGROUP+6, 1, @OGUID+200), +(@SPAWNGROUP+6, 1, @OGUID+146), +(@SPAWNGROUP+6, 1, @OGUID+205), +(@SPAWNGROUP+6, 1, @OGUID+199), +(@SPAWNGROUP+6, 1, @OGUID+193), +(@SPAWNGROUP+6, 1, @OGUID+195), +(@SPAWNGROUP+6, 1, @OGUID+188), +(@SPAWNGROUP+6, 1, @OGUID+190), +(@SPAWNGROUP+6, 1, @OGUID+181), +(@SPAWNGROUP+6, 1, @OGUID+180), +(@SPAWNGROUP+6, 1, @OGUID+189), +(@SPAWNGROUP+6, 1, @OGUID+182), +(@SPAWNGROUP+6, 1, @OGUID+184), +(@SPAWNGROUP+6, 1, @OGUID+179), +(@SPAWNGROUP+6, 1, @OGUID+187), +(@SPAWNGROUP+6, 1, @OGUID+191), +(@SPAWNGROUP+6, 1, @OGUID+183), +(@SPAWNGROUP+6, 1, @OGUID+186), +(@SPAWNGROUP+6, 1, @OGUID+185), +(@SPAWNGROUP+6, 1, @OGUID+178), +-- bombs, second line, horde +(@SPAWNGROUP+7, 1, @OGUID+102), +(@SPAWNGROUP+7, 1, @OGUID+98), +(@SPAWNGROUP+7, 1, @OGUID+100), +(@SPAWNGROUP+7, 1, @OGUID+99), +(@SPAWNGROUP+7, 1, @OGUID+97), +(@SPAWNGROUP+7, 1, @OGUID+108), +(@SPAWNGROUP+7, 1, @OGUID+109), +(@SPAWNGROUP+7, 1, @OGUID+104), +(@SPAWNGROUP+7, 1, @OGUID+103), +(@SPAWNGROUP+7, 1, @OGUID+106), +(@SPAWNGROUP+7, 1, @OGUID+96), +(@SPAWNGROUP+7, 1, @OGUID+105), +(@SPAWNGROUP+7, 1, @OGUID+101), +(@SPAWNGROUP+7, 1, @OGUID+107), +-- bombs, second line, alliance +(@SPAWNGROUP+8, 1, @OGUID+207), +(@SPAWNGROUP+8, 1, @OGUID+208), +(@SPAWNGROUP+8, 1, @OGUID+209), +(@SPAWNGROUP+8, 1, @OGUID+210), +(@SPAWNGROUP+8, 1, @OGUID+211), +(@SPAWNGROUP+8, 1, @OGUID+212), +(@SPAWNGROUP+8, 1, @OGUID+213), +(@SPAWNGROUP+8, 1, @OGUID+214), +(@SPAWNGROUP+8, 1, @OGUID+215), +(@SPAWNGROUP+8, 1, @OGUID+216), +(@SPAWNGROUP+8, 1, @OGUID+217), +(@SPAWNGROUP+8, 1, @OGUID+218), +(@SPAWNGROUP+8, 1, @OGUID+219), +(@SPAWNGROUP+8, 1, @OGUID+220), +-- bombs, third line, horde +(@SPAWNGROUP+9, 1, @OGUID+111), +(@SPAWNGROUP+9, 1, @OGUID+112), +(@SPAWNGROUP+9, 1, @OGUID+113), +(@SPAWNGROUP+9, 1, @OGUID+114), +(@SPAWNGROUP+9, 1, @OGUID+115), +(@SPAWNGROUP+9, 1, @OGUID+116), +(@SPAWNGROUP+9, 1, @OGUID+117), +(@SPAWNGROUP+9, 1, @OGUID+118), +(@SPAWNGROUP+9, 1, @OGUID+119), +(@SPAWNGROUP+9, 1, @OGUID+120), +(@SPAWNGROUP+9, 1, @OGUID+121), +(@SPAWNGROUP+9, 1, @OGUID+122), +(@SPAWNGROUP+9, 1, @OGUID+123), +(@SPAWNGROUP+9, 1, @OGUID+124), +(@SPAWNGROUP+9, 1, @OGUID+125), +(@SPAWNGROUP+9, 1, @OGUID+126), +(@SPAWNGROUP+9, 1, @OGUID+127), +(@SPAWNGROUP+9, 1, @OGUID+128), +(@SPAWNGROUP+9, 1, @OGUID+129), +(@SPAWNGROUP+9, 1, @OGUID+130), +(@SPAWNGROUP+9, 1, @OGUID+131), +(@SPAWNGROUP+9, 1, @OGUID+132), +(@SPAWNGROUP+9, 1, @OGUID+133), +-- bombs, third line, alliance +(@SPAWNGROUP+10, 1, @OGUID+221), +(@SPAWNGROUP+10, 1, @OGUID+222), +(@SPAWNGROUP+10, 1, @OGUID+223), +(@SPAWNGROUP+10, 1, @OGUID+224), +(@SPAWNGROUP+10, 1, @OGUID+225), +(@SPAWNGROUP+10, 1, @OGUID+226), +(@SPAWNGROUP+10, 1, @OGUID+227), +(@SPAWNGROUP+10, 1, @OGUID+228), +(@SPAWNGROUP+10, 1, @OGUID+229), +(@SPAWNGROUP+10, 1, @OGUID+230), +(@SPAWNGROUP+10, 1, @OGUID+231), +(@SPAWNGROUP+10, 1, @OGUID+232), +(@SPAWNGROUP+10, 1, @OGUID+233), +(@SPAWNGROUP+10, 1, @OGUID+234), +(@SPAWNGROUP+10, 1, @OGUID+235), +(@SPAWNGROUP+10, 1, @OGUID+236), +(@SPAWNGROUP+10, 1, @OGUID+237), +(@SPAWNGROUP+10, 1, @OGUID+238), +(@SPAWNGROUP+10, 1, @OGUID+239), +(@SPAWNGROUP+10, 1, @OGUID+240), +(@SPAWNGROUP+10, 1, @OGUID+241), +(@SPAWNGROUP+10, 1, @OGUID+242), +(@SPAWNGROUP+10, 1, @OGUID+243), +-- bombs/demolishers/spirit guides, horde attacking +(@SPAWNGROUP+11, 1, @OGUID+14), +(@SPAWNGROUP+11, 1, @OGUID+17), +(@SPAWNGROUP+11, 1, @OGUID+12), +(@SPAWNGROUP+11, 1, @OGUID+9), +(@SPAWNGROUP+11, 1, @OGUID+13), +(@SPAWNGROUP+11, 1, @OGUID+10), +(@SPAWNGROUP+11, 1, @OGUID+18), +(@SPAWNGROUP+11, 1, @OGUID+15), +(@SPAWNGROUP+11, 1, @OGUID+11), +(@SPAWNGROUP+11, 1, @OGUID+8), +(@SPAWNGROUP+11, 1, @OGUID+16), +(@SPAWNGROUP+11, 1, @OGUID+35), +(@SPAWNGROUP+11, 1, @OGUID+40), +(@SPAWNGROUP+11, 1, @OGUID+41), +(@SPAWNGROUP+11, 1, @OGUID+43), +(@SPAWNGROUP+11, 1, @OGUID+39), +(@SPAWNGROUP+11, 1, @OGUID+37), +(@SPAWNGROUP+11, 1, @OGUID+44), +(@SPAWNGROUP+11, 1, @OGUID+38), +(@SPAWNGROUP+11, 1, @OGUID+36), +(@SPAWNGROUP+11, 1, @OGUID+42), +(@SPAWNGROUP+11, 1, @OGUID+34), +(@SPAWNGROUP+11, 1, @OGUID+31), +(@SPAWNGROUP+11, 1, @OGUID+21), +(@SPAWNGROUP+11, 1, @OGUID+26), +(@SPAWNGROUP+11, 1, @OGUID+32), +(@SPAWNGROUP+11, 1, @OGUID+30), +(@SPAWNGROUP+11, 1, @OGUID+23), +(@SPAWNGROUP+11, 1, @OGUID+24), +(@SPAWNGROUP+11, 1, @OGUID+29), +(@SPAWNGROUP+11, 1, @OGUID+19), +(@SPAWNGROUP+11, 1, @OGUID+22), +(@SPAWNGROUP+11, 1, @OGUID+20), +(@SPAWNGROUP+11, 1, @OGUID+25), +(@SPAWNGROUP+11, 1, @OGUID+27), +(@SPAWNGROUP+11, 0, @CGUID+19), +(@SPAWNGROUP+11, 0, @CGUID+21), +(@SPAWNGROUP+11, 0, @CGUID+18), +(@SPAWNGROUP+11, 0, @CGUID+0), +(@SPAWNGROUP+11, 0, @CGUID+1), +(@SPAWNGROUP+11, 0, @CGUID+2), +(@SPAWNGROUP+11, 0, @CGUID+3), +(@SPAWNGROUP+11, 0, @CGUID+4), +(@SPAWNGROUP+11, 0, @CGUID+5), +(@SPAWNGROUP+11, 0, @CGUID+6), +(@SPAWNGROUP+11, 0, @CGUID+7), +(@SPAWNGROUP+11, 0, @CGUID+8), +(@SPAWNGROUP+11, 0, @CGUID+9), +(@SPAWNGROUP+11, 1, @OGUID+52), +(@SPAWNGROUP+11, 1, @OGUID+55), +(@SPAWNGROUP+11, 1, @OGUID+56), +(@SPAWNGROUP+11, 1, @OGUID+57), +(@SPAWNGROUP+11, 1, @OGUID+61), +(@SPAWNGROUP+11, 1, @OGUID+63), +(@SPAWNGROUP+11, 1, @OGUID+2), +(@SPAWNGROUP+11, 1, @OGUID+7), +-- bombs/demolishers/spirit guides, alliance attacking +(@SPAWNGROUP+12, 1, @OGUID+147), +(@SPAWNGROUP+12, 1, @OGUID+149), +(@SPAWNGROUP+12, 1, @OGUID+141), +(@SPAWNGROUP+12, 1, @OGUID+169), +(@SPAWNGROUP+12, 1, @OGUID+171), +(@SPAWNGROUP+12, 1, @OGUID+158), +(@SPAWNGROUP+12, 1, @OGUID+151), +(@SPAWNGROUP+12, 1, @OGUID+156), +(@SPAWNGROUP+12, 1, @OGUID+168), +(@SPAWNGROUP+12, 1, @OGUID+140), +(@SPAWNGROUP+12, 1, @OGUID+165), +(@SPAWNGROUP+12, 1, @OGUID+164), +(@SPAWNGROUP+12, 1, @OGUID+153), +(@SPAWNGROUP+12, 1, @OGUID+154), +(@SPAWNGROUP+12, 1, @OGUID+152), +(@SPAWNGROUP+12, 1, @OGUID+139), +(@SPAWNGROUP+12, 1, @OGUID+143), +(@SPAWNGROUP+12, 1, @OGUID+145), +(@SPAWNGROUP+12, 1, @OGUID+142), +(@SPAWNGROUP+12, 1, @OGUID+170), +(@SPAWNGROUP+12, 1, @OGUID+172), +(@SPAWNGROUP+12, 1, @OGUID+157), +(@SPAWNGROUP+12, 1, @OGUID+144), +(@SPAWNGROUP+12, 1, @OGUID+155), +(@SPAWNGROUP+12, 1, @OGUID+163), +(@SPAWNGROUP+12, 1, @OGUID+137), +(@SPAWNGROUP+12, 1, @OGUID+148), +(@SPAWNGROUP+12, 1, @OGUID+162), +(@SPAWNGROUP+12, 1, @OGUID+166), +(@SPAWNGROUP+12, 1, @OGUID+138), +(@SPAWNGROUP+12, 1, @OGUID+159), +(@SPAWNGROUP+12, 1, @OGUID+167), +(@SPAWNGROUP+12, 1, @OGUID+150), +(@SPAWNGROUP+12, 1, @OGUID+160), +(@SPAWNGROUP+12, 1, @OGUID+161), +(@SPAWNGROUP+12, 0, @CGUID+35), +(@SPAWNGROUP+12, 0, @CGUID+36), +(@SPAWNGROUP+12, 0, @CGUID+34), +(@SPAWNGROUP+12, 0, @CGUID+24), +(@SPAWNGROUP+12, 0, @CGUID+25), +(@SPAWNGROUP+12, 0, @CGUID+26), +(@SPAWNGROUP+12, 0, @CGUID+27), +(@SPAWNGROUP+12, 0, @CGUID+28), +(@SPAWNGROUP+12, 0, @CGUID+29), +(@SPAWNGROUP+12, 0, @CGUID+30), +(@SPAWNGROUP+12, 0, @CGUID+31), +(@SPAWNGROUP+12, 0, @CGUID+32), +(@SPAWNGROUP+12, 0, @CGUID+33), +(@SPAWNGROUP+12, 1, @OGUID+173), +(@SPAWNGROUP+12, 1, @OGUID+174), +(@SPAWNGROUP+12, 1, @OGUID+175), +(@SPAWNGROUP+12, 1, @OGUID+176), +(@SPAWNGROUP+12, 1, @OGUID+177), +(@SPAWNGROUP+12, 1, @OGUID+136), +(@SPAWNGROUP+12, 1, @OGUID+134), +(@SPAWNGROUP+12, 1, @OGUID+135), +-- Beach, demolishers, horde +(@SPAWNGROUP+13, 0, @CGUID+11), +(@SPAWNGROUP+13, 0, @CGUID+12), +-- Beach, demolishers, alliance +(@SPAWNGROUP+14, 0, @CGUID+39), +(@SPAWNGROUP+14, 0, @CGUID+40), +-- West graveyard, Horde +(@SPAWNGROUP+15, 1, @OGUID+94), +(@SPAWNGROUP+15, 0, @CGUID+17), +-- West graveyard, Alliance +(@SPAWNGROUP+16, 1, @OGUID+50), +(@SPAWNGROUP+16, 0, @CGUID+38), +-- West graveyard, Horde Demolishers +(@SPAWNGROUP+17, 0, @CGUID+13), +(@SPAWNGROUP+17, 0, @CGUID+14), +-- West graveyard, Alliance Demolishers +(@SPAWNGROUP+18, 0, @CGUID+41), +(@SPAWNGROUP+18, 0, @CGUID+42), +-- East graveyard, Horde +(@SPAWNGROUP+19, 1, @OGUID+95), +(@SPAWNGROUP+19, 0, @CGUID+22), +-- East graveyard, Alliance +(@SPAWNGROUP+20, 1, @OGUID+46), +(@SPAWNGROUP+20, 0, @CGUID+37), +-- East graveyard, Horde Demolishers +(@SPAWNGROUP+21, 0, @CGUID+15), +(@SPAWNGROUP+21, 0, @CGUID+16), +-- East graveyard, Alliance Demolishers +(@SPAWNGROUP+22, 0, @CGUID+43), +(@SPAWNGROUP+22, 0, @CGUID+44), +-- Central graveyard, Horde +(@SPAWNGROUP+23, 1, @OGUID+110), +(@SPAWNGROUP+23, 0, @CGUID+23), +-- Central graveyard, Alliance +(@SPAWNGROUP+24, 1, @OGUID+54), +(@SPAWNGROUP+24, 0, @CGUID+20); + +DELETE FROM `conditions` where `SourceTypeOrReferenceId` = 17 AND `SourceEntry` IN (60027, 60028); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(17, 0, 60027, 0, 0, 13, 1, 1, 0, 0, 0, 0, 0, '', 'Strand of the Ancients - Spell - Alliance Control Phase Shift - Horde Attacking'), +(17, 0, 60028, 0, 0, 13, 1, 0, 0, 0, 0, 0, 0, '', 'Strand of the Ancients - Spell - Alliance Control Phase Shift - Alliance Attacking'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=33 AND `SourceEntry` BETWEEN @SPAWNGROUP+0 AND @SPAWNGROUP+132; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(33, 0, @SPAWNGROUP+0, 0, 0, 11, 0, 3623, 3, 0, 1, 0, 0, '', 'Strand of the Ancients - Green Emerald Gate - Sigil - Not Destroyed'), +(33, 0, @SPAWNGROUP+1, 0, 0, 11, 0, 3620, 3, 0, 1, 0, 0, '', 'Strand of the Ancients - Blue Sapphire Gate - Sigil - Not Destroyed'), +(33, 0, @SPAWNGROUP+2, 0, 0, 11, 0, 3617, 3, 0, 1, 0, 0, '', 'Strand of the Ancients - Red Sun Gate - Sigil - Not Destroyed'), +(33, 0, @SPAWNGROUP+3, 0, 0, 11, 0, 3614, 3, 0, 1, 0, 0, '', 'Strand of the Ancients - Purple Amethyst Gate - Sigil - Not Destroyed'), +(33, 0, @SPAWNGROUP+4, 0, 0, 11, 0, 3638, 3, 0, 1, 0, 0, '', 'Strand of the Ancients - Yewllow Moon Gate - Sigil - Not Destroyed'), +(33, 0, @SPAWNGROUP+0, 0, 0, 11, 0, 3623, 6, 0, 1, 0, 0, '', 'Strand of the Ancients - Green Emerald Gate - Sigil - Not Destroyed'), +(33, 0, @SPAWNGROUP+1, 0, 0, 11, 0, 3620, 6, 0, 1, 0, 0, '', 'Strand of the Ancients - Blue Sapphire Gate - Sigil - Not Destroyed'), +(33, 0, @SPAWNGROUP+2, 0, 0, 11, 0, 3617, 6, 0, 1, 0, 0, '', 'Strand of the Ancients - Red Sun Gate - Sigil - Not Destroyed'), +(33, 0, @SPAWNGROUP+3, 0, 0, 11, 0, 3614, 6, 0, 1, 0, 0, '', 'Strand of the Ancients - Purple Amethyst Gate - Sigil - Not Destroyed'), +(33, 0, @SPAWNGROUP+4, 0, 0, 11, 0, 3638, 6, 0, 1, 0, 0, '', 'Strand of the Ancients - Yewllow Moon Gate - Sigil - Not Destroyed'), +(33, 0, @SPAWNGROUP+5, 0, 0, 11, 0, 3623, 3, 0, 0, 0, 0, '', 'Strand of the Ancients - First Line - Horde Bombs - Green Gate Destroyed'), +(33, 0, @SPAWNGROUP+5, 0, 1, 11, 0, 3620, 3, 0, 0, 0, 0, '', 'Strand of the Ancients - First Line - Horde Bombs - Blue Gate Destroyed'), +(33, 0, @SPAWNGROUP+5, 0, 0, 11, 0, 4353, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - First Line - Horde Bombs - Horde Attacking'), +(33, 0, @SPAWNGROUP+5, 0, 1, 11, 0, 4353, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - First Line - Horde Bombs - Horde Attacking'), +(33, 0, @SPAWNGROUP+6, 0, 0, 11, 0, 3623, 6, 0, 0, 0, 0, '', 'Strand of the Ancients - First Line - Alliance Bombs - Green Gate Destroyed'), +(33, 0, @SPAWNGROUP+6, 0, 1, 11, 0, 3620, 6, 0, 0, 0, 0, '', 'Strand of the Ancients - First Line - Alliance Bombs - Blue Gate Destroyed'), +(33, 0, @SPAWNGROUP+6, 0, 0, 11, 0, 4352, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - First Line - Alliance Bombs - Alliance Attacking'), +(33, 0, @SPAWNGROUP+6, 0, 1, 11, 0, 4352, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - First Line - Alliance Bombs - Alliance Attacking'), +(33, 0, @SPAWNGROUP+7, 0, 0, 11, 0, 3614, 3, 0, 0, 0, 0, '', 'Strand of the Ancients - Second Line - Horde Bombs - Purple Gate Destroyed'), +(33, 0, @SPAWNGROUP+7, 0, 1, 11, 0, 3617, 3, 0, 0, 0, 0, '', 'Strand of the Ancients - Second Line - Horde Bombs - Red Gate Destroyed'), +(33, 0, @SPAWNGROUP+7, 0, 0, 11, 0, 4353, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - Second Line - Horde Bombs - Horde Attacking'), +(33, 0, @SPAWNGROUP+7, 0, 1, 11, 0, 4353, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - Second Line - Horde Bombs - Horde Attacking'), +(33, 0, @SPAWNGROUP+8, 0, 0, 11, 0, 3614, 6, 0, 0, 0, 0, '', 'Strand of the Ancients - First Line - Alliance Bombs - Purple Gate Destroyed'), +(33, 0, @SPAWNGROUP+8, 0, 1, 11, 0, 3617, 6, 0, 0, 0, 0, '', 'Strand of the Ancients - First Line - Alliance Bombs - Red Gate Destroyed'), +(33, 0, @SPAWNGROUP+8, 0, 0, 11, 0, 4352, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - First Line - Alliance Bombs - Alliance Attacking'), +(33, 0, @SPAWNGROUP+8, 0, 1, 11, 0, 4352, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - First Line - Alliance Bombs - Alliance Attacking'), +(33, 0, @SPAWNGROUP+9, 0, 0, 11, 0, 3638, 3, 0, 0, 0, 0, '', 'Strand of the Ancients - Third Line - Horde Bombs - Yellow Gate Destroyed'), +(33, 0, @SPAWNGROUP+9, 0, 0, 11, 0, 4353, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - Third Line - Horde Bombs - Horde Attacking'), +(33, 0, @SPAWNGROUP+10, 0, 0, 11, 0, 3638, 6, 0, 0, 0, 0, '', 'Strand of the Ancients - Third Line - Alliance Bombs - Yellow Gate Destroyed'), +(33, 0, @SPAWNGROUP+10, 0, 0, 11, 0, 4352, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - Third Line - Alliance Bombs - Alliance Attacking'), +(33, 0, @SPAWNGROUP+11, 0, 0, 11, 0, 4353, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - Beach - Horde Bombs - Horde Attacking'), +(33, 0, @SPAWNGROUP+12, 0, 0, 11, 0, 4352, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - Beach - Alliance Bombs - Alliance Attacking'), +(33, 0, @SPAWNGROUP+13, 0, 0, 11, 0, 4353, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - Beach - Demolishers - Horde Attacking'), +(33, 0, @SPAWNGROUP+13, 0, 0, 11, 0, 3564, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - Beach - Demolishers - Battle started (Timer shown)'), +(33, 0, @SPAWNGROUP+14, 0, 0, 11, 0, 4352, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - Beach - Demolishers - Alliance Attacking'), +(33, 0, @SPAWNGROUP+14, 0, 0, 11, 0, 3564, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - Beach - Demolishers - Battle started (Timer shown)'), +(33, 0, @SPAWNGROUP+15, 0, 0, 11, 0, 3633, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - West Graveyard - Horde Controlled'), +(33, 0, @SPAWNGROUP+16, 0, 0, 11, 0, 3635, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - West Graveyard - Alliance Controlled'), + +(33, 0, @SPAWNGROUP+17, 0, 0, 11, 0, 3633, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - West Graveyard Demolishers - Horde Controlled'), +(33, 0, @SPAWNGROUP+17, 0, 0, 11, 0, 4353, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - West Graveyard Demolishers - Horde Attacking'), +(33, 0, @SPAWNGROUP+18, 0, 0, 11, 0, 3635, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - West Graveyard Demolishers - Alliance Controlled'), +(33, 0, @SPAWNGROUP+18, 0, 0, 11, 0, 4352, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - West Graveyard Demolishers - Alliance Attacking'), + +(33, 0, @SPAWNGROUP+19, 0, 0, 11, 0, 3632, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - East Graveyard - Horde Controlled'), +(33, 0, @SPAWNGROUP+20, 0, 0, 11, 0, 3636, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - East Graveyard - Alliance Controlled'), + +(33, 0, @SPAWNGROUP+21, 0, 0, 11, 0, 3632, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - East Graveyard Demolishers - Horde Controlled'), +(33, 0, @SPAWNGROUP+21, 0, 0, 11, 0, 4353, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - East Graveyard Demolishers - Horde Attacking'), +(33, 0, @SPAWNGROUP+22, 0, 0, 11, 0, 3636, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - East Graveyard Demolishers - Alliance Controlled'), +(33, 0, @SPAWNGROUP+22, 0, 0, 11, 0, 4352, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - East Graveyard Demolishers - Alliance Attacking'), + +(33, 0, @SPAWNGROUP+23, 0, 0, 11, 0, 3634, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - Central Graveyard - Horde Controlled'), +(33, 0, @SPAWNGROUP+24, 0, 0, 11, 0, 3637, 1, 0, 0, 0, 0, '', 'Strand of the Ancients - Central Graveyard - Alliance Controlled'); + +DELETE FROM `graveyard_zone` WHERE `ID` IN (1346, 1347, 1348, 1349, 1350); +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Comment`) VALUES +(1350, 4384, 'Strand of the Ancients - Landing beach'), +(1349, 4384, 'Strand of the Ancients - Courtyard'), +(1348, 4384, 'Strand of the Ancients - Mid'), +(1347, 4384, 'Strand of the Ancients - East'), +(1346, 4384, 'Strand of the Ancients - West'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 27 AND `SourceEntry` IN (1346, 1347, 1348, 1349, 1350); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceEntry`, `SourceGroup`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionValue1`, `ConditionValue2`, `Comment`) VALUES +(27, 1350, 4384, 0, 6, 469, 0, 'Graveyard - Strand of the Ancients - Landing Beach - Team Alliance'), +(27, 1350, 4384, 0, 11, 4352, 1, 'Graveyard - Strand of the Ancients - Landing Beach - Alliance Attacking'), +(27, 1350, 4384, 1, 6, 67, 0, 'Graveyard - Strand of the Ancients - Landing Beach - Team Horde'), +(27, 1350, 4384, 1, 11, 4353, 1, 'Graveyard - Strand of the Ancients - Landing Beach - Horde Attacking'), +(27, 1349, 4384, 0, 11, 4353, 0, 'Graveyard - Strand of the Ancients - Courtyard - Horde Defending'), +(27, 1349, 4384, 0, 6, 67, 0, 'Graveyard - Strand of the Ancients - Courtyard - Team Horde'), +(27, 1349, 4384, 1, 11, 4352, 0, 'Graveyard - Strand of the Ancients - Courtyard - Alliance Defending'), +(27, 1349, 4384, 1, 6, 469, 0, 'Graveyard - Strand of the Ancients - Courtyard - Team Alliance'), +(27, 1347, 4384, 0, 11, 3636, 1, 'Graveyard - Strand of the Ancients - East - Alliance Controlled'), +(27, 1347, 4384, 0, 6, 469, 0, 'Graveyard - Strand of the Ancients - East - Team Alliance'), +(27, 1347, 4384, 1, 11, 3632, 1, 'Graveyard - Strand of the Ancients - East - Horde Controlled'), +(27, 1347, 4384, 1, 6, 67, 0, 'Graveyard - Strand of the Ancients - East - Team Horde'), +(27, 1346, 4384, 0, 11, 3635, 1, 'Graveyard - Strand of the Ancients - West - Alliance Controlled'), +(27, 1346, 4384, 0, 6, 469, 0, 'Graveyard - Strand of the Ancients - West - Team Alliance'), +(27, 1346, 4384, 1, 11, 3633, 1, 'Graveyard - Strand of the Ancients - West - Horde Controlled'), +(27, 1346, 4384, 1, 6, 67, 0, 'Graveyard - Strand of the Ancients - West - Team Horde'), +(27, 1348, 4384, 0, 11, 3637, 1, 'Graveyard - Strand of the Ancients - Mid - Alliance Controlled'), +(27, 1348, 4384, 0, 6, 469, 0, 'Graveyard - Strand of the Ancients - Mid - Team Alliance'), +(27, 1348, 4384, 1, 11, 3634, 1, 'Graveyard - Strand of the Ancients - Mid - Horde Controlled'), +(27, 1348, 4384, 1, 6, 67, 0, 'Graveyard - Strand of the Ancients - Mid - Team Horde'); + + +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+1000; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+10, 29, 607, 4384, 4384, '0', 0, 0, 0, 0, 841.92059326171875, -134.193954467773437, 196.8380889892578125, 6.230825424194335937, 7200, 0, 0, 63418750, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Kanrethad (Area: Strand of the Ancients - Difficulty: Normal) CreateObject1 +-- Demolishers & Goblins +(@CGUID+11, 28781, 607, 4384, 0, '0', 0, 0, 0, 0, 1618.0477294921875, 61.42464065551757812, 7.248210430145263671, 3.979350566864013671, 60, 0, 0, 7274869, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Battleground Demolisher (Area: Landing Beach - Difficulty: Normal) CreateObject2 (Auras: 52455 - PvP Vehicle Health Regen Suppression) +(@CGUID+12, 28781, 607, 4384, 0, '0', 0, 0, 0, 0, 1611.59765625, -117.270072937011718, 8.719354629516601562, 2.513274192810058593, 60, 0, 0, 7274869, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Battleground Demolisher (Area: Landing Beach - Difficulty: Normal) CreateObject2 (Auras: 52455 - PvP Vehicle Health Regen Suppression) +(@CGUID+13, 28781, 607, 4384, 0, '0', 0, 0, 0, 0, 1352.4898681640625, 222.2818145751953125, 35.27858734130859375, 4.380776405334472656, 60, 0, 0, 7274869, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Battleground Demolisher (Area: Landing Beach - Difficulty: Normal) CreateObject2 (Auras: 52455 - PvP Vehicle Health Regen Suppression) +(@CGUID+14, 29262, 607, 4384, 0, '0', 0, 0, 0, 0, 1358.1910400390625, 195.5277862548828125, 31.01818656921386718, 4.171336650848388671, 60, 0, 0, 1039267, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Gorgril Rigspark (Area: Landing Beach - Difficulty: Normal) CreateObject1 +(@CGUID+15, 28781, 607, 4384, 0, '0', 0, 0, 0, 0, 1370.0133056640625, -313.867889404296875, 34.8538055419921875, 1.954768776893615722, 60, 0, 0, 7274869, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Battleground Demolisher (Area: 0 - Difficulty: Normal) CreateObject2 (Auras: 52455 - PvP Vehicle Health Regen Suppression) +(@CGUID+16, 29260, 607, 4384, 0, '0', 0, 0, 0, 0, 1348.6441650390625, -298.786468505859375, 31.08012962341308593, 1.710422635078430175, 60, 0, 0, 1039267, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Rigger Sparklight (Area: 0 - Difficulty: Normal) CreateObject1 + +(@CGUID+39, 28781, 607, 4384, 0, '0', 0, 0, 0, 0, 1618.0477294921875, 61.42464065551757812, 7.248210430145263671, 3.979350566864013671, 60, 0, 0, 7274869, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Battleground Demolisher (Area: Landing Beach - Difficulty: Normal) CreateObject2 (Auras: 52455 - PvP Vehicle Health Regen Suppression) +(@CGUID+40, 28781, 607, 4384, 0, '0', 0, 0, 0, 0, 1611.59765625, -117.270072937011718, 8.719354629516601562, 2.513274192810058593, 60, 0, 0, 7274869, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Battleground Demolisher (Area: Landing Beach - Difficulty: Normal) CreateObject2 (Auras: 52455 - PvP Vehicle Health Regen Suppression) +(@CGUID+41, 28781, 607, 4384, 0, '0', 0, 0, 0, 0, 1352.4898681640625, 222.2818145751953125, 35.27858734130859375, 4.380776405334472656, 60, 0, 0, 7274869, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Battleground Demolisher (Area: Landing Beach - Difficulty: Normal) CreateObject2 (Auras: 52455 - PvP Vehicle Health Regen Suppression) +(@CGUID+42, 29262, 607, 4384, 0, '0', 0, 0, 0, 0, 1358.1910400390625, 195.5277862548828125, 31.01818656921386718, 4.171336650848388671, 60, 0, 0, 1039267, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Gorgril Rigspark (Area: Landing Beach - Difficulty: Normal) CreateObject1 +(@CGUID+43, 28781, 607, 4384, 0, '0', 0, 0, 0, 0, 1370.0133056640625, -313.867889404296875, 34.8538055419921875, 1.954768776893615722, 60, 0, 0, 7274869, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Battleground Demolisher (Area: 0 - Difficulty: Normal) CreateObject2 (Auras: 52455 - PvP Vehicle Health Regen Suppression) +(@CGUID+44, 29260, 607, 4384, 0, '0', 0, 0, 0, 0, 1348.6441650390625, -298.786468505859375, 31.08012962341308593, 1.710422635078430175, 60, 0, 0, 1039267, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Rigger Sparklight (Area: 0 - Difficulty: Normal) CreateObject1 + +-- Cannons +(@CGUID+0, 27894, 607, 4384, 4384, '0', 0, 0, 0, 0, 1455.232666015625, -219.59722900390625, 42.03958511352539062, 1.029744267463684082, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: Strand of the Ancients - Difficulty: Normal) CreateObject1 (Auras: 52455 - PvP Vehicle Health Regen Suppression, 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+1, 27894, 607, 4384, 4384, '0', 0, 0, 0, 0, 1422.6475830078125, -195.87847900390625, 42.26543807983398437, 0.977384388446807861, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: Strand of the Ancients - Difficulty: Normal) CreateObject1 (Auras: 52455 - PvP Vehicle Health Regen Suppression, 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+2, 27894, 607, 4384, 4384, '0', 0, 0, 0, 0, 1250.4010009765625, -223.498260498046875, 66.80340576171875, 0.558505356311798095, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: Strand of the Ancients - Difficulty: Normal) CreateObject1 (Auras: 52455 - PvP Vehicle Health Regen Suppression, 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+3, 27894, 607, 4384, 4384, '0', 0, 0, 0, 0, 1233.0711669921875, -187.083328247070312, 67.0279541015625, 0.506145477294921875, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: Strand of the Ancients - Difficulty: Normal) CreateObject1 (Auras: 52455 - PvP Vehicle Health Regen Suppression, 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+4, 27894, 607, 4384, 4384, '0', 0, 0, 0, 0, 1437.03125, 109.354156494140625, 41.490570068359375, 5.607047080993652343, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: Strand of the Ancients - Difficulty: Normal) CreateObject1 (Auras: 52455 - PvP Vehicle Health Regen Suppression, 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+5, 27894, 607, 4384, 4384, '0', 0, 0, 0, 0, 1405.5728759765625, 83.92534637451171875, 41.18357086181640625, 6.06153726577758789, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: Strand of the Ancients - Difficulty: Normal) CreateObject1 (Auras: 52455 - PvP Vehicle Health Regen Suppression, 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+6, 27894, 607, 4384, 4384, '0', 0, 0, 0, 0, 1215.75, 57.36284637451171875, 64.8218994140625, 5.777040004730224609, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: Strand of the Ancients - Difficulty: Normal) CreateObject1 (Auras: 52455 - PvP Vehicle Health Regen Suppression, 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+7, 27894, 607, 4384, 4384, '0', 0, 0, 0, 0, 1236.920166015625, 91.80034637451171875, 65.04779052734375, 5.724679946899414062, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: Strand of the Ancients - Difficulty: Normal) CreateObject1 (Auras: 52455 - PvP Vehicle Health Regen Suppression, 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+8, 27894, 607, 4384, 4384, '0', 0, 0, 0, 0, 1069.779541015625, -127.418403625488281, 96.532867431640625, 0.104719758033752441, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: Strand of the Ancients - Difficulty: Normal) CreateObject1 (Auras: 52455 - PvP Vehicle Health Regen Suppression, 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+9, 27894, 607, 4384, 4384, '0', 0, 0, 0, 0, 1069.1805419921875, -87.0833358764648437, 93.88944244384765625, 6.2657318115234375, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: Strand of the Ancients - Difficulty: Normal) CreateObject1 (Auras: 52455 - PvP Vehicle Health Regen Suppression, 65219 - (Serverside/Non-DB2) No Teleport) + +(@CGUID+24, 27894, 607, 4384, 0, '0', 0, 0, 0, 0, 1069.779541015625, -127.418403625488281, 96.532867431640625, 0.104719758033752441, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: 0 - Difficulty: Normal) CreateObject2 (Auras: 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+25, 27894, 607, 4384, 0, '0', 0, 0, 0, 0, 1215.75, 57.36284637451171875, 64.8218994140625, 5.777040004730224609, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: 0 - Difficulty: Normal) CreateObject2 (Auras: 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+26, 27894, 607, 4384, 0, '0', 0, 0, 0, 0, 1069.1805419921875, -87.0833358764648437, 93.88944244384765625, 6.2657318115234375, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: 0 - Difficulty: Normal) CreateObject2 (Auras: 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+27, 27894, 607, 4384, 0, '0', 0, 0, 0, 0, 1233.0711669921875, -187.083328247070312, 67.0279541015625, 0.506145477294921875, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: 0 - Difficulty: Normal) CreateObject2 (Auras: 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+28, 27894, 607, 4384, 0, '0', 0, 0, 0, 0, 1250.4010009765625, -223.498260498046875, 66.80340576171875, 0.558505356311798095, 7200, 0, 0, 5724494, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: 0 - Difficulty: Normal) CreateObject2 (Auras: 65219 - (Serverside/Non-DB2) No Teleport) +(@CGUID+29, 27894, 607, 4384, 0, '0', 0, 0, 0, 0, 1437.03125, 109.354156494140625, 41.490570068359375, 5.427973747253417968, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: 0 - Difficulty: Normal) CreateObject1 (Auras: 65219 - (Serverside/Non-DB2) No Teleport, 52455 - PvP Vehicle Health Regen Suppression) +(@CGUID+30, 27894, 607, 4384, 0, '0', 0, 0, 0, 0, 1405.5728759765625, 83.92534637451171875, 41.26646804809570312, 5.480333805084228515, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: 0 - Difficulty: Normal) CreateObject1 (Auras: 65219 - (Serverside/Non-DB2) No Teleport, 52455 - PvP Vehicle Health Regen Suppression) +(@CGUID+31, 27894, 607, 4384, 0, '0', 0, 0, 0, 0, 1422.6475830078125, -195.87847900390625, 42.26543807983398437, 0.977384388446807861, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: 0 - Difficulty: Normal) CreateObject1 (Auras: 65219 - (Serverside/Non-DB2) No Teleport, 52455 - PvP Vehicle Health Regen Suppression) +(@CGUID+32, 27894, 607, 4384, 0, '0', 0, 0, 0, 0, 1455.232666015625, -219.59722900390625, 42.03958511352539062, 1.029744267463684082, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: 0 - Difficulty: Normal) CreateObject1 (Auras: 65219 - (Serverside/Non-DB2) No Teleport, 52455 - PvP Vehicle Health Regen Suppression) +(@CGUID+33, 27894, 607, 4384, 0, '0', 0, 0, 0, 0, 1236.920166015625, 91.80034637451171875, 65.04779052734375, 5.724679946899414062, 7200, 0, 0, 5196335, 0, 0, NULL, NULL, NULL, NULL, 26365), -- Antipersonnel Cannon (Area: 0 - Difficulty: Normal) CreateObject1 (Auras: 65219 - (Serverside/Non-DB2) No Teleport, 52455 - PvP Vehicle Health Regen Suppression) + +-- Spirit guides +(@CGUID+17, 13117, 607, 4384, 4608, '0', 0, 0, 0, 1, 1391.88671875, 204.820587158203125, 32.23511505126953125, 4.468042850494384765, 7200, 0, 0, 10392670, 533108, 0, NULL, NULL, NULL, NULL, 26365), -- Horde Spirit Guide (Area: Gate of the Yellow Moon - Difficulty: Normal) CreateObject1 (Auras: 9036 - Ghost, 9617 - Ghost Visual) +(@CGUID+18, 13116, 607, 4384, 4608, '0', 0, 0, 0, 1, 962.7569580078125, -183.116317749023437, 91.6829833984375, 0.453785598278045654, 7200, 0, 0, 10392670, 533108, 0, NULL, NULL, NULL, NULL, 26365), -- Alliance Spirit Guide (Area: Gate of the Yellow Moon - Difficulty: Normal) CreateObject1 (Auras: 9036 - Ghost, 9617 - Ghost Visual) +(@CGUID+19, 13117, 607, 4384, 4608, '0', 0, 0, 0, 1, 1624.745361328125, 93.1954193115234375, 22.07644271850585937, 4.345870018005371093, 7200, 0, 0, 10392670, 533108, 0, NULL, NULL, NULL, NULL, 26365), -- Horde Spirit Guide (Area: Gate of the Yellow Moon - Difficulty: Normal) CreateObject1 (Auras: 9036 - Ghost, 9617 - Ghost Visual) +(@CGUID+20, 13116, 607, 4384, 4608, '0', 0, 0, 0, 1, 1121.28125, 3.008681058883666992, 69.05757904052734375, 5.393067359924316406, 7200, 0, 0, 10392670, 533108, 0, NULL, NULL, NULL, NULL, 26365), -- Alliance Spirit Guide (Area: Gate of the Yellow Moon - Difficulty: Normal) CreateObject1 (Auras: 9036 - Ghost, 9617 - Ghost Visual) +(@CGUID+21, 13117, 607, 4384, 4608, '0', 0, 0, 0, 1, 1447.765625, -53.6927070617675781, 5.908266544342041015, 6.195918560028076171, 7200, 0, 0, 10392670, 533108, 0, NULL, NULL, NULL, NULL, 26365), -- Horde Spirit Guide (Area: Gate of the Yellow Moon - Difficulty: Normal) CreateObject1 (Auras: 9036 - Ghost, 9617 - Ghost Visual) +(@CGUID+22, 13117, 607, 4384, 4608, '0', 0, 0, 0, 1, 1397.7364501953125, -294.83636474609375, 32.26296234130859375, 2.321287870407104492, 7200, 0, 0, 10392670, 533108, 0, NULL, NULL, NULL, NULL, 26365), -- Horde Spirit Guide (Area: Gate of the Yellow Moon - Difficulty: Normal) CreateObject1 (Auras: 9036 - Ghost, 9617 - Ghost Visual) +(@CGUID+23, 13117, 607, 4384, 4606, '0', 0, 0, 0, 1, 1121.951904296875, 4.433268070220947265, 69.02452850341796875, 5.759586334228515625, 7200, 0, 0, 10392670, 533108, 0, NULL, NULL, NULL, NULL, 26365), -- Horde Spirit Guide (Area: 0 - Difficulty: Normal) CreateObject2 (Auras: 9036 - Ghost, 9617 - Ghost Visual) +(@CGUID+34, 13117, 607, 4384, 4606, '0', 0, 0, 0, 1, 963.91839599609375, -183.118057250976562, 91.5367431640625, 0.855211317539215087, 7200, 0, 0, 10392670, 533108, 0, NULL, NULL, NULL, NULL, 26365), -- Horde Spirit Guide (Area: Gate of the Green Emerald - Difficulty: Normal) CreateObject1 (Auras: 9036 - Ghost, 9617 - Ghost Visual) +(@CGUID+35, 13116, 607, 4384, 4606, '0', 0, 0, 0, 1, 1624.7965087890625, 93.500732421875, 22.07644081115722656, 4.468042850494384765, 7200, 0, 0, 10392670, 533108, 0, NULL, NULL, NULL, NULL, 26365), -- Alliance Spirit Guide (Area: Gate of the Green Emerald - Difficulty: Normal) CreateObject1 (Auras: 9036 - Ghost, 9617 - Ghost Visual) +(@CGUID+36, 13116, 607, 4384, 4606, '0', 0, 0, 0, 1, 1448.640625, -53.2065963745117187, 5.839278697967529296, 0.01745329238474369, 7200, 0, 0, 10392670, 533108, 0, NULL, NULL, NULL, NULL, 26365), -- Alliance Spirit Guide (Area: Gate of the Green Emerald - Difficulty: Normal) CreateObject1 (Auras: 9036 - Ghost, 9617 - Ghost Visual) +(@CGUID+37, 13116, 607, 4384, 4608, '0', 0, 0, 0, 1, 1397.7364501953125, -294.83636474609375, 32.26296234130859375, 2.321287870407104492, 7200, 0, 0, 10392670, 533108, 0, NULL, NULL, NULL, NULL, 0),-- Alliance Spirit Guide (Area: Gate of the Yellow Moon - Difficulty: Normal) CreateObject1 (Auras: 9036 - Ghost, 9617 - Ghost Visual) +(@CGUID+38, 13116, 607, 4384, 4608, '0', 0, 0, 0, 1, 1391.88671875, 204.820587158203125, 32.23511505126953125, 4.468042850494384765, 7200, 0, 0, 10392670, 533108, 0, NULL, NULL, NULL, NULL, 0); -- Alliance Spirit Guide (Area: Gate of the Yellow Moon - Difficulty: Normal) CreateObject1 (Auras: 9036 - Ghost, 9617 - Ghost Visual) + +UPDATE `creature_template_addon` SET `PvpFlags`=1, `auras`='52455' WHERE `entry`=28781; -- 28781 (Battleground Demolisher) - PvP Vehicle Health Regen Suppression +UPDATE `creature_template_addon` SET `PvpFlags`=1, `auras`='52455 65219' WHERE `entry`=27894; -- 27894 (Antipersonnel Cannon) - PvP Vehicle Health Regen Suppression, (Serverside/Non-DB2) No Teleport + +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+350; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 190723, 607, 0, 0, '0', '0', 0, 1214.77783203125, 81.56076812744140625, 54.58214187622070312, 5.777040958404541015, 0, 0, -0.25037956237792968, 0.968147754669189453, 7200, 216, 1, 26365), -- Gate of the Purple Amethyst (Area: -Unknown- - Difficulty: Normal) CreateObject1 +(@OGUID+1, 190722, 607, 0, 0, '0', '0', 0, 1412.7430419921875, 106.9930572509765625, 29.87796974182128906, 5.436700820922851562, 0, 0, -0.41071891784667968, 0.911761999130249023, 7200, 0, 1, 26365), -- Gate of the Green Emerald (Area: -Unknown- - Difficulty: Normal) CreateObject1 +(@OGUID+2, 193184, 607, 0, 0, '0', '0', 0, 2686.109375, -831.19549560546875, 0.45196533203125, 5.719419479370117187, 0, 0, -0.27816486358642578, 0.960533320903778076, 7200, 255, 24, 26365), -- The Coffin Carrier (Area: -Unknown- - Difficulty: Normal) CreateObject1 +(@OGUID+3, 190724, 607, 0, 0, '0', '0', 0, 1431.1336669921875, -218.684036254882812, 32.10478591918945312, 0.986111819744110107, 0, 0, 0.47332000732421875, 0.880890548229217529, 7200, 0, 1, 26365), -- Gate of the Blue Sapphire (Area: -Unknown- - Difficulty: Normal) CreateObject1 +(@OGUID+4, 190727, 607, 0, 0, '0', '0', 0, 1055.8992919921875, -107.628471374511718, 83.4274749755859375, 0.061086613684892654, 0, 0, 0.030538558959960937, 0.999533593654632568, 7200, 255, 1, 26365), -- Gate of the Yellow Moon (Area: -Unknown- - Difficulty: Normal) CreateObject1 +(@OGUID+5, 190726, 607, 0, 0, '0', '0', 0, 1229.6666259765625, -211.30035400390625, 56.4359893798828125, 0.488691210746765136, 0, 0, 0.241921424865722656, 0.970295846462249755, 7200, 216, 1, 26365), -- Gate of the Red Sun (Area: -Unknown- - Difficulty: Normal) CreateObject1 +(@OGUID+6, 192549, 607, 0, 0, '0', '0', 0, 878.03302001953125, -108.190971374511718, 117.8321762084960937, 0.010599185712635517, 0, 0, 0.005299568176269531, 0.999985933303833007, 7200, 255, 1, 26365), -- Chamber of Ancient Relics (Area: -Unknown- - Difficulty: Normal) CreateObject1 +(@OGUID+7, 208001, 607, 4384, 4384, '0', 0, 0, 2578.895263671875, 986.32940673828125, -0.68536376953125, 0.807695746421813964, 0, 0, 0.3929595947265625, 0.919555723667144775, 7200, 255, 24, 26365), -- The Blightbringer (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+8, 194086, 607, 4384, 4384, '0', 0, 0, 1593.9642333984375, -96.168731689453125, 8.782253265380859375, 5.148722648620605468, 0, 0, -0.53729915618896484, 0.843391716480255126, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+9, 194086, 607, 4384, 4384, '0', 0, 0, 1581.9661865234375, -100.925033569335937, 8.327397346496582031, 5.340708732604980468, 0, 0, -0.45398998260498046, 0.891006767749786376, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+10, 194086, 607, 4384, 4384, '0', 0, 0, 1584.4390869140625, -103.336906433105468, 8.502038002014160156, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+11, 194086, 607, 4384, 4384, '0', 0, 0, 1585.013916015625, -104.328132629394531, 8.6132049560546875, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+12, 194086, 607, 4384, 4384, '0', 0, 0, 1581.2027587890625, -99.4962005615234375, 8.337002754211425781, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+13, 194086, 607, 4384, 4384, '0', 0, 0, 1583.673583984375, -91.875, 8.890683174133300781, 2.984498262405395507, 0, 0, 0.996916770935058593, 0.078466430306434631, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+14, 194086, 607, 4384, 4384, '0', 0, 0, 1584.1591796875, -92.271484375, 8.347928047180175781, 2.862335443496704101, 0, 0, 0.990267753601074218, 0.139175355434417724, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+15, 194086, 607, 4384, 4384, '0', 0, 0, 1584.295166015625, -103.916656494140625, 9.069079399108886718, 2.967041015625, 0, 0, 0.996193885803222656, 0.087165042757987976, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+16, 194086, 607, 4384, 4384, '0', 0, 0, 1583.457275390625, -104.075088500976562, 8.451749801635742187, 4.625123500823974609, 0, 0, -0.73727703094482421, 0.67559051513671875, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+17, 194086, 607, 4384, 4384, '0', 0, 0, 1582.967041015625, -92.590606689453125, 8.353337287902832031, 5.009094715118408203, 0, 0, -0.59482288360595703, 0.80385679006576538, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+18, 194086, 607, 4384, 4384, '0', 0, 0, 1583.354736328125, -91.1810989379882812, 8.356536865234375, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+19, 194086, 607, 4384, 4384, '0', 0, 0, 1592.642578125, 46.12369918823242187, 7.403531074523925781, 3.961898565292358398, 0, 0, -0.91705989837646484, 0.398749500513076782, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+20, 194086, 607, 4384, 4384, '0', 0, 0, 1591.729736328125, 47.05099868774414062, 7.381677150726318359, 2.862335443496704101, 0, 0, 0.990267753601074218, 0.139175355434417724, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+21, 194086, 607, 4384, 4384, '0', 0, 0, 1589.41064453125, 35.65158462524414062, 7.353652000427246093, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+22, 194086, 607, 4384, 4384, '0', 0, 0, 1594.083251953125, 46.61653518676757812, 7.441329002380371093, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+23, 194086, 607, 4384, 4384, '0', 0, 0, 1588.6461181640625, 34.91232681274414062, 7.436020851135253906, 0.663223206996917724, 0, 0, 0.325567245483398437, 0.945518851280212402, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+24, 194086, 607, 4384, 4384, '0', 0, 0, 1598.3648681640625, 37.421875, 7.396986007690429687, 5.969027042388916015, 0, 0, -0.1564340591430664, 0.987688362598419189, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+25, 194086, 607, 4384, 4384, '0', 0, 0, 1593.08740234375, 47.30522918701171875, 7.410294055938720703, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+26, 194086, 607, 4384, 4384, '0', 0, 0, 1597.0955810546875, 37.20963668823242187, 7.371291160583496093, 4.1538848876953125, 0, 0, -0.8746194839477539, 0.484810054302215576, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+27, 194086, 607, 4384, 4384, '0', 0, 0, 1594.7999267578125, 47.51573562622070312, 7.569773197174072265, 4.520402908325195312, 0, 0, -0.77162456512451171, 0.636078238487243652, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+28, 192689, 607, 4384, 4384, '0', 0, 0, 1433.3487548828125, -215.607315063476562, 44.42230606079101562, 1.605701684951782226, 0, 0, 0.719339370727539062, 0.694658815860748291, 7200, 255, 1, 26365), -- Blue Moon Sigil (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+29, 194086, 607, 4384, 4384, '0', 0, 0, 1598.511474609375, 36.18088150024414062, 7.37793588638305664, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+30, 194086, 607, 4384, 4384, '0', 0, 0, 1597.704833984375, 37.00347137451171875, 7.80081796646118164, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+31, 194086, 607, 4384, 4384, '0', 0, 0, 1596.1759033203125, 36.333984375, 7.345334053039550781, 3.769911527633666992, 0, 0, -0.95105648040771484, 0.309017121791839599, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+32, 194086, 607, 4384, 4384, '0', 0, 0, 1588.3658447265625, 36.28743362426757812, 7.376103878021240234, 5.044002056121826171, 0, 0, -0.58070278167724609, 0.814115643501281738, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+33, 194086, 607, 4384, 4384, '0', 0, 0, 1339.18896484375, -303.45263671875, 30.907958984375, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+34, 194086, 607, 4384, 4384, '0', 0, 0, 1440.8489990234375, -44.5815963745117187, 5.729386329650878906, 2.984498262405395507, 0, 0, 0.996916770935058593, 0.078466430306434631, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+35, 194086, 607, 4384, 4384, '0', 0, 0, 1435.7760009765625, -52.8541679382324218, 5.859138011932373046, 4.677483558654785156, 0, 0, -0.71933937072753906, 0.694658815860748291, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+36, 194086, 607, 4384, 4384, '0', 0, 0, 1441.3992919921875, -45.09375, 5.82074594497680664, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+37, 194086, 607, 4384, 4384, '0', 0, 0, 1438.7379150390625, -59.9583320617675781, 5.371419429779052734, 3.717553615570068359, 0, 0, -0.95881938934326171, 0.284016460180282592, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+38, 194086, 607, 4384, 4384, '0', 0, 0, 1440.63720703125, -45.4427070617675781, 5.888772964477539062, 3.036838293075561523, 0, 0, 0.998628616333007812, 0.052353221923112869, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+39, 194086, 607, 4384, 4384, '0', 0, 0, 1439.765625, -59.7795143127441406, 5.413985252380371093, 5.026549339294433593, 0, 0, -0.5877847671508789, 0.809017360210418701, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+40, 194086, 607, 4384, 4384, '0', 0, 0, 1435.5086669921875, -53.453125, 5.804205894470214843, 4.118979454040527343, 0, 0, -0.88294696807861328, 0.469472706317901611, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+41, 194086, 607, 4384, 4384, '0', 0, 0, 1435.4757080078125, -51.8454856872558593, 5.790664196014404296, 2.792518377304077148, 0, 0, 0.984807014465332031, 0.173652306199073791, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+42, 194086, 607, 4384, 4384, '0', 0, 0, 1440, -44.734375, 5.762050151824951171, 3.43830275535583496, 0, 0, -0.98901557922363281, 0.147811368107795715, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+43, 194086, 607, 4384, 4384, '0', 0, 0, 1434.9444580078125, -52.5972213745117187, 5.692234992980957031, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+44, 194086, 607, 4384, 4384, '0', 0, 0, 1439.30908203125, -60.9479179382324218, 5.210583209991455078, 3.490667104721069335, 0, 0, -0.98480701446533203, 0.173652306199073791, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+45, 191311, 607, 4384, 4384, '0', 0, 0, 1338.8646240234375, -153.336807250976562, 30.90653228759765625, 3.752462387084960937, 0, 0, -0.95371627807617187, 0.300707906484603881, 7200, 255, 1, 26365), -- Flagpole (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+46, 191306, 607, 4384, 4384, '0', 0, 0, 1338.859375, -153.328125, 30.90636825561523437, 3.752462387084960937, 0, 0, -0.95371627807617187, 0.300707906484603881, 7200, 255, 1, 26365), -- Alliance Banner (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+47, 194162, 607, 4384, 4384, '0', 0, 0, 878.03302001953125, -108.190971374511718, 117.8321762084960937, 0.010599185712635517, 0, 0, 0.005299568176269531, 0.999985933303833007, 7200, 255, 1, 26365), -- Doodad_WG_Keep_Door01_collision01 (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+48, 192687, 607, 4384, 4384, '0', 0, 0, 1415.5390625, 103.830078125, 42.19883346557617187, 5.550147056579589843, 0, 0, -0.358367919921875, 0.933580458164215087, 7200, 255, 1, 26365), -- Green Moon Sigil (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+49, 191311, 607, 4384, 4384, '0', 0, 0, 1324.845458984375, 17.9375, 31.10868072509765625, 4.660029888153076171, 0, 0, -0.72537422180175781, 0.688354730606079101, 7200, 255, 1, 26365), -- Flagpole (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+50, 191308, 607, 4384, 4384, '0', 0, 0, 1324.9149169921875, 17.94270896911621093, 31.112274169921875, 1.518436193466186523, 0, 0, 0.6883544921875, 0.725374460220336914, 7200, 255, 1, 26365), -- Alliance Banner (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+51, 192690, 607, 4384, 4384, '0', 0, 0, 1233.8836669921875, -209.275283813476562, 69.0842132568359375, 0.558503925800323486, 0, 0, 0.275636672973632812, 0.961261868476867675, 7200, 255, 1, 26365), -- Red Moon Sigil (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+52, 191575, 607, 4384, 4384, '0', 0, 0, 1394.23681640625, 72.10178375244140625, 31.10579109191894531, 5.724681377410888671, 0, 0, -0.27563667297363281, 0.961261868476867675, 7200, 255, 1, 26365), -- Defender's Portal (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+53, 191311, 607, 4384, 4384, '0', 0, 0, 1215.1142578125, -65.7118606567382812, 70.08426666259765625, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 7200, 255, 1, 26365), -- Flagpole (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+54, 191310, 607, 4384, 4384, '0', 0, 0, 1215.1080322265625, -65.7157669067382812, 70.08426666259765625, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 7200, 255, 1, 26365), -- Alliance Banner (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+55, 191575, 607, 4384, 4384, '0', 0, 0, 1467.954833984375, -225.829864501953125, 30.96954727172851562, 3.874631166458129882, 0, 0, -0.93358039855957031, 0.358368009328842163, 7200, 255, 1, 26365), -- Defender's Portal (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+56, 191575, 607, 4384, 4384, '0', 0, 0, 1255.875, -233.723953247070312, 56.49681472778320312, 5.811946868896484375, 0, 0, -0.2334451675415039, 0.972369968891143798, 7200, 255, 1, 26365), -- Defender's Portal (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+57, 191575, 607, 4384, 4384, '0', 0, 0, 1216.0625, 47.546875, 54.34365081787109375, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 7200, 255, 1, 26365), -- Defender's Portal (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+58, 192691, 607, 4384, 4384, '0', 0, 0, 1218.456787109375, 80.10538482666015625, 66.9543304443359375, 6.09120035171508789, 0, 0, -0.09584522247314453, 0.995396256446838378, 7200, 255, 1, 26365), -- Purple Moon Sigil (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+59, 184977, 607, 4384, 4384, '0', 0, 0, 1357.075439453125, -323.11920166015625, 36.83068466186523437, 1.954769015312194824, 0, 0, 0.829037666320800781, 0.559192776679992675, 7200, 255, 1, 26365), -- Restoration Buff (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+60, 192685, 607, 4384, 4384, '0', 0, 0, 1060.4227294921875, -107.403648376464843, 95.74500274658203125, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 7200, 255, 1, 26365), -- Yellow Moon Sigil (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+61, 191575, 607, 4384, 4384, '0', 0, 0, 1065.2412109375, -89.75341796875, 81.00298309326171875, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 7200, 255, 1, 26365), -- Defender's Portal (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+62, 184965, 607, 4384, 4384, '0', 0, 0, 1367.577880859375, 219.2498321533203125, 37.06921005249023437, 4.398232460021972656, 0, 0, -0.80901622772216796, 0.587786316871643066, 7200, 255, 1, 26365), -- Restoration Buff (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+63, 194082, 607, 4384, 4384, '0', 0, 0, 837.0653076171875, -107.536727905273437, 127.0248489379882812, 4.468043327331542968, 0, 0, -0.7880105972290039, 0.615661680698394775, 7200, 255, 1, 26365), -- Titan Relic (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+64, 184971, 607, 4384, 4384, '0', 0, 0, 978.84503173828125, -3.91769695281982421, 86.71141815185546875, 4.764749526977539062, 0, 0, -0.6883544921875, 0.725374460220336914, 7200, 255, 1, 26365), -- Restoration Buff (Area: Strand of the Ancients - Difficulty: 0) CreateObject1 +(@OGUID+65, 194086, 607, 4384, 4610, '0', 0, 0, 1382.0445556640625, 200.5125274658203125, 32.03339004516601562, 1.797688722610473632, 0, 0, 0.7826080322265625, 0.622514784336090087, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+66, 194086, 607, 4384, 4610, '0', 0, 0, 1371.1763916015625, -290.087615966796875, 31.12162208557128906, 4.886923789978027343, 0, 0, -0.64278697967529296, 0.766044974327087402, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+67, 194086, 607, 4384, 4610, '0', 0, 0, 1371.326416015625, -291.328826904296875, 31.13518905639648437, 2.932138919830322265, 0, 0, 0.994521141052246093, 0.104535527527332305, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+68, 194086, 607, 4384, 4610, '0', 0, 0, 1369.612060546875, 196.440887451171875, 30.93598365783691406, 1.308995485305786132, 0, 0, 0.608760833740234375, 0.793353796005249023, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+69, 194086, 607, 4384, 4610, '0', 0, 0, 1371.7508544921875, 193.4837188720703125, 31.72035408020019531, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+70, 194086, 607, 4384, 4610, '0', 0, 0, 1372.196044921875, -289.934783935546875, 31.15232086181640625, 3.857182979583740234, 0, 0, -0.93667125701904296, 0.350209832191467285, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+71, 194086, 607, 4384, 4610, '0', 0, 0, 1334.25048828125, 208.27423095703125, 31.05311775207519531, 3.211419343948364257, 0, 0, -0.9993906021118164, 0.034906134009361267, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+72, 194086, 607, 4384, 4610, '0', 0, 0, 1351.8411865234375, -302.070587158203125, 30.93121719360351562, 1.762782454490661621, 0, 0, 0.771624565124511718, 0.636078238487243652, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject1 +(@OGUID+73, 194086, 607, 4384, 4610, '0', 0, 0, 1351.7039794921875, -300.47509765625, 30.93253517150878906, 2.914689540863037109, 0, 0, 0.993571281433105468, 0.113208353519439697, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject1 +(@OGUID+74, 194086, 607, 4384, 4610, '0', 0, 0, 1353.1588134765625, -302.80670166015625, 30.93004989624023437, 3.769911527633666992, 0, 0, -0.95105648040771484, 0.309017121791839599, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject1 +(@OGUID+75, 194086, 607, 4384, 4610, '0', 0, 0, 1372.4747314453125, -291.149688720703125, 31.17007827758789062, 2.373644113540649414, 0, 0, 0.927183151245117187, 0.37460830807685852, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+76, 194086, 607, 4384, 4610, '0', 0, 0, 1369.4757080078125, 195.703125, 31.49237060546875, 5.183629035949707031, 0, 0, -0.52249813079833984, 0.852640450000762939, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+77, 194086, 607, 4384, 4610, '0', 0, 0, 1387.903076171875, -302.44146728515625, 32.01015472412109375, 3.368495941162109375, 0, 0, -0.99357128143310546, 0.113208353519439697, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+78, 194086, 607, 4384, 4610, '0', 0, 0, 1381.306396484375, 199.453826904296875, 32.03419113159179687, 0.698131442070007324, 0, 0, 0.342020034790039062, 0.939692676067352294, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+79, 194086, 607, 4384, 4610, '0', 0, 0, 1371.920166015625, -290.836822509765625, 31.53046035766601562, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+80, 194086, 607, 4384, 4610, '0', 0, 0, 1368.8038330078125, 196.170135498046875, 30.93807601928710937, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+81, 194086, 607, 4384, 4610, '0', 0, 0, 1333.595458984375, 207.96875, 31.45840835571289062, 5.637413978576660156, 0, 0, -0.31730461120605468, 0.948323667049407958, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+82, 194086, 607, 4384, 4610, '0', 0, 0, 1332.90283203125, 207.6993560791015625, 31.05311775207519531, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+83, 194086, 607, 4384, 4610, '0', 0, 0, 1370.9813232421875, 192.559112548828125, 31.79929924011230468, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+84, 194086, 607, 4384, 4610, '0', 0, 0, 1369.0833740234375, 195.1527862548828125, 31.14234161376953125, 4.712389945983886718, 0, 0, -0.70710659027099609, 0.707106947898864746, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+85, 194086, 607, 4384, 4610, '0', 0, 0, 1334.2291259765625, 207.254913330078125, 31.05311775207519531, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+86, 194086, 607, 4384, 4610, '0', 0, 0, 1370.005615234375, 195.1426544189453125, 31.14361572265625, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+87, 194086, 607, 4384, 4610, '0', 0, 0, 1388.996337890625, -305.631134033203125, 32.00703811645507812, 1.082102894783020019, 0, 0, 0.51503753662109375, 0.857167601585388183, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+88, 194086, 607, 4384, 4610, '0', 0, 0, 1333.1927490234375, 208.685760498046875, 31.05311775207519531, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+89, 194086, 607, 4384, 4610, '0', 0, 0, 1340.3341064453125, -304.763031005859375, 30.94291114807128906, 1.832594871520996093, 0, 0, 0.793353080749511718, 0.608761727809906005, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject1 +(@OGUID+90, 194086, 607, 4384, 4610, '0', 0, 0, 1352.459228515625, -299.62786865234375, 30.91556167602539062, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject1 +(@OGUID+91, 194086, 607, 4384, 4610, '0', 0, 0, 1388.6258544921875, -306.84710693359375, 31.92926025390625, 5.881760597229003906, 0, 0, -0.19936752319335937, 0.979924798011779785, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject1 +(@OGUID+92, 194086, 607, 4384, 4610, '0', 0, 0, 1338.5098876953125, -301.94573974609375, 30.92713165283203125, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject1 +(@OGUID+93, 194086, 607, 4384, 4610, '0', 0, 0, 1352.8428955078125, -301.219879150390625, 30.91541290283203125, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Landing Beach - Difficulty: 0) CreateObject1 +(@OGUID+94, 191307, 607, 4384, 4610, '0', 0, 0, 1324.9149169921875, 17.94270896911621093, 31.112274169921875, 1.518436193466186523, 0, 0, 0.6883544921875, 0.725374460220336914, 7200, 255, 1, 26365), -- Horde Banner (Area: Landing Beach - Difficulty: 0) CreateObject2 +(@OGUID+95, 191305, 607, 4384, 0, '0', 0, 0, 1338.859375, -153.328125, 30.90636825561523437, 3.752462387084960937, 0, 0, -0.95371627807617187, 0.300707906484603881, 7200, 255, 1, 26365), -- Horde Banner (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+96, 194086, 607, 4384, 4604, '0', 0, 0, 1097.5465087890625, 0.440429985523223876, 70.55162811279296875, 1.308995485305786132, 0, 0, 0.608760833740234375, 0.793353796005249023, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+97, 194086, 607, 4384, 4604, '0', 0, 0, 1096.2410888671875, -6.24359798431396484, 70.74053192138671875, 4.712389945983886718, 0, 0, -0.70710659027099609, 0.707106947898864746, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+98, 194086, 607, 4384, 4604, '0', 0, 0, 1097.0347900390625, -5.79861116409301757, 71.16420745849609375, 5.183629035949707031, 0, 0, -0.52249813079833984, 0.852640450000762939, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+99, 194086, 607, 4384, 4604, '0', 0, 0, 1095.6646728515625, -4.72450113296508789, 70.6829681396484375, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+100, 194086, 607, 4384, 4604, '0', 0, 0, 1097.5640869140625, -6.35991811752319335, 70.72601318359375, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+101, 194086, 607, 4384, 4604, '0', 0, 0, 1099.794677734375, -8.88986587524414062, 70.96112823486328125, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+102, 194086, 607, 4384, 4604, '0', 0, 0, 1097.171630859375, -5.06130599975585937, 70.6573333740234375, 1.308995485305786132, 0, 0, 0.608760833740234375, 0.793353796005249023, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+103, 194086, 607, 4384, 4604, '0', 0, 0, 1097.4097900390625, -0.296875, 70.756134033203125, 5.183629035949707031, 0, 0, -0.52249813079833984, 0.852640450000762939, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+104, 194086, 607, 4384, 4604, '0', 0, 0, 1096.6158447265625, -0.74186199903488159, 70.3299560546875, 4.712389945983886718, 0, 0, -0.70710659027099609, 0.707106947898864746, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+105, 194086, 607, 4384, 4604, '0', 0, 0, 1098.5396728515625, -8.94325065612792968, 70.92966461181640625, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+106, 194086, 607, 4384, 4604, '0', 0, 0, 1100.5638427734375, -7.96451807022094726, 70.8386077880859375, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+107, 194086, 607, 4384, 4604, '0', 0, 0, 1096.03955078125, 0.777234971523284912, 70.26041412353515625, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+108, 194086, 607, 4384, 4604, '0', 0, 0, 1097.9388427734375, -0.85818099975585937, 70.29022216796875, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+109, 194086, 607, 4384, 4604, '0', 0, 0, 1099.308837890625, -8.01790332794189453, 70.861785888671875, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+110, 191309, 607, 4384, 0, '0', 0, 0, 1215.1080322265625, -65.7157669067382812, 70.08426666259765625, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 7200, 255, 1, 26365), -- Horde Banner (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+111, 194086, 607, 4384, 0, '0', 0, 0, 971.6640625, 2.423177003860473632, 86.873138427734375, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+112, 194086, 607, 4384, 0, '0', 0, 0, 983.1600341796875, 8.073621749877929687, 86.890838623046875, 5.35816192626953125, 0, 0, -0.446197509765625, 0.894934535026550292, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+113, 194086, 607, 4384, 0, '0', 0, 0, 979.0225830078125, 3.528320074081420898, 86.7908935546875, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+114, 194086, 607, 4384, 0, '0', 0, 0, 969.76031494140625, 1.590602993965148925, 86.92884063720703125, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+115, 194086, 607, 4384, 0, '0', 0, 0, 969.60723876953125, 4.697156906127929687, 87.01064300537109375, 3.176533222198486328, 0, 0, -0.999847412109375, 0.017469281330704689, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+116, 194086, 607, 4384, 0, '0', 0, 0, 967.73394775390625, 3.980143070220947265, 87.09085845947265625, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+117, 194086, 607, 4384, 0, '0', 0, 0, 982.3564453125, 7.541720867156982421, 86.8763427734375, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+118, 194086, 607, 4384, 0, '0', 0, 0, 980.4063720703125, 3.43174910545349121, 86.7923126220703125, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+119, 194086, 607, 4384, 0, '0', 0, 0, 978.9600830078125, 4.175346851348876953, 87.13205718994140625, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+120, 194086, 607, 4384, 0, '0', 0, 0, 969.00469970703125, 3.825195074081420898, 87.01322174072265625, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+121, 194086, 607, 4384, 0, '0', 0, 0, 984.1199951171875, 7.510850906372070312, 86.8842620849609375, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+122, 194086, 607, 4384, 0, '0', 0, 0, 983.7569580078125, 6.909721851348876953, 86.87149810791015625, 4.712389945983886718, 0, 0, -0.70710659027099609, 0.707106947898864746, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+123, 194086, 607, 4384, 0, '0', 0, 0, 971.24578857421875, 4.677463054656982421, 86.91996002197265625, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+124, 194086, 607, 4384, 0, '0', 0, 0, 968.374267578125, 5.152668952941894531, 87.101043701171875, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+125, 194086, 607, 4384, 0, '0', 0, 0, 973.1192626953125, 5.39442300796508789, 86.89000701904296875, 3.176533222198486328, 0, 0, -0.999847412109375, 0.017469281330704689, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+126, 194086, 607, 4384, 0, '0', 0, 0, 983.10382080078125, 6.336967945098876953, 86.85764312744140625, 4.782202720642089843, 0, 0, -0.68199825286865234, 0.731353819370269775, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+127, 194086, 607, 4384, 0, '0', 0, 0, 968.857666015625, 4.553820133209228515, 87.48282623291015625, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+128, 194086, 607, 4384, 0, '0', 0, 0, 971.82989501953125, 5.217013835906982421, 86.916534423828125, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+129, 194086, 607, 4384, 0, '0', 0, 0, 978.5242919921875, 4.972221851348876953, 86.8182373046875, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+130, 194086, 607, 4384, 0, '0', 0, 0, 978.38714599609375, 3.9375, 86.80107879638671875, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+131, 194086, 607, 4384, 0, '0', 0, 0, 979.53643798828125, 4.822916984558105468, 86.8144378662109375, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+132, 194086, 607, 4384, 0, '0', 0, 0, 972.69317626953125, 3.93375706672668457, 86.871551513671875, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+133, 194086, 607, 4384, 0, '0', 0, 0, 983.1875, 7.192708015441894531, 87.170013427734375, 1.989672422409057617, 0, 0, 0.838669776916503906, 0.544640243053436279, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+134, 208000, 607, 4384, 0, '0', 0, 0, 2679.69677734375, -826.8912353515625, 3.7127685546875, 5.719419479370117187, 0, 0, -0.27816486358642578, 0.960533320903778076, 7200, 255, 25, 26365), -- The Graceful Maiden (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+135, 193185, 607, 4384, 0, '0', 0, 0, 2574.003662109375, 981.261474609375, 2.60333251953125, 0.807695746421813964, 0, 0, 0.3929595947265625, 0.919555723667144775, 7200, 255, 25, 26365), -- The Frostbreaker (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+136, 194083, 607, 4384, 0, '0', 0, 0, 837.0653076171875, -107.536727905273437, 127.0248489379882812, 4.468043327331542968, 0, 0, -0.7880105972290039, 0.615661680698394775, 7200, 255, 1, 26365), -- Titan Relic (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+137, 190753, 607, 4384, 0, '0', 0, 0, 1588.3658447265625, 36.28743362426757812, 7.376103878021240234, 5.044002056121826171, 0, 0, -0.58070278167724609, 0.814115643501281738, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+138, 190753, 607, 4384, 0, '0', 0, 0, 1598.511474609375, 36.18088150024414062, 7.37793588638305664, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+139, 190753, 607, 4384, 0, '0', 0, 0, 1439.765625, -59.7795143127441406, 5.413985252380371093, 5.026549339294433593, 0, 0, -0.5877847671508789, 0.809017360210418701, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+140, 190753, 607, 4384, 0, '0', 0, 0, 1593.9642333984375, -96.168731689453125, 8.782253265380859375, 5.148722648620605468, 0, 0, -0.53729915618896484, 0.843391716480255126, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+141, 190753, 607, 4384, 0, '0', 0, 0, 1581.2027587890625, -99.4962005615234375, 8.337002754211425781, 5.567600727081298828, 0, 0, -0.35020732879638671, 0.936672210693359375, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+142, 190753, 607, 4384, 0, '0', 0, 0, 1440.63720703125, -45.4427070617675781, 5.888772964477539062, 3.036838293075561523, 0, 0, 0.998628616333007812, 0.052353221923112869, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+143, 190753, 607, 4384, 0, '0', 0, 0, 1438.7379150390625, -59.9583320617675781, 5.371419429779052734, 3.717553615570068359, 0, 0, -0.95881938934326171, 0.284016460180282592, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+144, 190753, 607, 4384, 0, '0', 0, 0, 1596.1759033203125, 36.333984375, 7.345334053039550781, 3.769911527633666992, 0, 0, -0.95105648040771484, 0.309017121791839599, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+145, 190753, 607, 4384, 0, '0', 0, 0, 1439.30908203125, -60.9479179382324218, 5.210583209991455078, 3.490667104721069335, 0, 0, -0.98480701446533203, 0.173652306199073791, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+146, 190753, 607, 4384, 0, '0', 0, 0, 1339.18896484375, -303.45263671875, 30.907958984375, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+147, 190753, 607, 4384, 0, '0', 0, 0, 1584.1591796875, -92.271484375, 8.347928047180175781, 2.862335443496704101, 0, 0, 0.990267753601074218, 0.139175355434417724, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+148, 190753, 607, 4384, 0, '0', 0, 0, 1597.704833984375, 37.00347137451171875, 7.80081796646118164, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+149, 190753, 607, 4384, 0, '0', 0, 0, 1582.967041015625, -92.590606689453125, 8.353337287902832031, 5.009094715118408203, 0, 0, -0.59482288360595703, 0.80385679006576538, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+150, 190753, 607, 4384, 0, '0', 0, 0, 1591.729736328125, 47.05099868774414062, 7.381677150726318359, 2.862335443496704101, 0, 0, 0.990267753601074218, 0.139175355434417724, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+151, 190753, 607, 4384, 0, '0', 0, 0, 1583.354736328125, -91.1810989379882812, 8.356536865234375, 1.675513744354248046, 0, 0, 0.743144035339355468, 0.669131457805633544, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+152, 190753, 607, 4384, 0, '0', 0, 0, 1434.9444580078125, -52.5972213745117187, 5.692234992980957031, 1.117009282112121582, 0, 0, 0.529918670654296875, 0.84804844856262207, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+153, 190753, 607, 4384, 0, '0', 0, 0, 1435.5086669921875, -53.453125, 5.804205894470214843, 4.118979454040527343, 0, 0, -0.88294696807861328, 0.469472706317901611, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+154, 190753, 607, 4384, 0, '0', 0, 0, 1435.4757080078125, -51.8454856872558593, 5.790664196014404296, 2.792518377304077148, 0, 0, 0.984807014465332031, 0.173652306199073791, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+155, 190753, 607, 4384, 0, '0', 0, 0, 1589.41064453125, 35.65158462524414062, 7.353652000427246093, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+156, 190753, 607, 4384, 0, '0', 0, 0, 1584.295166015625, -103.916656494140625, 9.069079399108886718, 2.967041015625, 0, 0, 0.996193885803222656, 0.087165042757987976, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+157, 190753, 607, 4384, 0, '0', 0, 0, 1440.8489990234375, -44.5815963745117187, 5.729386329650878906, 2.984498262405395507, 0, 0, 0.996916770935058593, 0.078466430306434631, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+158, 190753, 607, 4384, 0, '0', 0, 0, 1584.4390869140625, -103.336906433105468, 8.502038002014160156, 3.159062385559082031, 0, 0, -0.99996185302734375, 0.008734640665352344, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+159, 190753, 607, 4384, 0, '0', 0, 0, 1592.642578125, 46.12369918823242187, 7.403531074523925781, 3.961898565292358398, 0, 0, -0.91705989837646484, 0.398749500513076782, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+160, 190753, 607, 4384, 0, '0', 0, 0, 1593.08740234375, 47.30522918701171875, 7.410294055938720703, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+161, 190753, 607, 4384, 0, '0', 0, 0, 1594.7999267578125, 47.51573562622070312, 7.569773197174072265, 4.520402908325195312, 0, 0, -0.77162456512451171, 0.636078238487243652, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+162, 190753, 607, 4384, 0, '0', 0, 0, 1588.6461181640625, 34.91232681274414062, 7.436020851135253906, 0.663223206996917724, 0, 0, 0.325567245483398437, 0.945518851280212402, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+163, 190753, 607, 4384, 0, '0', 0, 0, 1597.0955810546875, 37.20963668823242187, 7.371291160583496093, 4.1538848876953125, 0, 0, -0.8746194839477539, 0.484810054302215576, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+164, 190753, 607, 4384, 0, '0', 0, 0, 1435.7760009765625, -52.8541679382324218, 5.859138011932373046, 4.677483558654785156, 0, 0, -0.71933937072753906, 0.694658815860748291, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+165, 190753, 607, 4384, 0, '0', 0, 0, 1583.457275390625, -104.075088500976562, 8.451749801635742187, 4.625123500823974609, 0, 0, -0.73727703094482421, 0.67559051513671875, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+166, 190753, 607, 4384, 0, '0', 0, 0, 1598.3648681640625, 37.421875, 7.396986007690429687, 5.969027042388916015, 0, 0, -0.1564340591430664, 0.987688362598419189, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+167, 190753, 607, 4384, 0, '0', 0, 0, 1594.083251953125, 46.61653518676757812, 7.441329002380371093, 4.572763919830322265, 0, 0, -0.75470924377441406, 0.656059443950653076, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+168, 190753, 607, 4384, 0, '0', 0, 0, 1585.013916015625, -104.328132629394531, 8.6132049560546875, 0.401424884796142578, 0, 0, 0.199367523193359375, 0.979924798011779785, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+169, 190753, 607, 4384, 0, '0', 0, 0, 1581.9661865234375, -100.925033569335937, 8.327397346496582031, 5.340708732604980468, 0, 0, -0.45398998260498046, 0.891006767749786376, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+170, 190753, 607, 4384, 0, '0', 0, 0, 1441.3992919921875, -45.09375, 5.82074594497680664, 4.799657344818115234, 0, 0, -0.67558956146240234, 0.737277925014495849, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+171, 190753, 607, 4384, 0, '0', 0, 0, 1583.673583984375, -91.875, 8.890683174133300781, 2.984498262405395507, 0, 0, 0.996916770935058593, 0.078466430306434631, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+172, 190753, 607, 4384, 0, '0', 0, 0, 1440, -44.734375, 5.762050151824951171, 3.43830275535583496, 0, 0, -0.98901557922363281, 0.147811368107795715, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+173, 190763, 607, 4384, 0, '0', 0, 0, 1467.954833984375, -225.829864501953125, 30.96954727172851562, 3.874631166458129882, 0, 0, -0.93358039855957031, 0.358368009328842163, 7200, 255, 1, 26365), -- Defender's Portal (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+174, 190763, 607, 4384, 0, '0', 0, 0, 1394.23681640625, 72.10178375244140625, 31.10579109191894531, 5.724681377410888671, 0, 0, -0.27563667297363281, 0.961261868476867675, 7200, 255, 1, 26365), -- Defender's Portal (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+175, 190763, 607, 4384, 0, '0', 0, 0, 1255.875, -233.723953247070312, 56.49681472778320312, 5.811946868896484375, 0, 0, -0.2334451675415039, 0.972369968891143798, 7200, 255, 1, 26365), -- Defender's Portal (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+176, 190763, 607, 4384, 0, '0', 0, 0, 1065.2412109375, -89.75341796875, 81.00298309326171875, 2.251473426818847656, 0, 0, 0.902585029602050781, 0.430511653423309326, 7200, 255, 1, 26365), -- Defender's Portal (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+177, 190763, 607, 4384, 0, '0', 0, 0, 1216.0625, 47.546875, 54.34365081787109375, 4.45059061050415039, 0, 0, -0.79335308074951171, 0.608761727809906005, 7200, 255, 1, 26365), -- Defender's Portal (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+178, 190753, 607, 4384, 0, '0', 0, 0, 1334.25048828125, 208.27423095703125, 31.05311775207519531, 3.211419343948364257, 0, 0, -0.9993906021118164, 0.034906134009361267, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+179, 190753, 607, 4384, 0, '0', 0, 0, 1371.7508544921875, 193.4837188720703125, 31.72035408020019531, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+180, 190753, 607, 4384, 0, '0', 0, 0, 1370.005615234375, 195.1426544189453125, 31.14361572265625, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+181, 190753, 607, 4384, 0, '0', 0, 0, 1369.0833740234375, 195.1527862548828125, 31.14234161376953125, 4.712389945983886718, 0, 0, -0.70710659027099609, 0.707106947898864746, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+182, 190753, 607, 4384, 0, '0', 0, 0, 1370.9813232421875, 192.559112548828125, 31.79929924011230468, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+183, 190753, 607, 4384, 0, '0', 0, 0, 1334.2291259765625, 207.254913330078125, 31.05311775207519531, 0.226892471313476562, 0, 0, 0.113203048706054687, 0.993571877479553222, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+184, 190753, 607, 4384, 0, '0', 0, 0, 1368.8038330078125, 196.170135498046875, 30.93807601928710937, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+185, 190753, 607, 4384, 0, '0', 0, 0, 1333.1927490234375, 208.685760498046875, 31.05311775207519531, 1.134462952613830566, 0, 0, 0.537299156188964843, 0.843391716480255126, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+186, 190753, 607, 4384, 0, '0', 0, 0, 1333.595458984375, 207.96875, 31.45840835571289062, 5.637413978576660156, 0, 0, -0.31730461120605468, 0.948323667049407958, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+187, 190753, 607, 4384, 0, '0', 0, 0, 1369.612060546875, 196.440887451171875, 30.93598365783691406, 1.308995485305786132, 0, 0, 0.608760833740234375, 0.793353796005249023, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+188, 190753, 607, 4384, 0, '0', 0, 0, 1381.306396484375, 199.453826904296875, 32.03419113159179687, 0.698131442070007324, 0, 0, 0.342020034790039062, 0.939692676067352294, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+189, 190753, 607, 4384, 0, '0', 0, 0, 1369.4757080078125, 195.703125, 31.49237060546875, 5.183629035949707031, 0, 0, -0.52249813079833984, 0.852640450000762939, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+190, 190753, 607, 4384, 0, '0', 0, 0, 1382.0445556640625, 200.5125274658203125, 32.03339004516601562, 1.797688722610473632, 0, 0, 0.7826080322265625, 0.622514784336090087, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+191, 190753, 607, 4384, 0, '0', 0, 0, 1332.90283203125, 207.6993560791015625, 31.05311775207519531, 0.890116631984710693, 0, 0, 0.430510520935058593, 0.902585566043853759, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject2 +(@OGUID+192, 190753, 607, 4384, 0, '0', 0, 0, 1351.8411865234375, -302.070587158203125, 30.93121719360351562, 1.762782454490661621, 0, 0, 0.771624565124511718, 0.636078238487243652, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+193, 190753, 607, 4384, 0, '0', 0, 0, 1388.6258544921875, -306.84710693359375, 31.92926025390625, 5.881760597229003906, 0, 0, -0.19936752319335937, 0.979924798011779785, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+194, 190753, 607, 4384, 0, '0', 0, 0, 1352.8428955078125, -301.219879150390625, 30.91541290283203125, 1.570795774459838867, 0, 0, 0.707106590270996093, 0.707106947898864746, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+195, 190753, 607, 4384, 0, '0', 0, 0, 1387.903076171875, -302.44146728515625, 32.01015472412109375, 3.368495941162109375, 0, 0, -0.99357128143310546, 0.113208353519439697, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+196, 190753, 607, 4384, 0, '0', 0, 0, 1351.7039794921875, -300.47509765625, 30.93253517150878906, 2.914689540863037109, 0, 0, 0.993571281433105468, 0.113208353519439697, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+197, 190753, 607, 4384, 0, '0', 0, 0, 1372.196044921875, -289.934783935546875, 31.15232086181640625, 3.857182979583740234, 0, 0, -0.93667125701904296, 0.350209832191467285, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+198, 190753, 607, 4384, 0, '0', 0, 0, 1353.1588134765625, -302.80670166015625, 30.93004989624023437, 3.769911527633666992, 0, 0, -0.95105648040771484, 0.309017121791839599, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+199, 190753, 607, 4384, 0, '0', 0, 0, 1388.996337890625, -305.631134033203125, 32.00703811645507812, 1.082102894783020019, 0, 0, 0.51503753662109375, 0.857167601585388183, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+200, 190753, 607, 4384, 0, '0', 0, 0, 1340.3341064453125, -304.763031005859375, 30.94291114807128906, 1.832594871520996093, 0, 0, 0.793353080749511718, 0.608761727809906005, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+201, 190753, 607, 4384, 0, '0', 0, 0, 1352.459228515625, -299.62786865234375, 30.91556167602539062, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+202, 190753, 607, 4384, 0, '0', 0, 0, 1371.920166015625, -290.836822509765625, 31.53046035766601562, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+203, 190753, 607, 4384, 0, '0', 0, 0, 1371.326416015625, -291.328826904296875, 31.13518905639648437, 2.932138919830322265, 0, 0, 0.994521141052246093, 0.104535527527332305, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+204, 190753, 607, 4384, 0, '0', 0, 0, 1371.1763916015625, -290.087615966796875, 31.12162208557128906, 4.886923789978027343, 0, 0, -0.64278697967529296, 0.766044974327087402, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+205, 190753, 607, 4384, 0, '0', 0, 0, 1338.5098876953125, -301.94573974609375, 30.92713165283203125, 0.907570242881774902, 0, 0, 0.438370704650878906, 0.898794233798980712, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+206, 190753, 607, 4384, 0, '0', 0, 0, 1372.4747314453125, -291.149688720703125, 31.17007827758789062, 2.373644113540649414, 0, 0, 0.927183151245117187, 0.37460830807685852, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 + +(@OGUID+207, 190753, 607, 4384, 4604, '0', 0, 0, 1097.5465087890625, 0.440429985523223876, 70.55162811279296875, 1.308995485305786132, 0, 0, 0.608760833740234375, 0.793353796005249023, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+208, 190753, 607, 4384, 4604, '0', 0, 0, 1096.2410888671875, -6.24359798431396484, 70.74053192138671875, 4.712389945983886718, 0, 0, -0.70710659027099609, 0.707106947898864746, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+209, 190753, 607, 4384, 4604, '0', 0, 0, 1097.0347900390625, -5.79861116409301757, 71.16420745849609375, 5.183629035949707031, 0, 0, -0.52249813079833984, 0.852640450000762939, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+210, 190753, 607, 4384, 4604, '0', 0, 0, 1095.6646728515625, -4.72450113296508789, 70.6829681396484375, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+211, 190753, 607, 4384, 4604, '0', 0, 0, 1097.5640869140625, -6.35991811752319335, 70.72601318359375, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+212, 190753, 607, 4384, 4604, '0', 0, 0, 1099.794677734375, -8.88986587524414062, 70.96112823486328125, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+213, 190753, 607, 4384, 4604, '0', 0, 0, 1097.171630859375, -5.06130599975585937, 70.6573333740234375, 1.308995485305786132, 0, 0, 0.608760833740234375, 0.793353796005249023, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+214, 190753, 607, 4384, 4604, '0', 0, 0, 1097.4097900390625, -0.296875, 70.756134033203125, 5.183629035949707031, 0, 0, -0.52249813079833984, 0.852640450000762939, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+215, 190753, 607, 4384, 4604, '0', 0, 0, 1096.6158447265625, -0.74186199903488159, 70.3299560546875, 4.712389945983886718, 0, 0, -0.70710659027099609, 0.707106947898864746, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+216, 190753, 607, 4384, 4604, '0', 0, 0, 1098.5396728515625, -8.94325065612792968, 70.92966461181640625, 0.296705186367034912, 0, 0, 0.147809028625488281, 0.989015936851501464, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+217, 190753, 607, 4384, 4604, '0', 0, 0, 1100.5638427734375, -7.96451807022094726, 70.8386077880859375, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+218, 190753, 607, 4384, 4604, '0', 0, 0, 1096.03955078125, 0.777234971523284912, 70.26041412353515625, 0.715584874153137207, 0, 0, 0.350207328796386718, 0.936672210693359375, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+219, 190753, 607, 4384, 4604, '0', 0, 0, 1097.9388427734375, -0.85818099975585937, 70.29022216796875, 3.52557229995727539, 0, 0, -0.98162651062011718, 0.190812408924102783, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 +(@OGUID+220, 190753, 607, 4384, 4604, '0', 0, 0, 1099.308837890625, -8.01790332794189453, 70.861785888671875, 4.939284324645996093, 0, 0, -0.6225137710571289, 0.78260880708694458, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: Gate of the Red Sun - Difficulty: 0) CreateObject2 + +(@OGUID+221, 190753, 607, 4384, 0, '0', 0, 0, 971.6640625, 2.423177003860473632, 86.873138427734375, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+222, 190753, 607, 4384, 0, '0', 0, 0, 983.1600341796875, 8.073621749877929687, 86.890838623046875, 5.35816192626953125, 0, 0, -0.446197509765625, 0.894934535026550292, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+223, 190753, 607, 4384, 0, '0', 0, 0, 979.0225830078125, 3.528320074081420898, 86.7908935546875, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+224, 190753, 607, 4384, 0, '0', 0, 0, 969.76031494140625, 1.590602993965148925, 86.92884063720703125, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+225, 190753, 607, 4384, 0, '0', 0, 0, 969.60723876953125, 4.697156906127929687, 87.01064300537109375, 3.176533222198486328, 0, 0, -0.999847412109375, 0.017469281330704689, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+226, 190753, 607, 4384, 0, '0', 0, 0, 967.73394775390625, 3.980143070220947265, 87.09085845947265625, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+227, 190753, 607, 4384, 0, '0', 0, 0, 982.3564453125, 7.541720867156982421, 86.8763427734375, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+228, 190753, 607, 4384, 0, '0', 0, 0, 980.4063720703125, 3.43174910545349121, 86.7923126220703125, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+229, 190753, 607, 4384, 0, '0', 0, 0, 978.9600830078125, 4.175346851348876953, 87.13205718994140625, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+230, 190753, 607, 4384, 0, '0', 0, 0, 969.00469970703125, 3.825195074081420898, 87.01322174072265625, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+231, 190753, 607, 4384, 0, '0', 0, 0, 984.1199951171875, 7.510850906372070312, 86.8842620849609375, 4.956737518310546875, 0, 0, -0.61566066741943359, 0.788011372089385986, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+232, 190753, 607, 4384, 0, '0', 0, 0, 983.7569580078125, 6.909721851348876953, 86.87149810791015625, 4.712389945983886718, 0, 0, -0.70710659027099609, 0.707106947898864746, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+233, 190753, 607, 4384, 0, '0', 0, 0, 971.24578857421875, 4.677463054656982421, 86.91996002197265625, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+234, 190753, 607, 4384, 0, '0', 0, 0, 968.374267578125, 5.152668952941894531, 87.101043701171875, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+235, 190753, 607, 4384, 0, '0', 0, 0, 973.1192626953125, 5.39442300796508789, 86.89000701904296875, 3.176533222198486328, 0, 0, -0.999847412109375, 0.017469281330704689, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+236, 190753, 607, 4384, 0, '0', 0, 0, 983.10382080078125, 6.336967945098876953, 86.85764312744140625, 4.782202720642089843, 0, 0, -0.68199825286865234, 0.731353819370269775, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+237, 190753, 607, 4384, 0, '0', 0, 0, 968.857666015625, 4.553820133209228515, 87.48282623291015625, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+238, 190753, 607, 4384, 0, '0', 0, 0, 971.82989501953125, 5.217013835906982421, 86.916534423828125, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+239, 190753, 607, 4384, 0, '0', 0, 0, 978.5242919921875, 4.972221851348876953, 86.8182373046875, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+240, 190753, 607, 4384, 0, '0', 0, 0, 978.38714599609375, 3.9375, 86.80107879638671875, 0.24434557557106018, 0, 0, 0.121869087219238281, 0.9925462007522583, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+241, 190753, 607, 4384, 0, '0', 0, 0, 979.53643798828125, 4.822916984558105468, 86.8144378662109375, 6.003933906555175781, 0, 0, -0.13917255401611328, 0.990268170833587646, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+242, 190753, 607, 4384, 0, '0', 0, 0, 972.69317626953125, 3.93375706672668457, 86.871551513671875, 5.742135047912597656, 0, 0, -0.26723766326904296, 0.96363067626953125, 7200, 255, 1, 26365), -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 +(@OGUID+243, 190753, 607, 4384, 0, '0', 0, 0, 983.1875, 7.192708015441894531, 87.170013427734375, 1.989672422409057617, 0, 0, 0.838669776916503906, 0.544640243053436279, 7200, 255, 1, 26365); -- Seaforium Bomb (Area: 0 - Difficulty: 0) CreateObject1 + +DELETE FROM `gameobject_addon` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+350; +INSERT INTO `gameobject_addon` (`guid`, `parent_rotation0`, `parent_rotation1`, `parent_rotation2`, `parent_rotation3`, `WorldEffectID`, `AIAnimKitID`) VALUES +(@OGUID+0, 0, 0, 0, 0, 0, 0), -- Gate of the Purple Amethyst +(@OGUID+1, 0, 0, 0, 0, 0, 0), -- Gate of the Green Emerald +(@OGUID+2, 0, 0, 1, -0.00000004371138828, 0, 0), -- The Coffin Carrier +(@OGUID+3, 0, 0, 0, 0, 0, 0), -- Gate of the Blue Sapphire +(@OGUID+4, 0, 0, 0, 0, 0, 0), -- Gate of the Yellow Moon +(@OGUID+5, 0, 0, 0, 0, 0, 0), -- Gate of the Red Sun +(@OGUID+6, 0, 0, 0, 0, 0, 0), -- Chamber of Ancient Relics +(@OGUID+7, 0, 0, 1, -0.00000004371138828, 0, 0), -- The Blightbringer +(@OGUID+8, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+9, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+10, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+11, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+12, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+13, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+14, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+15, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+16, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+17, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+18, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+19, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+20, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+21, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+22, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+23, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+24, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+25, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+26, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+27, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+29, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+30, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+31, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+32, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+33, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+34, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+35, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+36, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+37, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+38, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+39, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+40, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+41, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+42, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+43, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+44, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+47, 0, 0, 0.005299568176269531, 0.999985933303833007, 0, 0), -- Doodad_WG_Keep_Door01_collision01 +(@OGUID+65, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+66, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+67, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+68, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+69, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+70, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+71, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+72, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+73, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+74, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+75, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+76, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+77, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+78, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+79, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+80, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+81, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+82, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+83, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+84, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+85, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+86, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+87, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+88, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+89, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+90, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+91, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+92, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+93, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+96, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+97, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+98, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+99, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+100, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+101, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+102, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+103, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+104, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+105, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+106, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+107, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+108, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+109, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+111, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+112, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+113, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+114, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+115, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+116, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+117, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+118, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+119, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+120, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+121, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+122, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+123, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+124, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+125, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+126, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+127, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+128, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+129, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+130, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+131, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+132, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+133, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+134, 0, 0, 1, -0.00000004371138828, 0, 0), -- The Graceful Maiden +(@OGUID+135, 0, 0, 1, -0.00000004371138828, 0, 0), -- The Frostbreaker +(@OGUID+137, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+138, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+139, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+140, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+141, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+142, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+143, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+144, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+145, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+146, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+147, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+148, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+149, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+150, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+151, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+152, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+153, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+154, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+155, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+156, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+157, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+158, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+159, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+160, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+161, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+162, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+163, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+164, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+165, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+166, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+167, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+168, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+169, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+170, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+171, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+172, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+178, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+179, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+180, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+181, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+182, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+183, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+184, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+185, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+186, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+187, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+188, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+189, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+190, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+191, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+192, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+193, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+194, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+195, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+196, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+197, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+198, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+199, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+200, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+201, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+202, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+203, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+204, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+205, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+206, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+207, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+208, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+209, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+210, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+211, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+212, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+213, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+214, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+215, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+216, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+217, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+218, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+219, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+220, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+221, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+222, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+223, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+224, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+225, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+226, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+227, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+228, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+229, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+230, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+231, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+232, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+233, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+234, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+235, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+236, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+237, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+238, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+239, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+240, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+241, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+242, 0, 0, 0, 1, 569, 0), -- Seaforium Bomb +(@OGUID+243, 0, 0, 0, 1, 569, 0); -- Seaforium Bomb + +UPDATE `gameobject_template` SET `ScriptName` = 'go_sota_capturable_object' WHERE `entry` IN (191305, 191306, 191307, 191308, 191309, 191310); +UPDATE `gameobject_template_addon` SET `flags` = `flags`|0x10 WHERE `entry` = 190753; +UPDATE `creature` SET `PhaseId` = 0 WHERE `id` IN (23472, 22515) AND `map` = 607; -- triggers for defender portal, and text diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp index 7f15b69cbd9..d7857885a66 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp @@ -37,254 +37,146 @@ enum StrandOfTheAncientsPvpStats PVP_STAT_DEMOLISHERS_DESTROYED = 232 }; +enum StrandOfTheAncientsEvents +{ + EVENT_HORDE_ASSAULT_STARTED = 21702, + EVENT_ALLIANCE_ASSAULT_STARTED = 23748, + EVENT_TITAN_RELIC_ACTIVATED = 20572 +}; + +enum StrandOfTheAncientsCreatures +{ + NPC_KANRETHAD = 29, + NPC_DEMOLISHER = 28781, + NPC_ANTIPERSONNEL_CANNON = 27894, + NPC_RIGGER_SPARKLIGHT = 29260, + NPC_GORGRIL_RIGSPARK = 29262, + NPC_WORLD_TRIGGER = 22515, + NPC_DEMOLISHER_SA = 28781 +}; + +enum StrandOfTheAncientsSpawnPositions +{ + SPAWN_DEFENDERS = 1399 +}; + +enum StrandOfTheAncientsData +{ + DATA_ATTACKERS = 1, + DATA_STATUS = 2 +}; + +enum StrandOfTheAncientSpells +{ + SPELL_TELEPORT_DEFENDER = 52364, + SPELL_TELEPORT_ATTACKERS = 60178, + SPELL_END_OF_ROUND = 52459, + SPELL_REMOVE_SEAFORIUM = 59077, + SPELL_ALLIANCE_CONTROL_PHASE_SHIFT = 60027, + SPELL_HORDE_CONTROL_PHASE_SHIFT = 60028, + SPELL_CARRYING_SEAFORIUM_CHARGE = 52415 +}; + +Position const spawnPositionOnTransport[] = +{ + { 0.0f, 5.0f, 9.6f, 3.14f }, + { -6.0f, -3.0f, 8.6f, 0.0f } +}; + BattlegroundSA::BattlegroundSA(BattlegroundTemplate const* battlegroundTemplate) : Battleground(battlegroundTemplate) { StartMessageIds[BG_STARTING_EVENT_FOURTH] = 0; // handle by Kanrethad - BgObjects.resize(BG_SA_MAXOBJ); - BgCreatures.resize(AsUnderlyingType(BG_SA_MAXNPC) + AsUnderlyingType(BG_SA_MAX_GY)); + BgObjects.resize(0); + BgCreatures.resize(0); TimerEnabled = false; UpdateWaitTimer = 0; SignaledRoundTwo = false; SignaledRoundTwoHalfMin = false; InitSecondRound = false; - Attackers = TEAM_ALLIANCE; + Attackers = static_cast<TeamId>(urand(TEAM_ALLIANCE, TEAM_HORDE)); TotalTime = 0; EndRoundTimer = 0; ShipsStarted = false; Status = BG_SA_NOT_STARTED; - for (uint8 i = 0; i < MAX_GATES; ++i) - GateStatus[i] = BG_SA_HORDE_GATE_OK; - - for (uint8 i = 0; i < 2; i++) + for (BG_SA_RoundScore& roundScore : RoundScores) { - RoundScores[i].winner = TEAM_ALLIANCE; - RoundScores[i].time = 0; + roundScore.winner = TEAM_ALLIANCE; + roundScore.time = 0; } - //! This is here to prevent an uninitialised variable warning - //! The warning only occurs when SetUpBattleGround fails though. - //! In the future this function should be called BEFORE sending initial worldstates. - memset(&GraveyardStatus, 0, sizeof(GraveyardStatus)); + _boatGUIDs = { }; + _staticBombGUIDs = { }; } -BattlegroundSA::~BattlegroundSA() { } +BattlegroundSA::~BattlegroundSA() = default; void BattlegroundSA::Reset() { TotalTime = 0; - Attackers = ((urand(0, 1)) ? TEAM_ALLIANCE : TEAM_HORDE); - for (uint8 i = 0; i <= 5; i++) - GateStatus[i] = BG_SA_HORDE_GATE_OK; ShipsStarted = false; Status = BG_SA_WARMUP; } bool BattlegroundSA::SetupBattleground() { - return ResetObjs(); + return true; } bool BattlegroundSA::ResetObjs() { - for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) - if (Player* player = ObjectAccessor::FindPlayer(itr->first)) - SendTransportsRemove(player); - - uint32 atF = BG_SA_Factions[Attackers]; - uint32 defF = BG_SA_Factions[Attackers ? TEAM_ALLIANCE : TEAM_HORDE]; - - for (uint8 i = 0; i < BG_SA_MAXOBJ; i++) - DelObject(i); - - for (uint8 i = 0; i < BG_SA_MAXNPC; i++) - DelCreature(i); - - for (uint8 i = BG_SA_MAXNPC; i < AsUnderlyingType(BG_SA_MAXNPC) + AsUnderlyingType(BG_SA_MAX_GY); i++) - DelCreature(i); - - for (uint8 i = 0; i < MAX_GATES; ++i) - GateStatus[i] = Attackers == TEAM_HORDE ? BG_SA_ALLIANCE_GATE_OK : BG_SA_HORDE_GATE_OK; - - if (!AddCreature(BG_SA_NpcEntries[BG_SA_NPC_KANRETHAD], BG_SA_NPC_KANRETHAD, BG_SA_NpcSpawnlocs[BG_SA_NPC_KANRETHAD])) - { - TC_LOG_ERROR("bg.battleground", "SOTA: couldn't spawn Kanrethad, aborted. Entry: {}", BG_SA_NpcEntries[BG_SA_NPC_KANRETHAD]); - return false; - } - - for (uint8 i = 0; i <= BG_SA_PORTAL_DEFFENDER_RED; i++) - { - if (!AddObject(i, BG_SA_ObjEntries[i], BG_SA_ObjSpawnlocs[i], 0, 0, 0, 0, RESPAWN_ONE_DAY)) - { - TC_LOG_ERROR("bg.battleground", "SOTA: couldn't spawn BG_SA_PORTAL_DEFFENDER_RED, Entry: {}", BG_SA_ObjEntries[i]); - continue; - } - } - - for (uint8 i = BG_SA_BOAT_ONE; i <= BG_SA_BOAT_TWO; i++) - { - uint32 boatid = 0; - switch (i) - { - case BG_SA_BOAT_ONE: - boatid = Attackers ? BG_SA_BOAT_ONE_H : BG_SA_BOAT_ONE_A; - break; - case BG_SA_BOAT_TWO: - boatid = Attackers ? BG_SA_BOAT_TWO_H : BG_SA_BOAT_TWO_A; - break; - default: - break; - } - if (!AddObject(i, boatid, BG_SA_ObjSpawnlocs[i].GetPositionX(), - BG_SA_ObjSpawnlocs[i].GetPositionY(), - BG_SA_ObjSpawnlocs[i].GetPositionZ() + (Attackers ? -3.750f: 0), - BG_SA_ObjSpawnlocs[i].GetOrientation(), 0, 0, 0, 0, RESPAWN_ONE_DAY)) - { - TC_LOG_ERROR("bg.battleground", "SOTA: couldn't spawn one of the BG_SA_BOAT, Entry: {}", boatid); - continue; - } - } - - for (uint8 i = BG_SA_SIGIL_1; i <= BG_SA_LEFT_FLAGPOLE; i++) - { - if (!AddObject(i, BG_SA_ObjEntries[i], BG_SA_ObjSpawnlocs[i], 0, 0, 0, 0, RESPAWN_ONE_DAY)) - { - TC_LOG_ERROR("bg.battleground", "SOTA: couldn't spawn Sigil, Entry: {}", BG_SA_ObjEntries[i]); - continue; - } - } - - // MAD props for Kiper for discovering those values - 4 hours of his work. - GetBGObject(BG_SA_BOAT_ONE)->SetParentRotation(QuaternionData(0.f, 0.f, 1.0f, 0.0002f)); - GetBGObject(BG_SA_BOAT_TWO)->SetParentRotation(QuaternionData(0.f, 0.f, 1.0f, 0.00001f)); - SpawnBGObject(BG_SA_BOAT_ONE, RESPAWN_IMMEDIATELY); - SpawnBGObject(BG_SA_BOAT_TWO, RESPAWN_IMMEDIATELY); - - //Cannons and demolishers - NPCs are spawned - //By capturing GYs. - for (uint8 i = 0; i < BG_SA_DEMOLISHER_5; i++) - { - if (!AddCreature(BG_SA_NpcEntries[i], i, BG_SA_NpcSpawnlocs[i], Attackers == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE, 600)) - { - TC_LOG_ERROR("bg.battleground", "SOTA: couldn't spawn Cannon or demolisher, Entry: {}, Attackers: {}", BG_SA_NpcEntries[i], Attackers == TEAM_ALLIANCE ? "Horde(1)" : "Alliance(0)"); - continue; - } - } - - OverrideGunFaction(); - DemolisherStartState(true); + for (ObjectGuid const& bombGuid : _dynamicBombGUIDs) + if (GameObject* bomb = GetBgMap()->GetGameObject(bombGuid)) + bomb->Delete(); - for (uint8 i = 0; i <= BG_SA_PORTAL_DEFFENDER_RED; i++) - { - SpawnBGObject(i, RESPAWN_IMMEDIATELY); - GetBGObject(i)->SetFaction(defF); - } + _dynamicBombGUIDs.clear(); - GetBGObject(BG_SA_TITAN_RELIC)->SetFaction(atF); - GetBGObject(BG_SA_TITAN_RELIC)->Refresh(); + TeamId const defenders = Attackers == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE; TotalTime = 0; ShipsStarted = false; - //Graveyards - for (uint8 i = 0; i < BG_SA_MAX_GY; i++) - { - WorldSafeLocsEntry const* sg = sObjectMgr->GetWorldSafeLoc(BG_SA_GYEntries[i]); + UpdateWorldState(BG_SA_ALLY_ATTACKS, Attackers == TEAM_ALLIANCE); + UpdateWorldState(BG_SA_HORDE_ATTACKS, Attackers == TEAM_HORDE); - if (!sg) - { - TC_LOG_ERROR("bg.battleground", "SOTA: Can't find GY entry {}", BG_SA_GYEntries[i]); - return false; - } + UpdateWorldState(BG_SA_RIGHT_ATT_TOKEN_ALL, Attackers == TEAM_ALLIANCE); + UpdateWorldState(BG_SA_LEFT_ATT_TOKEN_ALL, Attackers == TEAM_ALLIANCE); - if (i == BG_SA_BEACH_GY) - { - GraveyardStatus[i] = Attackers; - AddSpiritGuide(i + BG_SA_MAXNPC, sg->Loc.GetPositionX(), sg->Loc.GetPositionY(), sg->Loc.GetPositionZ(), BG_SA_GYOrientation[i], Attackers); - } - else - { - GraveyardStatus[i] = ((Attackers == TEAM_HORDE)? TEAM_ALLIANCE : TEAM_HORDE); - if (!AddSpiritGuide(i + BG_SA_MAXNPC, sg->Loc.GetPositionX(), sg->Loc.GetPositionY(), sg->Loc.GetPositionZ(), BG_SA_GYOrientation[i], Attackers == TEAM_HORDE ? TEAM_ALLIANCE : TEAM_HORDE)) - TC_LOG_ERROR("bg.battleground", "SOTA: couldn't spawn GY: {}", i); - } - } - - //GY capture points - for (uint8 i = BG_SA_CENTRAL_FLAG; i <= BG_SA_LEFT_FLAG; i++) - { - if (!AddObject(i, (BG_SA_ObjEntries[i] - (Attackers == TEAM_ALLIANCE ? 1 : 0)), BG_SA_ObjSpawnlocs[i], 0, 0, 0, 0, RESPAWN_ONE_DAY)) - { - TC_LOG_ERROR("bg.battleground", "SOTA: couldn't spawn Central Flag Entry: {}", BG_SA_ObjEntries[i] - (Attackers == TEAM_ALLIANCE ? 1 : 0)); - continue; - } - GetBGObject(i)->SetFaction(atF); - } - - UpdateObjectInteractionFlags(); - - for (uint8 i = BG_SA_BOMB; i < BG_SA_MAXOBJ; i++) - { - if (!AddObject(i, BG_SA_ObjEntries[BG_SA_BOMB], BG_SA_ObjSpawnlocs[i], 0, 0, 0, 0, RESPAWN_ONE_DAY)) - { - TC_LOG_ERROR("bg.battleground", "SOTA: couldn't spawn SA Bomb Entry: {}", BG_SA_ObjEntries[BG_SA_BOMB] + i); - continue; - } - GetBGObject(i)->SetFaction(atF); - } + UpdateWorldState(BG_SA_RIGHT_ATT_TOKEN_HRD, Attackers == TEAM_HORDE); + UpdateWorldState(BG_SA_LEFT_ATT_TOKEN_HRD, Attackers == TEAM_HORDE); - //Player may enter BEFORE we set up BG - lets update his worldstates anyway... - UpdateWorldState(BG_SA_RIGHT_GY_HORDE, GraveyardStatus[BG_SA_RIGHT_CAPTURABLE_GY] == TEAM_HORDE ? 1 : 0); - UpdateWorldState(BG_SA_LEFT_GY_HORDE, GraveyardStatus[BG_SA_LEFT_CAPTURABLE_GY] == TEAM_HORDE ? 1 : 0); - UpdateWorldState(BG_SA_CENTER_GY_HORDE, GraveyardStatus[BG_SA_CENTRAL_CAPTURABLE_GY] == TEAM_HORDE ? 1 : 0); + UpdateWorldState(BG_SA_HORDE_DEFENCE_TOKEN, defenders == TEAM_HORDE); + UpdateWorldState(BG_SA_ALLIANCE_DEFENCE_TOKEN, defenders == TEAM_ALLIANCE); - UpdateWorldState(BG_SA_RIGHT_GY_ALLIANCE, GraveyardStatus[BG_SA_RIGHT_CAPTURABLE_GY] == TEAM_ALLIANCE ? 1 : 0); - UpdateWorldState(BG_SA_LEFT_GY_ALLIANCE, GraveyardStatus[BG_SA_LEFT_CAPTURABLE_GY] == TEAM_ALLIANCE ? 1 : 0); - UpdateWorldState(BG_SA_CENTER_GY_ALLIANCE, GraveyardStatus[BG_SA_CENTRAL_CAPTURABLE_GY] == TEAM_ALLIANCE ? 1 : 0); + CaptureGraveyard(StrandOfTheAncientsGraveyard::Central, defenders); + CaptureGraveyard(StrandOfTheAncientsGraveyard::West, defenders); + CaptureGraveyard(StrandOfTheAncientsGraveyard::East, defenders); - if (Attackers == TEAM_ALLIANCE) - { - UpdateWorldState(BG_SA_ALLY_ATTACKS, 1); - UpdateWorldState(BG_SA_HORDE_ATTACKS, 0); + UpdateWorldState(BG_SA_ATTACKER_TEAM, Attackers); - UpdateWorldState(BG_SA_RIGHT_ATT_TOKEN_ALL, 1); - UpdateWorldState(BG_SA_LEFT_ATT_TOKEN_ALL, 1); - UpdateWorldState(BG_SA_RIGHT_ATT_TOKEN_HRD, 0); - UpdateWorldState(BG_SA_LEFT_ATT_TOKEN_HRD, 0); + for (ObjectGuid const& guid : _gateGUIDs) + if (GameObject* gate = GetBgMap()->GetGameObject(guid)) + gate->SetDestructibleState(GO_DESTRUCTIBLE_INTACT, nullptr, true); - UpdateWorldState(BG_SA_HORDE_DEFENCE_TOKEN, 1); - UpdateWorldState(BG_SA_ALLIANCE_DEFENCE_TOKEN, 0); - } - else - { - UpdateWorldState(BG_SA_HORDE_ATTACKS, 1); - UpdateWorldState(BG_SA_ALLY_ATTACKS, 0); + BG_SA_GateState const state = Attackers == TEAM_ALLIANCE ? BG_SA_HORDE_GATE_OK : BG_SA_ALLIANCE_GATE_OK; + UpdateWorldState(BG_SA_PURPLE_GATEWS, state); + UpdateWorldState(BG_SA_RED_GATEWS, state); + UpdateWorldState(BG_SA_BLUE_GATEWS, state); + UpdateWorldState(BG_SA_GREEN_GATEWS, state); + UpdateWorldState(BG_SA_YELLOW_GATEWS, state); + UpdateWorldState(BG_SA_ANCIENT_GATEWS, state); - UpdateWorldState(BG_SA_RIGHT_ATT_TOKEN_ALL, 0); - UpdateWorldState(BG_SA_LEFT_ATT_TOKEN_ALL, 0); - UpdateWorldState(BG_SA_RIGHT_ATT_TOKEN_HRD, 1); - UpdateWorldState(BG_SA_LEFT_ATT_TOKEN_HRD, 1); + GetBgMap()->UpdateSpawnGroupConditions(); - UpdateWorldState(BG_SA_HORDE_DEFENCE_TOKEN, 0); - UpdateWorldState(BG_SA_ALLIANCE_DEFENCE_TOKEN, 1); - } + if (GameObject* door = GetBgMap()->GetGameObject(_collisionDoorGUID)) + door->ResetDoorOrButton(); - UpdateWorldState(BG_SA_ATTACKER_TEAM, Attackers); - UpdateWorldState(BG_SA_PURPLE_GATEWS, 1); - UpdateWorldState(BG_SA_RED_GATEWS, 1); - UpdateWorldState(BG_SA_BLUE_GATEWS, 1); - UpdateWorldState(BG_SA_GREEN_GATEWS, 1); - UpdateWorldState(BG_SA_YELLOW_GATEWS, 1); - UpdateWorldState(BG_SA_ANCIENT_GATEWS, 1); - - for (int i = BG_SA_BOAT_ONE; i <= BG_SA_BOAT_TWO; i++) - for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) - if (Player* player = ObjectAccessor::FindPlayer(itr->first)) - SendTransportInit(player); - - // set status manually so preparation is cast correctly in 2nd round too SetStatus(STATUS_WAIT_JOIN); + GetBgMap()->DoOnPlayers([&](Player* player) + { + SendTransportInit(player); + }); TeleportPlayers(); return true; @@ -295,23 +187,27 @@ void BattlegroundSA::StartShips() if (ShipsStarted) return; - GetBGObject(BG_SA_BOAT_ONE)->SetGoState(GO_STATE_TRANSPORT_STOPPED); - GetBGObject(BG_SA_BOAT_TWO)->SetGoState(GO_STATE_TRANSPORT_STOPPED); - - for (int i = BG_SA_BOAT_ONE; i <= BG_SA_BOAT_TWO; i++) + for (ObjectGuid const& guid : _boatGUIDs[Attackers]) { - for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) + if (GameObject* boat = GetBgMap()->GetGameObject(guid)) { - if (Player* p = ObjectAccessor::FindPlayer(itr->first)) + boat->SetGoState(GO_STATE_TRANSPORT_STOPPED); + + // make sure every player knows the transport exists & is moving + for (auto const& [playerGuid, _] : GetPlayers()) { - UpdateData data(p->GetMapId()); - WorldPacket pkt; - GetBGObject(i)->BuildValuesUpdateBlockForPlayer(&data, p); - data.BuildPacket(&pkt); - p->SendDirectMessage(&pkt); + if (Player const* player = ObjectAccessor::FindPlayer(playerGuid)) + { + UpdateData data(player->GetMapId()); + WorldPacket pkt; + boat->BuildValuesUpdateBlockForPlayer(&data, player); + data.BuildPacket(&pkt); + player->SendDirectMessage(&pkt); + } } } } + ShipsStarted = true; } @@ -339,17 +235,16 @@ void BattlegroundSA::PostUpdateImpl(uint32 diff) if (Status == BG_SA_WARMUP) { EndRoundTimer = BG_SA_ROUNDLENGTH; - UpdateWorldState(BG_SA_TIMER, GameTime::GetGameTime() + EndRoundTimer); + UpdateWorldState(BG_SA_TIMER, GameTime::GetGameTime() + (EndRoundTimer / 1000)); if (TotalTime >= BG_SA_WARMUPLENGTH) { - if (Creature* c = GetBGCreature(BG_SA_NPC_KANRETHAD)) + if (Creature* c = FindKanrethad()) SendChatMessage(c, TEXT_ROUND_STARTED); TotalTime = 0; ToggleTimer(); - DemolisherStartState(false); Status = BG_SA_ROUND_ONE; - TriggerGameEvent((Attackers == TEAM_ALLIANCE) ? 23748 : 21702); + TriggerGameEvent((Attackers == TEAM_ALLIANCE) ? EVENT_ALLIANCE_ASSAULT_STARTED : EVENT_HORDE_ASSAULT_STARTED); } if (TotalTime >= BG_SA_BOAT_START) StartShips(); @@ -362,21 +257,20 @@ void BattlegroundSA::PostUpdateImpl(uint32 diff) else EndRoundTimer = BG_SA_ROUNDLENGTH; - UpdateWorldState(BG_SA_TIMER, GameTime::GetGameTime() + EndRoundTimer); + UpdateWorldState(BG_SA_TIMER, GameTime::GetGameTime() + (EndRoundTimer / 1000)); if (TotalTime >= 60000) { - if (Creature* c = GetBGCreature(BG_SA_NPC_KANRETHAD)) + if (Creature* c = FindKanrethad()) SendChatMessage(c, TEXT_ROUND_STARTED); TotalTime = 0; ToggleTimer(); - DemolisherStartState(false); Status = BG_SA_ROUND_TWO; - TriggerGameEvent((Attackers == TEAM_ALLIANCE) ? 23748 : 21702); + TriggerGameEvent((Attackers == TEAM_ALLIANCE) ? EVENT_ALLIANCE_ASSAULT_STARTED : EVENT_HORDE_ASSAULT_STARTED); // status was set to STATUS_WAIT_JOIN manually for Preparation, set it back now SetStatus(STATUS_IN_PROGRESS); - for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) - if (Player* p = ObjectAccessor::FindPlayer(itr->first)) + for (const auto& [playerGuid, bp] : GetPlayers()) + if (Player* p = ObjectAccessor::FindPlayer(playerGuid)) p->RemoveAurasDueToSpell(SPELL_PREPARATION); } if (TotalTime >= 30000) @@ -396,20 +290,7 @@ void BattlegroundSA::PostUpdateImpl(uint32 diff) { if (TotalTime >= BG_SA_ROUNDLENGTH) { - CastSpellOnTeam(SPELL_END_OF_ROUND, ALLIANCE); - CastSpellOnTeam(SPELL_END_OF_ROUND, HORDE); - RoundScores[0].winner = Attackers; - RoundScores[0].time = BG_SA_ROUNDLENGTH; - TotalTime = 0; - Status = BG_SA_SECOND_WARMUP; - Attackers = (Attackers == TEAM_ALLIANCE) ? TEAM_HORDE : TEAM_ALLIANCE; - UpdateWaitTimer = 5000; - SignaledRoundTwo = false; - SignaledRoundTwoHalfMin = false; - InitSecondRound = true; - ToggleTimer(); - ResetObjs(); - GetBgMap()->UpdateAreaDependentAuras(); + EndRound(); return; } } @@ -430,8 +311,6 @@ void BattlegroundSA::PostUpdateImpl(uint32 diff) return; } } - if (Status == BG_SA_ROUND_ONE || Status == BG_SA_ROUND_TWO) - UpdateDemolisherSpawns(); } } @@ -455,11 +334,11 @@ void BattlegroundSA::HandleAreaTrigger(Player* /*source*/, uint32 /*trigger*/, b return; } -void BattlegroundSA::TeleportPlayers() +void BattlegroundSA::TeleportPlayers() const { - for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) + for (auto const& [playerGuid, bp] : GetPlayers()) { - if (Player* player = ObjectAccessor::FindPlayer(itr->first)) + if (Player* player = ObjectAccessor::FindPlayer(playerGuid)) { // should remove spirit of redemption if (player->HasAuraType(SPELL_AURA_SPIRIT_OF_REDEMPTION)) @@ -481,83 +360,114 @@ void BattlegroundSA::TeleportPlayers() } } -void BattlegroundSA::TeleportToEntrancePosition(Player* player) +// This function teleports player to entrance position, but it's not implemented correctly +// It is also used on round swap; which should be handled by the following spells: 52365, 52528, 53464, 53465 (Split Teleport (FACTION) (Boat X)) +// This spell however cannot work with current system because of grid limitations. +// On battleground start, this function should work fine, except that it is called to late and we need a NearTeleport to solve this. +void BattlegroundSA::TeleportToEntrancePosition(Player* player) const { if (GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())) == Attackers) { - if (!ShipsStarted) - { - // player->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT); + ObjectGuid const boatGUID = _boatGUIDs[Attackers][urand(0, 1)]; - if (urand(0, 1)) - player->TeleportTo(607, 2682.936f, -830.368f, 15.0f, 2.895f); - else - player->TeleportTo(607, 2577.003f, 980.261f, 15.0f, 0.807f); + if (GameObject* boat = GetBgMap()->GetGameObject(boatGUID)) + { + if (TransportBase* transport = boat->ToTransportBase()) + { + player->Relocate(spawnPositionOnTransport[Attackers]); + transport->AddPassenger(player); + player->m_movementInfo.transport.pos.Relocate(spawnPositionOnTransport[Attackers]); + float x, y, z, o; + spawnPositionOnTransport[Attackers].GetPosition(x, y, z, o); + transport->CalculatePassengerPosition(x, y, z, &o); + player->Relocate(x, y, z, o); + + if (player->IsInWorld()) + player->NearTeleportTo({ x, y, z, o }); + } } + } + else if (WorldSafeLocsEntry const* defenderSpawn = sObjectMgr->GetWorldSafeLoc(SPAWN_DEFENDERS)) + { + if (player->IsInWorld()) + player->TeleportTo(defenderSpawn->Loc); else - player->TeleportTo(607, 1600.381f, -106.263f, 8.8745f, 3.78f); + player->WorldRelocate(defenderSpawn->Loc); } - else - player->TeleportTo(607, 1209.7f, -65.16f, 70.1f, 0.0f); } void BattlegroundSA::ProcessEvent(WorldObject* obj, uint32 eventId, WorldObject* invoker /*= nullptr*/) { + switch (eventId) + { + case EVENT_ALLIANCE_ASSAULT_STARTED: + for (ObjectGuid const& bombGuid : _staticBombGUIDs[TEAM_ALLIANCE]) + if (GameObject* bomb = GetBgMap()->GetGameObject(bombGuid)) + bomb->RemoveFlag(GO_FLAG_NOT_SELECTABLE); + break; + case EVENT_HORDE_ASSAULT_STARTED: + for (ObjectGuid const& bombGuid : _staticBombGUIDs[TEAM_HORDE]) + if (GameObject* bomb = GetBgMap()->GetGameObject(bombGuid)) + bomb->RemoveFlag(GO_FLAG_NOT_SELECTABLE); + break; + default: + break; + } + if (GameObject* go = Object::ToGameObject(obj)) { switch (go->GetGoType()) { case GAMEOBJECT_TYPE_GOOBER: if (invoker) - if (eventId == BG_SA_EVENT_TITAN_RELIC_ACTIVATED) + if (eventId == EVENT_TITAN_RELIC_ACTIVATED) TitanRelicActivated(invoker->ToPlayer()); break; case GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING: { if (GateInfo const* gate = GetGate(obj->GetEntry())) { - uint8 gateId = gate->GateId; + uint32 gateId = gate->GameObjectId; // damaged if (eventId == go->GetGOInfo()->destructibleBuilding.DamagedEvent) { - GateStatus[gateId] = Attackers == TEAM_HORDE ? BG_SA_ALLIANCE_GATE_DAMAGED : BG_SA_HORDE_GATE_DAMAGED; + BG_SA_GateState gateState = Attackers == TEAM_HORDE ? BG_SA_ALLIANCE_GATE_DAMAGED : BG_SA_HORDE_GATE_DAMAGED; if (Creature* c = obj->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f)) SendChatMessage(c, gate->DamagedText, invoker); PlaySoundToAll(Attackers == TEAM_ALLIANCE ? SOUND_WALL_ATTACKED_ALLIANCE : SOUND_WALL_ATTACKED_HORDE); + + UpdateWorldState(gate->WorldState, gateState); } // destroyed else if (eventId == go->GetGOInfo()->destructibleBuilding.DestroyedEvent) { - GateStatus[gate->GateId] = Attackers == TEAM_HORDE ? BG_SA_ALLIANCE_GATE_DESTROYED : BG_SA_HORDE_GATE_DESTROYED; - - if (gateId < 5) - DelObject(gateId + 14); - + BG_SA_GateState gateState = Attackers == TEAM_HORDE ? BG_SA_ALLIANCE_GATE_DESTROYED : BG_SA_HORDE_GATE_DESTROYED; if (Creature* c = obj->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f)) SendChatMessage(c, gate->DestroyedText, invoker); PlaySoundToAll(Attackers == TEAM_ALLIANCE ? SOUND_WALL_DESTROYED_ALLIANCE : SOUND_WALL_DESTROYED_HORDE); + // check if other gate from same line of defense is already destroyed for honor reward bool rewardHonor = true; switch (gateId) { - case BG_SA_GREEN_GATE: - if (IsGateDestroyed(BG_SA_BLUE_GATE)) + case GO_GATE_OF_THE_GREEN_EMERALD: + if (IsGateDestroyed(GetGate(GO_GATE_OF_THE_BLUE_SAPPHIRE))) rewardHonor = false; break; - case BG_SA_BLUE_GATE: - if (IsGateDestroyed(BG_SA_GREEN_GATE)) + case GO_GATE_OF_THE_BLUE_SAPPHIRE: + if (IsGateDestroyed(GetGate(GO_GATE_OF_THE_GREEN_EMERALD))) rewardHonor = false; break; - case BG_SA_RED_GATE: - if (IsGateDestroyed(BG_SA_PURPLE_GATE)) + case GO_GATE_OF_THE_RED_SUN: + if (IsGateDestroyed(GetGate(GO_GATE_OF_THE_PURPLE_AMETHYST))) rewardHonor = false; break; - case BG_SA_PURPLE_GATE: - if (IsGateDestroyed(BG_SA_RED_GATE)) + case GO_GATE_OF_THE_PURPLE_AMETHYST: + if (IsGateDestroyed(GetGate(GO_GATE_OF_THE_RED_SUN))) rewardHonor = false; break; default: @@ -577,12 +487,12 @@ void BattlegroundSA::ProcessEvent(WorldObject* obj, uint32 eventId, WorldObject* } } - UpdateObjectInteractionFlags(); - } - else - break; + if (rewardHonor) + MakeObjectsInteractable(gate->LineOfDefense); - UpdateWorldState(gate->WorldState, GateStatus[gateId]); + UpdateWorldState(gate->WorldState, gateState); + GetBgMap()->UpdateSpawnGroupConditions(); + } } break; } @@ -604,419 +514,337 @@ void BattlegroundSA::HandleKillUnit(Creature* creature, Unit* killer) } } -/* - You may ask what the fuck does it do? - Prevents owner overwriting guns faction with own. - */ -void BattlegroundSA::OverrideGunFaction() +void BattlegroundSA::DestroyGate(Player* /*player*/, GameObject* /*go*/) { - if (!BgCreatures[0]) - return; +} - for (uint8 i = BG_SA_GUN_1; i <= BG_SA_GUN_10; i++) +void BattlegroundSA::CaptureGraveyard(StrandOfTheAncientsGraveyard graveyard, TeamId teamId) +{ + switch (graveyard) { - if (Creature* gun = GetBGCreature(i)) - gun->SetFaction(BG_SA_Factions[Attackers ? TEAM_ALLIANCE : TEAM_HORDE]); - } + case StrandOfTheAncientsGraveyard::West: + UpdateWorldState(BG_SA_LEFT_GY_ALLIANCE, teamId == TEAM_ALLIANCE); + UpdateWorldState(BG_SA_LEFT_GY_HORDE, teamId == TEAM_HORDE); + break; + case StrandOfTheAncientsGraveyard::East: + UpdateWorldState(BG_SA_RIGHT_GY_ALLIANCE, teamId == TEAM_ALLIANCE); + UpdateWorldState(BG_SA_RIGHT_GY_HORDE, teamId == TEAM_HORDE); + break; + case StrandOfTheAncientsGraveyard::Central: + UpdateWorldState(BG_SA_CENTER_GY_ALLIANCE, teamId == TEAM_ALLIANCE); + UpdateWorldState(BG_SA_CENTER_GY_HORDE, teamId == TEAM_HORDE); - for (uint8 i = BG_SA_DEMOLISHER_1; i <= BG_SA_DEMOLISHER_4; i++) - { - if (Creature* dem = GetBGCreature(i)) - dem->SetFaction(BG_SA_Factions[Attackers]); + CaptureGraveyard(StrandOfTheAncientsGraveyard::East, teamId); + CaptureGraveyard(StrandOfTheAncientsGraveyard::West, teamId); + break; + default: + break; } } -void BattlegroundSA::DemolisherStartState(bool start) +void BattlegroundSA::TitanRelicActivated(Player* clicker) { - if (!BgCreatures[0]) + if (!clicker) return; - // set flags only for the demolishers on the beach, factory ones dont need it - for (uint8 i = BG_SA_DEMOLISHER_1; i <= BG_SA_DEMOLISHER_4; i++) + TeamId clickerTeamId = GetTeamIndexByTeamId(GetPlayerTeam(clicker->GetGUID())); + if (clickerTeamId == Attackers) { - if (Creature* dem = GetBGCreature(i)) + if (clickerTeamId == TEAM_ALLIANCE) + SendBroadcastText(BG_SA_TEXT_ALLIANCE_CAPTURED_TITAN_PORTAL, CHAT_MSG_BG_SYSTEM_ALLIANCE); + else + SendBroadcastText(BG_SA_TEXT_HORDE_CAPTURED_TITAN_PORTAL, CHAT_MSG_BG_SYSTEM_HORDE); + + if (Status == BG_SA_ROUND_ONE) { - if (start) + EndRound(); + // Achievement Storm the Beach (1310) + for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) { - dem->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); - dem->SetUninteractible(true); + if (Player* player = ObjectAccessor::FindPlayer(itr->first)) + if (GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())) == Attackers) + player->UpdateCriteria(CriteriaType::BeSpellTarget, 65246); } - else + + if (Creature* c = FindKanrethad()) + SendChatMessage(c, TEXT_ROUND_1_FINISHED); + } + else if (Status == BG_SA_ROUND_TWO) + { + RoundScores[1].winner = Attackers; + RoundScores[1].time = TotalTime; + ToggleTimer(); + // Achievement Storm the Beach (1310) + for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) { - dem->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); - dem->SetUninteractible(false); + if (Player* player = ObjectAccessor::FindPlayer(itr->first)) + if (GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())) == Attackers && RoundScores[1].winner == Attackers) + player->UpdateCriteria(CriteriaType::BeSpellTarget, 65246); } + + if (RoundScores[0].time == RoundScores[1].time) + EndBattleground(TEAM_OTHER); + else if (RoundScores[0].time < RoundScores[1].time) + EndBattleground(RoundScores[0].winner == TEAM_ALLIANCE ? ALLIANCE : HORDE); + else + EndBattleground(RoundScores[1].winner == TEAM_ALLIANCE ? ALLIANCE : HORDE); } } } -void BattlegroundSA::DestroyGate(Player* /*player*/, GameObject* /*go*/) +void BattlegroundSA::ToggleTimer() { + TimerEnabled = !TimerEnabled; + UpdateWorldState(BG_SA_ENABLE_TIMER, TimerEnabled); } -WorldSafeLocsEntry const* BattlegroundSA::GetClosestGraveyard(Player* player) +void BattlegroundSA::EndBattleground(Team winner) { - uint32 safeloc = 0; - WorldSafeLocsEntry const* ret; - WorldSafeLocsEntry const* closest; - float dist, nearest; - float x, y, z; - - player->GetPosition(x, y, z); - - TeamId teamId = GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())); - if (teamId == Attackers) - safeloc = BG_SA_GYEntries[BG_SA_BEACH_GY]; - else - safeloc = BG_SA_GYEntries[BG_SA_DEFENDER_LAST_GY]; - - closest = sObjectMgr->GetWorldSafeLoc(safeloc); - nearest = player->GetExactDistSq(closest->Loc); - - for (uint8 i = BG_SA_RIGHT_CAPTURABLE_GY; i < BG_SA_MAX_GY; i++) - { - if (GraveyardStatus[i] != teamId) - continue; + // honor reward for winning + if (winner == ALLIANCE) + RewardHonorToTeam(GetBonusHonorFromKill(1), ALLIANCE); + else if (winner == HORDE) + RewardHonorToTeam(GetBonusHonorFromKill(1), HORDE); - ret = sObjectMgr->GetWorldSafeLoc(BG_SA_GYEntries[i]); - dist = player->GetExactDistSq(ret->Loc); - if (dist < nearest) - { - closest = ret; - nearest = dist; - } - } + // complete map_end rewards (even if no team wins) + RewardHonorToTeam(GetBonusHonorFromKill(2), ALLIANCE); + RewardHonorToTeam(GetBonusHonorFromKill(2), HORDE); - return closest; + Battleground::EndBattleground(winner); } -bool BattlegroundSA::CanInteractWithObject(uint32 objectId) +void BattlegroundSA::SendTransportInit(Player* player) { - switch (objectId) - { - case BG_SA_TITAN_RELIC: - if (!IsGateDestroyed(BG_SA_ANCIENT_GATE) || !IsGateDestroyed(BG_SA_YELLOW_GATE)) - return false; - [[fallthrough]]; - case BG_SA_CENTRAL_FLAG: - if (!IsGateDestroyed(BG_SA_RED_GATE) && !IsGateDestroyed(BG_SA_PURPLE_GATE)) - return false; - [[fallthrough]]; - case BG_SA_LEFT_FLAG: - case BG_SA_RIGHT_FLAG: - if (!IsGateDestroyed(BG_SA_GREEN_GATE) && !IsGateDestroyed(BG_SA_BLUE_GATE)) - return false; - break; - default: - ABORT(); - break; - } - - return true; + UpdateData transData(player->GetMapId()); + for (ObjectGuid const& boatGuid : _boatGUIDs[Attackers]) + if (GameObject const* boat = GetBgMap()->GetGameObject(boatGuid)) + boat->BuildCreateUpdateBlockForPlayer(&transData, player); + + WorldPacket packet; + transData.BuildPacket(&packet); + player->SendDirectMessage(&packet); } -void BattlegroundSA::UpdateObjectInteractionFlags(uint32 objectId) +void BattlegroundSA::SendTransportsRemove(Player* player) { - if (GameObject* go = GetBGObject(objectId)) - { - if (CanInteractWithObject(objectId)) - go->RemoveFlag(GO_FLAG_NOT_SELECTABLE); - else - go->SetFlag(GO_FLAG_NOT_SELECTABLE); - } + UpdateData transData(player->GetMapId()); + for (ObjectGuid const& boatGuid : _boatGUIDs[Attackers]) + if (GameObject const* boat = GetBgMap()->GetGameObject(boatGuid)) + boat->BuildOutOfRangeUpdateBlock(&transData); + + WorldPacket packet; + transData.BuildPacket(&packet); + player->SendDirectMessage(&packet); } -void BattlegroundSA::UpdateObjectInteractionFlags() +bool BattlegroundSA::IsGateDestroyed(GateInfo const* gateInfo) const { - for (uint8 i = BG_SA_CENTRAL_FLAG; i <= BG_SA_LEFT_FLAG; ++i) - UpdateObjectInteractionFlags(i); - UpdateObjectInteractionFlags(BG_SA_TITAN_RELIC); + if (!gateInfo) + return false; + + int32 value = GetBgMap()->GetWorldStateValue(gateInfo->WorldState); + return value == BG_SA_ALLIANCE_GATE_DESTROYED || value == BG_SA_HORDE_GATE_DESTROYED; } -void BattlegroundSA::EventPlayerClickedOnFlag(Player* source, GameObject* go) +void BattlegroundSA::HandleCaptureGraveyardAction(GameObject* graveyardBanner, Player* player) { - switch (go->GetEntry()) + if (!graveyardBanner || !player) + return; + + TeamId const teamId = GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())); + // Only attackers can capture graveyard by gameobject action + if (teamId != Attackers) + return; + + switch (graveyardBanner->GetEntry()) { - case 191307: - case 191308: - if (CanInteractWithObject(BG_SA_LEFT_FLAG)) - CaptureGraveyard(BG_SA_LEFT_CAPTURABLE_GY, source); + case GO_GRAVEYARD_WEST_A: + case GO_GRAVEYARD_WEST_H: + CaptureGraveyard(StrandOfTheAncientsGraveyard::West, teamId); break; - case 191305: - case 191306: - if (CanInteractWithObject(BG_SA_RIGHT_FLAG)) - CaptureGraveyard(BG_SA_RIGHT_CAPTURABLE_GY, source); + case GO_GRAVEYARD_EAST_A: + case GO_GRAVEYARD_EAST_H: + CaptureGraveyard(StrandOfTheAncientsGraveyard::East, teamId); break; - case 191310: - case 191309: - if (CanInteractWithObject(BG_SA_CENTRAL_FLAG)) - CaptureGraveyard(BG_SA_CENTRAL_CAPTURABLE_GY, source); + case GO_GRAVEYARD_CENTRAL_A: + case GO_GRAVEYARD_CENTRAL_H: + CaptureGraveyard(StrandOfTheAncientsGraveyard::Central, teamId); break; default: - return; - }; + break; + } } -void BattlegroundSA::CaptureGraveyard(BG_SA_Graveyards i, Player* Source) +void BattlegroundSA::MakeObjectsInteractable(DefenseLine defenseLine) { - if (GraveyardStatus[i] == Attackers) - return; - - DelCreature(AsUnderlyingType(BG_SA_MAXNPC) + i); - TeamId teamId = GetTeamIndexByTeamId(GetPlayerTeam(Source->GetGUID())); - GraveyardStatus[i] = teamId; - WorldSafeLocsEntry const* sg = sObjectMgr->GetWorldSafeLoc(BG_SA_GYEntries[i]); - if (!sg) + auto makeInteractable = [&](ObjectGuid const& guid) -> void { - TC_LOG_ERROR("bg.battleground", "BattlegroundSA::CaptureGraveyard: non-existant GY entry: {}", BG_SA_GYEntries[i]); - return; - } - - AddSpiritGuide(i + AsUnderlyingType(BG_SA_MAXNPC), sg->Loc.GetPositionX(), sg->Loc.GetPositionY(), sg->Loc.GetPositionZ(), BG_SA_GYOrientation[i], GraveyardStatus[i]); - uint32 npc = 0; - uint32 flag = 0; + if (GameObject* gameObject = GetBgMap()->GetGameObject(guid)) + gameObject->RemoveFlag(GO_FLAG_NOT_SELECTABLE); + }; - switch (i) + switch (defenseLine) { - case BG_SA_LEFT_CAPTURABLE_GY: - flag = BG_SA_LEFT_FLAG; - DelObject(flag); - AddObject(flag, (BG_SA_ObjEntries[flag] - (teamId == TEAM_ALLIANCE ? 0 : 1)), - BG_SA_ObjSpawnlocs[flag], 0, 0, 0, 0, RESPAWN_ONE_DAY); - - npc = BG_SA_NPC_RIGSPARK; - if (Creature* rigspark = AddCreature(BG_SA_NpcEntries[npc], npc, BG_SA_NpcSpawnlocs[npc], Attackers)) - rigspark->AI()->Talk(TEXT_SPARKLIGHT_RIGSPARK_SPAWN); - - for (uint8 j = BG_SA_DEMOLISHER_7; j <= BG_SA_DEMOLISHER_8; j++) - { - AddCreature(BG_SA_NpcEntries[j], j, BG_SA_NpcSpawnlocs[j], (Attackers == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE), 600); - - if (Creature* dem = GetBGCreature(j)) - dem->SetFaction(BG_SA_Factions[Attackers]); - } - - UpdateWorldState(BG_SA_LEFT_GY_ALLIANCE, GraveyardStatus[i] == TEAM_ALLIANCE); - UpdateWorldState(BG_SA_LEFT_GY_HORDE, GraveyardStatus[i] == TEAM_HORDE); - - if (Creature* c = Source->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f)) - SendChatMessage(c, teamId == TEAM_ALLIANCE ? TEXT_WEST_GRAVEYARD_CAPTURED_A : TEXT_WEST_GRAVEYARD_CAPTURED_H, Source); - + case DefenseLine::First: + makeInteractable(_graveyardWest); + makeInteractable(_graveyardEast); break; - case BG_SA_RIGHT_CAPTURABLE_GY: - flag = BG_SA_RIGHT_FLAG; - DelObject(flag); - AddObject(flag, (BG_SA_ObjEntries[flag] - (teamId == TEAM_ALLIANCE ? 0 : 1)), - BG_SA_ObjSpawnlocs[flag], 0, 0, 0, 0, RESPAWN_ONE_DAY); - - npc = BG_SA_NPC_SPARKLIGHT; - if (Creature* sparklight = AddCreature(BG_SA_NpcEntries[npc], npc, BG_SA_NpcSpawnlocs[npc], Attackers)) - sparklight->AI()->Talk(TEXT_SPARKLIGHT_RIGSPARK_SPAWN); - - for (uint8 j = BG_SA_DEMOLISHER_5; j <= BG_SA_DEMOLISHER_6; j++) - { - AddCreature(BG_SA_NpcEntries[j], j, BG_SA_NpcSpawnlocs[j], Attackers == TEAM_ALLIANCE ? TEAM_HORDE : TEAM_ALLIANCE, 600); - - if (Creature* dem = GetBGCreature(j)) - dem->SetFaction(BG_SA_Factions[Attackers]); - } - - UpdateWorldState(BG_SA_RIGHT_GY_ALLIANCE, GraveyardStatus[i] == TEAM_ALLIANCE); - UpdateWorldState(BG_SA_RIGHT_GY_HORDE, GraveyardStatus[i] == TEAM_HORDE); - - if (Creature* c = Source->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f)) - SendChatMessage(c, teamId == TEAM_ALLIANCE ? TEXT_EAST_GRAVEYARD_CAPTURED_A : TEXT_EAST_GRAVEYARD_CAPTURED_H, Source); - + case DefenseLine::Second: + makeInteractable(_graveyardCentral); break; - case BG_SA_CENTRAL_CAPTURABLE_GY: - flag = BG_SA_CENTRAL_FLAG; - DelObject(flag); - AddObject(flag, (BG_SA_ObjEntries[flag] - (teamId == TEAM_ALLIANCE ? 0 : 1)), - BG_SA_ObjSpawnlocs[flag], 0, 0, 0, 0, RESPAWN_ONE_DAY); - - UpdateWorldState(BG_SA_CENTER_GY_ALLIANCE, GraveyardStatus[i] == TEAM_ALLIANCE); - UpdateWorldState(BG_SA_CENTER_GY_HORDE, GraveyardStatus[i] == TEAM_HORDE); - - if (Creature* c = Source->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f)) - SendChatMessage(c, teamId == TEAM_ALLIANCE ? TEXT_SOUTH_GRAVEYARD_CAPTURED_A : TEXT_SOUTH_GRAVEYARD_CAPTURED_H, Source); + case DefenseLine::Third: + break; + case DefenseLine::Last: + // make titan orb interactable + if (GameObject* door = GetBgMap()->GetGameObject(_collisionDoorGUID)) + door->UseDoorOrButton(); + makeInteractable(_titanRelicGUID); break; default: - ABORT(); break; - }; + } } -void BattlegroundSA::TitanRelicActivated(Player* clicker) +Creature* BattlegroundSA::FindKanrethad() const { - if (!clicker) - return; - - if (CanInteractWithObject(BG_SA_TITAN_RELIC)) - { - TeamId clickerTeamId = GetTeamIndexByTeamId(GetPlayerTeam(clicker->GetGUID())); - if (clickerTeamId == Attackers) - { - if (clickerTeamId == TEAM_ALLIANCE) - SendBroadcastText(BG_SA_TEXT_ALLIANCE_CAPTURED_TITAN_PORTAL, CHAT_MSG_BG_SYSTEM_ALLIANCE); - else - SendBroadcastText(BG_SA_TEXT_HORDE_CAPTURED_TITAN_PORTAL, CHAT_MSG_BG_SYSTEM_HORDE); - - if (Status == BG_SA_ROUND_ONE) - { - RoundScores[0].winner = Attackers; - RoundScores[0].time = TotalTime; - // Achievement Storm the Beach (1310) - for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) - { - if (Player* player = ObjectAccessor::FindPlayer(itr->first)) - if (GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())) == Attackers) - player->UpdateCriteria(CriteriaType::BeSpellTarget, 65246); - } + return GetBgMap()->GetCreature(_kanrethadGUID); +} - Attackers = (Attackers == TEAM_ALLIANCE) ? TEAM_HORDE : TEAM_ALLIANCE; - Status = BG_SA_SECOND_WARMUP; - TotalTime = 0; - ToggleTimer(); +void BattlegroundSA::EndRound() +{ + RoundScores[0].winner = Attackers; + RoundScores[0].time = std::min<uint32>(TotalTime, BG_SA_ROUNDLENGTH); - if (Creature* c = GetBGCreature(BG_SA_NPC_KANRETHAD)) - SendChatMessage(c, TEXT_ROUND_1_FINISHED); + Attackers = (Attackers == TEAM_ALLIANCE) ? TEAM_HORDE : TEAM_ALLIANCE; + Status = BG_SA_SECOND_WARMUP; + TotalTime = 0; + ToggleTimer(); - UpdateWaitTimer = 5000; - SignaledRoundTwo = false; - SignaledRoundTwoHalfMin = false; - InitSecondRound = true; - ResetObjs(); - GetBgMap()->UpdateAreaDependentAuras(); - CastSpellOnTeam(SPELL_END_OF_ROUND, ALLIANCE); - CastSpellOnTeam(SPELL_END_OF_ROUND, HORDE); - } - else if (Status == BG_SA_ROUND_TWO) - { - RoundScores[1].winner = Attackers; - RoundScores[1].time = TotalTime; - ToggleTimer(); - // Achievement Storm the Beach (1310) - for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) - { - if (Player* player = ObjectAccessor::FindPlayer(itr->first)) - if (GetTeamIndexByTeamId(GetPlayerTeam(player->GetGUID())) == Attackers && RoundScores[1].winner == Attackers) - player->UpdateCriteria(CriteriaType::BeSpellTarget, 65246); - } + UpdateWaitTimer = 5000; + SignaledRoundTwo = false; + SignaledRoundTwoHalfMin = false; + InitSecondRound = true; + ResetObjs(); + GetBgMap()->UpdateAreaDependentAuras(); - if (RoundScores[0].time == RoundScores[1].time) - EndBattleground(TEAM_OTHER); - else if (RoundScores[0].time < RoundScores[1].time) - EndBattleground(RoundScores[0].winner == TEAM_ALLIANCE ? ALLIANCE : HORDE); - else - EndBattleground(RoundScores[1].winner == TEAM_ALLIANCE ? ALLIANCE : HORDE); - } - } - } -} + CastSpellOnTeam(SPELL_END_OF_ROUND, ALLIANCE); + CastSpellOnTeam(SPELL_END_OF_ROUND, HORDE); -void BattlegroundSA::ToggleTimer() -{ - TimerEnabled = !TimerEnabled; - UpdateWorldState(BG_SA_ENABLE_TIMER, TimerEnabled); + RemoveAuraOnTeam(SPELL_CARRYING_SEAFORIUM_CHARGE, HORDE); + RemoveAuraOnTeam(SPELL_CARRYING_SEAFORIUM_CHARGE, ALLIANCE); } -void BattlegroundSA::EndBattleground(Team winner) +void BattlegroundSA::OnGameObjectCreate(GameObject* gameobject) { - // honor reward for winning - if (winner == ALLIANCE) - RewardHonorToTeam(GetBonusHonorFromKill(1), ALLIANCE); - else if (winner == HORDE) - RewardHonorToTeam(GetBonusHonorFromKill(1), HORDE); + Battleground::OnGameObjectCreate(gameobject); - // complete map_end rewards (even if no team wins) - RewardHonorToTeam(GetBonusHonorFromKill(2), ALLIANCE); - RewardHonorToTeam(GetBonusHonorFromKill(2), HORDE); + if (gameobject->GetGoType() == GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING) + _gateGUIDs.insert(gameobject->GetGUID()); - Battleground::EndBattleground(winner); -} - -void BattlegroundSA::UpdateDemolisherSpawns() -{ - for (uint8 i = BG_SA_DEMOLISHER_1; i <= BG_SA_DEMOLISHER_8; i++) + switch (gameobject->GetEntry()) { - if (!BgCreatures[i].IsEmpty()) - { - if (Creature* Demolisher = GetBGCreature(i)) - { - if (Demolisher->isDead()) - { - // Demolisher is not in list - if (DemoliserRespawnList.find(i) == DemoliserRespawnList.end()) - { - DemoliserRespawnList[i] = GameTime::GetGameTimeMS() +30000; - } - else - { - if (DemoliserRespawnList[i] < GameTime::GetGameTimeMS()) - { - Demolisher->Relocate(BG_SA_NpcSpawnlocs[i]); - Demolisher->Respawn(); - DemoliserRespawnList.erase(i); - } - } - } - } - } + case BG_SA_BOAT_ONE_A: + _boatGUIDs[TEAM_ALLIANCE][0] = gameobject->GetGUID(); + break; + case BG_SA_BOAT_TWO_A: + _boatGUIDs[TEAM_ALLIANCE][1] = gameobject->GetGUID(); + break; + case BG_SA_BOAT_ONE_H: + _boatGUIDs[TEAM_HORDE][0] = gameobject->GetGUID(); + break; + case BG_SA_BOAT_TWO_H: + _boatGUIDs[TEAM_HORDE][1] = gameobject->GetGUID(); + break; + case GO_SEAFORIUM_BOMB_A: + _staticBombGUIDs[TEAM_ALLIANCE].insert(gameobject->GetGUID()); + if (Status != BG_SA_SECOND_WARMUP && Status != BG_SA_WARMUP) + gameobject->RemoveFlag(GO_FLAG_NOT_SELECTABLE); + break; + case GO_SEAFORIUM_BOMB_H: + _staticBombGUIDs[TEAM_HORDE].insert(gameobject->GetGUID()); + if (Status != BG_SA_SECOND_WARMUP && Status != BG_SA_WARMUP) + gameobject->RemoveFlag(GO_FLAG_NOT_SELECTABLE); + break; + case GO_SEAFORIUM_CHARGE_A: + case GO_SEAFORIUM_CHARGE_H: + _dynamicBombGUIDs.insert(gameobject->GetGUID()); + break; + case GO_GRAVEYARD_EAST_A: + case GO_GRAVEYARD_EAST_H: + _graveyardEast = gameobject->GetGUID(); + break; + case GO_GRAVEYARD_WEST_A: + case GO_GRAVEYARD_WEST_H: + _graveyardWest = gameobject->GetGUID(); + break; + case GO_GRAVEYARD_CENTRAL_A: + case GO_GRAVEYARD_CENTRAL_H: + _graveyardCentral = gameobject->GetGUID(); + break; + case GO_COLLISION_DOOR: + _collisionDoorGUID = gameobject->GetGUID(); + break; + case GO_TITAN_RELIC_A: + case GO_TITAN_RELIC_H: + _titanRelicGUID = gameobject->GetGUID(); + break; + default: + break; } } -void BattlegroundSA::SendTransportInit(Player* player) +void BattlegroundSA::DoAction(uint32 actionId, WorldObject* source, WorldObject* target) { - if (!BgObjects[BG_SA_BOAT_ONE].IsEmpty() || !BgObjects[BG_SA_BOAT_TWO].IsEmpty()) + switch (actionId) { - UpdateData transData(player->GetMapId()); - if (!BgObjects[BG_SA_BOAT_ONE].IsEmpty()) - GetBGObject(BG_SA_BOAT_ONE)->BuildCreateUpdateBlockForPlayer(&transData, player); - - if (!BgObjects[BG_SA_BOAT_TWO].IsEmpty()) - GetBGObject(BG_SA_BOAT_TWO)->BuildCreateUpdateBlockForPlayer(&transData, player); - - WorldPacket packet; - transData.BuildPacket(&packet); - player->SendDirectMessage(&packet); + case ACTION_SOTA_CAPTURE_GRAVEYARD: + HandleCaptureGraveyardAction(Object::ToGameObject(target), Object::ToPlayer(source)); + break; + default: + break; } } -void BattlegroundSA::SendTransportsRemove(Player* player) +void BattlegroundSA::OnCreatureCreate(Creature* creature) { - if (!BgObjects[BG_SA_BOAT_ONE].IsEmpty() || !BgObjects[BG_SA_BOAT_TWO].IsEmpty()) + Battleground::OnCreatureCreate(creature); + + switch (creature->GetEntry()) { - UpdateData transData(player->GetMapId()); - if (!BgObjects[BG_SA_BOAT_ONE].IsEmpty()) - GetBGObject(BG_SA_BOAT_ONE)->BuildOutOfRangeUpdateBlock(&transData); - if (!BgObjects[BG_SA_BOAT_TWO].IsEmpty()) - GetBGObject(BG_SA_BOAT_TWO)->BuildOutOfRangeUpdateBlock(&transData); - WorldPacket packet; - transData.BuildPacket(&packet); - player->SendDirectMessage(&packet); + case NPC_DEMOLISHER: + creature->SetFaction(BG_SA_Factions[Attackers]); + break; + case NPC_ANTIPERSONNEL_CANNON: + creature->SetFaction(BG_SA_Factions[Attackers == TEAM_HORDE ? TEAM_ALLIANCE : TEAM_HORDE]); + break; + case NPC_KANRETHAD: + _kanrethadGUID = creature->GetGUID(); + break; + case NPC_RIGGER_SPARKLIGHT: + case NPC_GORGRIL_RIGSPARK: + creature->AI()->Talk(TEXT_SPARKLIGHT_RIGSPARK_SPAWN); + break; + default: + break; } } -bool BattlegroundSA::IsGateDestroyed(BG_SA_Objects gateId) const +void BattlegroundSA::OnMapSet(BattlegroundMap* map) { - ASSERT(gateId < MAX_GATES); - return GateStatus[gateId] == BG_SA_ALLIANCE_GATE_DESTROYED || GateStatus[gateId] == BG_SA_HORDE_GATE_DESTROYED; + Battleground::OnMapSet(map); + ResetObjs(); } -bool BattlegroundSA::IsSpellAllowed(uint32 spellId, Player const* /*player*/) const +uint32 BattlegroundSA::GetData(uint32 dataId) const { - switch (spellId) + switch (dataId) { - case SPELL_ALLIANCE_CONTROL_PHASE_SHIFT: - return Attackers == TEAM_HORDE; - case SPELL_HORDE_CONTROL_PHASE_SHIFT: - return Attackers == TEAM_ALLIANCE; - case SPELL_PREPARATION: - return Status == BG_SA_WARMUP || Status == BG_SA_SECOND_WARMUP; + case DATA_ATTACKERS: + return Attackers; + case DATA_STATUS: + return Status; default: - break; + return Battleground::GetData(dataId); } - - return true; } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h index 097df5a4e22..a6160aa5041 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.h @@ -21,9 +21,6 @@ #include "Battleground.h" #include "Object.h" -#define BG_SA_FLAG_AMOUNT 3 -#define BG_SA_DEMOLISHER_AMOUNT 4 - enum BG_SA_Status { BG_SA_NOT_STARTED = 0, @@ -46,60 +43,32 @@ enum BG_SA_GateState BG_SA_HORDE_GATE_DESTROYED = 6, }; -enum BG_SA_EventIds +enum StrandOfTheAncientsGameObjects { - BG_SA_EVENT_BLUE_GATE_DAMAGED = 19040, - BG_SA_EVENT_BLUE_GATE_DESTROYED = 19045, - - BG_SA_EVENT_GREEN_GATE_DAMAGED = 19041, - BG_SA_EVENT_GREEN_GATE_DESTROYED = 19046, - - BG_SA_EVENT_RED_GATE_DAMAGED = 19042, - BG_SA_EVENT_RED_GATE_DESTROYED = 19047, - - BG_SA_EVENT_PURPLE_GATE_DAMAGED = 19043, - BG_SA_EVENT_PURPLE_GATE_DESTROYED = 19048, + GO_SEAFORIUM_BOMB_H = 194086, // Used by horde players + GO_SEAFORIUM_BOMB_A = 190753, // Used by alliance players + GO_SEAFORIUM_CHARGE_H = 257572, + GO_SEAFORIUM_CHARGE_A = 257565, - BG_SA_EVENT_YELLOW_GATE_DAMAGED = 19044, - BG_SA_EVENT_YELLOW_GATE_DESTROYED = 19049, + GO_GRAVEYARD_WEST_H = 191307, + GO_GRAVEYARD_WEST_A = 191308, - BG_SA_EVENT_ANCIENT_GATE_DAMAGED = 19836, - BG_SA_EVENT_ANCIENT_GATE_DESTROYED = 19837, + GO_GRAVEYARD_EAST_H = 191305, + GO_GRAVEYARD_EAST_A = 191306, - BG_SA_EVENT_TITAN_RELIC_ACTIVATED = 22097 -}; + GO_GRAVEYARD_CENTRAL_H = 191309, + GO_GRAVEYARD_CENTRAL_A = 191310, -enum SASpellIds -{ - SPELL_TELEPORT_DEFENDER = 52364, - SPELL_TELEPORT_ATTACKERS = 60178, - SPELL_END_OF_ROUND = 52459, - SPELL_REMOVE_SEAFORIUM = 59077, - SPELL_ALLIANCE_CONTROL_PHASE_SHIFT = 60027, - SPELL_HORDE_CONTROL_PHASE_SHIFT = 60028 -}; + GO_COLLISION_DOOR = 194162, + GO_TITAN_RELIC_A = 194083, + GO_TITAN_RELIC_H = 194082, -enum SACreatureIds -{ - NPC_KANRETHAD = 29, - NPC_INVISIBLE_STALKER = 15214, - NPC_WORLD_TRIGGER = 22515, - NPC_WORLD_TRIGGER_LARGE_AOI_NOT_IMMUNE_PC_NPC = 23472, - - NPC_ANTI_PERSONNAL_CANNON = 27894, - NPC_DEMOLISHER_SA = 28781, - NPC_RIGGER_SPARKLIGHT = 29260, - NPC_GORGRIL_RIGSPARK = 29262 -}; - -enum SAGameObjectIds -{ GO_GATE_OF_THE_GREEN_EMERALD = 190722, GO_GATE_OF_THE_PURPLE_AMETHYST = 190723, GO_GATE_OF_THE_BLUE_SAPPHIRE = 190724, GO_GATE_OF_THE_RED_SUN = 190726, GO_GATE_OF_THE_YELLOW_MOON = 190727, - GO_CHAMBER_OF_ANCIENT_RELICS = 192549, + GO_CHAMBER_OF_ANCIENT_RELICS = 192549 }; enum BG_SA_Timers @@ -164,326 +133,49 @@ enum SAWorldStates BG_SA_GREEN_GATEWS = 3623, BG_SA_YELLOW_GATEWS = 3638, BG_SA_ANCIENT_GATEWS = 3849, + BG_SA_LEFT_GY_ALLIANCE = 3635, BG_SA_RIGHT_GY_ALLIANCE = 3636, BG_SA_CENTER_GY_ALLIANCE = 3637, + BG_SA_RIGHT_ATT_TOKEN_ALL = 3627, BG_SA_LEFT_ATT_TOKEN_ALL = 3626, BG_SA_LEFT_ATT_TOKEN_HRD = 3629, BG_SA_RIGHT_ATT_TOKEN_HRD = 3628, BG_SA_HORDE_DEFENCE_TOKEN = 3631, BG_SA_ALLIANCE_DEFENCE_TOKEN = 3630, + BG_SA_RIGHT_GY_HORDE = 3632, BG_SA_LEFT_GY_HORDE = 3633, BG_SA_CENTER_GY_HORDE = 3634, + BG_SA_BONUS_TIMER = 3571, + BG_SA_ENABLE_TIMER = 3564, BG_SA_ATTACKER_TEAM = 3690, BG_SA_DESTROYED_ALLIANCE_VEHICLES = 3955, BG_SA_DESTROYED_HORDE_VEHICLES = 3956, }; -enum BG_SA_NPCs -{ - BG_SA_GUN_1 = 0, - BG_SA_GUN_2, - BG_SA_GUN_3, - BG_SA_GUN_4, - BG_SA_GUN_5, - BG_SA_GUN_6, - BG_SA_GUN_7, - BG_SA_GUN_8, - BG_SA_GUN_9, - BG_SA_GUN_10, - BG_SA_DEMOLISHER_1, - BG_SA_DEMOLISHER_2, - BG_SA_DEMOLISHER_3, - BG_SA_DEMOLISHER_4, - BG_SA_DEMOLISHER_5, - BG_SA_DEMOLISHER_6, - BG_SA_DEMOLISHER_7, - BG_SA_DEMOLISHER_8, - BG_SA_NPC_SPARKLIGHT, - BG_SA_NPC_RIGSPARK, - BG_SA_NPC_KANRETHAD, - BG_SA_MAXNPC -}; - enum BG_SA_Boat { - BG_SA_BOAT_ONE_A = 193182, - BG_SA_BOAT_TWO_H = 193183, + BG_SA_BOAT_ONE_A = 208000, + BG_SA_BOAT_TWO_H = 208001, BG_SA_BOAT_ONE_H = 193184, BG_SA_BOAT_TWO_A = 193185 }; -uint32 const BG_SA_NpcEntries[BG_SA_MAXNPC] = -{ - NPC_ANTI_PERSONNAL_CANNON, - NPC_ANTI_PERSONNAL_CANNON, - NPC_ANTI_PERSONNAL_CANNON, - NPC_ANTI_PERSONNAL_CANNON, - NPC_ANTI_PERSONNAL_CANNON, - NPC_ANTI_PERSONNAL_CANNON, - NPC_ANTI_PERSONNAL_CANNON, - NPC_ANTI_PERSONNAL_CANNON, - NPC_ANTI_PERSONNAL_CANNON, - NPC_ANTI_PERSONNAL_CANNON, - // 4 beach demolishers - NPC_DEMOLISHER_SA, - NPC_DEMOLISHER_SA, - NPC_DEMOLISHER_SA, - NPC_DEMOLISHER_SA, - // 4 factory demolishers - NPC_DEMOLISHER_SA, - NPC_DEMOLISHER_SA, - NPC_DEMOLISHER_SA, - NPC_DEMOLISHER_SA, - // Used Demolisher Salesman - NPC_RIGGER_SPARKLIGHT, - NPC_GORGRIL_RIGSPARK, - // Kanrethad - NPC_KANRETHAD -}; - -Position const BG_SA_NpcSpawnlocs[BG_SA_MAXNPC] = -{ - // Cannons - { 1436.429f, 110.05f, 41.407f, 5.4f }, - { 1404.9023f, 84.758f, 41.183f, 5.46f }, - { 1068.693f, -86.951f, 93.81f, 0.02f }, - { 1068.83f, -127.56f, 96.45f, 0.0912f }, - { 1422.115f, -196.433f, 42.1825f, 1.0222f }, - { 1454.887f, -220.454f, 41.956f, 0.9627f }, - { 1232.345f, -187.517f, 66.945f, 0.45f }, - { 1249.634f, -224.189f, 66.72f, 0.635f }, - { 1236.213f, 92.287f, 64.965f, 5.751f }, - { 1215.11f, 57.772f, 64.739f, 5.78f }, - // Demolishers - { 1611.597656f, -117.270073f, 8.719355f, 2.513274f}, - { 1575.562500f, -158.421875f, 5.024450f, 2.129302f}, - { 1618.047729f, 61.424641f, 7.248210f, 3.979351f}, - { 1575.103149f, 98.873344f, 2.830360f, 3.752458f}, - // Demolishers 2 - { 1371.055786f, -317.071136f, 35.007359f, 1.947460f}, - { 1424.034912f, -260.195190f, 31.084425f, 2.820013f}, - { 1353.139893f, 223.745438f, 35.265411f, 4.343684f}, - { 1404.809570f, 197.027237f, 32.046032f, 3.605401f}, - // Npcs - { 1348.644165f, -298.786469f, 31.080130f, 1.710423f}, - { 1358.191040f, 195.527786f, 31.018187f, 4.171337f}, - { 841.921f, -134.194f, 196.838f, 6.23082f } -}; - -enum BG_SA_Objects -{ - BG_SA_GREEN_GATE = 0, - BG_SA_YELLOW_GATE, - BG_SA_BLUE_GATE, - BG_SA_RED_GATE, - BG_SA_PURPLE_GATE, - BG_SA_ANCIENT_GATE, - BG_SA_TITAN_RELIC, - BG_SA_PORTAL_DEFFENDER_BLUE, - BG_SA_PORTAL_DEFFENDER_GREEN, - BG_SA_PORTAL_DEFFENDER_YELLOW, - BG_SA_PORTAL_DEFFENDER_PURPLE, - BG_SA_PORTAL_DEFFENDER_RED, - BG_SA_BOAT_ONE, - BG_SA_BOAT_TWO, - BG_SA_SIGIL_1, - BG_SA_SIGIL_2, - BG_SA_SIGIL_3, - BG_SA_SIGIL_4, - BG_SA_SIGIL_5, - BG_SA_CENTRAL_FLAGPOLE, - BG_SA_RIGHT_FLAGPOLE, - BG_SA_LEFT_FLAGPOLE, - BG_SA_CENTRAL_FLAG, - BG_SA_RIGHT_FLAG, - BG_SA_LEFT_FLAG, - BG_SA_BOMB, - BG_SA_MAXOBJ = BG_SA_BOMB+68 -}; - -Position const BG_SA_ObjSpawnlocs[BG_SA_MAXOBJ] = -{ - { 1411.57f, 108.163f, 28.692f, 5.441f }, - { 1055.452f, -108.1f, 82.134f, 0.034f }, - { 1431.3413f, -219.437f, 30.893f, 0.9736f }, - { 1227.667f, -212.555f, 55.372f, 0.5023f }, - { 1214.681f, 81.21f, 53.413f, 5.745f }, - { 878.555f, -108.2f, 117.845f, 0.0f }, - { 836.5f, -108.8f, 120.219f, 0.0f }, - // Portal - {1468.380005f, -225.798996f, 30.896200f, 0.0f}, //blue - {1394.270020f, 72.551399f, 31.054300f, 0.0f}, //green - {1065.260010f, -89.79501f, 81.073402f, 0.0f}, //yellow - {1216.069946f, 47.904301f, 54.278198f, 0.0f}, //purple - {1255.569946f, -233.548996f, 56.43699f, 0.0f}, //red - // Ships - { 2679.696777f, -826.891235f, 3.712860f, 5.78367f}, //rot2 1 rot3 0.0002f - { 2574.003662f, 981.261475f, 2.603424f, 0.807696f}, - // Sigils - { 1414.054f, 106.72f, 41.442f, 5.441f }, - { 1060.63f, -107.8f, 94.7f, 0.034f }, - { 1433.383f, -216.4f, 43.642f, 0.9736f }, - { 1230.75f, -210.724f, 67.611f, 0.5023f }, - { 1217.8f, 79.532f, 66.58f, 5.745f }, - // Flagpoles - { 1215.114258f, -65.711861f, 70.084267f, -3.124123f}, - {1338.863892f, -153.336533f, 30.895121f, -2.530723f}, - {1309.124268f, 9.410645f, 30.893402f, -1.623156f}, - // Flags - { 1215.108032f, -65.715767f, 70.084267f, -3.124123f}, - { 1338.859253f, -153.327316f, 30.895077f, -2.530723f}, - { 1309.192017f, 9.416233f, 30.893402f, 1.518436f}, - // Bombs - {1333.45f, 211.354f, 31.0538f, 5.03666f}, - {1334.29f, 209.582f, 31.0532f, 1.28088f}, - {1332.72f, 210.049f, 31.0532f, 1.28088f}, - {1334.28f, 210.78f, 31.0538f, 3.85856f}, - {1332.64f, 211.39f, 31.0532f, 1.29266f}, - {1371.41f, 194.028f, 31.5107f, 0.753095f}, - {1372.39f, 194.951f, 31.4679f, 0.753095f}, - {1371.58f, 196.942f, 30.9349f, 1.01777f}, - {1370.43f, 196.614f, 30.9349f, 0.957299f}, - {1369.46f, 196.877f, 30.9351f, 2.45348f}, - {1370.35f, 197.361f, 30.9349f, 1.08689f}, - {1369.47f, 197.941f, 30.9349f, 0.984787f}, - {1592.49f, 47.5969f, 7.52271f, 4.63218f}, - {1593.91f, 47.8036f, 7.65856f, 4.63218f}, - {1593.13f, 46.8106f, 7.54073f, 4.63218f}, - {1589.22f, 36.3616f, 7.45975f, 4.64396f}, - {1588.24f, 35.5842f, 7.55613f, 4.79564f}, - {1588.14f, 36.7611f, 7.49675f, 4.79564f}, - {1595.74f, 35.5278f, 7.46602f, 4.90246f}, - {1596, 36.6475f, 7.47991f, 4.90246f}, - {1597.03f, 36.2356f, 7.48631f, 4.90246f}, - {1597.93f, 37.1214f, 7.51725f, 4.90246f}, - {1598.16f, 35.888f, 7.50018f, 4.90246f}, - {1579.6f, -98.0917f, 8.48478f, 1.37996f}, - {1581.2f, -98.401f, 8.47483f, 1.37996f}, - {1580.38f, -98.9556f, 8.4772f, 1.38781f}, - {1585.68f, -104.966f, 8.88551f, 0.493246f}, - {1586.15f, -106.033f, 9.10616f, 0.493246f}, - {1584.88f, -105.394f, 8.82985f, 0.493246f}, - {1581.87f, -100.899f, 8.46164f, 0.929142f}, - {1581.48f, -99.4657f, 8.46926f, 0.929142f}, - {1583.2f, -91.2291f, 8.49227f, 1.40038f}, - {1581.94f, -91.0119f, 8.49977f, 1.40038f}, - {1582.33f, -91.951f, 8.49353f, 1.1844f}, - {1342.06f, -304.049f, 30.9532f, 5.59507f}, - {1340.96f, -304.536f, 30.9458f, 1.28323f}, - {1341.22f, -303.316f, 30.9413f, 0.486051f}, - {1342.22f, -302.939f, 30.986f, 4.87643f}, - {1382.16f, -287.466f, 32.3063f, 4.80968f}, - {1381, -287.58f, 32.2805f, 4.80968f}, - {1381.55f, -286.536f, 32.3929f, 2.84225f}, - {1382.75f, -286.354f, 32.4099f, 1.00442f}, - {1379.92f, -287.34f, 32.2872f, 3.81615f}, - {1100.52f, -2.41391f, 70.2984f, 0.131054f}, - {1099.35f, -2.13851f, 70.3375f, 4.4586f}, - {1099.59f, -1.00329f, 70.238f, 2.49903f}, - {1097.79f, 0.571316f, 70.159f, 4.00307f}, - {1098.74f, -7.23252f, 70.7972f, 4.1523f}, - {1098.46f, -5.91443f, 70.6715f, 4.1523f}, - {1097.53f, -7.39704f, 70.7959f, 4.1523f}, - {1097.32f, -6.64233f, 70.7424f, 4.1523f}, - {1096.45f, -5.96664f, 70.7242f, 4.1523f}, - {971.725f, 0.496763f, 86.8467f, 2.09233f}, - {973.589f, 0.119518f, 86.7985f, 3.17225f}, - {972.524f, 1.25333f, 86.8351f, 5.28497f}, - {971.993f, 2.05668f, 86.8584f, 5.28497f}, - {973.635f, 2.11805f, 86.8197f, 2.36722f}, - {974.791f, 1.74679f, 86.7942f, 1.5936f}, - {974.771f, 3.0445f, 86.8125f, 0.647199f}, - {979.554f, 3.6037f, 86.7923f, 1.69178f}, - {979.758f, 2.57519f, 86.7748f, 1.76639f}, - {980.769f, 3.48904f, 86.7939f, 1.76639f}, - {979.122f, 2.87109f, 86.7794f, 1.76639f}, - {986.167f, 4.85363f, 86.8439f, 1.5779f}, - {986.176f, 3.50367f, 86.8217f, 1.5779f}, - {987.33f, 4.67389f, 86.8486f, 1.5779f}, - {985.23f, 4.65898f, 86.8368f, 1.5779f}, - {984.556f, 3.54097f, 86.8137f, 1.5779f}, -}; - -/* Ships: - * 193182 - ally - * 193183 - horde - * 193184 - horde - * 193185 - ally - * Banners: - * 191308 - left one, - * 191306 - right one, - * 191310 - central, - * Ally ones, substract 1 - * to get horde ones. - */ - -uint32 const BG_SA_ObjEntries[BG_SA_MAXOBJ + BG_SA_FLAG_AMOUNT] = -{ - 190722, - 190727, - 190724, - 190726, - 190723, - 192549, - 192834, - 192819, - 192819, - 192819, - 192819, - 192819, - 0, // Boat - 0, // Boat - 192687, - 192685, - 192689, - 192690, - 192691, - 191311, - 191311, - 191311, - 191310, - 191306, - 191308, - 190753 -}; - uint32 const BG_SA_Factions[2] = { 1732, 1735, }; -enum BG_SA_Graveyards +enum class StrandOfTheAncientsGraveyard { - BG_SA_BEACH_GY = 0, - BG_SA_DEFENDER_LAST_GY, - BG_SA_RIGHT_CAPTURABLE_GY, - BG_SA_LEFT_CAPTURABLE_GY, - BG_SA_CENTRAL_CAPTURABLE_GY, - BG_SA_MAX_GY -}; - -const uint32 BG_SA_GYEntries[BG_SA_MAX_GY] = -{ - 1350, - 1349, - 1347, - 1346, - 1348, -}; - -float const BG_SA_GYOrientation[BG_SA_MAX_GY] = -{ - 6.202f, - 1.926f, // right capturable GY - 3.917f, // left capturable GY - 3.104f, // center, capturable - 6.148f, // defender last GY + West, + East, + Central }; enum BG_SA_BroadcastTexts @@ -495,24 +187,31 @@ enum BG_SA_BroadcastTexts BG_SA_TEXT_ROUND_TWO_START_HALF_MINUTE = 29449 }; +enum class DefenseLine +{ + First, + Second, + Third, + Last +}; + struct GateInfo { - uint8 GateId; uint32 GameObjectId; uint32 WorldState; uint8 DamagedText; uint8 DestroyedText; + DefenseLine LineOfDefense; }; -#define MAX_GATES 6 -GateInfo const Gates[MAX_GATES] = +GateInfo const Gates[] = { - { BG_SA_GREEN_GATE, GO_GATE_OF_THE_GREEN_EMERALD, BG_SA_GREEN_GATEWS, TEXT_GREEN_GATE_UNDER_ATTACK, TEXT_GREEN_GATE_DESTROYED }, - { BG_SA_YELLOW_GATE, GO_GATE_OF_THE_YELLOW_MOON, BG_SA_YELLOW_GATEWS, TEXT_YELLOW_GATE_UNDER_ATTACK, TEXT_YELLOW_GATE_DESTROYED }, - { BG_SA_BLUE_GATE, GO_GATE_OF_THE_BLUE_SAPPHIRE, BG_SA_BLUE_GATEWS, TEXT_BLUE_GATE_UNDER_ATTACK, TEXT_BLUE_GATE_DESTROYED }, - { BG_SA_RED_GATE, GO_GATE_OF_THE_RED_SUN, BG_SA_RED_GATEWS, TEXT_RED_GATE_UNDER_ATTACK, TEXT_RED_GATE_DESTROYED }, - { BG_SA_PURPLE_GATE, GO_GATE_OF_THE_PURPLE_AMETHYST, BG_SA_PURPLE_GATEWS, TEXT_PURPLE_GATE_UNDER_ATTACK, TEXT_PURPLE_GATE_DESTROYED }, - { BG_SA_ANCIENT_GATE, GO_CHAMBER_OF_ANCIENT_RELICS, BG_SA_ANCIENT_GATEWS, TEXT_ANCIENT_GATE_UNDER_ATTACK, TEXT_ANCIENT_GATE_DESTROYED } + { GO_GATE_OF_THE_GREEN_EMERALD, BG_SA_GREEN_GATEWS, TEXT_GREEN_GATE_UNDER_ATTACK, TEXT_GREEN_GATE_DESTROYED, DefenseLine::First }, + { GO_GATE_OF_THE_YELLOW_MOON, BG_SA_YELLOW_GATEWS, TEXT_YELLOW_GATE_UNDER_ATTACK, TEXT_YELLOW_GATE_DESTROYED, DefenseLine::Third }, + { GO_GATE_OF_THE_BLUE_SAPPHIRE, BG_SA_BLUE_GATEWS, TEXT_BLUE_GATE_UNDER_ATTACK, TEXT_BLUE_GATE_DESTROYED, DefenseLine::First }, + { GO_GATE_OF_THE_RED_SUN, BG_SA_RED_GATEWS, TEXT_RED_GATE_UNDER_ATTACK, TEXT_RED_GATE_DESTROYED, DefenseLine::Second }, + { GO_GATE_OF_THE_PURPLE_AMETHYST, BG_SA_PURPLE_GATEWS, TEXT_PURPLE_GATE_UNDER_ATTACK, TEXT_PURPLE_GATE_DESTROYED, DefenseLine::Second }, + { GO_CHAMBER_OF_ANCIENT_RELICS, BG_SA_ANCIENT_GATEWS, TEXT_ANCIENT_GATE_UNDER_ATTACK, TEXT_ANCIENT_GATE_DESTROYED, DefenseLine::Last } }; struct BG_SA_RoundScore @@ -521,6 +220,11 @@ struct BG_SA_RoundScore uint32 time; }; +enum StrandOfTheAncientSharedActions +{ + ACTION_SOTA_CAPTURE_GRAVEYARD +}; + /// Class for manage Strand of Ancient battleground class BattlegroundSA : public Battleground { @@ -543,21 +247,18 @@ class BattlegroundSA : public Battleground void Reset() override; /// Called when a player kill a unit in bg void HandleKillUnit(Creature* creature, Unit* killer) override; - /// Return the nearest graveyard where player can respawn - WorldSafeLocsEntry const* GetClosestGraveyard(Player* player) override; /// Called when someone activates an event void ProcessEvent(WorldObject* /*obj*/, uint32 /*eventId*/, WorldObject* /*invoker*/ = nullptr) override; - /// Called when a player click on flag (graveyard flag) - void EventPlayerClickedOnFlag(Player* source, GameObject* go) override; /// Called when a player clicked on relic void TitanRelicActivated(Player* clicker); /// Return GateInfo, relative to bg data, according to gameobject entry GateInfo const* GetGate(uint32 entry) { - for (uint8 i = 0; i < MAX_GATES; ++i) - if (Gates[i].GameObjectId == entry) - return &Gates[i]; + for (GateInfo const& gate : Gates) + if (gate.GameObjectId == entry) + return &gate; + return nullptr; } @@ -568,11 +269,12 @@ class BattlegroundSA : public Battleground void RemovePlayer(Player* player, ObjectGuid guid, uint32 team) override; void HandleAreaTrigger(Player* source, uint32 trigger, bool entered) override; - /* Scorekeeping */ - - // Control Phase Shift - bool IsSpellAllowed(uint32 spellId, Player const* player) const override; + void OnGameObjectCreate(GameObject* gameobject) override; + void DoAction(uint32 actionId, WorldObject* source, WorldObject* target) override; + void OnCreatureCreate(Creature* creature) override; + void OnMapSet(BattlegroundMap* map) override; + uint32 GetData(uint32 dataId) const override; private: /** @@ -587,20 +289,8 @@ class BattlegroundSA : public Battleground * \brief Called between the two round * -Teleport all players to good location */ - void TeleportPlayers(); - void TeleportToEntrancePosition(Player* player); - /** - * \brief Called on start and between the two round - * -Update faction of all vehicle - */ - void OverrideGunFaction(); - /// Set selectable or not demolisher, called on battle start, when boats arrive to dock - void DemolisherStartState(bool start); - /// Checks if a player can interact with the given object - bool CanInteractWithObject(uint32 objectId); - /// Updates interaction flags of specific objects - void UpdateObjectInteractionFlags(uint32 objectId); - void UpdateObjectInteractionFlags(); + void TeleportPlayers() const; + void TeleportToEntrancePosition(Player* player) const; /** * \brief Called when a gate is destroy * -Give honor to player witch destroy it @@ -617,19 +307,24 @@ class BattlegroundSA : public Battleground * \param i : id of graveyard * \param Source : Player who capture gy */ - void CaptureGraveyard(BG_SA_Graveyards i, Player* Source); + void CaptureGraveyard(StrandOfTheAncientsGraveyard graveyard, TeamId teamId); /// Switch on/off timer worldstate void ToggleTimer(); - /// Respawn dead demolisher - void UpdateDemolisherSpawns(); - /// Send packet to player for create boats (client part) void SendTransportInit(Player* player); /// Send packet to player for destroy boats (client part) void SendTransportsRemove(Player* player); - bool IsGateDestroyed(BG_SA_Objects gateId) const; + bool IsGateDestroyed(GateInfo const* gateInfo) const; + + void HandleCaptureGraveyardAction(GameObject* graveyardBanner, Player* player); + + void MakeObjectsInteractable(DefenseLine defenseLine); + + Creature* FindKanrethad() const; + + void EndRound(); /// Id of attacker team TeamId Attackers; @@ -640,12 +335,8 @@ class BattlegroundSA : public Battleground uint32 EndRoundTimer; /// For know if boats has start moving or not yet bool ShipsStarted; - /// Status of each gate (Destroy/Damage/Intact) - BG_SA_GateState GateStatus[MAX_GATES]; /// Statu of battle (Start or not, and what round) BG_SA_Status Status; - /// Team witch conntrol each graveyard - TeamId GraveyardStatus[BG_SA_MAX_GY]; /// Score of each round BG_SA_RoundScore RoundScores[2]; /// used for know we are in timer phase or not (used for worldstate update) @@ -658,6 +349,18 @@ class BattlegroundSA : public Battleground bool SignaledRoundTwoHalfMin; /// for know if second round has been init bool InitSecondRound; - std::map<uint32/*id*/, uint32/*timer*/> DemoliserRespawnList; + + // [team][boat_idx] + std::array<std::array<ObjectGuid, 2 /*BOAT_COUNT*/>, PVP_TEAMS_COUNT> _boatGUIDs; + std::array<GuidUnorderedSet, PVP_TEAMS_COUNT> _staticBombGUIDs; // bombs ready to be picked up + GuidUnorderedSet _dynamicBombGUIDs; // bombs thrown by players, ready to explode/disarm + + ObjectGuid _graveyardWest; + ObjectGuid _graveyardEast; + ObjectGuid _graveyardCentral; + GuidUnorderedSet _gateGUIDs; + ObjectGuid _collisionDoorGUID; + ObjectGuid _kanrethadGUID; + ObjectGuid _titanRelicGUID; }; #endif diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 9d073e84c59..06c3ccaf4ad 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1581,7 +1581,7 @@ void Spell::EffectOpenLock() return; // Arathi Basin banner opening. /// @todo Verify correctness of this check - if (gameObjTarget->GetMapId() != 30 && ((goInfo->type == GAMEOBJECT_TYPE_BUTTON && goInfo->button.noDamageImmune) || + if (gameObjTarget->GetMapId() != 30 && gameObjTarget->GetMapId() != 607 && ((goInfo->type == GAMEOBJECT_TYPE_BUTTON && goInfo->button.noDamageImmune) || (goInfo->type == GAMEOBJECT_TYPE_GOOBER && goInfo->goober.requireLOS))) { //CanUseBattlegroundObject() already called in CheckCast() diff --git a/src/server/scripts/Northrend/StrandOfTheAncients/strand_of_the_ancients.cpp b/src/server/scripts/Northrend/StrandOfTheAncients/strand_of_the_ancients.cpp new file mode 100644 index 00000000000..ed268327760 --- /dev/null +++ b/src/server/scripts/Northrend/StrandOfTheAncients/strand_of_the_ancients.cpp @@ -0,0 +1,87 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "ScriptMgr.h" +#include "BattlegroundSA.h" +#include "GameObject.h" +#include "GameObjectAI.h" +#include "Player.h" +#include "SpellScript.h" +#include "ZoneScript.h" + +// 191305 - Horde Banner +// 191306 - Alliance Banner +// 191307 - Horde Banner +// 191308 - Alliance Banner +// 191309 - Horde Banner +// 191310 - Alliance Banner +struct go_sota_capturable_object : public GameObjectAI +{ + go_sota_capturable_object(GameObject* go) : GameObjectAI(go) { } + + bool OnGossipHello(Player* player) override + { + if (me->GetGoState() != GO_STATE_READY || me->HasFlag(GO_FLAG_NOT_SELECTABLE)) + return true; + + if (ZoneScript* zonescript = me->GetZoneScript()) + { + zonescript->DoAction(ACTION_SOTA_CAPTURE_GRAVEYARD, player, me); + return false; + } + + return true; + } +}; + +// 52410 - Place Seaforium Charge +class spell_place_seaforium_charge : public SpellScript +{ + enum Spells + { + SPELL_PLACE_SEAFORIUM_CHARGE_HORDE = 226090, + SPELL_PLACE_SEAFORIUM_CHARGE_ALLIANCE = 226094 + }; + + bool Validate(SpellInfo const* /*spell*/) override + { + return ValidateSpellInfo({ SPELL_PLACE_SEAFORIUM_CHARGE_HORDE, SPELL_PLACE_SEAFORIUM_CHARGE_ALLIANCE }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + if (Player* playerCaster = GetCaster()->ToPlayer()) + { + Team const team = playerCaster->GetBGTeam(); + if (team == ALLIANCE) + playerCaster->CastSpell(playerCaster, SPELL_PLACE_SEAFORIUM_CHARGE_ALLIANCE, true); + else if (team == HORDE) + playerCaster->CastSpell(playerCaster, SPELL_PLACE_SEAFORIUM_CHARGE_HORDE, true); + } + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_place_seaforium_charge::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +void AddSC_strand_of_the_ancients() +{ + RegisterGameObjectAI(go_sota_capturable_object); + RegisterSpellScript(spell_place_seaforium_charge); +} diff --git a/src/server/scripts/Northrend/northrend_script_loader.cpp b/src/server/scripts/Northrend/northrend_script_loader.cpp index c41abc94806..fe2514d804e 100644 --- a/src/server/scripts/Northrend/northrend_script_loader.cpp +++ b/src/server/scripts/Northrend/northrend_script_loader.cpp @@ -210,6 +210,8 @@ void AddSC_wintergrasp(); void AddSC_zuldrak(); void AddSC_crystalsong_forest(); +void AddSC_strand_of_the_ancients(); + // The name of this function should match: // void Add${NameOfDirectory}Scripts() void AddNorthrendScripts() @@ -406,4 +408,6 @@ void AddNorthrendScripts() AddSC_storm_peaks(); AddSC_wintergrasp(); AddSC_zuldrak(); + + AddSC_strand_of_the_ancients(); } |