diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/BankList.xml b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/BankList.xml
new file mode 100644
index 000000000..d97c3a533
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/BankList.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/Cutscenes/Index.version b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/Cutscenes/Index.version
new file mode 100644
index 000000000..a8307e8d4
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/Cutscenes/Index.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/AbilData.xml b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/AbilData.xml
new file mode 100644
index 000000000..c689a5fa0
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/AbilData.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/ConversationData.xml b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/ConversationData.xml
new file mode 100644
index 000000000..84acbbe46
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/ConversationData.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/SoundData.xml b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/SoundData.xml
new file mode 100644
index 000000000..2eaf239ef
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/SoundData.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/SoundtrackData.xml b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/SoundtrackData.xml
new file mode 100644
index 000000000..67c2f3cd5
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/SoundtrackData.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/TerrainData.xml b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/TerrainData.xml
new file mode 100644
index 000000000..06b9b2adc
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/TerrainData.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/UnitData.xml b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/UnitData.xml
new file mode 100644
index 000000000..56e7af952
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Base.SC2Data/GameData/UnitData.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ComponentList.SC2Components b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ComponentList.SC2Components
new file mode 100644
index 000000000..fc74b206a
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ComponentList.SC2Components
@@ -0,0 +1,24 @@
+
+
+ GameData
+ GameText
+ DocumentInfo
+ MapInfo
+ Triggers
+ t3Terrain.xml
+ Objects
+ Regions
+ CustomAI
+ GameText
+ GameText
+ GameText
+ GameText
+ GameText
+ GameText
+ GameText
+ GameText
+ GameText
+ GameText
+ GameText
+ Cutscenes/Index
+
\ No newline at end of file
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/CustomAI b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/CustomAI
new file mode 100644
index 000000000..a32b4cadf
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/CustomAI
@@ -0,0 +1,1483 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/CustomAI.version b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/CustomAI.version
new file mode 100644
index 000000000..bd3aca6c5
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/CustomAI.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/DocumentHeader b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/DocumentHeader
new file mode 100644
index 000000000..ecc2e7798
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/DocumentHeader differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/DocumentInfo b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/DocumentInfo
new file mode 100644
index 000000000..689882eed
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/DocumentInfo
@@ -0,0 +1,7 @@
+
+
+
+ bnet:Swarm Story (Campaign)/0.0/999,file:Campaigns/SwarmStory.SC2Campaign
+ file:Mods\ArchipelagoHotS.SC2Mod
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/DocumentInfo.version b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/DocumentInfo.version
new file mode 100644
index 000000000..47d704898
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/DocumentInfo.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/GameData.version b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/GameData.version
new file mode 100644
index 000000000..e2b377eb4
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/GameData.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/GameText.version b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/GameText.version
new file mode 100644
index 000000000..f40d52abb
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/GameText.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/MapInfo b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/MapInfo
new file mode 100644
index 000000000..91012fbae
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/MapInfo differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/MapInfo.version b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/MapInfo.version
new file mode 100644
index 000000000..a59879e4c
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/MapInfo.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/MapScript.galaxy b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/MapScript.galaxy
new file mode 100644
index 000000000..09b9478b1
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/MapScript.galaxy
@@ -0,0 +1,6321 @@
+//==================================================================================================
+//
+// Generated Map Script
+//
+// Name: The Reckoning
+//
+//==================================================================================================
+include "TriggerLibs/NativeLib"
+include "TriggerLibs/LibertyLib"
+include "TriggerLibs/SwarmLib"
+include "TriggerLibs/SwarmCampaignLib"
+include "LibC6542F50"
+include "aiEC423AC6"
+include "ai17BA421C"
+include "ai7AC59A6F"
+include "ai392DEDDF"
+include "ai05FE0989"
+include "aiAFDBFFDC"
+
+//--------------------------------------------------------------------------------------------------
+// Library Initialization
+//--------------------------------------------------------------------------------------------------
+void InitLibs () {
+ libNtve_InitLib();
+ libLbty_InitLib();
+ libHots_InitLib();
+ libSwaC_InitLib();
+ libC6542F50_InitLib();
+}
+
+//--------------------------------------------------------------------------------------------------
+// Constants
+//--------------------------------------------------------------------------------------------------
+const int gv_PLAYER_01_USER = 1;
+const int gv_PLAYER_02_DOMINION_RED = 2;
+const int gv_PLAYER_03_DOMINION_BLUE = 3;
+const int gv_PLAYER_04_DOMINION_PURPLE = 4;
+const int gv_PLAYER_05_DOMINION_TEAL = 5;
+const int gv_PLAYER_07_DOMINION_GREEN22 = 9;
+const int gv_PLAYER_07_DOMINION_GREEN23 = 10;
+const int gv_pLAYER_08_IZSHA = 14;
+
+//--------------------------------------------------------------------------------------------------
+// Global Structures
+//--------------------------------------------------------------------------------------------------
+struct gs_RECORD_RepairSCV {
+ unit lv_sCV;
+ point lv_homePoint;
+};
+
+//--------------------------------------------------------------------------------------------------
+// Global Variables
+//--------------------------------------------------------------------------------------------------
+unit gv_kerrigan;
+playergroup gv_dominionPlayerGroup;
+bool gv_gameOver;
+bool gv_inCinematic;
+string gv_mapMusicTrack;
+unitgroup gv_zagaraReinforcements;
+int gv_perfPausedCount;
+region[21] gv_perfPausedRegions;
+unitgroup[21] gv_perfPausedUnits;
+region[21] gv_perfRevealRegions;
+gs_RECORD_RepairSCV[16] gv_repairSCVs;
+int gv_numberOfRepairSCVs;
+int gv_objectiveRescueBrood2222;
+int[4] gv_lanePing;
+bool gv_lane1Paused;
+bool gv_lane2Paused;
+bool gv_lane3Paused;
+unitgroup gv_dominionPatrolRightGroup;
+unitgroup gv_dominionPatrolLeftGroup;
+unitgroup gv_palaceTurrets;
+unit gv_hYPERION;
+unitgroup gv_hyperionVictims;
+bool gv_hyperionFirstAttackTransmision;
+int gv_odinPing;
+bool gv_hyperionDamaged;
+timer gv_achievementTimedRunTimer;
+int gv_kerriganKills;
+fixed gv_totalHyperionDamage;
+int gv_largestZergForce;
+int gv_raynorKills;
+bool gv_odinSent;
+int gv_player2WavesSent;
+int gv_objectiveDestroyDominionBase;
+int gv_palaceGatePing;
+int gv_objectiveRescueBrood223;
+int gv_hyperionPing;
+int gv_objectiveRescueBrood222;
+unitgroup gv_cinematicHiddenUnits;
+unitgroup gv_cinematicTempUnits;
+bool gv_cinematicCompleted;
+unit[64] gv_introUnits;
+point[64] gv_introUnitPositions;
+fixed[64] gv_introUnitFacings;
+sound gv_introTerranSound;
+sound gv_introTerranAmb;
+sound gv_introZergSound;
+int gv_numberOfIntroUnits;
+unit gv_cinematicHyperion;
+bool gv_introMusicCompleted;
+unit gv_midHyperion;
+bool gv_midMusicCompleted;
+unit gv_victoryKerrigan;
+sound gv_victoryZergSound1;
+sound gv_victoryZergSound2;
+sound gv_victoryZergSound3;
+
+void InitGlobals () {
+ int init_i;
+
+ gv_dominionPlayerGroup = PlayerGroupEmpty();
+ gv_zagaraReinforcements = UnitGroupEmpty();
+ for (init_i = 0; init_i <= 20; init_i += 1) {
+ gv_perfPausedUnits[init_i] = UnitGroupEmpty();
+ }
+ for (init_i = 0; init_i <= 3; init_i += 1) {
+ gv_lanePing[init_i] = c_invalidPingId;
+ }
+ gv_lane1Paused = true;
+ gv_lane2Paused = true;
+ gv_lane3Paused = true;
+ gv_dominionPatrolRightGroup = UnitGroupEmpty();
+ gv_dominionPatrolLeftGroup = UnitGroupEmpty();
+ gv_palaceTurrets = UnitGroupEmpty();
+ gv_hYPERION = UnitFromId(370);
+ gv_hyperionVictims = UnitGroupEmpty();
+ gv_odinPing = c_invalidPingId;
+ gv_achievementTimedRunTimer = TimerCreate();
+ gv_objectiveDestroyDominionBase = c_invalidObjectiveId;
+ gv_palaceGatePing = c_invalidPingId;
+ gv_objectiveRescueBrood223 = c_invalidObjectiveId;
+ gv_hyperionPing = c_invalidPingId;
+ gv_objectiveRescueBrood222 = c_invalidObjectiveId;
+ gv_cinematicHiddenUnits = UnitGroupEmpty();
+ gv_cinematicTempUnits = UnitGroupEmpty();
+}
+
+//--------------------------------------------------------------------------------------------------
+// Global Function Declarations
+//--------------------------------------------------------------------------------------------------
+void gf_AIDiamondback (int lp_owner, unit lp_diamondback, unitgroup lp_nearbyUnits);
+unitgroup gf_EnemiesWithinRange (unit lp_unit, fixed lp_range, unitfilter lp_filter);
+void gf_RepairStructurewithSCV (int lp_index, unit lp_structure);
+void gf_UnloadNydusAnim (unit lp_cHOSEN_NYDUS);
+void gf_CreatePatrolUnit (string lp_unitType, point lp_unitSpawnPoint, point lp_unitFacingPoint, unitgroup lp_unitGroup);
+void gf_IntroMoveUnits (region lp_originalRegion, point lp_movePoint, fixed lp_delay);
+void gf_HideKerrigan ();
+
+//--------------------------------------------------------------------------------------------------
+// Trigger Variables
+//--------------------------------------------------------------------------------------------------
+trigger gt_Initialization;
+trigger gt_Init01Technology;
+trigger gt_Init02Players;
+trigger gt_Init03Units;
+trigger gt_Init04MusicSound;
+trigger gt_Init05Environment;
+trigger gt_Init06Difficulties;
+trigger gt_Init07Help;
+trigger gt_PerformanceHandler;
+trigger gt_PauseUnitsAgain;
+trigger gt_ShowMapCheatUsed;
+trigger gt_StartGameQ;
+trigger gt_StartHarvesting;
+trigger gt_EliteForceIntroQ;
+trigger gt_TipEliteForcesQ;
+trigger gt_HandleKerriganDeath;
+trigger gt_KerriganIsKilledQ;
+trigger gt_AugustgradGateIntrosQ;
+trigger gt_AugustgradGateIntroProximity;
+trigger gt_CreateAugustgradGatePings;
+trigger gt_Lane1;
+trigger gt_Lane1SpawnLoop;
+trigger gt_Lane2;
+trigger gt_Lane2SpawnLoop;
+trigger gt_Lane3;
+trigger gt_Lane3SpawnLoop;
+trigger gt_LaneSpectacleStart;
+trigger gt_LanePauseLoop;
+trigger gt_SCVRepairScript;
+trigger gt_Lane1ClearedQ;
+trigger gt_Lane2ClearedQ;
+trigger gt_Lane3ClearedQ;
+trigger gt_ZagaraUpgrades;
+trigger gt_CreateDominionPatrolRightSide;
+trigger gt_CreateDominionPatrolLeftSide;
+trigger gt_BridgeControl;
+trigger gt_DominionLeft2Deactivate;
+trigger gt_DominionRight1Deactivate;
+trigger gt_DominionRight2Deactivate;
+trigger gt_DominionMiddle1Deactivate;
+trigger gt_DominionMiddle2Deactivate;
+trigger gt_CreatePalacePing;
+trigger gt_DominionRight1DestroyedQ;
+trigger gt_DominionLeft2DestroyedQ;
+trigger gt_PalaceGateat90;
+trigger gt_TransmissionPalaceGateat90Q;
+trigger gt_PalaceGateat50;
+trigger gt_TransmissionPalaceGateat50Q;
+trigger gt_HyperionTrigger;
+trigger gt_HyperionIntroQ;
+trigger gt_HyperionAttacked;
+trigger gt_HyperionAttackedQ;
+trigger gt_HyperionAttackedFirstTimeQ;
+trigger gt_HyperionLowHealthQ;
+trigger gt_HyperionSCVRespawn;
+trigger gt_HyperionBigAttack1Q;
+trigger gt_HyperionBigAttack2Q;
+trigger gt_HyperionBigAttack3Q;
+trigger gt_OdinDiesQ;
+trigger gt_RaynorAttackPrepTiming;
+trigger gt_RaynorAttackPrepQ;
+trigger gt_TotalHyperionDamage;
+trigger gt_DefeatBaseDead;
+trigger gt_DefeatHyperionDies;
+trigger gt_VictoryDestroyPalaceGateCompleted;
+trigger gt_VictorySequence;
+trigger gt_Victory;
+trigger gt_Defeat;
+trigger gt_VictoryCheat;
+trigger gt_DefeatCheat;
+trigger gt_PlayerAbortsMission;
+trigger gt_AchievementHyperionDamageTaken;
+trigger gt_AchievementTimedRunNH;
+trigger gt_AchievementDestroytheOdinH;
+trigger gt_LargestZergForce;
+trigger gt_RaynorKills;
+trigger gt_StartAI;
+trigger gt_StartUpgradesNormal;
+trigger gt_StartUpgradesHard;
+trigger gt_AIGiveResources;
+trigger gt_Player2SendsAIWave;
+trigger gt_TipMissionHelpQ;
+trigger gt_ObjectiveDestroyPalaceGateCreate;
+trigger gt_ObjectiveDestroyPalaceGateComplete;
+trigger gt_ObjectiveDestroyPalaceGateFailed;
+trigger gt_ObjectiveHyperionMustSurviveCreate;
+trigger gt_ObjectiveHyperionMustSurviveComplete;
+trigger gt_ObjectiveHyperionMustSurviveFailed;
+trigger gt_ObjectiveClearOuterLanesCreate;
+trigger gt_ObjectiveClearOuterLanesUpdate;
+trigger gt_ObjectiveClearOuterLanesComplete;
+trigger gt_IntroQ;
+trigger gt_IntroSetup;
+trigger gt_IntroCinematic;
+trigger gt_IntroCinematicEnd;
+trigger gt_IntroCleanupNotSkipped;
+trigger gt_IntroCleanupSkipped;
+trigger gt_IntroMusic;
+trigger gt_MidQ;
+trigger gt_MidSetup;
+trigger gt_MidCinematic;
+trigger gt_MidCinematicEnd;
+trigger gt_MidCleanup;
+trigger gt_MidHyperionMovement;
+trigger gt_MidMusic;
+trigger gt_VictoryQ;
+trigger gt_VictorySetup;
+trigger gt_VictoryCinematic;
+trigger gt_VictoryCinematicEnd;
+trigger gt_VictoryCleanup;
+trigger gt_VictoryZerg;
+trigger gt_ArchipelagoInitialization;
+trigger gt_ArchInit;
+trigger gt_SetMineralCount;
+
+//--------------------------------------------------------------------------------------------------
+// Custom AI Functions
+//--------------------------------------------------------------------------------------------------
+string[17] cai_playerAI;
+
+//--------------------------------------------------------------------------------------------------
+void InitCustomAI () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ cai_playerAI[init_i] = null;
+ }
+}
+
+//--------------------------------------------------------------------------------------------------
+void cai_start (string ai, int p) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ cai_playerAI[p] = ai;
+
+ if (cai_playerAI[p] == "aiEC423AC6") { aiEC423AC6_start(p); }
+ if (cai_playerAI[p] == "ai17BA421C") { ai17BA421C_start(p); }
+ if (cai_playerAI[p] == "ai7AC59A6F") { ai7AC59A6F_start(p); }
+ if (cai_playerAI[p] == "ai392DEDDF") { ai392DEDDF_start(p); }
+ if (cai_playerAI[p] == "ai05FE0989") { ai05FE0989_start(p); }
+ if (cai_playerAI[p] == "aiAFDBFFDC") { aiAFDBFFDC_start(p); }
+}
+
+//--------------------------------------------------------------------------------------------------
+void cai_setDefGather (int p, point val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ if (cai_playerAI[p] == "aiEC423AC6") { aiEC423AC6_setDefGather(p, val); }
+ if (cai_playerAI[p] == "ai17BA421C") { ai17BA421C_setDefGather(p, val); }
+ if (cai_playerAI[p] == "ai7AC59A6F") { ai7AC59A6F_setDefGather(p, val); }
+ if (cai_playerAI[p] == "ai392DEDDF") { ai392DEDDF_setDefGather(p, val); }
+ if (cai_playerAI[p] == "ai05FE0989") { ai05FE0989_setDefGather(p, val); }
+ if (cai_playerAI[p] == "aiAFDBFFDC") { aiAFDBFFDC_setDefGather(p, val); }
+}
+
+//--------------------------------------------------------------------------------------------------
+string cai_getCustomData (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ if (cai_playerAI[p] == "aiEC423AC6") { return aiEC423AC6_getCustomData(p); }
+ if (cai_playerAI[p] == "ai17BA421C") { return ai17BA421C_getCustomData(p); }
+ if (cai_playerAI[p] == "ai7AC59A6F") { return ai7AC59A6F_getCustomData(p); }
+ if (cai_playerAI[p] == "ai392DEDDF") { return ai392DEDDF_getCustomData(p); }
+ if (cai_playerAI[p] == "ai05FE0989") { return ai05FE0989_getCustomData(p); }
+ if (cai_playerAI[p] == "aiAFDBFFDC") { return aiAFDBFFDC_getCustomData(p); }
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+wave cai_getLastWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ if (cai_playerAI[p] == "aiEC423AC6") { return aiEC423AC6_getLastWave(p); }
+ if (cai_playerAI[p] == "ai17BA421C") { return ai17BA421C_getLastWave(p); }
+ if (cai_playerAI[p] == "ai7AC59A6F") { return ai7AC59A6F_getLastWave(p); }
+ if (cai_playerAI[p] == "ai392DEDDF") { return ai392DEDDF_getLastWave(p); }
+ if (cai_playerAI[p] == "ai05FE0989") { return ai05FE0989_getLastWave(p); }
+ if (cai_playerAI[p] == "aiAFDBFFDC") { return aiAFDBFFDC_getLastWave(p); }
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+void cai_waves_run (int p, playergroup target) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ if (cai_playerAI[p] == "aiEC423AC6") { aiEC423AC6_waves_run(p, target); }
+ if (cai_playerAI[p] == "ai17BA421C") { ai17BA421C_waves_run(p, target); }
+ if (cai_playerAI[p] == "ai7AC59A6F") { ai7AC59A6F_waves_run(p, target); }
+ if (cai_playerAI[p] == "ai392DEDDF") { ai392DEDDF_waves_run(p, target); }
+ if (cai_playerAI[p] == "ai05FE0989") { ai05FE0989_waves_run(p, target); }
+ if (cai_playerAI[p] == "aiAFDBFFDC") { aiAFDBFFDC_waves_run(p, target); }
+}
+
+//--------------------------------------------------------------------------------------------------
+void cai_waves_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ if (cai_playerAI[p] == "aiEC423AC6") { aiEC423AC6_waves_enable(p, val); }
+ if (cai_playerAI[p] == "ai17BA421C") { ai17BA421C_waves_enable(p, val); }
+ if (cai_playerAI[p] == "ai7AC59A6F") { ai7AC59A6F_waves_enable(p, val); }
+ if (cai_playerAI[p] == "ai392DEDDF") { ai392DEDDF_waves_enable(p, val); }
+ if (cai_playerAI[p] == "ai05FE0989") { ai05FE0989_waves_enable(p, val); }
+ if (cai_playerAI[p] == "aiAFDBFFDC") { aiAFDBFFDC_waves_enable(p, val); }
+}
+
+//--------------------------------------------------------------------------------------------------
+void cai_waves_stop (string ai) {
+ if (ai == "aiEC423AC6") { aiEC423AC6_waves_stop(); }
+ if (ai == "ai17BA421C") { ai17BA421C_waves_stop(); }
+ if (ai == "ai7AC59A6F") { ai7AC59A6F_waves_stop(); }
+ if (ai == "ai392DEDDF") { ai392DEDDF_waves_stop(); }
+ if (ai == "ai05FE0989") { ai05FE0989_waves_stop(); }
+ if (ai == "aiAFDBFFDC") { aiAFDBFFDC_waves_stop(); }
+}
+
+//--------------------------------------------------------------------------------------------------
+void cai_wave_run (int w, int p, playergroup target, bool wait) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ if (cai_playerAI[p] == "aiEC423AC6") { aiEC423AC6_wave_run(w, p, target, wait); }
+ if (cai_playerAI[p] == "ai17BA421C") { ai17BA421C_wave_run(w, p, target, wait); }
+ if (cai_playerAI[p] == "ai7AC59A6F") { ai7AC59A6F_wave_run(w, p, target, wait); }
+ if (cai_playerAI[p] == "ai392DEDDF") { ai392DEDDF_wave_run(w, p, target, wait); }
+ if (cai_playerAI[p] == "ai05FE0989") { ai05FE0989_wave_run(w, p, target, wait); }
+ if (cai_playerAI[p] == "aiAFDBFFDC") { aiAFDBFFDC_wave_run(w, p, target, wait); }
+}
+
+//--------------------------------------------------------------------------------------------------
+void cai_wave_enable (int w, int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ if (cai_playerAI[p] == "aiEC423AC6") { aiEC423AC6_wave_enable(w, p, val); }
+ if (cai_playerAI[p] == "ai17BA421C") { ai17BA421C_wave_enable(w, p, val); }
+ if (cai_playerAI[p] == "ai7AC59A6F") { ai7AC59A6F_wave_enable(w, p, val); }
+ if (cai_playerAI[p] == "ai392DEDDF") { ai392DEDDF_wave_enable(w, p, val); }
+ if (cai_playerAI[p] == "ai05FE0989") { ai05FE0989_wave_enable(w, p, val); }
+ if (cai_playerAI[p] == "aiAFDBFFDC") { aiAFDBFFDC_wave_enable(w, p, val); }
+}
+
+//--------------------------------------------------------------------------------------------------
+bool cai_wave_isEnabled (int w, int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ if (cai_playerAI[p] == "aiEC423AC6") { return aiEC423AC6_wave_isEnabled(w, p); }
+ if (cai_playerAI[p] == "ai17BA421C") { return ai17BA421C_wave_isEnabled(w, p); }
+ if (cai_playerAI[p] == "ai7AC59A6F") { return ai7AC59A6F_wave_isEnabled(w, p); }
+ if (cai_playerAI[p] == "ai392DEDDF") { return ai392DEDDF_wave_isEnabled(w, p); }
+ if (cai_playerAI[p] == "ai05FE0989") { return ai05FE0989_wave_isEnabled(w, p); }
+ if (cai_playerAI[p] == "aiAFDBFFDC") { return aiAFDBFFDC_wave_isEnabled(w, p); }
+ return false;
+}
+
+//--------------------------------------------------------------------------------------------------
+unitgroup cai_wave_createdUnits (int w, int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ if (cai_playerAI[p] == "aiEC423AC6") { return aiEC423AC6_wave_createdUnits(w, p); }
+ if (cai_playerAI[p] == "ai17BA421C") { return ai17BA421C_wave_createdUnits(w, p); }
+ if (cai_playerAI[p] == "ai7AC59A6F") { return ai7AC59A6F_wave_createdUnits(w, p); }
+ if (cai_playerAI[p] == "ai392DEDDF") { return ai392DEDDF_wave_createdUnits(w, p); }
+ if (cai_playerAI[p] == "ai05FE0989") { return ai05FE0989_wave_createdUnits(w, p); }
+ if (cai_playerAI[p] == "aiAFDBFFDC") { return aiAFDBFFDC_wave_createdUnits(w, p); }
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+wave cai_wave_createdWave (int w, int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ if (cai_playerAI[p] == "aiEC423AC6") { return aiEC423AC6_wave_createdWave(w, p); }
+ if (cai_playerAI[p] == "ai17BA421C") { return ai17BA421C_wave_createdWave(w, p); }
+ if (cai_playerAI[p] == "ai7AC59A6F") { return ai7AC59A6F_wave_createdWave(w, p); }
+ if (cai_playerAI[p] == "ai392DEDDF") { return ai392DEDDF_wave_createdWave(w, p); }
+ if (cai_playerAI[p] == "ai05FE0989") { return ai05FE0989_wave_createdWave(w, p); }
+ if (cai_playerAI[p] == "aiAFDBFFDC") { return aiAFDBFFDC_wave_createdWave(w, p); }
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+void cai_startall () {
+ cai_start("aiEC423AC6", 2);
+ cai_start("ai17BA421C", 3);
+ cai_start("ai7AC59A6F", 4);
+ cai_start("ai392DEDDF", 14);
+ cai_start("ai05FE0989", 5);
+ cai_start("aiAFDBFFDC", 9);
+ AICampaignStart(10);
+}
+
+//--------------------------------------------------------------------------------------------------
+void cai_runall () {
+ playergroup target = PlayerGroupEmpty();
+
+ PlayerGroupClear(target);
+ PlayerGroupAdd(target, 1);
+ PlayerGroupAdd(target, 9);
+ cai_waves_run(2, target);
+
+ PlayerGroupClear(target);
+ PlayerGroupAdd(target, 1);
+ PlayerGroupAdd(target, 9);
+ cai_waves_run(3, target);
+
+ PlayerGroupClear(target);
+ PlayerGroupAdd(target, 1);
+ PlayerGroupAdd(target, 9);
+ cai_waves_run(4, target);
+
+ PlayerGroupClear(target);
+ PlayerGroupAdd(target, 2);
+ PlayerGroupAdd(target, 3);
+ PlayerGroupAdd(target, 4);
+ PlayerGroupAdd(target, 5);
+ cai_waves_run(14, target);
+
+ PlayerGroupClear(target);
+ PlayerGroupAdd(target, 1);
+ PlayerGroupAdd(target, 9);
+ cai_waves_run(5, target);
+
+ PlayerGroupClear(target);
+ PlayerGroupAdd(target, 2);
+ PlayerGroupAdd(target, 3);
+ PlayerGroupAdd(target, 4);
+ PlayerGroupAdd(target, 5);
+ cai_waves_run(9, target);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Global Functions
+//--------------------------------------------------------------------------------------------------
+void gf_AIDiamondback (int lp_owner, unit lp_diamondback, unitgroup lp_nearbyUnits) {
+ // Variable Declarations
+ point lv_moveTo;
+ point lv_moveToA;
+ point lv_moveToB;
+ unitgroup lv_enemies;
+
+ // Automatic Variable Declarations
+ int auto8C0D3942_val;
+
+ // Variable Initialization
+ lv_enemies = UnitGroupEmpty();
+
+ // Implementation
+ lv_enemies = gf_EnemiesWithinRange(lp_diamondback, 4.0, UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))));
+ if ((UnitGroupCount(lv_enemies, c_unitCountAlive) >= 1)) {
+ lv_moveTo = PointWithOffsetPolar(UnitGetPosition(lp_diamondback), 5.0, AngleBetweenPoints(UnitGroupCenterOfGroup(lv_enemies), UnitGetPosition(lp_diamondback)));
+ if ((PointPathingCost(UnitGetPosition(lp_diamondback), lv_moveTo) >= 1000)) {
+ lv_moveToA = PointWithOffsetPolar(UnitGetPosition(lp_diamondback), 5.0, (AngleBetweenPoints(UnitGroupCenterOfGroup(lv_enemies), UnitGetPosition(lp_diamondback)) + 45.0));
+ lv_moveToB = PointWithOffsetPolar(UnitGetPosition(lp_diamondback), 5.0, (AngleBetweenPoints(UnitGroupCenterOfGroup(lv_enemies), UnitGetPosition(lp_diamondback)) - 45.0));
+ if ((PointPathingCost(UnitGetPosition(lp_diamondback), lv_moveToA) < 1000) && (PointPathingCost(UnitGetPosition(lp_diamondback), lv_moveToB) < 1000)) {
+ auto8C0D3942_val = RandomInt(1, 2);
+ if (auto8C0D3942_val == 1) {
+ lv_moveTo = lv_moveToA;
+ }
+ else if (auto8C0D3942_val == 2) {
+ lv_moveTo = lv_moveToB;
+ }
+ else {
+ }
+ }
+ else {
+ if ((PointPathingCost(UnitGetPosition(lp_diamondback), lv_moveToA) > 1000)) {
+ lv_moveTo = lv_moveToB;
+ }
+
+ if ((PointPathingCost(UnitGetPosition(lp_diamondback), lv_moveToB) > 1000)) {
+ lv_moveTo = lv_moveToA;
+ }
+
+ }
+ }
+
+ UnitIssueOrder(lp_diamondback, OrderTargetingPoint(AbilityCommand("move", 0), lv_moveTo), c_orderQueueReplace);
+ Wait(1.5, c_timeGame);
+ AISetUnitScriptControlled(lp_diamondback, false);
+ }
+
+}
+
+unitgroup gf_EnemiesWithinRange (unit lp_unit, fixed lp_range, unitfilter lp_filter) {
+ // Automatic Variable Declarations
+ // Implementation
+ return UnitGroupAlliance(UnitGetOwner(lp_unit), c_unitAllianceEnemy, RegionCircle(UnitGetPosition(lp_unit), lp_range), lp_filter, 0);
+}
+
+trigger auto_gf_RepairStructurewithSCV_Trigger = null;
+int auto_gf_RepairStructurewithSCV_lp_index;
+unit auto_gf_RepairStructurewithSCV_lp_structure;
+
+void gf_RepairStructurewithSCV (int lp_index, unit lp_structure) {
+ auto_gf_RepairStructurewithSCV_lp_index = lp_index;
+ auto_gf_RepairStructurewithSCV_lp_structure = lp_structure;
+
+ if (auto_gf_RepairStructurewithSCV_Trigger == null) {
+ auto_gf_RepairStructurewithSCV_Trigger = TriggerCreate("auto_gf_RepairStructurewithSCV_TriggerFunc");
+ }
+
+ TriggerExecute(auto_gf_RepairStructurewithSCV_Trigger, false, false);
+}
+
+bool auto_gf_RepairStructurewithSCV_TriggerFunc (bool testConds, bool runActions) {
+ int lp_index = auto_gf_RepairStructurewithSCV_lp_index;
+ unit lp_structure = auto_gf_RepairStructurewithSCV_lp_structure;
+
+ // Automatic Variable Declarations
+ // Implementation
+ UnitSetCustomValue(gv_repairSCVs[lp_index].lv_sCV, 0, 2.0);
+ UnitSetCustomValue(lp_structure, 0, 2.0);
+ while (true) {
+ if (((UnitIsAlive(gv_repairSCVs[lp_index].lv_sCV) == false) || (UnitIsAlive(lp_structure) == false) || (UnitGetPropertyFixed(lp_structure, c_unitPropLifePercent, c_unitPropCurrent) > 99.0))) {
+ break;
+ }
+
+ UnitIssueOrder(gv_repairSCVs[lp_index].lv_sCV, OrderTargetingUnit(AbilityCommand("Repair", 0), lp_structure), c_orderQueueReplace);
+ Wait(2.0, c_timeAI);
+ }
+ UnitSetCustomValue(gv_repairSCVs[lp_index].lv_sCV, 0, 0.0);
+ UnitSetCustomValue(lp_structure, 0, 0.0);
+ UnitIssueOrder(gv_repairSCVs[lp_index].lv_sCV, OrderTargetingPoint(AbilityCommand("move", 0), gv_repairSCVs[lp_index].lv_homePoint), c_orderQueueReplace);
+ return true;
+}
+
+trigger auto_gf_UnloadNydusAnim_Trigger = null;
+unit auto_gf_UnloadNydusAnim_lp_cHOSEN_NYDUS;
+
+void gf_UnloadNydusAnim (unit lp_cHOSEN_NYDUS) {
+ auto_gf_UnloadNydusAnim_lp_cHOSEN_NYDUS = lp_cHOSEN_NYDUS;
+
+ if (auto_gf_UnloadNydusAnim_Trigger == null) {
+ auto_gf_UnloadNydusAnim_Trigger = TriggerCreate("auto_gf_UnloadNydusAnim_TriggerFunc");
+ }
+
+ TriggerExecute(auto_gf_UnloadNydusAnim_Trigger, false, false);
+}
+
+bool auto_gf_UnloadNydusAnim_TriggerFunc (bool testConds, bool runActions) {
+ unit lp_cHOSEN_NYDUS = auto_gf_UnloadNydusAnim_lp_cHOSEN_NYDUS;
+
+ // Automatic Variable Declarations
+ // Implementation
+ libNtve_gf_PlayAnimation(libNtve_gf_MainActorofUnit(lp_cHOSEN_NYDUS), c_animNameDefault, "Spell", c_animFlagNonLooping, c_animTimeDefault);
+ SoundPlayAtPoint(SoundLink("NydusWorm_Unload", -1), PlayerGroupSingle(gv_PLAYER_01_USER), UnitGetPosition(lp_cHOSEN_NYDUS), 0.0, 100.0, 0.0);
+ return true;
+}
+
+void gf_CreatePatrolUnit (string lp_unitType, point lp_unitSpawnPoint, point lp_unitFacingPoint, unitgroup lp_unitGroup) {
+ // Automatic Variable Declarations
+ // Implementation
+ libNtve_gf_UnitCreateFacingPoint(1, lp_unitType, c_unitCreateIgnorePlacement, gv_PLAYER_02_DOMINION_RED, lp_unitSpawnPoint, lp_unitFacingPoint);
+ UnitBehaviorAdd(UnitLastCreated(), "PatrolSpeed", UnitLastCreated(), 1);
+ UnitGroupAdd(lp_unitGroup, UnitLastCreated());
+ AISetUnitScriptControlled(UnitLastCreated(), true);
+}
+
+trigger auto_gf_IntroMoveUnits_Trigger = null;
+region auto_gf_IntroMoveUnits_lp_originalRegion;
+point auto_gf_IntroMoveUnits_lp_movePoint;
+fixed auto_gf_IntroMoveUnits_lp_delay;
+
+void gf_IntroMoveUnits (region lp_originalRegion, point lp_movePoint, fixed lp_delay) {
+ auto_gf_IntroMoveUnits_lp_originalRegion = lp_originalRegion;
+ auto_gf_IntroMoveUnits_lp_movePoint = lp_movePoint;
+ auto_gf_IntroMoveUnits_lp_delay = lp_delay;
+
+ if (auto_gf_IntroMoveUnits_Trigger == null) {
+ auto_gf_IntroMoveUnits_Trigger = TriggerCreate("auto_gf_IntroMoveUnits_TriggerFunc");
+ }
+
+ TriggerExecute(auto_gf_IntroMoveUnits_Trigger, false, false);
+}
+
+bool auto_gf_IntroMoveUnits_TriggerFunc (bool testConds, bool runActions) {
+ region lp_originalRegion = auto_gf_IntroMoveUnits_lp_originalRegion;
+ point lp_movePoint = auto_gf_IntroMoveUnits_lp_movePoint;
+ fixed lp_delay = auto_gf_IntroMoveUnits_lp_delay;
+
+ // Variable Declarations
+ int lv_startValue;
+ int lv_finalValue;
+
+ // Automatic Variable Declarations
+ unitgroup auto8E7B9356_g;
+ int auto8E7B9356_u;
+ unit auto8E7B9356_var;
+ int auto78AE8B0C_ae;
+ int auto78AE8B0C_var;
+ int autoD5D043B4_ae;
+ int autoD5D043B4_var;
+
+ // Variable Initialization
+
+ // Implementation
+ lv_startValue = (gv_numberOfIntroUnits + 1);
+ auto8E7B9356_g = UnitGroup(null, gv_PLAYER_01_USER, lp_originalRegion, UnitFilter(0, 0, (1 << c_targetFilterAir) | (1 << c_targetFilterStructure) | (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ auto8E7B9356_u = UnitGroupCount(auto8E7B9356_g, c_unitCountAll);
+ for (;; auto8E7B9356_u -= 1) {
+ auto8E7B9356_var = UnitGroupUnitFromEnd(auto8E7B9356_g, auto8E7B9356_u);
+ if (auto8E7B9356_var == null) { break; }
+ if ((UnitGetType(auto8E7B9356_var) != "Larva")) {
+ gv_numberOfIntroUnits += 1;
+ if ((gv_numberOfIntroUnits > 63)) {
+ return true;
+ }
+
+ libNtve_gf_PauseUnit(auto8E7B9356_var, false);
+ gv_introUnits[gv_numberOfIntroUnits] = auto8E7B9356_var;
+ gv_introUnitPositions[gv_numberOfIntroUnits] = UnitGetPosition(auto8E7B9356_var);
+ gv_introUnitFacings[gv_numberOfIntroUnits] = UnitGetFacing(auto8E7B9356_var);
+ UnitSetPosition(auto8E7B9356_var, PointWithOffsetPolar(UnitGetPosition(auto8E7B9356_var), DistanceBetweenPoints(RegionGetCenter(lp_originalRegion), lp_movePoint), AngleBetweenPoints(RegionGetCenter(lp_originalRegion), lp_movePoint)), false);
+ libNtve_gf_MakeUnitFacePoint(auto8E7B9356_var, gv_introUnitPositions[gv_numberOfIntroUnits], 0.0);
+ }
+
+ }
+ lv_finalValue = gv_numberOfIntroUnits;
+ Wait(lp_delay, c_timeGame);
+ if ((gv_inCinematic == false)) {
+ return true;
+ }
+
+ auto78AE8B0C_ae = lv_finalValue;
+ auto78AE8B0C_var = lv_startValue;
+ for ( ; auto78AE8B0C_var <= auto78AE8B0C_ae; auto78AE8B0C_var += 1 ) {
+ UnitIssueOrder(gv_introUnits[auto78AE8B0C_var], OrderTargetingPoint(AbilityCommand("move", 0), gv_introUnitPositions[auto78AE8B0C_var]), c_orderQueueReplace);
+ UnitIssueOrder(gv_introUnits[auto78AE8B0C_var], OrderTargetingPoint(AbilityCommand("move", 4), PointWithOffsetPolar(gv_introUnitPositions[auto78AE8B0C_var], 1.0, gv_introUnitFacings[auto78AE8B0C_var])), c_orderQueueAddToEnd);
+ }
+ while (true) {
+ Wait(1.0, c_timeGame);
+ if ((gv_inCinematic == false)) {
+ return true;
+ }
+
+ autoD5D043B4_ae = lv_finalValue;
+ autoD5D043B4_var = lv_startValue;
+ for ( ; autoD5D043B4_var <= autoD5D043B4_ae; autoD5D043B4_var += 1 ) {
+ if ((gv_introUnits[autoD5D043B4_var] != gv_kerrigan) && (libNtve_gf_UnitInRegion(gv_introUnits[autoD5D043B4_var], RegionCircle(gv_introUnitPositions[autoD5D043B4_var], 0.5)) == false)) {
+ UnitIssueOrder(gv_introUnits[autoD5D043B4_var], OrderTargetingPoint(AbilityCommand("move", 0), gv_introUnitPositions[autoD5D043B4_var]), c_orderQueueReplace);
+ UnitIssueOrder(gv_introUnits[autoD5D043B4_var], OrderTargetingPoint(AbilityCommand("move", 4), PointWithOffsetPolar(gv_introUnitPositions[autoD5D043B4_var], 1.0, gv_introUnitFacings[autoD5D043B4_var])), c_orderQueueAddToEnd);
+ }
+
+ }
+ }
+ return true;
+}
+
+void gf_HideKerrigan () {
+ // Automatic Variable Declarations
+ // Implementation
+ if ((libC6542F50_gv_aPKerriganless == true)) {
+ libNtve_gf_PauseUnit(gv_kerrigan, true);
+ libNtve_gf_ShowHideUnit(gv_kerrigan, false);
+ }
+ else {
+ libC6542F50_gf_APResetKerriganAbilities();
+ }
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Initialization
+//--------------------------------------------------------------------------------------------------
+bool gt_Initialization_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ libSwaC_gf_ULoadCampaignData("ZKorhal3");
+ TriggerExecute(gt_Init01Technology, true, true);
+ libSwaC_gf_PurchaseStorymodeTech();
+ TriggerExecute(gt_Init04MusicSound, true, true);
+ TriggerExecute(gt_Init05Environment, true, true);
+ TriggerExecute(gt_Init06Difficulties, true, true);
+ TriggerExecute(gt_Init07Help, true, true);
+ TriggerExecute(gt_IntroQ, true, true);
+ TriggerExecute(gt_StartGameQ, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Initialization_Init () {
+ gt_Initialization = TriggerCreate("gt_Initialization_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Init 01 Technology
+//--------------------------------------------------------------------------------------------------
+bool gt_Init01Technology_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ libSwaC_gf_SetTechRestrictionsCallback(TriggerGetCurrent());
+ libNtve_gf_SetUpgradeLevelForPlayer(gv_PLAYER_07_DOMINION_GREEN22, "ShieldWall", 1);
+ libNtve_gf_SetUpgradeLevelForPlayer(gv_PLAYER_07_DOMINION_GREEN22, "AuxiliaryMedBots", 1);
+ libNtve_gf_SetUpgradeLevelForPlayer(gv_PLAYER_07_DOMINION_GREEN22, "AresClassWeaponsSystem", 1);
+ libNtve_gf_SetUpgradeLevelForPlayer(gv_PLAYER_07_DOMINION_GREEN22, "MultilockTargetingSystems", 1);
+ libNtve_gf_SetUpgradeLevelForPlayer(gv_PLAYER_07_DOMINION_GREEN22, "SiegeTech", 1);
+ libNtve_gf_SetUpgradeLevelForPlayer(gv_PLAYER_07_DOMINION_GREEN22, "YamatoCannon", 1);
+ libNtve_gf_SetUpgradeLevelForPlayer(gv_PLAYER_07_DOMINION_GREEN22, "FireSuppressionSystems", 1);
+ libNtve_gf_SetUpgradeLevelForPlayer(gv_PLAYER_07_DOMINION_GREEN22, "NeosteelFrame", 1);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Init01Technology_Init () {
+ gt_Init01Technology = TriggerCreate("gt_Init01Technology_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Init 02 Players
+//--------------------------------------------------------------------------------------------------
+bool gt_Init02Players_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ playergroup auto2286982F_g;
+ int auto2286982F_var;
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ libNtve_gf_SetAlliance(gv_PLAYER_01_USER, gv_PLAYER_07_DOMINION_GREEN22, libNtve_ge_AllianceSetting_AllyWithSharedVision);
+ libNtve_gf_SetAlliance(gv_PLAYER_01_USER, gv_pLAYER_08_IZSHA, libNtve_ge_AllianceSetting_Neutral);
+ libNtve_gf_SetAlliance(gv_PLAYER_07_DOMINION_GREEN22, gv_pLAYER_08_IZSHA, libNtve_ge_AllianceSetting_Neutral);
+ PlayerSetAlliance(gv_PLAYER_07_DOMINION_GREEN22, c_allianceIdPushable, gv_PLAYER_01_USER, true);
+ PlayerGroupAdd(gv_dominionPlayerGroup, gv_PLAYER_02_DOMINION_RED);
+ PlayerGroupAdd(gv_dominionPlayerGroup, gv_PLAYER_03_DOMINION_BLUE);
+ PlayerGroupAdd(gv_dominionPlayerGroup, gv_PLAYER_04_DOMINION_PURPLE);
+ PlayerGroupAdd(gv_dominionPlayerGroup, gv_PLAYER_05_DOMINION_TEAL);
+ PlayerGroupAdd(gv_dominionPlayerGroup, gv_PLAYER_07_DOMINION_GREEN23);
+ libNtve_gf_SetPlayerGroupAlliance(gv_dominionPlayerGroup, libNtve_ge_AllianceSetting_AllyWithSharedVisionAndPushable);
+ PlayerModifyPropertyInt(gv_PLAYER_01_USER, c_playerPropMinerals, c_playerPropOperSetTo, 350);
+ PlayerModifyPropertyInt(gv_PLAYER_01_USER, c_playerPropVespene, c_playerPropOperSetTo, 250);
+ PlayerModifyPropertyInt(gv_PLAYER_07_DOMINION_GREEN22, c_playerPropMinerals, c_playerPropOperSetTo, 10000);
+ PlayerModifyPropertyInt(gv_PLAYER_07_DOMINION_GREEN22, c_playerPropVespene, c_playerPropOperSetTo, 10000);
+ auto2286982F_g = gv_dominionPlayerGroup;
+ auto2286982F_var = -1;
+ while (true) {
+ auto2286982F_var = PlayerGroupNextPlayer(auto2286982F_g, auto2286982F_var);
+ if (auto2286982F_var < 0) { break; }
+ PlayerSetColorIndex(auto2286982F_var, 1, true);
+ PlayerModifyPropertyInt(auto2286982F_var, c_playerPropMinerals, c_playerPropOperSetTo, 10000);
+ PlayerModifyPropertyInt(auto2286982F_var, c_playerPropVespene, c_playerPropOperSetTo, 10000);
+ TechTreeUnitAllow(auto2286982F_var, "BarracksTechReactor", true);
+ TechTreeUnitAllow(auto2286982F_var, "FactoryTechReactor", true);
+ TechTreeUnitAllow(auto2286982F_var, "StarportTechReactor", true);
+ }
+ PlayerSetState(gv_PLAYER_02_DOMINION_RED, c_playerStateFoodIgnored, true);
+ PlayerSetState(gv_PLAYER_03_DOMINION_BLUE, c_playerStateFoodIgnored, true);
+ PlayerSetState(gv_PLAYER_04_DOMINION_PURPLE, c_playerStateFoodIgnored, true);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Init02Players_Init () {
+ gt_Init02Players = TriggerCreate("gt_Init02Players_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Init 03 Units
+//--------------------------------------------------------------------------------------------------
+bool gt_Init03Units_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ unitgroup autoBCF04D8F_g;
+ int autoBCF04D8F_u;
+ unit autoBCF04D8F_var;
+ playergroup autoBB04045A_g;
+ int autoBB04045A_var;
+ unitgroup auto932CD9D1_g;
+ int auto932CD9D1_u;
+ unit auto932CD9D1_var;
+ unitgroup autoF1E171DC_g;
+ int autoF1E171DC_u;
+ unit autoF1E171DC_var;
+ unitgroup autoF4E5E0B5_g;
+ int autoF4E5E0B5_u;
+ unit autoF4E5E0B5_var;
+ unitgroup autoBB583306_g;
+ int autoBB583306_u;
+ unit autoBB583306_var;
+ unitgroup autoE855107A_g;
+ int autoE855107A_u;
+ unit autoE855107A_var;
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ libSwaC_gf_CreateHero2(PointFromId(1077), gv_PLAYER_01_USER, libSwaC_ge_HeroUnit_Kerrigan, 45.0, 0, libSwaC_ge_KerriganCreatePurpose_GamePlay);
+ gv_kerrigan = UnitLastCreated();
+ libSwaC_gf_SetHeroPanelUnit(1, UnitLastCreated());
+ libSwaC_gf_SetHatcheryRallyPoint(UnitFromId(2150), PointFromId(495));
+ autoBCF04D8F_g = UnitGroup(null, gv_PLAYER_01_USER, RegionPlayableMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ autoBCF04D8F_u = UnitGroupCount(autoBCF04D8F_g, c_unitCountAll);
+ for (;; autoBCF04D8F_u -= 1) {
+ autoBCF04D8F_var = UnitGroupUnitFromEnd(autoBCF04D8F_g, autoBCF04D8F_u);
+ if (autoBCF04D8F_var == null) { break; }
+ UnitSetPropertyFixed(autoBCF04D8F_var, c_unitPropEnergyPercent, 100.0);
+ if ((UnitGetType(autoBCF04D8F_var) == "Queen")) {
+ UnitSetPropertyFixed(autoBCF04D8F_var, c_unitPropEnergy, 50.0);
+ }
+
+ }
+ autoBB04045A_g = gv_dominionPlayerGroup;
+ autoBB04045A_var = -1;
+ while (true) {
+ autoBB04045A_var = PlayerGroupNextPlayer(autoBB04045A_g, autoBB04045A_var);
+ if (autoBB04045A_var < 0) { break; }
+ auto932CD9D1_g = UnitGroup(null, autoBB04045A_var, RegionPlayableMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ auto932CD9D1_u = UnitGroupCount(auto932CD9D1_g, c_unitCountAll);
+ for (;; auto932CD9D1_u -= 1) {
+ auto932CD9D1_var = UnitGroupUnitFromEnd(auto932CD9D1_g, auto932CD9D1_u);
+ if (auto932CD9D1_var == null) { break; }
+ UnitSetPropertyFixed(auto932CD9D1_var, c_unitPropEnergyPercent, 100.0);
+ }
+ }
+ UnitSetTeamColorIndex(UnitFromId(1800), 5);
+ UnitIssueOrder(UnitFromId(47), Order(AbilityCommand("ExtendingBridgeNEWide8", 0)), c_orderQueueReplace);
+ autoF1E171DC_g = UnitGroup("Bunker", c_playerAny, RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ autoF1E171DC_u = UnitGroupCount(autoF1E171DC_g, c_unitCountAll);
+ for (;; autoF1E171DC_u -= 1) {
+ autoF1E171DC_var = UnitGroupUnitFromEnd(autoF1E171DC_g, autoF1E171DC_u);
+ if (autoF1E171DC_var == null) { break; }
+ UnitCargoCreate(autoF1E171DC_var, "MengskMarine", 4);
+ }
+ UnitMagazineArm(UnitFromId(941), AbilityCommand("ArmSiloWithNuke", 0), libHots_gf_DifficultyValueInt2(1, 1, 2));
+ UnitMagazineArm(UnitFromId(824), AbilityCommand("ArmSiloWithNuke", 0), libHots_gf_DifficultyValueInt2(1, 1, 2));
+ gv_hyperionVictims = UnitGroup(null, gv_PLAYER_03_DOMINION_BLUE, RegionFromId(24), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ libNtve_gf_ShowHideUnit(gv_hYPERION, false);
+ autoF4E5E0B5_g = UnitGroup(null, gv_PLAYER_07_DOMINION_GREEN22, null, UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32))), 0);
+ autoF4E5E0B5_u = UnitGroupCount(autoF4E5E0B5_g, c_unitCountAll);
+ for (;; autoF4E5E0B5_u -= 1) {
+ autoF4E5E0B5_var = UnitGroupUnitFromEnd(autoF4E5E0B5_g, autoF4E5E0B5_u);
+ if (autoF4E5E0B5_var == null) { break; }
+ libNtve_gf_PauseUnit(autoF4E5E0B5_var, true);
+ }
+ TriggerExecute(gt_SCVRepairScript, true, false);
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "KorhalPalaceTurretLeft", c_unitCreateIgnorePlacement, gv_PLAYER_02_DOMINION_RED, PointFromId(1));
+ UnitGroupAdd(gv_palaceTurrets, UnitLastCreated());
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "KorhalPalaceTurretRight", c_unitCreateIgnorePlacement, gv_PLAYER_02_DOMINION_RED, PointFromId(373));
+ UnitGroupAdd(gv_palaceTurrets, UnitLastCreated());
+ autoBB583306_g = gv_palaceTurrets;
+ autoBB583306_u = UnitGroupCount(autoBB583306_g, c_unitCountAll);
+ for (;; autoBB583306_u -= 1) {
+ autoBB583306_var = UnitGroupUnitFromEnd(autoBB583306_g, autoBB583306_u);
+ if (autoBB583306_var == null) { break; }
+ UnitSetState(autoBB583306_var, c_unitStateTargetable, false);
+ UnitSetState(autoBB583306_var, c_unitStateSelectable, false);
+ UnitSetState(autoBB583306_var, c_unitStateStatusBar, false);
+ UnitSetState(autoBB583306_var, c_unitStateTooltipable, false);
+ UnitSetState(autoBB583306_var, c_unitStateCursorable, false);
+ UnitSetState(autoBB583306_var, c_unitStateInvulnerable, true);
+ }
+ autoE855107A_g = UnitGroup("GreaterNydusWorm", gv_pLAYER_08_IZSHA, RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ autoE855107A_u = UnitGroupCount(autoE855107A_g, c_unitCountAll);
+ for (;; autoE855107A_u -= 1) {
+ autoE855107A_var = UnitGroupUnitFromEnd(autoE855107A_g, autoE855107A_u);
+ if (autoE855107A_var == null) { break; }
+ UnitSetState(autoE855107A_var, c_unitStateTargetable, false);
+ UnitSetState(autoE855107A_var, c_unitStateSelectable, false);
+ UnitSetState(autoE855107A_var, c_unitStateStatusBar, false);
+ UnitSetState(autoE855107A_var, c_unitStateTooltipable, false);
+ UnitSetState(autoE855107A_var, c_unitStateInvulnerable, true);
+ libNtve_gf_PauseUnit(autoE855107A_var, true);
+ libNtve_gf_ShowHideUnit(autoE855107A_var, false);
+ CreepModify(UnitGetPosition(autoE855107A_var), 10.0, true, true);
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Init03Units_Init () {
+ gt_Init03Units = TriggerCreate("gt_Init03Units_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Init 04 Music/Sound
+//--------------------------------------------------------------------------------------------------
+bool gt_Init04MusicSound_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gv_mapMusicTrack = "ZKorhal03MusicMain";
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Init04MusicSound_Init () {
+ gt_Init04MusicSound = TriggerCreate("gt_Init04MusicSound_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Init 05 Environment
+//--------------------------------------------------------------------------------------------------
+bool gt_Init05Environment_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ GameTimeOfDaySet("08:00:00");
+ libLbty_gf_AutoRevealRegion(RegionFromId(3), RegionFromId(3), gv_PLAYER_01_USER);
+ libLbty_gf_AutoRevealRegion(RegionFromId(27), RegionFromId(27), gv_PLAYER_01_USER);
+ libLbty_gf_AutoRevealRegion(RegionFromId(59), RegionFromId(59), gv_PLAYER_01_USER);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Init05Environment_Init () {
+ gt_Init05Environment = TriggerCreate("gt_Init05Environment_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Init 06 Difficulties
+//--------------------------------------------------------------------------------------------------
+bool gt_Init06Difficulties_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ playergroup auto6DB7E6C6_g;
+ int auto6DB7E6C6_var;
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ UnitSetPropertyFixed(UnitFromId(675), c_unitPropLifeMax, libHots_gf_DifficultyValueFixed2(3000.0, 3000.0, 5000.0));
+ UnitSetPropertyFixed(UnitFromId(675), c_unitPropLifePercent, 100.0);
+ auto6DB7E6C6_g = gv_dominionPlayerGroup;
+ auto6DB7E6C6_var = -1;
+ while (true) {
+ auto6DB7E6C6_var = PlayerGroupNextPlayer(auto6DB7E6C6_g, auto6DB7E6C6_var);
+ if (auto6DB7E6C6_var < 0) { break; }
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "CombatShield", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "PunisherGrenades", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "SiegeTech", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "AresClassWeaponsSystemViking", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "AresClassWeaponsSystem", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "HailstormMissilePods", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "NeoSteelFrame", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "ShrikeTurret", 1);
+ TechTreeAbilityAllow(auto6DB7E6C6_var, AbilityCommand("OdinBarrage", 0), false);
+ if ((libHots_gf_DifficultyValueInt2(0, 0, 1) == 1)) {
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "TerranInfantryWeaponsLevel1", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "TerranInfantryArmorsLevel1", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "TerranVehicleWeaponsLevel1", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "TerranVehicleArmorsLevel1", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "TerranShipWeaponsLevel1", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "TerranShipArmorsLevel1", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "ClusterWarheads", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "MedivacRapidDeployment", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "GhostMoebiusReactor", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "DualFusionWelders", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "FireSuppressionSystems", 1);
+ TechTreeUpgradeAddLevel(auto6DB7E6C6_var, "HiSecAutoTracking", 1);
+ }
+
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Init06Difficulties_Init () {
+ gt_Init06Difficulties = TriggerCreate("gt_Init06Difficulties_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Init 07 Help
+//--------------------------------------------------------------------------------------------------
+bool gt_Init07Help_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ libSwaC_gf_AddMissionTipUserData("Korhal03 Singular Tip");
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("SCV", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("Ghost", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("Medivac", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("Raven", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("ScienceVessel", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("WarHound", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MengskMarauder", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MengskThor", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MengskGoliath", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MengskReaper", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MengskMedic", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MengskBanshee", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MengskHellion", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MengskBC", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MengskFirebat", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MengskDiamondback", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MengskSiegeTank", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MengskVikingFighter", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MengskMarine", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("Bunker", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("MissileTurret", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("PlanetaryFortress", false, gv_PLAYER_01_USER);
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("Odin", false, gv_PLAYER_01_USER);
+ if ((libHots_gf_DifficultyValueInt2(0, 0, 1) == 1)) {
+ libSwaC_gf_AddUnitTypeToUnitHelpPanel("PsiDisruptor", false, gv_PLAYER_01_USER);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Init07Help_Init () {
+ gt_Init07Help = TriggerCreate("gt_Init07Help_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Performance Handler
+//--------------------------------------------------------------------------------------------------
+bool gt_PerformanceHandler_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_index;
+
+ // Automatic Variable Declarations
+ int auto7735AF4B_ae;
+ const int auto7735AF4B_ai = 1;
+ unitgroup auto0304D3DF_g;
+ int auto0304D3DF_u;
+ unit auto0304D3DF_var;
+ int auto5F9D53DA_ae;
+ const int auto5F9D53DA_ai = 1;
+ unitgroup auto40B40B33_g;
+ int auto40B40B33_u;
+ unit auto40B40B33_var;
+
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gv_perfPausedCount += 1;
+ gv_perfPausedRegions[gv_perfPausedCount] = RegionFromId(36);
+ gv_perfRevealRegions[gv_perfPausedCount] = RegionFromId(49);
+ gv_perfPausedCount += 1;
+ gv_perfPausedRegions[gv_perfPausedCount] = RegionFromId(37);
+ gv_perfRevealRegions[gv_perfPausedCount] = RegionFromId(57);
+ gv_perfPausedCount += 1;
+ gv_perfPausedRegions[gv_perfPausedCount] = RegionFromId(38);
+ gv_perfRevealRegions[gv_perfPausedCount] = RegionFromId(54);
+ gv_perfPausedCount += 1;
+ gv_perfPausedRegions[gv_perfPausedCount] = RegionFromId(39);
+ gv_perfRevealRegions[gv_perfPausedCount] = RegionFromId(58);
+ gv_perfPausedCount += 1;
+ gv_perfPausedRegions[gv_perfPausedCount] = RegionFromId(40);
+ gv_perfRevealRegions[gv_perfPausedCount] = RegionFromId(64);
+ gv_perfPausedCount += 1;
+ gv_perfPausedRegions[gv_perfPausedCount] = RegionFromId(42);
+ gv_perfRevealRegions[gv_perfPausedCount] = RegionFromId(61);
+ gv_perfPausedCount += 1;
+ gv_perfPausedRegions[gv_perfPausedCount] = RegionFromId(43);
+ gv_perfRevealRegions[gv_perfPausedCount] = RegionFromId(56);
+ gv_perfPausedCount += 1;
+ gv_perfPausedRegions[gv_perfPausedCount] = RegionFromId(44);
+ gv_perfRevealRegions[gv_perfPausedCount] = RegionFromId(53);
+ gv_perfPausedCount += 1;
+ gv_perfPausedRegions[gv_perfPausedCount] = RegionFromId(50);
+ gv_perfRevealRegions[gv_perfPausedCount] = RegionFromId(55);
+ auto7735AF4B_ae = gv_perfPausedCount;
+ lv_index = 1;
+ for ( ; ( (auto7735AF4B_ai >= 0 && lv_index <= auto7735AF4B_ae) || (auto7735AF4B_ai < 0 && lv_index >= auto7735AF4B_ae) ) ; lv_index += auto7735AF4B_ai ) {
+ gv_perfPausedUnits[lv_index] = UnitGroupAlliance(gv_PLAYER_01_USER, c_unitAllianceEnemy, gv_perfPausedRegions[lv_index], UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ auto0304D3DF_g = gv_perfPausedUnits[lv_index];
+ auto0304D3DF_u = UnitGroupCount(auto0304D3DF_g, c_unitCountAll);
+ for (;; auto0304D3DF_u -= 1) {
+ auto0304D3DF_var = UnitGroupUnitFromEnd(auto0304D3DF_g, auto0304D3DF_u);
+ if (auto0304D3DF_var == null) { break; }
+ if ((UnitFilterMatch(auto0304D3DF_var, gv_PLAYER_01_USER, UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)))) == true) && ((UnitGetType(auto0304D3DF_var) == "Odin") || (UnitGetType(auto0304D3DF_var) == "Factory") || (UnitGetType(auto0304D3DF_var) == "Barracks") || (UnitGetType(auto0304D3DF_var) == "Starport") || (UnitGetType(auto0304D3DF_var) == "BarracksReactor") || (UnitGetType(auto0304D3DF_var) == "FactoryTechLab") || (UnitGetType(auto0304D3DF_var) == "StarportTechLab") || (UnitGetType(auto0304D3DF_var) == "BarracksTechReactor") || (UnitGetType(auto0304D3DF_var) == "FactoryTechReactor") || (UnitGetType(auto0304D3DF_var) == "StarportTechReactor"))) {
+ UnitGroupRemove(gv_perfPausedUnits[lv_index], auto0304D3DF_var);
+ }
+ else {
+ libNtve_gf_PauseUnit(auto0304D3DF_var, true);
+ libNtve_gf_ShowHideUnit(auto0304D3DF_var, false);
+ }
+ }
+ }
+ while (true) {
+ if ((gv_gameOver == true)) {
+ return true;
+ }
+
+ auto5F9D53DA_ae = gv_perfPausedCount;
+ lv_index = 1;
+ for ( ; ( (auto5F9D53DA_ai >= 0 && lv_index <= auto5F9D53DA_ae) || (auto5F9D53DA_ai < 0 && lv_index >= auto5F9D53DA_ae) ) ; lv_index += auto5F9D53DA_ai ) {
+ if ((gv_perfRevealRegions[lv_index] != null) && ((UnitGroupCount(UnitGroup(null, gv_PLAYER_01_USER, gv_perfRevealRegions[lv_index], UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) > 0) || (UnitGroupCount(UnitGroup(null, gv_PLAYER_07_DOMINION_GREEN22, gv_perfRevealRegions[lv_index], UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) > 0) || (UnitGroupCount(UnitGroup(null, gv_pLAYER_08_IZSHA, gv_perfRevealRegions[lv_index], UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) > 0))) {
+ auto40B40B33_g = gv_perfPausedUnits[lv_index];
+ auto40B40B33_u = UnitGroupCount(auto40B40B33_g, c_unitCountAll);
+ for (;; auto40B40B33_u -= 1) {
+ auto40B40B33_var = UnitGroupUnitFromEnd(auto40B40B33_g, auto40B40B33_u);
+ if (auto40B40B33_var == null) { break; }
+ libNtve_gf_PauseUnit(auto40B40B33_var, false);
+ libNtve_gf_ShowHideUnit(auto40B40B33_var, true);
+ UnitGroupRemove(gv_perfPausedUnits[lv_index], auto40B40B33_var);
+ if ((GameCheatsEnabled(c_gameCheatCategoryDevelopment) == true) && (VisIsVisibleForPlayer(gv_PLAYER_01_USER, UnitGetPosition(auto40B40B33_var)) == true)) {
+ TextExpressionSetToken("Param/Expression/771E00B5", "A", UnitTypeGetName(UnitGetType(auto40B40B33_var)));
+ TextExpressionSetToken("Param/Expression/771E00B5", "B", FixedToText(PointGetX(UnitGetPosition(auto40B40B33_var)), 1));
+ TextExpressionSetToken("Param/Expression/771E00B5", "C", FixedToText(PointGetY(UnitGetPosition(auto40B40B33_var)), 1));
+ TriggerDebugOutput(1, TextExpressionAssemble("Param/Expression/771E00B5"), true);
+ }
+
+ }
+ gv_perfRevealRegions[lv_index] = null;
+ }
+
+ }
+ Wait(0.25, c_timeAI);
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_PerformanceHandler_Init () {
+ gt_PerformanceHandler = TriggerCreate("gt_PerformanceHandler_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Pause Units Again
+//--------------------------------------------------------------------------------------------------
+bool gt_PauseUnitsAgain_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ int auto9EC35265_ae;
+ int auto9EC35265_var;
+ unitgroup auto3FBFE65B_g;
+ int auto3FBFE65B_u;
+ unit auto3FBFE65B_var;
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ auto9EC35265_ae = gv_perfPausedCount;
+ auto9EC35265_var = 1;
+ for ( ; auto9EC35265_var <= auto9EC35265_ae; auto9EC35265_var += 1 ) {
+ if ((gv_perfRevealRegions[auto9EC35265_var] != null)) {
+ auto3FBFE65B_g = gv_perfPausedUnits[auto9EC35265_var];
+ auto3FBFE65B_u = UnitGroupCount(auto3FBFE65B_g, c_unitCountAll);
+ for (;; auto3FBFE65B_u -= 1) {
+ auto3FBFE65B_var = UnitGroupUnitFromEnd(auto3FBFE65B_g, auto3FBFE65B_u);
+ if (auto3FBFE65B_var == null) { break; }
+ libNtve_gf_PauseUnit(auto3FBFE65B_var, true);
+ }
+ }
+
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_PauseUnitsAgain_Init () {
+ gt_PauseUnitsAgain = TriggerCreate("gt_PauseUnitsAgain_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Show Map Cheat Used
+//--------------------------------------------------------------------------------------------------
+bool gt_ShowMapCheatUsed_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ int autoB54F2E48_ae;
+ int autoB54F2E48_var;
+ unitgroup auto8D3E5F1E_g;
+ int auto8D3E5F1E_u;
+ unit auto8D3E5F1E_var;
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerStop(gt_PerformanceHandler);
+ autoB54F2E48_ae = gv_perfPausedCount;
+ autoB54F2E48_var = 1;
+ for ( ; autoB54F2E48_var <= autoB54F2E48_ae; autoB54F2E48_var += 1 ) {
+ gv_perfRevealRegions[autoB54F2E48_var] = null;
+ auto8D3E5F1E_g = gv_perfPausedUnits[autoB54F2E48_var];
+ auto8D3E5F1E_u = UnitGroupCount(auto8D3E5F1E_g, c_unitCountAll);
+ for (;; auto8D3E5F1E_u -= 1) {
+ auto8D3E5F1E_var = UnitGroupUnitFromEnd(auto8D3E5F1E_g, auto8D3E5F1E_u);
+ if (auto8D3E5F1E_var == null) { break; }
+ libNtve_gf_PauseUnit(auto8D3E5F1E_var, false);
+ libNtve_gf_ShowHideUnit(auto8D3E5F1E_var, true);
+ UnitGroupRemove(gv_perfPausedUnits[autoB54F2E48_var], auto8D3E5F1E_var);
+ }
+ }
+ TriggerExecute(gt_Lane1, true, false);
+ TriggerExecute(gt_Lane2, true, false);
+ TriggerExecute(gt_Lane3, true, false);
+ TriggerStop(gt_LanePauseLoop);
+ TriggerEnable(gt_LanePauseLoop, false);
+ TriggerEnable(gt_LaneSpectacleStart, false);
+ gv_lane1Paused = false;
+ gv_lane2Paused = false;
+ gv_lane3Paused = false;
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ShowMapCheatUsed_Init () {
+ gt_ShowMapCheatUsed = TriggerCreate("gt_ShowMapCheatUsed_Func");
+ TriggerAddEventCheatUsed(gt_ShowMapCheatUsed, gv_PLAYER_01_USER, c_gameCheatShowmap);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Start Game Q
+//--------------------------------------------------------------------------------------------------
+bool gt_StartGameQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ if ((libHots_gf_DifficultyValueInt2(1, 1, 0) == 1)) {
+ libSwaC_gf_RemindPlayertoSpawnDrones(180.0, 9);
+ libSwaC_gf_RemindPlayertoAssign3DronestoExtractor(UnitFromId(205), 240.0);
+ libSwaC_gf_RemindPlayertoCreateAntiAirUnits();
+ }
+
+ UIAlertPoint("Trigger", gv_PLAYER_01_USER, StringExternal("Param/Value/10019ECC"), null, UnitGetPosition(gv_kerrigan));
+ TriggerExecute(gt_StartHarvesting, true, false);
+ TimerStart(gv_achievementTimedRunTimer, 1500.0, false, c_timeAI);
+ Wait(3.0, c_timeReal);
+ TriggerQueueEnter();
+ TriggerExecute(gt_ObjectiveDestroyPalaceGateCreate, true, true);
+ TriggerQueueExit();
+ Wait(3.0, c_timeReal);
+ TriggerExecute(gt_TipMissionHelpQ, true, false);
+ Wait(5.0, c_timeReal);
+ TriggerExecute(gt_EliteForceIntroQ, true, true);
+ TriggerExecute(gt_TipEliteForcesQ, true, false);
+ Wait(110.0, c_timeAI);
+ TriggerExecute(gt_MidQ, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_StartGameQ_Init () {
+ gt_StartGameQ = TriggerCreate("gt_StartGameQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Start Harvesting
+//--------------------------------------------------------------------------------------------------
+bool gt_StartHarvesting_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ libSwaC_gf_StartingWorkersAutoHarvest(RegionFromId(51), RegionFromId(52));
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_StartHarvesting_Init () {
+ gt_StartHarvesting = TriggerCreate("gt_StartHarvesting_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Elite Force Intro Q
+//--------------------------------------------------------------------------------------------------
+bool gt_EliteForceIntroQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerQueueEnter();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Speech);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00040", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00008", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zMission_Korhal03|Line00020", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00051", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_EliteForceIntroQ_Init () {
+ gt_EliteForceIntroQ = TriggerCreate("gt_EliteForceIntroQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Tip - Elite Forces Q
+//--------------------------------------------------------------------------------------------------
+bool gt_TipEliteForcesQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerQueueEnter();
+ libSwaC_gf_CreateTipCampaign("Elite Forces", libNtve_ge_TipType_NormalTip, PlayerGroupAll());
+ Wait(libSwaC_gv_campaignHintDelay, c_timeReal);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_TipEliteForcesQ_Init () {
+ gt_TipEliteForcesQ = TriggerCreate("gt_TipEliteForcesQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Handle Kerrigan Death
+//--------------------------------------------------------------------------------------------------
+bool gt_HandleKerriganDeath_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ libSwaC_gf_StartKerriganReviveCooldown();
+ TriggerExecute(gt_KerriganIsKilledQ, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_HandleKerriganDeath_Init () {
+ gt_HandleKerriganDeath = TriggerCreate("gt_HandleKerriganDeath_Func");
+ TriggerAddEventUnitDied(gt_HandleKerriganDeath, UnitRefFromVariable("gv_kerrigan"));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Kerrigan Is Killed Q
+//--------------------------------------------------------------------------------------------------
+bool gt_KerriganIsKilledQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerQueueEnter();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Speech);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00031", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_KerriganIsKilledQ_Init () {
+ gt_KerriganIsKilledQ = TriggerCreate("gt_KerriganIsKilledQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Augustgrad Gate Intros Q
+//--------------------------------------------------------------------------------------------------
+bool gt_AugustgradGateIntrosQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerQueueEnter();
+ TriggerExecute(gt_ObjectiveClearOuterLanesCreate, true, true);
+ TriggerExecute(gt_CreateAugustgradGatePings, true, false);
+ libNtve_gf_SetAlliance(gv_PLAYER_01_USER, gv_pLAYER_08_IZSHA, libNtve_ge_AllianceSetting_NeutralWithSharedVision);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Speech);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00002", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00003", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_AugustgradGateIntrosQ_Init () {
+ gt_AugustgradGateIntrosQ = TriggerCreate("gt_AugustgradGateIntrosQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Augustgrad Gate Intro Proximity
+//--------------------------------------------------------------------------------------------------
+bool gt_AugustgradGateIntroProximity_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+
+ if (!((UnitGetOwner(EventUnit()) == gv_PLAYER_01_USER))) {
+ return false;
+ }
+
+ if (!((UnitFilterMatch(EventUnit(), gv_PLAYER_01_USER, UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterSummoned - 32)))) == true))) {
+ return false;
+ }
+
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_AugustgradGateIntrosQ, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_AugustgradGateIntroProximity_Init () {
+ gt_AugustgradGateIntroProximity = TriggerCreate("gt_AugustgradGateIntroProximity_Func");
+ TriggerAddEventUnitRegion(gt_AugustgradGateIntroProximity, null, RegionFromId(27), true);
+ TriggerAddEventUnitRegion(gt_AugustgradGateIntroProximity, null, RegionFromId(41), true);
+ TriggerAddEventUnitRegion(gt_AugustgradGateIntroProximity, null, RegionFromId(48), true);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Create Augustgrad Gate Pings
+//--------------------------------------------------------------------------------------------------
+bool gt_CreateAugustgradGatePings_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerStop(gt_LanePauseLoop);
+ gv_lane1Paused = false;
+ gv_lane2Paused = false;
+ gv_lane3Paused = false;
+ if ((UnitGroupCount(UnitGroupAlliance(gv_PLAYER_01_USER, c_unitAllianceEnemy, RegionFromId(16), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), c_unitCountAlive) > 0)) {
+ libSwaC_gf_CreateObjectivePing(false, UnitGetPosition(UnitFromId(8)), StringExternal("Param/Value/1C3B9AFC"));
+ gv_lanePing[1] = PingLastCreated();
+ VisRevealArea(gv_PLAYER_01_USER, RegionCircle(PingGetPosition(PingLastCreated()), 8.0), 10.0, false);
+ Wait(0.5, c_timeGame);
+ }
+
+ if ((UnitGroupCount(UnitGroupAlliance(gv_PLAYER_01_USER, c_unitAllianceEnemy, RegionFromId(8), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), c_unitCountAlive) > 0)) {
+ libSwaC_gf_CreateObjectivePing(false, UnitGetPosition(UnitFromId(289)), StringExternal("Param/Value/40832EE5"));
+ gv_lanePing[2] = PingLastCreated();
+ VisRevealArea(gv_PLAYER_01_USER, RegionCircle(PingGetPosition(PingLastCreated()), 8.0), 10.0, false);
+ Wait(0.5, c_timeGame);
+ }
+
+ if ((UnitGroupCount(UnitGroupAlliance(gv_PLAYER_01_USER, c_unitAllianceEnemy, RegionFromId(18), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), c_unitCountAlive) > 0)) {
+ libSwaC_gf_CreateObjectivePing(false, UnitGetPosition(UnitFromId(141)), StringExternal("Param/Value/8963E359"));
+ gv_lanePing[3] = PingLastCreated();
+ VisRevealArea(gv_PLAYER_01_USER, RegionCircle(PingGetPosition(PingLastCreated()), 8.0), 10.0, false);
+ }
+
+ Wait(10.0, c_timeGame);
+ TriggerExecute(gt_LanePauseLoop, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_CreateAugustgradGatePings_Init () {
+ gt_CreateAugustgradGatePings = TriggerCreate("gt_CreateAugustgradGatePings_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Lane 1
+//--------------------------------------------------------------------------------------------------
+bool gt_Lane1_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_i;
+
+ // Automatic Variable Declarations
+ int auto15D222B5_ae;
+ const int auto15D222B5_ai = 1;
+ const int auto5C2AC2E4_ae = 15;
+ const int auto5C2AC2E4_ai = 1;
+ const int auto751BB1CF_ae = 40;
+ const int auto751BB1CF_ai = 1;
+ const int auto1583CBDC_ae = 15;
+ const int auto1583CBDC_ai = 1;
+ const int auto0B76062F_ae = 6;
+ const int auto0B76062F_ai = 1;
+
+ // Variable Initialization
+
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_Lane1SpawnLoop, true, false);
+ while (!((gv_gameOver == false) && (UnitGroupCount(UnitGroupAlliance(gv_PLAYER_01_USER, c_unitAllianceEnemy, RegionFromId(16), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), c_unitCountAlive) == 0))) {
+ Wait(1.0, c_timeAI);
+ }
+ libC6542F50_gf_APArchipelagoSendData(2);
+ libNtve_gf_PauseUnit(UnitFromId(2667), false);
+ libNtve_gf_ShowHideUnit(UnitFromId(2667), true);
+ auto15D222B5_ae = gv_numberOfRepairSCVs;
+ lv_i = 1;
+ for ( ; ( (auto15D222B5_ai >= 0 && lv_i <= auto15D222B5_ae) || (auto15D222B5_ai < 0 && lv_i >= auto15D222B5_ae) ) ; lv_i += auto15D222B5_ai ) {
+ if ((UnitGetOwner(gv_repairSCVs[lv_i].lv_sCV) == gv_PLAYER_04_DOMINION_PURPLE)) {
+ AISetUnitScriptControlled(gv_repairSCVs[lv_i].lv_sCV, false);
+ }
+
+ }
+ TriggerStop(gt_Lane1SpawnLoop);
+ AIToggleBulliesInRegion(gv_PLAYER_04_DOMINION_PURPLE, RegionFromId(16), false);
+ PingDestroy(gv_lanePing[1]);
+ TriggerExecute(gt_Lane1ClearedQ, true, false);
+ TriggerExecute(gt_ObjectiveClearOuterLanesUpdate, true, false);
+ lv_i = 1;
+ for ( ; ( (auto5C2AC2E4_ai >= 0 && lv_i <= auto5C2AC2E4_ae) || (auto5C2AC2E4_ai < 0 && lv_i >= auto5C2AC2E4_ae) ) ; lv_i += auto5C2AC2E4_ai ) {
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "Baneling", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(6)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2667));
+ Wait(0.1, c_timeAI);
+ }
+ lv_i = 1;
+ for ( ; ( (auto751BB1CF_ai >= 0 && lv_i <= auto751BB1CF_ae) || (auto751BB1CF_ai < 0 && lv_i >= auto751BB1CF_ae) ) ; lv_i += auto751BB1CF_ai ) {
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "Zergling", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(6)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2667));
+ Wait(0.1, c_timeAI);
+ }
+ lv_i = 1;
+ for ( ; ( (auto1583CBDC_ai >= 0 && lv_i <= auto1583CBDC_ae) || (auto1583CBDC_ai < 0 && lv_i >= auto1583CBDC_ae) ) ; lv_i += auto1583CBDC_ai ) {
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "Hydralisk", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(6)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2667));
+ Wait(0.1, c_timeAI);
+ }
+ while (true) {
+ Wait(60.0, c_timeAI);
+ while (!((UnitGroupCount(gv_zagaraReinforcements, c_unitCountAlive) < 100))) {
+ Wait(1.0, c_timeAI);
+ }
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "Baneling", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(6)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2667));
+ Wait(0.1, c_timeAI);
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "Hydralisk", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(6)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2667));
+ Wait(0.1, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (auto0B76062F_ai >= 0 && lv_i <= auto0B76062F_ae) || (auto0B76062F_ai < 0 && lv_i >= auto0B76062F_ae) ) ; lv_i += auto0B76062F_ai ) {
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "Zergling", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(6)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2667));
+ Wait(0.1, c_timeAI);
+ }
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Lane1_Init () {
+ gt_Lane1 = TriggerCreate("gt_Lane1_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Lane 1 Spawn Loop
+//--------------------------------------------------------------------------------------------------
+bool gt_Lane1SpawnLoop_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_i;
+
+ // Automatic Variable Declarations
+ const int auto09B2BEF0_ae = 6;
+ const int auto09B2BEF0_ai = 1;
+ const int auto2288E6C3_ae = 6;
+ const int auto2288E6C3_ai = 1;
+ const int auto31035550_ae = 6;
+ const int auto31035550_ai = 1;
+
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ while (true) {
+ while (((gv_lane1Paused == true) || (UnitGroupCount(gv_zagaraReinforcements, c_unitCountAlive) >= 100))) {
+ if ((gv_lane1Paused == true)) {
+ libNtve_gf_PauseUnit(UnitFromId(2667), true);
+ libNtve_gf_ShowHideUnit(UnitFromId(2667), false);
+ }
+
+ Wait(1.0, c_timeAI);
+ }
+ libNtve_gf_PauseUnit(UnitFromId(2667), false);
+ libNtve_gf_ShowHideUnit(UnitFromId(2667), true);
+ gf_UnloadNydusAnim(UnitFromId(2667));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "Baneling", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(6)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ gf_UnloadNydusAnim(UnitFromId(2667));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "Hydralisk", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(6)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (auto09B2BEF0_ai >= 0 && lv_i <= auto09B2BEF0_ae) || (auto09B2BEF0_ai < 0 && lv_i >= auto09B2BEF0_ae) ) ; lv_i += auto09B2BEF0_ai ) {
+ gf_UnloadNydusAnim(UnitFromId(2667));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "Zergling", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(6)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ }
+ Wait(6.0, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (auto2288E6C3_ai >= 0 && lv_i <= auto2288E6C3_ae) || (auto2288E6C3_ai < 0 && lv_i >= auto2288E6C3_ae) ) ; lv_i += auto2288E6C3_ai ) {
+ gf_UnloadNydusAnim(UnitFromId(2667));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "Zergling", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(6)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ }
+ Wait(6.0, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (auto31035550_ai >= 0 && lv_i <= auto31035550_ae) || (auto31035550_ai < 0 && lv_i >= auto31035550_ae) ) ; lv_i += auto31035550_ai ) {
+ gf_UnloadNydusAnim(UnitFromId(2667));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "Zergling", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(6)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ }
+ Wait(6.0, c_timeAI);
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Lane1SpawnLoop_Init () {
+ gt_Lane1SpawnLoop = TriggerCreate("gt_Lane1SpawnLoop_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Lane 2
+//--------------------------------------------------------------------------------------------------
+bool gt_Lane2_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_i;
+
+ // Automatic Variable Declarations
+ int auto06D8CCC3_ae;
+ const int auto06D8CCC3_ai = 1;
+ const int auto8292FCC8_ae = 40;
+ const int auto8292FCC8_ai = 1;
+ const int autoFE9A47CC_ae = 15;
+ const int autoFE9A47CC_ai = 1;
+ const int auto19296274_ae = 12;
+ const int auto19296274_ai = 1;
+ const int auto075A3D20_ae = 3;
+ const int auto075A3D20_ai = 1;
+
+ // Variable Initialization
+
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_Lane2SpawnLoop, true, false);
+ while (!((gv_gameOver == false) && (UnitGroupCount(UnitGroupAlliance(gv_PLAYER_01_USER, c_unitAllianceEnemy, RegionFromId(8), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), c_unitCountAlive) == 0))) {
+ Wait(1.0, c_timeAI);
+ }
+ libC6542F50_gf_APArchipelagoSendData(3);
+ auto06D8CCC3_ae = gv_numberOfRepairSCVs;
+ lv_i = 1;
+ for ( ; ( (auto06D8CCC3_ai >= 0 && lv_i <= auto06D8CCC3_ae) || (auto06D8CCC3_ai < 0 && lv_i >= auto06D8CCC3_ae) ) ; lv_i += auto06D8CCC3_ai ) {
+ if ((UnitGetOwner(gv_repairSCVs[lv_i].lv_sCV) == gv_PLAYER_03_DOMINION_BLUE)) {
+ AISetUnitScriptControlled(gv_repairSCVs[lv_i].lv_sCV, false);
+ }
+
+ }
+ TriggerStop(gt_Lane2SpawnLoop);
+ AIToggleBulliesInRegion(gv_PLAYER_03_DOMINION_BLUE, RegionFromId(8), false);
+ PingDestroy(gv_lanePing[2]);
+ TriggerExecute(gt_Lane2ClearedQ, true, false);
+ TriggerExecute(gt_ObjectiveClearOuterLanesUpdate, true, false);
+ lv_i = 1;
+ for ( ; ( (auto8292FCC8_ai >= 0 && lv_i <= auto8292FCC8_ae) || (auto8292FCC8_ai < 0 && lv_i >= auto8292FCC8_ae) ) ; lv_i += auto8292FCC8_ai ) {
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "InfestedTerranCampaign", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(5)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2666));
+ Wait(0.1, c_timeAI);
+ }
+ lv_i = 1;
+ for ( ; ( (autoFE9A47CC_ai >= 0 && lv_i <= autoFE9A47CC_ae) || (autoFE9A47CC_ai < 0 && lv_i >= autoFE9A47CC_ae) ) ; lv_i += autoFE9A47CC_ai ) {
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "InfestedTerranCampaign", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(5)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2666));
+ Wait(0.1, c_timeAI);
+ }
+ lv_i = 1;
+ for ( ; ( (auto19296274_ai >= 0 && lv_i <= auto19296274_ae) || (auto19296274_ai < 0 && lv_i >= auto19296274_ae) ) ; lv_i += auto19296274_ai ) {
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "InfestedAbomination", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(7)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2666));
+ Wait(0.1, c_timeAI);
+ }
+ while (true) {
+ Wait(60.0, c_timeAI);
+ while (!((UnitGroupCount(gv_zagaraReinforcements, c_unitCountAlive) < 100))) {
+ Wait(1.0, c_timeAI);
+ }
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "InfestedAbomination", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(5)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2666));
+ Wait(0.1, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (auto075A3D20_ai >= 0 && lv_i <= auto075A3D20_ae) || (auto075A3D20_ai < 0 && lv_i >= auto075A3D20_ae) ) ; lv_i += auto075A3D20_ai ) {
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "InfestedTerranCampaign", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(5)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2666));
+ Wait(0.1, c_timeAI);
+ }
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Lane2_Init () {
+ gt_Lane2 = TriggerCreate("gt_Lane2_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Lane 2 Spawn Loop
+//--------------------------------------------------------------------------------------------------
+bool gt_Lane2SpawnLoop_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_i;
+
+ // Automatic Variable Declarations
+ const int autoEB1573C4_ae = 3;
+ const int autoEB1573C4_ai = 1;
+ const int auto62A06BA1_ae = 3;
+ const int auto62A06BA1_ai = 1;
+ const int autoA1A275C8_ae = 3;
+ const int autoA1A275C8_ai = 1;
+ const int auto27572791_ae = 3;
+ const int auto27572791_ai = 1;
+
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ while (true) {
+ while (((gv_lane2Paused == true) || (UnitGroupCount(gv_zagaraReinforcements, c_unitCountAlive) >= 100))) {
+ if ((gv_lane2Paused == true)) {
+ libNtve_gf_PauseUnit(UnitFromId(2666), true);
+ libNtve_gf_ShowHideUnit(UnitFromId(2666), false);
+ }
+
+ Wait(1.0, c_timeAI);
+ }
+ libNtve_gf_PauseUnit(UnitFromId(2666), false);
+ libNtve_gf_ShowHideUnit(UnitFromId(2666), true);
+ gf_UnloadNydusAnim(UnitFromId(2666));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "InfestedAbomination", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(5)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (autoEB1573C4_ai >= 0 && lv_i <= autoEB1573C4_ae) || (autoEB1573C4_ai < 0 && lv_i >= autoEB1573C4_ae) ) ; lv_i += autoEB1573C4_ai ) {
+ gf_UnloadNydusAnim(UnitFromId(2666));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "InfestedTerranCampaign", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(5)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ }
+ Wait(6.0, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (auto62A06BA1_ai >= 0 && lv_i <= auto62A06BA1_ae) || (auto62A06BA1_ai < 0 && lv_i >= auto62A06BA1_ae) ) ; lv_i += auto62A06BA1_ai ) {
+ gf_UnloadNydusAnim(UnitFromId(2666));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "InfestedTerranCampaign", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(5)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ }
+ Wait(6.0, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (autoA1A275C8_ai >= 0 && lv_i <= autoA1A275C8_ae) || (autoA1A275C8_ai < 0 && lv_i >= autoA1A275C8_ae) ) ; lv_i += autoA1A275C8_ai ) {
+ gf_UnloadNydusAnim(UnitFromId(2666));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "InfestedTerranCampaign", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(5)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ }
+ Wait(6.0, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (auto27572791_ai >= 0 && lv_i <= auto27572791_ae) || (auto27572791_ai < 0 && lv_i >= auto27572791_ae) ) ; lv_i += auto27572791_ai ) {
+ gf_UnloadNydusAnim(UnitFromId(2666));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "InfestedTerranCampaign", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(5)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ }
+ Wait(6.0, c_timeAI);
+ if (((gv_lane1Paused == true) || (UnitGroupCount(gv_zagaraReinforcements, c_unitCountAlive) >= 100))) {
+ libNtve_gf_PauseUnit(UnitFromId(2666), true);
+ libNtve_gf_ShowHideUnit(UnitFromId(2666), false);
+ }
+
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Lane2SpawnLoop_Init () {
+ gt_Lane2SpawnLoop = TriggerCreate("gt_Lane2SpawnLoop_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Lane 3
+//--------------------------------------------------------------------------------------------------
+bool gt_Lane3_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_i;
+
+ // Automatic Variable Declarations
+ int auto8A1A87E8_ae;
+ const int auto8A1A87E8_ai = 1;
+ const int auto01746541_ae = 25;
+ const int auto01746541_ai = 1;
+ const int autoF08A8335_ae = 10;
+ const int autoF08A8335_ai = 1;
+ const int auto2AE184A4_ae = 6;
+ const int auto2AE184A4_ai = 1;
+ const int autoB18C7702_ae = 6;
+ const int autoB18C7702_ai = 1;
+ const int auto09AC3B32_ae = 4;
+ const int auto09AC3B32_ai = 1;
+
+ // Variable Initialization
+
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_Lane3SpawnLoop, true, false);
+ while (!((gv_gameOver == false) && (UnitGroupCount(UnitGroupAlliance(gv_PLAYER_01_USER, c_unitAllianceEnemy, RegionFromId(18), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), c_unitCountAlive) == 0))) {
+ Wait(1.0, c_timeAI);
+ }
+ libC6542F50_gf_APArchipelagoSendData(4);
+ auto8A1A87E8_ae = gv_numberOfRepairSCVs;
+ lv_i = 1;
+ for ( ; ( (auto8A1A87E8_ai >= 0 && lv_i <= auto8A1A87E8_ae) || (auto8A1A87E8_ai < 0 && lv_i >= auto8A1A87E8_ae) ) ; lv_i += auto8A1A87E8_ai ) {
+ if ((UnitGetOwner(gv_repairSCVs[lv_i].lv_sCV) == gv_PLAYER_05_DOMINION_TEAL)) {
+ AISetUnitScriptControlled(gv_repairSCVs[lv_i].lv_sCV, false);
+ }
+
+ }
+ TriggerStop(gt_Lane3SpawnLoop);
+ AIToggleBulliesInRegion(gv_PLAYER_05_DOMINION_TEAL, RegionFromId(18), false);
+ PingDestroy(gv_lanePing[3]);
+ TriggerExecute(gt_Lane3ClearedQ, true, false);
+ TriggerExecute(gt_ObjectiveClearOuterLanesUpdate, true, false);
+ lv_i = 1;
+ for ( ; ( (auto01746541_ai >= 0 && lv_i <= auto01746541_ae) || (auto01746541_ai < 0 && lv_i >= auto01746541_ae) ) ; lv_i += auto01746541_ai ) {
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "PrimalZergling", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(4)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2665));
+ Wait(0.1, c_timeAI);
+ }
+ lv_i = 1;
+ for ( ; ( (autoF08A8335_ai >= 0 && lv_i <= autoF08A8335_ae) || (autoF08A8335_ai < 0 && lv_i >= autoF08A8335_ae) ) ; lv_i += autoF08A8335_ai ) {
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "PrimalHydralisk", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(4)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2665));
+ Wait(0.1, c_timeAI);
+ }
+ lv_i = 1;
+ for ( ; ( (auto2AE184A4_ai >= 0 && lv_i <= auto2AE184A4_ae) || (auto2AE184A4_ai < 0 && lv_i >= auto2AE184A4_ae) ) ; lv_i += auto2AE184A4_ai ) {
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "PrimalUltralisk", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(4)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2665));
+ Wait(0.1, c_timeAI);
+ }
+ lv_i = 1;
+ for ( ; ( (autoB18C7702_ai >= 0 && lv_i <= autoB18C7702_ae) || (autoB18C7702_ai < 0 && lv_i >= autoB18C7702_ae) ) ; lv_i += autoB18C7702_ai ) {
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "PrimalFlyer", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(4)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2665));
+ Wait(0.1, c_timeAI);
+ }
+ while (true) {
+ Wait(60.0, c_timeAI);
+ while (!((UnitGroupCount(gv_zagaraReinforcements, c_unitCountAlive) < 100))) {
+ Wait(1.0, c_timeAI);
+ }
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "PrimalHydralisk", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(4)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2665));
+ Wait(0.1, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (auto09AC3B32_ai >= 0 && lv_i <= auto09AC3B32_ae) || (auto09AC3B32_ai < 0 && lv_i >= auto09AC3B32_ae) ) ; lv_i += auto09AC3B32_ai ) {
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "PrimalZergling", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(4)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ gf_UnloadNydusAnim(UnitFromId(2665));
+ Wait(0.1, c_timeAI);
+ }
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Lane3_Init () {
+ gt_Lane3 = TriggerCreate("gt_Lane3_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Lane 3 Spawn Loop
+//--------------------------------------------------------------------------------------------------
+bool gt_Lane3SpawnLoop_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_i;
+
+ // Automatic Variable Declarations
+ const int autoD065E013_ae = 4;
+ const int autoD065E013_ai = 1;
+ const int auto0EF9C00E_ae = 4;
+ const int auto0EF9C00E_ai = 1;
+ const int autoF0746625_ae = 4;
+ const int autoF0746625_ai = 1;
+
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ while (true) {
+ while (((gv_lane3Paused == true) || (UnitGroupCount(gv_zagaraReinforcements, c_unitCountAlive) >= 100))) {
+ if ((gv_lane3Paused == true)) {
+ libNtve_gf_PauseUnit(UnitFromId(2665), true);
+ libNtve_gf_ShowHideUnit(UnitFromId(2665), false);
+ }
+
+ Wait(1.0, c_timeAI);
+ }
+ libNtve_gf_PauseUnit(UnitFromId(2665), false);
+ libNtve_gf_ShowHideUnit(UnitFromId(2665), true);
+ gf_UnloadNydusAnim(UnitFromId(2665));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "PrimalHydralisk", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(4)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (autoD065E013_ai >= 0 && lv_i <= autoD065E013_ae) || (autoD065E013_ai < 0 && lv_i >= autoD065E013_ae) ) ; lv_i += autoD065E013_ai ) {
+ gf_UnloadNydusAnim(UnitFromId(2665));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "PrimalZergling", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(4)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ }
+ Wait(6.0, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (auto0EF9C00E_ai >= 0 && lv_i <= auto0EF9C00E_ae) || (auto0EF9C00E_ai < 0 && lv_i >= auto0EF9C00E_ae) ) ; lv_i += auto0EF9C00E_ai ) {
+ gf_UnloadNydusAnim(UnitFromId(2665));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "PrimalZergling", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(4)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ }
+ Wait(6.0, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (autoF0746625_ai >= 0 && lv_i <= autoF0746625_ae) || (autoF0746625_ai < 0 && lv_i >= autoF0746625_ae) ) ; lv_i += autoF0746625_ai ) {
+ gf_UnloadNydusAnim(UnitFromId(2665));
+ libNtve_gf_CreateUnitsWithDefaultFacing(1, "PrimalZergling", 0, gv_pLAYER_08_IZSHA, RegionRandomPoint(RegionFromId(4)));
+ UnitGroupAdd(gv_zagaraReinforcements, UnitLastCreated());
+ AISetUnitSuicide(UnitLastCreated(), true);
+ Wait(0.1, c_timeAI);
+ }
+ Wait(6.0, c_timeAI);
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Lane3SpawnLoop_Init () {
+ gt_Lane3SpawnLoop = TriggerCreate("gt_Lane3SpawnLoop_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Lane Spectacle Start
+//--------------------------------------------------------------------------------------------------
+bool gt_LaneSpectacleStart_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ unitgroup lv_gateBullies;
+
+ // Automatic Variable Declarations
+ unitgroup auto1837D2A2_g;
+ int auto1837D2A2_u;
+ unit auto1837D2A2_var;
+
+ // Variable Initialization
+ lv_gateBullies = UnitGroupEmpty();
+
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+
+ if (!((UnitGetOwner(EventUnit()) == gv_PLAYER_01_USER))) {
+ return false;
+ }
+
+ if (!((UnitFilterMatch(EventUnit(), gv_PLAYER_01_USER, UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterSummoned - 32)))) == true))) {
+ return false;
+ }
+
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_LanePauseLoop, true, false);
+ UnitGroupAddUnitGroup(lv_gateBullies, UnitGroup(null, gv_PLAYER_04_DOMINION_PURPLE, RegionFromId(16), UnitFilter(0, (1 << (c_targetFilterHidden - 32)), (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32))), 0));
+ UnitGroupAddUnitGroup(lv_gateBullies, UnitGroup(null, gv_PLAYER_03_DOMINION_BLUE, RegionFromId(8), UnitFilter(0, (1 << (c_targetFilterHidden - 32)), (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32))), 0));
+ UnitGroupAddUnitGroup(lv_gateBullies, UnitGroup(null, gv_PLAYER_05_DOMINION_TEAL, RegionFromId(18), UnitFilter(0, (1 << (c_targetFilterHidden - 32)), (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32))), 0));
+ auto1837D2A2_g = lv_gateBullies;
+ auto1837D2A2_u = UnitGroupCount(auto1837D2A2_g, c_unitCountAll);
+ for (;; auto1837D2A2_u -= 1) {
+ auto1837D2A2_var = UnitGroupUnitFromEnd(auto1837D2A2_g, auto1837D2A2_u);
+ if (auto1837D2A2_var == null) { break; }
+ libNtve_gf_ShowHideUnit(auto1837D2A2_var, true);
+ libNtve_gf_PauseUnit(auto1837D2A2_var, false);
+ }
+ TriggerExecute(gt_Lane1, true, false);
+ TriggerExecute(gt_Lane2, true, false);
+ TriggerExecute(gt_Lane3, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_LaneSpectacleStart_Init () {
+ gt_LaneSpectacleStart = TriggerCreate("gt_LaneSpectacleStart_Func");
+ TriggerAddEventUnitRegion(gt_LaneSpectacleStart, null, RegionFromId(45), true);
+ TriggerAddEventUnitRegion(gt_LaneSpectacleStart, null, RegionFromId(46), true);
+ TriggerAddEventUnitRegion(gt_LaneSpectacleStart, null, RegionFromId(47), true);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Lane Pause Loop
+//--------------------------------------------------------------------------------------------------
+bool gt_LanePauseLoop_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ while (true) {
+ if (((gv_gameOver == true) || (libSwaC_gf_MissionObjectiveStateCheck("ZKorhal03Objective02", libSwaC_ge_MissionObjectiveState_Completed) == true))) {
+ return true;
+ }
+
+ if ((TriggerIsEnabled(gt_Lane1SpawnLoop) == true) && (UnitGroupCount(UnitGroup(null, gv_PLAYER_01_USER, RegionFromId(45), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) > 0)) {
+ gv_lane1Paused = false;
+ }
+ else {
+ gv_lane1Paused = true;
+ }
+ if ((TriggerIsEnabled(gt_Lane2SpawnLoop) == true) && (UnitGroupCount(UnitGroup(null, gv_PLAYER_01_USER, RegionFromId(46), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) > 0)) {
+ gv_lane2Paused = false;
+ }
+ else {
+ gv_lane2Paused = true;
+ }
+ if ((TriggerIsEnabled(gt_Lane3SpawnLoop) == true) && (UnitGroupCount(UnitGroup(null, gv_PLAYER_01_USER, RegionFromId(47), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) > 0)) {
+ gv_lane3Paused = false;
+ }
+ else {
+ gv_lane3Paused = true;
+ }
+ Wait(1.0, c_timeAI);
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_LanePauseLoop_Init () {
+ gt_LanePauseLoop = TriggerCreate("gt_LanePauseLoop_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: SCV Repair Script
+//--------------------------------------------------------------------------------------------------
+bool gt_SCVRepairScript_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_i;
+ bool lv_sCVFound;
+ int lv_yellowEnd;
+ int lv_blueEnd;
+
+ // Automatic Variable Declarations
+ unitgroup auto1AF9EC2D_g;
+ int auto1AF9EC2D_u;
+ unit auto1AF9EC2D_var;
+ unitgroup auto52E8DCDE_g;
+ int auto52E8DCDE_u;
+ unit auto52E8DCDE_var;
+ unitgroup auto2CC7DEBA_g;
+ int auto2CC7DEBA_u;
+ unit auto2CC7DEBA_var;
+ unitgroup auto8347DF7A_g;
+ int auto8347DF7A_u;
+ unit auto8347DF7A_var;
+ int auto845D0671_ae;
+ const int auto845D0671_ai = 1;
+ unitgroup autoE386D4AA_g;
+ int autoE386D4AA_u;
+ unit autoE386D4AA_var;
+ int auto15044914_ae;
+ const int auto15044914_ai = 1;
+ unitgroup autoEED73573_g;
+ int autoEED73573_u;
+ unit autoEED73573_var;
+ int auto47C37C27_ae;
+ const int auto47C37C27_ai = 1;
+
+ // Variable Initialization
+
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ auto1AF9EC2D_g = UnitGroup("SCV", gv_PLAYER_04_DOMINION_PURPLE, RegionFromId(16), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ auto1AF9EC2D_u = UnitGroupCount(auto1AF9EC2D_g, c_unitCountAll);
+ for (;; auto1AF9EC2D_u -= 1) {
+ auto1AF9EC2D_var = UnitGroupUnitFromEnd(auto1AF9EC2D_g, auto1AF9EC2D_u);
+ if (auto1AF9EC2D_var == null) { break; }
+ gv_numberOfRepairSCVs += 1;
+ gv_repairSCVs[gv_numberOfRepairSCVs].lv_sCV = auto1AF9EC2D_var;
+ gv_repairSCVs[gv_numberOfRepairSCVs].lv_homePoint = UnitGetPosition(auto1AF9EC2D_var);
+ AISetUnitScriptControlled(auto1AF9EC2D_var, true);
+ }
+ lv_yellowEnd = gv_numberOfRepairSCVs;
+ auto52E8DCDE_g = UnitGroup("SCV", gv_PLAYER_03_DOMINION_BLUE, RegionFromId(8), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ auto52E8DCDE_u = UnitGroupCount(auto52E8DCDE_g, c_unitCountAll);
+ for (;; auto52E8DCDE_u -= 1) {
+ auto52E8DCDE_var = UnitGroupUnitFromEnd(auto52E8DCDE_g, auto52E8DCDE_u);
+ if (auto52E8DCDE_var == null) { break; }
+ gv_numberOfRepairSCVs += 1;
+ gv_repairSCVs[gv_numberOfRepairSCVs].lv_sCV = auto52E8DCDE_var;
+ gv_repairSCVs[gv_numberOfRepairSCVs].lv_homePoint = UnitGetPosition(auto52E8DCDE_var);
+ AISetUnitScriptControlled(auto52E8DCDE_var, true);
+ }
+ lv_blueEnd = gv_numberOfRepairSCVs;
+ auto2CC7DEBA_g = UnitGroup("SCV", gv_PLAYER_05_DOMINION_TEAL, RegionFromId(18), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ auto2CC7DEBA_u = UnitGroupCount(auto2CC7DEBA_g, c_unitCountAll);
+ for (;; auto2CC7DEBA_u -= 1) {
+ auto2CC7DEBA_var = UnitGroupUnitFromEnd(auto2CC7DEBA_g, auto2CC7DEBA_u);
+ if (auto2CC7DEBA_var == null) { break; }
+ gv_numberOfRepairSCVs += 1;
+ gv_repairSCVs[gv_numberOfRepairSCVs].lv_sCV = auto2CC7DEBA_var;
+ gv_repairSCVs[gv_numberOfRepairSCVs].lv_homePoint = UnitGetPosition(auto2CC7DEBA_var);
+ AISetUnitScriptControlled(auto2CC7DEBA_var, true);
+ }
+ while (true) {
+ Wait(1.0, c_timeAI);
+ auto8347DF7A_g = UnitGroup(null, gv_PLAYER_04_DOMINION_PURPLE, RegionFromId(16), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ auto8347DF7A_u = UnitGroupCount(auto8347DF7A_g, c_unitCountAll);
+ for (;; auto8347DF7A_u -= 1) {
+ auto8347DF7A_var = UnitGroupUnitFromEnd(auto8347DF7A_g, auto8347DF7A_u);
+ if (auto8347DF7A_var == null) { break; }
+ if ((UnitGetPropertyFixed(auto8347DF7A_var, c_unitPropLifePercent, c_unitPropCurrent) <= 99.0) && (UnitGetCustomValue(auto8347DF7A_var, 0) < 1)) {
+ lv_sCVFound = false;
+ auto845D0671_ae = lv_yellowEnd;
+ lv_i = 1;
+ for ( ; ( (auto845D0671_ai >= 0 && lv_i <= auto845D0671_ae) || (auto845D0671_ai < 0 && lv_i >= auto845D0671_ae) ) ; lv_i += auto845D0671_ai ) {
+ if ((UnitIsAlive(gv_repairSCVs[lv_i].lv_sCV) == true) && (UnitGetCustomValue(gv_repairSCVs[lv_i].lv_sCV, 0) < 1)) {
+ gf_RepairStructurewithSCV(lv_i, auto8347DF7A_var);
+ lv_sCVFound = true;
+ break;
+ }
+
+ }
+ if ((lv_sCVFound == false)) {
+ break;
+ }
+
+ }
+
+ }
+ autoE386D4AA_g = UnitGroup(null, gv_PLAYER_03_DOMINION_BLUE, RegionFromId(8), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ autoE386D4AA_u = UnitGroupCount(autoE386D4AA_g, c_unitCountAll);
+ for (;; autoE386D4AA_u -= 1) {
+ autoE386D4AA_var = UnitGroupUnitFromEnd(autoE386D4AA_g, autoE386D4AA_u);
+ if (autoE386D4AA_var == null) { break; }
+ if ((UnitGetPropertyFixed(autoE386D4AA_var, c_unitPropLifePercent, c_unitPropCurrent) <= 99.0) && (UnitGetCustomValue(autoE386D4AA_var, 0) < 1)) {
+ lv_sCVFound = false;
+ auto15044914_ae = lv_blueEnd;
+ lv_i = (lv_yellowEnd + 1);
+ for ( ; ( (auto15044914_ai >= 0 && lv_i <= auto15044914_ae) || (auto15044914_ai < 0 && lv_i >= auto15044914_ae) ) ; lv_i += auto15044914_ai ) {
+ if ((UnitIsAlive(gv_repairSCVs[lv_i].lv_sCV) == true) && (UnitGetCustomValue(gv_repairSCVs[lv_i].lv_sCV, 0) < 1)) {
+ gf_RepairStructurewithSCV(lv_i, autoE386D4AA_var);
+ lv_sCVFound = true;
+ break;
+ }
+
+ }
+ if ((lv_sCVFound == false)) {
+ break;
+ }
+
+ }
+
+ }
+ autoEED73573_g = UnitGroup(null, gv_PLAYER_05_DOMINION_TEAL, RegionFromId(18), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ autoEED73573_u = UnitGroupCount(autoEED73573_g, c_unitCountAll);
+ for (;; autoEED73573_u -= 1) {
+ autoEED73573_var = UnitGroupUnitFromEnd(autoEED73573_g, autoEED73573_u);
+ if (autoEED73573_var == null) { break; }
+ if ((UnitGetPropertyFixed(autoEED73573_var, c_unitPropLifePercent, c_unitPropCurrent) <= 99.0) && (UnitGetCustomValue(autoEED73573_var, 0) < 1)) {
+ lv_sCVFound = false;
+ auto47C37C27_ae = gv_numberOfRepairSCVs;
+ lv_i = (lv_blueEnd + 1);
+ for ( ; ( (auto47C37C27_ai >= 0 && lv_i <= auto47C37C27_ae) || (auto47C37C27_ai < 0 && lv_i >= auto47C37C27_ae) ) ; lv_i += auto47C37C27_ai ) {
+ if ((UnitIsAlive(gv_repairSCVs[lv_i].lv_sCV) == true) && (UnitGetCustomValue(gv_repairSCVs[lv_i].lv_sCV, 0) < 1)) {
+ gf_RepairStructurewithSCV(lv_i, autoEED73573_var);
+ lv_sCVFound = true;
+ break;
+ }
+
+ }
+ if ((lv_sCVFound == false)) {
+ break;
+ }
+
+ }
+
+ }
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_SCVRepairScript_Init () {
+ gt_SCVRepairScript = TriggerCreate("gt_SCVRepairScript_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Lane 1 Cleared Q
+//--------------------------------------------------------------------------------------------------
+bool gt_Lane1ClearedQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerQueueEnter();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Speech);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zMission_Korhal03|Line00009", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00010", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Lane1ClearedQ_Init () {
+ gt_Lane1ClearedQ = TriggerCreate("gt_Lane1ClearedQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Lane 2 Cleared Q
+//--------------------------------------------------------------------------------------------------
+bool gt_Lane2ClearedQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerQueueEnter();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Speech);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zMission_Korhal03|Line00011", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00149", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Lane2ClearedQ_Init () {
+ gt_Lane2ClearedQ = TriggerCreate("gt_Lane2ClearedQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Lane 3 Cleared Q
+//--------------------------------------------------------------------------------------------------
+bool gt_Lane3ClearedQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerQueueEnter();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Speech);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zMission_Korhal03|Line00013", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00148", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Lane3ClearedQ_Init () {
+ gt_Lane3ClearedQ = TriggerCreate("gt_Lane3ClearedQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Zagara Upgrades
+//--------------------------------------------------------------------------------------------------
+bool gt_ZagaraUpgrades_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ int auto5DB3DC2E_val;
+
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ auto5DB3DC2E_val = gv_objectiveRescueBrood2222;
+ if (auto5DB3DC2E_val == 1) {
+ TechTreeUpgradeAddLevel(gv_pLAYER_08_IZSHA, "ZergGroundArmorsLevel1", 1);
+ TechTreeUpgradeAddLevel(gv_pLAYER_08_IZSHA, "ZergMeleeWeaponsLevel1", 1);
+ TechTreeUpgradeAddLevel(gv_pLAYER_08_IZSHA, "ZergMissileWeaponsLevel1", 1);
+ }
+ else if (auto5DB3DC2E_val == 2) {
+ TechTreeUpgradeAddLevel(gv_pLAYER_08_IZSHA, "ZergGroundArmorsLevel2", 1);
+ TechTreeUpgradeAddLevel(gv_pLAYER_08_IZSHA, "ZergMeleeWeaponsLevel2", 1);
+ TechTreeUpgradeAddLevel(gv_pLAYER_08_IZSHA, "ZergMissileWeaponsLevel2", 1);
+ }
+ else if (auto5DB3DC2E_val == 3) {
+ TechTreeUpgradeAddLevel(gv_pLAYER_08_IZSHA, "ZergGroundArmorsLevel3", 1);
+ TechTreeUpgradeAddLevel(gv_pLAYER_08_IZSHA, "ZergMeleeWeaponsLevel3", 1);
+ TechTreeUpgradeAddLevel(gv_pLAYER_08_IZSHA, "ZergMissileWeaponsLevel3", 1);
+ }
+ else {
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ZagaraUpgrades_Init () {
+ gt_ZagaraUpgrades = TriggerCreate("gt_ZagaraUpgrades_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Create Dominion Patrol - Right Side
+//--------------------------------------------------------------------------------------------------
+bool gt_CreateDominionPatrolRightSide_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ unit[9] lv_patrollers;
+ point[9] lv_patrollerPointsA;
+ point[9] lv_patrollerPointsB;
+ int lv_i;
+
+ // Automatic Variable Declarations
+ const int auto540E0C13_ae = 4;
+ const int auto540E0C13_ai = 1;
+ const int autoE23AD02D_ae = 4;
+ const int autoE23AD02D_ai = 1;
+
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gf_CreatePatrolUnit("MengskHellion", PointFromId(728), PointFromId(877), gv_dominionPatrolRightGroup);
+ lv_patrollers[1] = UnitLastCreated();
+ lv_patrollerPointsA[1] = PointFromId(728);
+ lv_patrollerPointsB[1] = PointFromId(877);
+ gf_CreatePatrolUnit("MengskHellion", PointFromId(730), PointFromId(878), gv_dominionPatrolRightGroup);
+ lv_patrollers[2] = UnitLastCreated();
+ lv_patrollerPointsA[2] = PointFromId(730);
+ lv_patrollerPointsB[2] = PointFromId(878);
+ gf_CreatePatrolUnit("MengskGoliath", PointFromId(734), PointFromId(879), gv_dominionPatrolRightGroup);
+ lv_patrollers[3] = UnitLastCreated();
+ lv_patrollerPointsA[3] = PointFromId(734);
+ lv_patrollerPointsB[3] = PointFromId(879);
+ gf_CreatePatrolUnit("MengskGoliath", PointFromId(735), PointFromId(880), gv_dominionPatrolRightGroup);
+ lv_patrollers[4] = UnitLastCreated();
+ lv_patrollerPointsA[4] = PointFromId(735);
+ lv_patrollerPointsB[4] = PointFromId(880);
+ Wait(2.0, c_timeGame);
+ while (true) {
+ lv_i = 1;
+ for ( ; ( (auto540E0C13_ai >= 0 && lv_i <= auto540E0C13_ae) || (auto540E0C13_ai < 0 && lv_i >= auto540E0C13_ae) ) ; lv_i += auto540E0C13_ai ) {
+ if ((UnitGetOwner(lv_patrollers[lv_i]) != gv_PLAYER_01_USER)) {
+ UnitIssueOrder(lv_patrollers[lv_i], OrderTargetingPoint(AbilityCommand("attack", 0), lv_patrollerPointsB[lv_i]), c_orderQueueReplace);
+ }
+ else {
+ UnitGroupRemove(gv_dominionPatrolRightGroup, lv_patrollers[lv_i]);
+ }
+ }
+ Wait(12.0, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (autoE23AD02D_ai >= 0 && lv_i <= autoE23AD02D_ae) || (autoE23AD02D_ai < 0 && lv_i >= autoE23AD02D_ae) ) ; lv_i += autoE23AD02D_ai ) {
+ if ((UnitGetOwner(lv_patrollers[lv_i]) != gv_PLAYER_01_USER)) {
+ UnitIssueOrder(lv_patrollers[lv_i], OrderTargetingPoint(AbilityCommand("attack", 0), lv_patrollerPointsA[lv_i]), c_orderQueueReplace);
+ }
+ else {
+ UnitGroupRemove(gv_dominionPatrolRightGroup, lv_patrollers[lv_i]);
+ }
+ }
+ Wait(12.0, c_timeAI);
+ if ((UnitGroupCount(gv_dominionPatrolRightGroup, c_unitCountAlive) == 0)) {
+ return true;
+ }
+
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_CreateDominionPatrolRightSide_Init () {
+ gt_CreateDominionPatrolRightSide = TriggerCreate("gt_CreateDominionPatrolRightSide_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Create Dominion Patrol - Left Side
+//--------------------------------------------------------------------------------------------------
+bool gt_CreateDominionPatrolLeftSide_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ unit[9] lv_patrollers;
+ point[9] lv_patrollerPointsA;
+ point[9] lv_patrollerPointsB;
+ int lv_i;
+
+ // Automatic Variable Declarations
+ const int autoBECF3AAF_ae = 4;
+ const int autoBECF3AAF_ai = 1;
+ const int auto75779DAB_ae = 4;
+ const int auto75779DAB_ai = 1;
+
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gf_CreatePatrolUnit("MengskHellion", PointFromId(884), PointFromId(891), gv_dominionPatrolLeftGroup);
+ lv_patrollers[1] = UnitLastCreated();
+ lv_patrollerPointsA[1] = PointFromId(884);
+ lv_patrollerPointsB[1] = PointFromId(891);
+ gf_CreatePatrolUnit("MengskHellion", PointFromId(885), PointFromId(892), gv_dominionPatrolLeftGroup);
+ lv_patrollers[2] = UnitLastCreated();
+ lv_patrollerPointsA[2] = PointFromId(885);
+ lv_patrollerPointsB[2] = PointFromId(892);
+ gf_CreatePatrolUnit("MengskGoliath", PointFromId(886), PointFromId(893), gv_dominionPatrolLeftGroup);
+ lv_patrollers[3] = UnitLastCreated();
+ lv_patrollerPointsA[3] = PointFromId(886);
+ lv_patrollerPointsB[3] = PointFromId(893);
+ gf_CreatePatrolUnit("MengskGoliath", PointFromId(887), PointFromId(894), gv_dominionPatrolLeftGroup);
+ lv_patrollers[4] = UnitLastCreated();
+ lv_patrollerPointsA[4] = PointFromId(887);
+ lv_patrollerPointsB[4] = PointFromId(894);
+ Wait(2.0, c_timeGame);
+ while (true) {
+ lv_i = 1;
+ for ( ; ( (autoBECF3AAF_ai >= 0 && lv_i <= autoBECF3AAF_ae) || (autoBECF3AAF_ai < 0 && lv_i >= autoBECF3AAF_ae) ) ; lv_i += autoBECF3AAF_ai ) {
+ if ((UnitGetOwner(lv_patrollers[lv_i]) != gv_PLAYER_01_USER)) {
+ UnitIssueOrder(lv_patrollers[lv_i], OrderTargetingPoint(AbilityCommand("attack", 0), lv_patrollerPointsB[lv_i]), c_orderQueueReplace);
+ }
+ else {
+ UnitGroupRemove(gv_dominionPatrolLeftGroup, lv_patrollers[lv_i]);
+ }
+ }
+ Wait(10.0, c_timeAI);
+ lv_i = 1;
+ for ( ; ( (auto75779DAB_ai >= 0 && lv_i <= auto75779DAB_ae) || (auto75779DAB_ai < 0 && lv_i >= auto75779DAB_ae) ) ; lv_i += auto75779DAB_ai ) {
+ if ((UnitGetOwner(lv_patrollers[lv_i]) != gv_PLAYER_01_USER)) {
+ UnitIssueOrder(lv_patrollers[lv_i], OrderTargetingPoint(AbilityCommand("attack", 0), lv_patrollerPointsA[lv_i]), c_orderQueueReplace);
+ }
+ else {
+ UnitGroupRemove(gv_dominionPatrolLeftGroup, lv_patrollers[lv_i]);
+ }
+ }
+ Wait(10.0, c_timeAI);
+ if ((UnitGroupCount(gv_dominionPatrolLeftGroup, c_unitCountAlive) == 0)) {
+ return true;
+ }
+
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_CreateDominionPatrolLeftSide_Init () {
+ gt_CreateDominionPatrolLeftSide = TriggerCreate("gt_CreateDominionPatrolLeftSide_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Bridge Control
+//--------------------------------------------------------------------------------------------------
+bool gt_BridgeControl_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ libNtve_gf_CreateExplosionAtPoint(libNtve_ge_ExplosionSize_Large, libNtve_ge_ExplosionType_Terran, RegionGetCenter(RegionFromId(14)));
+ ActorSend(ActorFromDoodad(DoodadFromId(1817)), "SetVisibility");
+ ActorSend(ActorFromDoodad(DoodadFromId(1816)), "SetVisibility");
+ Wait(0.5, c_timeGame);
+ libNtve_gf_CreateExplosionAtPoint(libNtve_ge_ExplosionSize_Large, libNtve_ge_ExplosionType_Terran, RegionGetCenter(RegionFromId(15)));
+ ActorSend(ActorFromDoodad(DoodadFromId(1815)), "SetVisibility");
+ ActorSend(ActorFromDoodad(DoodadFromId(1814)), "SetVisibility");
+ Wait(0.5, c_timeGame);
+ libNtve_gf_CreateExplosionAtPoint(libNtve_ge_ExplosionSize_Large, libNtve_ge_ExplosionType_Terran, RegionGetCenter(RegionFromId(29)));
+ ActorSend(ActorFromDoodad(DoodadFromId(1813)), "SetVisibility");
+ Wait(0.5, c_timeGame);
+ libNtve_gf_CreateExplosionAtPoint(libNtve_ge_ExplosionSize_Large, libNtve_ge_ExplosionType_Terran, RegionGetCenter(RegionFromId(30)));
+ ActorSend(ActorFromDoodad(DoodadFromId(1812)), "SetVisibility");
+ ActorSend(ActorFromDoodad(DoodadFromId(1811)), "SetVisibility");
+ Wait(0.5, c_timeGame);
+ libNtve_gf_CreateExplosionAtPoint(libNtve_ge_ExplosionSize_Large, libNtve_ge_ExplosionType_Terran, RegionGetCenter(RegionFromId(33)));
+ ActorSend(ActorFromDoodad(DoodadFromId(1810)), "SetVisibility");
+ Wait(0.5, c_timeGame);
+ libNtve_gf_CreateExplosionAtPoint(libNtve_ge_ExplosionSize_Large, libNtve_ge_ExplosionType_Terran, RegionGetCenter(RegionFromId(34)));
+ ActorSend(ActorFromDoodad(DoodadFromId(1809)), "SetVisibility");
+ ActorSend(ActorFromDoodad(DoodadFromId(1808)), "SetVisibility");
+ ActorSend(ActorFromDoodad(DoodadFromId(1807)), "SetVisibility");
+ libNtve_gf_PauseUnit(UnitFromId(47), false);
+ UnitIssueOrder(UnitFromId(47), Order(AbilityCommand("ExtendingBridgeNEWide8Out", 0)), c_orderQueueReplace);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_BridgeControl_Init () {
+ gt_BridgeControl = TriggerCreate("gt_BridgeControl_Func");
+ TriggerAddEventUnitDied(gt_BridgeControl, UnitRefFromUnit(UnitFromId(1800)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Dominion Left 2 Deactivate
+//--------------------------------------------------------------------------------------------------
+bool gt_DominionLeft2Deactivate_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ AIToggleBulliesInRegion(gv_PLAYER_03_DOMINION_BLUE, RegionFromId(23), false);
+ AIAttackWaveSetGatherPoint(gv_PLAYER_03_DOMINION_BLUE, PointFromId(793));
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_DominionLeft2Deactivate_Init () {
+ gt_DominionLeft2Deactivate = TriggerCreate("gt_DominionLeft2Deactivate_Func");
+ TriggerAddEventUnitDied(gt_DominionLeft2Deactivate, UnitRefFromUnit(UnitFromId(121)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Dominion Right 1 Deactivate
+//--------------------------------------------------------------------------------------------------
+bool gt_DominionRight1Deactivate_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ AIToggleBulliesInRegion(gv_PLAYER_04_DOMINION_PURPLE, RegionFromId(20), false);
+ AIAttackWaveSetGatherPoint(gv_PLAYER_04_DOMINION_PURPLE, PointFromId(812));
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_DominionRight1Deactivate_Init () {
+ gt_DominionRight1Deactivate = TriggerCreate("gt_DominionRight1Deactivate_Func");
+ TriggerAddEventUnitDied(gt_DominionRight1Deactivate, UnitRefFromUnit(UnitFromId(7)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Dominion Right 2 Deactivate
+//--------------------------------------------------------------------------------------------------
+bool gt_DominionRight2Deactivate_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ AIToggleBulliesInRegion(gv_PLAYER_04_DOMINION_PURPLE, RegionFromId(22), false);
+ AIAttackWaveSetGatherPoint(gv_PLAYER_04_DOMINION_PURPLE, PointFromId(973));
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_DominionRight2Deactivate_Init () {
+ gt_DominionRight2Deactivate = TriggerCreate("gt_DominionRight2Deactivate_Func");
+ TriggerAddEventUnitDied(gt_DominionRight2Deactivate, UnitRefFromUnit(UnitFromId(95)));
+ TriggerAddEventUnitDied(gt_DominionRight2Deactivate, UnitRefFromUnit(UnitFromId(625)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Dominion Middle 1 Deactivate
+//--------------------------------------------------------------------------------------------------
+bool gt_DominionMiddle1Deactivate_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ AIToggleBulliesInRegion(gv_PLAYER_02_DOMINION_RED, RegionFromId(2), false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_DominionMiddle1Deactivate_Init () {
+ gt_DominionMiddle1Deactivate = TriggerCreate("gt_DominionMiddle1Deactivate_Func");
+ TriggerAddEventUnitDied(gt_DominionMiddle1Deactivate, UnitRefFromUnit(UnitFromId(2395)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Dominion Middle 2 Deactivate
+//--------------------------------------------------------------------------------------------------
+bool gt_DominionMiddle2Deactivate_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ AIToggleBulliesInRegion(gv_PLAYER_02_DOMINION_RED, RegionFromId(32), false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_DominionMiddle2Deactivate_Init () {
+ gt_DominionMiddle2Deactivate = TriggerCreate("gt_DominionMiddle2Deactivate_Func");
+ TriggerAddEventUnitDied(gt_DominionMiddle2Deactivate, UnitRefFromUnit(UnitFromId(91)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Create Palace Ping
+//--------------------------------------------------------------------------------------------------
+bool gt_CreatePalacePing_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ libSwaC_gf_CreateObjectivePing(true, UnitGetPosition(UnitFromId(675)), StringExternal("Param/Value/1EB92790"));
+ gv_palaceGatePing = PingLastCreated();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_CreatePalacePing_Init () {
+ gt_CreatePalacePing = TriggerCreate("gt_CreatePalacePing_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Dominion Right 1 Destroyed Q
+//--------------------------------------------------------------------------------------------------
+bool gt_DominionRight1DestroyedQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+
+ if (!((UnitGroupCount(UnitGroup(null, gv_PLAYER_04_DOMINION_PURPLE, RegionFromId(20), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 0))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerQueueEnter();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Speech);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zMission_Korhal03|Line00018", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00015", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_DominionRight1DestroyedQ_Init () {
+ gt_DominionRight1DestroyedQ = TriggerCreate("gt_DominionRight1DestroyedQ_Func");
+ TriggerAddEventTimePeriodic(gt_DominionRight1DestroyedQ, 2.0, c_timeAI);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Dominion Left 2 Destroyed Q
+//--------------------------------------------------------------------------------------------------
+bool gt_DominionLeft2DestroyedQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+
+ if (!((UnitGroupCount(UnitGroup(null, gv_PLAYER_03_DOMINION_BLUE, RegionFromId(23), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 0))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerQueueEnter();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Speech);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00032", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_DominionLeft2DestroyedQ_Init () {
+ gt_DominionLeft2DestroyedQ = TriggerCreate("gt_DominionLeft2DestroyedQ_Func");
+ TriggerAddEventTimePeriodic(gt_DominionLeft2DestroyedQ, 2.0, c_timeAI);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Palace Gate at 90%
+//--------------------------------------------------------------------------------------------------
+bool gt_PalaceGateat90_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ int auto70C8CF3C_n;
+ int auto70C8CF3C_i;
+ int autoF6C2E039_n;
+ int autoF6C2E039_i;
+ int auto3F680807_n;
+ int auto3F680807_i;
+
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+
+ if (!((UnitGetPropertyFixed(UnitFromId(675), c_unitPropLifePercent, c_unitPropCurrent) < 90.0))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_TransmissionPalaceGateat90Q, true, false);
+ auto70C8CF3C_n = libHots_gf_DifficultyValueInt2(3, 3, 4);
+ for (auto70C8CF3C_i = 1; auto70C8CF3C_i <= auto70C8CF3C_n; auto70C8CF3C_i += 1) {
+ UnitCreate(3, "MengskMarine", 0, gv_PLAYER_02_DOMINION_RED, PointFromId(690), 225.0);
+ libSwaC_gf_CreateDropPod(libSwaC_ge_DropPodRace_Terran, RegionRandomPoint(RegionFromId(25)), UnitLastCreatedGroup(), false, gv_PLAYER_02_DOMINION_RED);
+ Wait(0.5, c_timeAI);
+ }
+ Wait(5.0, c_timeAI);
+ autoF6C2E039_n = libHots_gf_DifficultyValueInt2(2, 2, 3);
+ for (autoF6C2E039_i = 1; autoF6C2E039_i <= autoF6C2E039_n; autoF6C2E039_i += 1) {
+ UnitCreate(3, "MengskMarine", 0, gv_PLAYER_02_DOMINION_RED, PointFromId(690), 225.0);
+ libSwaC_gf_CreateDropPod(libSwaC_ge_DropPodRace_Terran, RegionRandomPoint(RegionFromId(25)), UnitLastCreatedGroup(), false, gv_PLAYER_02_DOMINION_RED);
+ Wait(0.5, c_timeAI);
+ }
+ Wait(5.0, c_timeAI);
+ auto3F680807_n = libHots_gf_DifficultyValueInt2(2, 2, 3);
+ for (auto3F680807_i = 1; auto3F680807_i <= auto3F680807_n; auto3F680807_i += 1) {
+ UnitCreate(3, "MengskMarine", 0, gv_PLAYER_02_DOMINION_RED, PointFromId(690), 225.0);
+ libSwaC_gf_CreateDropPod(libSwaC_ge_DropPodRace_Terran, RegionRandomPoint(RegionFromId(25)), UnitLastCreatedGroup(), false, gv_PLAYER_02_DOMINION_RED);
+ Wait(0.5, c_timeAI);
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_PalaceGateat90_Init () {
+ gt_PalaceGateat90 = TriggerCreate("gt_PalaceGateat90_Func");
+ TriggerAddEventUnitAttacked(gt_PalaceGateat90, UnitRefFromUnit(UnitFromId(675)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Transmission: Palace Gate at 90% Q
+//--------------------------------------------------------------------------------------------------
+bool gt_TransmissionPalaceGateat90Q_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerQueueEnter();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Speech);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00039", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_TransmissionPalaceGateat90Q_Init () {
+ gt_TransmissionPalaceGateat90Q = TriggerCreate("gt_TransmissionPalaceGateat90Q_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Palace Gate at 50%
+//--------------------------------------------------------------------------------------------------
+bool gt_PalaceGateat50_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ int auto155F6FD0_n;
+ int auto155F6FD0_i;
+ int auto69AC3BCE_n;
+ int auto69AC3BCE_i;
+
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+
+ if (!((UnitGetPropertyFixed(UnitFromId(675), c_unitPropLifePercent, c_unitPropCurrent) < 50.0))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_TransmissionPalaceGateat50Q, true, false);
+ auto155F6FD0_n = libHots_gf_DifficultyValueInt2(3, 3, 4);
+ for (auto155F6FD0_i = 1; auto155F6FD0_i <= auto155F6FD0_n; auto155F6FD0_i += 1) {
+ UnitCreate(2, "MengskMarauder", 0, gv_PLAYER_02_DOMINION_RED, PointFromId(690), 225.0);
+ libSwaC_gf_CreateDropPod(libSwaC_ge_DropPodRace_Terran, RegionRandomPoint(RegionFromId(25)), UnitLastCreatedGroup(), false, gv_PLAYER_02_DOMINION_RED);
+ Wait(0.5, c_timeAI);
+ }
+ Wait(5.0, c_timeAI);
+ auto69AC3BCE_n = libHots_gf_DifficultyValueInt2(3, 3, 4);
+ for (auto69AC3BCE_i = 1; auto69AC3BCE_i <= auto69AC3BCE_n; auto69AC3BCE_i += 1) {
+ UnitCreate(3, "MengskMarine", 0, gv_PLAYER_02_DOMINION_RED, PointFromId(690), 225.0);
+ libSwaC_gf_CreateDropPod(libSwaC_ge_DropPodRace_Terran, RegionRandomPoint(RegionFromId(25)), UnitLastCreatedGroup(), false, gv_PLAYER_02_DOMINION_RED);
+ Wait(0.5, c_timeAI);
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_PalaceGateat50_Init () {
+ gt_PalaceGateat50 = TriggerCreate("gt_PalaceGateat50_Func");
+ TriggerAddEventUnitAttacked(gt_PalaceGateat50, UnitRefFromUnit(UnitFromId(675)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Transmission: Palace Gate at 50% Q
+//--------------------------------------------------------------------------------------------------
+bool gt_TransmissionPalaceGateat50Q_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerQueueEnter();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Speech);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00028", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_TransmissionPalaceGateat50Q_Init () {
+ gt_TransmissionPalaceGateat50Q = TriggerCreate("gt_TransmissionPalaceGateat50Q_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Hyperion Trigger
+//--------------------------------------------------------------------------------------------------
+bool gt_HyperionTrigger_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+
+ if (!((UnitGetOwner(EventUnit()) == gv_PLAYER_01_USER))) {
+ return false;
+ }
+
+ if (!((UnitFilterMatch(EventUnit(), gv_PLAYER_01_USER, UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterSummoned - 32)))) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_MidQ, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_HyperionTrigger_Init () {
+ gt_HyperionTrigger = TriggerCreate("gt_HyperionTrigger_Func");
+ TriggerAddEventUnitRegion(gt_HyperionTrigger, null, RegionFromId(31), true);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Hyperion Intro Q
+//--------------------------------------------------------------------------------------------------
+bool gt_HyperionIntroQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerQueueEnter();
+ Wait(3.0, c_timeReal);
+ TriggerExecute(gt_ObjectiveHyperionMustSurviveCreate, true, true);
+ Wait(6.0, c_timeReal);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Speech);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zMission_Korhal03|Line00115", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00116", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zMission_Korhal03|Line00146", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_HyperionIntroQ_Init () {
+ gt_HyperionIntroQ = TriggerCreate("gt_HyperionIntroQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Hyperion Attacked
+//--------------------------------------------------------------------------------------------------
+bool gt_HyperionAttacked_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ const int auto3DF5FCC4_n = 50;
+ int auto3DF5FCC4_i;
+
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+
+ if (!((UnitGetOwner(EventUnitTarget()) != gv_PLAYER_01_USER))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ if ((gv_hyperionFirstAttackTransmision == false)) {
+ gv_hyperionFirstAttackTransmision = true;
+ TriggerExecute(gt_HyperionAttackedFirstTimeQ, true, true);
+ }
+ else {
+ TriggerExecute(gt_HyperionAttackedQ, true, true);
+ }
+ Wait(10.0, c_timeAI);
+ for (auto3DF5FCC4_i = 1; auto3DF5FCC4_i <= auto3DF5FCC4_n; auto3DF5FCC4_i += 1) {
+ if ((UnitGetPropertyFixed(gv_hYPERION, c_unitPropLifePercent, c_unitPropCurrent) <= 25.0)) {
+ TriggerExecute(gt_HyperionLowHealthQ, true, true);
+ Wait(30.0, c_timeAI);
+ break;
+ }
+
+ Wait(1.0, c_timeAI);
+ }
+ TriggerEnable(TriggerGetCurrent(), true);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_HyperionAttacked_Init () {
+ gt_HyperionAttacked = TriggerCreate("gt_HyperionAttacked_Func");
+ TriggerAddEventUnitAttacked(gt_HyperionAttacked, UnitRefFromVariable("gv_hYPERION"));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Hyperion Attacked Q
+//--------------------------------------------------------------------------------------------------
+bool gt_HyperionAttackedQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ int auto882E661D_val;
+
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerQueueEnter();
+ UIAlertPoint("Trigger", gv_PLAYER_01_USER, StringExternal("Param/Value/A0FB34D1"), null, UnitGetPosition(gv_hYPERION));
+ MinimapPing(PlayerGroupAll(), UnitGetPosition(gv_hYPERION), 5.0, Color(100.00, 0.00, 0.00));
+ Wait(1.0, c_timeReal);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Speech);
+ auto882E661D_val = RandomInt(1, 3);
+ if (auto882E661D_val == 1) {
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00071", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ }
+ else if (auto882E661D_val == 2) {
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00072", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ }
+ else if (auto882E661D_val == 3) {
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00073", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ }
+ else {
+ }
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_HyperionAttackedQ_Init () {
+ gt_HyperionAttackedQ = TriggerCreate("gt_HyperionAttackedQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Hyperion Attacked First Time Q
+//--------------------------------------------------------------------------------------------------
+bool gt_HyperionAttackedFirstTimeQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerQueueEnter();
+ UIAlertPoint("Trigger", gv_PLAYER_01_USER, StringExternal("Param/Value/AF9EB277"), null, UnitGetPosition(gv_hYPERION));
+ MinimapPing(PlayerGroupAll(), UnitGetPosition(gv_hYPERION), 5.0, Color(100.00, 0.00, 0.00));
+ Wait(1.0, c_timeReal);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Speech);
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00118", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zMission_Korhal03|Line00117", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_HyperionAttackedFirstTimeQ_Init () {
+ gt_HyperionAttackedFirstTimeQ = TriggerCreate("gt_HyperionAttackedFirstTimeQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Hyperion Low Health Q
+//--------------------------------------------------------------------------------------------------
+bool gt_HyperionLowHealthQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ int auto91565E32_val;
+
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerQueueEnter();
+ UIAlertPoint("Trigger", gv_PLAYER_01_USER, StringExternal("Param/Value/AA33E61F"), null, UnitGetPosition(gv_hYPERION));
+ MinimapPing(PlayerGroupAll(), UnitGetPosition(gv_hYPERION), 5.0, Color(100.00, 0.00, 0.00));
+ Wait(1.0, c_timeReal);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Speech);
+ auto91565E32_val = RandomInt(1, 2);
+ if (auto91565E32_val == 1) {
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00074", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ }
+ else if (auto91565E32_val == 2) {
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00088", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ }
+ else {
+ }
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_HyperionLowHealthQ_Init () {
+ gt_HyperionLowHealthQ = TriggerCreate("gt_HyperionLowHealthQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Hyperion SCV Respawn
+//--------------------------------------------------------------------------------------------------
+bool gt_HyperionSCVRespawn_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+
+ if (!((libNtve_gf_UnitIsHidden(gv_hYPERION) == false))) {
+ return false;
+ }
+
+ if (!((UnitGroupCount(UnitGroup("SCV", gv_PLAYER_07_DOMINION_GREEN22, RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), c_unitCountAlive) < 2))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ UnitCreate(1, "SCV", 0, gv_PLAYER_07_DOMINION_GREEN22, PointFromId(2), 315.0);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_HyperionSCVRespawn_Init () {
+ gt_HyperionSCVRespawn = TriggerCreate("gt_HyperionSCVRespawn_Func");
+ TriggerAddEventTimePeriodic(gt_HyperionSCVRespawn, 10.0, c_timeAI);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Hyperion Big Attack 1 Q
+//--------------------------------------------------------------------------------------------------
+bool gt_HyperionBigAttack1Q_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ unitgroup lv_attackGroup;
+ int lv_skipTimer;
+
+ // Automatic Variable Declarations
+ unitgroup auto6FC17D8E_g;
+ int auto6FC17D8E_u;
+ unit auto6FC17D8E_var;
+ unitgroup autoA7CCAD6A_g;
+ int autoA7CCAD6A_u;
+ unit autoA7CCAD6A_var;
+
+ // Variable Initialization
+ lv_attackGroup = UnitGroupEmpty();
+
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ Wait(625.0, c_timeAI);
+ libSwaC_gf_CreateMissionAutosavePoint(StringExternal("Param/Value/DD0C4B19"));
+ TriggerQueueEnter();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Speech);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00075", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00070", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Game);
+ TriggerQueueExit();
+ while (true) {
+ lv_skipTimer += 1;
+ if ((lv_skipTimer > 30)) {
+ return true;
+ }
+
+ if ((UnitGroupCount(UnitGroup(null, gv_PLAYER_02_DOMINION_RED, RegionCircle(PointFromId(809), 10.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 0)) {
+ return true;
+ }
+
+ if ((UnitGroupCount(UnitGroup("MengskVikingFighter", gv_PLAYER_02_DOMINION_RED, RegionCircle(PointFromId(809), 9.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 4), c_unitCountAlive) >= 3)) {
+ break;
+ }
+
+ if ((gv_player2WavesSent >= 5)) {
+ break;
+ }
+
+ Wait(1.0, c_timeAI);
+ }
+ libNtve_gf_CreatePingFacingAngle(PlayerGroupAll(), "PingAlert", PointFromId(809), ColorWithAlpha(100.00, 0.00, 0.00, 0.00), 0.0, 270.0);
+ PingSetPosition(PingLastCreated(), UnitGroupCenterOfGroup(lv_attackGroup));
+ PingSetTooltip(PingLastCreated(), StringExternal("Param/Value/47B5F2AE"));
+ while (true) {
+ lv_skipTimer += 1;
+ if ((lv_skipTimer > 60)) {
+ PingDestroy(PingLastCreated());
+ return true;
+ }
+
+ if ((UnitGroupCount(UnitGroup(null, gv_PLAYER_02_DOMINION_RED, RegionCircle(PointFromId(809), 10.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 0)) {
+ PingDestroy(PingLastCreated());
+ return true;
+ }
+
+ if ((gv_player2WavesSent >= 5)) {
+ break;
+ }
+
+ Wait(1.0, c_timeAI);
+ }
+ lv_attackGroup = AIGetUnitsInWavesWithTarget(gv_PLAYER_02_DOMINION_RED, AIWaveTargetPoint(PointFromId(2)));
+ auto6FC17D8E_g = lv_attackGroup;
+ auto6FC17D8E_u = UnitGroupCount(auto6FC17D8E_g, c_unitCountAll);
+ for (;; auto6FC17D8E_u -= 1) {
+ auto6FC17D8E_var = UnitGroupUnitFromEnd(auto6FC17D8E_g, auto6FC17D8E_u);
+ if (auto6FC17D8E_var == null) { break; }
+ if ((UnitGetType(auto6FC17D8E_var) != "MengskVikingFighter") && (UnitGetType(auto6FC17D8E_var) != "MengskVikingAssault") && (UnitGetType(auto6FC17D8E_var) != "MengskBanshee")) {
+ UnitGroupRemove(lv_attackGroup, auto6FC17D8E_var);
+ }
+
+ }
+ if ((libNtve_gf_UnitGroupIsDead(lv_attackGroup) == true)) {
+ PingDestroy(PingLastCreated());
+ return true;
+ }
+ else {
+ PingSetPosition(PingLastCreated(), UnitGroupCenterOfGroup(lv_attackGroup));
+ }
+ while (true) {
+ Wait(0.2, c_timeAI);
+ autoA7CCAD6A_g = lv_attackGroup;
+ autoA7CCAD6A_u = UnitGroupCount(autoA7CCAD6A_g, c_unitCountAll);
+ for (;; autoA7CCAD6A_u -= 1) {
+ autoA7CCAD6A_var = UnitGroupUnitFromEnd(autoA7CCAD6A_g, autoA7CCAD6A_u);
+ if (autoA7CCAD6A_var == null) { break; }
+ if ((UnitGetOwner(autoA7CCAD6A_var) != gv_PLAYER_02_DOMINION_RED)) {
+ UnitGroupRemove(lv_attackGroup, autoA7CCAD6A_var);
+ }
+
+ }
+ if (((libNtve_gf_UnitGroupIsDead(lv_attackGroup) == true) || (gv_gameOver == true))) {
+ PingDestroy(PingLastCreated());
+ return true;
+ }
+
+ PingSetPosition(PingLastCreated(), UnitGroupCenterOfGroup(lv_attackGroup));
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_HyperionBigAttack1Q_Init () {
+ gt_HyperionBigAttack1Q = TriggerCreate("gt_HyperionBigAttack1Q_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Hyperion Big Attack 2 Q
+//--------------------------------------------------------------------------------------------------
+bool gt_HyperionBigAttack2Q_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ unitgroup lv_attackGroup;
+ int lv_skipTimer;
+
+ // Automatic Variable Declarations
+ unitgroup auto44B49985_g;
+ int auto44B49985_u;
+ unit auto44B49985_var;
+ unitgroup autoF561B4C1_g;
+ int autoF561B4C1_u;
+ unit autoF561B4C1_var;
+
+ // Variable Initialization
+ lv_attackGroup = UnitGroupEmpty();
+
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ Wait(910.0, c_timeAI);
+ libSwaC_gf_CreateMissionAutosavePoint(StringExternal("Param/Value/3CD8D145"));
+ TriggerQueueEnter();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Speech);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00089", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00081", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Game);
+ TriggerQueueExit();
+ while (true) {
+ lv_skipTimer += 1;
+ if ((lv_skipTimer > 30)) {
+ return true;
+ }
+
+ if ((UnitGroupCount(UnitGroup(null, gv_PLAYER_02_DOMINION_RED, RegionCircle(PointFromId(809), 10.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 0)) {
+ return true;
+ }
+
+ if (((UnitGroupCount(UnitGroup("MengskSiegeTank", gv_PLAYER_02_DOMINION_RED, RegionCircle(PointFromId(809), 9.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 2), c_unitCountAlive) >= 1) || (UnitGroupCount(UnitGroup("MengskSiegeTankSieged", gv_PLAYER_02_DOMINION_RED, RegionCircle(PointFromId(809), 9.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 2), c_unitCountAlive) >= 1))) {
+ break;
+ }
+
+ if ((gv_player2WavesSent >= 8)) {
+ break;
+ }
+
+ Wait(1.0, c_timeAI);
+ }
+ libNtve_gf_CreatePingFacingAngle(PlayerGroupAll(), "PingAlert", PointFromId(809), ColorWithAlpha(100.00, 0.00, 0.00, 0.00), 0.0, 270.0);
+ PingSetPosition(PingLastCreated(), UnitGroupCenterOfGroup(lv_attackGroup));
+ PingSetTooltip(PingLastCreated(), StringExternal("Param/Value/5AF16DC3"));
+ while (true) {
+ lv_skipTimer += 1;
+ if ((lv_skipTimer > 60)) {
+ PingDestroy(PingLastCreated());
+ return true;
+ }
+
+ if ((UnitGroupCount(UnitGroup(null, gv_PLAYER_02_DOMINION_RED, RegionCircle(PointFromId(809), 10.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 0)) {
+ PingDestroy(PingLastCreated());
+ return true;
+ }
+
+ if ((gv_player2WavesSent >= 8)) {
+ break;
+ }
+
+ Wait(1.0, c_timeAI);
+ }
+ lv_attackGroup = AIGetUnitsInWavesWithTarget(gv_PLAYER_02_DOMINION_RED, AIWaveTargetPoint(PointFromId(2)));
+ auto44B49985_g = lv_attackGroup;
+ auto44B49985_u = UnitGroupCount(auto44B49985_g, c_unitCountAll);
+ for (;; auto44B49985_u -= 1) {
+ auto44B49985_var = UnitGroupUnitFromEnd(auto44B49985_g, auto44B49985_u);
+ if (auto44B49985_var == null) { break; }
+ if ((UnitGetType(auto44B49985_var) != "MengskSiegeTankSieged") && (UnitGetType(auto44B49985_var) != "MengskSiegeTank") && (UnitGetType(auto44B49985_var) != "MengskMarine") && (UnitGetType(auto44B49985_var) != "MengskBC")) {
+ UnitGroupRemove(lv_attackGroup, auto44B49985_var);
+ }
+
+ }
+ if ((libNtve_gf_UnitGroupIsDead(lv_attackGroup) == true)) {
+ PingDestroy(PingLastCreated());
+ return true;
+ }
+ else {
+ PingSetPosition(PingLastCreated(), UnitGroupCenterOfGroup(lv_attackGroup));
+ }
+ while (true) {
+ Wait(0.2, c_timeAI);
+ autoF561B4C1_g = lv_attackGroup;
+ autoF561B4C1_u = UnitGroupCount(autoF561B4C1_g, c_unitCountAll);
+ for (;; autoF561B4C1_u -= 1) {
+ autoF561B4C1_var = UnitGroupUnitFromEnd(autoF561B4C1_g, autoF561B4C1_u);
+ if (autoF561B4C1_var == null) { break; }
+ if ((UnitGetOwner(autoF561B4C1_var) != gv_PLAYER_02_DOMINION_RED)) {
+ UnitGroupRemove(lv_attackGroup, autoF561B4C1_var);
+ }
+
+ }
+ if (((libNtve_gf_UnitGroupIsDead(lv_attackGroup) == true) || (gv_gameOver == true))) {
+ PingDestroy(PingLastCreated());
+ return true;
+ }
+
+ PingSetPosition(PingLastCreated(), UnitGroupCenterOfGroup(lv_attackGroup));
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_HyperionBigAttack2Q_Init () {
+ gt_HyperionBigAttack2Q = TriggerCreate("gt_HyperionBigAttack2Q_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Hyperion Big Attack 3 Q
+//--------------------------------------------------------------------------------------------------
+bool gt_HyperionBigAttack3Q_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ Wait(1350.0, c_timeAI);
+ while (true) {
+ if ((UnitIsAlive(UnitFromId(603)) == false)) {
+ return true;
+ }
+ else {
+ if ((UnitGroupCount(UnitGroupAlliance(gv_PLAYER_02_DOMINION_RED, c_unitAllianceEnemy, RegionCircle(UnitGetPosition(UnitFromId(603)), 9.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 0)) {
+ break;
+ }
+
+ }
+ Wait(1.0, c_timeAI);
+ }
+ TriggerQueueEnter();
+ if ((UnitIsAlive(UnitFromId(603)) == false)) {
+ return true;
+ }
+
+ libSwaC_gf_CreateMissionAutosavePoint(StringExternal("Param/Value/57AE1FF8"));
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Speech);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00094", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ if ((UnitIsAlive(UnitFromId(603)) == true)) {
+ gv_odinSent = true;
+ libNtve_gf_CreatePingFacingAngle(PlayerGroupAll(), "PingBoss", UnitGetPosition(UnitFromId(603)), ColorWithAlpha(100.00, 0.00, 0.00, 0.00), 0.0, 270.0);
+ PingSetUnit(PingLastCreated(), UnitFromId(603));
+ PingSetTooltip(PingLastCreated(), StringExternal("Param/Value/E2051C14"));
+ PingSetScale(PingLastCreated(), 0.8);
+ gv_odinPing = PingLastCreated();
+ }
+
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00095", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00083", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zMission_Korhal03|Line00093", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Game);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_HyperionBigAttack3Q_Init () {
+ gt_HyperionBigAttack3Q = TriggerCreate("gt_HyperionBigAttack3Q_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Odin Dies Q
+//--------------------------------------------------------------------------------------------------
+bool gt_OdinDiesQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ if ((libHots_gf_DifficultyValueInt2(0, 0, 1) == 1)) {
+ TriggerExecute(gt_AchievementDestroytheOdinH, true, false);
+ }
+
+ if ((gv_odinSent == true)) {
+ PingDestroy(gv_odinPing);
+ TriggerQueueEnter();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Speech);
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00150", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zMission_Korhal03|Line00154", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00153", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Game);
+ TriggerQueueExit();
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_OdinDiesQ_Init () {
+ gt_OdinDiesQ = TriggerCreate("gt_OdinDiesQ_Func");
+ TriggerAddEventUnitDied(gt_OdinDiesQ, UnitRefFromUnit(UnitFromId(603)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Raynor Attack Prep Timing
+//--------------------------------------------------------------------------------------------------
+bool gt_RaynorAttackPrepTiming_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ Wait(270.0, c_timeAI);
+ while (true) {
+ Wait(300.0, c_timeAI);
+ if ((gv_gameOver == true)) {
+ return true;
+ }
+
+ TriggerExecute(gt_RaynorAttackPrepQ, true, false);
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_RaynorAttackPrepTiming_Init () {
+ gt_RaynorAttackPrepTiming = TriggerCreate("gt_RaynorAttackPrepTiming_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Raynor Attack Prep Q
+//--------------------------------------------------------------------------------------------------
+bool gt_RaynorAttackPrepQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ int auto38482614_val;
+
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerQueueEnter();
+ if ((PlayerGetPropertyInt(gv_PLAYER_07_DOMINION_GREEN22, c_playerPropSuppliesUsed) >= 20) && (UnitGroupCount(UnitGroup(null, gv_PLAYER_02_DOMINION_RED, RegionFromId(24), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), c_unitCountAlive) < 3) && (UnitGroupCount(UnitGroup(null, gv_PLAYER_03_DOMINION_BLUE, RegionFromId(24), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), c_unitCountAlive) < 3) && (UnitGroupCount(UnitGroup(null, gv_PLAYER_04_DOMINION_PURPLE, RegionFromId(24), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), c_unitCountAlive) < 3) && (UnitGroupCount(UnitGroup(null, gv_PLAYER_05_DOMINION_TEAL, RegionFromId(24), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), c_unitCountAlive) < 3) && (UnitGroupCount(UnitGroup("Odin", c_playerAny, RegionCircle(PointFromId(2), 48.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), c_unitCountAlive) == 0)) {
+ UIAlertPoint("Trigger", gv_PLAYER_01_USER, StringExternal("Param/Value/7ACFB4DF"), null, PointFromId(627));
+ MinimapPing(PlayerGroupAll(), PointFromId(627), 5.0, Color(0.00, 0.00, 100.00));
+ Wait(1.0, c_timeReal);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Speech);
+ auto38482614_val = RandomInt(1, 3);
+ if (auto38482614_val == 1) {
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00122", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ }
+ else if (auto38482614_val == 2) {
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00123", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ }
+ else if (auto38482614_val == 3) {
+ libSwaC_gf_SendTransmissionCampaign(gv_hYPERION, "zMission_Korhal03|Line00120", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ }
+ else {
+ }
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Game);
+ }
+
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_RaynorAttackPrepQ_Init () {
+ gt_RaynorAttackPrepQ = TriggerCreate("gt_RaynorAttackPrepQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Total Hyperion Damage
+//--------------------------------------------------------------------------------------------------
+bool gt_TotalHyperionDamage_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gv_hyperionDamaged = true;
+ gv_totalHyperionDamage += EventUnitDamageAmount();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_TotalHyperionDamage_Init () {
+ gt_TotalHyperionDamage = TriggerCreate("gt_TotalHyperionDamage_Func");
+ TriggerAddEventUnitDamaged(gt_TotalHyperionDamage, UnitRefFromVariable("gv_hYPERION"), c_unitDamageTypeAny, c_unitDamageEither, null);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Defeat Base Dead
+//--------------------------------------------------------------------------------------------------
+bool gt_DefeatBaseDead_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+
+ if (!((UnitGroupCount(UnitGroup(null, gv_PLAYER_01_USER, null, UnitFilter((1 << c_targetFilterPreventDefeat), 0, 0, (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 1), c_unitCountAlive) == 0))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ gv_gameOver = true;
+ TriggerQueuePause(true);
+ TriggerQueueClear(c_triggerQueueRemove);
+ Wait(2.0, c_timeReal);
+ libSwaC_gf_DisplayCampaignMessage(PlayerGroupAll(), libSwaC_ge_CampaignMessageType_MissionFailed, StringExternal("Param/Value/6AA01F1B"), libSwaC_ge_CampaignMessageFormatNotFormat_FormatMessage);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ TriggerExecute(gt_Defeat, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_DefeatBaseDead_Init () {
+ gt_DefeatBaseDead = TriggerCreate("gt_DefeatBaseDead_Func");
+ TriggerAddEventTimePeriodic(gt_DefeatBaseDead, 1.0, c_timeGame);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Defeat Hyperion Dies
+//--------------------------------------------------------------------------------------------------
+bool gt_DefeatHyperionDies_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ gv_gameOver = true;
+ TriggerQueuePause(true);
+ TriggerQueueClear(c_triggerQueueRemove);
+ Wait(2.0, c_timeReal);
+ TriggerExecute(gt_ObjectiveHyperionMustSurviveFailed, true, true);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ libSwaC_gf_DisplayCampaignMessage(PlayerGroupAll(), libSwaC_ge_CampaignMessageType_MissionFailed, StringExternal("Param/Value/12CCDD76"), libSwaC_ge_CampaignMessageFormatNotFormat_FormatMessage);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ TriggerExecute(gt_Defeat, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_DefeatHyperionDies_Init () {
+ gt_DefeatHyperionDies = TriggerCreate("gt_DefeatHyperionDies_Func");
+ TriggerAddEventUnitDied(gt_DefeatHyperionDies, UnitRefFromVariable("gv_hYPERION"));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Victory Destroy Palace Gate Completed
+//--------------------------------------------------------------------------------------------------
+bool gt_VictoryDestroyPalaceGateCompleted_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ libC6542F50_gf_APArchipelagoSendData(1);
+ TriggerExecute(gt_VictorySequence, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_VictoryDestroyPalaceGateCompleted_Init () {
+ gt_VictoryDestroyPalaceGateCompleted = TriggerCreate("gt_VictoryDestroyPalaceGateCompleted_Func");
+ TriggerAddEventUnitDied(gt_VictoryDestroyPalaceGateCompleted, UnitRefFromUnit(UnitFromId(675)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Victory Sequence
+//--------------------------------------------------------------------------------------------------
+bool gt_VictorySequence_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ unitgroup autoA34070C1_g;
+ int autoA34070C1_u;
+ unit autoA34070C1_var;
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gv_gameOver = true;
+ TimerPause(gv_achievementTimedRunTimer, true);
+ autoA34070C1_g = gv_palaceTurrets;
+ autoA34070C1_u = UnitGroupCount(autoA34070C1_g, c_unitCountAll);
+ for (;; autoA34070C1_u -= 1) {
+ autoA34070C1_var = UnitGroupUnitFromEnd(autoA34070C1_g, autoA34070C1_u);
+ if (autoA34070C1_var == null) { break; }
+ UnitSetState(autoA34070C1_var, c_unitStateInvulnerable, false);
+ UnitKill(autoA34070C1_var);
+ }
+ libNtve_gf_MakeUnitInvulnerable(gv_kerrigan, true);
+ libNtve_gf_MakeUnitInvulnerable(gv_hYPERION, true);
+ Wait(2.0, c_timeReal);
+ TriggerExecute(gt_ObjectiveDestroyPalaceGateComplete, true, true);
+ TriggerExecute(gt_ObjectiveHyperionMustSurviveComplete, true, true);
+ libSwaC_gf_RunMissionVictorySequence(gt_VictoryQ);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_VictorySequence_Init () {
+ gt_VictorySequence = TriggerCreate("gt_VictorySequence_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Victory
+//--------------------------------------------------------------------------------------------------
+bool gt_Victory_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ if ((ObjectiveGetState(gv_objectiveDestroyDominionBase) == c_objectiveStateCompleted) && (ObjectiveGetState(gv_objectiveRescueBrood223) == c_objectiveStateCompleted)) {
+ libSwaC_gf_CampaignAwardAchievement("ZKorhal03_1", gv_PLAYER_01_USER);
+ }
+
+ TriggerExecute(gt_AchievementHyperionDamageTaken, true, false);
+ TriggerExecute(gt_AchievementTimedRunNH, true, false);
+ VictoryPanelAddCustomStatisticLine(StringExternal("Param/Value/B4B4E180"), IntToText(gv_kerriganKills));
+ VictoryPanelAddCustomStatisticLine(StringExternal("Param/Value/6BF797B1"), FixedToText(gv_totalHyperionDamage, 0));
+ VictoryPanelAddCustomStatisticLine(StringExternal("Param/Value/CEB82674"), IntToText(PlayerScoreValueGetAsInt(gv_PLAYER_01_USER, "UnitsKilledCount")));
+ VictoryPanelAddCustomStatisticLine(StringExternal("Param/Value/56D863DF"), IntToText(gv_largestZergForce));
+ VictoryPanelAddCustomStatisticLine(StringExternal("Param/Value/F74B6456"), IntToText(gv_raynorKills));
+ libSwaC_gf_EndCampaignMission(gv_PLAYER_01_USER, c_gameOverVictory);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Victory_Init () {
+ gt_Victory = TriggerCreate("gt_Victory_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Defeat
+//--------------------------------------------------------------------------------------------------
+bool gt_Defeat_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ libSwaC_gf_EndCampaignMission(gv_PLAYER_01_USER, c_gameOverDefeat);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Defeat_Init () {
+ gt_Defeat = TriggerCreate("gt_Defeat_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Victory Cheat
+//--------------------------------------------------------------------------------------------------
+bool gt_VictoryCheat_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(gt_VictoryCheat, false);
+ TriggerEnable(gt_DefeatCheat, false);
+ TriggerEnable(gt_Defeat, false);
+ gv_gameOver = true;
+ libSwaC_gf_RunMissionVictorySequence(gt_Victory);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_VictoryCheat_Init () {
+ gt_VictoryCheat = TriggerCreate("gt_VictoryCheat_Func");
+ TriggerAddEventPlayerLeft(gt_VictoryCheat, gv_PLAYER_01_USER, c_gameResultVictory);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Defeat Cheat
+//--------------------------------------------------------------------------------------------------
+bool gt_DefeatCheat_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(gt_VictoryCheat, false);
+ TriggerEnable(gt_DefeatCheat, false);
+ TriggerEnable(gt_Victory, false);
+ gv_gameOver = true;
+ TriggerExecute(gt_Defeat, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_DefeatCheat_Init () {
+ gt_DefeatCheat = TriggerCreate("gt_DefeatCheat_Func");
+ TriggerAddEventPlayerLeft(gt_DefeatCheat, gv_PLAYER_01_USER, c_gameResultDefeat);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Player Aborts Mission
+//--------------------------------------------------------------------------------------------------
+bool gt_PlayerAbortsMission_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gv_gameOver = true;
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_PlayerAbortsMission_Init () {
+ gt_PlayerAbortsMission = TriggerCreate("gt_PlayerAbortsMission_Func");
+ TriggerAddEventAbortMission(gt_PlayerAbortsMission, c_playerAny);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Achievement: Hyperion Damage Taken
+//--------------------------------------------------------------------------------------------------
+bool gt_AchievementHyperionDamageTaken_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+
+ if (!((libHots_gf_DifficultyValueInt2(1, 1, 1) == 1))) {
+ return false;
+ }
+
+ if (!((gv_hyperionDamaged == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ libSwaC_gf_CampaignAwardAchievement("ZKorhal03_2", gv_PLAYER_01_USER);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_AchievementHyperionDamageTaken_Init () {
+ gt_AchievementHyperionDamageTaken = TriggerCreate("gt_AchievementHyperionDamageTaken_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Achievement: Timed Run N/H
+//--------------------------------------------------------------------------------------------------
+bool gt_AchievementTimedRunNH_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+
+ if (!((libHots_gf_DifficultyValueInt2(0, 1, 1) == 1))) {
+ return false;
+ }
+
+ if (!((TimerGetRemaining(gv_achievementTimedRunTimer) > 0.0))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ libSwaC_gf_CampaignAwardAchievement("ZKorhal03_3", gv_PLAYER_01_USER);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_AchievementTimedRunNH_Init () {
+ gt_AchievementTimedRunNH = TriggerCreate("gt_AchievementTimedRunNH_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Achievement: Destroy the Odin H
+//--------------------------------------------------------------------------------------------------
+bool gt_AchievementDestroytheOdinH_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_odinSent == false))) {
+ return false;
+ }
+
+ if (!((libHots_gf_DifficultyValueInt2(0, 0, 1) == 1))) {
+ return false;
+ }
+
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ libSwaC_gf_CampaignAwardAchievement("Mastery_Korhal3", gv_PLAYER_01_USER);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_AchievementDestroytheOdinH_Init () {
+ gt_AchievementDestroytheOdinH = TriggerCreate("gt_AchievementDestroytheOdinH_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Largest Zerg Force
+//--------------------------------------------------------------------------------------------------
+bool gt_LargestZergForce_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_currentForce;
+
+ // Automatic Variable Declarations
+ // Variable Initialization
+
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ lv_currentForce = PlayerScoreValueGetAsInt(gv_PLAYER_01_USER, "UnitsActiveCount");
+ if ((lv_currentForce > gv_largestZergForce)) {
+ gv_largestZergForce = lv_currentForce;
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_LargestZergForce_Init () {
+ gt_LargestZergForce = TriggerCreate("gt_LargestZergForce_Func");
+ TriggerAddEventTimePeriodic(gt_LargestZergForce, 1.0, c_timeAI);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Raynor Kills
+//--------------------------------------------------------------------------------------------------
+bool gt_RaynorKills_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+
+ if (!((UnitGetOwner(libNtve_gf_KillingUnit()) == gv_PLAYER_07_DOMINION_GREEN22))) {
+ return false;
+ }
+
+ if (!((UnitTypeTestAttribute(UnitGetType(EventUnit()), c_unitAttributeStructure) == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gv_raynorKills += 1;
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_RaynorKills_Init () {
+ gt_RaynorKills = TriggerCreate("gt_RaynorKills_Func");
+ TriggerAddEventUnitDied(gt_RaynorKills, null);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Start AI
+//--------------------------------------------------------------------------------------------------
+bool gt_StartAI_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ cai_startall();
+ cai_waves_run(gv_PLAYER_02_DOMINION_RED, PlayerGroupSingle(gv_PLAYER_01_USER));
+ cai_waves_run(gv_PLAYER_03_DOMINION_BLUE, PlayerGroupSingle(gv_PLAYER_01_USER));
+ cai_waves_run(gv_PLAYER_04_DOMINION_PURPLE, PlayerGroupSingle(gv_PLAYER_01_USER));
+ cai_waves_run(gv_PLAYER_05_DOMINION_TEAL, PlayerGroupSingle(gv_PLAYER_01_USER));
+ cai_waves_run(gv_PLAYER_07_DOMINION_GREEN22, PlayerGroupSingle(gv_PLAYER_01_USER));
+ cai_waves_run(gv_pLAYER_08_IZSHA, PlayerGroupSingle(gv_PLAYER_01_USER));
+ AIAttackWaveSetGatherPoint(gv_PLAYER_03_DOMINION_BLUE, PointFromId(792));
+ AIAttackWaveSetGatherPoint(gv_PLAYER_04_DOMINION_PURPLE, PointFromId(794));
+ AINearestTownBullyRebuild(gv_PLAYER_02_DOMINION_RED, true);
+ libNtve_gf_SetTacticalAIThink(gv_PLAYER_02_DOMINION_RED, "MengskDiamondback", "AIDiamondback", false);
+ libNtve_gf_SetTacticalAIThink(gv_PLAYER_03_DOMINION_BLUE, "MengskDiamondback", "AIDiamondback", false);
+ libNtve_gf_SetTacticalAIThink(gv_PLAYER_04_DOMINION_PURPLE, "MengskDiamondback", "AIDiamondback", false);
+ libNtve_gf_SetTacticalAIThink(gv_PLAYER_05_DOMINION_TEAL, "MengskDiamondback", "AIDiamondback", false);
+ TriggerExecute(gt_HyperionBigAttack1Q, true, false);
+ TriggerExecute(gt_HyperionBigAttack2Q, true, false);
+ TriggerExecute(gt_HyperionBigAttack3Q, true, false);
+ TriggerExecute(gt_CreateDominionPatrolRightSide, true, false);
+ TriggerExecute(gt_CreateDominionPatrolLeftSide, true, false);
+ TriggerExecute(gt_RaynorAttackPrepTiming, true, false);
+ AISetAPM(gv_PLAYER_07_DOMINION_GREEN22, 10000);
+ AISetDifficulty(gv_PLAYER_07_DOMINION_GREEN22, c_diffAutoLoadBunkers, true);
+ AISetDifficulty(gv_PLAYER_07_DOMINION_GREEN22, c_diffRepairDamage, true);
+ AISetDefenseRadii(gv_PLAYER_07_DOMINION_GREEN22, 10.0, 50.0, 50.0);
+ if ((libHots_gf_DifficultyValueInt2(1, 1, 0) == 1)) {
+ TriggerExecute(gt_StartUpgradesNormal, true, false);
+ }
+ else {
+ TriggerExecute(gt_StartUpgradesHard, true, false);
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_StartAI_Init () {
+ gt_StartAI = TriggerCreate("gt_StartAI_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Start Upgrades (Normal)
+//--------------------------------------------------------------------------------------------------
+bool gt_StartUpgradesNormal_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ playergroup autoBC0D0651_g;
+ int autoBC0D0651_var;
+ playergroup auto7E0AAD40_g;
+ int auto7E0AAD40_var;
+ playergroup auto39770638_g;
+ int auto39770638_var;
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ Wait(600.0, c_timeAI);
+ autoBC0D0651_g = gv_dominionPlayerGroup;
+ autoBC0D0651_var = -1;
+ while (true) {
+ autoBC0D0651_var = PlayerGroupNextPlayer(autoBC0D0651_g, autoBC0D0651_var);
+ if (autoBC0D0651_var < 0) { break; }
+ TechTreeUpgradeAddLevel(autoBC0D0651_var, "TerranInfantryWeaponsLevel1", 1);
+ TechTreeUpgradeAddLevel(autoBC0D0651_var, "TerranVehicleWeaponsLevel1", 1);
+ TechTreeUpgradeAddLevel(autoBC0D0651_var, "TerranShipWeaponsLevel1", 1);
+ }
+ Wait(300.0, c_timeAI);
+ auto7E0AAD40_g = gv_dominionPlayerGroup;
+ auto7E0AAD40_var = -1;
+ while (true) {
+ auto7E0AAD40_var = PlayerGroupNextPlayer(auto7E0AAD40_g, auto7E0AAD40_var);
+ if (auto7E0AAD40_var < 0) { break; }
+ TechTreeUpgradeAddLevel(auto7E0AAD40_var, "TerranInfantryArmorsLevel1", 1);
+ TechTreeUpgradeAddLevel(auto7E0AAD40_var, "TerranVehicleArmorsLevel1", 1);
+ TechTreeUpgradeAddLevel(auto7E0AAD40_var, "TerranShipArmorsLevel1", 1);
+ }
+ Wait(300.0, c_timeAI);
+ auto39770638_g = gv_dominionPlayerGroup;
+ auto39770638_var = -1;
+ while (true) {
+ auto39770638_var = PlayerGroupNextPlayer(auto39770638_g, auto39770638_var);
+ if (auto39770638_var < 0) { break; }
+ TechTreeUpgradeAddLevel(auto39770638_var, "TerranInfantryWeaponsLevel2", 1);
+ TechTreeUpgradeAddLevel(auto39770638_var, "TerranVehicleWeaponsLevel2", 1);
+ TechTreeUpgradeAddLevel(auto39770638_var, "TerranShipWeaponsLevel2", 1);
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_StartUpgradesNormal_Init () {
+ gt_StartUpgradesNormal = TriggerCreate("gt_StartUpgradesNormal_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Start Upgrades (Hard)
+//--------------------------------------------------------------------------------------------------
+bool gt_StartUpgradesHard_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ playergroup auto87142524_g;
+ int auto87142524_var;
+ playergroup auto30C44365_g;
+ int auto30C44365_var;
+ playergroup auto5E351C63_g;
+ int auto5E351C63_var;
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ Wait(450.0, c_timeAI);
+ auto87142524_g = gv_dominionPlayerGroup;
+ auto87142524_var = -1;
+ while (true) {
+ auto87142524_var = PlayerGroupNextPlayer(auto87142524_g, auto87142524_var);
+ if (auto87142524_var < 0) { break; }
+ TechTreeUpgradeAddLevel(auto87142524_var, "TerranInfantryWeaponsLevel2", 1);
+ TechTreeUpgradeAddLevel(auto87142524_var, "TerranVehicleWeaponsLevel2", 1);
+ TechTreeUpgradeAddLevel(auto87142524_var, "TerranShipWeaponsLevel2", 1);
+ }
+ Wait(300.0, c_timeAI);
+ auto30C44365_g = gv_dominionPlayerGroup;
+ auto30C44365_var = -1;
+ while (true) {
+ auto30C44365_var = PlayerGroupNextPlayer(auto30C44365_g, auto30C44365_var);
+ if (auto30C44365_var < 0) { break; }
+ TechTreeUpgradeAddLevel(auto30C44365_var, "TerranInfantryArmorsLevel2", 1);
+ TechTreeUpgradeAddLevel(auto30C44365_var, "TerranVehicleArmorsLevel2", 1);
+ TechTreeUpgradeAddLevel(auto30C44365_var, "TerranShipArmorsLevel2", 1);
+ }
+ Wait(300.0, c_timeAI);
+ auto5E351C63_g = gv_dominionPlayerGroup;
+ auto5E351C63_var = -1;
+ while (true) {
+ auto5E351C63_var = PlayerGroupNextPlayer(auto5E351C63_g, auto5E351C63_var);
+ if (auto5E351C63_var < 0) { break; }
+ TechTreeUpgradeAddLevel(auto5E351C63_var, "TerranInfantryWeaponsLevel3", 1);
+ TechTreeUpgradeAddLevel(auto5E351C63_var, "TerranVehicleWeaponsLevel3", 1);
+ TechTreeUpgradeAddLevel(auto5E351C63_var, "TerranShipWeaponsLevel3", 1);
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_StartUpgradesHard_Init () {
+ gt_StartUpgradesHard = TriggerCreate("gt_StartUpgradesHard_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: AI Give Resources
+//--------------------------------------------------------------------------------------------------
+bool gt_AIGiveResources_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ playergroup autoDDF4134E_g;
+ int autoDDF4134E_var;
+
+ // Conditions
+ if (testConds) {
+ if (!((gv_gameOver == false))) {
+ return false;
+ }
+
+ if (!((gv_inCinematic == false))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ autoDDF4134E_g = gv_dominionPlayerGroup;
+ autoDDF4134E_var = -1;
+ while (true) {
+ autoDDF4134E_var = PlayerGroupNextPlayer(autoDDF4134E_g, autoDDF4134E_var);
+ if (autoDDF4134E_var < 0) { break; }
+ PlayerModifyPropertyInt(autoDDF4134E_var, c_playerPropMinerals, c_playerPropOperSetTo, 10000);
+ PlayerModifyPropertyInt(autoDDF4134E_var, c_playerPropVespene, c_playerPropOperSetTo, 10000);
+ }
+ PlayerModifyPropertyInt(gv_PLAYER_07_DOMINION_GREEN22, c_playerPropMinerals, c_playerPropOperSetTo, 10000);
+ PlayerModifyPropertyInt(gv_PLAYER_07_DOMINION_GREEN22, c_playerPropVespene, c_playerPropOperSetTo, 10000);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_AIGiveResources_Init () {
+ gt_AIGiveResources = TriggerCreate("gt_AIGiveResources_Func");
+ TriggerAddEventTimePeriodic(gt_AIGiveResources, 10.0, c_timeGame);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Player 2 Sends AI Wave
+//--------------------------------------------------------------------------------------------------
+bool gt_Player2SendsAIWave_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gv_player2WavesSent += 1;
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_Player2SendsAIWave_Init () {
+ gt_Player2SendsAIWave = TriggerCreate("gt_Player2SendsAIWave_Func");
+ TriggerAddEventPlayerAIWave(gt_Player2SendsAIWave, gv_PLAYER_02_DOMINION_RED);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Tip Mission Help Q
+//--------------------------------------------------------------------------------------------------
+bool gt_TipMissionHelpQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerQueueEnter();
+ libSwaC_gf_DisplayMissionTip(StringExternal("Param/Value/4964D689"));
+ Wait(libSwaC_gv_campaignHintDelay, c_timeReal);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_TipMissionHelpQ_Init () {
+ gt_TipMissionHelpQ = TriggerCreate("gt_TipMissionHelpQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Destroy Palace Gate Create
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveDestroyPalaceGateCreate_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ libSwaC_gf_CreateObjectiveCampaign("ZKorhal03Objective01");
+ gv_objectiveDestroyDominionBase = ObjectiveLastCreated();
+ TriggerExecute(gt_CreatePalacePing, true, false);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveDestroyPalaceGateCreate_Init () {
+ gt_ObjectiveDestroyPalaceGateCreate = TriggerCreate("gt_ObjectiveDestroyPalaceGateCreate_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Destroy Palace Gate Complete
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveDestroyPalaceGateComplete_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_ObjectiveDestroyPalaceGateCreate, true, false);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveDestroyPalaceGateComplete_Init () {
+ gt_ObjectiveDestroyPalaceGateComplete = TriggerCreate("gt_ObjectiveDestroyPalaceGateComplete_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Destroy Palace Gate Failed
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveDestroyPalaceGateFailed_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_ObjectiveDestroyPalaceGateCreate, true, false);
+ libSwaC_gf_ZS_SetMissionObjectiveState("ZKorhal03Objective01", libSwaC_ge_MissionObjectiveState_Failed);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveDestroyPalaceGateFailed_Init () {
+ gt_ObjectiveDestroyPalaceGateFailed = TriggerCreate("gt_ObjectiveDestroyPalaceGateFailed_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Hyperion Must Survive Create
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveHyperionMustSurviveCreate_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ libSwaC_gf_CreateObjectiveCampaign("ZKorhal03Objective03");
+ gv_objectiveRescueBrood223 = ObjectiveLastCreated();
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ libSwaC_gf_CreateObjectivePing(true, UnitGetPosition(gv_hYPERION), StringExternal("Param/Value/A9B0DEA9"));
+ gv_hyperionPing = PingLastCreated();
+ PingSetUnit(gv_hyperionPing, gv_hYPERION);
+ PingSetScale(PingLastCreated(), 0.8);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveHyperionMustSurviveCreate_Init () {
+ gt_ObjectiveHyperionMustSurviveCreate = TriggerCreate("gt_ObjectiveHyperionMustSurviveCreate_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Hyperion Must Survive Complete
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveHyperionMustSurviveComplete_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_ObjectiveHyperionMustSurviveCreate, true, false);
+ PingDestroy(gv_hyperionPing);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveHyperionMustSurviveComplete_Init () {
+ gt_ObjectiveHyperionMustSurviveComplete = TriggerCreate("gt_ObjectiveHyperionMustSurviveComplete_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Hyperion Must Survive Failed
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveHyperionMustSurviveFailed_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_ObjectiveHyperionMustSurviveCreate, true, false);
+ libSwaC_gf_ZS_SetMissionObjectiveState("ZKorhal03Objective03", libSwaC_ge_MissionObjectiveState_Failed);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveHyperionMustSurviveFailed_Init () {
+ gt_ObjectiveHyperionMustSurviveFailed = TriggerCreate("gt_ObjectiveHyperionMustSurviveFailed_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective - Clear Outer Lanes - Create
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveClearOuterLanesCreate_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ libSwaC_gf_CreateObjectiveCampaign("ZKorhal03Objective02");
+ gv_objectiveRescueBrood222 = ObjectiveLastCreated();
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveClearOuterLanesCreate_Init () {
+ gt_ObjectiveClearOuterLanesCreate = TriggerCreate("gt_ObjectiveClearOuterLanesCreate_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective - Clear Outer Lanes - Update
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveClearOuterLanesUpdate_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerExecute(gt_ObjectiveClearOuterLanesCreate, true, false);
+ gv_objectiveRescueBrood2222 += 1;
+ TriggerExecute(gt_ZagaraUpgrades, true, false);
+ if ((gv_objectiveRescueBrood2222 == 3)) {
+ TriggerExecute(gt_ObjectiveClearOuterLanesComplete, true, false);
+ TriggerStop(gt_SCVRepairScript);
+ }
+
+ if ((gv_objectiveRescueBrood2222 == 3) && (libHots_gf_DifficultyValueInt2(0, 1, 1) == 1) && (GameGetMissionTime() <= 1080.0)) {
+ libSwaC_gf_CampaignAwardAchievement("Anniversary_ZKorhal03", gv_PLAYER_01_USER);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveClearOuterLanesUpdate_Init () {
+ gt_ObjectiveClearOuterLanesUpdate = TriggerCreate("gt_ObjectiveClearOuterLanesUpdate_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective - Clear Outer Lanes - Complete
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveClearOuterLanesComplete_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_ObjectiveClearOuterLanesCreate, true, false);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveClearOuterLanesComplete_Init () {
+ gt_ObjectiveClearOuterLanesComplete = TriggerCreate("gt_ObjectiveClearOuterLanesComplete_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Intro Q
+//--------------------------------------------------------------------------------------------------
+bool gt_IntroQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerQueueEnter();
+ libC6542F50_gv_aPDelayUpdate = true;
+ TriggerExecute(gt_IntroSetup, true, true);
+ TriggerExecute(gt_IntroCinematic, true, true);
+ TriggerExecute(gt_IntroCinematicEnd, true, true);
+ libC6542F50_gv_aPDelayUpdate = false;
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_IntroQ_Init () {
+ gt_IntroQ = TriggerCreate("gt_IntroQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Intro Setup
+//--------------------------------------------------------------------------------------------------
+bool gt_IntroSetup_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gv_inCinematic = true;
+ CinematicFade(false, 0.0, c_fadeStyleNormal, ColorWithAlpha(0.00, 0.00, 0.00, 0.00), 0.0, false);
+ libSwaC_gf_CinematicModeSwarmCampaign(true, 0.0);
+ libNtve_gf_GlobalCinematicSetting(true);
+ PlayerSetState(gv_PLAYER_01_USER, c_playerStateXPGain, false);
+ GameTimeOfDayPause(true);
+ libSwaC_gf_EnableDisableZerglingRespawn(false);
+ libSwaC_gf_SpawnLarvaForHatchery(UnitFromId(2150), 3);
+ libNtve_gf_PauseUnit(UnitFromId(2150), true);
+ libNtve_gf_PauseUnit(UnitFromId(205), true);
+ gv_cinematicHiddenUnits = UnitGroupEmpty();
+ gv_cinematicTempUnits = UnitGroupEmpty();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_IntroSetup_Init () {
+ gt_IntroSetup = TriggerCreate("gt_IntroSetup_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Intro Cinematic
+//--------------------------------------------------------------------------------------------------
+bool gt_IntroCinematic_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ point lv_tempPoint;
+
+ // Automatic Variable Declarations
+ unitgroup auto6D531A9D_g;
+ int auto6D531A9D_u;
+ unit auto6D531A9D_var;
+
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerExecute(gt_IntroMusic, true, false);
+ CameraApplyInfo(gv_PLAYER_01_USER, CameraInfoFromId(602), 0.0, -1, 10.0, true);
+ Wait(0.1, c_timeGame);
+ CameraApplyInfo(gv_PLAYER_01_USER, CameraInfoFromId(607), (SoundLengthSync(SoundLink(ConversationDataGetSound("zBriefing_Korhal03|Line00008", true), c_soundIndexAny)) + SoundLengthSync(SoundLink(ConversationDataGetSound("zBriefing_Korhal03|Line00019", true), c_soundIndexAny)) + 1), -1, 10.0, true);
+ UnitSetState(gv_kerrigan, c_unitStateFidget, false);
+ UnitBehaviorAdd(gv_kerrigan, "KerriganWalk", gv_kerrigan, 1);
+ TriggerSkippableBegin(PlayerGroupAll(), 0, null, true, false);
+ gv_cinematicCompleted = false;
+ SoundPlay(SoundLink("Korhal03_CS_Open_Terran", -1), PlayerGroupAll(), 100.0, 0.0);
+ gv_introTerranSound = SoundLastPlayed();
+ SoundPlay(SoundLink("Korhal03_CS_Open_Terran_Amb_UnderlayLoop", -1), PlayerGroupAll(), 100.0, 0.0);
+ gv_introTerranAmb = SoundLastPlayed();
+ CinematicFade(true, 2.0, c_fadeStyleNormal, ColorWithAlpha(0.00, 0.00, 0.00, 0.00), 0.0, true);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_CinematicInTransmission);
+ SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryMusic, 100.0, 0.1);
+ libSwaC_gf_SendTransmissionCampaign(null, "zBriefing_Korhal03|Line00008", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zBriefing_Korhal03|Line00019", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ CameraApplyInfo(gv_PLAYER_01_USER, CameraInfoFromId(1049), 0.0, -1, 10, true);
+ SoundStop(gv_introTerranSound, false);
+ SoundStop(gv_introTerranAmb, false);
+ SoundPlay(SoundLink("Korhal03_CS_Open_Zerg", -1), PlayerGroupAll(), 100.0, 0.0);
+ gv_introZergSound = SoundLastPlayed();
+ CameraApplyInfo(gv_PLAYER_01_USER, CameraInfoFromId(969), (SoundLengthSync(SoundLink(ConversationDataGetSound("zBriefing_Korhal03|Line00015", true), c_soundIndexAny)) + SoundLengthSync(SoundLink(ConversationDataGetSound("zBriefing_Korhal03|Line00016", true), c_soundIndexAny)) -1), -1, 10.0, true);
+ auto6D531A9D_g = UnitGroup("Overlord", gv_PLAYER_01_USER, RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ auto6D531A9D_u = UnitGroupCount(auto6D531A9D_g, c_unitCountAll);
+ for (;; auto6D531A9D_u -= 1) {
+ auto6D531A9D_var = UnitGroupUnitFromEnd(auto6D531A9D_g, auto6D531A9D_u);
+ if (auto6D531A9D_var == null) { break; }
+ libNtve_gf_PauseUnit(auto6D531A9D_var, false);
+ lv_tempPoint = UnitGetPosition(auto6D531A9D_var);
+ UnitSetPosition(auto6D531A9D_var, PointWithOffsetPolar(lv_tempPoint, 9.0, AngleBetweenPoints(UnitGetPosition(UnitFromId(2150)), lv_tempPoint)), false);
+ UnitIssueOrder(auto6D531A9D_var, OrderTargetingPoint(AbilityCommand("move", 0), lv_tempPoint), c_orderQueueReplace);
+ }
+ gf_IntroMoveUnits(RegionCircle(PointFromId(1077), 2.0), PointFromId(1079), 2.0);
+ gf_IntroMoveUnits(RegionFromId(9), PointFromId(1050), 0.0);
+ gf_IntroMoveUnits(RegionFromId(10), PointFromId(1051), 0.0);
+ gf_IntroMoveUnits(RegionFromId(11), PointFromId(1055), 0.0);
+ gf_IntroMoveUnits(RegionFromId(12), PointFromId(1073), 7.0);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zBriefing_Korhal03|Line00015", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ UnitIssueOrder(gv_kerrigan, OrderTargetingPoint(AbilityCommand("move", 4), UnitGetPosition(UnitFromId(2150))), c_orderQueueAddToEnd);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zBriefing_Korhal03|Line00016", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ CameraApplyInfo(gv_PLAYER_01_USER, CameraInfoFromId(200), (SoundLengthSync(SoundLink(ConversationDataGetSound("zBriefing_Korhal03|Line00017", true), c_soundIndexAny)) + SoundLengthSync(SoundLink(ConversationDataGetSound("zBriefing_Korhal03|Line00018", true), c_soundIndexAny))), -1, 10.0, true);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zBriefing_Korhal03|Line00017", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zBriefing_Korhal03|Line00018", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ SoundStop(gv_introZergSound, true);
+ gv_cinematicCompleted = true;
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_IntroCinematic_Init () {
+ gt_IntroCinematic = TriggerCreate("gt_IntroCinematic_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Intro Cinematic End
+//--------------------------------------------------------------------------------------------------
+bool gt_IntroCinematicEnd_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ fixed lv_fadeDuration;
+
+ // Automatic Variable Declarations
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ if ((gv_cinematicCompleted == true)) {
+ lv_fadeDuration = 2.0;
+ TriggerExecute(gt_IntroCleanupNotSkipped, true, true);
+ }
+ else {
+ lv_fadeDuration = 0.5;
+ CinematicFade(false, lv_fadeDuration, c_fadeStyleNormal, ColorWithAlpha(0.00, 0.00, 0.00, 0.00), 0.0, true);
+ TriggerExecute(gt_IntroCleanupSkipped, true, true);
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_IntroCinematicEnd_Init () {
+ gt_IntroCinematicEnd = TriggerCreate("gt_IntroCinematicEnd_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Intro Cleanup Not Skipped
+//--------------------------------------------------------------------------------------------------
+bool gt_IntroCleanupNotSkipped_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ fixed lv_fadeDuration;
+
+ // Automatic Variable Declarations
+ unitgroup auto5B28C747_g;
+ int auto5B28C747_u;
+ unit auto5B28C747_var;
+ unitgroup autoA1F90BE1_g;
+ int autoA1F90BE1_u;
+ unit autoA1F90BE1_var;
+
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ if ((gv_introMusicCompleted == false)) {
+ TriggerStop(gt_IntroMusic);
+ SoundtrackStop(PlayerGroupAll(), c_soundtrackCategoryMusic, true);
+ SoundtrackPlay(PlayerGroupAll(), c_soundtrackCategoryMusic, gv_mapMusicTrack, c_soundtrackCueAny, c_soundtrackIndexAny, true);
+ }
+
+ auto5B28C747_g = gv_cinematicTempUnits;
+ auto5B28C747_u = UnitGroupCount(auto5B28C747_g, c_unitCountAll);
+ for (;; auto5B28C747_u -= 1) {
+ auto5B28C747_var = UnitGroupUnitFromEnd(auto5B28C747_g, auto5B28C747_u);
+ if (auto5B28C747_var == null) { break; }
+ UnitRemove(auto5B28C747_var);
+ }
+ autoA1F90BE1_g = gv_cinematicHiddenUnits;
+ autoA1F90BE1_u = UnitGroupCount(autoA1F90BE1_g, c_unitCountAll);
+ for (;; autoA1F90BE1_u -= 1) {
+ autoA1F90BE1_var = UnitGroupUnitFromEnd(autoA1F90BE1_g, autoA1F90BE1_u);
+ if (autoA1F90BE1_var == null) { break; }
+ libNtve_gf_ShowHideUnit(autoA1F90BE1_var, true);
+ }
+ UnitPauseAll(false);
+ libNtve_gf_PauseUnit(gv_hYPERION, true);
+ GameTimeOfDayPause(false);
+ PlayerSetState(gv_PLAYER_01_USER, c_playerStateXPGain, true);
+ UnitSetState(gv_kerrigan, c_unitStateFidget, true);
+ UnitBehaviorRemove(gv_kerrigan, "KerriganWalk", 1);
+ libSwaC_gf_EnableDisableZerglingRespawn(true);
+ TriggerExecute(gt_PerformanceHandler, true, false);
+ VisExploreArea(gv_PLAYER_01_USER, RegionEntireMap(), false, false);
+ TriggerExecute(gt_StartAI, true, false);
+ lv_fadeDuration = 2.0;
+ libNtve_gf_CinematicMode(false, PlayerGroupAll(), lv_fadeDuration);
+ libNtve_gf_GlobalCinematicSetting(false);
+ CameraApplyInfo(gv_PLAYER_01_USER, CameraInfoFromId(907), lv_fadeDuration, -1, 10.0, false);
+ Wait(lv_fadeDuration, c_timeGame);
+ gv_inCinematic = false;
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_IntroCleanupNotSkipped_Init () {
+ gt_IntroCleanupNotSkipped = TriggerCreate("gt_IntroCleanupNotSkipped_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Intro Cleanup Skipped
+//--------------------------------------------------------------------------------------------------
+bool gt_IntroCleanupSkipped_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ fixed lv_fadeDuration;
+
+ // Automatic Variable Declarations
+ unitgroup auto964FF804_g;
+ int auto964FF804_u;
+ unit auto964FF804_var;
+ unitgroup auto2A06919B_g;
+ int auto2A06919B_u;
+ unit auto2A06919B_var;
+ int auto292C4F5C_ae;
+ int auto292C4F5C_var;
+
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ SoundStop(gv_introTerranSound, true);
+ SoundStop(gv_introTerranAmb, true);
+ SoundStop(gv_introZergSound, true);
+ if ((gv_introMusicCompleted == false)) {
+ TriggerStop(gt_IntroMusic);
+ SoundtrackStop(PlayerGroupAll(), c_soundtrackCategoryMusic, true);
+ SoundtrackPlay(PlayerGroupAll(), c_soundtrackCategoryMusic, gv_mapMusicTrack, c_soundtrackCueAny, c_soundtrackIndexAny, true);
+ }
+
+ auto964FF804_g = gv_cinematicTempUnits;
+ auto964FF804_u = UnitGroupCount(auto964FF804_g, c_unitCountAll);
+ for (;; auto964FF804_u -= 1) {
+ auto964FF804_var = UnitGroupUnitFromEnd(auto964FF804_g, auto964FF804_u);
+ if (auto964FF804_var == null) { break; }
+ UnitRemove(auto964FF804_var);
+ }
+ auto2A06919B_g = gv_cinematicHiddenUnits;
+ auto2A06919B_u = UnitGroupCount(auto2A06919B_g, c_unitCountAll);
+ for (;; auto2A06919B_u -= 1) {
+ auto2A06919B_var = UnitGroupUnitFromEnd(auto2A06919B_g, auto2A06919B_u);
+ if (auto2A06919B_var == null) { break; }
+ libNtve_gf_ShowHideUnit(auto2A06919B_var, true);
+ }
+ UnitPauseAll(false);
+ libNtve_gf_PauseUnit(gv_hYPERION, true);
+ auto292C4F5C_ae = gv_numberOfIntroUnits;
+ auto292C4F5C_var = 1;
+ for ( ; auto292C4F5C_var <= auto292C4F5C_ae; auto292C4F5C_var += 1 ) {
+ UnitIssueOrder(gv_introUnits[auto292C4F5C_var], Order(AbilityCommand("stop", 0)), c_orderQueueReplace);
+ UnitSetPosition(gv_introUnits[auto292C4F5C_var], gv_introUnitPositions[auto292C4F5C_var], false);
+ UnitSetFacing(gv_introUnits[auto292C4F5C_var], gv_introUnitFacings[auto292C4F5C_var], 0.0);
+ }
+ UnitIssueOrder(gv_kerrigan, OrderTargetingPoint(AbilityCommand("move", 4), UnitGetPosition(UnitFromId(2150))), c_orderQueueReplace);
+ GameTimeOfDayPause(false);
+ PlayerSetState(gv_PLAYER_01_USER, c_playerStateXPGain, true);
+ UnitSetState(gv_kerrigan, c_unitStateFidget, true);
+ UnitBehaviorRemove(gv_kerrigan, "KerriganWalk", 1);
+ libSwaC_gf_EnableDisableZerglingRespawn(true);
+ TriggerExecute(gt_PerformanceHandler, true, false);
+ CameraApplyInfo(gv_PLAYER_01_USER, CameraInfoDefault(), 0.0, -1, 10.0, false);
+ VisExploreArea(gv_PLAYER_01_USER, RegionEntireMap(), false, false);
+ TriggerExecute(gt_StartAI, true, false);
+ lv_fadeDuration = 1.0;
+ libNtve_gf_CinematicMode(false, PlayerGroupAll(), lv_fadeDuration);
+ libNtve_gf_GlobalCinematicSetting(false);
+ libNtve_gf_SwooshCamera(gv_PLAYER_01_USER, ((CameraInfoGetValue(CameraInfoDefault(), c_cameraValueDistance)) + 8.0), CameraInfoGetValue(CameraInfoDefault(), c_cameraValueDistance), CameraInfoGetTarget(CameraInfoFromId(907)), lv_fadeDuration);
+ CinematicFade(true, lv_fadeDuration, c_fadeStyleNormal, ColorWithAlpha(0.00, 0.00, 0.00, 0.00), 0.0, true);
+ gv_inCinematic = false;
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_IntroCleanupSkipped_Init () {
+ gt_IntroCleanupSkipped = TriggerCreate("gt_IntroCleanupSkipped_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Intro Music
+//--------------------------------------------------------------------------------------------------
+bool gt_IntroMusic_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ string lv_soundtrack;
+
+ // Automatic Variable Declarations
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ lv_soundtrack = "ZKorhal03MissionIntro";
+ SoundtrackPlay(PlayerGroupAll(), c_soundtrackCategoryMusic, lv_soundtrack, c_soundtrackCueAny, c_soundtrackIndexAny, false);
+ SoundtrackWait(lv_soundtrack);
+ gv_introMusicCompleted = true;
+ SoundtrackPlay(PlayerGroupAll(), c_soundtrackCategoryMusic, gv_mapMusicTrack, c_soundtrackCueAny, c_soundtrackIndexAny, true);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_IntroMusic_Init () {
+ gt_IntroMusic = TriggerCreate("gt_IntroMusic_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Mid Q
+//--------------------------------------------------------------------------------------------------
+bool gt_MidQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerQueueEnter();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Speech);
+ SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryCombat, 20.0, 0.2);
+ SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryDeath, 20.0, 0.2);
+ SoundChannelSetVolume(PlayerGroupAll(), c_soundCategorySpell, 20.0, 0.2);
+ libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zMission_Korhal03|Line00103", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libNtve_ge_VolumeChannelMode_Game);
+ libC6542F50_gv_aPDelayUpdate = true;
+ TriggerExecute(gt_MidSetup, true, true);
+ TriggerExecute(gt_MidCinematic, true, true);
+ TriggerExecute(gt_MidCinematicEnd, true, true);
+ TriggerExecute(gt_MidCleanup, true, true);
+ libC6542F50_gv_aPDelayUpdate = false;
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_MidQ_Init () {
+ gt_MidQ = TriggerCreate("gt_MidQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Mid Setup
+//--------------------------------------------------------------------------------------------------
+bool gt_MidSetup_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ unitgroup autoA51FF24F_g;
+ int autoA51FF24F_u;
+ unit autoA51FF24F_var;
+ unitgroup auto19D4EF94_g;
+ int auto19D4EF94_u;
+ unit auto19D4EF94_var;
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gv_inCinematic = true;
+ CinematicFade(false, 1.0, c_fadeStyleNormal, ColorWithAlpha(0.00, 0.00, 0.00, 0.00), 0.0, false);
+ UISetMode(PlayerGroupAll(), c_uiModeFullscreen, 1.0);
+ Wait(1.0, c_timeReal);
+ libSwaC_gf_CinematicModeSwarmCampaign(true, 0.0);
+ libNtve_gf_GlobalCinematicSetting(true);
+ CameraSave(gv_PLAYER_01_USER);
+ libNtve_gf_StoreUnitSelection(gv_PLAYER_01_USER, libNtve_ge_UnitSelectionStoreOption_ClearUnitSelection);
+ PlayerSetState(gv_PLAYER_01_USER, c_playerStateXPGain, false);
+ GameTimeOfDayPause(true);
+ libSwaC_gf_EnableDisableZerglingRespawn(false);
+ UnitPauseAll(true);
+ gv_cinematicHiddenUnits = UnitGroupEmpty();
+ gv_cinematicTempUnits = UnitGroupEmpty();
+ libNtve_gf_AddUnitGroupToUnitGroup(UnitGroup(null, gv_PLAYER_01_USER, RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterStructure) | (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), gv_cinematicHiddenUnits);
+ libNtve_gf_AddUnitGroupToUnitGroup(UnitGroup(null, gv_PLAYER_03_DOMINION_BLUE, RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterStructure) | (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), gv_cinematicHiddenUnits);
+ libNtve_gf_AddUnitGroupToUnitGroup(UnitGroup(null, gv_PLAYER_02_DOMINION_RED, RegionFromId(1), UnitFilter(0, 0, (1 << c_targetFilterStructure) | (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0), gv_cinematicHiddenUnits);
+ autoA51FF24F_g = gv_cinematicHiddenUnits;
+ autoA51FF24F_u = UnitGroupCount(autoA51FF24F_g, c_unitCountAll);
+ for (;; autoA51FF24F_u -= 1) {
+ autoA51FF24F_var = UnitGroupUnitFromEnd(autoA51FF24F_g, autoA51FF24F_u);
+ if (autoA51FF24F_var == null) { break; }
+ libNtve_gf_ShowHideUnit(autoA51FF24F_var, false);
+ }
+ auto19D4EF94_g = gv_hyperionVictims;
+ auto19D4EF94_u = UnitGroupCount(auto19D4EF94_g, c_unitCountAll);
+ for (;; auto19D4EF94_u -= 1) {
+ auto19D4EF94_var = UnitGroupUnitFromEnd(auto19D4EF94_g, auto19D4EF94_u);
+ if (auto19D4EF94_var == null) { break; }
+ libNtve_gf_PauseUnit(auto19D4EF94_var, false);
+ libNtve_gf_ShowHideUnit(auto19D4EF94_var, true);
+ }
+ TriggerExecute(gt_MidHyperionMovement, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_MidSetup_Init () {
+ gt_MidSetup = TriggerCreate("gt_MidSetup_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Mid Cinematic
+//--------------------------------------------------------------------------------------------------
+bool gt_MidCinematic_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ CameraApplyInfo(gv_PLAYER_01_USER, CameraInfoFromId(1947), 0.0, -1, 10.0, true);
+ TriggerExecute(gt_MidMusic, true, false);
+ TriggerSkippableBegin(PlayerGroupAll(), 0, null, true, false);
+ gv_cinematicCompleted = false;
+ CinematicFade(true, 1.0, c_fadeStyleNormal, ColorWithAlpha(0.00, 0.00, 0.00, 0.00), 0.0, true);
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_CinematicInTransmission);
+ SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryCombat, 15.0, 1.0);
+ SoundChannelSetVolume(PlayerGroupAll(), c_soundCategorySpell, 15.0, 1.0);
+ SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryDeath, 25.0, 1.0);
+ SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryMusic, 100.0, 1.0);
+ CameraApplyInfo(gv_PLAYER_01_USER, CameraInfoFromId(1948), 18.0, -1, 10.0, true);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00062", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00065", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00063", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00104", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00066", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00100", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00101", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ gv_cinematicCompleted = true;
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_MidCinematic_Init () {
+ gt_MidCinematic = TriggerCreate("gt_MidCinematic_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Mid Cinematic End
+//--------------------------------------------------------------------------------------------------
+bool gt_MidCinematicEnd_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ fixed lv_fadeDuration;
+
+ // Automatic Variable Declarations
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ if ((gv_cinematicCompleted == true)) {
+ lv_fadeDuration = 2.0;
+ }
+ else {
+ lv_fadeDuration = 0.5;
+ }
+ CinematicFade(false, lv_fadeDuration, c_fadeStyleNormal, ColorWithAlpha(0.00, 0.00, 0.00, 0.00), 0.0, true);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_MidCinematicEnd_Init () {
+ gt_MidCinematicEnd = TriggerCreate("gt_MidCinematicEnd_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Mid Cleanup
+//--------------------------------------------------------------------------------------------------
+bool gt_MidCleanup_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ fixed lv_fadeDuration;
+
+ // Automatic Variable Declarations
+ unitgroup auto148BCB4A_g;
+ int auto148BCB4A_u;
+ unit auto148BCB4A_var;
+ unitgroup auto0875A761_g;
+ int auto0875A761_u;
+ unit auto0875A761_var;
+ unitgroup auto589B28E9_g;
+ int auto589B28E9_u;
+ unit auto589B28E9_var;
+ unitgroup auto4C8082DC_g;
+ int auto4C8082DC_u;
+ unit auto4C8082DC_var;
+ unitgroup auto5B15553C_g;
+ int auto5B15553C_u;
+ unit auto5B15553C_var;
+ unitgroup autoF9859346_g;
+ int autoF9859346_u;
+ unit autoF9859346_var;
+ const int auto28258970_n = 6;
+ int auto28258970_i;
+
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerStop(gt_MidHyperionMovement);
+ if ((gv_midMusicCompleted == false)) {
+ TriggerStop(gt_MidMusic);
+ SoundtrackStop(PlayerGroupAll(), c_soundtrackCategoryMusic, true);
+ SoundtrackPlay(PlayerGroupAll(), c_soundtrackCategoryMusic, "ZKorhal03MusicAlt1", c_soundtrackCueAny, c_soundtrackIndexAny, true);
+ }
+
+ auto148BCB4A_g = gv_cinematicTempUnits;
+ auto148BCB4A_u = UnitGroupCount(auto148BCB4A_g, c_unitCountAll);
+ for (;; auto148BCB4A_u -= 1) {
+ auto148BCB4A_var = UnitGroupUnitFromEnd(auto148BCB4A_g, auto148BCB4A_u);
+ if (auto148BCB4A_var == null) { break; }
+ UnitRemove(auto148BCB4A_var);
+ }
+ auto0875A761_g = UnitGroup("Barracks", gv_PLAYER_07_DOMINION_GREEN22, RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ auto0875A761_u = UnitGroupCount(auto0875A761_g, c_unitCountAll);
+ for (;; auto0875A761_u -= 1) {
+ auto0875A761_var = UnitGroupUnitFromEnd(auto0875A761_g, auto0875A761_u);
+ if (auto0875A761_var == null) { break; }
+ UnitRemove(auto0875A761_var);
+ }
+ auto589B28E9_g = UnitGroup("MengskMarine", c_playerAny, RegionFromId(24), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32))), 0);
+ auto589B28E9_u = UnitGroupCount(auto589B28E9_g, c_unitCountAll);
+ for (;; auto589B28E9_u -= 1) {
+ auto589B28E9_var = UnitGroupUnitFromEnd(auto589B28E9_g, auto589B28E9_u);
+ if (auto589B28E9_var == null) { break; }
+ UnitRemove(auto589B28E9_var);
+ }
+ auto4C8082DC_g = gv_hyperionVictims;
+ auto4C8082DC_u = UnitGroupCount(auto4C8082DC_g, c_unitCountAll);
+ for (;; auto4C8082DC_u -= 1) {
+ auto4C8082DC_var = UnitGroupUnitFromEnd(auto4C8082DC_g, auto4C8082DC_u);
+ if (auto4C8082DC_var == null) { break; }
+ UnitRemove(auto4C8082DC_var);
+ }
+ UnitRemove(gv_midHyperion);
+ auto5B15553C_g = gv_cinematicHiddenUnits;
+ auto5B15553C_u = UnitGroupCount(auto5B15553C_g, c_unitCountAll);
+ for (;; auto5B15553C_u -= 1) {
+ auto5B15553C_var = UnitGroupUnitFromEnd(auto5B15553C_g, auto5B15553C_u);
+ if (auto5B15553C_var == null) { break; }
+ libNtve_gf_ShowHideUnit(auto5B15553C_var, true);
+ }
+ autoF9859346_g = UnitGroup(null, gv_PLAYER_07_DOMINION_GREEN22, null, UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32))), 0);
+ autoF9859346_u = UnitGroupCount(autoF9859346_g, c_unitCountAll);
+ for (;; autoF9859346_u -= 1) {
+ autoF9859346_var = UnitGroupUnitFromEnd(autoF9859346_g, autoF9859346_u);
+ if (autoF9859346_var == null) { break; }
+ libNtve_gf_ShowHideUnit(autoF9859346_var, true);
+ AISetUnitScriptControlled(autoF9859346_var, false);
+ }
+ UnitPauseAll(false);
+ TriggerExecute(gt_PauseUnitsAgain, true, false);
+ libNtve_gf_ShowHideUnit(gv_hYPERION, true);
+ UnitIssueOrder(gv_hYPERION, Order(AbilityCommand("move", 2)), c_orderQueueReplace);
+ libNtve_gf_PlayAnimation(libNtve_gf_MainActorofUnit(gv_midHyperion), c_animNameDefault, "Spell E", c_animFlagPlayForever, c_animTimeDefault);
+ for (auto28258970_i = 1; auto28258970_i <= auto28258970_n; auto28258970_i += 1) {
+ UnitCreate(1, "WarPig", 0, gv_PLAYER_07_DOMINION_GREEN22, RegionRandomPoint(RegionFromId(26)), 315.0);
+ }
+ libSwaC_gf_ReviveHeroInstantly(libSwaC_ge_HeroUnit_Kerrigan, false);
+ libSwaC_gf_ResetHeroAbilityCooldowns(libSwaC_ge_HeroUnit_Kerrigan);
+ UnitSetPropertyFixed(gv_kerrigan, c_unitPropLifePercent, 100.0);
+ UnitSetPropertyFixed(gv_kerrigan, c_unitPropEnergyPercent, 100.0);
+ Wait(0.1, c_timeGame);
+ UnitCreate(1, "SCV", 0, gv_PLAYER_07_DOMINION_GREEN22, PointFromId(881), 135.0);
+ UnitCreate(1, "SCV", 0, gv_PLAYER_07_DOMINION_GREEN22, PointFromId(882), 135.0);
+ GameTimeOfDayPause(false);
+ PlayerSetState(gv_PLAYER_01_USER, c_playerStateXPGain, true);
+ libNtve_gf_SetAllianceOneWay(gv_PLAYER_07_DOMINION_GREEN22, gv_PLAYER_03_DOMINION_BLUE, libNtve_ge_AllianceSetting_Enemy);
+ AIToggleBulliesInRegion(gv_PLAYER_07_DOMINION_GREEN22, RegionFromId(24), true);
+ libSwaC_gf_EnableDisableZerglingRespawn(true);
+ libNtve_gf_RestoreUnitSelection(gv_PLAYER_01_USER);
+ CameraRestore(gv_PLAYER_01_USER, 0.0, -1, 10.0);
+ if ((gv_cinematicCompleted == true)) {
+ lv_fadeDuration = 1.5;
+ }
+ else {
+ lv_fadeDuration = 1.0;
+ }
+ libNtve_gf_CinematicMode(false, PlayerGroupAll(), lv_fadeDuration);
+ libNtve_gf_GlobalCinematicSetting(false);
+ CinematicFade(true, lv_fadeDuration, c_fadeStyleNormal, ColorWithAlpha(0.00, 0.00, 0.00, 0.00), 0.0, true);
+ gv_inCinematic = false;
+ TriggerExecute(gt_HyperionIntroQ, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_MidCleanup_Init () {
+ gt_MidCleanup = TriggerCreate("gt_MidCleanup_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Mid Hyperion Movement
+//--------------------------------------------------------------------------------------------------
+bool gt_MidHyperionMovement_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_i;
+
+ // Automatic Variable Declarations
+ unitgroup auto9C8C9975_g;
+ int auto9C8C9975_u;
+ unit auto9C8C9975_var;
+
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ libNtve_gf_SetAllianceOneWay(gv_PLAYER_07_DOMINION_GREEN22, gv_PLAYER_03_DOMINION_BLUE, libNtve_ge_AllianceSetting_Neutral);
+ UnitCreate(1, "Hyperion", 0, gv_PLAYER_07_DOMINION_GREEN22, PointFromId(1945), PointGetFacing(PointFromId(1945)));
+ gv_midHyperion = UnitLastCreated();
+ libNtve_gf_ChangeUnitDamage(gv_midHyperion, libNtve_ge_UnitDamageTakenDealt_Damage_Take, libNtve_ge_UnitDamageChangeOption_No);
+ libNtve_gf_ChangeUnitDamage(gv_midHyperion, libNtve_ge_UnitDamageTakenDealt_Damage_Deal, libNtve_ge_UnitDamageChangeOption_Mega);
+ UnitSetPropertyFixed(gv_midHyperion, c_unitPropMovementSpeed, 0.9);
+ UnitIssueOrder(gv_midHyperion, OrderTargetingPoint(AbilityCommand("move", 0), UnitGetPosition(UnitFromId(370))), c_orderQueueReplace);
+ libNtve_gf_PlayAnimation(libNtve_gf_MainActorofUnit(gv_midHyperion), c_animNameDefault, "Stand Work 01", 0, c_animTimeDefault);
+ Wait(3.0, c_timeGame);
+ libNtve_gf_SetAllianceOneWay(gv_PLAYER_07_DOMINION_GREEN22, gv_PLAYER_03_DOMINION_BLUE, libNtve_ge_AllianceSetting_Enemy);
+ while (!((libNtve_gf_UnitInRegion(gv_midHyperion, RegionCircle(UnitGetPosition(UnitFromId(370)), 2.0)) == true))) {
+ Wait(0.5, c_timeGame);
+ }
+ auto9C8C9975_g = gv_hyperionVictims;
+ auto9C8C9975_u = UnitGroupCount(auto9C8C9975_g, c_unitCountAll);
+ for (;; auto9C8C9975_u -= 1) {
+ auto9C8C9975_var = UnitGroupUnitFromEnd(auto9C8C9975_g, auto9C8C9975_u);
+ if (auto9C8C9975_var == null) { break; }
+ UnitKill(auto9C8C9975_var);
+ }
+ UnitCreate(1, "SCV", 0, gv_PLAYER_07_DOMINION_GREEN22, PointFromId(2), 315.0);
+ UnitSetHeight(UnitLastCreated(), 4.0, 0.0);
+ UnitSetHeight(UnitLastCreated(), 0.0, 0.5);
+ UnitGroupAdd(gv_cinematicTempUnits, UnitLastCreated());
+ Wait(0.5, c_timeGame);
+ UnitIssueOrder(UnitLastCreated(), OrderTargetingPoint(AbilityCommand("TerranBuild", 3), PointFromId(209)), c_orderQueueReplace);
+ SoundPlayAtPoint(SoundLink("Event_Korhal03_BarracksPlacement", -1), PlayerGroupAll(), PointFromId(209), 0.0, 100.0, 0.0);
+ Wait(0.5, c_timeGame);
+ UnitCreate(1, "SCV", 0, gv_PLAYER_07_DOMINION_GREEN22, PointFromId(2), 315.0);
+ UnitSetHeight(UnitLastCreated(), 4.0, 0.0);
+ UnitSetHeight(UnitLastCreated(), 0.0, 0.5);
+ UnitGroupAdd(gv_cinematicTempUnits, UnitLastCreated());
+ Wait(0.5, c_timeGame);
+ UnitIssueOrder(UnitLastCreated(), OrderTargetingPoint(AbilityCommand("TerranBuild", 3), PointFromId(790)), c_orderQueueReplace);
+ SoundPlayAtPoint(SoundLink("Event_Korhal03_BarracksPlacement", -1), PlayerGroupAll(), PointFromId(790), 0.0, 100.0, 0.0);
+ Wait(0.5, c_timeGame);
+ CameraApplyInfo(gv_PLAYER_01_USER, CameraInfoFromId(1949), 4.0, -1, 10.0, true);
+ SoundPlayAtPoint(SoundLink("Event_Korhal3_RaynorBattlecruiserLand", -1), PlayerGroupAll(), PointFromId(1945), 0.0, 100.0, 0.0);
+ UnitSetHeight(gv_midHyperion, 1.5, 3.0);
+ UnitSetFacing(gv_midHyperion, 315.0, 3.0);
+ libNtve_gf_PlayAnimation(libNtve_gf_MainActorofUnit(gv_midHyperion), c_animNameDefault, "Spell D", c_animFlagPlayForever | c_animFlagNonLooping, c_animTimeDefault);
+ Wait(3.0, c_timeGame);
+ libNtve_gf_PlayAnimation(libNtve_gf_MainActorofUnit(gv_midHyperion), c_animNameDefault, "Spell E", c_animFlagPlayForever, c_animTimeDefault);
+ Wait(1.0, c_timeGame);
+ CameraApplyInfo(gv_PLAYER_01_USER, CameraInfoFromId(1950), 6.0, -1, 10.0, true);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_MidHyperionMovement_Init () {
+ gt_MidHyperionMovement = TriggerCreate("gt_MidHyperionMovement_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Mid Music
+//--------------------------------------------------------------------------------------------------
+bool gt_MidMusic_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ string lv_soundtrack;
+
+ // Automatic Variable Declarations
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ lv_soundtrack = "ZKorhal03MusicCutscene01_BattleCruiser";
+ SoundtrackPlay(PlayerGroupAll(), c_soundtrackCategoryMusic, lv_soundtrack, c_soundtrackCueAny, c_soundtrackIndexAny, false);
+ SoundtrackWait(lv_soundtrack);
+ gv_midMusicCompleted = true;
+ SoundtrackPlay(PlayerGroupAll(), c_soundtrackCategoryMusic, "ZKorhal03MusicAlt1", c_soundtrackCueAny, c_soundtrackIndexAny, true);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_MidMusic_Init () {
+ gt_MidMusic = TriggerCreate("gt_MidMusic_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Victory Q
+//--------------------------------------------------------------------------------------------------
+bool gt_VictoryQ_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ gv_gameOver = true;
+ TriggerQueueEnter();
+ TriggerExecute(gt_VictorySetup, true, true);
+ TriggerExecute(gt_VictoryCinematic, true, true);
+ TriggerExecute(gt_VictoryCinematicEnd, true, true);
+ TriggerExecute(gt_VictoryCleanup, true, true);
+ TriggerQueueExit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_VictoryQ_Init () {
+ gt_VictoryQ = TriggerCreate("gt_VictoryQ_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Victory Setup
+//--------------------------------------------------------------------------------------------------
+bool gt_VictorySetup_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ unitgroup auto1C5FD251_g;
+ int auto1C5FD251_u;
+ unit auto1C5FD251_var;
+ unitgroup autoF1273C0D_g;
+ int autoF1273C0D_u;
+ unit autoF1273C0D_var;
+ unitgroup auto95FAA114_g;
+ int auto95FAA114_u;
+ unit auto95FAA114_var;
+ unitgroup autoCEC2984E_g;
+ int autoCEC2984E_u;
+ unit autoCEC2984E_var;
+ unitgroup auto1C300928_g;
+ int auto1C300928_u;
+ unit auto1C300928_var;
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gv_inCinematic = true;
+ CinematicFade(false, 1.0, c_fadeStyleNormal, ColorWithAlpha(0.00, 0.00, 0.00, 0.00), 0.0, false);
+ UISetMode(PlayerGroupAll(), c_uiModeFullscreen, 1.0);
+ Wait(1.0, c_timeReal);
+ libSwaC_gf_CinematicModeSwarmCampaign(true, 0.0);
+ libNtve_gf_GlobalCinematicSetting(true);
+ UnitClearSelection(gv_PLAYER_01_USER);
+ PlayerSetState(gv_PLAYER_01_USER, c_playerStateXPGain, false);
+ GameTimeOfDayPause(true);
+ libSwaC_gf_EnableDisableZerglingRespawn(false);
+ gv_kerriganKills = libNtve_gf_UnitGetPropertyKills(gv_kerrigan, c_unitPropCurrent);
+ UnitPauseAll(true);
+ libNtve_gf_PauseUnit(UnitFromId(675), false);
+ gv_cinematicHiddenUnits = UnitGroupEmpty();
+ gv_cinematicTempUnits = UnitGroupEmpty();
+ auto1C5FD251_g = UnitGroup("PathingBlocker1x1", 0, RegionFromId(35), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ auto1C5FD251_u = UnitGroupCount(auto1C5FD251_g, c_unitCountAll);
+ for (;; auto1C5FD251_u -= 1) {
+ auto1C5FD251_var = UnitGroupUnitFromEnd(auto1C5FD251_g, auto1C5FD251_u);
+ if (auto1C5FD251_var == null) { break; }
+ UnitRemove(auto1C5FD251_var);
+ }
+ autoF1273C0D_g = UnitGroup(null, gv_PLAYER_04_DOMINION_PURPLE, RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ autoF1273C0D_u = UnitGroupCount(autoF1273C0D_g, c_unitCountAll);
+ for (;; autoF1273C0D_u -= 1) {
+ autoF1273C0D_var = UnitGroupUnitFromEnd(autoF1273C0D_g, autoF1273C0D_u);
+ if (autoF1273C0D_var == null) { break; }
+ UnitRemove(autoF1273C0D_var);
+ }
+ auto95FAA114_g = UnitGroup(null, c_playerAny, RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ auto95FAA114_u = UnitGroupCount(auto95FAA114_g, c_unitCountAll);
+ for (;; auto95FAA114_u -= 1) {
+ auto95FAA114_var = UnitGroupUnitFromEnd(auto95FAA114_g, auto95FAA114_u);
+ if (auto95FAA114_var == null) { break; }
+ if ((UnitGetOwner(auto95FAA114_var) != gv_PLAYER_01_USER)) {
+ libNtve_gf_ShowHideUnit(auto95FAA114_var, false);
+ }
+ else {
+ if ((UnitTypeTestAttribute(UnitGetType(auto95FAA114_var), c_unitAttributeStructure) == false)) {
+ libNtve_gf_ShowHideUnit(auto95FAA114_var, false);
+ }
+
+ }
+ }
+ autoCEC2984E_g = UnitGroup(null, c_playerAny, RegionFromId(13), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0);
+ autoCEC2984E_u = UnitGroupCount(autoCEC2984E_g, c_unitCountAll);
+ for (;; autoCEC2984E_u -= 1) {
+ autoCEC2984E_var = UnitGroupUnitFromEnd(autoCEC2984E_g, autoCEC2984E_u);
+ if (autoCEC2984E_var == null) { break; }
+ if ((UnitGetType(autoCEC2984E_var) != "CreepTumor") && (UnitGetType(autoCEC2984E_var) != "CreepTumorBurrowed") && (UnitGetType(autoCEC2984E_var) != "CreepTumorUsed")) {
+ UnitRemove(autoCEC2984E_var);
+ }
+
+ }
+ libNtve_gf_ShowHideUnit(UnitFromId(675), true);
+ if ((UnitIsAlive(UnitFromId(675)) == true)) {
+ UnitKill(UnitFromId(675));
+ auto1C300928_g = gv_palaceTurrets;
+ auto1C300928_u = UnitGroupCount(auto1C300928_g, c_unitCountAll);
+ for (;; auto1C300928_u -= 1) {
+ auto1C300928_var = UnitGroupUnitFromEnd(auto1C300928_g, auto1C300928_u);
+ if (auto1C300928_var == null) { break; }
+ UnitSetState(auto1C300928_var, c_unitStateInvulnerable, false);
+ UnitKill(auto1C300928_var);
+ }
+ }
+
+ TriggerExecute(gt_VictoryZerg, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_VictorySetup_Init () {
+ gt_VictorySetup = TriggerCreate("gt_VictorySetup_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Victory Cinematic
+//--------------------------------------------------------------------------------------------------
+bool gt_VictoryCinematic_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ CameraApplyInfo(gv_PLAYER_01_USER, CameraInfoFromId(1113), 0.0, -1, 10.0, true);
+ SoundPlay(SoundLink("Korhal03_CS_EndWin_ZergHorde_Quad_Foley_OneShot", -1), PlayerGroupAll(), 100.0, 0.0);
+ gv_victoryZergSound1 = SoundLastPlayed();
+ SoundtrackPlay(PlayerGroupAll(), c_soundtrackCategoryMusic, "ZKorhal03MusicCutscene02_MissionVictory", c_soundtrackCueAny, c_soundtrackIndexAny, false);
+ TriggerSkippableBegin(PlayerGroupAll(), 0, null, true, false);
+ gv_cinematicCompleted = false;
+ CinematicFade(true, 2.0, c_fadeStyleNormal, ColorWithAlpha(0.00, 0.00, 0.00, 0.00), 0.0, true);
+ CameraApplyInfo(gv_PLAYER_01_USER, CameraInfoFromId(1114), (SoundLengthSync(SoundLink(ConversationDataGetSound("zMission_Korhal03|Line00022", true), c_soundIndexAny)) + 1), -1, 10.0, true);
+ SoundPlay(SoundLink("Korhal03_CS_EndWin_ZergHorde_Quad_Vox_Loop", -1), PlayerGroupAll(), 100.0, 0.0);
+ gv_victoryZergSound2 = SoundLastPlayed();
+ libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_CinematicInTransmission);
+ SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryMusic, 100.0, 0.1);
+ libSwaC_gf_SendTransmissionCampaign(gv_victoryKerrigan, "zMission_Korhal03|Line00022", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ SoundPlay(SoundLink("ZergArmy_Cheer_MassiveRoar", -1), PlayerGroupAll(), 100.0, 0.0);
+ gv_victoryZergSound3 = SoundLastPlayed();
+ libSwaC_gf_SendTransmissionCampaign(null, "zMission_Korhal03|Line00087", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ while (!((UnitIsAlive(gv_victoryKerrigan) == false))) {
+ Wait(0.1, c_timeGame);
+ }
+ Wait(2.0, c_timeReal);
+ gv_cinematicCompleted = true;
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_VictoryCinematic_Init () {
+ gt_VictoryCinematic = TriggerCreate("gt_VictoryCinematic_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Victory Cinematic End
+//--------------------------------------------------------------------------------------------------
+bool gt_VictoryCinematicEnd_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ fixed lv_fadeDuration;
+
+ // Automatic Variable Declarations
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ SoundtrackStop(PlayerGroupAll(), c_soundtrackCategoryMusic, true);
+ if ((gv_cinematicCompleted == true)) {
+ lv_fadeDuration = 2.0;
+ }
+ else {
+ lv_fadeDuration = 0.5;
+ }
+ CinematicFade(false, lv_fadeDuration, c_fadeStyleNormal, ColorWithAlpha(0.00, 0.00, 0.00, 0.00), 0.0, true);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_VictoryCinematicEnd_Init () {
+ gt_VictoryCinematicEnd = TriggerCreate("gt_VictoryCinematicEnd_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Victory Cleanup
+//--------------------------------------------------------------------------------------------------
+bool gt_VictoryCleanup_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerStop(gt_VictoryZerg);
+ SoundStop(gv_victoryZergSound1, true);
+ SoundStop(gv_victoryZergSound2, true);
+ SoundStop(gv_victoryZergSound3, true);
+ TriggerExecute(gt_Victory, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_VictoryCleanup_Init () {
+ gt_VictoryCleanup = TriggerCreate("gt_VictoryCleanup_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Victory Zerg
+//--------------------------------------------------------------------------------------------------
+bool gt_VictoryZerg_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ point lv_tempPoint;
+
+ // Automatic Variable Declarations
+ const int autoBB637294_n = 32;
+ int autoBB637294_i;
+ const int auto24B9244B_n = 8;
+ int auto24B9244B_i;
+ const int autoC6990152_n = 4;
+ int autoC6990152_i;
+ unitgroup autoDCCDEC43_g;
+ int autoDCCDEC43_u;
+ unit autoDCCDEC43_var;
+
+ // Variable Initialization
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ for (autoBB637294_i = 1; autoBB637294_i <= autoBB637294_n; autoBB637294_i += 1) {
+ libNtve_gf_UnitCreateFacingPoint(1, "Zergling", 0, gv_PLAYER_01_USER, RegionRandomPoint(RegionFromId(28)), PointFromId(1084));
+ lv_tempPoint = UnitGetPosition(UnitLastCreated());
+ UnitSetPosition(UnitLastCreated(), PointWithOffsetPolar(UnitGetPosition(UnitLastCreated()), 8.0, AngleBetweenPoints(PointFromId(1084), lv_tempPoint)), false);
+ UnitIssueOrder(UnitLastCreated(), OrderTargetingPoint(AbilityCommand("move", 0), lv_tempPoint), c_orderQueueReplace);
+ }
+ for (auto24B9244B_i = 1; auto24B9244B_i <= auto24B9244B_n; auto24B9244B_i += 1) {
+ libNtve_gf_UnitCreateFacingPoint(1, "Hydralisk", 0, gv_PLAYER_01_USER, RegionRandomPoint(RegionFromId(28)), PointFromId(1084));
+ lv_tempPoint = UnitGetPosition(UnitLastCreated());
+ UnitSetPosition(UnitLastCreated(), PointWithOffsetPolar(UnitGetPosition(UnitLastCreated()), 8.0, AngleBetweenPoints(PointFromId(1084), lv_tempPoint)), false);
+ UnitIssueOrder(UnitLastCreated(), OrderTargetingPoint(AbilityCommand("move", 0), lv_tempPoint), c_orderQueueReplace);
+ libNtve_gf_UnitCreateFacingPoint(1, "Roach", 0, gv_PLAYER_01_USER, RegionRandomPoint(RegionFromId(28)), PointFromId(1084));
+ lv_tempPoint = UnitGetPosition(UnitLastCreated());
+ UnitSetPosition(UnitLastCreated(), PointWithOffsetPolar(UnitGetPosition(UnitLastCreated()), 8.0, AngleBetweenPoints(PointFromId(1084), lv_tempPoint)), false);
+ UnitIssueOrder(UnitLastCreated(), OrderTargetingPoint(AbilityCommand("move", 0), lv_tempPoint), c_orderQueueReplace);
+ }
+ for (autoC6990152_i = 1; autoC6990152_i <= autoC6990152_n; autoC6990152_i += 1) {
+ libNtve_gf_UnitCreateFacingPoint(1, "Mutalisk", 0, gv_PLAYER_01_USER, RegionRandomPoint(RegionFromId(28)), PointFromId(1084));
+ lv_tempPoint = UnitGetPosition(UnitLastCreated());
+ UnitSetPosition(UnitLastCreated(), PointWithOffsetPolar(UnitGetPosition(UnitLastCreated()), 8.0, AngleBetweenPoints(PointFromId(1084), lv_tempPoint)), false);
+ UnitIssueOrder(UnitLastCreated(), OrderTargetingPoint(AbilityCommand("move", 0), lv_tempPoint), c_orderQueueReplace);
+ libNtve_gf_UnitCreateFacingPoint(1, "Ultralisk", 0, gv_PLAYER_01_USER, RegionRandomPoint(RegionFromId(28)), PointFromId(1084));
+ lv_tempPoint = UnitGetPosition(UnitLastCreated());
+ UnitSetPosition(UnitLastCreated(), PointWithOffsetPolar(UnitGetPosition(UnitLastCreated()), 8.0, AngleBetweenPoints(PointFromId(1084), lv_tempPoint)), false);
+ UnitIssueOrder(UnitLastCreated(), OrderTargetingPoint(AbilityCommand("move", 0), lv_tempPoint), c_orderQueueReplace);
+ }
+ libSwaC_gf_CreateHero2(PointFromId(1083), gv_PLAYER_01_USER, libSwaC_ge_HeroUnit_Kerrigan, PointGetFacing(PointFromId(1083)), 0, libSwaC_ge_KerriganCreatePurpose_Cinematic);
+ gv_victoryKerrigan = UnitLastCreated();
+ UnitBehaviorAdd(gv_victoryKerrigan, "KerriganWalk", gv_victoryKerrigan, 1);
+ UnitIssueOrder(gv_victoryKerrigan, OrderTargetingPoint(AbilityCommand("move", 0), PointFromId(1084)), c_orderQueueReplace);
+ Wait(2.0, c_timeGame);
+ autoDCCDEC43_g = UnitGroup(null, c_playerAny, RegionCircle(PointFromId(1084), 4.0), UnitFilter(0, 0, (1 << c_targetFilterMissile), 0), 0);
+ autoDCCDEC43_u = UnitGroupCount(autoDCCDEC43_g, c_unitCountAll);
+ for (;; autoDCCDEC43_u -= 1) {
+ autoDCCDEC43_var = UnitGroupUnitFromEnd(autoDCCDEC43_g, autoDCCDEC43_u);
+ if (autoDCCDEC43_var == null) { break; }
+ UnitBehaviorAddPlayer(autoDCCDEC43_var, "SuppressCollision", 0, 1);
+ }
+ while (!((libNtve_gf_UnitInRegion(gv_victoryKerrigan, RegionCircle(PointFromId(1084), 0.5)) == true))) {
+ Wait(0.1, c_timeGame);
+ }
+ UnitRemove(gv_victoryKerrigan);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_VictoryZerg_Init () {
+ gt_VictoryZerg = TriggerCreate("gt_VictoryZerg_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Archipelago Initialization
+//--------------------------------------------------------------------------------------------------
+bool gt_ArchipelagoInitialization_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ unitgroup lv_noRemoval;
+ int lv_difficulty;
+
+ // Automatic Variable Declarations
+ playergroup autoC731CD27_g;
+ int autoC731CD27_var;
+
+ // Variable Initialization
+ lv_noRemoval = UnitGroupEmpty();
+ lv_difficulty = 2;
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ lv_difficulty = libC6542F50_gf_APSetDifficulty(StringWord(EventChatMessage(false), 2), UnitGroupFromId(1), UnitGroupFromId(2), UnitGroupFromId(4), UnitGroupFromId(3));
+ autoC731CD27_g = PlayerGroupAll();
+ autoC731CD27_var = -1;
+ while (true) {
+ autoC731CD27_var = PlayerGroupNextPlayer(autoC731CD27_g, autoC731CD27_var);
+ if (autoC731CD27_var < 0) { break; }
+ PlayerSetDifficulty(autoC731CD27_var, lv_difficulty);
+ }
+ TriggerExecute(libC6542F50_gt_APPreInitMap, true, true);
+ TriggerExecute(gt_Initialization, true, true);
+ libC6542F50_gf_initchatbox(c_anchorTopRight, 500, 350, 0, 50);
+ libC6542F50_gf_showhidechatbox(1, true);
+ TechTreeRestrictionsEnable(1, true);
+ TriggerExecute(libC6542F50_gt_APClearTech, true, false);
+ libC6542F50_gf_APOptions(StringWord(EventChatMessage(false), 12));
+ libC6542F50_gf_APUnlockUnits(StringWord(EventChatMessage(false), 3), "");
+ libC6542F50_gf_APUnlockMutations(StringWord(EventChatMessage(false), 5), "");
+ libC6542F50_gf_APUnlockStrains(StringWord(EventChatMessage(false), 6), "");
+ libC6542F50_gf_APUnlockUpgrades(StringWord(EventChatMessage(false), 4), "");
+ libC6542F50_gv_aPSkipKerriganActives = false;
+ libC6542F50_gf_APSetColors(StringWord(EventChatMessage(false), 13), StringWord(EventChatMessage(false), 14));
+ libC6542F50_gf_APPrimalKerriganTech(true);
+ libC6542F50_gf_APSetKerriganLevel("0", "");
+ libC6542F50_gv_aPKerriganBaseLevel = UnitGetPropertyInt(gv_kerrigan, c_unitPropXP, c_unitPropCurrent);
+ libNtve_gf_SetUpgradeLevelForPlayer(1, "KerriganPostZerusSounds", 1);
+ libNtve_gf_SetUpgradeLevelForPlayer(1, "KerriganInfestedCosmetic", 1);
+ libC6542F50_gf_APSetKerriganLevel(StringWord(EventChatMessage(false), 8), "");
+ libC6542F50_gf_APUnlockKerriganAbilities(StringWord(EventChatMessage(false), 7), libC6542F50_gv_aPSkipKerriganActives, "");
+ libSwaC_gf_StartingWorkersAutoHarvest(RegionFromId(51), RegionFromId(52));
+ gf_HideKerrigan();
+ libC6542F50_gf_GiveMineralsAndVespene(StringToInt(StringWord(EventChatMessage(false), 9)), StringToInt(StringWord(EventChatMessage(false), 10)), "");
+ libC6542F50_gf_APBonusSupply(StringToInt(StringWord(EventChatMessage(false), 11)));
+ TriggerExecute(libC6542F50_gt_APSetInitFinished, true, true);
+ libC6542F50_gf_APArchipelagoSendData(0);
+ TriggerEnable(TriggerGetCurrent(), false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ArchipelagoInitialization_Init () {
+ gt_ArchipelagoInitialization = TriggerCreate("gt_ArchipelagoInitialization_Func");
+ TriggerAddEventChatMessage(gt_ArchipelagoInitialization, c_playerAny, "ArchipelagoLoad", false);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Arch Init
+//--------------------------------------------------------------------------------------------------
+bool gt_ArchInit_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerExecute(gt_Init02Players, true, false);
+ TriggerExecute(gt_Init03Units, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ArchInit_Init () {
+ gt_ArchInit = TriggerCreate("gt_ArchInit_Func");
+ TriggerAddEventMapInit(gt_ArchInit);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Set Mineral Count
+//--------------------------------------------------------------------------------------------------
+bool gt_SetMineralCount_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ if ((libNtve_gf_DifficultyValueInt(0, 0, 1, 1) == 1)) {
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_SetMineralCount_Init () {
+ gt_SetMineralCount = TriggerCreate("gt_SetMineralCount_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger Initialization
+//--------------------------------------------------------------------------------------------------
+void InitTriggers () {
+ gt_Initialization_Init();
+ gt_Init01Technology_Init();
+ gt_Init02Players_Init();
+ gt_Init03Units_Init();
+ gt_Init04MusicSound_Init();
+ gt_Init05Environment_Init();
+ gt_Init06Difficulties_Init();
+ gt_Init07Help_Init();
+ gt_PerformanceHandler_Init();
+ gt_PauseUnitsAgain_Init();
+ gt_ShowMapCheatUsed_Init();
+ gt_StartGameQ_Init();
+ gt_StartHarvesting_Init();
+ gt_EliteForceIntroQ_Init();
+ gt_TipEliteForcesQ_Init();
+ gt_HandleKerriganDeath_Init();
+ gt_KerriganIsKilledQ_Init();
+ gt_AugustgradGateIntrosQ_Init();
+ gt_AugustgradGateIntroProximity_Init();
+ gt_CreateAugustgradGatePings_Init();
+ gt_Lane1_Init();
+ gt_Lane1SpawnLoop_Init();
+ gt_Lane2_Init();
+ gt_Lane2SpawnLoop_Init();
+ gt_Lane3_Init();
+ gt_Lane3SpawnLoop_Init();
+ gt_LaneSpectacleStart_Init();
+ gt_LanePauseLoop_Init();
+ gt_SCVRepairScript_Init();
+ gt_Lane1ClearedQ_Init();
+ gt_Lane2ClearedQ_Init();
+ gt_Lane3ClearedQ_Init();
+ gt_ZagaraUpgrades_Init();
+ gt_CreateDominionPatrolRightSide_Init();
+ gt_CreateDominionPatrolLeftSide_Init();
+ gt_BridgeControl_Init();
+ gt_DominionLeft2Deactivate_Init();
+ gt_DominionRight1Deactivate_Init();
+ gt_DominionRight2Deactivate_Init();
+ gt_DominionMiddle1Deactivate_Init();
+ gt_DominionMiddle2Deactivate_Init();
+ gt_CreatePalacePing_Init();
+ gt_DominionRight1DestroyedQ_Init();
+ gt_DominionLeft2DestroyedQ_Init();
+ gt_PalaceGateat90_Init();
+ gt_TransmissionPalaceGateat90Q_Init();
+ gt_PalaceGateat50_Init();
+ gt_TransmissionPalaceGateat50Q_Init();
+ gt_HyperionTrigger_Init();
+ gt_HyperionIntroQ_Init();
+ gt_HyperionAttacked_Init();
+ gt_HyperionAttackedQ_Init();
+ gt_HyperionAttackedFirstTimeQ_Init();
+ gt_HyperionLowHealthQ_Init();
+ gt_HyperionSCVRespawn_Init();
+ gt_HyperionBigAttack1Q_Init();
+ gt_HyperionBigAttack2Q_Init();
+ gt_HyperionBigAttack3Q_Init();
+ gt_OdinDiesQ_Init();
+ gt_RaynorAttackPrepTiming_Init();
+ gt_RaynorAttackPrepQ_Init();
+ gt_TotalHyperionDamage_Init();
+ gt_DefeatBaseDead_Init();
+ gt_DefeatHyperionDies_Init();
+ gt_VictoryDestroyPalaceGateCompleted_Init();
+ gt_VictorySequence_Init();
+ gt_Victory_Init();
+ gt_Defeat_Init();
+ gt_VictoryCheat_Init();
+ gt_DefeatCheat_Init();
+ gt_PlayerAbortsMission_Init();
+ gt_AchievementHyperionDamageTaken_Init();
+ gt_AchievementTimedRunNH_Init();
+ gt_AchievementDestroytheOdinH_Init();
+ gt_LargestZergForce_Init();
+ gt_RaynorKills_Init();
+ gt_StartAI_Init();
+ gt_StartUpgradesNormal_Init();
+ gt_StartUpgradesHard_Init();
+ gt_AIGiveResources_Init();
+ gt_Player2SendsAIWave_Init();
+ gt_TipMissionHelpQ_Init();
+ gt_ObjectiveDestroyPalaceGateCreate_Init();
+ gt_ObjectiveDestroyPalaceGateComplete_Init();
+ gt_ObjectiveDestroyPalaceGateFailed_Init();
+ gt_ObjectiveHyperionMustSurviveCreate_Init();
+ gt_ObjectiveHyperionMustSurviveComplete_Init();
+ gt_ObjectiveHyperionMustSurviveFailed_Init();
+ gt_ObjectiveClearOuterLanesCreate_Init();
+ gt_ObjectiveClearOuterLanesUpdate_Init();
+ gt_ObjectiveClearOuterLanesComplete_Init();
+ gt_IntroQ_Init();
+ gt_IntroSetup_Init();
+ gt_IntroCinematic_Init();
+ gt_IntroCinematicEnd_Init();
+ gt_IntroCleanupNotSkipped_Init();
+ gt_IntroCleanupSkipped_Init();
+ gt_IntroMusic_Init();
+ gt_MidQ_Init();
+ gt_MidSetup_Init();
+ gt_MidCinematic_Init();
+ gt_MidCinematicEnd_Init();
+ gt_MidCleanup_Init();
+ gt_MidHyperionMovement_Init();
+ gt_MidMusic_Init();
+ gt_VictoryQ_Init();
+ gt_VictorySetup_Init();
+ gt_VictoryCinematic_Init();
+ gt_VictoryCinematicEnd_Init();
+ gt_VictoryCleanup_Init();
+ gt_VictoryZerg_Init();
+ gt_ArchipelagoInitialization_Init();
+ gt_ArchInit_Init();
+ gt_SetMineralCount_Init();
+}
+
+//--------------------------------------------------------------------------------------------------
+// Map Initialization
+//--------------------------------------------------------------------------------------------------
+void InitMap () {
+ InitLibs();
+ InitGlobals();
+ InitCustomAI();
+ InitTriggers();
+}
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Minimap.tga b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Minimap.tga
new file mode 100644
index 000000000..8757bd889
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Minimap.tga differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Objects b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Objects
new file mode 100644
index 000000000..b8b8f1fb1
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Objects
@@ -0,0 +1,11324 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Objects.version b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Objects.version
new file mode 100644
index 000000000..7cce1f38b
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Objects.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/PaintedPathingLayer b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/PaintedPathingLayer
new file mode 100644
index 000000000..bff91c1ce
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/PaintedPathingLayer differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Preload.xml b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Preload.xml
new file mode 100644
index 000000000..3aec83838
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Preload.xml
@@ -0,0 +1,262 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/PreloadAssetDB.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/PreloadAssetDB.txt
new file mode 100644
index 000000000..79d371c7f
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/PreloadAssetDB.txt
@@ -0,0 +1,46 @@
+[Abil]
+id=TrainKorhalMercenaries
+asset=Assets\Textures\WayPointLine.dds
+asset=Assets\UI\Feedback\WayPointConfirm\WayPointConfirm.m3
+Actor=TerrainMgr
+Alert=TrainComplete,TrainError
+Unit=DevilDog,DukesRevenge,DuskWing,HammerSecurity,HelsAngelFighter,MercHellion,MercMedic,MercReaper,SiegeBreaker,SpartanCompany,WarPig
+
+[Conversation]
+id=zCutscene_Zerg04
+Actor=TerrainMgr
+Character=DropShipAdjutant,KateLockwell,Kerrigan,Mengsk
+ConversationState=Cameras,Characters,MissionsCompleted,TemporaryStoryStates
+Sound=##id##_DropShipAdjutant_011,##id##_DropShipAdjutant_013,##id##_DropShipAdjutant_014,##id##_DropShipAdjutant_020,##id##_KateLockwell_004,##id##_KateLockwell_015,##id##_KateLockwell_019,##id##_Kerrigan_001,##id##_Kerrigan_002,##id##_Kerrigan_003,##id##_Kerrigan_010,##id##_Kerrigan_012,##id##_Kerrigan_018,##id##_Kerrigan_021,##id##_Kerrigan_022,##id##_Kerrigan_023,##id##_Kerrigan_024,##id##_Kerrigan_025,##id##_Kerrigan_026,##id##_Mengsk_005,##id##_Mengsk_006,##id##_Mengsk_007,##id##_Mengsk_008,##id##_Mengsk_016,##id##_Mengsk_017,##id##_Mengsk_027,##id##_Mengsk_028
+User=Character,KerriganStates,Maps,MissionObjective,Planets
+
+[Sound]
+id=IntroMusic
+Actor=TerrainMgr
+id=VictoryMusic
+Actor=TerrainMgr
+
+[Soundtrack]
+id=IntroMusic
+Actor=TerrainMgr
+Sound
+id=VictoryMusic
+Actor=TerrainMgr
+Sound
+
+[Terrain]
+id=KorhalCity
+path=Assets\Textures\.dds
+asset=Creep,CreepEdgeNormal,CreepHeight,CreepNoise,CreepSpecularMask
+Actor=TerrainMgr
+Light
+Model=##id##Skybox
+Soundtrack=Ambience_Korhal
+TerrainTex=##id##1,##id##2,##id##3,##id##4,##id##5,##id##6,##id##7,##id##8
+
+[Unit]
+id=HyperionKorhal
+Abil=##id##Regen,##id##RegenOff,##id##Yamato,attack,move,stop
+Actor=BlipVisual,ConfirmationLocalAirAttack,ConfirmationLocalGroundAttack,ConfirmationSyncAirAttack,ConfirmationSyncGroundAttack,ConstructionRefundTextAlly,ConstructionRefundTextEnemy,FlyerShadow,GroundShadow,##id##,MediumTastyCorpseBlip,SalvagedTextAlly,SalvagedTextEnemy,ShieldImpact,TerrainMgr,UnitPointsTextAll
+Button=Attack,##id##Regen,##id##RegenOff,##id##Yamato,Move,MoveHoldPosition,MovePatrol,Stop
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Regions b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Regions
new file mode 100644
index 000000000..96581f83a
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Regions
@@ -0,0 +1,640 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Regions.version b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Regions.version
new file mode 100644
index 000000000..9330e8b94
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Regions.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Triggers b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Triggers
new file mode 100644
index 000000000..504d938f7
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Triggers
@@ -0,0 +1,47805 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PLAYER_01_USER
+
+
+
+
+
+
+
+ 1
+
+
+
+ PLAYER_02_DOMINION_RED
+
+
+
+
+
+
+
+ 2
+
+
+
+ PLAYER_03_DOMINION_BLUE
+
+
+
+
+
+
+
+ 3
+
+
+
+ PLAYER_04_DOMINION_PURPLE
+
+
+
+
+
+
+
+ 4
+
+
+
+ PLAYER_05_DOMINION_TEAL
+
+
+
+
+
+
+
+ 5
+
+
+
+ PLAYER_07_DOMINION_GREEN22
+
+
+
+
+
+
+
+ 9
+
+
+
+ PLAYER_07_DOMINION_GREEN23
+
+
+
+
+
+
+
+ 10
+
+
+
+ pLAYER_08_IZSHA
+
+
+
+
+
+
+
+ 14
+
+
+
+
+ ---------------
+
+
+
+ kerrigan
+
+
+
+
+
+
+
+
+
+
+ ---------------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ gameOver
+
+
+
+
+
+
+ false
+
+
+
+ inCinematic
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ------------------------------------------------------------
+
+
+
+
+ Template Version 2.07
+
+
+
+
+ ------------------------------------------------------------
+
+
+
+
+ Initialization
+
+
+
+
+
+
+
+
+ ZKorhal3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Start Intro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tech restrictions are mainly handled by the "Load campaign data" action.
+ You can apply further tech restrictions here if needed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Disable abilities
+
+
+
+
+ Raynor Technologies
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ ShieldWall
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ AuxiliaryMedBots
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ AresClassWeaponsSystem
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ MultilockTargetingSystems
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ SiegeTech
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ YamatoCannon
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ FireSuppressionSystems
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ NeosteelFrame
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Alliance settings
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Set up Dominion Player Alliances
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Initial resources
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 350
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 250
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BarracksTechReactor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FactoryTechReactor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ StarportTechReactor
+
+
+
+
+
+ Supply
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Initialize unit variables and prepare units (burrow, hold position, etc)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 45.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+ Set up Hatchery Rally
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Start the player units with energy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 50.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Queen
+
+
+
+
+
+ Start Dominion units with energy.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+ Bridge Control Color
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is being done to fix a bug with creep tumors travelling over the bridge.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ExtendingBridgeNEWide8
+
+
+
+
+
+
+
+
+
+ Bunkers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Bunker
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+ MengskMarine
+
+
+
+
+
+ Dominion Nuke Ammo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ ArmSiloWithNuke
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+ ArmSiloWithNuke
+
+
+
+
+ Hyperion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gates
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Palace Turrets
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KorhalPalaceTurretLeft
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ KorhalPalaceTurretRight
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zagara Nydus Worms
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GreaterNydusWorm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03MusicMain
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 08:00:00
+
+
+
+
+ Weather Effects
+
+
+
+
+ Fog
+
+
+
+
+ Initial Visibility
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Palace Life per difficulty
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3000.0
+
+
+
+
+ 3000.0
+
+
+
+
+ 5000.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100.0
+
+
+
+
+ Game difficulty-specific initialization
+
+
+
+
+ Dominion Upgrades
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Upgrades for all difficulties
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ CombatShield
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ PunisherGrenades
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ SiegeTech
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ AresClassWeaponsSystemViking
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ AresClassWeaponsSystem
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ HailstormMissilePods
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ NeoSteelFrame
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ ShrikeTurret
+
+
+
+
+
+ Do not allow Barrage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OdinBarrage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Start at 1/1 and try to get to 3/2 by the end of the mission
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranInfantryWeaponsLevel1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranInfantryArmorsLevel1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranVehicleWeaponsLevel1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranVehicleArmorsLevel1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranShipWeaponsLevel1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranShipArmorsLevel1
+
+
+
+
+
+ Unit Upgrades
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ ClusterWarheads
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ MedivacRapidDeployment
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ GhostMoebiusReactor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ DualFusionWelders
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ FireSuppressionSystems
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ HiSecAutoTracking
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create all hints at map init.
+
+
+
+
+
+
+
+
+ Korhal03 Singular Tip
+
+
+
+
+
+
+
+
+
+
+
+ SCV
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ghost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Medivac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Raven
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ScienceVessel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WarHound
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskMarauder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskThor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskGoliath
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskReaper
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskMedic
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskBanshee
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskHellion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskBC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskFirebat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskDiamondback
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskSiegeTank
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskVikingFighter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskMarine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Bunker
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MissileTurret
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PlanetaryFortress
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Odin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+ PsiDisruptor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ performance
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ Performance Improve
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Odin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Factory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Barracks
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Starport
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BarracksReactor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FactoryTechLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ StarportTechLab
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ BarracksTechReactor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FactoryTechReactor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ StarportTechReactor
+
+
+
+
+
+ Check to unpause
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+ 0.25
+
+
+
+
+
+
+
+
+
+
+
+
+ Pause the units after the cinematic has unpaused them
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Run the triggers to start the Spawning (since the player can see it now)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Stop the Pause/Hide Handler trigger, and unpause the lanes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+ AIDiamondback
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Semi-intelligent kiting
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4.0
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ If the Diamondback would be cornered, check points to the immediate left and right
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 45.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 45.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Both alternative ways are valid, move to a random location
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A way is bad, default to B
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1000
+
+
+
+
+
+
+
+
+
+
+
+
+ The B way is bad, default to A
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1000
+
+
+
+
+ It's possible that A and B are both bad, so diamondback goes to original point (and dies)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5.0
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 180.0
+
+
+
+
+ 9
+
+
+
+
+
+
+
+
+
+
+ 240.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+ Trigger
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Achievement Timer
+
+
+
+
+
+
+
+
+
+
+
+ 1500.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Do initial gameplay stuff, like objective messages and hints.
+
+
+
+
+
+
+
+
+
+ 3.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 110.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00040
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00008
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00020
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00051
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Elite Forces
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00031
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+ objectiveRescueBrood2222
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 99.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Repair
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "Spell"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+ 100.0
+
+
+
+
+ 0.0
+
+
+
+
+ NydusWorm_Unload
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+ This is called by the AI Editor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00002
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00003
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden,Summoned
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Force the Units to Spawn and Assault during this reveal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+ Create Ping
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8.0
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ Create Ping
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8.0
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ Create Ping
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 15
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Baneling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 40
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zergling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 15
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hydralisk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 60.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Baneling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hydralisk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 6
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zergling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Baneling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hydralisk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 6
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zergling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 6
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zergling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 6
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zergling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 40
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InfestedTerranCampaign
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 15
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InfestedTerranCampaign
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 12
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InfestedAbomination
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 60.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InfestedAbomination
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 3
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InfestedTerranCampaign
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InfestedAbomination
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 3
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InfestedTerranCampaign
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 3
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InfestedTerranCampaign
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 3
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InfestedTerranCampaign
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 3
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ InfestedTerranCampaign
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 25
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PrimalZergling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 10
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PrimalHydralisk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 6
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PrimalUltralisk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 6
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PrimalFlyer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 60.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PrimalHydralisk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 4
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PrimalZergling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PrimalHydralisk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 4
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PrimalZergling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 4
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PrimalZergling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 4
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PrimalZergling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden,Summoned
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hidden;Missile,Dead
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hidden;Missile,Dead
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hidden;Missile,Dead
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Once the Bonus Objective is complete these units will always spawn
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03Objective02
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ If the Spawn Loop Trigger is active and the player is in the area => Spawn Units for the 'spectacle'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SCV
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SCV
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SCV
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+ Gate 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 99.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ Gate 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 99.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ Gate 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 99.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00009
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00010
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00011
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00149
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00013
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00148
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ ZergGroundArmorsLevel1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ ZergMeleeWeaponsLevel1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ ZergMissileWeaponsLevel1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ ZergGroundArmorsLevel2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ ZergMeleeWeaponsLevel2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ ZergMissileWeaponsLevel2
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ ZergGroundArmorsLevel3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ ZergMeleeWeaponsLevel3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ ZergMissileWeaponsLevel3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ First create the unit
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Add Behavior
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ PatrolSpeed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Add unit to unit Group
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Make unit not usable by the AI
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ MengskHellion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskHellion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskGoliath
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskGoliath
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 4
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ attack
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 12.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 4
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ attack
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 12.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ MengskHellion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskHellion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskGoliath
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskGoliath
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 4
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ attack
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 4
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ attack
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+ Power line explosion effects
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SetVisibility
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SetVisibility
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SetVisibility
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SetVisibility
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SetVisibility
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SetVisibility
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SetVisibility
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SetVisibility
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SetVisibility
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SetVisibility
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SetVisibility
+
+
+
+
+ Extend bridge
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ExtendingBridgeNEWide8Out
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00018
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00015
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00032
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 90.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+ 3
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 225.0
+
+
+
+
+ MengskMarine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 225.0
+
+
+
+
+ MengskMarine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+ 2
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 225.0
+
+
+
+
+ MengskMarine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00039
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 50.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+ 3
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 225.0
+
+
+
+
+ MengskMarauder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+ 3
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 225.0
+
+
+
+
+ MengskMarine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00028
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden,Summoned
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00115
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00116
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00146
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 50
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 25.0
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Trigger
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5.0
+
+
+
+
+ 255,255,0,0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00071
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00072
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00073
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Trigger
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5.0
+
+
+
+
+ 255,255,0,0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00118
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00117
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Trigger
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5.0
+
+
+
+
+ 255,255,0,0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00074
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00088
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SCV
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 315.0
+
+
+
+
+ SCV
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+ 625.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00075
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00070
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Minimap ping section
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ Skip if wave didn't gather
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+
+
+
+
+ Skip if player kills everything
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ Continue if wave starts to gather
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskVikingFighter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 9.0
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+ Continue if wave already sent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+ Create ping
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0,255,0,0
+
+
+
+
+ 0.0
+
+
+
+
+ 270.0
+
+
+
+
+
+
+
+
+
+ PingAlert
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ Skip if wave doesn't send
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 60
+
+
+
+
+ Skip if player kills everything
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ Continue if wave sent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+ Figure out units in wave
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskVikingFighter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskVikingAssault
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskBanshee
+
+
+
+
+
+ Skip out if wave is dead
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.2
+
+
+
+
+
+
+
+
+ Destroy ping if wave is dead or game is over
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ Update ping position
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+ 910.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00089
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00081
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Minimap ping section
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ Skip if wave didn't gather
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+
+
+
+
+ Skip if player kills everything
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ Continue if wave starts to gather
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskSiegeTank
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 9.0
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskSiegeTankSieged
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 9.0
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ Continue if wave already sent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+ Create ping
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0,255,0,0
+
+
+
+
+ 0.0
+
+
+
+
+ 270.0
+
+
+
+
+
+
+
+
+
+ PingAlert
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ Skip if wave doesn't send
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 60
+
+
+
+
+ Skip if player kills everything
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ Continue if wave sent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+ Figure out units in wave
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskSiegeTankSieged
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskSiegeTank
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskMarine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskBC
+
+
+
+
+
+ Skip out if wave is dead
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.2
+
+
+
+
+
+
+
+
+ Destroy ping if wave is dead or game is over
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ Update ping position
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+ 1350.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 9.0
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00094
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0,255,0,0
+
+
+
+
+ 0.0
+
+
+
+
+ 270.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PingBoss
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00095
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00083
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00093
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00150
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00154
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00153
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+ 270.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 300.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Trigger
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5.0
+
+
+
+
+ 255,0,0,255
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00122
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00123
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00120
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 20
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Odin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 48.0
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Every 1 game time second, check whether all buildings of players are killed
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreventDefeat;Dead,Hidden
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ Prevent new scenes, cinematics, etc. from being queued up.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wait a few seconds to let death anims and sounds play.
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ Prevent new scenes, cinematics, etc. from being queued up.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Wait a few seconds to let death anims and sounds play.
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+ Mission Victory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Achievements:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03_1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hyperion Damage Taken
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Speed Run (Hard Only)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mission Specific Statistic
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitsKilledCount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Victory and transition back to story mode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defeat and transition back to story mode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this is to fix an issue where the victory/defeat triggers can get tripped if a player aborts after a play again
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ This achievement is awarded if the mission is completed without the Hyperion taking damage (Any difficulty)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03_2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This achievement is awarded if the mission is completed within 25 minutes (Normal/Hard only)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03_3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mastery_Korhal3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitsActiveCount
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Start all AI scripts
+
+
+
+
+
+
+
+ Send computer attacking waves
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gather Points
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Limit Bully Rebuilding
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Diamondback AI
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskDiamondback
+
+
+
+
+
+ AIDiamondback
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskDiamondback
+
+
+
+
+
+ AIDiamondback
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskDiamondback
+
+
+
+
+
+ AIDiamondback
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskDiamondback
+
+
+
+
+
+ AIDiamondback
+
+
+
+
+
+
+
+
+ Start Big Attack Wave Transmissions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Start Mengsk Patrols
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Raynor attack waves have a very long travel time to the target. They will leave his base about 1 minute earlier than the arrival time in the AI editor.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+ 50.0
+
+
+
+
+ 50.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 600.0
+
+
+
+
+
+
+
+
+ 10m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranInfantryWeaponsLevel1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranVehicleWeaponsLevel1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranShipWeaponsLevel1
+
+
+
+
+
+
+
+
+
+
+ 300.0
+
+
+
+
+
+
+
+
+ 15m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranInfantryArmorsLevel1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranVehicleArmorsLevel1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranShipArmorsLevel1
+
+
+
+
+
+
+
+
+
+
+ 300.0
+
+
+
+
+
+
+
+
+ 20m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranInfantryWeaponsLevel2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranVehicleWeaponsLevel2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranShipWeaponsLevel2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 450.0
+
+
+
+
+
+
+
+
+ 7.5m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranInfantryWeaponsLevel2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranVehicleWeaponsLevel2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranShipWeaponsLevel2
+
+
+
+
+
+
+
+
+
+
+ 300.0
+
+
+
+
+
+
+
+
+ 12.5m
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranInfantryArmorsLevel2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranVehicleArmorsLevel2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranShipArmorsLevel2
+
+
+
+
+
+
+
+
+
+
+ 300.0
+
+
+
+
+
+
+
+
+ 17.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranInfantryWeaponsLevel3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranVehicleWeaponsLevel3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ TerranShipWeaponsLevel3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ objectiveDestroyDominionBase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03Objective01
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Update the objective
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03Objective01
+
+
+
+
+
+ Update the campaign progress for this objective. This must be done whenever an objective's progress changes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03Objective01
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Update the objective
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03Objective01
+
+
+
+
+
+
+
+
+
+
+
+ objectiveRescueBrood223
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create the objective
+
+
+
+
+
+
+
+
+ ZKorhal03Objective03
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create Hyperion Ping
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Update the objective
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03Objective03
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Update the campaign progress for this objective. This must be done whenever an objective's progress changes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03Objective03
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03Objective03
+
+
+
+
+
+
+
+
+
+
+ objectiveRescueBrood222
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create the objective
+
+
+
+
+
+
+
+
+ ZKorhal03Objective02
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03Objective02
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03Objective02
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+ Anniversary Achievement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ Anniversary_ZKorhal03
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1080.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Update the objective
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03Objective02
+
+
+
+
+
+ Update the campaign progress for this objective. This must be done whenever an objective's progress changes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03Objective02
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ cinematicHiddenUnits
+
+
+
+
+
+
+
+
+
+
+
+
+ cinematicTempUnits
+
+
+
+
+
+
+
+
+
+
+
+
+ cinematicCompleted
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Air,Structure,Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 63
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Larva
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ Fade out and start cinematic mode.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 0,0,0,0
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+ Disable XP gain, time of day, and ablities.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pause and hide units.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create units needed for this cinematic. All units that will be cleaned up when the cinematic is done should be added to CinematicTempUnits
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Initial Camera
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ~A~ + ~B~ + 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zBriefing_Korhal03|Line00008
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zBriefing_Korhal03|Line00019
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Setup
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ KerriganWalk
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CINEMATIC BEGINS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100.0
+
+
+
+
+ 0.0
+
+
+
+
+ Korhal03_CS_Open_Terran
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100.0
+
+
+
+
+ 0.0
+
+
+
+
+ Korhal03_CS_Open_Terran_Amb_UnderlayLoop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fade In
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+ 0,0,0,0
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zBriefing_Korhal03|Line00008
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zBriefing_Korhal03|Line00019
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100.0
+
+
+
+
+ 0.0
+
+
+
+
+ Korhal03_CS_Open_Zerg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ~A~ + ~B~ -1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zBriefing_Korhal03|Line00015
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zBriefing_Korhal03|Line00016
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zBriefing_Korhal03|Line00016
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Overlord
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 9.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 7.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zBriefing_Korhal03|Line00015
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zBriefing_Korhal03|Line00016
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ~A~ + ~B~
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zBriefing_Korhal03|Line00017
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zBriefing_Korhal03|Line00018
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zBriefing_Korhal03|Line00017
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zBriefing_Korhal03|Line00018
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ CINEMATIC ENDS
+
+
+
+
+
+
+
+
+ fadeDuration
+
+
+
+
+
+
+ 0
+
+
+
+
+ Fade Out (use a faster fade if the cinematic was canceled)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0,0,0,0
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ fadeDuration
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+ Clean up units created for this cinematic
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unpause and show units.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Enable XP gain, time of day, and abilities.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ KerriganWalk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset camera and visibility.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Start AI, let AI settle down
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Do other preparing here before fade in
+
+
+
+
+ End cinematic mode and fade in
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ fadeDuration
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+ Clean up units created for this cinematic
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unpause and show units.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ stop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Enable XP gain, time of day, and abilities.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ KerriganWalk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset camera and visibility.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Start AI, let AI settle down
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ End cinematic mode and fade in
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0,0,0,0
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03MissionIntro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 20.0
+
+
+
+
+ 0.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 20.0
+
+
+
+
+ 0.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 20.0
+
+
+
+
+ 0.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00103
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ Fade out and start cinematic mode.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0,0,0,0
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+ Save camera and unit selection.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Disable XP gain, time of day, and ablities.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pause and hide units.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Structure,Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Structure,Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Structure,Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create units needed for this cinematic. All units that will be cleaned up when the cinematic is done should be added to CinematicTempUnits
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Initial camera
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Setup
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CINEMATIC BEGINS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+ Fade In
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0,0,0,0
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 15.0
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 15.0
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 25.0
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100.0
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 18.0
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00062
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00065
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00063
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00104
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00066
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00100
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00101
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ CINEMATIC ENDS
+
+
+
+
+
+
+
+
+
+ fadeDuration
+
+
+
+
+
+
+ 0
+
+
+
+
+ Fade Out (use a faster fade if the cinematic was canceled)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0,0,0,0
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ fadeDuration
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03MusicAlt1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+ Clean up units created for this cinematic
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Barracks
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MengskMarine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unpause and show units.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "Spell E"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 315.0
+
+
+
+
+ WarPig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Enable XP gain, time of day, and abilities.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 135.0
+
+
+
+
+ SCV
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 135.0
+
+
+
+
+ SCV
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset selection, camera, and visibility.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+ Do other preparing here before fade in
+
+
+
+
+ End cinematic mode and fade in
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0,0,0,0
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hyperion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "Stand Work 01"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 315.0
+
+
+
+
+ SCV
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4.0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TerranBuild
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+ 100.0
+
+
+
+
+ 0.0
+
+
+
+
+ Event_Korhal03_BarracksPlacement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 315.0
+
+
+
+
+ SCV
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4.0
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TerranBuild
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+ 100.0
+
+
+
+
+ 0.0
+
+
+
+
+ Event_Korhal03_BarracksPlacement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4.0
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+ 100.0
+
+
+
+
+ 0.0
+
+
+
+
+ Event_Korhal3_RaynorBattlecruiserLand
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.5
+
+
+
+
+ 3.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 315.0
+
+
+
+
+ 3.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "Spell D"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "Spell E"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6.0
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03MusicCutscene01_BattleCruiser
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03MusicAlt1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ Fade out and start cinematic mode.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 0,0,0,0
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+ Disable selection, XP gain, time of day, and ablities.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pause and hide units.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PathingBlocker1x1
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreepTumor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreepTumorBurrowed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CreepTumorUsed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ Create units needed for this cinematic.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Initial Camera
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Setup
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100.0
+
+
+
+
+ 0.0
+
+
+
+
+ Korhal03_CS_EndWin_ZergHorde_Quad_Foley_OneShot
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ZKorhal03MusicCutscene02_MissionVictory
+
+
+
+
+
+ CINEMATIC BEGINS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+ Fade In
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+ 0,0,0,0
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ~A~ + 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00022
+
+
+
+
+
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100.0
+
+
+
+
+ 0.0
+
+
+
+
+ Korhal03_CS_EndWin_ZergHorde_Quad_Vox_Loop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00022
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100.0
+
+
+
+
+ 0.0
+
+
+
+
+ ZergArmy_Cheer_MassiveRoar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zMission_Korhal03|Line00087
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+ Extra wait for the Zerg Cheer Sound
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ CINEMATIC ENDS
+
+
+
+
+
+
+
+
+
+
+ fadeDuration
+
+
+
+
+
+
+ 0
+
+
+
+
+ Fade Out (use a faster fade if the cinematic was canceled)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0,0,0,0
+
+
+
+
+ 0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Next level
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Zergling
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hydralisk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Roach
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mutalisk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ultralisk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ KerriganWalk
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ move
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4.0
+
+
+
+
+ -;Missile
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ SuppressCollision
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.5
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ArchipelagoLoad
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 500
+
+
+
+
+ 350
+
+
+
+
+ 0
+
+
+
+
+ 50
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 13
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 14
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ KerriganPostZerusSounds
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ KerriganInfestedCosmetic
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 11
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+ 1
+
+
+
\ No newline at end of file
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Triggers.version b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Triggers.version
new file mode 100644
index 000000000..a5e70ae8e
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/Triggers.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ai05FE0989.galaxy b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ai05FE0989.galaxy
new file mode 100644
index 000000000..ae1436708
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ai05FE0989.galaxy
@@ -0,0 +1,740 @@
+//==================================================================================================
+//
+// Generated AI Script
+//
+// AI Name: P05 - Pink
+//
+//==================================================================================================
+include "TriggerLibs/natives"
+include "TriggerLibs/AI"
+include "TriggerLibs/Computer"
+
+//--------------------------------------------------------------------------------------------------
+// Globals
+//--------------------------------------------------------------------------------------------------
+point[17] ai05FE0989_defGather;
+string[17] ai05FE0989_customData;
+wave[17] ai05FE0989_lastWave;
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai05FE0989_wave2_enabled;
+wave[17] ai05FE0989_wave2_lastWave;
+trigger ai05FE0989_wave2_trigger = null;
+int ai05FE0989_wave2_runPlayer;
+playergroup ai05FE0989_wave2_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave2_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai05FE0989_wave2_enabled[init_i] = true;
+ ai05FE0989_wave2_lastWave[init_i] = null;
+ }
+
+ ai05FE0989_wave2_trigger = TriggerCreate("ai05FE0989_wave2_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave2_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai05FE0989_wave2_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai05FE0989_wave2_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai05FE0989_wave2_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai05FE0989_wave2_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai05FE0989_wave2_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai05FE0989_wave2_runFunc (bool c, bool a) {
+ int p = ai05FE0989_wave2_runPlayer;
+ playergroup target = ai05FE0989_wave2_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai05FE0989_wave2_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 1049; }
+ if (d == 2) { td = 1049; }
+ if (d == 3) { td = 1049; }
+ if (d == 4) { td = 1049; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai05FE0989_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 1049; }
+ if (d == 2) { ta = 1049; }
+ if (d == 3) { ta = 1049; }
+ if (d == 4) { ta = 1049; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai05FE0989_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(1165), true);
+
+ AIAttackWaveAddUnits(2, 8, "MengskReaper");
+ AIAttackWaveAddUnits(3, 8, "MengskReaper");
+ AIAttackWaveAddUnits(4, 12, "MengskReaper");
+ AIAttackWaveAddUnits(5, 12, "MengskReaper");
+
+ AIAttackWaveAddUnits(2, 2, "Medivac");
+ AIAttackWaveAddUnits(3, 2, "Medivac");
+ AIAttackWaveAddUnits(4, 3, "Medivac");
+ AIAttackWaveAddUnits(5, 3, "Medivac");
+
+ AIAttackWaveSend(p, ts, false);
+ ai05FE0989_wave2_lastWave[p] = WaveLastCreated();
+ ai05FE0989_lastWave[p] = ai05FE0989_wave2_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave2_run (int p, playergroup target, bool wait) {
+ ai05FE0989_wave2_runPlayer = p;
+ ai05FE0989_wave2_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai05FE0989_wave2_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai05FE0989_wave1_enabled;
+unitgroup[17] ai05FE0989_wave1_lastUnits;
+wave[17] ai05FE0989_wave1_lastWave;
+trigger ai05FE0989_wave1_trigger = null;
+int ai05FE0989_wave1_runPlayer;
+playergroup ai05FE0989_wave1_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave1_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai05FE0989_wave1_enabled[init_i] = true;
+ ai05FE0989_wave1_lastUnits[init_i] = null;
+ ai05FE0989_wave1_lastWave[init_i] = null;
+ }
+
+ ai05FE0989_wave1_trigger = TriggerCreate("ai05FE0989_wave1_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave1_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai05FE0989_wave1_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai05FE0989_wave1_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai05FE0989_wave1_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+unitgroup ai05FE0989_wave1_createdUnits (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai05FE0989_wave1_lastUnits[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai05FE0989_wave1_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai05FE0989_wave1_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai05FE0989_wave1_runFunc (bool c, bool a) {
+ int p = ai05FE0989_wave1_runPlayer;
+ playergroup target = ai05FE0989_wave1_runTarget;
+ int d;
+ point gatherPoint = null;
+ int createCount = 0;
+ point createPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai05FE0989_wave1_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 300; }
+ if (d == 2) { td = 300; }
+ if (d == 3) { td = 300; }
+ if (d == 4) { td = 300; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai05FE0989_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai05FE0989_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(1165), true);
+
+ createPoint = gatherPoint;
+
+ ai05FE0989_wave1_lastUnits[p] = UnitGroupEmpty();
+ createCount = 0;
+ if (d == 1) { createCount = 4; }
+ if (d == 2) { createCount = 4; }
+ if (d == 3) { createCount = 6; }
+ if (d == 4) { createCount = 6; }
+ if (createCount > 0) {
+ UnitCreate(createCount, "Ghost", 0, p, createPoint, PointGetFacing(createPoint));
+ AIAttackWaveUseGroup(p, UnitLastCreatedGroup());
+ UnitGroupAddUnitGroup(ai05FE0989_wave1_lastUnits[p], UnitLastCreatedGroup());
+ }
+
+ createCount = 0;
+ if (d == 1) { createCount = 1; }
+ if (d == 2) { createCount = 1; }
+ if (d == 3) { createCount = 2; }
+ if (d == 4) { createCount = 2; }
+ if (createCount > 0) {
+ UnitCreate(createCount, "Medivac", 0, p, createPoint, PointGetFacing(createPoint));
+ AIAttackWaveUseGroup(p, UnitLastCreatedGroup());
+ UnitGroupAddUnitGroup(ai05FE0989_wave1_lastUnits[p], UnitLastCreatedGroup());
+ }
+
+ AIAttackWaveSend(p, ts, false);
+ ai05FE0989_wave1_lastWave[p] = WaveLastCreated();
+ ai05FE0989_lastWave[p] = ai05FE0989_wave1_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave1_run (int p, playergroup target, bool wait) {
+ ai05FE0989_wave1_runPlayer = p;
+ ai05FE0989_wave1_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai05FE0989_wave1_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai05FE0989_wave3_enabled;
+wave[17] ai05FE0989_wave3_lastWave;
+trigger ai05FE0989_wave3_trigger = null;
+int ai05FE0989_wave3_runPlayer;
+playergroup ai05FE0989_wave3_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave3_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai05FE0989_wave3_enabled[init_i] = true;
+ ai05FE0989_wave3_lastWave[init_i] = null;
+ }
+
+ ai05FE0989_wave3_trigger = TriggerCreate("ai05FE0989_wave3_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave3_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai05FE0989_wave3_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai05FE0989_wave3_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai05FE0989_wave3_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai05FE0989_wave3_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai05FE0989_wave3_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai05FE0989_wave3_runFunc (bool c, bool a) {
+ int p = ai05FE0989_wave3_runPlayer;
+ playergroup target = ai05FE0989_wave3_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai05FE0989_wave3_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 300; }
+ if (d == 2) { td = 300; }
+ if (d == 3) { td = 300; }
+ if (d == 4) { td = 300; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai05FE0989_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai05FE0989_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(422), false);
+
+ AIAttackWaveAddUnits(2, 12, "MengskReaper");
+ AIAttackWaveAddUnits(3, 12, "MengskReaper");
+ AIAttackWaveAddUnits(4, 16, "MengskReaper");
+ AIAttackWaveAddUnits(5, 16, "MengskReaper");
+
+ AIAttackWaveAddUnits(2, 3, "Medivac");
+ AIAttackWaveAddUnits(3, 3, "Medivac");
+ AIAttackWaveAddUnits(4, 4, "Medivac");
+ AIAttackWaveAddUnits(5, 4, "Medivac");
+
+ AIAttackWaveSend(p, ts, false);
+ ai05FE0989_wave3_lastWave[p] = WaveLastCreated();
+ ai05FE0989_lastWave[p] = ai05FE0989_wave3_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave3_run (int p, playergroup target, bool wait) {
+ ai05FE0989_wave3_runPlayer = p;
+ ai05FE0989_wave3_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai05FE0989_wave3_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai05FE0989_wave4_enabled;
+unitgroup[17] ai05FE0989_wave4_lastUnits;
+wave[17] ai05FE0989_wave4_lastWave;
+trigger ai05FE0989_wave4_trigger = null;
+int ai05FE0989_wave4_runPlayer;
+playergroup ai05FE0989_wave4_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave4_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai05FE0989_wave4_enabled[init_i] = true;
+ ai05FE0989_wave4_lastUnits[init_i] = null;
+ ai05FE0989_wave4_lastWave[init_i] = null;
+ }
+
+ ai05FE0989_wave4_trigger = TriggerCreate("ai05FE0989_wave4_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave4_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai05FE0989_wave4_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai05FE0989_wave4_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai05FE0989_wave4_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+unitgroup ai05FE0989_wave4_createdUnits (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai05FE0989_wave4_lastUnits[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai05FE0989_wave4_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai05FE0989_wave4_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai05FE0989_wave4_runFunc (bool c, bool a) {
+ int p = ai05FE0989_wave4_runPlayer;
+ playergroup target = ai05FE0989_wave4_runTarget;
+ int d;
+ point gatherPoint = null;
+ int createCount = 0;
+ point createPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai05FE0989_wave4_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 300; }
+ if (d == 2) { td = 300; }
+ if (d == 3) { td = 300; }
+ if (d == 4) { td = 300; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai05FE0989_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai05FE0989_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(1165), true);
+
+ createPoint = gatherPoint;
+
+ ai05FE0989_wave4_lastUnits[p] = UnitGroupEmpty();
+ createCount = 0;
+ if (d == 1) { createCount = 4; }
+ if (d == 2) { createCount = 4; }
+ if (d == 3) { createCount = 6; }
+ if (d == 4) { createCount = 6; }
+ if (createCount > 0) {
+ UnitCreate(createCount, "Ghost", 0, p, createPoint, PointGetFacing(createPoint));
+ AIAttackWaveUseGroup(p, UnitLastCreatedGroup());
+ UnitGroupAddUnitGroup(ai05FE0989_wave4_lastUnits[p], UnitLastCreatedGroup());
+ }
+
+ createCount = 0;
+ if (d == 1) { createCount = 1; }
+ if (d == 2) { createCount = 1; }
+ if (d == 3) { createCount = 2; }
+ if (d == 4) { createCount = 2; }
+ if (createCount > 0) {
+ UnitCreate(createCount, "Medivac", 0, p, createPoint, PointGetFacing(createPoint));
+ AIAttackWaveUseGroup(p, UnitLastCreatedGroup());
+ UnitGroupAddUnitGroup(ai05FE0989_wave4_lastUnits[p], UnitLastCreatedGroup());
+ }
+
+ createCount = 0;
+ if (d == 1) { createCount = 1; }
+ if (d == 2) { createCount = 1; }
+ if (d == 3) { createCount = 2; }
+ if (d == 4) { createCount = 2; }
+ if (createCount > 0) {
+ UnitCreate(createCount, "Raven", 0, p, createPoint, PointGetFacing(createPoint));
+ AIAttackWaveUseGroup(p, UnitLastCreatedGroup());
+ UnitGroupAddUnitGroup(ai05FE0989_wave4_lastUnits[p], UnitLastCreatedGroup());
+ }
+
+ AIAttackWaveSend(p, ts, false);
+ ai05FE0989_wave4_lastWave[p] = WaveLastCreated();
+ ai05FE0989_lastWave[p] = ai05FE0989_wave4_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave4_run (int p, playergroup target, bool wait) {
+ ai05FE0989_wave4_runPlayer = p;
+ ai05FE0989_wave4_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai05FE0989_wave4_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave Wrappers
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave_enable (int w, int p, bool val) {
+ if (w == 2) { ai05FE0989_wave2_enable(p, val); }
+ if (w == 1) { ai05FE0989_wave1_enable(p, val); }
+ if (w == 3) { ai05FE0989_wave3_enable(p, val); }
+ if (w == 4) { ai05FE0989_wave4_enable(p, val); }
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai05FE0989_wave_isEnabled (int w, int p) {
+ if (w == 2) { return ai05FE0989_wave2_isEnabled(p); }
+ if (w == 1) { return ai05FE0989_wave1_isEnabled(p); }
+ if (w == 3) { return ai05FE0989_wave3_isEnabled(p); }
+ if (w == 4) { return ai05FE0989_wave4_isEnabled(p); }
+ return false;
+}
+
+//--------------------------------------------------------------------------------------------------
+unitgroup ai05FE0989_wave_createdUnits (int w, int p) {
+ if (w == 1) { return ai05FE0989_wave1_createdUnits(p); }
+ if (w == 4) { return ai05FE0989_wave4_createdUnits(p); }
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai05FE0989_wave_createdWave (int w, int p) {
+ if (w == 2) { return ai05FE0989_wave2_createdWave(p); }
+ if (w == 1) { return ai05FE0989_wave1_createdWave(p); }
+ if (w == 3) { return ai05FE0989_wave3_createdWave(p); }
+ if (w == 4) { return ai05FE0989_wave4_createdWave(p); }
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_wave_run (int w, int p, playergroup target, bool wait) {
+ if (w == 2) { ai05FE0989_wave2_run(p, target, wait); }
+ if (w == 1) { ai05FE0989_wave1_run(p, target, wait); }
+ if (w == 3) { ai05FE0989_wave3_run(p, target, wait); }
+ if (w == 4) { ai05FE0989_wave4_run(p, target, wait); }
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave Sequence
+//--------------------------------------------------------------------------------------------------
+trigger ai05FE0989_waves_trigger = null;
+int ai05FE0989_waves_runPlayer;
+playergroup ai05FE0989_waves_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_waves_init () {
+ ai05FE0989_waves_trigger = TriggerCreate("ai05FE0989_waves_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai05FE0989_waves_runFunc (bool c, bool a) {
+ int p = ai05FE0989_waves_runPlayer;
+ playergroup target = ai05FE0989_waves_runTarget;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+
+ ai05FE0989_wave2_run(p, target, true);
+ ai05FE0989_wave1_run(p, target, true);
+ ai05FE0989_wave3_run(p, target, true);
+ ai05FE0989_wave4_run(p, target, true);
+
+ while (true) {
+ ai05FE0989_wave3_run(p, target, true);
+ ai05FE0989_wave4_run(p, target, true);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_waves_run (int p, playergroup target) {
+ ai05FE0989_waves_runPlayer = p;
+ ai05FE0989_waves_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai05FE0989_waves_trigger, false, false);
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_waves_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+
+ ai05FE0989_wave2_enable(p, val);
+ ai05FE0989_wave1_enable(p, val);
+ ai05FE0989_wave3_enable(p, val);
+ ai05FE0989_wave4_enable(p, val);
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_waves_stop () {
+ TriggerStop(ai05FE0989_waves_trigger);
+
+ TriggerStop(ai05FE0989_wave2_trigger);
+ TriggerStop(ai05FE0989_wave1_trigger);
+ TriggerStop(ai05FE0989_wave3_trigger);
+ TriggerStop(ai05FE0989_wave4_trigger);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Configuration
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_setDefGather (int p, point val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai05FE0989_defGather[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+string ai05FE0989_getCustomData (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai05FE0989_customData[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai05FE0989_getLastWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai05FE0989_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+// Start
+//--------------------------------------------------------------------------------------------------
+bool ai05FE0989_initialized = false;
+
+//--------------------------------------------------------------------------------------------------
+void ai05FE0989_start (int p) {
+ int init_i;
+
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ if (!ai05FE0989_initialized) {
+ ai05FE0989_wave2_init();
+ ai05FE0989_wave1_init();
+ ai05FE0989_wave3_init();
+ ai05FE0989_wave4_init();
+ ai05FE0989_waves_init();
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai05FE0989_defGather[init_i] = PointFromId(783);
+ }
+
+ ai05FE0989_initialized = true;
+ }
+
+ AICampaignStart(p);
+}
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ai17BA421C.galaxy b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ai17BA421C.galaxy
new file mode 100644
index 000000000..36cb0e041
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ai17BA421C.galaxy
@@ -0,0 +1,898 @@
+//==================================================================================================
+//
+// Generated AI Script
+//
+// AI Name: P03 - Orange
+//
+//==================================================================================================
+include "TriggerLibs/natives"
+include "TriggerLibs/AI"
+include "TriggerLibs/Computer"
+
+//--------------------------------------------------------------------------------------------------
+// Globals
+//--------------------------------------------------------------------------------------------------
+point[17] ai17BA421C_defGather;
+string[17] ai17BA421C_customData;
+wave[17] ai17BA421C_lastWave;
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai17BA421C_wave6_enabled;
+wave[17] ai17BA421C_wave6_lastWave;
+trigger ai17BA421C_wave6_trigger = null;
+int ai17BA421C_wave6_runPlayer;
+playergroup ai17BA421C_wave6_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave6_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai17BA421C_wave6_enabled[init_i] = true;
+ ai17BA421C_wave6_lastWave[init_i] = null;
+ }
+
+ ai17BA421C_wave6_trigger = TriggerCreate("ai17BA421C_wave6_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave6_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai17BA421C_wave6_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_wave6_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai17BA421C_wave6_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai17BA421C_wave6_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai17BA421C_wave6_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_wave6_runFunc (bool c, bool a) {
+ int p = ai17BA421C_wave6_runPlayer;
+ playergroup target = ai17BA421C_wave6_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai17BA421C_wave6_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai17BA421C_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 60; }
+ if (d == 2) { ta = 60; }
+ if (d == 3) { ta = 60; }
+ if (d == 4) { ta = 60; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai17BA421C_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 4, "MengskMarine");
+ AIAttackWaveAddUnits(3, 4, "MengskMarine");
+ AIAttackWaveAddUnits(4, 6, "MengskMarine");
+ AIAttackWaveAddUnits(5, 6, "MengskMarine");
+
+ AIAttackWaveSend(p, ts, false);
+ ai17BA421C_wave6_lastWave[p] = WaveLastCreated();
+ ai17BA421C_lastWave[p] = ai17BA421C_wave6_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave6_run (int p, playergroup target, bool wait) {
+ ai17BA421C_wave6_runPlayer = p;
+ ai17BA421C_wave6_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai17BA421C_wave6_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai17BA421C_wave7_enabled;
+wave[17] ai17BA421C_wave7_lastWave;
+trigger ai17BA421C_wave7_trigger = null;
+int ai17BA421C_wave7_runPlayer;
+playergroup ai17BA421C_wave7_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave7_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai17BA421C_wave7_enabled[init_i] = true;
+ ai17BA421C_wave7_lastWave[init_i] = null;
+ }
+
+ ai17BA421C_wave7_trigger = TriggerCreate("ai17BA421C_wave7_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave7_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai17BA421C_wave7_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_wave7_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai17BA421C_wave7_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai17BA421C_wave7_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai17BA421C_wave7_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_wave7_runFunc (bool c, bool a) {
+ int p = ai17BA421C_wave7_runPlayer;
+ playergroup target = ai17BA421C_wave7_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai17BA421C_wave7_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai17BA421C_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 165; }
+ if (d == 2) { ta = 165; }
+ if (d == 3) { ta = 165; }
+ if (d == 4) { ta = 165; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai17BA421C_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 4, "MengskMarine");
+ AIAttackWaveAddUnits(3, 4, "MengskMarine");
+ AIAttackWaveAddUnits(4, 6, "MengskMarine");
+ AIAttackWaveAddUnits(5, 6, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskHellion");
+ AIAttackWaveAddUnits(3, 2, "MengskHellion");
+ AIAttackWaveAddUnits(4, 2, "MengskHellion");
+ AIAttackWaveAddUnits(5, 2, "MengskHellion");
+
+ AIAttackWaveSend(p, ts, false);
+ ai17BA421C_wave7_lastWave[p] = WaveLastCreated();
+ ai17BA421C_lastWave[p] = ai17BA421C_wave7_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave7_run (int p, playergroup target, bool wait) {
+ ai17BA421C_wave7_runPlayer = p;
+ ai17BA421C_wave7_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai17BA421C_wave7_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai17BA421C_wave1_enabled;
+wave[17] ai17BA421C_wave1_lastWave;
+trigger ai17BA421C_wave1_trigger = null;
+int ai17BA421C_wave1_runPlayer;
+playergroup ai17BA421C_wave1_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave1_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai17BA421C_wave1_enabled[init_i] = true;
+ ai17BA421C_wave1_lastWave[init_i] = null;
+ }
+
+ ai17BA421C_wave1_trigger = TriggerCreate("ai17BA421C_wave1_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave1_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai17BA421C_wave1_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_wave1_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai17BA421C_wave1_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai17BA421C_wave1_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai17BA421C_wave1_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_wave1_runFunc (bool c, bool a) {
+ int p = ai17BA421C_wave1_runPlayer;
+ playergroup target = ai17BA421C_wave1_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai17BA421C_wave1_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai17BA421C_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 135; }
+ if (d == 2) { ta = 135; }
+ if (d == 3) { ta = 135; }
+ if (d == 4) { ta = 135; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai17BA421C_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 4, "MengskMarine");
+ AIAttackWaveAddUnits(3, 4, "MengskMarine");
+ AIAttackWaveAddUnits(4, 6, "MengskMarine");
+ AIAttackWaveAddUnits(5, 6, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 1, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 1, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 1, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 1, "MengskMarauder");
+
+ AIAttackWaveSend(p, ts, false);
+ ai17BA421C_wave1_lastWave[p] = WaveLastCreated();
+ ai17BA421C_lastWave[p] = ai17BA421C_wave1_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave1_run (int p, playergroup target, bool wait) {
+ ai17BA421C_wave1_runPlayer = p;
+ ai17BA421C_wave1_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai17BA421C_wave1_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai17BA421C_wave2_enabled;
+wave[17] ai17BA421C_wave2_lastWave;
+trigger ai17BA421C_wave2_trigger = null;
+int ai17BA421C_wave2_runPlayer;
+playergroup ai17BA421C_wave2_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave2_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai17BA421C_wave2_enabled[init_i] = true;
+ ai17BA421C_wave2_lastWave[init_i] = null;
+ }
+
+ ai17BA421C_wave2_trigger = TriggerCreate("ai17BA421C_wave2_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave2_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai17BA421C_wave2_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_wave2_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai17BA421C_wave2_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai17BA421C_wave2_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai17BA421C_wave2_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_wave2_runFunc (bool c, bool a) {
+ int p = ai17BA421C_wave2_runPlayer;
+ playergroup target = ai17BA421C_wave2_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai17BA421C_wave2_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai17BA421C_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 150; }
+ if (d == 2) { ta = 150; }
+ if (d == 3) { ta = 150; }
+ if (d == 4) { ta = 150; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai17BA421C_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 6, "MengskMarine");
+ AIAttackWaveAddUnits(3, 6, "MengskMarine");
+ AIAttackWaveAddUnits(4, 8, "MengskMarine");
+ AIAttackWaveAddUnits(5, 8, "MengskMarine");
+
+ AIAttackWaveSend(p, ts, false);
+ ai17BA421C_wave2_lastWave[p] = WaveLastCreated();
+ ai17BA421C_lastWave[p] = ai17BA421C_wave2_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave2_run (int p, playergroup target, bool wait) {
+ ai17BA421C_wave2_runPlayer = p;
+ ai17BA421C_wave2_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai17BA421C_wave2_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai17BA421C_wave3_enabled;
+wave[17] ai17BA421C_wave3_lastWave;
+trigger ai17BA421C_wave3_trigger = null;
+int ai17BA421C_wave3_runPlayer;
+playergroup ai17BA421C_wave3_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave3_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai17BA421C_wave3_enabled[init_i] = true;
+ ai17BA421C_wave3_lastWave[init_i] = null;
+ }
+
+ ai17BA421C_wave3_trigger = TriggerCreate("ai17BA421C_wave3_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave3_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai17BA421C_wave3_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_wave3_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai17BA421C_wave3_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai17BA421C_wave3_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai17BA421C_wave3_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_wave3_runFunc (bool c, bool a) {
+ int p = ai17BA421C_wave3_runPlayer;
+ playergroup target = ai17BA421C_wave3_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai17BA421C_wave3_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai17BA421C_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 165; }
+ if (d == 2) { ta = 165; }
+ if (d == 3) { ta = 165; }
+ if (d == 4) { ta = 165; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai17BA421C_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 4, "MengskMarine");
+ AIAttackWaveAddUnits(3, 4, "MengskMarine");
+ AIAttackWaveAddUnits(4, 6, "MengskMarine");
+ AIAttackWaveAddUnits(5, 6, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskHellion");
+ AIAttackWaveAddUnits(3, 2, "MengskHellion");
+ AIAttackWaveAddUnits(4, 3, "MengskHellion");
+ AIAttackWaveAddUnits(5, 3, "MengskHellion");
+
+ AIAttackWaveSend(p, ts, false);
+ ai17BA421C_wave3_lastWave[p] = WaveLastCreated();
+ ai17BA421C_lastWave[p] = ai17BA421C_wave3_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave3_run (int p, playergroup target, bool wait) {
+ ai17BA421C_wave3_runPlayer = p;
+ ai17BA421C_wave3_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai17BA421C_wave3_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai17BA421C_wave4_enabled;
+wave[17] ai17BA421C_wave4_lastWave;
+trigger ai17BA421C_wave4_trigger = null;
+int ai17BA421C_wave4_runPlayer;
+playergroup ai17BA421C_wave4_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave4_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai17BA421C_wave4_enabled[init_i] = true;
+ ai17BA421C_wave4_lastWave[init_i] = null;
+ }
+
+ ai17BA421C_wave4_trigger = TriggerCreate("ai17BA421C_wave4_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave4_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai17BA421C_wave4_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_wave4_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai17BA421C_wave4_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai17BA421C_wave4_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai17BA421C_wave4_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_wave4_runFunc (bool c, bool a) {
+ int p = ai17BA421C_wave4_runPlayer;
+ playergroup target = ai17BA421C_wave4_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai17BA421C_wave4_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai17BA421C_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 135; }
+ if (d == 2) { ta = 135; }
+ if (d == 3) { ta = 135; }
+ if (d == 4) { ta = 135; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai17BA421C_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 4, "MengskMarine");
+ AIAttackWaveAddUnits(3, 4, "MengskMarine");
+ AIAttackWaveAddUnits(4, 6, "MengskMarine");
+ AIAttackWaveAddUnits(5, 6, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 1, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 1, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 2, "MengskMarauder");
+
+ AIAttackWaveSend(p, ts, false);
+ ai17BA421C_wave4_lastWave[p] = WaveLastCreated();
+ ai17BA421C_lastWave[p] = ai17BA421C_wave4_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave4_run (int p, playergroup target, bool wait) {
+ ai17BA421C_wave4_runPlayer = p;
+ ai17BA421C_wave4_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai17BA421C_wave4_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave Wrappers
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave_enable (int w, int p, bool val) {
+ if (w == 6) { ai17BA421C_wave6_enable(p, val); }
+ if (w == 7) { ai17BA421C_wave7_enable(p, val); }
+ if (w == 1) { ai17BA421C_wave1_enable(p, val); }
+ if (w == 2) { ai17BA421C_wave2_enable(p, val); }
+ if (w == 3) { ai17BA421C_wave3_enable(p, val); }
+ if (w == 4) { ai17BA421C_wave4_enable(p, val); }
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_wave_isEnabled (int w, int p) {
+ if (w == 6) { return ai17BA421C_wave6_isEnabled(p); }
+ if (w == 7) { return ai17BA421C_wave7_isEnabled(p); }
+ if (w == 1) { return ai17BA421C_wave1_isEnabled(p); }
+ if (w == 2) { return ai17BA421C_wave2_isEnabled(p); }
+ if (w == 3) { return ai17BA421C_wave3_isEnabled(p); }
+ if (w == 4) { return ai17BA421C_wave4_isEnabled(p); }
+ return false;
+}
+
+//--------------------------------------------------------------------------------------------------
+unitgroup ai17BA421C_wave_createdUnits (int w, int p) {
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai17BA421C_wave_createdWave (int w, int p) {
+ if (w == 6) { return ai17BA421C_wave6_createdWave(p); }
+ if (w == 7) { return ai17BA421C_wave7_createdWave(p); }
+ if (w == 1) { return ai17BA421C_wave1_createdWave(p); }
+ if (w == 2) { return ai17BA421C_wave2_createdWave(p); }
+ if (w == 3) { return ai17BA421C_wave3_createdWave(p); }
+ if (w == 4) { return ai17BA421C_wave4_createdWave(p); }
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_wave_run (int w, int p, playergroup target, bool wait) {
+ if (w == 6) { ai17BA421C_wave6_run(p, target, wait); }
+ if (w == 7) { ai17BA421C_wave7_run(p, target, wait); }
+ if (w == 1) { ai17BA421C_wave1_run(p, target, wait); }
+ if (w == 2) { ai17BA421C_wave2_run(p, target, wait); }
+ if (w == 3) { ai17BA421C_wave3_run(p, target, wait); }
+ if (w == 4) { ai17BA421C_wave4_run(p, target, wait); }
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave Sequence
+//--------------------------------------------------------------------------------------------------
+trigger ai17BA421C_waves_trigger = null;
+int ai17BA421C_waves_runPlayer;
+playergroup ai17BA421C_waves_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_waves_init () {
+ ai17BA421C_waves_trigger = TriggerCreate("ai17BA421C_waves_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_waves_runFunc (bool c, bool a) {
+ int p = ai17BA421C_waves_runPlayer;
+ playergroup target = ai17BA421C_waves_runTarget;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+
+ ai17BA421C_wave6_run(p, target, true);
+ ai17BA421C_wave7_run(p, target, true);
+ ai17BA421C_wave1_run(p, target, true);
+ ai17BA421C_wave2_run(p, target, true);
+ ai17BA421C_wave3_run(p, target, true);
+ ai17BA421C_wave4_run(p, target, true);
+
+ while (true) {
+ ai17BA421C_wave2_run(p, target, true);
+ ai17BA421C_wave3_run(p, target, true);
+ ai17BA421C_wave4_run(p, target, true);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_waves_run (int p, playergroup target) {
+ ai17BA421C_waves_runPlayer = p;
+ ai17BA421C_waves_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai17BA421C_waves_trigger, false, false);
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_waves_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+
+ ai17BA421C_wave6_enable(p, val);
+ ai17BA421C_wave7_enable(p, val);
+ ai17BA421C_wave1_enable(p, val);
+ ai17BA421C_wave2_enable(p, val);
+ ai17BA421C_wave3_enable(p, val);
+ ai17BA421C_wave4_enable(p, val);
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_waves_stop () {
+ TriggerStop(ai17BA421C_waves_trigger);
+
+ TriggerStop(ai17BA421C_wave6_trigger);
+ TriggerStop(ai17BA421C_wave7_trigger);
+ TriggerStop(ai17BA421C_wave1_trigger);
+ TriggerStop(ai17BA421C_wave2_trigger);
+ TriggerStop(ai17BA421C_wave3_trigger);
+ TriggerStop(ai17BA421C_wave4_trigger);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Configuration
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_setDefGather (int p, point val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai17BA421C_defGather[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+string ai17BA421C_getCustomData (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai17BA421C_customData[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai17BA421C_getLastWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai17BA421C_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+// Start
+//--------------------------------------------------------------------------------------------------
+bool ai17BA421C_initialized = false;
+
+//--------------------------------------------------------------------------------------------------
+void ai17BA421C_start (int p) {
+ int init_i;
+
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ if (!ai17BA421C_initialized) {
+ ai17BA421C_wave6_init();
+ ai17BA421C_wave7_init();
+ ai17BA421C_wave1_init();
+ ai17BA421C_wave2_init();
+ ai17BA421C_wave3_init();
+ ai17BA421C_wave4_init();
+ ai17BA421C_waves_init();
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai17BA421C_defGather[init_i] = PointFromId(0);
+ }
+
+ ai17BA421C_initialized = true;
+ }
+
+ AICampaignStart(p);
+}
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ai392DEDDF.galaxy b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ai392DEDDF.galaxy
new file mode 100644
index 000000000..0c0d3ea7f
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ai392DEDDF.galaxy
@@ -0,0 +1,255 @@
+//==================================================================================================
+//
+// Generated AI Script
+//
+// AI Name: P14 - Purple - Zagara
+//
+//==================================================================================================
+include "TriggerLibs/natives"
+include "TriggerLibs/AI"
+include "TriggerLibs/Computer"
+
+//--------------------------------------------------------------------------------------------------
+// Globals
+//--------------------------------------------------------------------------------------------------
+point[17] ai392DEDDF_defGather;
+string[17] ai392DEDDF_customData;
+wave[17] ai392DEDDF_lastWave;
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave: Augustgrad Gate Intro
+//--------------------------------------------------------------------------------------------------
+bool[17] ai392DEDDF_wave10_enabled;
+wave[17] ai392DEDDF_wave10_lastWave;
+trigger ai392DEDDF_wave10_trigger = null;
+int ai392DEDDF_wave10_runPlayer;
+playergroup ai392DEDDF_wave10_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai392DEDDF_wave10_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai392DEDDF_wave10_enabled[init_i] = true;
+ ai392DEDDF_wave10_lastWave[init_i] = null;
+ }
+
+ ai392DEDDF_wave10_trigger = TriggerCreate("ai392DEDDF_wave10_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai392DEDDF_wave10_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai392DEDDF_wave10_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai392DEDDF_wave10_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai392DEDDF_wave10_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai392DEDDF_wave10_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai392DEDDF_wave10_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai392DEDDF_wave10_runFunc (bool c, bool a) {
+ int p = ai392DEDDF_wave10_runPlayer;
+ playergroup target = ai392DEDDF_wave10_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai392DEDDF_wave10_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai392DEDDF_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 750; }
+ if (d == 2) { ta = 750; }
+ if (d == 3) { ta = 750; }
+ if (d == 4) { ta = 750; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai392DEDDF_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ Wait(ts, c_timeAI);
+ TriggerExecute(TriggerFind("gt_AugustgradGateIntrosQ_Func"), true, false);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai392DEDDF_wave10_run (int p, playergroup target, bool wait) {
+ ai392DEDDF_wave10_runPlayer = p;
+ ai392DEDDF_wave10_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai392DEDDF_wave10_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave Wrappers
+//--------------------------------------------------------------------------------------------------
+void ai392DEDDF_wave_enable (int w, int p, bool val) {
+ if (w == 10) { ai392DEDDF_wave10_enable(p, val); }
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai392DEDDF_wave_isEnabled (int w, int p) {
+ if (w == 10) { return ai392DEDDF_wave10_isEnabled(p); }
+ return false;
+}
+
+//--------------------------------------------------------------------------------------------------
+unitgroup ai392DEDDF_wave_createdUnits (int w, int p) {
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai392DEDDF_wave_createdWave (int w, int p) {
+ if (w == 10) { return ai392DEDDF_wave10_createdWave(p); }
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai392DEDDF_wave_run (int w, int p, playergroup target, bool wait) {
+ if (w == 10) { ai392DEDDF_wave10_run(p, target, wait); }
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave Sequence
+//--------------------------------------------------------------------------------------------------
+trigger ai392DEDDF_waves_trigger = null;
+int ai392DEDDF_waves_runPlayer;
+playergroup ai392DEDDF_waves_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai392DEDDF_waves_init () {
+ ai392DEDDF_waves_trigger = TriggerCreate("ai392DEDDF_waves_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai392DEDDF_waves_runFunc (bool c, bool a) {
+ int p = ai392DEDDF_waves_runPlayer;
+ playergroup target = ai392DEDDF_waves_runTarget;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+
+ ai392DEDDF_wave10_run(p, target, true);
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai392DEDDF_waves_run (int p, playergroup target) {
+ ai392DEDDF_waves_runPlayer = p;
+ ai392DEDDF_waves_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai392DEDDF_waves_trigger, false, false);
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai392DEDDF_waves_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+
+ ai392DEDDF_wave10_enable(p, val);
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai392DEDDF_waves_stop () {
+ TriggerStop(ai392DEDDF_waves_trigger);
+
+ TriggerStop(ai392DEDDF_wave10_trigger);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Configuration
+//--------------------------------------------------------------------------------------------------
+void ai392DEDDF_setDefGather (int p, point val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai392DEDDF_defGather[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+string ai392DEDDF_getCustomData (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai392DEDDF_customData[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai392DEDDF_getLastWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai392DEDDF_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+// Start
+//--------------------------------------------------------------------------------------------------
+bool ai392DEDDF_initialized = false;
+
+//--------------------------------------------------------------------------------------------------
+void ai392DEDDF_start (int p) {
+ int init_i;
+
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ if (!ai392DEDDF_initialized) {
+ ai392DEDDF_wave10_init();
+ ai392DEDDF_waves_init();
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai392DEDDF_defGather[init_i] = PointFromId(0);
+ }
+
+ ai392DEDDF_initialized = true;
+ }
+
+ AICampaignStart(p);
+}
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ai7AC59A6F.galaxy b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ai7AC59A6F.galaxy
new file mode 100644
index 000000000..7350ab4ef
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ai7AC59A6F.galaxy
@@ -0,0 +1,907 @@
+//==================================================================================================
+//
+// Generated AI Script
+//
+// AI Name: P04 - Yellow
+//
+//==================================================================================================
+include "TriggerLibs/natives"
+include "TriggerLibs/AI"
+include "TriggerLibs/Computer"
+
+//--------------------------------------------------------------------------------------------------
+// Globals
+//--------------------------------------------------------------------------------------------------
+point[17] ai7AC59A6F_defGather;
+string[17] ai7AC59A6F_customData;
+wave[17] ai7AC59A6F_lastWave;
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai7AC59A6F_wave8_enabled;
+wave[17] ai7AC59A6F_wave8_lastWave;
+trigger ai7AC59A6F_wave8_trigger = null;
+int ai7AC59A6F_wave8_runPlayer;
+playergroup ai7AC59A6F_wave8_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave8_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai7AC59A6F_wave8_enabled[init_i] = true;
+ ai7AC59A6F_wave8_lastWave[init_i] = null;
+ }
+
+ ai7AC59A6F_wave8_trigger = TriggerCreate("ai7AC59A6F_wave8_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave8_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai7AC59A6F_wave8_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_wave8_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai7AC59A6F_wave8_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai7AC59A6F_wave8_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai7AC59A6F_wave8_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_wave8_runFunc (bool c, bool a) {
+ int p = ai7AC59A6F_wave8_runPlayer;
+ playergroup target = ai7AC59A6F_wave8_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai7AC59A6F_wave8_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai7AC59A6F_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 75; }
+ if (d == 2) { ta = 75; }
+ if (d == 3) { ta = 75; }
+ if (d == 4) { ta = 75; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai7AC59A6F_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(422), false);
+
+ AIAttackWaveAddUnits(2, 4, "MengskMarine");
+ AIAttackWaveAddUnits(3, 4, "MengskMarine");
+ AIAttackWaveAddUnits(4, 6, "MengskMarine");
+ AIAttackWaveAddUnits(5, 6, "MengskMarine");
+
+ AIAttackWaveSend(p, ts, false);
+ ai7AC59A6F_wave8_lastWave[p] = WaveLastCreated();
+ ai7AC59A6F_lastWave[p] = ai7AC59A6F_wave8_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave8_run (int p, playergroup target, bool wait) {
+ ai7AC59A6F_wave8_runPlayer = p;
+ ai7AC59A6F_wave8_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai7AC59A6F_wave8_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai7AC59A6F_wave1_enabled;
+wave[17] ai7AC59A6F_wave1_lastWave;
+trigger ai7AC59A6F_wave1_trigger = null;
+int ai7AC59A6F_wave1_runPlayer;
+playergroup ai7AC59A6F_wave1_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave1_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai7AC59A6F_wave1_enabled[init_i] = true;
+ ai7AC59A6F_wave1_lastWave[init_i] = null;
+ }
+
+ ai7AC59A6F_wave1_trigger = TriggerCreate("ai7AC59A6F_wave1_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave1_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai7AC59A6F_wave1_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_wave1_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai7AC59A6F_wave1_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai7AC59A6F_wave1_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai7AC59A6F_wave1_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_wave1_runFunc (bool c, bool a) {
+ int p = ai7AC59A6F_wave1_runPlayer;
+ playergroup target = ai7AC59A6F_wave1_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai7AC59A6F_wave1_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai7AC59A6F_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 135; }
+ if (d == 2) { ta = 135; }
+ if (d == 3) { ta = 135; }
+ if (d == 4) { ta = 135; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai7AC59A6F_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(422), false);
+
+ AIAttackWaveAddUnits(2, 4, "MengskMarine");
+ AIAttackWaveAddUnits(3, 4, "MengskMarine");
+ AIAttackWaveAddUnits(4, 5, "MengskMarine");
+ AIAttackWaveAddUnits(5, 5, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 1, "WarHound");
+ AIAttackWaveAddUnits(3, 1, "WarHound");
+ AIAttackWaveAddUnits(4, 2, "WarHound");
+ AIAttackWaveAddUnits(5, 2, "WarHound");
+
+ AIAttackWaveSend(p, ts, false);
+ ai7AC59A6F_wave1_lastWave[p] = WaveLastCreated();
+ ai7AC59A6F_lastWave[p] = ai7AC59A6F_wave1_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave1_run (int p, playergroup target, bool wait) {
+ ai7AC59A6F_wave1_runPlayer = p;
+ ai7AC59A6F_wave1_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai7AC59A6F_wave1_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai7AC59A6F_wave2_enabled;
+wave[17] ai7AC59A6F_wave2_lastWave;
+trigger ai7AC59A6F_wave2_trigger = null;
+int ai7AC59A6F_wave2_runPlayer;
+playergroup ai7AC59A6F_wave2_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave2_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai7AC59A6F_wave2_enabled[init_i] = true;
+ ai7AC59A6F_wave2_lastWave[init_i] = null;
+ }
+
+ ai7AC59A6F_wave2_trigger = TriggerCreate("ai7AC59A6F_wave2_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave2_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai7AC59A6F_wave2_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_wave2_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai7AC59A6F_wave2_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai7AC59A6F_wave2_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai7AC59A6F_wave2_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_wave2_runFunc (bool c, bool a) {
+ int p = ai7AC59A6F_wave2_runPlayer;
+ playergroup target = ai7AC59A6F_wave2_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai7AC59A6F_wave2_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai7AC59A6F_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 165; }
+ if (d == 2) { ta = 165; }
+ if (d == 3) { ta = 165; }
+ if (d == 4) { ta = 165; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai7AC59A6F_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(422), false);
+
+ AIAttackWaveAddUnits(2, 3, "WarHound");
+ AIAttackWaveAddUnits(3, 3, "WarHound");
+ AIAttackWaveAddUnits(4, 4, "WarHound");
+ AIAttackWaveAddUnits(5, 4, "WarHound");
+
+ AIAttackWaveAddUnits(2, 2, "MengskVikingFighter");
+ AIAttackWaveAddUnits(3, 2, "MengskVikingFighter");
+ AIAttackWaveAddUnits(4, 3, "MengskVikingFighter");
+ AIAttackWaveAddUnits(5, 3, "MengskVikingFighter");
+
+ AIAttackWaveSend(p, ts, false);
+ ai7AC59A6F_wave2_lastWave[p] = WaveLastCreated();
+ ai7AC59A6F_lastWave[p] = ai7AC59A6F_wave2_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave2_run (int p, playergroup target, bool wait) {
+ ai7AC59A6F_wave2_runPlayer = p;
+ ai7AC59A6F_wave2_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai7AC59A6F_wave2_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai7AC59A6F_wave3_enabled;
+wave[17] ai7AC59A6F_wave3_lastWave;
+trigger ai7AC59A6F_wave3_trigger = null;
+int ai7AC59A6F_wave3_runPlayer;
+playergroup ai7AC59A6F_wave3_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave3_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai7AC59A6F_wave3_enabled[init_i] = true;
+ ai7AC59A6F_wave3_lastWave[init_i] = null;
+ }
+
+ ai7AC59A6F_wave3_trigger = TriggerCreate("ai7AC59A6F_wave3_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave3_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai7AC59A6F_wave3_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_wave3_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai7AC59A6F_wave3_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai7AC59A6F_wave3_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai7AC59A6F_wave3_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_wave3_runFunc (bool c, bool a) {
+ int p = ai7AC59A6F_wave3_runPlayer;
+ playergroup target = ai7AC59A6F_wave3_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai7AC59A6F_wave3_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai7AC59A6F_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 150; }
+ if (d == 2) { ta = 150; }
+ if (d == 3) { ta = 150; }
+ if (d == 4) { ta = 150; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai7AC59A6F_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(422), false);
+
+ AIAttackWaveAddUnits(2, 5, "MengskMarine");
+ AIAttackWaveAddUnits(3, 5, "MengskMarine");
+ AIAttackWaveAddUnits(4, 6, "MengskMarine");
+ AIAttackWaveAddUnits(5, 6, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 3, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 3, "MengskMarauder");
+
+ AIAttackWaveAddUnits(4, 2, "MengskMedic");
+ AIAttackWaveAddUnits(5, 2, "MengskMedic");
+
+ AIAttackWaveSend(p, ts, false);
+ ai7AC59A6F_wave3_lastWave[p] = WaveLastCreated();
+ ai7AC59A6F_lastWave[p] = ai7AC59A6F_wave3_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave3_run (int p, playergroup target, bool wait) {
+ ai7AC59A6F_wave3_runPlayer = p;
+ ai7AC59A6F_wave3_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai7AC59A6F_wave3_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai7AC59A6F_wave4_enabled;
+wave[17] ai7AC59A6F_wave4_lastWave;
+trigger ai7AC59A6F_wave4_trigger = null;
+int ai7AC59A6F_wave4_runPlayer;
+playergroup ai7AC59A6F_wave4_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave4_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai7AC59A6F_wave4_enabled[init_i] = true;
+ ai7AC59A6F_wave4_lastWave[init_i] = null;
+ }
+
+ ai7AC59A6F_wave4_trigger = TriggerCreate("ai7AC59A6F_wave4_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave4_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai7AC59A6F_wave4_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_wave4_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai7AC59A6F_wave4_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai7AC59A6F_wave4_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai7AC59A6F_wave4_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_wave4_runFunc (bool c, bool a) {
+ int p = ai7AC59A6F_wave4_runPlayer;
+ playergroup target = ai7AC59A6F_wave4_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai7AC59A6F_wave4_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai7AC59A6F_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 135; }
+ if (d == 2) { ta = 135; }
+ if (d == 3) { ta = 135; }
+ if (d == 4) { ta = 135; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai7AC59A6F_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(422), false);
+
+ AIAttackWaveAddUnits(2, 5, "MengskVikingFighter");
+ AIAttackWaveAddUnits(3, 5, "MengskVikingFighter");
+ AIAttackWaveAddUnits(4, 8, "MengskVikingFighter");
+ AIAttackWaveAddUnits(5, 8, "MengskVikingFighter");
+
+ AIAttackWaveSend(p, ts, false);
+ ai7AC59A6F_wave4_lastWave[p] = WaveLastCreated();
+ ai7AC59A6F_lastWave[p] = ai7AC59A6F_wave4_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave4_run (int p, playergroup target, bool wait) {
+ ai7AC59A6F_wave4_runPlayer = p;
+ ai7AC59A6F_wave4_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai7AC59A6F_wave4_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] ai7AC59A6F_wave5_enabled;
+wave[17] ai7AC59A6F_wave5_lastWave;
+trigger ai7AC59A6F_wave5_trigger = null;
+int ai7AC59A6F_wave5_runPlayer;
+playergroup ai7AC59A6F_wave5_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave5_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai7AC59A6F_wave5_enabled[init_i] = true;
+ ai7AC59A6F_wave5_lastWave[init_i] = null;
+ }
+
+ ai7AC59A6F_wave5_trigger = TriggerCreate("ai7AC59A6F_wave5_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave5_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai7AC59A6F_wave5_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_wave5_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return ai7AC59A6F_wave5_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai7AC59A6F_wave5_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai7AC59A6F_wave5_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_wave5_runFunc (bool c, bool a) {
+ int p = ai7AC59A6F_wave5_runPlayer;
+ playergroup target = ai7AC59A6F_wave5_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!ai7AC59A6F_wave5_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ ai7AC59A6F_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 165; }
+ if (d == 2) { ta = 165; }
+ if (d == 3) { ta = 165; }
+ if (d == 4) { ta = 165; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+
+ gatherPoint = ai7AC59A6F_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(422), false);
+
+ AIAttackWaveAddUnits(2, 2, "WarHound");
+ AIAttackWaveAddUnits(3, 2, "WarHound");
+ AIAttackWaveAddUnits(4, 3, "WarHound");
+ AIAttackWaveAddUnits(5, 3, "WarHound");
+
+ AIAttackWaveAddUnits(2, 2, "MengskVikingFighter");
+ AIAttackWaveAddUnits(3, 2, "MengskVikingFighter");
+ AIAttackWaveAddUnits(4, 3, "MengskVikingFighter");
+ AIAttackWaveAddUnits(5, 3, "MengskVikingFighter");
+
+ AIAttackWaveSend(p, ts, false);
+ ai7AC59A6F_wave5_lastWave[p] = WaveLastCreated();
+ ai7AC59A6F_lastWave[p] = ai7AC59A6F_wave5_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave5_run (int p, playergroup target, bool wait) {
+ ai7AC59A6F_wave5_runPlayer = p;
+ ai7AC59A6F_wave5_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai7AC59A6F_wave5_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave Wrappers
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave_enable (int w, int p, bool val) {
+ if (w == 8) { ai7AC59A6F_wave8_enable(p, val); }
+ if (w == 1) { ai7AC59A6F_wave1_enable(p, val); }
+ if (w == 2) { ai7AC59A6F_wave2_enable(p, val); }
+ if (w == 3) { ai7AC59A6F_wave3_enable(p, val); }
+ if (w == 4) { ai7AC59A6F_wave4_enable(p, val); }
+ if (w == 5) { ai7AC59A6F_wave5_enable(p, val); }
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_wave_isEnabled (int w, int p) {
+ if (w == 8) { return ai7AC59A6F_wave8_isEnabled(p); }
+ if (w == 1) { return ai7AC59A6F_wave1_isEnabled(p); }
+ if (w == 2) { return ai7AC59A6F_wave2_isEnabled(p); }
+ if (w == 3) { return ai7AC59A6F_wave3_isEnabled(p); }
+ if (w == 4) { return ai7AC59A6F_wave4_isEnabled(p); }
+ if (w == 5) { return ai7AC59A6F_wave5_isEnabled(p); }
+ return false;
+}
+
+//--------------------------------------------------------------------------------------------------
+unitgroup ai7AC59A6F_wave_createdUnits (int w, int p) {
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai7AC59A6F_wave_createdWave (int w, int p) {
+ if (w == 8) { return ai7AC59A6F_wave8_createdWave(p); }
+ if (w == 1) { return ai7AC59A6F_wave1_createdWave(p); }
+ if (w == 2) { return ai7AC59A6F_wave2_createdWave(p); }
+ if (w == 3) { return ai7AC59A6F_wave3_createdWave(p); }
+ if (w == 4) { return ai7AC59A6F_wave4_createdWave(p); }
+ if (w == 5) { return ai7AC59A6F_wave5_createdWave(p); }
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_wave_run (int w, int p, playergroup target, bool wait) {
+ if (w == 8) { ai7AC59A6F_wave8_run(p, target, wait); }
+ if (w == 1) { ai7AC59A6F_wave1_run(p, target, wait); }
+ if (w == 2) { ai7AC59A6F_wave2_run(p, target, wait); }
+ if (w == 3) { ai7AC59A6F_wave3_run(p, target, wait); }
+ if (w == 4) { ai7AC59A6F_wave4_run(p, target, wait); }
+ if (w == 5) { ai7AC59A6F_wave5_run(p, target, wait); }
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave Sequence
+//--------------------------------------------------------------------------------------------------
+trigger ai7AC59A6F_waves_trigger = null;
+int ai7AC59A6F_waves_runPlayer;
+playergroup ai7AC59A6F_waves_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_waves_init () {
+ ai7AC59A6F_waves_trigger = TriggerCreate("ai7AC59A6F_waves_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_waves_runFunc (bool c, bool a) {
+ int p = ai7AC59A6F_waves_runPlayer;
+ playergroup target = ai7AC59A6F_waves_runTarget;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+
+ ai7AC59A6F_wave8_run(p, target, true);
+ ai7AC59A6F_wave1_run(p, target, true);
+ ai7AC59A6F_wave2_run(p, target, true);
+ ai7AC59A6F_wave3_run(p, target, true);
+ ai7AC59A6F_wave4_run(p, target, true);
+ ai7AC59A6F_wave5_run(p, target, true);
+
+ while (true) {
+ ai7AC59A6F_wave3_run(p, target, true);
+ ai7AC59A6F_wave4_run(p, target, true);
+ ai7AC59A6F_wave5_run(p, target, true);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_waves_run (int p, playergroup target) {
+ ai7AC59A6F_waves_runPlayer = p;
+ ai7AC59A6F_waves_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(ai7AC59A6F_waves_trigger, false, false);
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_waves_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+
+ ai7AC59A6F_wave8_enable(p, val);
+ ai7AC59A6F_wave1_enable(p, val);
+ ai7AC59A6F_wave2_enable(p, val);
+ ai7AC59A6F_wave3_enable(p, val);
+ ai7AC59A6F_wave4_enable(p, val);
+ ai7AC59A6F_wave5_enable(p, val);
+}
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_waves_stop () {
+ TriggerStop(ai7AC59A6F_waves_trigger);
+
+ TriggerStop(ai7AC59A6F_wave8_trigger);
+ TriggerStop(ai7AC59A6F_wave1_trigger);
+ TriggerStop(ai7AC59A6F_wave2_trigger);
+ TriggerStop(ai7AC59A6F_wave3_trigger);
+ TriggerStop(ai7AC59A6F_wave4_trigger);
+ TriggerStop(ai7AC59A6F_wave5_trigger);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Configuration
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_setDefGather (int p, point val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ ai7AC59A6F_defGather[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+string ai7AC59A6F_getCustomData (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai7AC59A6F_customData[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave ai7AC59A6F_getLastWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return ai7AC59A6F_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+// Start
+//--------------------------------------------------------------------------------------------------
+bool ai7AC59A6F_initialized = false;
+
+//--------------------------------------------------------------------------------------------------
+void ai7AC59A6F_start (int p) {
+ int init_i;
+
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ if (!ai7AC59A6F_initialized) {
+ ai7AC59A6F_wave8_init();
+ ai7AC59A6F_wave1_init();
+ ai7AC59A6F_wave2_init();
+ ai7AC59A6F_wave3_init();
+ ai7AC59A6F_wave4_init();
+ ai7AC59A6F_wave5_init();
+ ai7AC59A6F_waves_init();
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ ai7AC59A6F_defGather[init_i] = PointFromId(0);
+ }
+
+ ai7AC59A6F_initialized = true;
+ }
+
+ AICampaignStart(p);
+}
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/aiAFDBFFDC.galaxy b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/aiAFDBFFDC.galaxy
new file mode 100644
index 000000000..9f9cc32f3
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/aiAFDBFFDC.galaxy
@@ -0,0 +1,859 @@
+//==================================================================================================
+//
+// Generated AI Script
+//
+// AI Name: P09 - Blue - Raynor
+//
+//==================================================================================================
+include "TriggerLibs/natives"
+include "TriggerLibs/AI"
+include "TriggerLibs/Computer"
+
+//--------------------------------------------------------------------------------------------------
+// Globals
+//--------------------------------------------------------------------------------------------------
+point[17] aiAFDBFFDC_defGather;
+string[17] aiAFDBFFDC_customData;
+wave[17] aiAFDBFFDC_lastWave;
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiAFDBFFDC_wave1_enabled;
+wave[17] aiAFDBFFDC_wave1_lastWave;
+trigger aiAFDBFFDC_wave1_trigger = null;
+int aiAFDBFFDC_wave1_runPlayer;
+playergroup aiAFDBFFDC_wave1_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave1_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiAFDBFFDC_wave1_enabled[init_i] = true;
+ aiAFDBFFDC_wave1_lastWave[init_i] = null;
+ }
+
+ aiAFDBFFDC_wave1_trigger = TriggerCreate("aiAFDBFFDC_wave1_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave1_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiAFDBFFDC_wave1_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiAFDBFFDC_wave1_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiAFDBFFDC_wave1_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiAFDBFFDC_wave1_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiAFDBFFDC_wave1_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiAFDBFFDC_wave1_runFunc (bool c, bool a) {
+ int p = aiAFDBFFDC_wave1_runPlayer;
+ playergroup target = aiAFDBFFDC_wave1_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiAFDBFFDC_wave1_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiAFDBFFDC_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 400; }
+ if (d == 2) { ta = 400; }
+ if (d == 3) { ta = 400; }
+ if (d == 4) { ta = 400; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2406));
+
+ gatherPoint = aiAFDBFFDC_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+ gatherPoint = PointFromId(627);
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(2405), false);
+
+ AIAttackWaveAddUnits(2, 12, "WarPig");
+ AIAttackWaveAddUnits(3, 12, "WarPig");
+ AIAttackWaveAddUnits(4, 12, "WarPig");
+ AIAttackWaveAddUnits(5, 12, "WarPig");
+
+ AIAttackWaveAddUnits(2, 1, "Medivac");
+ AIAttackWaveAddUnits(3, 1, "Medivac");
+ AIAttackWaveAddUnits(4, 1, "Medivac");
+ AIAttackWaveAddUnits(5, 1, "Medivac");
+
+ AIAttackWaveSend(p, ts, false);
+ aiAFDBFFDC_wave1_lastWave[p] = WaveLastCreated();
+ aiAFDBFFDC_lastWave[p] = aiAFDBFFDC_wave1_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave1_run (int p, playergroup target, bool wait) {
+ aiAFDBFFDC_wave1_runPlayer = p;
+ aiAFDBFFDC_wave1_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiAFDBFFDC_wave1_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiAFDBFFDC_wave3_enabled;
+wave[17] aiAFDBFFDC_wave3_lastWave;
+trigger aiAFDBFFDC_wave3_trigger = null;
+int aiAFDBFFDC_wave3_runPlayer;
+playergroup aiAFDBFFDC_wave3_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave3_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiAFDBFFDC_wave3_enabled[init_i] = true;
+ aiAFDBFFDC_wave3_lastWave[init_i] = null;
+ }
+
+ aiAFDBFFDC_wave3_trigger = TriggerCreate("aiAFDBFFDC_wave3_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave3_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiAFDBFFDC_wave3_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiAFDBFFDC_wave3_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiAFDBFFDC_wave3_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiAFDBFFDC_wave3_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiAFDBFFDC_wave3_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiAFDBFFDC_wave3_runFunc (bool c, bool a) {
+ int p = aiAFDBFFDC_wave3_runPlayer;
+ playergroup target = aiAFDBFFDC_wave3_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiAFDBFFDC_wave3_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiAFDBFFDC_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2406));
+
+ gatherPoint = aiAFDBFFDC_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+ gatherPoint = PointFromId(627);
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(2405), false);
+
+ AIAttackWaveAddUnits(2, 12, "WarPig");
+ AIAttackWaveAddUnits(3, 12, "WarPig");
+ AIAttackWaveAddUnits(4, 12, "WarPig");
+ AIAttackWaveAddUnits(5, 12, "WarPig");
+
+ AIAttackWaveAddUnits(2, 2, "Medivac");
+ AIAttackWaveAddUnits(3, 2, "Medivac");
+ AIAttackWaveAddUnits(4, 2, "Medivac");
+ AIAttackWaveAddUnits(5, 2, "Medivac");
+
+ AIAttackWaveAddUnits(2, 2, "SpartanCompany");
+ AIAttackWaveAddUnits(3, 2, "SpartanCompany");
+ AIAttackWaveAddUnits(4, 2, "SpartanCompany");
+ AIAttackWaveAddUnits(5, 2, "SpartanCompany");
+
+ AIAttackWaveAddUnits(2, 1, "Thor");
+ AIAttackWaveAddUnits(3, 1, "Thor");
+ AIAttackWaveAddUnits(4, 1, "Thor");
+ AIAttackWaveAddUnits(5, 1, "Thor");
+
+ AIAttackWaveSend(p, ts, false);
+ aiAFDBFFDC_wave3_lastWave[p] = WaveLastCreated();
+ aiAFDBFFDC_lastWave[p] = aiAFDBFFDC_wave3_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave3_run (int p, playergroup target, bool wait) {
+ aiAFDBFFDC_wave3_runPlayer = p;
+ aiAFDBFFDC_wave3_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiAFDBFFDC_wave3_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiAFDBFFDC_wave2_enabled;
+wave[17] aiAFDBFFDC_wave2_lastWave;
+trigger aiAFDBFFDC_wave2_trigger = null;
+int aiAFDBFFDC_wave2_runPlayer;
+playergroup aiAFDBFFDC_wave2_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave2_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiAFDBFFDC_wave2_enabled[init_i] = true;
+ aiAFDBFFDC_wave2_lastWave[init_i] = null;
+ }
+
+ aiAFDBFFDC_wave2_trigger = TriggerCreate("aiAFDBFFDC_wave2_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave2_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiAFDBFFDC_wave2_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiAFDBFFDC_wave2_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiAFDBFFDC_wave2_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiAFDBFFDC_wave2_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiAFDBFFDC_wave2_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiAFDBFFDC_wave2_runFunc (bool c, bool a) {
+ int p = aiAFDBFFDC_wave2_runPlayer;
+ playergroup target = aiAFDBFFDC_wave2_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiAFDBFFDC_wave2_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiAFDBFFDC_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2406));
+
+ gatherPoint = aiAFDBFFDC_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+ gatherPoint = PointFromId(627);
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(2405), false);
+
+ AIAttackWaveAddUnits(2, 12, "WarPig");
+ AIAttackWaveAddUnits(3, 12, "WarPig");
+ AIAttackWaveAddUnits(4, 12, "WarPig");
+ AIAttackWaveAddUnits(5, 12, "WarPig");
+
+ AIAttackWaveAddUnits(2, 2, "Medivac");
+ AIAttackWaveAddUnits(3, 2, "Medivac");
+ AIAttackWaveAddUnits(4, 2, "Medivac");
+ AIAttackWaveAddUnits(5, 2, "Medivac");
+
+ AIAttackWaveAddUnits(2, 2, "SpartanCompany");
+ AIAttackWaveAddUnits(3, 2, "SpartanCompany");
+ AIAttackWaveAddUnits(4, 2, "SpartanCompany");
+ AIAttackWaveAddUnits(5, 2, "SpartanCompany");
+
+ AIAttackWaveAddUnits(2, 1, "SiegeBreaker");
+ AIAttackWaveAddUnits(3, 1, "SiegeBreaker");
+ AIAttackWaveAddUnits(4, 1, "SiegeBreaker");
+ AIAttackWaveAddUnits(5, 1, "SiegeBreaker");
+
+ AIAttackWaveAddUnits(2, 1, "Thor");
+ AIAttackWaveAddUnits(3, 1, "Thor");
+ AIAttackWaveAddUnits(4, 1, "Thor");
+ AIAttackWaveAddUnits(5, 1, "Thor");
+
+ AIAttackWaveSend(p, ts, false);
+ aiAFDBFFDC_wave2_lastWave[p] = WaveLastCreated();
+ aiAFDBFFDC_lastWave[p] = aiAFDBFFDC_wave2_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave2_run (int p, playergroup target, bool wait) {
+ aiAFDBFFDC_wave2_runPlayer = p;
+ aiAFDBFFDC_wave2_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiAFDBFFDC_wave2_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiAFDBFFDC_wave4_enabled;
+wave[17] aiAFDBFFDC_wave4_lastWave;
+trigger aiAFDBFFDC_wave4_trigger = null;
+int aiAFDBFFDC_wave4_runPlayer;
+playergroup aiAFDBFFDC_wave4_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave4_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiAFDBFFDC_wave4_enabled[init_i] = true;
+ aiAFDBFFDC_wave4_lastWave[init_i] = null;
+ }
+
+ aiAFDBFFDC_wave4_trigger = TriggerCreate("aiAFDBFFDC_wave4_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave4_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiAFDBFFDC_wave4_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiAFDBFFDC_wave4_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiAFDBFFDC_wave4_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiAFDBFFDC_wave4_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiAFDBFFDC_wave4_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiAFDBFFDC_wave4_runFunc (bool c, bool a) {
+ int p = aiAFDBFFDC_wave4_runPlayer;
+ playergroup target = aiAFDBFFDC_wave4_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiAFDBFFDC_wave4_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiAFDBFFDC_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2406));
+
+ gatherPoint = aiAFDBFFDC_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+ gatherPoint = PointFromId(627);
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(2405), false);
+
+ AIAttackWaveAddUnits(2, 12, "WarPig");
+ AIAttackWaveAddUnits(3, 12, "WarPig");
+ AIAttackWaveAddUnits(4, 12, "WarPig");
+ AIAttackWaveAddUnits(5, 12, "WarPig");
+
+ AIAttackWaveAddUnits(2, 2, "Medivac");
+ AIAttackWaveAddUnits(3, 2, "Medivac");
+ AIAttackWaveAddUnits(4, 2, "Medivac");
+ AIAttackWaveAddUnits(5, 2, "Medivac");
+
+ AIAttackWaveAddUnits(2, 2, "SpartanCompany");
+ AIAttackWaveAddUnits(3, 2, "SpartanCompany");
+ AIAttackWaveAddUnits(4, 2, "SpartanCompany");
+ AIAttackWaveAddUnits(5, 2, "SpartanCompany");
+
+ AIAttackWaveAddUnits(2, 1, "SiegeBreaker");
+ AIAttackWaveAddUnits(3, 1, "SiegeBreaker");
+ AIAttackWaveAddUnits(4, 1, "SiegeBreaker");
+ AIAttackWaveAddUnits(5, 1, "SiegeBreaker");
+
+ AIAttackWaveAddUnits(2, 1, "Thor");
+ AIAttackWaveAddUnits(3, 1, "Thor");
+ AIAttackWaveAddUnits(4, 1, "Thor");
+ AIAttackWaveAddUnits(5, 1, "Thor");
+
+ AIAttackWaveSend(p, ts, false);
+ aiAFDBFFDC_wave4_lastWave[p] = WaveLastCreated();
+ aiAFDBFFDC_lastWave[p] = aiAFDBFFDC_wave4_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave4_run (int p, playergroup target, bool wait) {
+ aiAFDBFFDC_wave4_runPlayer = p;
+ aiAFDBFFDC_wave4_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiAFDBFFDC_wave4_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiAFDBFFDC_wave5_enabled;
+wave[17] aiAFDBFFDC_wave5_lastWave;
+trigger aiAFDBFFDC_wave5_trigger = null;
+int aiAFDBFFDC_wave5_runPlayer;
+playergroup aiAFDBFFDC_wave5_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave5_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiAFDBFFDC_wave5_enabled[init_i] = true;
+ aiAFDBFFDC_wave5_lastWave[init_i] = null;
+ }
+
+ aiAFDBFFDC_wave5_trigger = TriggerCreate("aiAFDBFFDC_wave5_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave5_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiAFDBFFDC_wave5_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiAFDBFFDC_wave5_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiAFDBFFDC_wave5_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiAFDBFFDC_wave5_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiAFDBFFDC_wave5_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiAFDBFFDC_wave5_runFunc (bool c, bool a) {
+ int p = aiAFDBFFDC_wave5_runPlayer;
+ playergroup target = aiAFDBFFDC_wave5_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiAFDBFFDC_wave5_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiAFDBFFDC_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2406));
+
+ gatherPoint = aiAFDBFFDC_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+ gatherPoint = PointFromId(627);
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(2405), false);
+
+ AIAttackWaveAddUnits(2, 12, "WarPig");
+ AIAttackWaveAddUnits(3, 12, "WarPig");
+ AIAttackWaveAddUnits(4, 12, "WarPig");
+ AIAttackWaveAddUnits(5, 12, "WarPig");
+
+ AIAttackWaveAddUnits(2, 2, "Medivac");
+ AIAttackWaveAddUnits(3, 2, "Medivac");
+ AIAttackWaveAddUnits(4, 2, "Medivac");
+ AIAttackWaveAddUnits(5, 2, "Medivac");
+
+ AIAttackWaveAddUnits(2, 2, "SpartanCompany");
+ AIAttackWaveAddUnits(3, 2, "SpartanCompany");
+ AIAttackWaveAddUnits(4, 2, "SpartanCompany");
+ AIAttackWaveAddUnits(5, 2, "SpartanCompany");
+
+ AIAttackWaveAddUnits(2, 1, "SiegeBreaker");
+ AIAttackWaveAddUnits(3, 1, "SiegeBreaker");
+ AIAttackWaveAddUnits(4, 1, "SiegeBreaker");
+ AIAttackWaveAddUnits(5, 1, "SiegeBreaker");
+
+ AIAttackWaveAddUnits(2, 1, "Thor");
+ AIAttackWaveAddUnits(3, 1, "Thor");
+ AIAttackWaveAddUnits(4, 1, "Thor");
+ AIAttackWaveAddUnits(5, 1, "Thor");
+
+ AIAttackWaveAddUnits(2, 1, "Battlecruiser");
+ AIAttackWaveAddUnits(3, 1, "Battlecruiser");
+ AIAttackWaveAddUnits(4, 1, "Battlecruiser");
+ AIAttackWaveAddUnits(5, 1, "Battlecruiser");
+
+ AIAttackWaveSend(p, ts, false);
+ aiAFDBFFDC_wave5_lastWave[p] = WaveLastCreated();
+ aiAFDBFFDC_lastWave[p] = aiAFDBFFDC_wave5_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave5_run (int p, playergroup target, bool wait) {
+ aiAFDBFFDC_wave5_runPlayer = p;
+ aiAFDBFFDC_wave5_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiAFDBFFDC_wave5_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave Wrappers
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave_enable (int w, int p, bool val) {
+ if (w == 1) { aiAFDBFFDC_wave1_enable(p, val); }
+ if (w == 3) { aiAFDBFFDC_wave3_enable(p, val); }
+ if (w == 2) { aiAFDBFFDC_wave2_enable(p, val); }
+ if (w == 4) { aiAFDBFFDC_wave4_enable(p, val); }
+ if (w == 5) { aiAFDBFFDC_wave5_enable(p, val); }
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiAFDBFFDC_wave_isEnabled (int w, int p) {
+ if (w == 1) { return aiAFDBFFDC_wave1_isEnabled(p); }
+ if (w == 3) { return aiAFDBFFDC_wave3_isEnabled(p); }
+ if (w == 2) { return aiAFDBFFDC_wave2_isEnabled(p); }
+ if (w == 4) { return aiAFDBFFDC_wave4_isEnabled(p); }
+ if (w == 5) { return aiAFDBFFDC_wave5_isEnabled(p); }
+ return false;
+}
+
+//--------------------------------------------------------------------------------------------------
+unitgroup aiAFDBFFDC_wave_createdUnits (int w, int p) {
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiAFDBFFDC_wave_createdWave (int w, int p) {
+ if (w == 1) { return aiAFDBFFDC_wave1_createdWave(p); }
+ if (w == 3) { return aiAFDBFFDC_wave3_createdWave(p); }
+ if (w == 2) { return aiAFDBFFDC_wave2_createdWave(p); }
+ if (w == 4) { return aiAFDBFFDC_wave4_createdWave(p); }
+ if (w == 5) { return aiAFDBFFDC_wave5_createdWave(p); }
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_wave_run (int w, int p, playergroup target, bool wait) {
+ if (w == 1) { aiAFDBFFDC_wave1_run(p, target, wait); }
+ if (w == 3) { aiAFDBFFDC_wave3_run(p, target, wait); }
+ if (w == 2) { aiAFDBFFDC_wave2_run(p, target, wait); }
+ if (w == 4) { aiAFDBFFDC_wave4_run(p, target, wait); }
+ if (w == 5) { aiAFDBFFDC_wave5_run(p, target, wait); }
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave Sequence
+//--------------------------------------------------------------------------------------------------
+trigger aiAFDBFFDC_waves_trigger = null;
+int aiAFDBFFDC_waves_runPlayer;
+playergroup aiAFDBFFDC_waves_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_waves_init () {
+ aiAFDBFFDC_waves_trigger = TriggerCreate("aiAFDBFFDC_waves_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiAFDBFFDC_waves_runFunc (bool c, bool a) {
+ int p = aiAFDBFFDC_waves_runPlayer;
+ playergroup target = aiAFDBFFDC_waves_runTarget;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+
+ aiAFDBFFDC_wave1_run(p, target, true);
+ aiAFDBFFDC_wave3_run(p, target, true);
+ aiAFDBFFDC_wave2_run(p, target, true);
+ aiAFDBFFDC_wave4_run(p, target, true);
+ aiAFDBFFDC_wave5_run(p, target, true);
+
+ while (true) {
+ aiAFDBFFDC_wave5_run(p, target, true);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_waves_run (int p, playergroup target) {
+ aiAFDBFFDC_waves_runPlayer = p;
+ aiAFDBFFDC_waves_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiAFDBFFDC_waves_trigger, false, false);
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_waves_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+
+ aiAFDBFFDC_wave1_enable(p, val);
+ aiAFDBFFDC_wave3_enable(p, val);
+ aiAFDBFFDC_wave2_enable(p, val);
+ aiAFDBFFDC_wave4_enable(p, val);
+ aiAFDBFFDC_wave5_enable(p, val);
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_waves_stop () {
+ TriggerStop(aiAFDBFFDC_waves_trigger);
+
+ TriggerStop(aiAFDBFFDC_wave1_trigger);
+ TriggerStop(aiAFDBFFDC_wave3_trigger);
+ TriggerStop(aiAFDBFFDC_wave2_trigger);
+ TriggerStop(aiAFDBFFDC_wave4_trigger);
+ TriggerStop(aiAFDBFFDC_wave5_trigger);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Configuration
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_setDefGather (int p, point val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiAFDBFFDC_defGather[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+string aiAFDBFFDC_getCustomData (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiAFDBFFDC_customData[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiAFDBFFDC_getLastWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiAFDBFFDC_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+// Start
+//--------------------------------------------------------------------------------------------------
+bool aiAFDBFFDC_initialized = false;
+
+//--------------------------------------------------------------------------------------------------
+void aiAFDBFFDC_start (int p) {
+ int init_i;
+
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ if (!aiAFDBFFDC_initialized) {
+ aiAFDBFFDC_wave1_init();
+ aiAFDBFFDC_wave3_init();
+ aiAFDBFFDC_wave2_init();
+ aiAFDBFFDC_wave4_init();
+ aiAFDBFFDC_wave5_init();
+ aiAFDBFFDC_waves_init();
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiAFDBFFDC_defGather[init_i] = PointFromId(0);
+ }
+
+ aiAFDBFFDC_initialized = true;
+ }
+
+ AICampaignStart(p);
+}
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/aiEC423AC6.galaxy b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/aiEC423AC6.galaxy
new file mode 100644
index 000000000..9cd098b77
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/aiEC423AC6.galaxy
@@ -0,0 +1,4889 @@
+//==================================================================================================
+//
+// Generated AI Script
+//
+// AI Name: P02 - Red
+//
+//==================================================================================================
+include "TriggerLibs/natives"
+include "TriggerLibs/AI"
+include "TriggerLibs/Computer"
+
+//--------------------------------------------------------------------------------------------------
+// Globals
+//--------------------------------------------------------------------------------------------------
+point[17] aiEC423AC6_defGather;
+string[17] aiEC423AC6_customData;
+wave[17] aiEC423AC6_lastWave;
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave1_enabled;
+wave[17] aiEC423AC6_wave1_lastWave;
+trigger aiEC423AC6_wave1_trigger = null;
+int aiEC423AC6_wave1_runPlayer;
+playergroup aiEC423AC6_wave1_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave1_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave1_enabled[init_i] = true;
+ aiEC423AC6_wave1_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave1_trigger = TriggerCreate("aiEC423AC6_wave1_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave1_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave1_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave1_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave1_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave1_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave1_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave1_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave1_runPlayer;
+ playergroup target = aiEC423AC6_wave1_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave1_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 270; }
+ if (d == 2) { td = 270; }
+ if (d == 3) { td = 270; }
+ if (d == 4) { td = 270; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 270; }
+ if (d == 2) { ta = 270; }
+ if (d == 3) { ta = 270; }
+ if (d == 4) { ta = 270; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(1077));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(579), false);
+ AIAttackWaveAddWaypoint(p, PointFromId(578), false);
+
+ AIAttackWaveAddUnits(2, 6, "MengskMarine");
+ AIAttackWaveAddUnits(3, 6, "MengskMarine");
+ AIAttackWaveAddUnits(4, 8, "MengskMarine");
+ AIAttackWaveAddUnits(5, 8, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskMedic");
+ AIAttackWaveAddUnits(3, 2, "MengskMedic");
+ AIAttackWaveAddUnits(4, 3, "MengskMedic");
+ AIAttackWaveAddUnits(5, 3, "MengskMedic");
+
+ AIAttackWaveAddUnits(2, 3, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 3, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 4, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 4, "MengskMarauder");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave1_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave1_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave1_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave1_runPlayer = p;
+ aiEC423AC6_wave1_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave1_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave13_enabled;
+wave[17] aiEC423AC6_wave13_lastWave;
+trigger aiEC423AC6_wave13_trigger = null;
+int aiEC423AC6_wave13_runPlayer;
+playergroup aiEC423AC6_wave13_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave13_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave13_enabled[init_i] = true;
+ aiEC423AC6_wave13_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave13_trigger = TriggerCreate("aiEC423AC6_wave13_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave13_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave13_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave13_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave13_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave13_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave13_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave13_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave13_runPlayer;
+ playergroup target = aiEC423AC6_wave13_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave13_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 126; }
+ if (d == 2) { ta = 126; }
+ if (d == 3) { ta = 126; }
+ if (d == 4) { ta = 126; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 6, "MengskMarine");
+ AIAttackWaveAddUnits(3, 6, "MengskMarine");
+ AIAttackWaveAddUnits(4, 8, "MengskMarine");
+ AIAttackWaveAddUnits(5, 8, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "WarHound");
+ AIAttackWaveAddUnits(3, 2, "WarHound");
+ AIAttackWaveAddUnits(4, 2, "WarHound");
+ AIAttackWaveAddUnits(5, 2, "WarHound");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave13_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave13_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave13_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave13_runPlayer = p;
+ aiEC423AC6_wave13_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave13_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave15_enabled;
+wave[17] aiEC423AC6_wave15_lastWave;
+trigger aiEC423AC6_wave15_trigger = null;
+int aiEC423AC6_wave15_runPlayer;
+playergroup aiEC423AC6_wave15_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave15_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave15_enabled[init_i] = true;
+ aiEC423AC6_wave15_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave15_trigger = TriggerCreate("aiEC423AC6_wave15_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave15_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave15_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave15_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave15_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave15_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave15_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave15_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave15_runPlayer;
+ playergroup target = aiEC423AC6_wave15_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave15_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 276; }
+ if (d == 2) { ta = 276; }
+ if (d == 3) { ta = 276; }
+ if (d == 4) { ta = 276; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 6, "MengskMarine");
+ AIAttackWaveAddUnits(3, 6, "MengskMarine");
+ AIAttackWaveAddUnits(4, 8, "MengskMarine");
+ AIAttackWaveAddUnits(5, 8, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 3, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 3, "MengskMarauder");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave15_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave15_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave15_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave15_runPlayer = p;
+ aiEC423AC6_wave15_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave15_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave9_enabled;
+wave[17] aiEC423AC6_wave9_lastWave;
+trigger aiEC423AC6_wave9_trigger = null;
+int aiEC423AC6_wave9_runPlayer;
+playergroup aiEC423AC6_wave9_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave9_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave9_enabled[init_i] = true;
+ aiEC423AC6_wave9_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave9_trigger = TriggerCreate("aiEC423AC6_wave9_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave9_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave9_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave9_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave9_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave9_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave9_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave9_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave9_runPlayer;
+ playergroup target = aiEC423AC6_wave9_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave9_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 300; }
+ if (d == 2) { td = 300; }
+ if (d == 3) { td = 300; }
+ if (d == 4) { td = 300; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(1077));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(732), false);
+ AIAttackWaveAddWaypoint(p, PointFromId(422), false);
+
+ AIAttackWaveAddUnits(2, 6, "MengskReaper");
+ AIAttackWaveAddUnits(3, 6, "MengskReaper");
+ AIAttackWaveAddUnits(4, 8, "MengskReaper");
+ AIAttackWaveAddUnits(5, 8, "MengskReaper");
+
+ AIAttackWaveAddUnits(2, 4, "MengskHellion");
+ AIAttackWaveAddUnits(3, 4, "MengskHellion");
+ AIAttackWaveAddUnits(4, 6, "MengskHellion");
+ AIAttackWaveAddUnits(5, 6, "MengskHellion");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave9_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave9_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave9_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave9_runPlayer = p;
+ aiEC423AC6_wave9_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave9_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave: Wave 5 - SKY FURY
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave14_enabled;
+wave[17] aiEC423AC6_wave14_lastWave;
+trigger aiEC423AC6_wave14_trigger = null;
+int aiEC423AC6_wave14_runPlayer;
+playergroup aiEC423AC6_wave14_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave14_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave14_enabled[init_i] = true;
+ aiEC423AC6_wave14_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave14_trigger = TriggerCreate("aiEC423AC6_wave14_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave14_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave14_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave14_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave14_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave14_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave14_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave14_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave14_runPlayer;
+ playergroup target = aiEC423AC6_wave14_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave14_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 426; }
+ if (d == 2) { ta = 426; }
+ if (d == 3) { ta = 426; }
+ if (d == 4) { ta = 426; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 14, "MengskVikingFighter");
+ AIAttackWaveAddUnits(3, 14, "MengskVikingFighter");
+ AIAttackWaveAddUnits(4, 16, "MengskVikingFighter");
+ AIAttackWaveAddUnits(5, 16, "MengskVikingFighter");
+
+ AIAttackWaveAddUnits(2, 2, "MengskBanshee");
+ AIAttackWaveAddUnits(3, 2, "MengskBanshee");
+ AIAttackWaveAddUnits(4, 4, "MengskBanshee");
+ AIAttackWaveAddUnits(5, 4, "MengskBanshee");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave14_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave14_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave14_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave14_runPlayer = p;
+ aiEC423AC6_wave14_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave14_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave16_enabled;
+wave[17] aiEC423AC6_wave16_lastWave;
+trigger aiEC423AC6_wave16_trigger = null;
+int aiEC423AC6_wave16_runPlayer;
+playergroup aiEC423AC6_wave16_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave16_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave16_enabled[init_i] = true;
+ aiEC423AC6_wave16_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave16_trigger = TriggerCreate("aiEC423AC6_wave16_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave16_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave16_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave16_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave16_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave16_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave16_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave16_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave16_runPlayer;
+ playergroup target = aiEC423AC6_wave16_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave16_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 152; }
+ if (d == 2) { ta = 152; }
+ if (d == 3) { ta = 152; }
+ if (d == 4) { ta = 152; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 3, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 3, "MengskMarauder");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave16_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave16_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave16_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave16_runPlayer = p;
+ aiEC423AC6_wave16_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave16_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave6_enabled;
+wave[17] aiEC423AC6_wave6_lastWave;
+trigger aiEC423AC6_wave6_trigger = null;
+int aiEC423AC6_wave6_runPlayer;
+playergroup aiEC423AC6_wave6_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave6_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave6_enabled[init_i] = true;
+ aiEC423AC6_wave6_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave6_trigger = TriggerCreate("aiEC423AC6_wave6_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave6_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave6_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave6_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave6_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave6_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave6_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave6_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave6_runPlayer;
+ playergroup target = aiEC423AC6_wave6_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave6_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 176; }
+ if (d == 2) { td = 176; }
+ if (d == 3) { td = 176; }
+ if (d == 4) { td = 176; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 176; }
+ if (d == 2) { ta = 176; }
+ if (d == 3) { ta = 176; }
+ if (d == 4) { ta = 176; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(1077));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(579), false);
+ AIAttackWaveAddWaypoint(p, PointFromId(578), false);
+
+ AIAttackWaveAddUnits(2, 2, "MengskSiegeTank");
+ AIAttackWaveAddUnits(3, 2, "MengskSiegeTank");
+ AIAttackWaveAddUnits(4, 3, "MengskSiegeTank");
+ AIAttackWaveAddUnits(5, 3, "MengskSiegeTank");
+
+ AIAttackWaveAddUnits(2, 3, "MengskGoliath");
+ AIAttackWaveAddUnits(3, 3, "MengskGoliath");
+ AIAttackWaveAddUnits(4, 4, "MengskGoliath");
+ AIAttackWaveAddUnits(5, 4, "MengskGoliath");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave6_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave6_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave6_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave6_runPlayer = p;
+ aiEC423AC6_wave6_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave6_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave: Wave 8 - ALPHA SQUADRON
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave17_enabled;
+wave[17] aiEC423AC6_wave17_lastWave;
+trigger aiEC423AC6_wave17_trigger = null;
+int aiEC423AC6_wave17_runPlayer;
+playergroup aiEC423AC6_wave17_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave17_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave17_enabled[init_i] = true;
+ aiEC423AC6_wave17_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave17_trigger = TriggerCreate("aiEC423AC6_wave17_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave17_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave17_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave17_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave17_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave17_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave17_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave17_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave17_runPlayer;
+ playergroup target = aiEC423AC6_wave17_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave17_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 332; }
+ if (d == 2) { ta = 332; }
+ if (d == 3) { ta = 332; }
+ if (d == 4) { ta = 332; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 4, "MengskSiegeTank");
+ AIAttackWaveAddUnits(3, 4, "MengskSiegeTank");
+ AIAttackWaveAddUnits(4, 6, "MengskSiegeTank");
+ AIAttackWaveAddUnits(5, 6, "MengskSiegeTank");
+
+ AIAttackWaveAddUnits(2, 2, "MengskBC");
+ AIAttackWaveAddUnits(3, 2, "MengskBC");
+ AIAttackWaveAddUnits(4, 3, "MengskBC");
+ AIAttackWaveAddUnits(5, 3, "MengskBC");
+
+ AIAttackWaveAddUnits(2, 12, "MengskMarine");
+ AIAttackWaveAddUnits(3, 12, "MengskMarine");
+ AIAttackWaveAddUnits(4, 16, "MengskMarine");
+ AIAttackWaveAddUnits(5, 16, "MengskMarine");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave17_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave17_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave17_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave17_runPlayer = p;
+ aiEC423AC6_wave17_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave17_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave18_enabled;
+wave[17] aiEC423AC6_wave18_lastWave;
+trigger aiEC423AC6_wave18_trigger = null;
+int aiEC423AC6_wave18_runPlayer;
+playergroup aiEC423AC6_wave18_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave18_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave18_enabled[init_i] = true;
+ aiEC423AC6_wave18_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave18_trigger = TriggerCreate("aiEC423AC6_wave18_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave18_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave18_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave18_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave18_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave18_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave18_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave18_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave18_runPlayer;
+ playergroup target = aiEC423AC6_wave18_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave18_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 120; }
+ if (d == 2) { ta = 120; }
+ if (d == 3) { ta = 120; }
+ if (d == 4) { ta = 120; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 8, "MengskMarine");
+ AIAttackWaveAddUnits(5, 8, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskGoliath");
+ AIAttackWaveAddUnits(3, 2, "MengskGoliath");
+ AIAttackWaveAddUnits(4, 3, "MengskGoliath");
+ AIAttackWaveAddUnits(5, 3, "MengskGoliath");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave18_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave18_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave18_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave18_runPlayer = p;
+ aiEC423AC6_wave18_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave18_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave5_enabled;
+wave[17] aiEC423AC6_wave5_lastWave;
+trigger aiEC423AC6_wave5_trigger = null;
+int aiEC423AC6_wave5_runPlayer;
+playergroup aiEC423AC6_wave5_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave5_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave5_enabled[init_i] = true;
+ aiEC423AC6_wave5_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave5_trigger = TriggerCreate("aiEC423AC6_wave5_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave5_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave5_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave5_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave5_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave5_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave5_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave5_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave5_runPlayer;
+ playergroup target = aiEC423AC6_wave5_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave5_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 144; }
+ if (d == 2) { td = 144; }
+ if (d == 3) { td = 144; }
+ if (d == 4) { td = 144; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 144; }
+ if (d == 2) { ta = 144; }
+ if (d == 3) { ta = 144; }
+ if (d == 4) { ta = 144; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(1077));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(732), false);
+ AIAttackWaveAddWaypoint(p, PointFromId(422), false);
+
+ AIAttackWaveAddUnits(2, 3, "MengskVikingFighter");
+ AIAttackWaveAddUnits(3, 3, "MengskVikingFighter");
+ AIAttackWaveAddUnits(4, 5, "MengskVikingFighter");
+ AIAttackWaveAddUnits(5, 5, "MengskVikingFighter");
+
+ AIAttackWaveAddUnits(2, 2, "MengskBanshee");
+ AIAttackWaveAddUnits(3, 2, "MengskBanshee");
+ AIAttackWaveAddUnits(4, 3, "MengskBanshee");
+ AIAttackWaveAddUnits(5, 3, "MengskBanshee");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave5_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave5_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave5_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave5_runPlayer = p;
+ aiEC423AC6_wave5_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave5_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave19_enabled;
+wave[17] aiEC423AC6_wave19_lastWave;
+trigger aiEC423AC6_wave19_trigger = null;
+int aiEC423AC6_wave19_runPlayer;
+playergroup aiEC423AC6_wave19_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave19_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave19_enabled[init_i] = true;
+ aiEC423AC6_wave19_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave19_trigger = TriggerCreate("aiEC423AC6_wave19_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave19_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave19_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave19_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave19_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave19_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave19_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave19_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave19_runPlayer;
+ playergroup target = aiEC423AC6_wave19_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave19_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 126; }
+ if (d == 2) { ta = 126; }
+ if (d == 3) { ta = 126; }
+ if (d == 4) { ta = 126; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 1, "MengskThor");
+ AIAttackWaveAddUnits(3, 1, "MengskThor");
+ AIAttackWaveAddUnits(4, 2, "MengskThor");
+ AIAttackWaveAddUnits(5, 2, "MengskThor");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave19_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave19_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave19_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave19_runPlayer = p;
+ aiEC423AC6_wave19_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave19_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave: Wave 11 - ODIN
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave20_enabled;
+wave[17] aiEC423AC6_wave20_lastWave;
+trigger aiEC423AC6_wave20_trigger = null;
+int aiEC423AC6_wave20_runPlayer;
+playergroup aiEC423AC6_wave20_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave20_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave20_enabled[init_i] = true;
+ aiEC423AC6_wave20_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave20_trigger = TriggerCreate("aiEC423AC6_wave20_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave20_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave20_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave20_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave20_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave20_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave20_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave20_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave20_runPlayer;
+ playergroup target = aiEC423AC6_wave20_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave20_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 276; }
+ if (d == 2) { ta = 276; }
+ if (d == 3) { ta = 276; }
+ if (d == 4) { ta = 276; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(2634), false);
+ AIAttackWaveAddWaypoint(p, PointFromId(2635), false);
+ AIAttackWaveAddWaypoint(p, PointFromId(2636), false);
+
+ AIAttackWaveAddUnits(2, 1, "Odin");
+ AIAttackWaveAddUnits(3, 1, "Odin");
+ AIAttackWaveAddUnits(4, 1, "Odin");
+ AIAttackWaveAddUnits(5, 1, "Odin");
+
+ AIAttackWaveAddUnits(2, 8, "MengskGoliath");
+ AIAttackWaveAddUnits(3, 8, "MengskGoliath");
+ AIAttackWaveAddUnits(4, 12, "MengskGoliath");
+ AIAttackWaveAddUnits(5, 12, "MengskGoliath");
+
+ AIAttackWaveAddUnits(2, 1, "MengskSiegeTank");
+ AIAttackWaveAddUnits(3, 1, "MengskSiegeTank");
+ AIAttackWaveAddUnits(4, 2, "MengskSiegeTank");
+ AIAttackWaveAddUnits(5, 2, "MengskSiegeTank");
+
+ AIAttackWaveAddUnits(2, 12, "MengskMarine");
+ AIAttackWaveAddUnits(3, 12, "MengskMarine");
+ AIAttackWaveAddUnits(4, 16, "MengskMarine");
+ AIAttackWaveAddUnits(5, 16, "MengskMarine");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave20_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave20_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave20_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave20_runPlayer = p;
+ aiEC423AC6_wave20_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave20_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave37_enabled;
+wave[17] aiEC423AC6_wave37_lastWave;
+trigger aiEC423AC6_wave37_trigger = null;
+int aiEC423AC6_wave37_runPlayer;
+playergroup aiEC423AC6_wave37_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave37_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave37_enabled[init_i] = true;
+ aiEC423AC6_wave37_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave37_trigger = TriggerCreate("aiEC423AC6_wave37_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave37_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave37_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave37_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave37_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave37_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave37_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave37_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave37_runPlayer;
+ playergroup target = aiEC423AC6_wave37_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave37_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 300; }
+ if (d == 2) { td = 300; }
+ if (d == 3) { td = 300; }
+ if (d == 4) { td = 300; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(1077));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(579), false);
+ AIAttackWaveAddWaypoint(p, PointFromId(578), false);
+
+ AIAttackWaveAddUnits(2, 3, "VikingFighter");
+ AIAttackWaveAddUnits(3, 3, "VikingFighter");
+ AIAttackWaveAddUnits(4, 4, "VikingFighter");
+ AIAttackWaveAddUnits(5, 4, "VikingFighter");
+
+ AIAttackWaveAddUnits(2, 3, "MengskBanshee");
+ AIAttackWaveAddUnits(3, 3, "MengskBanshee");
+ AIAttackWaveAddUnits(4, 4, "MengskBanshee");
+ AIAttackWaveAddUnits(5, 4, "MengskBanshee");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave37_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave37_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave37_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave37_runPlayer = p;
+ aiEC423AC6_wave37_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave37_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave21_enabled;
+wave[17] aiEC423AC6_wave21_lastWave;
+trigger aiEC423AC6_wave21_trigger = null;
+int aiEC423AC6_wave21_runPlayer;
+playergroup aiEC423AC6_wave21_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave21_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave21_enabled[init_i] = true;
+ aiEC423AC6_wave21_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave21_trigger = TriggerCreate("aiEC423AC6_wave21_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave21_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave21_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave21_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave21_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave21_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave21_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave21_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave21_runPlayer;
+ playergroup target = aiEC423AC6_wave21_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave21_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 126; }
+ if (d == 2) { ta = 126; }
+ if (d == 3) { ta = 126; }
+ if (d == 4) { ta = 126; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "WarHound");
+ AIAttackWaveAddUnits(3, 2, "WarHound");
+ AIAttackWaveAddUnits(4, 2, "WarHound");
+ AIAttackWaveAddUnits(5, 2, "WarHound");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave21_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave21_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave21_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave21_runPlayer = p;
+ aiEC423AC6_wave21_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave21_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave22_enabled;
+wave[17] aiEC423AC6_wave22_lastWave;
+trigger aiEC423AC6_wave22_trigger = null;
+int aiEC423AC6_wave22_runPlayer;
+playergroup aiEC423AC6_wave22_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave22_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave22_enabled[init_i] = true;
+ aiEC423AC6_wave22_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave22_trigger = TriggerCreate("aiEC423AC6_wave22_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave22_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave22_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave22_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave22_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave22_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave22_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave22_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave22_runPlayer;
+ playergroup target = aiEC423AC6_wave22_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave22_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 276; }
+ if (d == 2) { ta = 276; }
+ if (d == 3) { ta = 276; }
+ if (d == 4) { ta = 276; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 3, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 3, "MengskMarauder");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave22_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave22_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave22_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave22_runPlayer = p;
+ aiEC423AC6_wave22_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave22_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave2_enabled;
+wave[17] aiEC423AC6_wave2_lastWave;
+trigger aiEC423AC6_wave2_trigger = null;
+int aiEC423AC6_wave2_runPlayer;
+playergroup aiEC423AC6_wave2_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave2_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave2_enabled[init_i] = true;
+ aiEC423AC6_wave2_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave2_trigger = TriggerCreate("aiEC423AC6_wave2_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave2_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave2_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave2_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave2_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave2_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave2_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave2_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave2_runPlayer;
+ playergroup target = aiEC423AC6_wave2_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave2_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 300; }
+ if (d == 2) { td = 300; }
+ if (d == 3) { td = 300; }
+ if (d == 4) { td = 300; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(1077));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(532), false);
+ AIAttackWaveAddWaypoint(p, PointFromId(49), false);
+
+ AIAttackWaveAddUnits(2, 2, "MengskGoliath");
+ AIAttackWaveAddUnits(3, 2, "MengskGoliath");
+ AIAttackWaveAddUnits(4, 3, "MengskGoliath");
+ AIAttackWaveAddUnits(5, 3, "MengskGoliath");
+
+ AIAttackWaveAddUnits(2, 2, "MengskThor");
+ AIAttackWaveAddUnits(3, 2, "MengskThor");
+ AIAttackWaveAddUnits(4, 3, "MengskThor");
+ AIAttackWaveAddUnits(5, 3, "MengskThor");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave2_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave2_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave2_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave2_runPlayer = p;
+ aiEC423AC6_wave2_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave2_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave23_enabled;
+wave[17] aiEC423AC6_wave23_lastWave;
+trigger aiEC423AC6_wave23_trigger = null;
+int aiEC423AC6_wave23_runPlayer;
+playergroup aiEC423AC6_wave23_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave23_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave23_enabled[init_i] = true;
+ aiEC423AC6_wave23_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave23_trigger = TriggerCreate("aiEC423AC6_wave23_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave23_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave23_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave23_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave23_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave23_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave23_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave23_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave23_runPlayer;
+ playergroup target = aiEC423AC6_wave23_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave23_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 126; }
+ if (d == 2) { ta = 126; }
+ if (d == 3) { ta = 126; }
+ if (d == 4) { ta = 126; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 3, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 3, "MengskMarauder");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave23_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave23_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave23_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave23_runPlayer = p;
+ aiEC423AC6_wave23_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave23_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave24_enabled;
+wave[17] aiEC423AC6_wave24_lastWave;
+trigger aiEC423AC6_wave24_trigger = null;
+int aiEC423AC6_wave24_runPlayer;
+playergroup aiEC423AC6_wave24_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave24_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave24_enabled[init_i] = true;
+ aiEC423AC6_wave24_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave24_trigger = TriggerCreate("aiEC423AC6_wave24_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave24_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave24_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave24_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave24_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave24_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave24_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave24_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave24_runPlayer;
+ playergroup target = aiEC423AC6_wave24_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave24_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 276; }
+ if (d == 2) { ta = 276; }
+ if (d == 3) { ta = 276; }
+ if (d == 4) { ta = 276; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "WarHound");
+ AIAttackWaveAddUnits(3, 2, "WarHound");
+ AIAttackWaveAddUnits(4, 2, "WarHound");
+ AIAttackWaveAddUnits(5, 2, "WarHound");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave24_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave24_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave24_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave24_runPlayer = p;
+ aiEC423AC6_wave24_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave24_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave3_enabled;
+wave[17] aiEC423AC6_wave3_lastWave;
+trigger aiEC423AC6_wave3_trigger = null;
+int aiEC423AC6_wave3_runPlayer;
+playergroup aiEC423AC6_wave3_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave3_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave3_enabled[init_i] = true;
+ aiEC423AC6_wave3_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave3_trigger = TriggerCreate("aiEC423AC6_wave3_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave3_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave3_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave3_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave3_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave3_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave3_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave3_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave3_runPlayer;
+ playergroup target = aiEC423AC6_wave3_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave3_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 300; }
+ if (d == 2) { td = 300; }
+ if (d == 3) { td = 300; }
+ if (d == 4) { td = 300; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(1077));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(579), false);
+ AIAttackWaveAddWaypoint(p, PointFromId(578), false);
+
+ AIAttackWaveAddUnits(2, 2, "MengskSiegeTank");
+ AIAttackWaveAddUnits(3, 2, "MengskSiegeTank");
+ AIAttackWaveAddUnits(4, 3, "MengskSiegeTank");
+ AIAttackWaveAddUnits(5, 3, "MengskSiegeTank");
+
+ AIAttackWaveAddUnits(2, 3, "WarHound");
+ AIAttackWaveAddUnits(3, 3, "WarHound");
+ AIAttackWaveAddUnits(4, 4, "WarHound");
+ AIAttackWaveAddUnits(5, 4, "WarHound");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave3_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave3_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave3_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave3_runPlayer = p;
+ aiEC423AC6_wave3_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave3_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave25_enabled;
+wave[17] aiEC423AC6_wave25_lastWave;
+trigger aiEC423AC6_wave25_trigger = null;
+int aiEC423AC6_wave25_runPlayer;
+playergroup aiEC423AC6_wave25_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave25_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave25_enabled[init_i] = true;
+ aiEC423AC6_wave25_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave25_trigger = TriggerCreate("aiEC423AC6_wave25_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave25_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave25_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave25_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave25_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave25_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave25_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave25_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave25_runPlayer;
+ playergroup target = aiEC423AC6_wave25_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave25_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 126; }
+ if (d == 2) { ta = 126; }
+ if (d == 3) { ta = 126; }
+ if (d == 4) { ta = 126; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "WarHound");
+ AIAttackWaveAddUnits(3, 2, "WarHound");
+ AIAttackWaveAddUnits(4, 2, "WarHound");
+ AIAttackWaveAddUnits(5, 2, "WarHound");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave25_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave25_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave25_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave25_runPlayer = p;
+ aiEC423AC6_wave25_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave25_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave26_enabled;
+wave[17] aiEC423AC6_wave26_lastWave;
+trigger aiEC423AC6_wave26_trigger = null;
+int aiEC423AC6_wave26_runPlayer;
+playergroup aiEC423AC6_wave26_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave26_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave26_enabled[init_i] = true;
+ aiEC423AC6_wave26_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave26_trigger = TriggerCreate("aiEC423AC6_wave26_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave26_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave26_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave26_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave26_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave26_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave26_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave26_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave26_runPlayer;
+ playergroup target = aiEC423AC6_wave26_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave26_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 276; }
+ if (d == 2) { ta = 276; }
+ if (d == 3) { ta = 276; }
+ if (d == 4) { ta = 276; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 3, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 3, "MengskMarauder");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave26_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave26_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave26_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave26_runPlayer = p;
+ aiEC423AC6_wave26_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave26_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave4_enabled;
+wave[17] aiEC423AC6_wave4_lastWave;
+trigger aiEC423AC6_wave4_trigger = null;
+int aiEC423AC6_wave4_runPlayer;
+playergroup aiEC423AC6_wave4_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave4_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave4_enabled[init_i] = true;
+ aiEC423AC6_wave4_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave4_trigger = TriggerCreate("aiEC423AC6_wave4_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave4_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave4_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave4_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave4_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave4_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave4_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave4_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave4_runPlayer;
+ playergroup target = aiEC423AC6_wave4_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave4_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 300; }
+ if (d == 2) { td = 300; }
+ if (d == 3) { td = 300; }
+ if (d == 4) { td = 300; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(1077));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(732), false);
+ AIAttackWaveAddWaypoint(p, PointFromId(422), false);
+
+ AIAttackWaveAddUnits(2, 2, "MengskGoliath");
+ AIAttackWaveAddUnits(3, 2, "MengskGoliath");
+ AIAttackWaveAddUnits(4, 3, "MengskGoliath");
+ AIAttackWaveAddUnits(5, 3, "MengskGoliath");
+
+ AIAttackWaveAddUnits(2, 2, "MengskThor");
+ AIAttackWaveAddUnits(3, 2, "MengskThor");
+ AIAttackWaveAddUnits(4, 3, "MengskThor");
+ AIAttackWaveAddUnits(5, 3, "MengskThor");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave4_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave4_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave4_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave4_runPlayer = p;
+ aiEC423AC6_wave4_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave4_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave27_enabled;
+wave[17] aiEC423AC6_wave27_lastWave;
+trigger aiEC423AC6_wave27_trigger = null;
+int aiEC423AC6_wave27_runPlayer;
+playergroup aiEC423AC6_wave27_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave27_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave27_enabled[init_i] = true;
+ aiEC423AC6_wave27_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave27_trigger = TriggerCreate("aiEC423AC6_wave27_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave27_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave27_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave27_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave27_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave27_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave27_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave27_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave27_runPlayer;
+ playergroup target = aiEC423AC6_wave27_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave27_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 126; }
+ if (d == 2) { ta = 126; }
+ if (d == 3) { ta = 126; }
+ if (d == 4) { ta = 126; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "WarHound");
+ AIAttackWaveAddUnits(3, 2, "WarHound");
+ AIAttackWaveAddUnits(4, 2, "WarHound");
+ AIAttackWaveAddUnits(5, 2, "WarHound");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave27_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave27_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave27_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave27_runPlayer = p;
+ aiEC423AC6_wave27_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave27_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave28_enabled;
+wave[17] aiEC423AC6_wave28_lastWave;
+trigger aiEC423AC6_wave28_trigger = null;
+int aiEC423AC6_wave28_runPlayer;
+playergroup aiEC423AC6_wave28_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave28_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave28_enabled[init_i] = true;
+ aiEC423AC6_wave28_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave28_trigger = TriggerCreate("aiEC423AC6_wave28_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave28_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave28_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave28_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave28_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave28_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave28_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave28_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave28_runPlayer;
+ playergroup target = aiEC423AC6_wave28_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave28_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 276; }
+ if (d == 2) { ta = 276; }
+ if (d == 3) { ta = 276; }
+ if (d == 4) { ta = 276; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 3, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 3, "MengskMarauder");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave28_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave28_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave28_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave28_runPlayer = p;
+ aiEC423AC6_wave28_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave28_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave7_enabled;
+wave[17] aiEC423AC6_wave7_lastWave;
+trigger aiEC423AC6_wave7_trigger = null;
+int aiEC423AC6_wave7_runPlayer;
+playergroup aiEC423AC6_wave7_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave7_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave7_enabled[init_i] = true;
+ aiEC423AC6_wave7_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave7_trigger = TriggerCreate("aiEC423AC6_wave7_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave7_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave7_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave7_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave7_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave7_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave7_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave7_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave7_runPlayer;
+ playergroup target = aiEC423AC6_wave7_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave7_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 300; }
+ if (d == 2) { td = 300; }
+ if (d == 3) { td = 300; }
+ if (d == 4) { td = 300; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(1077));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(578), false);
+
+ AIAttackWaveAddUnits(2, 1, "MengskBC");
+ AIAttackWaveAddUnits(3, 1, "MengskBC");
+ AIAttackWaveAddUnits(4, 2, "MengskBC");
+ AIAttackWaveAddUnits(5, 2, "MengskBC");
+
+ AIAttackWaveAddUnits(2, 4, "MengskVikingFighter");
+ AIAttackWaveAddUnits(3, 4, "MengskVikingFighter");
+ AIAttackWaveAddUnits(4, 6, "MengskVikingFighter");
+ AIAttackWaveAddUnits(5, 6, "MengskVikingFighter");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave7_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave7_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave7_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave7_runPlayer = p;
+ aiEC423AC6_wave7_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave7_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave29_enabled;
+wave[17] aiEC423AC6_wave29_lastWave;
+trigger aiEC423AC6_wave29_trigger = null;
+int aiEC423AC6_wave29_runPlayer;
+playergroup aiEC423AC6_wave29_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave29_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave29_enabled[init_i] = true;
+ aiEC423AC6_wave29_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave29_trigger = TriggerCreate("aiEC423AC6_wave29_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave29_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave29_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave29_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave29_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave29_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave29_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave29_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave29_runPlayer;
+ playergroup target = aiEC423AC6_wave29_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave29_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 126; }
+ if (d == 2) { ta = 126; }
+ if (d == 3) { ta = 126; }
+ if (d == 4) { ta = 126; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "WarHound");
+ AIAttackWaveAddUnits(3, 2, "WarHound");
+ AIAttackWaveAddUnits(4, 2, "WarHound");
+ AIAttackWaveAddUnits(5, 2, "WarHound");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave29_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave29_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave29_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave29_runPlayer = p;
+ aiEC423AC6_wave29_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave29_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave30_enabled;
+wave[17] aiEC423AC6_wave30_lastWave;
+trigger aiEC423AC6_wave30_trigger = null;
+int aiEC423AC6_wave30_runPlayer;
+playergroup aiEC423AC6_wave30_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave30_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave30_enabled[init_i] = true;
+ aiEC423AC6_wave30_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave30_trigger = TriggerCreate("aiEC423AC6_wave30_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave30_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave30_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave30_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave30_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave30_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave30_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave30_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave30_runPlayer;
+ playergroup target = aiEC423AC6_wave30_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave30_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 276; }
+ if (d == 2) { ta = 276; }
+ if (d == 3) { ta = 276; }
+ if (d == 4) { ta = 276; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 3, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 3, "MengskMarauder");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave30_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave30_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave30_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave30_runPlayer = p;
+ aiEC423AC6_wave30_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave30_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave10_enabled;
+wave[17] aiEC423AC6_wave10_lastWave;
+trigger aiEC423AC6_wave10_trigger = null;
+int aiEC423AC6_wave10_runPlayer;
+playergroup aiEC423AC6_wave10_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave10_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave10_enabled[init_i] = true;
+ aiEC423AC6_wave10_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave10_trigger = TriggerCreate("aiEC423AC6_wave10_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave10_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave10_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave10_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave10_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave10_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave10_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave10_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave10_runPlayer;
+ playergroup target = aiEC423AC6_wave10_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave10_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 300; }
+ if (d == 2) { td = 300; }
+ if (d == 3) { td = 300; }
+ if (d == 4) { td = 300; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(1077));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(532), false);
+ AIAttackWaveAddWaypoint(p, PointFromId(49), false);
+
+ AIAttackWaveAddUnits(2, 3, "MengskGoliath");
+ AIAttackWaveAddUnits(3, 3, "MengskGoliath");
+ AIAttackWaveAddUnits(4, 6, "MengskGoliath");
+ AIAttackWaveAddUnits(5, 6, "MengskGoliath");
+
+ AIAttackWaveAddUnits(2, 2, "MengskThor");
+ AIAttackWaveAddUnits(3, 2, "MengskThor");
+ AIAttackWaveAddUnits(4, 3, "MengskThor");
+ AIAttackWaveAddUnits(5, 3, "MengskThor");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave10_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave10_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave10_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave10_runPlayer = p;
+ aiEC423AC6_wave10_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave10_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave31_enabled;
+wave[17] aiEC423AC6_wave31_lastWave;
+trigger aiEC423AC6_wave31_trigger = null;
+int aiEC423AC6_wave31_runPlayer;
+playergroup aiEC423AC6_wave31_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave31_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave31_enabled[init_i] = true;
+ aiEC423AC6_wave31_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave31_trigger = TriggerCreate("aiEC423AC6_wave31_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave31_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave31_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave31_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave31_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave31_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave31_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave31_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave31_runPlayer;
+ playergroup target = aiEC423AC6_wave31_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave31_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 126; }
+ if (d == 2) { ta = 126; }
+ if (d == 3) { ta = 126; }
+ if (d == 4) { ta = 126; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 3, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 3, "MengskMarauder");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave31_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave31_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave31_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave31_runPlayer = p;
+ aiEC423AC6_wave31_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave31_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave32_enabled;
+wave[17] aiEC423AC6_wave32_lastWave;
+trigger aiEC423AC6_wave32_trigger = null;
+int aiEC423AC6_wave32_runPlayer;
+playergroup aiEC423AC6_wave32_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave32_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave32_enabled[init_i] = true;
+ aiEC423AC6_wave32_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave32_trigger = TriggerCreate("aiEC423AC6_wave32_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave32_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave32_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave32_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave32_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave32_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave32_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave32_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave32_runPlayer;
+ playergroup target = aiEC423AC6_wave32_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave32_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 276; }
+ if (d == 2) { ta = 276; }
+ if (d == 3) { ta = 276; }
+ if (d == 4) { ta = 276; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "WarHound");
+ AIAttackWaveAddUnits(3, 2, "WarHound");
+ AIAttackWaveAddUnits(4, 2, "WarHound");
+ AIAttackWaveAddUnits(5, 2, "WarHound");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave32_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave32_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave32_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave32_runPlayer = p;
+ aiEC423AC6_wave32_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave32_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave11_enabled;
+wave[17] aiEC423AC6_wave11_lastWave;
+trigger aiEC423AC6_wave11_trigger = null;
+int aiEC423AC6_wave11_runPlayer;
+playergroup aiEC423AC6_wave11_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave11_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave11_enabled[init_i] = true;
+ aiEC423AC6_wave11_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave11_trigger = TriggerCreate("aiEC423AC6_wave11_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave11_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave11_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave11_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave11_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave11_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave11_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave11_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave11_runPlayer;
+ playergroup target = aiEC423AC6_wave11_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave11_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 300; }
+ if (d == 2) { td = 300; }
+ if (d == 3) { td = 300; }
+ if (d == 4) { td = 300; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(1077));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(579), false);
+ AIAttackWaveAddWaypoint(p, PointFromId(578), false);
+
+ AIAttackWaveAddUnits(2, 2, "MengskSiegeTank");
+ AIAttackWaveAddUnits(3, 2, "MengskSiegeTank");
+ AIAttackWaveAddUnits(4, 3, "MengskSiegeTank");
+ AIAttackWaveAddUnits(5, 3, "MengskSiegeTank");
+
+ AIAttackWaveAddUnits(2, 4, "WarHound");
+ AIAttackWaveAddUnits(3, 4, "WarHound");
+ AIAttackWaveAddUnits(4, 6, "WarHound");
+ AIAttackWaveAddUnits(5, 6, "WarHound");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave11_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave11_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave11_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave11_runPlayer = p;
+ aiEC423AC6_wave11_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave11_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave33_enabled;
+wave[17] aiEC423AC6_wave33_lastWave;
+trigger aiEC423AC6_wave33_trigger = null;
+int aiEC423AC6_wave33_runPlayer;
+playergroup aiEC423AC6_wave33_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave33_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave33_enabled[init_i] = true;
+ aiEC423AC6_wave33_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave33_trigger = TriggerCreate("aiEC423AC6_wave33_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave33_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave33_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave33_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave33_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave33_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave33_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave33_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave33_runPlayer;
+ playergroup target = aiEC423AC6_wave33_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave33_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 126; }
+ if (d == 2) { ta = 126; }
+ if (d == 3) { ta = 126; }
+ if (d == 4) { ta = 126; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 3, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 3, "MengskMarauder");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave33_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave33_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave33_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave33_runPlayer = p;
+ aiEC423AC6_wave33_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave33_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave34_enabled;
+wave[17] aiEC423AC6_wave34_lastWave;
+trigger aiEC423AC6_wave34_trigger = null;
+int aiEC423AC6_wave34_runPlayer;
+playergroup aiEC423AC6_wave34_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave34_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave34_enabled[init_i] = true;
+ aiEC423AC6_wave34_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave34_trigger = TriggerCreate("aiEC423AC6_wave34_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave34_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave34_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave34_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave34_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave34_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave34_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave34_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave34_runPlayer;
+ playergroup target = aiEC423AC6_wave34_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave34_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 276; }
+ if (d == 2) { ta = 276; }
+ if (d == 3) { ta = 276; }
+ if (d == 4) { ta = 276; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "WarHound");
+ AIAttackWaveAddUnits(3, 2, "WarHound");
+ AIAttackWaveAddUnits(4, 2, "WarHound");
+ AIAttackWaveAddUnits(5, 2, "WarHound");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave34_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave34_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave34_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave34_runPlayer = p;
+ aiEC423AC6_wave34_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave34_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave12_enabled;
+wave[17] aiEC423AC6_wave12_lastWave;
+trigger aiEC423AC6_wave12_trigger = null;
+int aiEC423AC6_wave12_runPlayer;
+playergroup aiEC423AC6_wave12_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave12_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave12_enabled[init_i] = true;
+ aiEC423AC6_wave12_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave12_trigger = TriggerCreate("aiEC423AC6_wave12_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave12_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave12_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave12_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave12_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave12_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave12_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave12_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave12_runPlayer;
+ playergroup target = aiEC423AC6_wave12_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave12_enabled[p]) {
+ td = 0;
+ if (d == 1) { td = 300; }
+ if (d == 2) { td = 300; }
+ if (d == 3) { td = 300; }
+ if (d == 4) { td = 300; }
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 300; }
+ if (d == 2) { ta = 300; }
+ if (d == 3) { ta = 300; }
+ if (d == 4) { ta = 300; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(1077));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+ AIAttackWaveAddWaypoint(p, PointFromId(732), false);
+ AIAttackWaveAddWaypoint(p, PointFromId(422), false);
+
+ AIAttackWaveAddUnits(2, 3, "MengskGoliath");
+ AIAttackWaveAddUnits(3, 3, "MengskGoliath");
+ AIAttackWaveAddUnits(4, 6, "MengskGoliath");
+ AIAttackWaveAddUnits(5, 6, "MengskGoliath");
+
+ AIAttackWaveAddUnits(2, 2, "MengskThor");
+ AIAttackWaveAddUnits(3, 2, "MengskThor");
+ AIAttackWaveAddUnits(4, 3, "MengskThor");
+ AIAttackWaveAddUnits(5, 3, "MengskThor");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave12_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave12_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave12_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave12_runPlayer = p;
+ aiEC423AC6_wave12_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave12_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave35_enabled;
+wave[17] aiEC423AC6_wave35_lastWave;
+trigger aiEC423AC6_wave35_trigger = null;
+int aiEC423AC6_wave35_runPlayer;
+playergroup aiEC423AC6_wave35_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave35_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave35_enabled[init_i] = true;
+ aiEC423AC6_wave35_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave35_trigger = TriggerCreate("aiEC423AC6_wave35_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave35_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave35_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave35_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave35_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave35_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave35_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave35_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave35_runPlayer;
+ playergroup target = aiEC423AC6_wave35_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave35_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 126; }
+ if (d == 2) { ta = 126; }
+ if (d == 3) { ta = 126; }
+ if (d == 4) { ta = 126; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(3, 2, "MengskMarauder");
+ AIAttackWaveAddUnits(4, 3, "MengskMarauder");
+ AIAttackWaveAddUnits(5, 3, "MengskMarauder");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave35_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave35_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave35_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave35_runPlayer = p;
+ aiEC423AC6_wave35_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave35_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave:
+//--------------------------------------------------------------------------------------------------
+bool[17] aiEC423AC6_wave36_enabled;
+wave[17] aiEC423AC6_wave36_lastWave;
+trigger aiEC423AC6_wave36_trigger = null;
+int aiEC423AC6_wave36_runPlayer;
+playergroup aiEC423AC6_wave36_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave36_init () {
+ int init_i;
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_wave36_enabled[init_i] = true;
+ aiEC423AC6_wave36_lastWave[init_i] = null;
+ }
+
+ aiEC423AC6_wave36_trigger = TriggerCreate("aiEC423AC6_wave36_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave36_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_wave36_enabled[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave36_isEnabled (int p) {
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ return aiEC423AC6_wave36_enabled[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave36_createdWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_wave36_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave36_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_wave36_runPlayer;
+ playergroup target = aiEC423AC6_wave36_runTarget;
+ int d;
+ point gatherPoint = null;
+ int ta = 0;
+ int tg = 0;
+ int ts = 0;
+ int tf = 0;
+ int td = 0;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+ d = PlayerDifficulty(p);
+ if (!aiEC423AC6_wave36_enabled[p]) {
+ td = 0;
+ if (td > 0) {
+ Wait(td, c_timeAI);
+ }
+ return true;
+ }
+
+ aiEC423AC6_customData[p] = "";
+
+ ta = 0;
+ if (d == 1) { ta = 276; }
+ if (d == 2) { ta = 276; }
+ if (d == 3) { ta = 276; }
+ if (d == 4) { ta = 276; }
+ tg = 0;
+ ts = ta;
+ if (tg > 0 && tg < ta) {
+ Wait(ta - tg, c_timeAI);
+ ts = tg;
+ }
+ AIAttackWaveSetTargetPlayer(p, target);
+ AIAttackWaveSetTargetPoint(p, PointFromId(2));
+
+ gatherPoint = aiEC423AC6_defGather[p];
+ AIAttackWaveSetGatherPoint(p, gatherPoint);
+
+ AIAttackWaveClearWaypoints(p);
+
+ AIAttackWaveAddUnits(2, 8, "MengskMarine");
+ AIAttackWaveAddUnits(3, 8, "MengskMarine");
+ AIAttackWaveAddUnits(4, 10, "MengskMarine");
+ AIAttackWaveAddUnits(5, 10, "MengskMarine");
+
+ AIAttackWaveAddUnits(2, 2, "WarHound");
+ AIAttackWaveAddUnits(3, 2, "WarHound");
+ AIAttackWaveAddUnits(4, 2, "WarHound");
+ AIAttackWaveAddUnits(5, 2, "WarHound");
+
+ AIAttackWaveSend(p, ts, false);
+ aiEC423AC6_wave36_lastWave[p] = WaveLastCreated();
+ aiEC423AC6_lastWave[p] = aiEC423AC6_wave36_lastWave[p];
+ Wait(ts, c_timeAI);
+ tf = 0;
+ if (tf > 0) {
+ Wait(tf, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave36_run (int p, playergroup target, bool wait) {
+ aiEC423AC6_wave36_runPlayer = p;
+ aiEC423AC6_wave36_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_wave36_trigger, false, wait);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave Wrappers
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave_enable (int w, int p, bool val) {
+ if (w == 1) { aiEC423AC6_wave1_enable(p, val); }
+ if (w == 13) { aiEC423AC6_wave13_enable(p, val); }
+ if (w == 15) { aiEC423AC6_wave15_enable(p, val); }
+ if (w == 9) { aiEC423AC6_wave9_enable(p, val); }
+ if (w == 14) { aiEC423AC6_wave14_enable(p, val); }
+ if (w == 16) { aiEC423AC6_wave16_enable(p, val); }
+ if (w == 6) { aiEC423AC6_wave6_enable(p, val); }
+ if (w == 17) { aiEC423AC6_wave17_enable(p, val); }
+ if (w == 18) { aiEC423AC6_wave18_enable(p, val); }
+ if (w == 5) { aiEC423AC6_wave5_enable(p, val); }
+ if (w == 19) { aiEC423AC6_wave19_enable(p, val); }
+ if (w == 20) { aiEC423AC6_wave20_enable(p, val); }
+ if (w == 37) { aiEC423AC6_wave37_enable(p, val); }
+ if (w == 21) { aiEC423AC6_wave21_enable(p, val); }
+ if (w == 22) { aiEC423AC6_wave22_enable(p, val); }
+ if (w == 2) { aiEC423AC6_wave2_enable(p, val); }
+ if (w == 23) { aiEC423AC6_wave23_enable(p, val); }
+ if (w == 24) { aiEC423AC6_wave24_enable(p, val); }
+ if (w == 3) { aiEC423AC6_wave3_enable(p, val); }
+ if (w == 25) { aiEC423AC6_wave25_enable(p, val); }
+ if (w == 26) { aiEC423AC6_wave26_enable(p, val); }
+ if (w == 4) { aiEC423AC6_wave4_enable(p, val); }
+ if (w == 27) { aiEC423AC6_wave27_enable(p, val); }
+ if (w == 28) { aiEC423AC6_wave28_enable(p, val); }
+ if (w == 7) { aiEC423AC6_wave7_enable(p, val); }
+ if (w == 29) { aiEC423AC6_wave29_enable(p, val); }
+ if (w == 30) { aiEC423AC6_wave30_enable(p, val); }
+ if (w == 10) { aiEC423AC6_wave10_enable(p, val); }
+ if (w == 31) { aiEC423AC6_wave31_enable(p, val); }
+ if (w == 32) { aiEC423AC6_wave32_enable(p, val); }
+ if (w == 11) { aiEC423AC6_wave11_enable(p, val); }
+ if (w == 33) { aiEC423AC6_wave33_enable(p, val); }
+ if (w == 34) { aiEC423AC6_wave34_enable(p, val); }
+ if (w == 12) { aiEC423AC6_wave12_enable(p, val); }
+ if (w == 35) { aiEC423AC6_wave35_enable(p, val); }
+ if (w == 36) { aiEC423AC6_wave36_enable(p, val); }
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_wave_isEnabled (int w, int p) {
+ if (w == 1) { return aiEC423AC6_wave1_isEnabled(p); }
+ if (w == 13) { return aiEC423AC6_wave13_isEnabled(p); }
+ if (w == 15) { return aiEC423AC6_wave15_isEnabled(p); }
+ if (w == 9) { return aiEC423AC6_wave9_isEnabled(p); }
+ if (w == 14) { return aiEC423AC6_wave14_isEnabled(p); }
+ if (w == 16) { return aiEC423AC6_wave16_isEnabled(p); }
+ if (w == 6) { return aiEC423AC6_wave6_isEnabled(p); }
+ if (w == 17) { return aiEC423AC6_wave17_isEnabled(p); }
+ if (w == 18) { return aiEC423AC6_wave18_isEnabled(p); }
+ if (w == 5) { return aiEC423AC6_wave5_isEnabled(p); }
+ if (w == 19) { return aiEC423AC6_wave19_isEnabled(p); }
+ if (w == 20) { return aiEC423AC6_wave20_isEnabled(p); }
+ if (w == 37) { return aiEC423AC6_wave37_isEnabled(p); }
+ if (w == 21) { return aiEC423AC6_wave21_isEnabled(p); }
+ if (w == 22) { return aiEC423AC6_wave22_isEnabled(p); }
+ if (w == 2) { return aiEC423AC6_wave2_isEnabled(p); }
+ if (w == 23) { return aiEC423AC6_wave23_isEnabled(p); }
+ if (w == 24) { return aiEC423AC6_wave24_isEnabled(p); }
+ if (w == 3) { return aiEC423AC6_wave3_isEnabled(p); }
+ if (w == 25) { return aiEC423AC6_wave25_isEnabled(p); }
+ if (w == 26) { return aiEC423AC6_wave26_isEnabled(p); }
+ if (w == 4) { return aiEC423AC6_wave4_isEnabled(p); }
+ if (w == 27) { return aiEC423AC6_wave27_isEnabled(p); }
+ if (w == 28) { return aiEC423AC6_wave28_isEnabled(p); }
+ if (w == 7) { return aiEC423AC6_wave7_isEnabled(p); }
+ if (w == 29) { return aiEC423AC6_wave29_isEnabled(p); }
+ if (w == 30) { return aiEC423AC6_wave30_isEnabled(p); }
+ if (w == 10) { return aiEC423AC6_wave10_isEnabled(p); }
+ if (w == 31) { return aiEC423AC6_wave31_isEnabled(p); }
+ if (w == 32) { return aiEC423AC6_wave32_isEnabled(p); }
+ if (w == 11) { return aiEC423AC6_wave11_isEnabled(p); }
+ if (w == 33) { return aiEC423AC6_wave33_isEnabled(p); }
+ if (w == 34) { return aiEC423AC6_wave34_isEnabled(p); }
+ if (w == 12) { return aiEC423AC6_wave12_isEnabled(p); }
+ if (w == 35) { return aiEC423AC6_wave35_isEnabled(p); }
+ if (w == 36) { return aiEC423AC6_wave36_isEnabled(p); }
+ return false;
+}
+
+//--------------------------------------------------------------------------------------------------
+unitgroup aiEC423AC6_wave_createdUnits (int w, int p) {
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_wave_createdWave (int w, int p) {
+ if (w == 1) { return aiEC423AC6_wave1_createdWave(p); }
+ if (w == 13) { return aiEC423AC6_wave13_createdWave(p); }
+ if (w == 15) { return aiEC423AC6_wave15_createdWave(p); }
+ if (w == 9) { return aiEC423AC6_wave9_createdWave(p); }
+ if (w == 14) { return aiEC423AC6_wave14_createdWave(p); }
+ if (w == 16) { return aiEC423AC6_wave16_createdWave(p); }
+ if (w == 6) { return aiEC423AC6_wave6_createdWave(p); }
+ if (w == 17) { return aiEC423AC6_wave17_createdWave(p); }
+ if (w == 18) { return aiEC423AC6_wave18_createdWave(p); }
+ if (w == 5) { return aiEC423AC6_wave5_createdWave(p); }
+ if (w == 19) { return aiEC423AC6_wave19_createdWave(p); }
+ if (w == 20) { return aiEC423AC6_wave20_createdWave(p); }
+ if (w == 37) { return aiEC423AC6_wave37_createdWave(p); }
+ if (w == 21) { return aiEC423AC6_wave21_createdWave(p); }
+ if (w == 22) { return aiEC423AC6_wave22_createdWave(p); }
+ if (w == 2) { return aiEC423AC6_wave2_createdWave(p); }
+ if (w == 23) { return aiEC423AC6_wave23_createdWave(p); }
+ if (w == 24) { return aiEC423AC6_wave24_createdWave(p); }
+ if (w == 3) { return aiEC423AC6_wave3_createdWave(p); }
+ if (w == 25) { return aiEC423AC6_wave25_createdWave(p); }
+ if (w == 26) { return aiEC423AC6_wave26_createdWave(p); }
+ if (w == 4) { return aiEC423AC6_wave4_createdWave(p); }
+ if (w == 27) { return aiEC423AC6_wave27_createdWave(p); }
+ if (w == 28) { return aiEC423AC6_wave28_createdWave(p); }
+ if (w == 7) { return aiEC423AC6_wave7_createdWave(p); }
+ if (w == 29) { return aiEC423AC6_wave29_createdWave(p); }
+ if (w == 30) { return aiEC423AC6_wave30_createdWave(p); }
+ if (w == 10) { return aiEC423AC6_wave10_createdWave(p); }
+ if (w == 31) { return aiEC423AC6_wave31_createdWave(p); }
+ if (w == 32) { return aiEC423AC6_wave32_createdWave(p); }
+ if (w == 11) { return aiEC423AC6_wave11_createdWave(p); }
+ if (w == 33) { return aiEC423AC6_wave33_createdWave(p); }
+ if (w == 34) { return aiEC423AC6_wave34_createdWave(p); }
+ if (w == 12) { return aiEC423AC6_wave12_createdWave(p); }
+ if (w == 35) { return aiEC423AC6_wave35_createdWave(p); }
+ if (w == 36) { return aiEC423AC6_wave36_createdWave(p); }
+ return null;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_wave_run (int w, int p, playergroup target, bool wait) {
+ if (w == 1) { aiEC423AC6_wave1_run(p, target, wait); }
+ if (w == 13) { aiEC423AC6_wave13_run(p, target, wait); }
+ if (w == 15) { aiEC423AC6_wave15_run(p, target, wait); }
+ if (w == 9) { aiEC423AC6_wave9_run(p, target, wait); }
+ if (w == 14) { aiEC423AC6_wave14_run(p, target, wait); }
+ if (w == 16) { aiEC423AC6_wave16_run(p, target, wait); }
+ if (w == 6) { aiEC423AC6_wave6_run(p, target, wait); }
+ if (w == 17) { aiEC423AC6_wave17_run(p, target, wait); }
+ if (w == 18) { aiEC423AC6_wave18_run(p, target, wait); }
+ if (w == 5) { aiEC423AC6_wave5_run(p, target, wait); }
+ if (w == 19) { aiEC423AC6_wave19_run(p, target, wait); }
+ if (w == 20) { aiEC423AC6_wave20_run(p, target, wait); }
+ if (w == 37) { aiEC423AC6_wave37_run(p, target, wait); }
+ if (w == 21) { aiEC423AC6_wave21_run(p, target, wait); }
+ if (w == 22) { aiEC423AC6_wave22_run(p, target, wait); }
+ if (w == 2) { aiEC423AC6_wave2_run(p, target, wait); }
+ if (w == 23) { aiEC423AC6_wave23_run(p, target, wait); }
+ if (w == 24) { aiEC423AC6_wave24_run(p, target, wait); }
+ if (w == 3) { aiEC423AC6_wave3_run(p, target, wait); }
+ if (w == 25) { aiEC423AC6_wave25_run(p, target, wait); }
+ if (w == 26) { aiEC423AC6_wave26_run(p, target, wait); }
+ if (w == 4) { aiEC423AC6_wave4_run(p, target, wait); }
+ if (w == 27) { aiEC423AC6_wave27_run(p, target, wait); }
+ if (w == 28) { aiEC423AC6_wave28_run(p, target, wait); }
+ if (w == 7) { aiEC423AC6_wave7_run(p, target, wait); }
+ if (w == 29) { aiEC423AC6_wave29_run(p, target, wait); }
+ if (w == 30) { aiEC423AC6_wave30_run(p, target, wait); }
+ if (w == 10) { aiEC423AC6_wave10_run(p, target, wait); }
+ if (w == 31) { aiEC423AC6_wave31_run(p, target, wait); }
+ if (w == 32) { aiEC423AC6_wave32_run(p, target, wait); }
+ if (w == 11) { aiEC423AC6_wave11_run(p, target, wait); }
+ if (w == 33) { aiEC423AC6_wave33_run(p, target, wait); }
+ if (w == 34) { aiEC423AC6_wave34_run(p, target, wait); }
+ if (w == 12) { aiEC423AC6_wave12_run(p, target, wait); }
+ if (w == 35) { aiEC423AC6_wave35_run(p, target, wait); }
+ if (w == 36) { aiEC423AC6_wave36_run(p, target, wait); }
+}
+
+//--------------------------------------------------------------------------------------------------
+// Attack Wave Sequence
+//--------------------------------------------------------------------------------------------------
+trigger aiEC423AC6_waves_trigger = null;
+int aiEC423AC6_waves_runPlayer;
+playergroup aiEC423AC6_waves_runTarget;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_waves_init () {
+ aiEC423AC6_waves_trigger = TriggerCreate("aiEC423AC6_waves_runFunc");
+}
+
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_waves_runFunc (bool c, bool a) {
+ int p = aiEC423AC6_waves_runPlayer;
+ playergroup target = aiEC423AC6_waves_runTarget;
+
+ if (p < 0 || p >= 16) {
+ return false;
+ }
+
+ aiEC423AC6_wave1_run(p, target, true);
+ aiEC423AC6_wave13_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave15_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave9_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave14_run(p, target, true);
+ aiEC423AC6_wave16_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave6_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave17_run(p, target, true);
+ aiEC423AC6_wave18_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave5_run(p, target, true);
+ aiEC423AC6_wave19_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave20_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave37_run(p, target, true);
+ aiEC423AC6_wave21_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave22_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave2_run(p, target, true);
+ aiEC423AC6_wave23_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave24_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave3_run(p, target, true);
+ aiEC423AC6_wave25_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave26_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave4_run(p, target, true);
+ aiEC423AC6_wave27_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave28_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave7_run(p, target, true);
+ aiEC423AC6_wave29_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave30_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave10_run(p, target, true);
+ aiEC423AC6_wave31_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave32_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave11_run(p, target, true);
+ aiEC423AC6_wave33_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave34_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave12_run(p, target, true);
+ aiEC423AC6_wave35_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave36_run(p, target, false);
+ Wait(0, c_timeAI);
+
+ while (true) {
+ aiEC423AC6_wave7_run(p, target, true);
+ aiEC423AC6_wave29_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave30_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave10_run(p, target, true);
+ aiEC423AC6_wave31_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave32_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave11_run(p, target, true);
+ aiEC423AC6_wave33_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave34_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave12_run(p, target, true);
+ aiEC423AC6_wave35_run(p, target, false);
+ Wait(0, c_timeAI);
+ aiEC423AC6_wave36_run(p, target, false);
+ Wait(0, c_timeAI);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_waves_run (int p, playergroup target) {
+ aiEC423AC6_waves_runPlayer = p;
+ aiEC423AC6_waves_runTarget = PlayerGroupCopy(target);
+
+ TriggerExecute(aiEC423AC6_waves_trigger, false, false);
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_waves_enable (int p, bool val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+
+ aiEC423AC6_wave1_enable(p, val);
+ aiEC423AC6_wave13_enable(p, val);
+ aiEC423AC6_wave15_enable(p, val);
+ aiEC423AC6_wave9_enable(p, val);
+ aiEC423AC6_wave14_enable(p, val);
+ aiEC423AC6_wave16_enable(p, val);
+ aiEC423AC6_wave6_enable(p, val);
+ aiEC423AC6_wave17_enable(p, val);
+ aiEC423AC6_wave18_enable(p, val);
+ aiEC423AC6_wave5_enable(p, val);
+ aiEC423AC6_wave19_enable(p, val);
+ aiEC423AC6_wave20_enable(p, val);
+ aiEC423AC6_wave37_enable(p, val);
+ aiEC423AC6_wave21_enable(p, val);
+ aiEC423AC6_wave22_enable(p, val);
+ aiEC423AC6_wave2_enable(p, val);
+ aiEC423AC6_wave23_enable(p, val);
+ aiEC423AC6_wave24_enable(p, val);
+ aiEC423AC6_wave3_enable(p, val);
+ aiEC423AC6_wave25_enable(p, val);
+ aiEC423AC6_wave26_enable(p, val);
+ aiEC423AC6_wave4_enable(p, val);
+ aiEC423AC6_wave27_enable(p, val);
+ aiEC423AC6_wave28_enable(p, val);
+ aiEC423AC6_wave7_enable(p, val);
+ aiEC423AC6_wave29_enable(p, val);
+ aiEC423AC6_wave30_enable(p, val);
+ aiEC423AC6_wave10_enable(p, val);
+ aiEC423AC6_wave31_enable(p, val);
+ aiEC423AC6_wave32_enable(p, val);
+ aiEC423AC6_wave11_enable(p, val);
+ aiEC423AC6_wave33_enable(p, val);
+ aiEC423AC6_wave34_enable(p, val);
+ aiEC423AC6_wave12_enable(p, val);
+ aiEC423AC6_wave35_enable(p, val);
+ aiEC423AC6_wave36_enable(p, val);
+}
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_waves_stop () {
+ TriggerStop(aiEC423AC6_waves_trigger);
+
+ TriggerStop(aiEC423AC6_wave1_trigger);
+ TriggerStop(aiEC423AC6_wave13_trigger);
+ TriggerStop(aiEC423AC6_wave15_trigger);
+ TriggerStop(aiEC423AC6_wave9_trigger);
+ TriggerStop(aiEC423AC6_wave14_trigger);
+ TriggerStop(aiEC423AC6_wave16_trigger);
+ TriggerStop(aiEC423AC6_wave6_trigger);
+ TriggerStop(aiEC423AC6_wave17_trigger);
+ TriggerStop(aiEC423AC6_wave18_trigger);
+ TriggerStop(aiEC423AC6_wave5_trigger);
+ TriggerStop(aiEC423AC6_wave19_trigger);
+ TriggerStop(aiEC423AC6_wave20_trigger);
+ TriggerStop(aiEC423AC6_wave37_trigger);
+ TriggerStop(aiEC423AC6_wave21_trigger);
+ TriggerStop(aiEC423AC6_wave22_trigger);
+ TriggerStop(aiEC423AC6_wave2_trigger);
+ TriggerStop(aiEC423AC6_wave23_trigger);
+ TriggerStop(aiEC423AC6_wave24_trigger);
+ TriggerStop(aiEC423AC6_wave3_trigger);
+ TriggerStop(aiEC423AC6_wave25_trigger);
+ TriggerStop(aiEC423AC6_wave26_trigger);
+ TriggerStop(aiEC423AC6_wave4_trigger);
+ TriggerStop(aiEC423AC6_wave27_trigger);
+ TriggerStop(aiEC423AC6_wave28_trigger);
+ TriggerStop(aiEC423AC6_wave7_trigger);
+ TriggerStop(aiEC423AC6_wave29_trigger);
+ TriggerStop(aiEC423AC6_wave30_trigger);
+ TriggerStop(aiEC423AC6_wave10_trigger);
+ TriggerStop(aiEC423AC6_wave31_trigger);
+ TriggerStop(aiEC423AC6_wave32_trigger);
+ TriggerStop(aiEC423AC6_wave11_trigger);
+ TriggerStop(aiEC423AC6_wave33_trigger);
+ TriggerStop(aiEC423AC6_wave34_trigger);
+ TriggerStop(aiEC423AC6_wave12_trigger);
+ TriggerStop(aiEC423AC6_wave35_trigger);
+ TriggerStop(aiEC423AC6_wave36_trigger);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Configuration
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_setDefGather (int p, point val) {
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ aiEC423AC6_defGather[p] = val;
+}
+
+//--------------------------------------------------------------------------------------------------
+string aiEC423AC6_getCustomData (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_customData[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+wave aiEC423AC6_getLastWave (int p) {
+ if (p < 0 || p >= 16) {
+ return null;
+ }
+ return aiEC423AC6_lastWave[p];
+}
+
+//--------------------------------------------------------------------------------------------------
+// Start
+//--------------------------------------------------------------------------------------------------
+bool aiEC423AC6_initialized = false;
+
+//--------------------------------------------------------------------------------------------------
+void aiEC423AC6_start (int p) {
+ int init_i;
+
+ if (p < 0 || p >= 16) {
+ return;
+ }
+ if (!aiEC423AC6_initialized) {
+ aiEC423AC6_wave1_init();
+ aiEC423AC6_wave13_init();
+ aiEC423AC6_wave15_init();
+ aiEC423AC6_wave9_init();
+ aiEC423AC6_wave14_init();
+ aiEC423AC6_wave16_init();
+ aiEC423AC6_wave6_init();
+ aiEC423AC6_wave17_init();
+ aiEC423AC6_wave18_init();
+ aiEC423AC6_wave5_init();
+ aiEC423AC6_wave19_init();
+ aiEC423AC6_wave20_init();
+ aiEC423AC6_wave37_init();
+ aiEC423AC6_wave21_init();
+ aiEC423AC6_wave22_init();
+ aiEC423AC6_wave2_init();
+ aiEC423AC6_wave23_init();
+ aiEC423AC6_wave24_init();
+ aiEC423AC6_wave3_init();
+ aiEC423AC6_wave25_init();
+ aiEC423AC6_wave26_init();
+ aiEC423AC6_wave4_init();
+ aiEC423AC6_wave27_init();
+ aiEC423AC6_wave28_init();
+ aiEC423AC6_wave7_init();
+ aiEC423AC6_wave29_init();
+ aiEC423AC6_wave30_init();
+ aiEC423AC6_wave10_init();
+ aiEC423AC6_wave31_init();
+ aiEC423AC6_wave32_init();
+ aiEC423AC6_wave11_init();
+ aiEC423AC6_wave33_init();
+ aiEC423AC6_wave34_init();
+ aiEC423AC6_wave12_init();
+ aiEC423AC6_wave35_init();
+ aiEC423AC6_wave36_init();
+ aiEC423AC6_waves_init();
+
+ for (init_i = 0; init_i <= 16; init_i += 1) {
+ aiEC423AC6_defGather[init_i] = PointFromId(809);
+ }
+
+ aiEC423AC6_initialized = true;
+ }
+
+ AICampaignStart(p);
+}
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/deDE.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/deDE.SC2Data/LocalizedData/GameStrings.txt
new file mode 100644
index 000000000..c305c8149
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/deDE.SC2Data/LocalizedData/GameStrings.txt
@@ -0,0 +1,49 @@
+DocInfo/Author=Blizzard Entertainment /// Blizzard Entertainment
+DocInfo/Name=Abrechnung /// The Reckoning
+LoadingScreen/Tip=Viele Wege führen in den Palastbezirk, doch sie werden von der Liga bewacht. Schalten Sie ihre Stellungen aus und mehr Teile des Schwarms werden sich dem Kampf anschließen. /// There are many avenues into the Imperial sector, but they are guarded by the Dominion. Eliminate them and Swarm forces will join the fight.
+LoadingScreen/TipRestart=Jim Raynor verteidigt Ihre linke Flanke, doch er wird überrannt, falls Sie ihm keine Hilfe senden, wenn er danach fragt. /// Jim Raynor will protect your left flank from attacks, but he'll be overrun if you don't send help when he asks for it.
+MapInfo/Player01/Name=Kerrigans Brut /// Kerrigan's Brood
+MapInfo/Player02/Name=Streitkräfte der Liga /// Dominion Forces
+MapInfo/Player03/Name=Streitkräfte der Liga /// Dominion Forces
+MapInfo/Player04/Name=Streitkräfte der Liga /// Dominion Forces
+MapInfo/Player05/Name=Streitkräfte der Liga /// Dominion Forces
+MapInfo/Player06/Name=Raynor's Raiders /// Raynor's Raiders
+MapInfo/Player07/Name=Brückensteuerung /// Bridge Control
+MapInfo/Player08/Name=Der Schwarm /// The Swarm
+MapInfo/Player09/Name=Feindlich /// Hostile
+MapInfo/Player10/Name=Feindlich /// Hostile
+MapInfo/Player11/Name=Feindlich /// Hostile
+MapInfo/Player12/Name=Feindlich /// Hostile
+Param/Expression/771E00B5=~A~ (~B~, ~C~) /// ~A~ (~B~, ~C~)
+Param/Value/10019ECC=Schwarmcluster /// Hive Cluster
+Param/Value/12CCDD76=Die Hyperion wurde zerstört. /// The Hyperion has been destroyed.
+Param/Value/1C3B9AFC=Befestigte Position /// Entrenched Position
+Param/Value/1EB92790=Palast /// Palace
+Param/Value/2764E991=MoveA - Erzwungen /// MoveA - Forced
+Param/Value/312673F4=
+Param/Value/3CD8D145=Hyperion-Angriff 2 /// Hyperion Attack 2
+Param/Value/40832EE5=Befestigte Position /// Entrenched Position
+Param/Value/47B5F2AE=Himmelszorn-Schwadron /// Sky Fury Squadron
+Param/Value/4964D689=Tipps /// Tips
+Param/Value/56D863DF=Größte Zerg-Streitmacht /// Largest Zerg Force
+Param/Value/57AE1FF8=Hyperion-Angriff 3 /// Hyperion Attack 3
+Param/Value/5AF16DC3=Alpha-Schwadron /// Alpha Squadron
+Param/Value/6AA01F1B=All Ihre Gebäude wurden zerstört. /// All of your structures have been destroyed.
+Param/Value/6BF797B1=Von der Hyperion erlittener Schaden /// Damage Taken by the Hyperion
+Param/Value/7ACFB4DF=Raynor's Raiders /// Raynor's Raiders
+Param/Value/820C3550=MoveB - Zufällig /// MoveB - Random
+Param/Value/8963E359=Befestigte Position /// Entrenched Position
+Param/Value/A0FB34D1=Die Hyperion wird angegriffen /// Hyperion Under Attack
+Param/Value/A9B0DEA9=Hyperion /// The Hyperion
+Param/Value/AA33E61F=Die Hyperion ist schwer beschädigt /// Hyperion Badly Damaged
+Param/Value/AF9EB277=Die Hyperion wird angegriffen /// Hyperion Under Attack
+Param/Value/B4B4E180=Von Kerrigan getötete Gegner /// Kerrigan Kills
+Param/Value/CEB82674=Gegnerische Einheiten getötet /// Enemy Troops Killed
+Param/Value/D67953B1=Wegfindungskosten = /// Pathing Cost =
+Param/Value/DCEB3B79=MoveB - Erzwungen /// MoveB - Forced
+Param/Value/DD0C4B19=Hyperion-Angriff 1 /// Hyperion Attack 1
+Param/Value/E2051C14=Odin /// The Odin
+Param/Value/EC6FA82A=MoveA - Zufällig /// MoveA - Random
+Param/Value/F74B6456=Von Raynor's Raiders getötete Gegner /// Raynor's Raiders Kills
+Unit/Name/Factory=Fabrik /// Factory
+Unit/Name/GateControlUnit=Brückenkontrolle /// Bridge Control
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/deDE.SC2Data/LocalizedData/ObjectStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/deDE.SC2Data/LocalizedData/ObjectStrings.txt
new file mode 100644
index 000000000..75f2e1c10
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/deDE.SC2Data/LocalizedData/ObjectStrings.txt
@@ -0,0 +1,10 @@
+AI/Name/05FE0989=P05 - Pink
+AI/Name/17BA421C=P03 - Teal
+AI/Name/392DEDDF=Za'gara Gates
+AI/Name/7AC59A6F=P04 - Yellow
+AI/Name/AFDBFFDC=P09 - Blue
+AI/Name/EC423AC6=P02 - Red
+Sound/Name/IntroMusic=IntroMusic
+Sound/Name/VictoryMusic=VictoryMusic
+Soundtrack/Name/IntroMusic=IntroMusic
+Soundtrack/Name/VictoryMusic=VictoryMusic
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/deDE.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/deDE.SC2Data/LocalizedData/TriggerStrings.txt
new file mode 100644
index 000000000..6d09f99f8
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/deDE.SC2Data/LocalizedData/TriggerStrings.txt
@@ -0,0 +1,236 @@
+Category/Name/04D71C86=Starting Sequence
+Category/Name/0B0A7942======== MAIN =======
+Category/Name/11102239=Gates
+Category/Name/17F2C4BF=AI
+Category/Name/19E8D425=Main Objective - Hyperion Must Survive
+Category/Name/1ADB580B======== CINEMATIC =======
+Category/Name/1DD683CB=Hyperion
+Category/Name/22C8307E======== GAMEPLAY =======
+Category/Name/2A881197=Main Objective - Destroy Palace Gate
+Category/Name/31271F14=Zerg
+Category/Name/33FB539C======== OBJECTIVES =======
+Category/Name/3585DD2D=Variables
+Category/Name/551D8709=Midgame Cinematic
+Category/Name/5AF004C1=Victory Cinematic
+Category/Name/644E8094=Initialization
+Category/Name/684EF078=Global Variables
+Category/Name/7F423160=Mengsk Taunts
+Category/Name/946333D4=Dominion
+Category/Name/9CCD4C0D=Cinematic Variables
+Category/Name/B378510D=Intro Cinematic
+Category/Name/CC5013A3=Utility
+Category/Name/CD72C2D2=Victory/Defeat
+Category/Name/F7EEABB4=Bonus Objective - Clear Outer Lanes
+Category/Name/F8142391=Debug
+FunctionDef/Grammar/04AA644A=Move units from ~originalRegion~ to ~movePoint~, and have them return to their original positions with delay ~delay|Delay~
+FunctionDef/Grammar/398F1A9A=Enemies within ~range~ of ~unit~ matching ~filter~
+FunctionDef/Grammar/B8C55820=Repair ~structure~ with SCV at index ~index|Index~
+FunctionDef/Name/04AA644A=Intro Move Units
+FunctionDef/Name/398F1A9A=Enemies Within Range
+FunctionDef/Name/B88160FE=Create Patrol Unit
+FunctionDef/Name/B8C55820=Repair Structure with SCV
+FunctionDef/Name/C15ED3B6=AI - Diamondback
+ParamDef/Name/199051A9=Unit Spawn Point
+ParamDef/Name/1AFDC4B3=Unit
+ParamDef/Name/25102314=MovePoint
+ParamDef/Name/2B45B0E5=Unit Group
+ParamDef/Name/3779B33B=NearbyUnits
+ParamDef/Name/5C98BF97=Unit Facing Point
+ParamDef/Name/8C828248=Delay
+ParamDef/Name/9D871E87=Filter
+ParamDef/Name/A3BAE7BA=Index
+ParamDef/Name/BCCEB6CB=OriginalRegion
+ParamDef/Name/D0C7DF75=Structure
+ParamDef/Name/D2EA25BC=Range
+ParamDef/Name/D3F541E5=Unit Type
+ParamDef/Name/DFE84730=Diamondback
+ParamDef/Name/F6C47F8C=Owner
+Structure/Name/02D4152D=RECORD_RepairSCV
+Trigger/Name/045C8179=Objective Destroy Palace Gate Failed
+Trigger/Name/04AE8507=Kerrigan Is Killed Q
+Trigger/Name/06A3FAEC=Hyperion Trigger
+Trigger/Name/087495BB=Mid Hyperion Movement
+Trigger/Name/0A3E4AC0=Hyperion Intro Q
+Trigger/Name/0E7DD429=Mid Cleanup
+Trigger/Name/0E90E2D1=Victory Cleanup
+Trigger/Name/0EE212BB=Lane 3
+Trigger/Name/0F391288=Objective Hyperion Must Survive Complete
+Trigger/Name/10484B80=Objective - Clear Outer Lanes - Update
+Trigger/Name/11526464=Hyperion Attacked
+Trigger/Name/1259352A=SCV Repair Script
+Trigger/Name/1263F02F=Death Head Q
+Trigger/Name/12E86F79=Pride of Augustgrad Q
+Trigger/Name/14585378=Palace Gate at 75%
+Trigger/Name/16AEDC8B=DEBUG - Hyperion
+Trigger/Name/1DC6A40C=Aegis Guard / Bulwark Company Q
+Trigger/Name/1F33FB61=Intro Cleanup Not Skipped
+Trigger/Name/207D017A=Dominion Right 1 Deactivate
+Trigger/Name/21FDCD90=Handle Kerrigan Death
+Trigger/Name/225C725A=Intro Cinematic End
+Trigger/Name/2447B833=Create Dominion Patrol - Left Side
+Trigger/Name/26EF34E4=Initialization
+Trigger/Name/28D3794E=Objective Destroy Palace Gate Create
+Trigger/Name/2B8F2D6F=Init 03 Units
+Trigger/Name/2B9EC8DE=Sky Fury / Night Wolf Q
+Trigger/Name/2F267459=Dominion Right 2 Deactivate
+Trigger/Name/3293F101=Init 02 Players
+Trigger/Name/339DCA1C=Lane 1
+Trigger/Name/3472693E=Lane 1 Spawn Loop
+Trigger/Name/34C1C2A6=Init 01 Technology
+Trigger/Name/35FB224C=Objective Hyperion Must Survive Create
+Trigger/Name/36E6FAA6=Victory Q
+Trigger/Name/3A3A2F2B=Elite Force Intro Q
+Trigger/Name/46073A3C=Hyperion Big Attack 2 Q
+Trigger/Name/464A1841=Victory Zerg
+Trigger/Name/4D0BCD90=Create Augustgrad Gate Pings
+Trigger/Name/4FB8046F=Objective - Clear Outer Lanes - Create
+Trigger/Name/536B4E20=Init 05 Environment
+Trigger/Name/5593E429=DEBUG - AI Debug Output
+Trigger/Name/591B8338=Outback Hunter / Sons of Korhal Q
+Trigger/Name/5DDE161C=Victory Sequence
+Trigger/Name/5E176E0A=Init 04 Music
+Trigger/Name/5E798168=Intro Music
+Trigger/Name/61CE220E=Objective Destroy Palace Gate Complete
+Trigger/Name/665536A8=Hyperion SCV Respawn
+Trigger/Name/67BA042A=Dominion Left 2 Destroyed Q
+Trigger/Name/68A6B37C=Victory Cheat
+Trigger/Name/6BDB3DCA=Tip - Elite Forces Q
+Trigger/Name/6DFAA76F=Augustgrad Gate Intro Proximity
+Trigger/Name/70B20FA2=Hyperion Big Attack 3 Q
+Trigger/Name/7725090D=Start Game
+Trigger/Name/77EB8054=Dominion Left 2 Deactivate
+Trigger/Name/79813264=Init 07 Help
+Trigger/Name/7CC230CC=Init 06 Difficulties
+Trigger/Name/8CFE6E20=Hyperion Attacked First Time Q
+Trigger/Name/8D63DC78=Victory Destroy Palace Gate Completed
+Trigger/Name/9259F53F=Hyperion Big Attack 1 Q
+Trigger/Name/930D2A10=Defeat Base Dead
+Trigger/Name/9BE8ED02=Dominion Middle 2 Deactivate
+Trigger/Name/9E453ED8=AI Give Resources
+Trigger/Name/9F0436E9=Augustgrad Gate Intros Q
+Trigger/Name/A0D858AA=Defeat
+Trigger/Name/A8DDDF64=Start AI
+Trigger/Name/A93CF1AB=Victory Cinematic End
+Trigger/Name/B05AD640=Objective Hyperion Must Survive Failed
+Trigger/Name/B2AFB135=Start Upgrades (Normal)
+Trigger/Name/B377C922=Objective - Clear Outer Lanes - Complete
+Trigger/Name/B5078FB1=Mid Cinematic
+Trigger/Name/BA259BC1=Bulwark Cmpy / Shock Division Q
+Trigger/Name/BA6103F1=Bridge Control
+Trigger/Name/BC7E3853=Hyperion Damaged
+Trigger/Name/BCE0B1EF=Create Palace Gate Ping
+Trigger/Name/C09F3724=Mid Cinematic End
+Trigger/Name/C116D284=Hyperion Low Health Q
+Trigger/Name/C17EBB3F=Mid Q
+Trigger/Name/C1981AB2=Prometheus Cmpy / Outback Hunter Q
+Trigger/Name/C4828344=Odin Dies
+Trigger/Name/C9E9EE10=Lane 2 Spawn Loop
+Trigger/Name/CC636751=Victory Cinematic
+Trigger/Name/D0096EC0=DEBUG - Change Colors
+Trigger/Name/D2614D5A=Lane 2
+Trigger/Name/D2A5EAE6=Lane Cleared Q
+Trigger/Name/D671C2A7=Mid Setup
+Trigger/Name/DA7F8847=Raynor Attack Prep Q
+Trigger/Name/DCF3DAF1=Victory
+Trigger/Name/E27FE8EA=Hyperion Attacked Q
+Trigger/Name/E53A19FD=Intro Cleanup Skipped
+Trigger/Name/E5778D60=Defeat Hyperion Dies
+Trigger/Name/E7D651FF=Dominion Middle 1 Deactivate
+Trigger/Name/E8E2A6E0=Palace Gate at 50%
+Trigger/Name/EAE6803E=Raynor Attack Prep Timing
+Trigger/Name/EC48A503=Start Upgrades (Hard)
+Trigger/Name/ECCBA2B2=Intro Cinematic
+Trigger/Name/ED605C53=Lane 3 Spawn Loop
+Trigger/Name/EDD29BA4=Intro Setup
+Trigger/Name/F15F2AAD=Intro Q
+Trigger/Name/F253B06C=Create Dominion Patrol - Right Side
+Trigger/Name/F97F5B41=Victory Setup
+Trigger/Name/FB4BAB63=Defeat Cheat
+Trigger/Name/FFF767EB=Dominion Right 1 Destroyed Q
+Variable/Name/001C166A=i
+Variable/Name/03F40C8C=PLAYER_04_DOMINION_YELLOW
+Variable/Name/03F8FAED=PalaceGatePing
+Variable/Name/059A9ECC=SCVFound
+Variable/Name/07AC9338=FadeDuration
+Variable/Name/0BC531CA=PLAYER_01_USER
+Variable/Name/0FFF542A=Transmission
+Variable/Name/11BD6517=MoveToA
+Variable/Name/171FEE74=DominionPatrolLeftGroup
+Variable/Name/1924E1F9=FadeDuration
+Variable/Name/1A738706=TempPoint
+Variable/Name/1C646281=KERRIGAN
+Variable/Name/1D7A16C7=CinematicTempUnits
+Variable/Name/1E41AB1B=FadeDuration
+Variable/Name/256B1AFA=LanesCleared
+Variable/Name/263D0FDF=PLAYER_09_RAYNOR_BLUE
+Variable/Name/26872465=i
+Variable/Name/2AC37ADE=PLAYER_07_GATES
+Variable/Name/2E1CF6C7=DepotGroup
+Variable/Name/2F2E36CC=PLAYER_14_IZSHA
+Variable/Name/30601208=YellowEnd
+Variable/Name/3F62F8D4=BlueEnd
+Variable/Name/4652EE01=Enemies
+Variable/Name/46794C6F=RepairSCVs
+Variable/Name/46CB88F7=IntroUnitFacings
+Variable/Name/477F7320=BunkerGroup
+Variable/Name/49D20C46=ObjectiveHyperionMustSurvive
+Variable/Name/4A3F85FB=MissionTimer
+Variable/Name/4E5B83CC=CinematicCompleted
+Variable/Name/52C77A5C=CinematicHiddenUnits
+Variable/Name/583FA154=i
+Variable/Name/5A4F10E5=HyperionDamaged
+Variable/Name/5BAE96AC=i
+Variable/Name/5EFABD28=Patrollers
+Variable/Name/5F683639=Depot
+Variable/Name/6134D9CF=SCV
+Variable/Name/61F2403C=i
+Variable/Name/7199542A=HyperionVictims
+Variable/Name/72F17D21=IntroUnitPositions
+Variable/Name/75B5F8A2=Patrollers
+Variable/Name/77EB9BE9=MoveToB
+Variable/Name/7C325357=DominionPatrolRightGroup
+Variable/Name/801BBC3E=HyperionFirstAttackTransmision
+Variable/Name/801E4AFA=ObjectiveDestroyPalaceGate
+Variable/Name/820A97B0=LaneClearedCount
+Variable/Name/872E545C=InCinematic
+Variable/Name/89FFE016=PatrollerPointsA
+Variable/Name/8C2F8286=i
+Variable/Name/9407FBDE=MidHyperion
+Variable/Name/949EDE96=PLAYER_03_DOMINION_TEAL
+Variable/Name/96FCC807=i
+Variable/Name/979B40EA=PLAYER_05_DOMINION_PINK
+Variable/Name/97B75446=IntroUnits
+Variable/Name/98AF731E=Ping
+Variable/Name/A1677F82=i
+Variable/Name/A286DA83=NumberOfRepairSCVs
+Variable/Name/A4DDE81B=PLAYER_10_BRIDGE_CONTROL
+Variable/Name/A6444A2D=FinalValue
+Variable/Name/AC6A2DC8=NumberOfIntroUnits
+Variable/Name/AC936921=FadeDuration
+Variable/Name/B05E9A85=OdinPing
+Variable/Name/B0EFA322=PatrollerPointsA
+Variable/Name/B2171D1E=HomePoint
+Variable/Name/B56CDD88=VictoryKerrigan
+Variable/Name/C00E2963=LanePing
+Variable/Name/C131F60D=DepotCount
+Variable/Name/C256EDA0=VictoryZerg1
+Variable/Name/C709835E=DominionPlayers
+Variable/Name/C8931965=PatrollerPointsB
+Variable/Name/CC4353FA=PalaceTurrets
+Variable/Name/CDE75B31=StartValue
+Variable/Name/CEA6A533=PatrollerPointsB
+Variable/Name/D1B49D5C=ObjectiveClearOuterLanes
+Variable/Name/D465A500=i
+Variable/Name/D5AA8755=DominionLeftGather
+Variable/Name/D7012AC7=HyperionPing
+Variable/Name/DC3730F7=GameOver
+Variable/Name/DEEFDB94=CinematicHyperion
+Variable/Name/E81B6940=HYPERION
+Variable/Name/E9D013BC=VictoryZerg2
+Variable/Name/EDEBF587=FadeDuration
+Variable/Name/EE75544B=DepotLoc
+Variable/Name/F0ACE0B1=PLAYER_02_DOMINION_RED
+Variable/Name/F5369777=FadeDuration
+Variable/Name/F66A3470=i
+Variable/Name/FD091901=DominionRightGather
+Variable/Name/FFA48BE4=MoveTo
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
new file mode 100644
index 000000000..6a444ea24
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
@@ -0,0 +1,49 @@
+DocInfo/Author=Blizzard Entertainment
+DocInfo/Name=The Reckoning
+LoadingScreen/Tip=There are many avenues into the Imperial sector, but they are guarded by the Dominion. Eliminate them and Swarm forces will join the fight.
+LoadingScreen/TipRestart=Jim Raynor will protect your left flank from attacks, but he'll be overrun if you don't send help when he asks for it.
+MapInfo/Player01/Name=Kerrigan's Brood
+MapInfo/Player02/Name=Dominion Forces
+MapInfo/Player03/Name=Dominion Forces
+MapInfo/Player04/Name=Dominion Forces
+MapInfo/Player05/Name=Dominion Forces
+MapInfo/Player06/Name=Raynor's Raiders
+MapInfo/Player07/Name=Bridge Control
+MapInfo/Player08/Name=The Swarm
+MapInfo/Player09/Name=Hostile
+MapInfo/Player10/Name=Hostile
+MapInfo/Player11/Name=Hostile
+MapInfo/Player12/Name=Hostile
+Param/Expression/771E00B5=~A~ (~B~, ~C~)
+Param/Value/10019ECC=Hive Cluster
+Param/Value/12CCDD76=The Hyperion has been destroyed.
+Param/Value/1C3B9AFC=Entrenched Position
+Param/Value/1EB92790=Palace
+Param/Value/2764E991=MoveA - Forced
+Param/Value/312673F4=
+Param/Value/3CD8D145=Hyperion Attack 2
+Param/Value/40832EE5=Entrenched Position
+Param/Value/47B5F2AE=Sky Fury Squadron
+Param/Value/4964D689=Tips
+Param/Value/56D863DF=Largest Zerg Force
+Param/Value/57AE1FF8=Hyperion Attack 3
+Param/Value/5AF16DC3=Alpha Squadron
+Param/Value/6AA01F1B=All of your structures have been destroyed.
+Param/Value/6BF797B1=Damage Taken by the Hyperion
+Param/Value/7ACFB4DF=Raynor's Raiders
+Param/Value/820C3550=MoveB - Random
+Param/Value/8963E359=Entrenched Position
+Param/Value/A0FB34D1=Hyperion Under Attack
+Param/Value/A9B0DEA9=The Hyperion
+Param/Value/AA33E61F=Hyperion Badly Damaged
+Param/Value/AF9EB277=Hyperion Under Attack
+Param/Value/B4B4E180=Kerrigan Kills
+Param/Value/CEB82674=Enemy Troops Killed
+Param/Value/D67953B1=Pathing Cost =
+Param/Value/DCEB3B79=MoveB - Forced
+Param/Value/DD0C4B19=Hyperion Attack 1
+Param/Value/E2051C14=The Odin
+Param/Value/EC6FA82A=MoveA - Random
+Param/Value/F74B6456=Raynor's Raiders Kills
+Unit/Name/Factory=Factory
+Unit/Name/GateControlUnit=Bridge Control
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/enUS.SC2Data/LocalizedData/ObjectStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/enUS.SC2Data/LocalizedData/ObjectStrings.txt
new file mode 100644
index 000000000..6c2a7cfbe
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/enUS.SC2Data/LocalizedData/ObjectStrings.txt
@@ -0,0 +1,10 @@
+AI/Name/05FE0989=P05 - Pink
+AI/Name/17BA421C=P03 - Orange
+AI/Name/392DEDDF=P14 - Purple - Zagara
+AI/Name/7AC59A6F=P04 - Yellow
+AI/Name/AFDBFFDC=P09 - Blue - Raynor
+AI/Name/EC423AC6=P02 - Red
+Sound/Name/IntroMusic=IntroMusic
+Sound/Name/VictoryMusic=VictoryMusic
+Soundtrack/Name/IntroMusic=IntroMusic
+Soundtrack/Name/VictoryMusic=VictoryMusic
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
new file mode 100644
index 000000000..ab49c691a
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
@@ -0,0 +1,277 @@
+Category/Name/04D71C86=Starting Sequence
+Category/Name/0B0A7942======== MAIN =======
+Category/Name/11102239=Gates
+Category/Name/17F2C4BF=AI
+Category/Name/19E8D425=Main Objective - Hyperion Must Survive
+Category/Name/1ADB580B======== CINEMATIC =======
+Category/Name/1DD683CB=Hyperion
+Category/Name/22C8307E======== GAMEPLAY =======
+Category/Name/2A881197=Main Objective - Destroy Palace Gate
+Category/Name/31271F14=Zerg
+Category/Name/33FB539C======== OBJECTIVES =======
+Category/Name/3585DD2D=Variables
+Category/Name/4102B9ED=Achievements/Stats
+Category/Name/43FFA855=Performance
+Category/Name/551D8709=Midgame Cinematic
+Category/Name/5AF004C1=Victory Cinematic
+Category/Name/644E8094=Initialization
+Category/Name/684EF078=Global Variables
+Category/Name/946333D4=Dominion
+Category/Name/9CCD4C0D=Cinematic Variables
+Category/Name/B378510D=Intro Cinematic
+Category/Name/CC5013A3=Utility
+Category/Name/CD72C2D2=Victory/Defeat
+Category/Name/DF76661B======== ARCHIPELAGO =======
+Category/Name/F7EEABB4=Bonus Objective - Clear Outer Lanes
+Category/Name/F8142391=Debug
+Category/Name/FB3F5177=Tips
+FunctionDef/Grammar/04AA644A=Move units from ~originalRegion~ to ~movePoint~, and have them return to their original positions with delay ~delay|Delay~
+FunctionDef/Grammar/398F1A9A=Enemies within ~range~ of ~unit~ matching ~filter~
+FunctionDef/Grammar/B8C55820=Repair ~structure~ with SCV at index ~index|Index~
+FunctionDef/Name/04AA644A=Intro Move Units
+FunctionDef/Name/398F1A9A=Enemies Within Range
+FunctionDef/Name/9471B7DE=Hide Kerrigan
+FunctionDef/Name/B88160FE=Create Patrol Unit
+FunctionDef/Name/B8C55820=Repair Structure with SCV
+FunctionDef/Name/C15ED3B6=AI - Diamondback
+FunctionDef/Name/CDF3D6EF=Unload Nydus Anim
+ParamDef/Name/199051A9=Unit Spawn Point
+ParamDef/Name/1AFDC4B3=Unit
+ParamDef/Name/25102314=MovePoint
+ParamDef/Name/2B45B0E5=Unit Group
+ParamDef/Name/3779B33B=NearbyUnits
+ParamDef/Name/5C98BF97=Unit Facing Point
+ParamDef/Name/8C828248=Delay
+ParamDef/Name/9D871E87=Filter
+ParamDef/Name/A3BAE7BA=Index
+ParamDef/Name/BCCEB6CB=OriginalRegion
+ParamDef/Name/D0C7DF75=Structure
+ParamDef/Name/D2EA25BC=Range
+ParamDef/Name/D3F541E5=Unit Type
+ParamDef/Name/DFE84730=Diamondback
+ParamDef/Name/EB94AB99=CHOSEN_NYDUS
+ParamDef/Name/F6C47F8C=Owner
+Structure/Name/02D4152D=RECORD_RepairSCV
+Trigger/Name/045C8179=Objective Destroy Palace Gate Failed
+Trigger/Name/04AE8507=Kerrigan Is Killed Q
+Trigger/Name/06A3FAEC=Hyperion Trigger
+Trigger/Name/087495BB=Mid Hyperion Movement
+Trigger/Name/0A3E4AC0=Hyperion Intro Q
+Trigger/Name/0E7DD429=Mid Cleanup
+Trigger/Name/0E90E2D1=Victory Cleanup
+Trigger/Name/0EE212BB=Lane 3
+Trigger/Name/0F391288=Objective Hyperion Must Survive Complete
+Trigger/Name/10484B80=Objective - Clear Outer Lanes - Update
+Trigger/Name/11526464=Hyperion Attacked
+Trigger/Name/1259352A=SCV Repair Script
+Trigger/Name/14585378=Palace Gate at 90%
+Trigger/Name/151D459E=Start Harvesting
+Trigger/Name/1E167F98=Performance Handler
+Trigger/Name/1F33FB61=Intro Cleanup Not Skipped
+Trigger/Name/207D017A=Dominion Right 1 Deactivate
+Trigger/Name/21FDCD90=Handle Kerrigan Death
+Trigger/Name/225C725A=Intro Cinematic End
+Trigger/Name/2447B833=Create Dominion Patrol - Left Side
+Trigger/Name/26EF34E4=Initialization
+Trigger/Name/28D3794E=Objective Destroy Palace Gate Create
+Trigger/Name/2AD00E4C=Mid Music
+Trigger/Name/2B8F2D6F=Init 03 Units
+Trigger/Name/2F267459=Dominion Right 2 Deactivate
+Trigger/Name/2FA14EB7=Lane Spectacle Start
+Trigger/Name/3293F101=Init 02 Players
+Trigger/Name/32CA0CE3=Set Mineral Count
+Trigger/Name/339DCA1C=Lane 1
+Trigger/Name/3472693E=Lane 1 Spawn Loop
+Trigger/Name/34C1C2A6=Init 01 Technology
+Trigger/Name/35FB224C=Objective Hyperion Must Survive Create
+Trigger/Name/36E6FAA6=Victory Q
+Trigger/Name/3A3A2F2B=Elite Force Intro Q
+Trigger/Name/46073A3C=Hyperion Big Attack 2 Q
+Trigger/Name/464A1841=Victory Zerg
+Trigger/Name/4D0BCD90=Create Augustgrad Gate Pings
+Trigger/Name/4FB8046F=Objective - Clear Outer Lanes - Create
+Trigger/Name/536B4E20=Init 05 Environment
+Trigger/Name/554DB9AD=Achievement: Timed Run N/H
+Trigger/Name/56304F66=Achievement: Hyperion Damage Taken
+Trigger/Name/57A4F973=Largest Zerg Force
+Trigger/Name/5DDE161C=Victory Sequence
+Trigger/Name/5E176E0A=Init 04 Music/Sound
+Trigger/Name/61CE220E=Objective Destroy Palace Gate Complete
+Trigger/Name/65D911BD=Arch Init
+Trigger/Name/665536A8=Hyperion SCV Respawn
+Trigger/Name/67BA042A=Dominion Left 2 Destroyed Q
+Trigger/Name/68A6B37C=Victory Cheat
+Trigger/Name/6BDB3DCA=Tip - Elite Forces Q
+Trigger/Name/6C7B5FC4=Intro Music
+Trigger/Name/6CDDF74C=Player Aborts Mission
+Trigger/Name/6DFAA76F=Augustgrad Gate Intro Proximity
+Trigger/Name/70B20FA2=Hyperion Big Attack 3 Q
+Trigger/Name/73348715=Show Map Cheat Used
+Trigger/Name/7725090D=Start Game Q
+Trigger/Name/77EB8054=Dominion Left 2 Deactivate
+Trigger/Name/79813264=Init 07 Help
+Trigger/Name/7CC230CC=Init 06 Difficulties
+Trigger/Name/7DFE44B3=Lane 3 Cleared Q
+Trigger/Name/8CFE6E20=Hyperion Attacked First Time Q
+Trigger/Name/8D63DC78=Victory Destroy Palace Gate Completed
+Trigger/Name/9259F53F=Hyperion Big Attack 1 Q
+Trigger/Name/930D2A10=Defeat Base Dead
+Trigger/Name/9740FC84=Player 2 Sends AI Wave
+Trigger/Name/9B22DBF0=Transmission: Palace Gate at 50% Q
+Trigger/Name/9BE8ED02=Dominion Middle 2 Deactivate
+Trigger/Name/9E453ED8=AI Give Resources
+Trigger/Name/9F0436E9=Augustgrad Gate Intros Q
+Trigger/Name/A0D858AA=Defeat
+Trigger/Name/A8DDDF64=Start AI
+Trigger/Name/A93CF1AB=Victory Cinematic End
+Trigger/Name/B05AD640=Objective Hyperion Must Survive Failed
+Trigger/Name/B26D5DCA=Zagara Upgrades
+Trigger/Name/B2AFB135=Start Upgrades (Normal)
+Trigger/Name/B377C922=Objective - Clear Outer Lanes - Complete
+Trigger/Name/B5078FB1=Mid Cinematic
+Trigger/Name/BA6103F1=Bridge Control
+Trigger/Name/BC7E3853=Total Hyperion Damage
+Trigger/Name/BCE0B1EF=Create Palace Ping
+Trigger/Name/C09F3724=Mid Cinematic End
+Trigger/Name/C116D284=Hyperion Low Health Q
+Trigger/Name/C16647C4=Tip Mission Help Q
+Trigger/Name/C17EBB3F=Mid Q
+Trigger/Name/C1D47DC5=Raynor Kills
+Trigger/Name/C4828344=Odin Dies Q
+Trigger/Name/C5684955=Archipelago Initialization
+Trigger/Name/C902EDB6=Lane Pause Loop
+Trigger/Name/C9E9EE10=Lane 2 Spawn Loop
+Trigger/Name/CC636751=Victory Cinematic
+Trigger/Name/D026A3E7=Achievement: Destroy the Odin H
+Trigger/Name/D1790502=Lane 2 Cleared Q
+Trigger/Name/D2614D5A=Lane 2
+Trigger/Name/D2A5EAE6=Lane 1 Cleared Q
+Trigger/Name/D671C2A7=Mid Setup
+Trigger/Name/DA7F8847=Raynor Attack Prep Q
+Trigger/Name/DCF3DAF1=Victory
+Trigger/Name/E27FE8EA=Hyperion Attacked Q
+Trigger/Name/E53A19FD=Intro Cleanup Skipped
+Trigger/Name/E5778D60=Defeat Hyperion Dies
+Trigger/Name/E7D651FF=Dominion Middle 1 Deactivate
+Trigger/Name/E8E2A6E0=Palace Gate at 50%
+Trigger/Name/EAE6803E=Raynor Attack Prep Timing
+Trigger/Name/EC48A503=Start Upgrades (Hard)
+Trigger/Name/EC7EC30E=Transmission: Palace Gate at 90% Q
+Trigger/Name/ECCBA2B2=Intro Cinematic
+Trigger/Name/ED605C53=Lane 3 Spawn Loop
+Trigger/Name/EDD29BA4=Intro Setup
+Trigger/Name/F15F2AAD=Intro Q
+Trigger/Name/F253B06C=Create Dominion Patrol - Right Side
+Trigger/Name/F97F5B41=Victory Setup
+Trigger/Name/FA5F2A05=Pause Units Again
+Trigger/Name/FB4BAB63=Defeat Cheat
+Trigger/Name/FFF767EB=Dominion Right 1 Destroyed Q
+Variable/Name/001C166A=i
+Variable/Name/03F40C8C=PLAYER_04_DOMINION_YELLOW
+Variable/Name/03F8FAED=PalaceGatePing
+Variable/Name/0506F4B0=Lane3Paused
+Variable/Name/059A9ECC=SCVFound
+Variable/Name/0725C8EF=Lane2Paused
+Variable/Name/07AC9338=FadeDuration
+Variable/Name/09FA23B3=Index
+Variable/Name/0BC531CA=PLAYER_01_USER
+Variable/Name/11BD6517=MoveToA
+Variable/Name/171FEE74=DominionPatrolLeftGroup
+Variable/Name/1924E1F9=FadeDuration
+Variable/Name/1A738706=TempPoint
+Variable/Name/1C646281=KERRIGAN
+Variable/Name/1D7A16C7=CinematicTempUnits
+Variable/Name/1E41AB1B=FadeDuration
+Variable/Name/20126896=IntroMusicCompleted
+Variable/Name/242A7731=IntroTerranAmb
+Variable/Name/256B1AFA=LanesCleared
+Variable/Name/263D0FDF=PLAYER_09_RAYNOR_BLUE
+Variable/Name/26872465=i
+Variable/Name/28F5DD42=Soundtrack
+Variable/Name/2F2E36CC=PLAYER_14_ZAGARA
+Variable/Name/30601208=YellowEnd
+Variable/Name/3F62F8D4=BlueEnd
+Variable/Name/440AB586=Soundtrack
+Variable/Name/4652EE01=Enemies
+Variable/Name/46685FDD=Player2WavesSent
+Variable/Name/46794C6F=RepairSCVs
+Variable/Name/46CB88F7=IntroUnitFacings
+Variable/Name/49D20C46=ObjectiveHyperionMustSurvive
+Variable/Name/4A3F85FB=AchievementTimedRunTimer
+Variable/Name/4C1AFCC0=Zagara Reinforcements
+Variable/Name/4E5B83CC=CinematicCompleted
+Variable/Name/52C77A5C=CinematicHiddenUnits
+Variable/Name/5441B0C2=LargestZergForce
+Variable/Name/583FA154=i
+Variable/Name/5A4F10E5=HyperionDamaged
+Variable/Name/5BAE96AC=i
+Variable/Name/5E34C687=PerfPausedUnits
+Variable/Name/5EFABD28=Patrollers
+Variable/Name/5F845368=MapMusicTrack
+Variable/Name/609D9DE0=RaynorKills
+Variable/Name/6134D9CF=SCV
+Variable/Name/61F2403C=i
+Variable/Name/6CCA3E48=VictoryZergSound3
+Variable/Name/702761DE=TotalHyperionDamage
+Variable/Name/7199542A=HyperionVictims
+Variable/Name/72F17D21=IntroUnitPositions
+Variable/Name/7425D067=KerriganKills
+Variable/Name/75B5F8A2=Patrollers
+Variable/Name/776DDDF8=CurrentForce
+Variable/Name/77EB9BE9=MoveToB
+Variable/Name/78CE54FE=PerfPausedCount
+Variable/Name/78E8C6E3=No Removal
+Variable/Name/79F39258=PerfRevealRegions
+Variable/Name/7BE666D7=Lane1Paused
+Variable/Name/7C325357=DominionPatrolRightGroup
+Variable/Name/7FEA5402=IntroTerranSound
+Variable/Name/801BBC3E=HyperionFirstAttackTransmision
+Variable/Name/801E4AFA=ObjectiveDestroyPalaceGate
+Variable/Name/80A87617=Gate Bullies
+Variable/Name/81FCC037=VictoryZergSound1
+Variable/Name/85CD7BEC=MidMusicCompleted
+Variable/Name/85F2BE5B=IntroZergSound
+Variable/Name/872E545C=InCinematic
+Variable/Name/89FFE016=PatrollerPointsA
+Variable/Name/8AA24FD3=VictoryZergSound2
+Variable/Name/8C2F8286=i
+Variable/Name/92796096=AttackGroup
+Variable/Name/9407FBDE=MidHyperion
+Variable/Name/949EDE96=PLAYER_03_DOMINION_ORANGE
+Variable/Name/96FCC807=i
+Variable/Name/979B40EA=PLAYER_05_DOMINION_PINK
+Variable/Name/97B75446=IntroUnits
+Variable/Name/97F8E327=TempPoint
+Variable/Name/9A7AE613=AttackGroup
+Variable/Name/9D7FAB08=PerfPausedRegions
+Variable/Name/A1677F82=i
+Variable/Name/A1FEC56D=OdinSent
+Variable/Name/A286DA83=NumberOfRepairSCVs
+Variable/Name/A4DDE81B=PLAYER_10_BRIDGE_CONTROL
+Variable/Name/A536CEA6=SkipTimer
+Variable/Name/A6444A2D=FinalValue
+Variable/Name/AC6A2DC8=NumberOfIntroUnits
+Variable/Name/AC936921=FadeDuration
+Variable/Name/B05E9A85=OdinPing
+Variable/Name/B0EFA322=PatrollerPointsA
+Variable/Name/B2171D1E=HomePoint
+Variable/Name/B56CDD88=VictoryKerrigan
+Variable/Name/C00E2963=LanePing
+Variable/Name/C709835E=DominionPlayerGroup
+Variable/Name/C79C9336=Difficulty
+Variable/Name/C8931965=PatrollerPointsB
+Variable/Name/CC4353FA=PalaceTurrets
+Variable/Name/CDE75B31=StartValue
+Variable/Name/CEA6A533=PatrollerPointsB
+Variable/Name/D1B49D5C=ObjectiveClearOuterLanes
+Variable/Name/D465A500=i
+Variable/Name/D7012AC7=HyperionPing
+Variable/Name/DC3730F7=GameOver
+Variable/Name/DEEFDB94=CinematicHyperion
+Variable/Name/E81B6940=HYPERION
+Variable/Name/EDEBF587=FadeDuration
+Variable/Name/F0ACE0B1=PLAYER_02_DOMINION_RED
+Variable/Name/F5369777=FadeDuration
+Variable/Name/F66A3470=i
+Variable/Name/FA6E2EAD=SkipTimer
+Variable/Name/FFA48BE4=MoveTo
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esES.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esES.SC2Data/LocalizedData/GameStrings.txt
new file mode 100644
index 000000000..1a0eb1be5
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esES.SC2Data/LocalizedData/GameStrings.txt
@@ -0,0 +1,49 @@
+DocInfo/Author=Blizzard Entertainment /// Blizzard Entertainment
+DocInfo/Name=El juicio final /// The Reckoning
+LoadingScreen/Tip=Muchas avenidas conducen al sector imperial, pero el Dominio las vigila. Acaba con su presencia y las fuerzas del Enjambre se unirán al combate. /// There are many avenues into the Imperial sector, but they are guarded by the Dominion. Eliminate them and Swarm forces will join the fight.
+LoadingScreen/TipRestart=Jim Raynor protegerá tu flanco izquierdo de ataques, pero no resistirá si no le envías ayuda cuando la solicite. /// Jim Raynor will protect your left flank from attacks, but he'll be overrun if you don't send help when he asks for it.
+MapInfo/Player01/Name=Prole de Kerrigan /// Kerrigan's Brood
+MapInfo/Player02/Name=Fuerzas del Dominio /// Dominion Forces
+MapInfo/Player03/Name=Fuerzas del Dominio /// Dominion Forces
+MapInfo/Player04/Name=Fuerzas del Dominio /// Dominion Forces
+MapInfo/Player05/Name=Fuerzas del Dominio /// Dominion Forces
+MapInfo/Player06/Name=Asaltantes de Raynor /// Raynor's Raiders
+MapInfo/Player07/Name=Control del puente /// Bridge Control
+MapInfo/Player08/Name=El Enjambre /// The Swarm
+MapInfo/Player09/Name=Hostil /// Hostile
+MapInfo/Player10/Name=Hostil /// Hostile
+MapInfo/Player11/Name=Hostil /// Hostile
+MapInfo/Player12/Name=Hostil /// Hostile
+Param/Expression/771E00B5=~A~ (~B~, ~C~) /// ~A~ (~B~, ~C~)
+Param/Value/10019ECC=Colmena /// Hive Cluster
+Param/Value/12CCDD76=El Hyperion ha sido destruido. /// The Hyperion has been destroyed.
+Param/Value/1C3B9AFC=Posición atrincherada /// Entrenched Position
+Param/Value/1EB92790=Palacio /// Palace
+Param/Value/2764E991=MovimientoA - Forzado /// MoveA - Forced
+Param/Value/312673F4=
+Param/Value/3CD8D145=Ataque del Hyperion 2 /// Hyperion Attack 2
+Param/Value/40832EE5=Posición atrincherada /// Entrenched Position
+Param/Value/47B5F2AE=Escuadrón Furia del Cielo /// Sky Fury Squadron
+Param/Value/4964D689=Consejos /// Tips
+Param/Value/56D863DF=Mayor número de zerg /// Largest Zerg Force
+Param/Value/57AE1FF8=Ataque del Hyperion 3 /// Hyperion Attack 3
+Param/Value/5AF16DC3=Escuadrón alfa /// Alpha Squadron
+Param/Value/6AA01F1B=Han destruido todas tus estructuras. /// All of your structures have been destroyed.
+Param/Value/6BF797B1=Daño recibido por el Hyperion /// Damage Taken by the Hyperion
+Param/Value/7ACFB4DF=Asaltantes de Raynor /// Raynor's Raiders
+Param/Value/820C3550=MovimientoB - Aleatorio /// MoveB - Random
+Param/Value/8963E359=Posición atrincherada /// Entrenched Position
+Param/Value/A0FB34D1=Están atacando al Hyperion /// Hyperion Under Attack
+Param/Value/A9B0DEA9=El Hyperion /// The Hyperion
+Param/Value/AA33E61F=Hyperion gravemente dañado /// Hyperion Badly Damaged
+Param/Value/AF9EB277=Están atacando al Hyperion /// Hyperion Under Attack
+Param/Value/B4B4E180=Asesinatos de Kerrigan /// Kerrigan Kills
+Param/Value/CEB82674=Fuerzas enemigas asesinadas /// Enemy Troops Killed
+Param/Value/D67953B1=Coste de trazado = /// Pathing Cost =
+Param/Value/DCEB3B79=MovimientoB - Forzado /// MoveB - Forced
+Param/Value/DD0C4B19=Ataque del Hyperion 1 /// Hyperion Attack 1
+Param/Value/E2051C14=El Odín /// The Odin
+Param/Value/EC6FA82A=MovimientoA - Aleatorio /// MoveA - Random
+Param/Value/F74B6456=Asesinatos de los Asaltantes de Raynor /// Raynor's Raiders Kills
+Unit/Name/Factory=Fábrica /// Factory
+Unit/Name/GateControlUnit=Control del puente /// Bridge Control
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esES.SC2Data/LocalizedData/ObjectStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esES.SC2Data/LocalizedData/ObjectStrings.txt
new file mode 100644
index 000000000..75f2e1c10
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esES.SC2Data/LocalizedData/ObjectStrings.txt
@@ -0,0 +1,10 @@
+AI/Name/05FE0989=P05 - Pink
+AI/Name/17BA421C=P03 - Teal
+AI/Name/392DEDDF=Za'gara Gates
+AI/Name/7AC59A6F=P04 - Yellow
+AI/Name/AFDBFFDC=P09 - Blue
+AI/Name/EC423AC6=P02 - Red
+Sound/Name/IntroMusic=IntroMusic
+Sound/Name/VictoryMusic=VictoryMusic
+Soundtrack/Name/IntroMusic=IntroMusic
+Soundtrack/Name/VictoryMusic=VictoryMusic
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esES.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esES.SC2Data/LocalizedData/TriggerStrings.txt
new file mode 100644
index 000000000..6d09f99f8
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esES.SC2Data/LocalizedData/TriggerStrings.txt
@@ -0,0 +1,236 @@
+Category/Name/04D71C86=Starting Sequence
+Category/Name/0B0A7942======== MAIN =======
+Category/Name/11102239=Gates
+Category/Name/17F2C4BF=AI
+Category/Name/19E8D425=Main Objective - Hyperion Must Survive
+Category/Name/1ADB580B======== CINEMATIC =======
+Category/Name/1DD683CB=Hyperion
+Category/Name/22C8307E======== GAMEPLAY =======
+Category/Name/2A881197=Main Objective - Destroy Palace Gate
+Category/Name/31271F14=Zerg
+Category/Name/33FB539C======== OBJECTIVES =======
+Category/Name/3585DD2D=Variables
+Category/Name/551D8709=Midgame Cinematic
+Category/Name/5AF004C1=Victory Cinematic
+Category/Name/644E8094=Initialization
+Category/Name/684EF078=Global Variables
+Category/Name/7F423160=Mengsk Taunts
+Category/Name/946333D4=Dominion
+Category/Name/9CCD4C0D=Cinematic Variables
+Category/Name/B378510D=Intro Cinematic
+Category/Name/CC5013A3=Utility
+Category/Name/CD72C2D2=Victory/Defeat
+Category/Name/F7EEABB4=Bonus Objective - Clear Outer Lanes
+Category/Name/F8142391=Debug
+FunctionDef/Grammar/04AA644A=Move units from ~originalRegion~ to ~movePoint~, and have them return to their original positions with delay ~delay|Delay~
+FunctionDef/Grammar/398F1A9A=Enemies within ~range~ of ~unit~ matching ~filter~
+FunctionDef/Grammar/B8C55820=Repair ~structure~ with SCV at index ~index|Index~
+FunctionDef/Name/04AA644A=Intro Move Units
+FunctionDef/Name/398F1A9A=Enemies Within Range
+FunctionDef/Name/B88160FE=Create Patrol Unit
+FunctionDef/Name/B8C55820=Repair Structure with SCV
+FunctionDef/Name/C15ED3B6=AI - Diamondback
+ParamDef/Name/199051A9=Unit Spawn Point
+ParamDef/Name/1AFDC4B3=Unit
+ParamDef/Name/25102314=MovePoint
+ParamDef/Name/2B45B0E5=Unit Group
+ParamDef/Name/3779B33B=NearbyUnits
+ParamDef/Name/5C98BF97=Unit Facing Point
+ParamDef/Name/8C828248=Delay
+ParamDef/Name/9D871E87=Filter
+ParamDef/Name/A3BAE7BA=Index
+ParamDef/Name/BCCEB6CB=OriginalRegion
+ParamDef/Name/D0C7DF75=Structure
+ParamDef/Name/D2EA25BC=Range
+ParamDef/Name/D3F541E5=Unit Type
+ParamDef/Name/DFE84730=Diamondback
+ParamDef/Name/F6C47F8C=Owner
+Structure/Name/02D4152D=RECORD_RepairSCV
+Trigger/Name/045C8179=Objective Destroy Palace Gate Failed
+Trigger/Name/04AE8507=Kerrigan Is Killed Q
+Trigger/Name/06A3FAEC=Hyperion Trigger
+Trigger/Name/087495BB=Mid Hyperion Movement
+Trigger/Name/0A3E4AC0=Hyperion Intro Q
+Trigger/Name/0E7DD429=Mid Cleanup
+Trigger/Name/0E90E2D1=Victory Cleanup
+Trigger/Name/0EE212BB=Lane 3
+Trigger/Name/0F391288=Objective Hyperion Must Survive Complete
+Trigger/Name/10484B80=Objective - Clear Outer Lanes - Update
+Trigger/Name/11526464=Hyperion Attacked
+Trigger/Name/1259352A=SCV Repair Script
+Trigger/Name/1263F02F=Death Head Q
+Trigger/Name/12E86F79=Pride of Augustgrad Q
+Trigger/Name/14585378=Palace Gate at 75%
+Trigger/Name/16AEDC8B=DEBUG - Hyperion
+Trigger/Name/1DC6A40C=Aegis Guard / Bulwark Company Q
+Trigger/Name/1F33FB61=Intro Cleanup Not Skipped
+Trigger/Name/207D017A=Dominion Right 1 Deactivate
+Trigger/Name/21FDCD90=Handle Kerrigan Death
+Trigger/Name/225C725A=Intro Cinematic End
+Trigger/Name/2447B833=Create Dominion Patrol - Left Side
+Trigger/Name/26EF34E4=Initialization
+Trigger/Name/28D3794E=Objective Destroy Palace Gate Create
+Trigger/Name/2B8F2D6F=Init 03 Units
+Trigger/Name/2B9EC8DE=Sky Fury / Night Wolf Q
+Trigger/Name/2F267459=Dominion Right 2 Deactivate
+Trigger/Name/3293F101=Init 02 Players
+Trigger/Name/339DCA1C=Lane 1
+Trigger/Name/3472693E=Lane 1 Spawn Loop
+Trigger/Name/34C1C2A6=Init 01 Technology
+Trigger/Name/35FB224C=Objective Hyperion Must Survive Create
+Trigger/Name/36E6FAA6=Victory Q
+Trigger/Name/3A3A2F2B=Elite Force Intro Q
+Trigger/Name/46073A3C=Hyperion Big Attack 2 Q
+Trigger/Name/464A1841=Victory Zerg
+Trigger/Name/4D0BCD90=Create Augustgrad Gate Pings
+Trigger/Name/4FB8046F=Objective - Clear Outer Lanes - Create
+Trigger/Name/536B4E20=Init 05 Environment
+Trigger/Name/5593E429=DEBUG - AI Debug Output
+Trigger/Name/591B8338=Outback Hunter / Sons of Korhal Q
+Trigger/Name/5DDE161C=Victory Sequence
+Trigger/Name/5E176E0A=Init 04 Music
+Trigger/Name/5E798168=Intro Music
+Trigger/Name/61CE220E=Objective Destroy Palace Gate Complete
+Trigger/Name/665536A8=Hyperion SCV Respawn
+Trigger/Name/67BA042A=Dominion Left 2 Destroyed Q
+Trigger/Name/68A6B37C=Victory Cheat
+Trigger/Name/6BDB3DCA=Tip - Elite Forces Q
+Trigger/Name/6DFAA76F=Augustgrad Gate Intro Proximity
+Trigger/Name/70B20FA2=Hyperion Big Attack 3 Q
+Trigger/Name/7725090D=Start Game
+Trigger/Name/77EB8054=Dominion Left 2 Deactivate
+Trigger/Name/79813264=Init 07 Help
+Trigger/Name/7CC230CC=Init 06 Difficulties
+Trigger/Name/8CFE6E20=Hyperion Attacked First Time Q
+Trigger/Name/8D63DC78=Victory Destroy Palace Gate Completed
+Trigger/Name/9259F53F=Hyperion Big Attack 1 Q
+Trigger/Name/930D2A10=Defeat Base Dead
+Trigger/Name/9BE8ED02=Dominion Middle 2 Deactivate
+Trigger/Name/9E453ED8=AI Give Resources
+Trigger/Name/9F0436E9=Augustgrad Gate Intros Q
+Trigger/Name/A0D858AA=Defeat
+Trigger/Name/A8DDDF64=Start AI
+Trigger/Name/A93CF1AB=Victory Cinematic End
+Trigger/Name/B05AD640=Objective Hyperion Must Survive Failed
+Trigger/Name/B2AFB135=Start Upgrades (Normal)
+Trigger/Name/B377C922=Objective - Clear Outer Lanes - Complete
+Trigger/Name/B5078FB1=Mid Cinematic
+Trigger/Name/BA259BC1=Bulwark Cmpy / Shock Division Q
+Trigger/Name/BA6103F1=Bridge Control
+Trigger/Name/BC7E3853=Hyperion Damaged
+Trigger/Name/BCE0B1EF=Create Palace Gate Ping
+Trigger/Name/C09F3724=Mid Cinematic End
+Trigger/Name/C116D284=Hyperion Low Health Q
+Trigger/Name/C17EBB3F=Mid Q
+Trigger/Name/C1981AB2=Prometheus Cmpy / Outback Hunter Q
+Trigger/Name/C4828344=Odin Dies
+Trigger/Name/C9E9EE10=Lane 2 Spawn Loop
+Trigger/Name/CC636751=Victory Cinematic
+Trigger/Name/D0096EC0=DEBUG - Change Colors
+Trigger/Name/D2614D5A=Lane 2
+Trigger/Name/D2A5EAE6=Lane Cleared Q
+Trigger/Name/D671C2A7=Mid Setup
+Trigger/Name/DA7F8847=Raynor Attack Prep Q
+Trigger/Name/DCF3DAF1=Victory
+Trigger/Name/E27FE8EA=Hyperion Attacked Q
+Trigger/Name/E53A19FD=Intro Cleanup Skipped
+Trigger/Name/E5778D60=Defeat Hyperion Dies
+Trigger/Name/E7D651FF=Dominion Middle 1 Deactivate
+Trigger/Name/E8E2A6E0=Palace Gate at 50%
+Trigger/Name/EAE6803E=Raynor Attack Prep Timing
+Trigger/Name/EC48A503=Start Upgrades (Hard)
+Trigger/Name/ECCBA2B2=Intro Cinematic
+Trigger/Name/ED605C53=Lane 3 Spawn Loop
+Trigger/Name/EDD29BA4=Intro Setup
+Trigger/Name/F15F2AAD=Intro Q
+Trigger/Name/F253B06C=Create Dominion Patrol - Right Side
+Trigger/Name/F97F5B41=Victory Setup
+Trigger/Name/FB4BAB63=Defeat Cheat
+Trigger/Name/FFF767EB=Dominion Right 1 Destroyed Q
+Variable/Name/001C166A=i
+Variable/Name/03F40C8C=PLAYER_04_DOMINION_YELLOW
+Variable/Name/03F8FAED=PalaceGatePing
+Variable/Name/059A9ECC=SCVFound
+Variable/Name/07AC9338=FadeDuration
+Variable/Name/0BC531CA=PLAYER_01_USER
+Variable/Name/0FFF542A=Transmission
+Variable/Name/11BD6517=MoveToA
+Variable/Name/171FEE74=DominionPatrolLeftGroup
+Variable/Name/1924E1F9=FadeDuration
+Variable/Name/1A738706=TempPoint
+Variable/Name/1C646281=KERRIGAN
+Variable/Name/1D7A16C7=CinematicTempUnits
+Variable/Name/1E41AB1B=FadeDuration
+Variable/Name/256B1AFA=LanesCleared
+Variable/Name/263D0FDF=PLAYER_09_RAYNOR_BLUE
+Variable/Name/26872465=i
+Variable/Name/2AC37ADE=PLAYER_07_GATES
+Variable/Name/2E1CF6C7=DepotGroup
+Variable/Name/2F2E36CC=PLAYER_14_IZSHA
+Variable/Name/30601208=YellowEnd
+Variable/Name/3F62F8D4=BlueEnd
+Variable/Name/4652EE01=Enemies
+Variable/Name/46794C6F=RepairSCVs
+Variable/Name/46CB88F7=IntroUnitFacings
+Variable/Name/477F7320=BunkerGroup
+Variable/Name/49D20C46=ObjectiveHyperionMustSurvive
+Variable/Name/4A3F85FB=MissionTimer
+Variable/Name/4E5B83CC=CinematicCompleted
+Variable/Name/52C77A5C=CinematicHiddenUnits
+Variable/Name/583FA154=i
+Variable/Name/5A4F10E5=HyperionDamaged
+Variable/Name/5BAE96AC=i
+Variable/Name/5EFABD28=Patrollers
+Variable/Name/5F683639=Depot
+Variable/Name/6134D9CF=SCV
+Variable/Name/61F2403C=i
+Variable/Name/7199542A=HyperionVictims
+Variable/Name/72F17D21=IntroUnitPositions
+Variable/Name/75B5F8A2=Patrollers
+Variable/Name/77EB9BE9=MoveToB
+Variable/Name/7C325357=DominionPatrolRightGroup
+Variable/Name/801BBC3E=HyperionFirstAttackTransmision
+Variable/Name/801E4AFA=ObjectiveDestroyPalaceGate
+Variable/Name/820A97B0=LaneClearedCount
+Variable/Name/872E545C=InCinematic
+Variable/Name/89FFE016=PatrollerPointsA
+Variable/Name/8C2F8286=i
+Variable/Name/9407FBDE=MidHyperion
+Variable/Name/949EDE96=PLAYER_03_DOMINION_TEAL
+Variable/Name/96FCC807=i
+Variable/Name/979B40EA=PLAYER_05_DOMINION_PINK
+Variable/Name/97B75446=IntroUnits
+Variable/Name/98AF731E=Ping
+Variable/Name/A1677F82=i
+Variable/Name/A286DA83=NumberOfRepairSCVs
+Variable/Name/A4DDE81B=PLAYER_10_BRIDGE_CONTROL
+Variable/Name/A6444A2D=FinalValue
+Variable/Name/AC6A2DC8=NumberOfIntroUnits
+Variable/Name/AC936921=FadeDuration
+Variable/Name/B05E9A85=OdinPing
+Variable/Name/B0EFA322=PatrollerPointsA
+Variable/Name/B2171D1E=HomePoint
+Variable/Name/B56CDD88=VictoryKerrigan
+Variable/Name/C00E2963=LanePing
+Variable/Name/C131F60D=DepotCount
+Variable/Name/C256EDA0=VictoryZerg1
+Variable/Name/C709835E=DominionPlayers
+Variable/Name/C8931965=PatrollerPointsB
+Variable/Name/CC4353FA=PalaceTurrets
+Variable/Name/CDE75B31=StartValue
+Variable/Name/CEA6A533=PatrollerPointsB
+Variable/Name/D1B49D5C=ObjectiveClearOuterLanes
+Variable/Name/D465A500=i
+Variable/Name/D5AA8755=DominionLeftGather
+Variable/Name/D7012AC7=HyperionPing
+Variable/Name/DC3730F7=GameOver
+Variable/Name/DEEFDB94=CinematicHyperion
+Variable/Name/E81B6940=HYPERION
+Variable/Name/E9D013BC=VictoryZerg2
+Variable/Name/EDEBF587=FadeDuration
+Variable/Name/EE75544B=DepotLoc
+Variable/Name/F0ACE0B1=PLAYER_02_DOMINION_RED
+Variable/Name/F5369777=FadeDuration
+Variable/Name/F66A3470=i
+Variable/Name/FD091901=DominionRightGather
+Variable/Name/FFA48BE4=MoveTo
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esMX.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esMX.SC2Data/LocalizedData/GameStrings.txt
new file mode 100644
index 000000000..542f3aa15
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esMX.SC2Data/LocalizedData/GameStrings.txt
@@ -0,0 +1,49 @@
+DocInfo/Author=Blizzard Entertainment /// Blizzard Entertainment
+DocInfo/Name=El Juicio final /// The Reckoning
+LoadingScreen/Tip=Hay muchos caminos para ingresar en el sector imperial, pero están protegidos por el Dominio. Elimínalos para que las fuerzas del Enjambre se unan a la lucha. /// There are many avenues into the Imperial sector, but they are guarded by the Dominion. Eliminate them and Swarm forces will join the fight.
+LoadingScreen/TipRestart=Jim Raynor protegerá tu flanco izquierdo de los ataques, pero lo superarán si no le envías apoyo cuando lo pida. /// Jim Raynor will protect your left flank from attacks, but he'll be overrun if you don't send help when he asks for it.
+MapInfo/Player01/Name=Colonia de Kerrigan /// Kerrigan's Brood
+MapInfo/Player02/Name=Fuerzas del Dominio /// Dominion Forces
+MapInfo/Player03/Name=Fuerzas del Dominio /// Dominion Forces
+MapInfo/Player04/Name=Fuerzas del Dominio /// Dominion Forces
+MapInfo/Player05/Name=Fuerzas del Dominio /// Dominion Forces
+MapInfo/Player06/Name=Rebeldes de Raynor /// Raynor's Raiders
+MapInfo/Player07/Name=Control del puente /// Bridge Control
+MapInfo/Player08/Name=El Enjambre /// The Swarm
+MapInfo/Player09/Name=Hostil /// Hostile
+MapInfo/Player10/Name=Hostil /// Hostile
+MapInfo/Player11/Name=Hostil /// Hostile
+MapInfo/Player12/Name=Hostil /// Hostile
+Param/Expression/771E00B5=~A~ (~B~, ~C~) /// ~A~ (~B~, ~C~)
+Param/Value/10019ECC=Colmenar /// Hive Cluster
+Param/Value/12CCDD76=Han destruido el Hiperión. /// The Hyperion has been destroyed.
+Param/Value/1C3B9AFC=Posición atrincherada /// Entrenched Position
+Param/Value/1EB92790=Palacio /// Palace
+Param/Value/2764E991=MoveA - Forzado /// MoveA - Forced
+Param/Value/312673F4=
+Param/Value/3CD8D145=Ataque del Hiperión 2 /// Hyperion Attack 2
+Param/Value/40832EE5=Posición atrincherada /// Entrenched Position
+Param/Value/47B5F2AE=Escuadrón Furia celestial /// Sky Fury Squadron
+Param/Value/4964D689=Consejos /// Tips
+Param/Value/56D863DF=Fuerza zerg más grande /// Largest Zerg Force
+Param/Value/57AE1FF8=Ataque del Hiperión 3 /// Hyperion Attack 3
+Param/Value/5AF16DC3=Escuadrón Alfa /// Alpha Squadron
+Param/Value/6AA01F1B=Han destruido todas tus estructuras. /// All of your structures have been destroyed.
+Param/Value/6BF797B1=Daño recibido por el Hiperión /// Damage Taken by the Hyperion
+Param/Value/7ACFB4DF=Rebeldes de Raynor /// Raynor's Raiders
+Param/Value/820C3550=MoveB - Aleatorio /// MoveB - Random
+Param/Value/8963E359=Posición atrincherada /// Entrenched Position
+Param/Value/A0FB34D1=Hiperión bajo ataque /// Hyperion Under Attack
+Param/Value/A9B0DEA9=El Hiperión /// The Hyperion
+Param/Value/AA33E61F=Hiperión gravemente dañado /// Hyperion Badly Damaged
+Param/Value/AF9EB277=Hiperión bajo ataque /// Hyperion Under Attack
+Param/Value/B4B4E180=Muertes causadas por Kerrigan /// Kerrigan Kills
+Param/Value/CEB82674=Tropas enemigas eliminadas /// Enemy Troops Killed
+Param/Value/D67953B1=Costo de senderos = /// Pathing Cost =
+Param/Value/DCEB3B79=MoveB - Forzado /// MoveB - Forced
+Param/Value/DD0C4B19=Ataque del Hiperión 1 /// Hyperion Attack 1
+Param/Value/E2051C14=El Odín /// The Odin
+Param/Value/EC6FA82A=MoveA - Aleatorio /// MoveA - Random
+Param/Value/F74B6456=Muertes causadas por los Rebeldes de Raynor /// Raynor's Raiders Kills
+Unit/Name/Factory=Fábrica /// Factory
+Unit/Name/GateControlUnit=Control del puente /// Bridge Control
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esMX.SC2Data/LocalizedData/ObjectStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esMX.SC2Data/LocalizedData/ObjectStrings.txt
new file mode 100644
index 000000000..75f2e1c10
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esMX.SC2Data/LocalizedData/ObjectStrings.txt
@@ -0,0 +1,10 @@
+AI/Name/05FE0989=P05 - Pink
+AI/Name/17BA421C=P03 - Teal
+AI/Name/392DEDDF=Za'gara Gates
+AI/Name/7AC59A6F=P04 - Yellow
+AI/Name/AFDBFFDC=P09 - Blue
+AI/Name/EC423AC6=P02 - Red
+Sound/Name/IntroMusic=IntroMusic
+Sound/Name/VictoryMusic=VictoryMusic
+Soundtrack/Name/IntroMusic=IntroMusic
+Soundtrack/Name/VictoryMusic=VictoryMusic
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esMX.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esMX.SC2Data/LocalizedData/TriggerStrings.txt
new file mode 100644
index 000000000..6d09f99f8
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/esMX.SC2Data/LocalizedData/TriggerStrings.txt
@@ -0,0 +1,236 @@
+Category/Name/04D71C86=Starting Sequence
+Category/Name/0B0A7942======== MAIN =======
+Category/Name/11102239=Gates
+Category/Name/17F2C4BF=AI
+Category/Name/19E8D425=Main Objective - Hyperion Must Survive
+Category/Name/1ADB580B======== CINEMATIC =======
+Category/Name/1DD683CB=Hyperion
+Category/Name/22C8307E======== GAMEPLAY =======
+Category/Name/2A881197=Main Objective - Destroy Palace Gate
+Category/Name/31271F14=Zerg
+Category/Name/33FB539C======== OBJECTIVES =======
+Category/Name/3585DD2D=Variables
+Category/Name/551D8709=Midgame Cinematic
+Category/Name/5AF004C1=Victory Cinematic
+Category/Name/644E8094=Initialization
+Category/Name/684EF078=Global Variables
+Category/Name/7F423160=Mengsk Taunts
+Category/Name/946333D4=Dominion
+Category/Name/9CCD4C0D=Cinematic Variables
+Category/Name/B378510D=Intro Cinematic
+Category/Name/CC5013A3=Utility
+Category/Name/CD72C2D2=Victory/Defeat
+Category/Name/F7EEABB4=Bonus Objective - Clear Outer Lanes
+Category/Name/F8142391=Debug
+FunctionDef/Grammar/04AA644A=Move units from ~originalRegion~ to ~movePoint~, and have them return to their original positions with delay ~delay|Delay~
+FunctionDef/Grammar/398F1A9A=Enemies within ~range~ of ~unit~ matching ~filter~
+FunctionDef/Grammar/B8C55820=Repair ~structure~ with SCV at index ~index|Index~
+FunctionDef/Name/04AA644A=Intro Move Units
+FunctionDef/Name/398F1A9A=Enemies Within Range
+FunctionDef/Name/B88160FE=Create Patrol Unit
+FunctionDef/Name/B8C55820=Repair Structure with SCV
+FunctionDef/Name/C15ED3B6=AI - Diamondback
+ParamDef/Name/199051A9=Unit Spawn Point
+ParamDef/Name/1AFDC4B3=Unit
+ParamDef/Name/25102314=MovePoint
+ParamDef/Name/2B45B0E5=Unit Group
+ParamDef/Name/3779B33B=NearbyUnits
+ParamDef/Name/5C98BF97=Unit Facing Point
+ParamDef/Name/8C828248=Delay
+ParamDef/Name/9D871E87=Filter
+ParamDef/Name/A3BAE7BA=Index
+ParamDef/Name/BCCEB6CB=OriginalRegion
+ParamDef/Name/D0C7DF75=Structure
+ParamDef/Name/D2EA25BC=Range
+ParamDef/Name/D3F541E5=Unit Type
+ParamDef/Name/DFE84730=Diamondback
+ParamDef/Name/F6C47F8C=Owner
+Structure/Name/02D4152D=RECORD_RepairSCV
+Trigger/Name/045C8179=Objective Destroy Palace Gate Failed
+Trigger/Name/04AE8507=Kerrigan Is Killed Q
+Trigger/Name/06A3FAEC=Hyperion Trigger
+Trigger/Name/087495BB=Mid Hyperion Movement
+Trigger/Name/0A3E4AC0=Hyperion Intro Q
+Trigger/Name/0E7DD429=Mid Cleanup
+Trigger/Name/0E90E2D1=Victory Cleanup
+Trigger/Name/0EE212BB=Lane 3
+Trigger/Name/0F391288=Objective Hyperion Must Survive Complete
+Trigger/Name/10484B80=Objective - Clear Outer Lanes - Update
+Trigger/Name/11526464=Hyperion Attacked
+Trigger/Name/1259352A=SCV Repair Script
+Trigger/Name/1263F02F=Death Head Q
+Trigger/Name/12E86F79=Pride of Augustgrad Q
+Trigger/Name/14585378=Palace Gate at 75%
+Trigger/Name/16AEDC8B=DEBUG - Hyperion
+Trigger/Name/1DC6A40C=Aegis Guard / Bulwark Company Q
+Trigger/Name/1F33FB61=Intro Cleanup Not Skipped
+Trigger/Name/207D017A=Dominion Right 1 Deactivate
+Trigger/Name/21FDCD90=Handle Kerrigan Death
+Trigger/Name/225C725A=Intro Cinematic End
+Trigger/Name/2447B833=Create Dominion Patrol - Left Side
+Trigger/Name/26EF34E4=Initialization
+Trigger/Name/28D3794E=Objective Destroy Palace Gate Create
+Trigger/Name/2B8F2D6F=Init 03 Units
+Trigger/Name/2B9EC8DE=Sky Fury / Night Wolf Q
+Trigger/Name/2F267459=Dominion Right 2 Deactivate
+Trigger/Name/3293F101=Init 02 Players
+Trigger/Name/339DCA1C=Lane 1
+Trigger/Name/3472693E=Lane 1 Spawn Loop
+Trigger/Name/34C1C2A6=Init 01 Technology
+Trigger/Name/35FB224C=Objective Hyperion Must Survive Create
+Trigger/Name/36E6FAA6=Victory Q
+Trigger/Name/3A3A2F2B=Elite Force Intro Q
+Trigger/Name/46073A3C=Hyperion Big Attack 2 Q
+Trigger/Name/464A1841=Victory Zerg
+Trigger/Name/4D0BCD90=Create Augustgrad Gate Pings
+Trigger/Name/4FB8046F=Objective - Clear Outer Lanes - Create
+Trigger/Name/536B4E20=Init 05 Environment
+Trigger/Name/5593E429=DEBUG - AI Debug Output
+Trigger/Name/591B8338=Outback Hunter / Sons of Korhal Q
+Trigger/Name/5DDE161C=Victory Sequence
+Trigger/Name/5E176E0A=Init 04 Music
+Trigger/Name/5E798168=Intro Music
+Trigger/Name/61CE220E=Objective Destroy Palace Gate Complete
+Trigger/Name/665536A8=Hyperion SCV Respawn
+Trigger/Name/67BA042A=Dominion Left 2 Destroyed Q
+Trigger/Name/68A6B37C=Victory Cheat
+Trigger/Name/6BDB3DCA=Tip - Elite Forces Q
+Trigger/Name/6DFAA76F=Augustgrad Gate Intro Proximity
+Trigger/Name/70B20FA2=Hyperion Big Attack 3 Q
+Trigger/Name/7725090D=Start Game
+Trigger/Name/77EB8054=Dominion Left 2 Deactivate
+Trigger/Name/79813264=Init 07 Help
+Trigger/Name/7CC230CC=Init 06 Difficulties
+Trigger/Name/8CFE6E20=Hyperion Attacked First Time Q
+Trigger/Name/8D63DC78=Victory Destroy Palace Gate Completed
+Trigger/Name/9259F53F=Hyperion Big Attack 1 Q
+Trigger/Name/930D2A10=Defeat Base Dead
+Trigger/Name/9BE8ED02=Dominion Middle 2 Deactivate
+Trigger/Name/9E453ED8=AI Give Resources
+Trigger/Name/9F0436E9=Augustgrad Gate Intros Q
+Trigger/Name/A0D858AA=Defeat
+Trigger/Name/A8DDDF64=Start AI
+Trigger/Name/A93CF1AB=Victory Cinematic End
+Trigger/Name/B05AD640=Objective Hyperion Must Survive Failed
+Trigger/Name/B2AFB135=Start Upgrades (Normal)
+Trigger/Name/B377C922=Objective - Clear Outer Lanes - Complete
+Trigger/Name/B5078FB1=Mid Cinematic
+Trigger/Name/BA259BC1=Bulwark Cmpy / Shock Division Q
+Trigger/Name/BA6103F1=Bridge Control
+Trigger/Name/BC7E3853=Hyperion Damaged
+Trigger/Name/BCE0B1EF=Create Palace Gate Ping
+Trigger/Name/C09F3724=Mid Cinematic End
+Trigger/Name/C116D284=Hyperion Low Health Q
+Trigger/Name/C17EBB3F=Mid Q
+Trigger/Name/C1981AB2=Prometheus Cmpy / Outback Hunter Q
+Trigger/Name/C4828344=Odin Dies
+Trigger/Name/C9E9EE10=Lane 2 Spawn Loop
+Trigger/Name/CC636751=Victory Cinematic
+Trigger/Name/D0096EC0=DEBUG - Change Colors
+Trigger/Name/D2614D5A=Lane 2
+Trigger/Name/D2A5EAE6=Lane Cleared Q
+Trigger/Name/D671C2A7=Mid Setup
+Trigger/Name/DA7F8847=Raynor Attack Prep Q
+Trigger/Name/DCF3DAF1=Victory
+Trigger/Name/E27FE8EA=Hyperion Attacked Q
+Trigger/Name/E53A19FD=Intro Cleanup Skipped
+Trigger/Name/E5778D60=Defeat Hyperion Dies
+Trigger/Name/E7D651FF=Dominion Middle 1 Deactivate
+Trigger/Name/E8E2A6E0=Palace Gate at 50%
+Trigger/Name/EAE6803E=Raynor Attack Prep Timing
+Trigger/Name/EC48A503=Start Upgrades (Hard)
+Trigger/Name/ECCBA2B2=Intro Cinematic
+Trigger/Name/ED605C53=Lane 3 Spawn Loop
+Trigger/Name/EDD29BA4=Intro Setup
+Trigger/Name/F15F2AAD=Intro Q
+Trigger/Name/F253B06C=Create Dominion Patrol - Right Side
+Trigger/Name/F97F5B41=Victory Setup
+Trigger/Name/FB4BAB63=Defeat Cheat
+Trigger/Name/FFF767EB=Dominion Right 1 Destroyed Q
+Variable/Name/001C166A=i
+Variable/Name/03F40C8C=PLAYER_04_DOMINION_YELLOW
+Variable/Name/03F8FAED=PalaceGatePing
+Variable/Name/059A9ECC=SCVFound
+Variable/Name/07AC9338=FadeDuration
+Variable/Name/0BC531CA=PLAYER_01_USER
+Variable/Name/0FFF542A=Transmission
+Variable/Name/11BD6517=MoveToA
+Variable/Name/171FEE74=DominionPatrolLeftGroup
+Variable/Name/1924E1F9=FadeDuration
+Variable/Name/1A738706=TempPoint
+Variable/Name/1C646281=KERRIGAN
+Variable/Name/1D7A16C7=CinematicTempUnits
+Variable/Name/1E41AB1B=FadeDuration
+Variable/Name/256B1AFA=LanesCleared
+Variable/Name/263D0FDF=PLAYER_09_RAYNOR_BLUE
+Variable/Name/26872465=i
+Variable/Name/2AC37ADE=PLAYER_07_GATES
+Variable/Name/2E1CF6C7=DepotGroup
+Variable/Name/2F2E36CC=PLAYER_14_IZSHA
+Variable/Name/30601208=YellowEnd
+Variable/Name/3F62F8D4=BlueEnd
+Variable/Name/4652EE01=Enemies
+Variable/Name/46794C6F=RepairSCVs
+Variable/Name/46CB88F7=IntroUnitFacings
+Variable/Name/477F7320=BunkerGroup
+Variable/Name/49D20C46=ObjectiveHyperionMustSurvive
+Variable/Name/4A3F85FB=MissionTimer
+Variable/Name/4E5B83CC=CinematicCompleted
+Variable/Name/52C77A5C=CinematicHiddenUnits
+Variable/Name/583FA154=i
+Variable/Name/5A4F10E5=HyperionDamaged
+Variable/Name/5BAE96AC=i
+Variable/Name/5EFABD28=Patrollers
+Variable/Name/5F683639=Depot
+Variable/Name/6134D9CF=SCV
+Variable/Name/61F2403C=i
+Variable/Name/7199542A=HyperionVictims
+Variable/Name/72F17D21=IntroUnitPositions
+Variable/Name/75B5F8A2=Patrollers
+Variable/Name/77EB9BE9=MoveToB
+Variable/Name/7C325357=DominionPatrolRightGroup
+Variable/Name/801BBC3E=HyperionFirstAttackTransmision
+Variable/Name/801E4AFA=ObjectiveDestroyPalaceGate
+Variable/Name/820A97B0=LaneClearedCount
+Variable/Name/872E545C=InCinematic
+Variable/Name/89FFE016=PatrollerPointsA
+Variable/Name/8C2F8286=i
+Variable/Name/9407FBDE=MidHyperion
+Variable/Name/949EDE96=PLAYER_03_DOMINION_TEAL
+Variable/Name/96FCC807=i
+Variable/Name/979B40EA=PLAYER_05_DOMINION_PINK
+Variable/Name/97B75446=IntroUnits
+Variable/Name/98AF731E=Ping
+Variable/Name/A1677F82=i
+Variable/Name/A286DA83=NumberOfRepairSCVs
+Variable/Name/A4DDE81B=PLAYER_10_BRIDGE_CONTROL
+Variable/Name/A6444A2D=FinalValue
+Variable/Name/AC6A2DC8=NumberOfIntroUnits
+Variable/Name/AC936921=FadeDuration
+Variable/Name/B05E9A85=OdinPing
+Variable/Name/B0EFA322=PatrollerPointsA
+Variable/Name/B2171D1E=HomePoint
+Variable/Name/B56CDD88=VictoryKerrigan
+Variable/Name/C00E2963=LanePing
+Variable/Name/C131F60D=DepotCount
+Variable/Name/C256EDA0=VictoryZerg1
+Variable/Name/C709835E=DominionPlayers
+Variable/Name/C8931965=PatrollerPointsB
+Variable/Name/CC4353FA=PalaceTurrets
+Variable/Name/CDE75B31=StartValue
+Variable/Name/CEA6A533=PatrollerPointsB
+Variable/Name/D1B49D5C=ObjectiveClearOuterLanes
+Variable/Name/D465A500=i
+Variable/Name/D5AA8755=DominionLeftGather
+Variable/Name/D7012AC7=HyperionPing
+Variable/Name/DC3730F7=GameOver
+Variable/Name/DEEFDB94=CinematicHyperion
+Variable/Name/E81B6940=HYPERION
+Variable/Name/E9D013BC=VictoryZerg2
+Variable/Name/EDEBF587=FadeDuration
+Variable/Name/EE75544B=DepotLoc
+Variable/Name/F0ACE0B1=PLAYER_02_DOMINION_RED
+Variable/Name/F5369777=FadeDuration
+Variable/Name/F66A3470=i
+Variable/Name/FD091901=DominionRightGather
+Variable/Name/FFA48BE4=MoveTo
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/frFR.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/frFR.SC2Data/LocalizedData/GameStrings.txt
new file mode 100644
index 000000000..cca1dcc38
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/frFR.SC2Data/LocalizedData/GameStrings.txt
@@ -0,0 +1,49 @@
+DocInfo/Author=Blizzard Entertainment /// Blizzard Entertainment
+DocInfo/Name=L’heure du jugement /// The Reckoning
+LoadingScreen/Tip=De nombreuses avenues mènent au secteur impérial, mais elles sont gardées par les forces du Dominion. Éliminez-les et des troupes l’Essaim se joindront au combat. /// There are many avenues into the Imperial sector, but they are guarded by the Dominion. Eliminate them and Swarm forces will join the fight.
+LoadingScreen/TipRestart=Jim Raynor protégera votre flanc gauche des attaques, mais il sera débordé si vous ne lui envoyez pas d’aide quand il en demande. /// Jim Raynor will protect your left flank from attacks, but he'll be overrun if you don't send help when he asks for it.
+MapInfo/Player01/Name=Couvée de Kerrigan /// Kerrigan's Brood
+MapInfo/Player02/Name=Troupes du Dominion /// Dominion Forces
+MapInfo/Player03/Name=Troupes du Dominion /// Dominion Forces
+MapInfo/Player04/Name=Troupes du Dominion /// Dominion Forces
+MapInfo/Player05/Name=Troupes du Dominion /// Dominion Forces
+MapInfo/Player06/Name=Les Rebelles de Raynor /// Raynor's Raiders
+MapInfo/Player07/Name=Commande du pont /// Bridge Control
+MapInfo/Player08/Name=L’Essaim /// The Swarm
+MapInfo/Player09/Name=Hostile /// Hostile
+MapInfo/Player10/Name=Hostile /// Hostile
+MapInfo/Player11/Name=Hostile /// Hostile
+MapInfo/Player12/Name=Hostile /// Hostile
+Param/Expression/771E00B5=~A~ (~B~, ~C~) /// ~A~ (~B~, ~C~)
+Param/Value/10019ECC=Colonie /// Hive Cluster
+Param/Value/12CCDD76=L’Hypérion a été détruit. /// The Hyperion has been destroyed.
+Param/Value/1C3B9AFC=Position retranchée /// Entrenched Position
+Param/Value/1EB92790=Palais /// Palace
+Param/Value/2764E991=MoveA - Forced /// MoveA - Forced
+Param/Value/312673F4=
+Param/Value/3CD8D145=Attaque de l’Hypérion 2 /// Hyperion Attack 2
+Param/Value/40832EE5=Position retranchée /// Entrenched Position
+Param/Value/47B5F2AE=Escadron Fureur Céleste /// Sky Fury Squadron
+Param/Value/4964D689=Astuces /// Tips
+Param/Value/56D863DF=Plus grande troupe de Zergs /// Largest Zerg Force
+Param/Value/57AE1FF8=Attaque de l’Hypérion 3 /// Hyperion Attack 3
+Param/Value/5AF16DC3=Escadron Alpha /// Alpha Squadron
+Param/Value/6AA01F1B=Tous vos bâtiments ont été détruits. /// All of your structures have been destroyed.
+Param/Value/6BF797B1=Dégâts subis par l’Hypérion /// Damage Taken by the Hyperion
+Param/Value/7ACFB4DF=Les Rebelles de Raynor /// Raynor's Raiders
+Param/Value/820C3550=MoveB - Random /// MoveB - Random
+Param/Value/8963E359=Position retranchée /// Entrenched Position
+Param/Value/A0FB34D1=Hypérion attaqué /// Hyperion Under Attack
+Param/Value/A9B0DEA9=L’Hypérion /// The Hyperion
+Param/Value/AA33E61F=Hypérion gravement endommagé /// Hyperion Badly Damaged
+Param/Value/AF9EB277=Hypérion attaqué /// Hyperion Under Attack
+Param/Value/B4B4E180=Victimes de Kerrigan /// Kerrigan Kills
+Param/Value/CEB82674=Troupes ennemies tuées /// Enemy Troops Killed
+Param/Value/D67953B1=Coût de la trajectoire = /// Pathing Cost =
+Param/Value/DCEB3B79=MoveB - Forced /// MoveB - Forced
+Param/Value/DD0C4B19=Attaque de l’Hypérion 1 /// Hyperion Attack 1
+Param/Value/E2051C14=Le Odin /// The Odin
+Param/Value/EC6FA82A=MoveA - Random /// MoveA - Random
+Param/Value/F74B6456=Victimes des Rebelles de Raynor /// Raynor's Raiders Kills
+Unit/Name/Factory=Usine /// Factory
+Unit/Name/GateControlUnit=Commande du pont /// Bridge Control
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/frFR.SC2Data/LocalizedData/ObjectStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/frFR.SC2Data/LocalizedData/ObjectStrings.txt
new file mode 100644
index 000000000..75f2e1c10
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/frFR.SC2Data/LocalizedData/ObjectStrings.txt
@@ -0,0 +1,10 @@
+AI/Name/05FE0989=P05 - Pink
+AI/Name/17BA421C=P03 - Teal
+AI/Name/392DEDDF=Za'gara Gates
+AI/Name/7AC59A6F=P04 - Yellow
+AI/Name/AFDBFFDC=P09 - Blue
+AI/Name/EC423AC6=P02 - Red
+Sound/Name/IntroMusic=IntroMusic
+Sound/Name/VictoryMusic=VictoryMusic
+Soundtrack/Name/IntroMusic=IntroMusic
+Soundtrack/Name/VictoryMusic=VictoryMusic
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/frFR.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/frFR.SC2Data/LocalizedData/TriggerStrings.txt
new file mode 100644
index 000000000..6d09f99f8
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/frFR.SC2Data/LocalizedData/TriggerStrings.txt
@@ -0,0 +1,236 @@
+Category/Name/04D71C86=Starting Sequence
+Category/Name/0B0A7942======== MAIN =======
+Category/Name/11102239=Gates
+Category/Name/17F2C4BF=AI
+Category/Name/19E8D425=Main Objective - Hyperion Must Survive
+Category/Name/1ADB580B======== CINEMATIC =======
+Category/Name/1DD683CB=Hyperion
+Category/Name/22C8307E======== GAMEPLAY =======
+Category/Name/2A881197=Main Objective - Destroy Palace Gate
+Category/Name/31271F14=Zerg
+Category/Name/33FB539C======== OBJECTIVES =======
+Category/Name/3585DD2D=Variables
+Category/Name/551D8709=Midgame Cinematic
+Category/Name/5AF004C1=Victory Cinematic
+Category/Name/644E8094=Initialization
+Category/Name/684EF078=Global Variables
+Category/Name/7F423160=Mengsk Taunts
+Category/Name/946333D4=Dominion
+Category/Name/9CCD4C0D=Cinematic Variables
+Category/Name/B378510D=Intro Cinematic
+Category/Name/CC5013A3=Utility
+Category/Name/CD72C2D2=Victory/Defeat
+Category/Name/F7EEABB4=Bonus Objective - Clear Outer Lanes
+Category/Name/F8142391=Debug
+FunctionDef/Grammar/04AA644A=Move units from ~originalRegion~ to ~movePoint~, and have them return to their original positions with delay ~delay|Delay~
+FunctionDef/Grammar/398F1A9A=Enemies within ~range~ of ~unit~ matching ~filter~
+FunctionDef/Grammar/B8C55820=Repair ~structure~ with SCV at index ~index|Index~
+FunctionDef/Name/04AA644A=Intro Move Units
+FunctionDef/Name/398F1A9A=Enemies Within Range
+FunctionDef/Name/B88160FE=Create Patrol Unit
+FunctionDef/Name/B8C55820=Repair Structure with SCV
+FunctionDef/Name/C15ED3B6=AI - Diamondback
+ParamDef/Name/199051A9=Unit Spawn Point
+ParamDef/Name/1AFDC4B3=Unit
+ParamDef/Name/25102314=MovePoint
+ParamDef/Name/2B45B0E5=Unit Group
+ParamDef/Name/3779B33B=NearbyUnits
+ParamDef/Name/5C98BF97=Unit Facing Point
+ParamDef/Name/8C828248=Delay
+ParamDef/Name/9D871E87=Filter
+ParamDef/Name/A3BAE7BA=Index
+ParamDef/Name/BCCEB6CB=OriginalRegion
+ParamDef/Name/D0C7DF75=Structure
+ParamDef/Name/D2EA25BC=Range
+ParamDef/Name/D3F541E5=Unit Type
+ParamDef/Name/DFE84730=Diamondback
+ParamDef/Name/F6C47F8C=Owner
+Structure/Name/02D4152D=RECORD_RepairSCV
+Trigger/Name/045C8179=Objective Destroy Palace Gate Failed
+Trigger/Name/04AE8507=Kerrigan Is Killed Q
+Trigger/Name/06A3FAEC=Hyperion Trigger
+Trigger/Name/087495BB=Mid Hyperion Movement
+Trigger/Name/0A3E4AC0=Hyperion Intro Q
+Trigger/Name/0E7DD429=Mid Cleanup
+Trigger/Name/0E90E2D1=Victory Cleanup
+Trigger/Name/0EE212BB=Lane 3
+Trigger/Name/0F391288=Objective Hyperion Must Survive Complete
+Trigger/Name/10484B80=Objective - Clear Outer Lanes - Update
+Trigger/Name/11526464=Hyperion Attacked
+Trigger/Name/1259352A=SCV Repair Script
+Trigger/Name/1263F02F=Death Head Q
+Trigger/Name/12E86F79=Pride of Augustgrad Q
+Trigger/Name/14585378=Palace Gate at 75%
+Trigger/Name/16AEDC8B=DEBUG - Hyperion
+Trigger/Name/1DC6A40C=Aegis Guard / Bulwark Company Q
+Trigger/Name/1F33FB61=Intro Cleanup Not Skipped
+Trigger/Name/207D017A=Dominion Right 1 Deactivate
+Trigger/Name/21FDCD90=Handle Kerrigan Death
+Trigger/Name/225C725A=Intro Cinematic End
+Trigger/Name/2447B833=Create Dominion Patrol - Left Side
+Trigger/Name/26EF34E4=Initialization
+Trigger/Name/28D3794E=Objective Destroy Palace Gate Create
+Trigger/Name/2B8F2D6F=Init 03 Units
+Trigger/Name/2B9EC8DE=Sky Fury / Night Wolf Q
+Trigger/Name/2F267459=Dominion Right 2 Deactivate
+Trigger/Name/3293F101=Init 02 Players
+Trigger/Name/339DCA1C=Lane 1
+Trigger/Name/3472693E=Lane 1 Spawn Loop
+Trigger/Name/34C1C2A6=Init 01 Technology
+Trigger/Name/35FB224C=Objective Hyperion Must Survive Create
+Trigger/Name/36E6FAA6=Victory Q
+Trigger/Name/3A3A2F2B=Elite Force Intro Q
+Trigger/Name/46073A3C=Hyperion Big Attack 2 Q
+Trigger/Name/464A1841=Victory Zerg
+Trigger/Name/4D0BCD90=Create Augustgrad Gate Pings
+Trigger/Name/4FB8046F=Objective - Clear Outer Lanes - Create
+Trigger/Name/536B4E20=Init 05 Environment
+Trigger/Name/5593E429=DEBUG - AI Debug Output
+Trigger/Name/591B8338=Outback Hunter / Sons of Korhal Q
+Trigger/Name/5DDE161C=Victory Sequence
+Trigger/Name/5E176E0A=Init 04 Music
+Trigger/Name/5E798168=Intro Music
+Trigger/Name/61CE220E=Objective Destroy Palace Gate Complete
+Trigger/Name/665536A8=Hyperion SCV Respawn
+Trigger/Name/67BA042A=Dominion Left 2 Destroyed Q
+Trigger/Name/68A6B37C=Victory Cheat
+Trigger/Name/6BDB3DCA=Tip - Elite Forces Q
+Trigger/Name/6DFAA76F=Augustgrad Gate Intro Proximity
+Trigger/Name/70B20FA2=Hyperion Big Attack 3 Q
+Trigger/Name/7725090D=Start Game
+Trigger/Name/77EB8054=Dominion Left 2 Deactivate
+Trigger/Name/79813264=Init 07 Help
+Trigger/Name/7CC230CC=Init 06 Difficulties
+Trigger/Name/8CFE6E20=Hyperion Attacked First Time Q
+Trigger/Name/8D63DC78=Victory Destroy Palace Gate Completed
+Trigger/Name/9259F53F=Hyperion Big Attack 1 Q
+Trigger/Name/930D2A10=Defeat Base Dead
+Trigger/Name/9BE8ED02=Dominion Middle 2 Deactivate
+Trigger/Name/9E453ED8=AI Give Resources
+Trigger/Name/9F0436E9=Augustgrad Gate Intros Q
+Trigger/Name/A0D858AA=Defeat
+Trigger/Name/A8DDDF64=Start AI
+Trigger/Name/A93CF1AB=Victory Cinematic End
+Trigger/Name/B05AD640=Objective Hyperion Must Survive Failed
+Trigger/Name/B2AFB135=Start Upgrades (Normal)
+Trigger/Name/B377C922=Objective - Clear Outer Lanes - Complete
+Trigger/Name/B5078FB1=Mid Cinematic
+Trigger/Name/BA259BC1=Bulwark Cmpy / Shock Division Q
+Trigger/Name/BA6103F1=Bridge Control
+Trigger/Name/BC7E3853=Hyperion Damaged
+Trigger/Name/BCE0B1EF=Create Palace Gate Ping
+Trigger/Name/C09F3724=Mid Cinematic End
+Trigger/Name/C116D284=Hyperion Low Health Q
+Trigger/Name/C17EBB3F=Mid Q
+Trigger/Name/C1981AB2=Prometheus Cmpy / Outback Hunter Q
+Trigger/Name/C4828344=Odin Dies
+Trigger/Name/C9E9EE10=Lane 2 Spawn Loop
+Trigger/Name/CC636751=Victory Cinematic
+Trigger/Name/D0096EC0=DEBUG - Change Colors
+Trigger/Name/D2614D5A=Lane 2
+Trigger/Name/D2A5EAE6=Lane Cleared Q
+Trigger/Name/D671C2A7=Mid Setup
+Trigger/Name/DA7F8847=Raynor Attack Prep Q
+Trigger/Name/DCF3DAF1=Victory
+Trigger/Name/E27FE8EA=Hyperion Attacked Q
+Trigger/Name/E53A19FD=Intro Cleanup Skipped
+Trigger/Name/E5778D60=Defeat Hyperion Dies
+Trigger/Name/E7D651FF=Dominion Middle 1 Deactivate
+Trigger/Name/E8E2A6E0=Palace Gate at 50%
+Trigger/Name/EAE6803E=Raynor Attack Prep Timing
+Trigger/Name/EC48A503=Start Upgrades (Hard)
+Trigger/Name/ECCBA2B2=Intro Cinematic
+Trigger/Name/ED605C53=Lane 3 Spawn Loop
+Trigger/Name/EDD29BA4=Intro Setup
+Trigger/Name/F15F2AAD=Intro Q
+Trigger/Name/F253B06C=Create Dominion Patrol - Right Side
+Trigger/Name/F97F5B41=Victory Setup
+Trigger/Name/FB4BAB63=Defeat Cheat
+Trigger/Name/FFF767EB=Dominion Right 1 Destroyed Q
+Variable/Name/001C166A=i
+Variable/Name/03F40C8C=PLAYER_04_DOMINION_YELLOW
+Variable/Name/03F8FAED=PalaceGatePing
+Variable/Name/059A9ECC=SCVFound
+Variable/Name/07AC9338=FadeDuration
+Variable/Name/0BC531CA=PLAYER_01_USER
+Variable/Name/0FFF542A=Transmission
+Variable/Name/11BD6517=MoveToA
+Variable/Name/171FEE74=DominionPatrolLeftGroup
+Variable/Name/1924E1F9=FadeDuration
+Variable/Name/1A738706=TempPoint
+Variable/Name/1C646281=KERRIGAN
+Variable/Name/1D7A16C7=CinematicTempUnits
+Variable/Name/1E41AB1B=FadeDuration
+Variable/Name/256B1AFA=LanesCleared
+Variable/Name/263D0FDF=PLAYER_09_RAYNOR_BLUE
+Variable/Name/26872465=i
+Variable/Name/2AC37ADE=PLAYER_07_GATES
+Variable/Name/2E1CF6C7=DepotGroup
+Variable/Name/2F2E36CC=PLAYER_14_IZSHA
+Variable/Name/30601208=YellowEnd
+Variable/Name/3F62F8D4=BlueEnd
+Variable/Name/4652EE01=Enemies
+Variable/Name/46794C6F=RepairSCVs
+Variable/Name/46CB88F7=IntroUnitFacings
+Variable/Name/477F7320=BunkerGroup
+Variable/Name/49D20C46=ObjectiveHyperionMustSurvive
+Variable/Name/4A3F85FB=MissionTimer
+Variable/Name/4E5B83CC=CinematicCompleted
+Variable/Name/52C77A5C=CinematicHiddenUnits
+Variable/Name/583FA154=i
+Variable/Name/5A4F10E5=HyperionDamaged
+Variable/Name/5BAE96AC=i
+Variable/Name/5EFABD28=Patrollers
+Variable/Name/5F683639=Depot
+Variable/Name/6134D9CF=SCV
+Variable/Name/61F2403C=i
+Variable/Name/7199542A=HyperionVictims
+Variable/Name/72F17D21=IntroUnitPositions
+Variable/Name/75B5F8A2=Patrollers
+Variable/Name/77EB9BE9=MoveToB
+Variable/Name/7C325357=DominionPatrolRightGroup
+Variable/Name/801BBC3E=HyperionFirstAttackTransmision
+Variable/Name/801E4AFA=ObjectiveDestroyPalaceGate
+Variable/Name/820A97B0=LaneClearedCount
+Variable/Name/872E545C=InCinematic
+Variable/Name/89FFE016=PatrollerPointsA
+Variable/Name/8C2F8286=i
+Variable/Name/9407FBDE=MidHyperion
+Variable/Name/949EDE96=PLAYER_03_DOMINION_TEAL
+Variable/Name/96FCC807=i
+Variable/Name/979B40EA=PLAYER_05_DOMINION_PINK
+Variable/Name/97B75446=IntroUnits
+Variable/Name/98AF731E=Ping
+Variable/Name/A1677F82=i
+Variable/Name/A286DA83=NumberOfRepairSCVs
+Variable/Name/A4DDE81B=PLAYER_10_BRIDGE_CONTROL
+Variable/Name/A6444A2D=FinalValue
+Variable/Name/AC6A2DC8=NumberOfIntroUnits
+Variable/Name/AC936921=FadeDuration
+Variable/Name/B05E9A85=OdinPing
+Variable/Name/B0EFA322=PatrollerPointsA
+Variable/Name/B2171D1E=HomePoint
+Variable/Name/B56CDD88=VictoryKerrigan
+Variable/Name/C00E2963=LanePing
+Variable/Name/C131F60D=DepotCount
+Variable/Name/C256EDA0=VictoryZerg1
+Variable/Name/C709835E=DominionPlayers
+Variable/Name/C8931965=PatrollerPointsB
+Variable/Name/CC4353FA=PalaceTurrets
+Variable/Name/CDE75B31=StartValue
+Variable/Name/CEA6A533=PatrollerPointsB
+Variable/Name/D1B49D5C=ObjectiveClearOuterLanes
+Variable/Name/D465A500=i
+Variable/Name/D5AA8755=DominionLeftGather
+Variable/Name/D7012AC7=HyperionPing
+Variable/Name/DC3730F7=GameOver
+Variable/Name/DEEFDB94=CinematicHyperion
+Variable/Name/E81B6940=HYPERION
+Variable/Name/E9D013BC=VictoryZerg2
+Variable/Name/EDEBF587=FadeDuration
+Variable/Name/EE75544B=DepotLoc
+Variable/Name/F0ACE0B1=PLAYER_02_DOMINION_RED
+Variable/Name/F5369777=FadeDuration
+Variable/Name/F66A3470=i
+Variable/Name/FD091901=DominionRightGather
+Variable/Name/FFA48BE4=MoveTo
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/itIT.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/itIT.SC2Data/LocalizedData/GameStrings.txt
new file mode 100644
index 000000000..9f10801d4
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/itIT.SC2Data/LocalizedData/GameStrings.txt
@@ -0,0 +1,49 @@
+DocInfo/Author=Blizzard Entertainment /// Blizzard Entertainment
+DocInfo/Name=Resa dei conti /// The Reckoning
+LoadingScreen/Tip=Ci sono molte strade che portano all'interno del settore imperiale, ma sono controllate dal Dominio. Elimina le loro difese e le forze dello Sciame si uniranno allo scontro. /// There are many avenues into the Imperial sector, but they are guarded by the Dominion. Eliminate them and Swarm forces will join the fight.
+LoadingScreen/TipRestart=Jim Raynor proteggerà il tuo fianco sinistro dagli attacchi, ma verrà travolto se non gli invierai rinforzi quando ti chiederà aiuto. /// Jim Raynor will protect your left flank from attacks, but he'll be overrun if you don't send help when he asks for it.
+MapInfo/Player01/Name=Genia di Kerrigan /// Kerrigan's Brood
+MapInfo/Player02/Name=Forze del Dominio /// Dominion Forces
+MapInfo/Player03/Name=Forze del Dominio /// Dominion Forces
+MapInfo/Player04/Name=Forze del Dominio /// Dominion Forces
+MapInfo/Player05/Name=Forze del Dominio /// Dominion Forces
+MapInfo/Player06/Name=Randagi di Raynor /// Raynor's Raiders
+MapInfo/Player07/Name=Comandi del ponte /// Bridge Control
+MapInfo/Player08/Name=Sciame /// The Swarm
+MapInfo/Player09/Name=Nemico /// Hostile
+MapInfo/Player10/Name=Nemico /// Hostile
+MapInfo/Player11/Name=Nemico /// Hostile
+MapInfo/Player12/Name=Nemico /// Hostile
+Param/Expression/771E00B5=~A~ (~B~, ~C~) /// ~A~ (~B~, ~C~)
+Param/Value/10019ECC=Colonia /// Hive Cluster
+Param/Value/12CCDD76=L'Hyperion è stata distrutta. /// The Hyperion has been destroyed.
+Param/Value/1C3B9AFC=Posizione fortificata /// Entrenched Position
+Param/Value/1EB92790=Palazzo /// Palace
+Param/Value/2764E991=MovimentoA - Obbligato /// MoveA - Forced
+Param/Value/312673F4=
+Param/Value/3CD8D145=Attacco dell'Hyperion 2 /// Hyperion Attack 2
+Param/Value/40832EE5=Posizione fortificata /// Entrenched Position
+Param/Value/47B5F2AE=Squadriglia Furia dei Cieli /// Sky Fury Squadron
+Param/Value/4964D689=Consigli /// Tips
+Param/Value/56D863DF=Forza zerg più numerosa /// Largest Zerg Force
+Param/Value/57AE1FF8=Attacco dell'Hyperion 3 /// Hyperion Attack 3
+Param/Value/5AF16DC3=Squadriglia Alfa /// Alpha Squadron
+Param/Value/6AA01F1B=Tutte le tue strutture sono state distrutte. /// All of your structures have been destroyed.
+Param/Value/6BF797B1=Danni subiti dall'Hyperion /// Damage Taken by the Hyperion
+Param/Value/7ACFB4DF=Randagi di Raynor /// Raynor's Raiders
+Param/Value/820C3550=MovimentoB - Casuale /// MoveB - Random
+Param/Value/8963E359=Posizione fortificata /// Entrenched Position
+Param/Value/A0FB34D1=Hyperion sotto attacco /// Hyperion Under Attack
+Param/Value/A9B0DEA9=Hyperion /// The Hyperion
+Param/Value/AA33E61F=Hyperion gravemente danneggiata /// Hyperion Badly Damaged
+Param/Value/AF9EB277=Hyperion sotto attacco /// Hyperion Under Attack
+Param/Value/B4B4E180=Uccisioni di Kerrigan /// Kerrigan Kills
+Param/Value/CEB82674=Unità nemiche uccise /// Enemy Troops Killed
+Param/Value/D67953B1=Costo del percorso = /// Pathing Cost =
+Param/Value/DCEB3B79=MovimentoB - Obbligato /// MoveB - Forced
+Param/Value/DD0C4B19=Attacco dell'Hyperion 1 /// Hyperion Attack 1
+Param/Value/E2051C14=Odin /// The Odin
+Param/Value/EC6FA82A=MovimentoA - Casuale /// MoveA - Random
+Param/Value/F74B6456=Uccisioni dei Randagi di Raynor /// Raynor's Raiders Kills
+Unit/Name/Factory=Fabbrica /// Factory
+Unit/Name/GateControlUnit=Comandi del ponte /// Bridge Control
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/itIT.SC2Data/LocalizedData/ObjectStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/itIT.SC2Data/LocalizedData/ObjectStrings.txt
new file mode 100644
index 000000000..75f2e1c10
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/itIT.SC2Data/LocalizedData/ObjectStrings.txt
@@ -0,0 +1,10 @@
+AI/Name/05FE0989=P05 - Pink
+AI/Name/17BA421C=P03 - Teal
+AI/Name/392DEDDF=Za'gara Gates
+AI/Name/7AC59A6F=P04 - Yellow
+AI/Name/AFDBFFDC=P09 - Blue
+AI/Name/EC423AC6=P02 - Red
+Sound/Name/IntroMusic=IntroMusic
+Sound/Name/VictoryMusic=VictoryMusic
+Soundtrack/Name/IntroMusic=IntroMusic
+Soundtrack/Name/VictoryMusic=VictoryMusic
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/itIT.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/itIT.SC2Data/LocalizedData/TriggerStrings.txt
new file mode 100644
index 000000000..6d09f99f8
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/itIT.SC2Data/LocalizedData/TriggerStrings.txt
@@ -0,0 +1,236 @@
+Category/Name/04D71C86=Starting Sequence
+Category/Name/0B0A7942======== MAIN =======
+Category/Name/11102239=Gates
+Category/Name/17F2C4BF=AI
+Category/Name/19E8D425=Main Objective - Hyperion Must Survive
+Category/Name/1ADB580B======== CINEMATIC =======
+Category/Name/1DD683CB=Hyperion
+Category/Name/22C8307E======== GAMEPLAY =======
+Category/Name/2A881197=Main Objective - Destroy Palace Gate
+Category/Name/31271F14=Zerg
+Category/Name/33FB539C======== OBJECTIVES =======
+Category/Name/3585DD2D=Variables
+Category/Name/551D8709=Midgame Cinematic
+Category/Name/5AF004C1=Victory Cinematic
+Category/Name/644E8094=Initialization
+Category/Name/684EF078=Global Variables
+Category/Name/7F423160=Mengsk Taunts
+Category/Name/946333D4=Dominion
+Category/Name/9CCD4C0D=Cinematic Variables
+Category/Name/B378510D=Intro Cinematic
+Category/Name/CC5013A3=Utility
+Category/Name/CD72C2D2=Victory/Defeat
+Category/Name/F7EEABB4=Bonus Objective - Clear Outer Lanes
+Category/Name/F8142391=Debug
+FunctionDef/Grammar/04AA644A=Move units from ~originalRegion~ to ~movePoint~, and have them return to their original positions with delay ~delay|Delay~
+FunctionDef/Grammar/398F1A9A=Enemies within ~range~ of ~unit~ matching ~filter~
+FunctionDef/Grammar/B8C55820=Repair ~structure~ with SCV at index ~index|Index~
+FunctionDef/Name/04AA644A=Intro Move Units
+FunctionDef/Name/398F1A9A=Enemies Within Range
+FunctionDef/Name/B88160FE=Create Patrol Unit
+FunctionDef/Name/B8C55820=Repair Structure with SCV
+FunctionDef/Name/C15ED3B6=AI - Diamondback
+ParamDef/Name/199051A9=Unit Spawn Point
+ParamDef/Name/1AFDC4B3=Unit
+ParamDef/Name/25102314=MovePoint
+ParamDef/Name/2B45B0E5=Unit Group
+ParamDef/Name/3779B33B=NearbyUnits
+ParamDef/Name/5C98BF97=Unit Facing Point
+ParamDef/Name/8C828248=Delay
+ParamDef/Name/9D871E87=Filter
+ParamDef/Name/A3BAE7BA=Index
+ParamDef/Name/BCCEB6CB=OriginalRegion
+ParamDef/Name/D0C7DF75=Structure
+ParamDef/Name/D2EA25BC=Range
+ParamDef/Name/D3F541E5=Unit Type
+ParamDef/Name/DFE84730=Diamondback
+ParamDef/Name/F6C47F8C=Owner
+Structure/Name/02D4152D=RECORD_RepairSCV
+Trigger/Name/045C8179=Objective Destroy Palace Gate Failed
+Trigger/Name/04AE8507=Kerrigan Is Killed Q
+Trigger/Name/06A3FAEC=Hyperion Trigger
+Trigger/Name/087495BB=Mid Hyperion Movement
+Trigger/Name/0A3E4AC0=Hyperion Intro Q
+Trigger/Name/0E7DD429=Mid Cleanup
+Trigger/Name/0E90E2D1=Victory Cleanup
+Trigger/Name/0EE212BB=Lane 3
+Trigger/Name/0F391288=Objective Hyperion Must Survive Complete
+Trigger/Name/10484B80=Objective - Clear Outer Lanes - Update
+Trigger/Name/11526464=Hyperion Attacked
+Trigger/Name/1259352A=SCV Repair Script
+Trigger/Name/1263F02F=Death Head Q
+Trigger/Name/12E86F79=Pride of Augustgrad Q
+Trigger/Name/14585378=Palace Gate at 75%
+Trigger/Name/16AEDC8B=DEBUG - Hyperion
+Trigger/Name/1DC6A40C=Aegis Guard / Bulwark Company Q
+Trigger/Name/1F33FB61=Intro Cleanup Not Skipped
+Trigger/Name/207D017A=Dominion Right 1 Deactivate
+Trigger/Name/21FDCD90=Handle Kerrigan Death
+Trigger/Name/225C725A=Intro Cinematic End
+Trigger/Name/2447B833=Create Dominion Patrol - Left Side
+Trigger/Name/26EF34E4=Initialization
+Trigger/Name/28D3794E=Objective Destroy Palace Gate Create
+Trigger/Name/2B8F2D6F=Init 03 Units
+Trigger/Name/2B9EC8DE=Sky Fury / Night Wolf Q
+Trigger/Name/2F267459=Dominion Right 2 Deactivate
+Trigger/Name/3293F101=Init 02 Players
+Trigger/Name/339DCA1C=Lane 1
+Trigger/Name/3472693E=Lane 1 Spawn Loop
+Trigger/Name/34C1C2A6=Init 01 Technology
+Trigger/Name/35FB224C=Objective Hyperion Must Survive Create
+Trigger/Name/36E6FAA6=Victory Q
+Trigger/Name/3A3A2F2B=Elite Force Intro Q
+Trigger/Name/46073A3C=Hyperion Big Attack 2 Q
+Trigger/Name/464A1841=Victory Zerg
+Trigger/Name/4D0BCD90=Create Augustgrad Gate Pings
+Trigger/Name/4FB8046F=Objective - Clear Outer Lanes - Create
+Trigger/Name/536B4E20=Init 05 Environment
+Trigger/Name/5593E429=DEBUG - AI Debug Output
+Trigger/Name/591B8338=Outback Hunter / Sons of Korhal Q
+Trigger/Name/5DDE161C=Victory Sequence
+Trigger/Name/5E176E0A=Init 04 Music
+Trigger/Name/5E798168=Intro Music
+Trigger/Name/61CE220E=Objective Destroy Palace Gate Complete
+Trigger/Name/665536A8=Hyperion SCV Respawn
+Trigger/Name/67BA042A=Dominion Left 2 Destroyed Q
+Trigger/Name/68A6B37C=Victory Cheat
+Trigger/Name/6BDB3DCA=Tip - Elite Forces Q
+Trigger/Name/6DFAA76F=Augustgrad Gate Intro Proximity
+Trigger/Name/70B20FA2=Hyperion Big Attack 3 Q
+Trigger/Name/7725090D=Start Game
+Trigger/Name/77EB8054=Dominion Left 2 Deactivate
+Trigger/Name/79813264=Init 07 Help
+Trigger/Name/7CC230CC=Init 06 Difficulties
+Trigger/Name/8CFE6E20=Hyperion Attacked First Time Q
+Trigger/Name/8D63DC78=Victory Destroy Palace Gate Completed
+Trigger/Name/9259F53F=Hyperion Big Attack 1 Q
+Trigger/Name/930D2A10=Defeat Base Dead
+Trigger/Name/9BE8ED02=Dominion Middle 2 Deactivate
+Trigger/Name/9E453ED8=AI Give Resources
+Trigger/Name/9F0436E9=Augustgrad Gate Intros Q
+Trigger/Name/A0D858AA=Defeat
+Trigger/Name/A8DDDF64=Start AI
+Trigger/Name/A93CF1AB=Victory Cinematic End
+Trigger/Name/B05AD640=Objective Hyperion Must Survive Failed
+Trigger/Name/B2AFB135=Start Upgrades (Normal)
+Trigger/Name/B377C922=Objective - Clear Outer Lanes - Complete
+Trigger/Name/B5078FB1=Mid Cinematic
+Trigger/Name/BA259BC1=Bulwark Cmpy / Shock Division Q
+Trigger/Name/BA6103F1=Bridge Control
+Trigger/Name/BC7E3853=Hyperion Damaged
+Trigger/Name/BCE0B1EF=Create Palace Gate Ping
+Trigger/Name/C09F3724=Mid Cinematic End
+Trigger/Name/C116D284=Hyperion Low Health Q
+Trigger/Name/C17EBB3F=Mid Q
+Trigger/Name/C1981AB2=Prometheus Cmpy / Outback Hunter Q
+Trigger/Name/C4828344=Odin Dies
+Trigger/Name/C9E9EE10=Lane 2 Spawn Loop
+Trigger/Name/CC636751=Victory Cinematic
+Trigger/Name/D0096EC0=DEBUG - Change Colors
+Trigger/Name/D2614D5A=Lane 2
+Trigger/Name/D2A5EAE6=Lane Cleared Q
+Trigger/Name/D671C2A7=Mid Setup
+Trigger/Name/DA7F8847=Raynor Attack Prep Q
+Trigger/Name/DCF3DAF1=Victory
+Trigger/Name/E27FE8EA=Hyperion Attacked Q
+Trigger/Name/E53A19FD=Intro Cleanup Skipped
+Trigger/Name/E5778D60=Defeat Hyperion Dies
+Trigger/Name/E7D651FF=Dominion Middle 1 Deactivate
+Trigger/Name/E8E2A6E0=Palace Gate at 50%
+Trigger/Name/EAE6803E=Raynor Attack Prep Timing
+Trigger/Name/EC48A503=Start Upgrades (Hard)
+Trigger/Name/ECCBA2B2=Intro Cinematic
+Trigger/Name/ED605C53=Lane 3 Spawn Loop
+Trigger/Name/EDD29BA4=Intro Setup
+Trigger/Name/F15F2AAD=Intro Q
+Trigger/Name/F253B06C=Create Dominion Patrol - Right Side
+Trigger/Name/F97F5B41=Victory Setup
+Trigger/Name/FB4BAB63=Defeat Cheat
+Trigger/Name/FFF767EB=Dominion Right 1 Destroyed Q
+Variable/Name/001C166A=i
+Variable/Name/03F40C8C=PLAYER_04_DOMINION_YELLOW
+Variable/Name/03F8FAED=PalaceGatePing
+Variable/Name/059A9ECC=SCVFound
+Variable/Name/07AC9338=FadeDuration
+Variable/Name/0BC531CA=PLAYER_01_USER
+Variable/Name/0FFF542A=Transmission
+Variable/Name/11BD6517=MoveToA
+Variable/Name/171FEE74=DominionPatrolLeftGroup
+Variable/Name/1924E1F9=FadeDuration
+Variable/Name/1A738706=TempPoint
+Variable/Name/1C646281=KERRIGAN
+Variable/Name/1D7A16C7=CinematicTempUnits
+Variable/Name/1E41AB1B=FadeDuration
+Variable/Name/256B1AFA=LanesCleared
+Variable/Name/263D0FDF=PLAYER_09_RAYNOR_BLUE
+Variable/Name/26872465=i
+Variable/Name/2AC37ADE=PLAYER_07_GATES
+Variable/Name/2E1CF6C7=DepotGroup
+Variable/Name/2F2E36CC=PLAYER_14_IZSHA
+Variable/Name/30601208=YellowEnd
+Variable/Name/3F62F8D4=BlueEnd
+Variable/Name/4652EE01=Enemies
+Variable/Name/46794C6F=RepairSCVs
+Variable/Name/46CB88F7=IntroUnitFacings
+Variable/Name/477F7320=BunkerGroup
+Variable/Name/49D20C46=ObjectiveHyperionMustSurvive
+Variable/Name/4A3F85FB=MissionTimer
+Variable/Name/4E5B83CC=CinematicCompleted
+Variable/Name/52C77A5C=CinematicHiddenUnits
+Variable/Name/583FA154=i
+Variable/Name/5A4F10E5=HyperionDamaged
+Variable/Name/5BAE96AC=i
+Variable/Name/5EFABD28=Patrollers
+Variable/Name/5F683639=Depot
+Variable/Name/6134D9CF=SCV
+Variable/Name/61F2403C=i
+Variable/Name/7199542A=HyperionVictims
+Variable/Name/72F17D21=IntroUnitPositions
+Variable/Name/75B5F8A2=Patrollers
+Variable/Name/77EB9BE9=MoveToB
+Variable/Name/7C325357=DominionPatrolRightGroup
+Variable/Name/801BBC3E=HyperionFirstAttackTransmision
+Variable/Name/801E4AFA=ObjectiveDestroyPalaceGate
+Variable/Name/820A97B0=LaneClearedCount
+Variable/Name/872E545C=InCinematic
+Variable/Name/89FFE016=PatrollerPointsA
+Variable/Name/8C2F8286=i
+Variable/Name/9407FBDE=MidHyperion
+Variable/Name/949EDE96=PLAYER_03_DOMINION_TEAL
+Variable/Name/96FCC807=i
+Variable/Name/979B40EA=PLAYER_05_DOMINION_PINK
+Variable/Name/97B75446=IntroUnits
+Variable/Name/98AF731E=Ping
+Variable/Name/A1677F82=i
+Variable/Name/A286DA83=NumberOfRepairSCVs
+Variable/Name/A4DDE81B=PLAYER_10_BRIDGE_CONTROL
+Variable/Name/A6444A2D=FinalValue
+Variable/Name/AC6A2DC8=NumberOfIntroUnits
+Variable/Name/AC936921=FadeDuration
+Variable/Name/B05E9A85=OdinPing
+Variable/Name/B0EFA322=PatrollerPointsA
+Variable/Name/B2171D1E=HomePoint
+Variable/Name/B56CDD88=VictoryKerrigan
+Variable/Name/C00E2963=LanePing
+Variable/Name/C131F60D=DepotCount
+Variable/Name/C256EDA0=VictoryZerg1
+Variable/Name/C709835E=DominionPlayers
+Variable/Name/C8931965=PatrollerPointsB
+Variable/Name/CC4353FA=PalaceTurrets
+Variable/Name/CDE75B31=StartValue
+Variable/Name/CEA6A533=PatrollerPointsB
+Variable/Name/D1B49D5C=ObjectiveClearOuterLanes
+Variable/Name/D465A500=i
+Variable/Name/D5AA8755=DominionLeftGather
+Variable/Name/D7012AC7=HyperionPing
+Variable/Name/DC3730F7=GameOver
+Variable/Name/DEEFDB94=CinematicHyperion
+Variable/Name/E81B6940=HYPERION
+Variable/Name/E9D013BC=VictoryZerg2
+Variable/Name/EDEBF587=FadeDuration
+Variable/Name/EE75544B=DepotLoc
+Variable/Name/F0ACE0B1=PLAYER_02_DOMINION_RED
+Variable/Name/F5369777=FadeDuration
+Variable/Name/F66A3470=i
+Variable/Name/FD091901=DominionRightGather
+Variable/Name/FFA48BE4=MoveTo
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/koKR.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/koKR.SC2Data/LocalizedData/GameStrings.txt
new file mode 100644
index 000000000..4212e40cb
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/koKR.SC2Data/LocalizedData/GameStrings.txt
@@ -0,0 +1,49 @@
+DocInfo/Author=블리자드 엔터테인먼트 /// Blizzard Entertainment
+DocInfo/Name=심판 /// The Reckoning
+LoadingScreen/Tip=황제 구역으로 가는 길은 여러 경로가 있지만, 모두 자치령이 지키고 있습니다. 그들을 제거하면 군단 병력이 전투에 합류할 것입니다. /// There are many avenues into the Imperial sector, but they are guarded by the Dominion. Eliminate them and Swarm forces will join the fight.
+LoadingScreen/TipRestart=레이너가 왼쪽 측면을 방어해 줄 것입니다. 하지만 그가 도움을 요청했을 때 병력을 보내주지 않으면 적에게 장악당할 것입니다. /// Jim Raynor will protect your left flank from attacks, but he'll be overrun if you don't send help when he asks for it.
+MapInfo/Player01/Name=케리건의 무리 /// Kerrigan's Brood
+MapInfo/Player02/Name=자치령 군대 /// Dominion Forces
+MapInfo/Player03/Name=자치령 군대 /// Dominion Forces
+MapInfo/Player04/Name=자치령 군대 /// Dominion Forces
+MapInfo/Player05/Name=자치령 군대 /// Dominion Forces
+MapInfo/Player06/Name=레이너 특공대 /// Raynor's Raiders
+MapInfo/Player07/Name=다리 제어기 /// Bridge Control
+MapInfo/Player08/Name=군단 /// The Swarm
+MapInfo/Player09/Name=적대적 /// Hostile
+MapInfo/Player10/Name=적대적 /// Hostile
+MapInfo/Player11/Name=적대적 /// Hostile
+MapInfo/Player12/Name=적대적 /// Hostile
+Param/Expression/771E00B5=~A~ (~B~, ~C~) /// ~A~ (~B~, ~C~)
+Param/Value/10019ECC=군락지 /// Hive Cluster
+Param/Value/12CCDD76=히페리온이 파괴되었습니다. /// The Hyperion has been destroyed.
+Param/Value/1C3B9AFC=참호 진지 /// Entrenched Position
+Param/Value/1EB92790=황궁 /// Palace
+Param/Value/2764E991=이동A - 강제 /// MoveA - Forced
+Param/Value/312673F4=
+Param/Value/3CD8D145=히페리온 공격 2 /// Hyperion Attack 2
+Param/Value/40832EE5=참호 진지 /// Entrenched Position
+Param/Value/47B5F2AE=창공의 분노 편대 /// Sky Fury Squadron
+Param/Value/4964D689=팁 /// Tips
+Param/Value/56D863DF=최대 저그 병력 /// Largest Zerg Force
+Param/Value/57AE1FF8=히페리온 공격 3 /// Hyperion Attack 3
+Param/Value/5AF16DC3=알파 편대 /// Alpha Squadron
+Param/Value/6AA01F1B=구조물이 전부 파괴되었습니다. /// All of your structures have been destroyed.
+Param/Value/6BF797B1=히페리온이 받은 피해 /// Damage Taken by the Hyperion
+Param/Value/7ACFB4DF=레이너 특공대 /// Raynor's Raiders
+Param/Value/820C3550=이동B - 무작위 /// MoveB - Random
+Param/Value/8963E359=참호 진지 /// Entrenched Position
+Param/Value/A0FB34D1=히페리온 공격받음 /// Hyperion Under Attack
+Param/Value/A9B0DEA9=히페리온 /// The Hyperion
+Param/Value/AA33E61F=히페리온 심하게 손상됨 /// Hyperion Badly Damaged
+Param/Value/AF9EB277=히페리온 공격받음 /// Hyperion Under Attack
+Param/Value/B4B4E180=케리건이 처치한 유닛 /// Kerrigan Kills
+Param/Value/CEB82674=처치한 적 병력 /// Enemy Troops Killed
+Param/Value/D67953B1=이동 경로 비용 = /// Pathing Cost =
+Param/Value/DCEB3B79=이동B - 강제 /// MoveB - Forced
+Param/Value/DD0C4B19=히페리온 공격 1 /// Hyperion Attack 1
+Param/Value/E2051C14=오딘 /// The Odin
+Param/Value/EC6FA82A=이동A - 무작위 /// MoveA - Random
+Param/Value/F74B6456=레이너 특공대가 처치한 유닛 /// Raynor's Raiders Kills
+Unit/Name/Factory=군수공장 /// Factory
+Unit/Name/GateControlUnit=다리 제어기 /// Bridge Control
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/koKR.SC2Data/LocalizedData/ObjectStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/koKR.SC2Data/LocalizedData/ObjectStrings.txt
new file mode 100644
index 000000000..75f2e1c10
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/koKR.SC2Data/LocalizedData/ObjectStrings.txt
@@ -0,0 +1,10 @@
+AI/Name/05FE0989=P05 - Pink
+AI/Name/17BA421C=P03 - Teal
+AI/Name/392DEDDF=Za'gara Gates
+AI/Name/7AC59A6F=P04 - Yellow
+AI/Name/AFDBFFDC=P09 - Blue
+AI/Name/EC423AC6=P02 - Red
+Sound/Name/IntroMusic=IntroMusic
+Sound/Name/VictoryMusic=VictoryMusic
+Soundtrack/Name/IntroMusic=IntroMusic
+Soundtrack/Name/VictoryMusic=VictoryMusic
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/koKR.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/koKR.SC2Data/LocalizedData/TriggerStrings.txt
new file mode 100644
index 000000000..6d09f99f8
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/koKR.SC2Data/LocalizedData/TriggerStrings.txt
@@ -0,0 +1,236 @@
+Category/Name/04D71C86=Starting Sequence
+Category/Name/0B0A7942======== MAIN =======
+Category/Name/11102239=Gates
+Category/Name/17F2C4BF=AI
+Category/Name/19E8D425=Main Objective - Hyperion Must Survive
+Category/Name/1ADB580B======== CINEMATIC =======
+Category/Name/1DD683CB=Hyperion
+Category/Name/22C8307E======== GAMEPLAY =======
+Category/Name/2A881197=Main Objective - Destroy Palace Gate
+Category/Name/31271F14=Zerg
+Category/Name/33FB539C======== OBJECTIVES =======
+Category/Name/3585DD2D=Variables
+Category/Name/551D8709=Midgame Cinematic
+Category/Name/5AF004C1=Victory Cinematic
+Category/Name/644E8094=Initialization
+Category/Name/684EF078=Global Variables
+Category/Name/7F423160=Mengsk Taunts
+Category/Name/946333D4=Dominion
+Category/Name/9CCD4C0D=Cinematic Variables
+Category/Name/B378510D=Intro Cinematic
+Category/Name/CC5013A3=Utility
+Category/Name/CD72C2D2=Victory/Defeat
+Category/Name/F7EEABB4=Bonus Objective - Clear Outer Lanes
+Category/Name/F8142391=Debug
+FunctionDef/Grammar/04AA644A=Move units from ~originalRegion~ to ~movePoint~, and have them return to their original positions with delay ~delay|Delay~
+FunctionDef/Grammar/398F1A9A=Enemies within ~range~ of ~unit~ matching ~filter~
+FunctionDef/Grammar/B8C55820=Repair ~structure~ with SCV at index ~index|Index~
+FunctionDef/Name/04AA644A=Intro Move Units
+FunctionDef/Name/398F1A9A=Enemies Within Range
+FunctionDef/Name/B88160FE=Create Patrol Unit
+FunctionDef/Name/B8C55820=Repair Structure with SCV
+FunctionDef/Name/C15ED3B6=AI - Diamondback
+ParamDef/Name/199051A9=Unit Spawn Point
+ParamDef/Name/1AFDC4B3=Unit
+ParamDef/Name/25102314=MovePoint
+ParamDef/Name/2B45B0E5=Unit Group
+ParamDef/Name/3779B33B=NearbyUnits
+ParamDef/Name/5C98BF97=Unit Facing Point
+ParamDef/Name/8C828248=Delay
+ParamDef/Name/9D871E87=Filter
+ParamDef/Name/A3BAE7BA=Index
+ParamDef/Name/BCCEB6CB=OriginalRegion
+ParamDef/Name/D0C7DF75=Structure
+ParamDef/Name/D2EA25BC=Range
+ParamDef/Name/D3F541E5=Unit Type
+ParamDef/Name/DFE84730=Diamondback
+ParamDef/Name/F6C47F8C=Owner
+Structure/Name/02D4152D=RECORD_RepairSCV
+Trigger/Name/045C8179=Objective Destroy Palace Gate Failed
+Trigger/Name/04AE8507=Kerrigan Is Killed Q
+Trigger/Name/06A3FAEC=Hyperion Trigger
+Trigger/Name/087495BB=Mid Hyperion Movement
+Trigger/Name/0A3E4AC0=Hyperion Intro Q
+Trigger/Name/0E7DD429=Mid Cleanup
+Trigger/Name/0E90E2D1=Victory Cleanup
+Trigger/Name/0EE212BB=Lane 3
+Trigger/Name/0F391288=Objective Hyperion Must Survive Complete
+Trigger/Name/10484B80=Objective - Clear Outer Lanes - Update
+Trigger/Name/11526464=Hyperion Attacked
+Trigger/Name/1259352A=SCV Repair Script
+Trigger/Name/1263F02F=Death Head Q
+Trigger/Name/12E86F79=Pride of Augustgrad Q
+Trigger/Name/14585378=Palace Gate at 75%
+Trigger/Name/16AEDC8B=DEBUG - Hyperion
+Trigger/Name/1DC6A40C=Aegis Guard / Bulwark Company Q
+Trigger/Name/1F33FB61=Intro Cleanup Not Skipped
+Trigger/Name/207D017A=Dominion Right 1 Deactivate
+Trigger/Name/21FDCD90=Handle Kerrigan Death
+Trigger/Name/225C725A=Intro Cinematic End
+Trigger/Name/2447B833=Create Dominion Patrol - Left Side
+Trigger/Name/26EF34E4=Initialization
+Trigger/Name/28D3794E=Objective Destroy Palace Gate Create
+Trigger/Name/2B8F2D6F=Init 03 Units
+Trigger/Name/2B9EC8DE=Sky Fury / Night Wolf Q
+Trigger/Name/2F267459=Dominion Right 2 Deactivate
+Trigger/Name/3293F101=Init 02 Players
+Trigger/Name/339DCA1C=Lane 1
+Trigger/Name/3472693E=Lane 1 Spawn Loop
+Trigger/Name/34C1C2A6=Init 01 Technology
+Trigger/Name/35FB224C=Objective Hyperion Must Survive Create
+Trigger/Name/36E6FAA6=Victory Q
+Trigger/Name/3A3A2F2B=Elite Force Intro Q
+Trigger/Name/46073A3C=Hyperion Big Attack 2 Q
+Trigger/Name/464A1841=Victory Zerg
+Trigger/Name/4D0BCD90=Create Augustgrad Gate Pings
+Trigger/Name/4FB8046F=Objective - Clear Outer Lanes - Create
+Trigger/Name/536B4E20=Init 05 Environment
+Trigger/Name/5593E429=DEBUG - AI Debug Output
+Trigger/Name/591B8338=Outback Hunter / Sons of Korhal Q
+Trigger/Name/5DDE161C=Victory Sequence
+Trigger/Name/5E176E0A=Init 04 Music
+Trigger/Name/5E798168=Intro Music
+Trigger/Name/61CE220E=Objective Destroy Palace Gate Complete
+Trigger/Name/665536A8=Hyperion SCV Respawn
+Trigger/Name/67BA042A=Dominion Left 2 Destroyed Q
+Trigger/Name/68A6B37C=Victory Cheat
+Trigger/Name/6BDB3DCA=Tip - Elite Forces Q
+Trigger/Name/6DFAA76F=Augustgrad Gate Intro Proximity
+Trigger/Name/70B20FA2=Hyperion Big Attack 3 Q
+Trigger/Name/7725090D=Start Game
+Trigger/Name/77EB8054=Dominion Left 2 Deactivate
+Trigger/Name/79813264=Init 07 Help
+Trigger/Name/7CC230CC=Init 06 Difficulties
+Trigger/Name/8CFE6E20=Hyperion Attacked First Time Q
+Trigger/Name/8D63DC78=Victory Destroy Palace Gate Completed
+Trigger/Name/9259F53F=Hyperion Big Attack 1 Q
+Trigger/Name/930D2A10=Defeat Base Dead
+Trigger/Name/9BE8ED02=Dominion Middle 2 Deactivate
+Trigger/Name/9E453ED8=AI Give Resources
+Trigger/Name/9F0436E9=Augustgrad Gate Intros Q
+Trigger/Name/A0D858AA=Defeat
+Trigger/Name/A8DDDF64=Start AI
+Trigger/Name/A93CF1AB=Victory Cinematic End
+Trigger/Name/B05AD640=Objective Hyperion Must Survive Failed
+Trigger/Name/B2AFB135=Start Upgrades (Normal)
+Trigger/Name/B377C922=Objective - Clear Outer Lanes - Complete
+Trigger/Name/B5078FB1=Mid Cinematic
+Trigger/Name/BA259BC1=Bulwark Cmpy / Shock Division Q
+Trigger/Name/BA6103F1=Bridge Control
+Trigger/Name/BC7E3853=Hyperion Damaged
+Trigger/Name/BCE0B1EF=Create Palace Gate Ping
+Trigger/Name/C09F3724=Mid Cinematic End
+Trigger/Name/C116D284=Hyperion Low Health Q
+Trigger/Name/C17EBB3F=Mid Q
+Trigger/Name/C1981AB2=Prometheus Cmpy / Outback Hunter Q
+Trigger/Name/C4828344=Odin Dies
+Trigger/Name/C9E9EE10=Lane 2 Spawn Loop
+Trigger/Name/CC636751=Victory Cinematic
+Trigger/Name/D0096EC0=DEBUG - Change Colors
+Trigger/Name/D2614D5A=Lane 2
+Trigger/Name/D2A5EAE6=Lane Cleared Q
+Trigger/Name/D671C2A7=Mid Setup
+Trigger/Name/DA7F8847=Raynor Attack Prep Q
+Trigger/Name/DCF3DAF1=Victory
+Trigger/Name/E27FE8EA=Hyperion Attacked Q
+Trigger/Name/E53A19FD=Intro Cleanup Skipped
+Trigger/Name/E5778D60=Defeat Hyperion Dies
+Trigger/Name/E7D651FF=Dominion Middle 1 Deactivate
+Trigger/Name/E8E2A6E0=Palace Gate at 50%
+Trigger/Name/EAE6803E=Raynor Attack Prep Timing
+Trigger/Name/EC48A503=Start Upgrades (Hard)
+Trigger/Name/ECCBA2B2=Intro Cinematic
+Trigger/Name/ED605C53=Lane 3 Spawn Loop
+Trigger/Name/EDD29BA4=Intro Setup
+Trigger/Name/F15F2AAD=Intro Q
+Trigger/Name/F253B06C=Create Dominion Patrol - Right Side
+Trigger/Name/F97F5B41=Victory Setup
+Trigger/Name/FB4BAB63=Defeat Cheat
+Trigger/Name/FFF767EB=Dominion Right 1 Destroyed Q
+Variable/Name/001C166A=i
+Variable/Name/03F40C8C=PLAYER_04_DOMINION_YELLOW
+Variable/Name/03F8FAED=PalaceGatePing
+Variable/Name/059A9ECC=SCVFound
+Variable/Name/07AC9338=FadeDuration
+Variable/Name/0BC531CA=PLAYER_01_USER
+Variable/Name/0FFF542A=Transmission
+Variable/Name/11BD6517=MoveToA
+Variable/Name/171FEE74=DominionPatrolLeftGroup
+Variable/Name/1924E1F9=FadeDuration
+Variable/Name/1A738706=TempPoint
+Variable/Name/1C646281=KERRIGAN
+Variable/Name/1D7A16C7=CinematicTempUnits
+Variable/Name/1E41AB1B=FadeDuration
+Variable/Name/256B1AFA=LanesCleared
+Variable/Name/263D0FDF=PLAYER_09_RAYNOR_BLUE
+Variable/Name/26872465=i
+Variable/Name/2AC37ADE=PLAYER_07_GATES
+Variable/Name/2E1CF6C7=DepotGroup
+Variable/Name/2F2E36CC=PLAYER_14_IZSHA
+Variable/Name/30601208=YellowEnd
+Variable/Name/3F62F8D4=BlueEnd
+Variable/Name/4652EE01=Enemies
+Variable/Name/46794C6F=RepairSCVs
+Variable/Name/46CB88F7=IntroUnitFacings
+Variable/Name/477F7320=BunkerGroup
+Variable/Name/49D20C46=ObjectiveHyperionMustSurvive
+Variable/Name/4A3F85FB=MissionTimer
+Variable/Name/4E5B83CC=CinematicCompleted
+Variable/Name/52C77A5C=CinematicHiddenUnits
+Variable/Name/583FA154=i
+Variable/Name/5A4F10E5=HyperionDamaged
+Variable/Name/5BAE96AC=i
+Variable/Name/5EFABD28=Patrollers
+Variable/Name/5F683639=Depot
+Variable/Name/6134D9CF=SCV
+Variable/Name/61F2403C=i
+Variable/Name/7199542A=HyperionVictims
+Variable/Name/72F17D21=IntroUnitPositions
+Variable/Name/75B5F8A2=Patrollers
+Variable/Name/77EB9BE9=MoveToB
+Variable/Name/7C325357=DominionPatrolRightGroup
+Variable/Name/801BBC3E=HyperionFirstAttackTransmision
+Variable/Name/801E4AFA=ObjectiveDestroyPalaceGate
+Variable/Name/820A97B0=LaneClearedCount
+Variable/Name/872E545C=InCinematic
+Variable/Name/89FFE016=PatrollerPointsA
+Variable/Name/8C2F8286=i
+Variable/Name/9407FBDE=MidHyperion
+Variable/Name/949EDE96=PLAYER_03_DOMINION_TEAL
+Variable/Name/96FCC807=i
+Variable/Name/979B40EA=PLAYER_05_DOMINION_PINK
+Variable/Name/97B75446=IntroUnits
+Variable/Name/98AF731E=Ping
+Variable/Name/A1677F82=i
+Variable/Name/A286DA83=NumberOfRepairSCVs
+Variable/Name/A4DDE81B=PLAYER_10_BRIDGE_CONTROL
+Variable/Name/A6444A2D=FinalValue
+Variable/Name/AC6A2DC8=NumberOfIntroUnits
+Variable/Name/AC936921=FadeDuration
+Variable/Name/B05E9A85=OdinPing
+Variable/Name/B0EFA322=PatrollerPointsA
+Variable/Name/B2171D1E=HomePoint
+Variable/Name/B56CDD88=VictoryKerrigan
+Variable/Name/C00E2963=LanePing
+Variable/Name/C131F60D=DepotCount
+Variable/Name/C256EDA0=VictoryZerg1
+Variable/Name/C709835E=DominionPlayers
+Variable/Name/C8931965=PatrollerPointsB
+Variable/Name/CC4353FA=PalaceTurrets
+Variable/Name/CDE75B31=StartValue
+Variable/Name/CEA6A533=PatrollerPointsB
+Variable/Name/D1B49D5C=ObjectiveClearOuterLanes
+Variable/Name/D465A500=i
+Variable/Name/D5AA8755=DominionLeftGather
+Variable/Name/D7012AC7=HyperionPing
+Variable/Name/DC3730F7=GameOver
+Variable/Name/DEEFDB94=CinematicHyperion
+Variable/Name/E81B6940=HYPERION
+Variable/Name/E9D013BC=VictoryZerg2
+Variable/Name/EDEBF587=FadeDuration
+Variable/Name/EE75544B=DepotLoc
+Variable/Name/F0ACE0B1=PLAYER_02_DOMINION_RED
+Variable/Name/F5369777=FadeDuration
+Variable/Name/F66A3470=i
+Variable/Name/FD091901=DominionRightGather
+Variable/Name/FFA48BE4=MoveTo
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/plPL.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/plPL.SC2Data/LocalizedData/GameStrings.txt
new file mode 100644
index 000000000..94179bde6
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/plPL.SC2Data/LocalizedData/GameStrings.txt
@@ -0,0 +1,49 @@
+DocInfo/Author=Blizzard Entertainment /// Blizzard Entertainment
+DocInfo/Name=Czas rozliczeń /// The Reckoning
+LoadingScreen/Tip=Istnieje wiele dróg prowadzących do sektora imperialnego, ale są strzeżone przez siły Dominium. Wyeliminuj je, a oddziały roju dołączą do walki. /// There are many avenues into the Imperial sector, but they are guarded by the Dominion. Eliminate them and Swarm forces will join the fight.
+LoadingScreen/TipRestart=Jim Raynor będzie osłaniał twoją lewą flankę przed atakami, ale zostanie pokonany, jeśli nie przyślesz mu wsparcia, kiedy je wezwie. /// Jim Raynor will protect your left flank from attacks, but he'll be overrun if you don't send help when he asks for it.
+MapInfo/Player01/Name=Szczep Kerrigan /// Kerrigan's Brood
+MapInfo/Player02/Name=Oddziały Dominium /// Dominion Forces
+MapInfo/Player03/Name=Oddziały Dominium /// Dominion Forces
+MapInfo/Player04/Name=Oddziały Dominium /// Dominion Forces
+MapInfo/Player05/Name=Oddziały Dominium /// Dominion Forces
+MapInfo/Player06/Name=Rekietierzy Raynora /// Raynor's Raiders
+MapInfo/Player07/Name=Sterownia mostu /// Bridge Control
+MapInfo/Player08/Name=Rój /// The Swarm
+MapInfo/Player09/Name=Wróg /// Hostile
+MapInfo/Player10/Name=Wróg /// Hostile
+MapInfo/Player11/Name=Wróg /// Hostile
+MapInfo/Player12/Name=Wróg /// Hostile
+Param/Expression/771E00B5=~A~ (~B~, ~C~) /// ~A~ (~B~, ~C~)
+Param/Value/10019ECC=Skupisko uli /// Hive Cluster
+Param/Value/12CCDD76=Hyperion został zniszczony /// The Hyperion has been destroyed.
+Param/Value/1C3B9AFC=Okopana pozycja /// Entrenched Position
+Param/Value/1EB92790=Pałac /// Palace
+Param/Value/2764E991=RuchA – Wymuszony /// MoveA - Forced
+Param/Value/312673F4=
+Param/Value/3CD8D145=Hyperion – Atak 2 /// Hyperion Attack 2
+Param/Value/40832EE5=Okopana pozycja /// Entrenched Position
+Param/Value/47B5F2AE=Eskadra „Furia Niebios” /// Sky Fury Squadron
+Param/Value/4964D689=Wskazówki /// Tips
+Param/Value/56D863DF=Największy oddział zergów /// Largest Zerg Force
+Param/Value/57AE1FF8=Hyperion – Atak 3 /// Hyperion Attack 3
+Param/Value/5AF16DC3=Eskadra Alfa /// Alpha Squadron
+Param/Value/6AA01F1B=Wszystkie twoje budowle zostały zniszczone. /// All of your structures have been destroyed.
+Param/Value/6BF797B1=Uszkodzenia odniesione przez „Hyperiona” /// Damage Taken by the Hyperion
+Param/Value/7ACFB4DF=Rekietierzy Raynora /// Raynor's Raiders
+Param/Value/820C3550=RuchB – Losowy /// MoveB - Random
+Param/Value/8963E359=Okopana pozycja /// Entrenched Position
+Param/Value/A0FB34D1=Hyperion /// Hyperion Under Attack
+Param/Value/A9B0DEA9=Hyperion /// The Hyperion
+Param/Value/AA33E61F=Hyperion /// Hyperion Badly Damaged
+Param/Value/AF9EB277=Hyperion /// Hyperion Under Attack
+Param/Value/B4B4E180=Zabici przez Kerrigan /// Kerrigan Kills
+Param/Value/CEB82674=Zabite jednostki wroga /// Enemy Troops Killed
+Param/Value/D67953B1=Ścieżkowanie – koszt = /// Pathing Cost =
+Param/Value/DCEB3B79=RuchB – Wymuszony /// MoveB - Forced
+Param/Value/DD0C4B19=Hyperion – Atak 1 /// Hyperion Attack 1
+Param/Value/E2051C14=Odyn /// The Odin
+Param/Value/EC6FA82A=RuchA – Losowy /// MoveA - Random
+Param/Value/F74B6456=Zabici przez Rekieterów Raynora /// Raynor's Raiders Kills
+Unit/Name/Factory=Fabryka /// Factory
+Unit/Name/GateControlUnit=Sterownia mostu /// Bridge Control
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/plPL.SC2Data/LocalizedData/ObjectStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/plPL.SC2Data/LocalizedData/ObjectStrings.txt
new file mode 100644
index 000000000..75f2e1c10
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/plPL.SC2Data/LocalizedData/ObjectStrings.txt
@@ -0,0 +1,10 @@
+AI/Name/05FE0989=P05 - Pink
+AI/Name/17BA421C=P03 - Teal
+AI/Name/392DEDDF=Za'gara Gates
+AI/Name/7AC59A6F=P04 - Yellow
+AI/Name/AFDBFFDC=P09 - Blue
+AI/Name/EC423AC6=P02 - Red
+Sound/Name/IntroMusic=IntroMusic
+Sound/Name/VictoryMusic=VictoryMusic
+Soundtrack/Name/IntroMusic=IntroMusic
+Soundtrack/Name/VictoryMusic=VictoryMusic
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/plPL.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/plPL.SC2Data/LocalizedData/TriggerStrings.txt
new file mode 100644
index 000000000..6d09f99f8
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/plPL.SC2Data/LocalizedData/TriggerStrings.txt
@@ -0,0 +1,236 @@
+Category/Name/04D71C86=Starting Sequence
+Category/Name/0B0A7942======== MAIN =======
+Category/Name/11102239=Gates
+Category/Name/17F2C4BF=AI
+Category/Name/19E8D425=Main Objective - Hyperion Must Survive
+Category/Name/1ADB580B======== CINEMATIC =======
+Category/Name/1DD683CB=Hyperion
+Category/Name/22C8307E======== GAMEPLAY =======
+Category/Name/2A881197=Main Objective - Destroy Palace Gate
+Category/Name/31271F14=Zerg
+Category/Name/33FB539C======== OBJECTIVES =======
+Category/Name/3585DD2D=Variables
+Category/Name/551D8709=Midgame Cinematic
+Category/Name/5AF004C1=Victory Cinematic
+Category/Name/644E8094=Initialization
+Category/Name/684EF078=Global Variables
+Category/Name/7F423160=Mengsk Taunts
+Category/Name/946333D4=Dominion
+Category/Name/9CCD4C0D=Cinematic Variables
+Category/Name/B378510D=Intro Cinematic
+Category/Name/CC5013A3=Utility
+Category/Name/CD72C2D2=Victory/Defeat
+Category/Name/F7EEABB4=Bonus Objective - Clear Outer Lanes
+Category/Name/F8142391=Debug
+FunctionDef/Grammar/04AA644A=Move units from ~originalRegion~ to ~movePoint~, and have them return to their original positions with delay ~delay|Delay~
+FunctionDef/Grammar/398F1A9A=Enemies within ~range~ of ~unit~ matching ~filter~
+FunctionDef/Grammar/B8C55820=Repair ~structure~ with SCV at index ~index|Index~
+FunctionDef/Name/04AA644A=Intro Move Units
+FunctionDef/Name/398F1A9A=Enemies Within Range
+FunctionDef/Name/B88160FE=Create Patrol Unit
+FunctionDef/Name/B8C55820=Repair Structure with SCV
+FunctionDef/Name/C15ED3B6=AI - Diamondback
+ParamDef/Name/199051A9=Unit Spawn Point
+ParamDef/Name/1AFDC4B3=Unit
+ParamDef/Name/25102314=MovePoint
+ParamDef/Name/2B45B0E5=Unit Group
+ParamDef/Name/3779B33B=NearbyUnits
+ParamDef/Name/5C98BF97=Unit Facing Point
+ParamDef/Name/8C828248=Delay
+ParamDef/Name/9D871E87=Filter
+ParamDef/Name/A3BAE7BA=Index
+ParamDef/Name/BCCEB6CB=OriginalRegion
+ParamDef/Name/D0C7DF75=Structure
+ParamDef/Name/D2EA25BC=Range
+ParamDef/Name/D3F541E5=Unit Type
+ParamDef/Name/DFE84730=Diamondback
+ParamDef/Name/F6C47F8C=Owner
+Structure/Name/02D4152D=RECORD_RepairSCV
+Trigger/Name/045C8179=Objective Destroy Palace Gate Failed
+Trigger/Name/04AE8507=Kerrigan Is Killed Q
+Trigger/Name/06A3FAEC=Hyperion Trigger
+Trigger/Name/087495BB=Mid Hyperion Movement
+Trigger/Name/0A3E4AC0=Hyperion Intro Q
+Trigger/Name/0E7DD429=Mid Cleanup
+Trigger/Name/0E90E2D1=Victory Cleanup
+Trigger/Name/0EE212BB=Lane 3
+Trigger/Name/0F391288=Objective Hyperion Must Survive Complete
+Trigger/Name/10484B80=Objective - Clear Outer Lanes - Update
+Trigger/Name/11526464=Hyperion Attacked
+Trigger/Name/1259352A=SCV Repair Script
+Trigger/Name/1263F02F=Death Head Q
+Trigger/Name/12E86F79=Pride of Augustgrad Q
+Trigger/Name/14585378=Palace Gate at 75%
+Trigger/Name/16AEDC8B=DEBUG - Hyperion
+Trigger/Name/1DC6A40C=Aegis Guard / Bulwark Company Q
+Trigger/Name/1F33FB61=Intro Cleanup Not Skipped
+Trigger/Name/207D017A=Dominion Right 1 Deactivate
+Trigger/Name/21FDCD90=Handle Kerrigan Death
+Trigger/Name/225C725A=Intro Cinematic End
+Trigger/Name/2447B833=Create Dominion Patrol - Left Side
+Trigger/Name/26EF34E4=Initialization
+Trigger/Name/28D3794E=Objective Destroy Palace Gate Create
+Trigger/Name/2B8F2D6F=Init 03 Units
+Trigger/Name/2B9EC8DE=Sky Fury / Night Wolf Q
+Trigger/Name/2F267459=Dominion Right 2 Deactivate
+Trigger/Name/3293F101=Init 02 Players
+Trigger/Name/339DCA1C=Lane 1
+Trigger/Name/3472693E=Lane 1 Spawn Loop
+Trigger/Name/34C1C2A6=Init 01 Technology
+Trigger/Name/35FB224C=Objective Hyperion Must Survive Create
+Trigger/Name/36E6FAA6=Victory Q
+Trigger/Name/3A3A2F2B=Elite Force Intro Q
+Trigger/Name/46073A3C=Hyperion Big Attack 2 Q
+Trigger/Name/464A1841=Victory Zerg
+Trigger/Name/4D0BCD90=Create Augustgrad Gate Pings
+Trigger/Name/4FB8046F=Objective - Clear Outer Lanes - Create
+Trigger/Name/536B4E20=Init 05 Environment
+Trigger/Name/5593E429=DEBUG - AI Debug Output
+Trigger/Name/591B8338=Outback Hunter / Sons of Korhal Q
+Trigger/Name/5DDE161C=Victory Sequence
+Trigger/Name/5E176E0A=Init 04 Music
+Trigger/Name/5E798168=Intro Music
+Trigger/Name/61CE220E=Objective Destroy Palace Gate Complete
+Trigger/Name/665536A8=Hyperion SCV Respawn
+Trigger/Name/67BA042A=Dominion Left 2 Destroyed Q
+Trigger/Name/68A6B37C=Victory Cheat
+Trigger/Name/6BDB3DCA=Tip - Elite Forces Q
+Trigger/Name/6DFAA76F=Augustgrad Gate Intro Proximity
+Trigger/Name/70B20FA2=Hyperion Big Attack 3 Q
+Trigger/Name/7725090D=Start Game
+Trigger/Name/77EB8054=Dominion Left 2 Deactivate
+Trigger/Name/79813264=Init 07 Help
+Trigger/Name/7CC230CC=Init 06 Difficulties
+Trigger/Name/8CFE6E20=Hyperion Attacked First Time Q
+Trigger/Name/8D63DC78=Victory Destroy Palace Gate Completed
+Trigger/Name/9259F53F=Hyperion Big Attack 1 Q
+Trigger/Name/930D2A10=Defeat Base Dead
+Trigger/Name/9BE8ED02=Dominion Middle 2 Deactivate
+Trigger/Name/9E453ED8=AI Give Resources
+Trigger/Name/9F0436E9=Augustgrad Gate Intros Q
+Trigger/Name/A0D858AA=Defeat
+Trigger/Name/A8DDDF64=Start AI
+Trigger/Name/A93CF1AB=Victory Cinematic End
+Trigger/Name/B05AD640=Objective Hyperion Must Survive Failed
+Trigger/Name/B2AFB135=Start Upgrades (Normal)
+Trigger/Name/B377C922=Objective - Clear Outer Lanes - Complete
+Trigger/Name/B5078FB1=Mid Cinematic
+Trigger/Name/BA259BC1=Bulwark Cmpy / Shock Division Q
+Trigger/Name/BA6103F1=Bridge Control
+Trigger/Name/BC7E3853=Hyperion Damaged
+Trigger/Name/BCE0B1EF=Create Palace Gate Ping
+Trigger/Name/C09F3724=Mid Cinematic End
+Trigger/Name/C116D284=Hyperion Low Health Q
+Trigger/Name/C17EBB3F=Mid Q
+Trigger/Name/C1981AB2=Prometheus Cmpy / Outback Hunter Q
+Trigger/Name/C4828344=Odin Dies
+Trigger/Name/C9E9EE10=Lane 2 Spawn Loop
+Trigger/Name/CC636751=Victory Cinematic
+Trigger/Name/D0096EC0=DEBUG - Change Colors
+Trigger/Name/D2614D5A=Lane 2
+Trigger/Name/D2A5EAE6=Lane Cleared Q
+Trigger/Name/D671C2A7=Mid Setup
+Trigger/Name/DA7F8847=Raynor Attack Prep Q
+Trigger/Name/DCF3DAF1=Victory
+Trigger/Name/E27FE8EA=Hyperion Attacked Q
+Trigger/Name/E53A19FD=Intro Cleanup Skipped
+Trigger/Name/E5778D60=Defeat Hyperion Dies
+Trigger/Name/E7D651FF=Dominion Middle 1 Deactivate
+Trigger/Name/E8E2A6E0=Palace Gate at 50%
+Trigger/Name/EAE6803E=Raynor Attack Prep Timing
+Trigger/Name/EC48A503=Start Upgrades (Hard)
+Trigger/Name/ECCBA2B2=Intro Cinematic
+Trigger/Name/ED605C53=Lane 3 Spawn Loop
+Trigger/Name/EDD29BA4=Intro Setup
+Trigger/Name/F15F2AAD=Intro Q
+Trigger/Name/F253B06C=Create Dominion Patrol - Right Side
+Trigger/Name/F97F5B41=Victory Setup
+Trigger/Name/FB4BAB63=Defeat Cheat
+Trigger/Name/FFF767EB=Dominion Right 1 Destroyed Q
+Variable/Name/001C166A=i
+Variable/Name/03F40C8C=PLAYER_04_DOMINION_YELLOW
+Variable/Name/03F8FAED=PalaceGatePing
+Variable/Name/059A9ECC=SCVFound
+Variable/Name/07AC9338=FadeDuration
+Variable/Name/0BC531CA=PLAYER_01_USER
+Variable/Name/0FFF542A=Transmission
+Variable/Name/11BD6517=MoveToA
+Variable/Name/171FEE74=DominionPatrolLeftGroup
+Variable/Name/1924E1F9=FadeDuration
+Variable/Name/1A738706=TempPoint
+Variable/Name/1C646281=KERRIGAN
+Variable/Name/1D7A16C7=CinematicTempUnits
+Variable/Name/1E41AB1B=FadeDuration
+Variable/Name/256B1AFA=LanesCleared
+Variable/Name/263D0FDF=PLAYER_09_RAYNOR_BLUE
+Variable/Name/26872465=i
+Variable/Name/2AC37ADE=PLAYER_07_GATES
+Variable/Name/2E1CF6C7=DepotGroup
+Variable/Name/2F2E36CC=PLAYER_14_IZSHA
+Variable/Name/30601208=YellowEnd
+Variable/Name/3F62F8D4=BlueEnd
+Variable/Name/4652EE01=Enemies
+Variable/Name/46794C6F=RepairSCVs
+Variable/Name/46CB88F7=IntroUnitFacings
+Variable/Name/477F7320=BunkerGroup
+Variable/Name/49D20C46=ObjectiveHyperionMustSurvive
+Variable/Name/4A3F85FB=MissionTimer
+Variable/Name/4E5B83CC=CinematicCompleted
+Variable/Name/52C77A5C=CinematicHiddenUnits
+Variable/Name/583FA154=i
+Variable/Name/5A4F10E5=HyperionDamaged
+Variable/Name/5BAE96AC=i
+Variable/Name/5EFABD28=Patrollers
+Variable/Name/5F683639=Depot
+Variable/Name/6134D9CF=SCV
+Variable/Name/61F2403C=i
+Variable/Name/7199542A=HyperionVictims
+Variable/Name/72F17D21=IntroUnitPositions
+Variable/Name/75B5F8A2=Patrollers
+Variable/Name/77EB9BE9=MoveToB
+Variable/Name/7C325357=DominionPatrolRightGroup
+Variable/Name/801BBC3E=HyperionFirstAttackTransmision
+Variable/Name/801E4AFA=ObjectiveDestroyPalaceGate
+Variable/Name/820A97B0=LaneClearedCount
+Variable/Name/872E545C=InCinematic
+Variable/Name/89FFE016=PatrollerPointsA
+Variable/Name/8C2F8286=i
+Variable/Name/9407FBDE=MidHyperion
+Variable/Name/949EDE96=PLAYER_03_DOMINION_TEAL
+Variable/Name/96FCC807=i
+Variable/Name/979B40EA=PLAYER_05_DOMINION_PINK
+Variable/Name/97B75446=IntroUnits
+Variable/Name/98AF731E=Ping
+Variable/Name/A1677F82=i
+Variable/Name/A286DA83=NumberOfRepairSCVs
+Variable/Name/A4DDE81B=PLAYER_10_BRIDGE_CONTROL
+Variable/Name/A6444A2D=FinalValue
+Variable/Name/AC6A2DC8=NumberOfIntroUnits
+Variable/Name/AC936921=FadeDuration
+Variable/Name/B05E9A85=OdinPing
+Variable/Name/B0EFA322=PatrollerPointsA
+Variable/Name/B2171D1E=HomePoint
+Variable/Name/B56CDD88=VictoryKerrigan
+Variable/Name/C00E2963=LanePing
+Variable/Name/C131F60D=DepotCount
+Variable/Name/C256EDA0=VictoryZerg1
+Variable/Name/C709835E=DominionPlayers
+Variable/Name/C8931965=PatrollerPointsB
+Variable/Name/CC4353FA=PalaceTurrets
+Variable/Name/CDE75B31=StartValue
+Variable/Name/CEA6A533=PatrollerPointsB
+Variable/Name/D1B49D5C=ObjectiveClearOuterLanes
+Variable/Name/D465A500=i
+Variable/Name/D5AA8755=DominionLeftGather
+Variable/Name/D7012AC7=HyperionPing
+Variable/Name/DC3730F7=GameOver
+Variable/Name/DEEFDB94=CinematicHyperion
+Variable/Name/E81B6940=HYPERION
+Variable/Name/E9D013BC=VictoryZerg2
+Variable/Name/EDEBF587=FadeDuration
+Variable/Name/EE75544B=DepotLoc
+Variable/Name/F0ACE0B1=PLAYER_02_DOMINION_RED
+Variable/Name/F5369777=FadeDuration
+Variable/Name/F66A3470=i
+Variable/Name/FD091901=DominionRightGather
+Variable/Name/FFA48BE4=MoveTo
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ptBR.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ptBR.SC2Data/LocalizedData/GameStrings.txt
new file mode 100644
index 000000000..199e88544
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ptBR.SC2Data/LocalizedData/GameStrings.txt
@@ -0,0 +1,49 @@
+DocInfo/Author=Blizzard Entertainment /// Blizzard Entertainment
+DocInfo/Name=O ajuste de contas /// The Reckoning
+LoadingScreen/Tip=Há muitas passagens no setor Imperial, mas estão protegidas pela Supremacia. Elimine-as e as forças do Enxame se juntarão à luta. /// There are many avenues into the Imperial sector, but they are guarded by the Dominion. Eliminate them and Swarm forces will join the fight.
+LoadingScreen/TipRestart=Jim Raynor protegerá seu flanco esquerdo, mas será subjugado se você não enviar ajuda quando ele solicitar. /// Jim Raynor will protect your left flank from attacks, but he'll be overrun if you don't send help when he asks for it.
+MapInfo/Player01/Name=Casta de Kerrigan /// Kerrigan's Brood
+MapInfo/Player02/Name=Forças da Supremacia /// Dominion Forces
+MapInfo/Player03/Name=Forças da Supremacia /// Dominion Forces
+MapInfo/Player04/Name=Forças da Supremacia /// Dominion Forces
+MapInfo/Player05/Name=Forças da Supremacia /// Dominion Forces
+MapInfo/Player06/Name=Saqueadores do Raynor /// Raynor's Raiders
+MapInfo/Player07/Name=Controle da Ponte /// Bridge Control
+MapInfo/Player08/Name=O Enxame /// The Swarm
+MapInfo/Player09/Name=Hostil /// Hostile
+MapInfo/Player10/Name=Hostil /// Hostile
+MapInfo/Player11/Name=Hostil /// Hostile
+MapInfo/Player12/Name=Hostil /// Hostile
+Param/Expression/771E00B5=~A~ (~B~, ~C~) /// ~A~ (~B~, ~C~)
+Param/Value/10019ECC=Aglomerado de Colmeias /// Hive Cluster
+Param/Value/12CCDD76=A Hipérion foi destruída. /// The Hyperion has been destroyed.
+Param/Value/1C3B9AFC=Posição Entrincheirada /// Entrenched Position
+Param/Value/1EB92790=Palácio /// Palace
+Param/Value/2764E991=MoveA - Forced /// MoveA - Forced
+Param/Value/312673F4=
+Param/Value/3CD8D145=Ataque 2 da Hipérion /// Hyperion Attack 2
+Param/Value/40832EE5=Posição Entrincheirada /// Entrenched Position
+Param/Value/47B5F2AE=Esquadrão Fúria do Céu /// Sky Fury Squadron
+Param/Value/4964D689=Dicas /// Tips
+Param/Value/56D863DF=Maior força zerg /// Largest Zerg Force
+Param/Value/57AE1FF8=Ataque 3 da Hipérion /// Hyperion Attack 3
+Param/Value/5AF16DC3=Esquadrão Alfa /// Alpha Squadron
+Param/Value/6AA01F1B=Todas as suas estruturas foram destruídas. /// All of your structures have been destroyed.
+Param/Value/6BF797B1=Dano recebido pela Hipérion /// Damage Taken by the Hyperion
+Param/Value/7ACFB4DF=Saqueadores do Raynor /// Raynor's Raiders
+Param/Value/820C3550=MoveB - Random /// MoveB - Random
+Param/Value/8963E359=Posição Entrincheirada /// Entrenched Position
+Param/Value/A0FB34D1=Hipérion sob ataque /// Hyperion Under Attack
+Param/Value/A9B0DEA9=Hipérion /// The Hyperion
+Param/Value/AA33E61F=Hipérion seriamente danificada /// Hyperion Badly Damaged
+Param/Value/AF9EB277=Hipérion sob ataque /// Hyperion Under Attack
+Param/Value/B4B4E180=Mortos por Kerrigan /// Kerrigan Kills
+Param/Value/CEB82674=Tropas inimigas mortas /// Enemy Troops Killed
+Param/Value/D67953B1=Custo de trajetória = /// Pathing Cost =
+Param/Value/DCEB3B79=MoveB - Forced /// MoveB - Forced
+Param/Value/DD0C4B19=Ataque 1 da Hipérion /// Hyperion Attack 1
+Param/Value/E2051C14=Odin /// The Odin
+Param/Value/EC6FA82A=MoveA - Random /// MoveA - Random
+Param/Value/F74B6456=Mortes por Saqueadores do Raynor /// Raynor's Raiders Kills
+Unit/Name/Factory=Fábrica /// Factory
+Unit/Name/GateControlUnit=Controle da Ponte /// Bridge Control
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ptBR.SC2Data/LocalizedData/ObjectStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ptBR.SC2Data/LocalizedData/ObjectStrings.txt
new file mode 100644
index 000000000..75f2e1c10
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ptBR.SC2Data/LocalizedData/ObjectStrings.txt
@@ -0,0 +1,10 @@
+AI/Name/05FE0989=P05 - Pink
+AI/Name/17BA421C=P03 - Teal
+AI/Name/392DEDDF=Za'gara Gates
+AI/Name/7AC59A6F=P04 - Yellow
+AI/Name/AFDBFFDC=P09 - Blue
+AI/Name/EC423AC6=P02 - Red
+Sound/Name/IntroMusic=IntroMusic
+Sound/Name/VictoryMusic=VictoryMusic
+Soundtrack/Name/IntroMusic=IntroMusic
+Soundtrack/Name/VictoryMusic=VictoryMusic
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ptBR.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ptBR.SC2Data/LocalizedData/TriggerStrings.txt
new file mode 100644
index 000000000..6d09f99f8
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ptBR.SC2Data/LocalizedData/TriggerStrings.txt
@@ -0,0 +1,236 @@
+Category/Name/04D71C86=Starting Sequence
+Category/Name/0B0A7942======== MAIN =======
+Category/Name/11102239=Gates
+Category/Name/17F2C4BF=AI
+Category/Name/19E8D425=Main Objective - Hyperion Must Survive
+Category/Name/1ADB580B======== CINEMATIC =======
+Category/Name/1DD683CB=Hyperion
+Category/Name/22C8307E======== GAMEPLAY =======
+Category/Name/2A881197=Main Objective - Destroy Palace Gate
+Category/Name/31271F14=Zerg
+Category/Name/33FB539C======== OBJECTIVES =======
+Category/Name/3585DD2D=Variables
+Category/Name/551D8709=Midgame Cinematic
+Category/Name/5AF004C1=Victory Cinematic
+Category/Name/644E8094=Initialization
+Category/Name/684EF078=Global Variables
+Category/Name/7F423160=Mengsk Taunts
+Category/Name/946333D4=Dominion
+Category/Name/9CCD4C0D=Cinematic Variables
+Category/Name/B378510D=Intro Cinematic
+Category/Name/CC5013A3=Utility
+Category/Name/CD72C2D2=Victory/Defeat
+Category/Name/F7EEABB4=Bonus Objective - Clear Outer Lanes
+Category/Name/F8142391=Debug
+FunctionDef/Grammar/04AA644A=Move units from ~originalRegion~ to ~movePoint~, and have them return to their original positions with delay ~delay|Delay~
+FunctionDef/Grammar/398F1A9A=Enemies within ~range~ of ~unit~ matching ~filter~
+FunctionDef/Grammar/B8C55820=Repair ~structure~ with SCV at index ~index|Index~
+FunctionDef/Name/04AA644A=Intro Move Units
+FunctionDef/Name/398F1A9A=Enemies Within Range
+FunctionDef/Name/B88160FE=Create Patrol Unit
+FunctionDef/Name/B8C55820=Repair Structure with SCV
+FunctionDef/Name/C15ED3B6=AI - Diamondback
+ParamDef/Name/199051A9=Unit Spawn Point
+ParamDef/Name/1AFDC4B3=Unit
+ParamDef/Name/25102314=MovePoint
+ParamDef/Name/2B45B0E5=Unit Group
+ParamDef/Name/3779B33B=NearbyUnits
+ParamDef/Name/5C98BF97=Unit Facing Point
+ParamDef/Name/8C828248=Delay
+ParamDef/Name/9D871E87=Filter
+ParamDef/Name/A3BAE7BA=Index
+ParamDef/Name/BCCEB6CB=OriginalRegion
+ParamDef/Name/D0C7DF75=Structure
+ParamDef/Name/D2EA25BC=Range
+ParamDef/Name/D3F541E5=Unit Type
+ParamDef/Name/DFE84730=Diamondback
+ParamDef/Name/F6C47F8C=Owner
+Structure/Name/02D4152D=RECORD_RepairSCV
+Trigger/Name/045C8179=Objective Destroy Palace Gate Failed
+Trigger/Name/04AE8507=Kerrigan Is Killed Q
+Trigger/Name/06A3FAEC=Hyperion Trigger
+Trigger/Name/087495BB=Mid Hyperion Movement
+Trigger/Name/0A3E4AC0=Hyperion Intro Q
+Trigger/Name/0E7DD429=Mid Cleanup
+Trigger/Name/0E90E2D1=Victory Cleanup
+Trigger/Name/0EE212BB=Lane 3
+Trigger/Name/0F391288=Objective Hyperion Must Survive Complete
+Trigger/Name/10484B80=Objective - Clear Outer Lanes - Update
+Trigger/Name/11526464=Hyperion Attacked
+Trigger/Name/1259352A=SCV Repair Script
+Trigger/Name/1263F02F=Death Head Q
+Trigger/Name/12E86F79=Pride of Augustgrad Q
+Trigger/Name/14585378=Palace Gate at 75%
+Trigger/Name/16AEDC8B=DEBUG - Hyperion
+Trigger/Name/1DC6A40C=Aegis Guard / Bulwark Company Q
+Trigger/Name/1F33FB61=Intro Cleanup Not Skipped
+Trigger/Name/207D017A=Dominion Right 1 Deactivate
+Trigger/Name/21FDCD90=Handle Kerrigan Death
+Trigger/Name/225C725A=Intro Cinematic End
+Trigger/Name/2447B833=Create Dominion Patrol - Left Side
+Trigger/Name/26EF34E4=Initialization
+Trigger/Name/28D3794E=Objective Destroy Palace Gate Create
+Trigger/Name/2B8F2D6F=Init 03 Units
+Trigger/Name/2B9EC8DE=Sky Fury / Night Wolf Q
+Trigger/Name/2F267459=Dominion Right 2 Deactivate
+Trigger/Name/3293F101=Init 02 Players
+Trigger/Name/339DCA1C=Lane 1
+Trigger/Name/3472693E=Lane 1 Spawn Loop
+Trigger/Name/34C1C2A6=Init 01 Technology
+Trigger/Name/35FB224C=Objective Hyperion Must Survive Create
+Trigger/Name/36E6FAA6=Victory Q
+Trigger/Name/3A3A2F2B=Elite Force Intro Q
+Trigger/Name/46073A3C=Hyperion Big Attack 2 Q
+Trigger/Name/464A1841=Victory Zerg
+Trigger/Name/4D0BCD90=Create Augustgrad Gate Pings
+Trigger/Name/4FB8046F=Objective - Clear Outer Lanes - Create
+Trigger/Name/536B4E20=Init 05 Environment
+Trigger/Name/5593E429=DEBUG - AI Debug Output
+Trigger/Name/591B8338=Outback Hunter / Sons of Korhal Q
+Trigger/Name/5DDE161C=Victory Sequence
+Trigger/Name/5E176E0A=Init 04 Music
+Trigger/Name/5E798168=Intro Music
+Trigger/Name/61CE220E=Objective Destroy Palace Gate Complete
+Trigger/Name/665536A8=Hyperion SCV Respawn
+Trigger/Name/67BA042A=Dominion Left 2 Destroyed Q
+Trigger/Name/68A6B37C=Victory Cheat
+Trigger/Name/6BDB3DCA=Tip - Elite Forces Q
+Trigger/Name/6DFAA76F=Augustgrad Gate Intro Proximity
+Trigger/Name/70B20FA2=Hyperion Big Attack 3 Q
+Trigger/Name/7725090D=Start Game
+Trigger/Name/77EB8054=Dominion Left 2 Deactivate
+Trigger/Name/79813264=Init 07 Help
+Trigger/Name/7CC230CC=Init 06 Difficulties
+Trigger/Name/8CFE6E20=Hyperion Attacked First Time Q
+Trigger/Name/8D63DC78=Victory Destroy Palace Gate Completed
+Trigger/Name/9259F53F=Hyperion Big Attack 1 Q
+Trigger/Name/930D2A10=Defeat Base Dead
+Trigger/Name/9BE8ED02=Dominion Middle 2 Deactivate
+Trigger/Name/9E453ED8=AI Give Resources
+Trigger/Name/9F0436E9=Augustgrad Gate Intros Q
+Trigger/Name/A0D858AA=Defeat
+Trigger/Name/A8DDDF64=Start AI
+Trigger/Name/A93CF1AB=Victory Cinematic End
+Trigger/Name/B05AD640=Objective Hyperion Must Survive Failed
+Trigger/Name/B2AFB135=Start Upgrades (Normal)
+Trigger/Name/B377C922=Objective - Clear Outer Lanes - Complete
+Trigger/Name/B5078FB1=Mid Cinematic
+Trigger/Name/BA259BC1=Bulwark Cmpy / Shock Division Q
+Trigger/Name/BA6103F1=Bridge Control
+Trigger/Name/BC7E3853=Hyperion Damaged
+Trigger/Name/BCE0B1EF=Create Palace Gate Ping
+Trigger/Name/C09F3724=Mid Cinematic End
+Trigger/Name/C116D284=Hyperion Low Health Q
+Trigger/Name/C17EBB3F=Mid Q
+Trigger/Name/C1981AB2=Prometheus Cmpy / Outback Hunter Q
+Trigger/Name/C4828344=Odin Dies
+Trigger/Name/C9E9EE10=Lane 2 Spawn Loop
+Trigger/Name/CC636751=Victory Cinematic
+Trigger/Name/D0096EC0=DEBUG - Change Colors
+Trigger/Name/D2614D5A=Lane 2
+Trigger/Name/D2A5EAE6=Lane Cleared Q
+Trigger/Name/D671C2A7=Mid Setup
+Trigger/Name/DA7F8847=Raynor Attack Prep Q
+Trigger/Name/DCF3DAF1=Victory
+Trigger/Name/E27FE8EA=Hyperion Attacked Q
+Trigger/Name/E53A19FD=Intro Cleanup Skipped
+Trigger/Name/E5778D60=Defeat Hyperion Dies
+Trigger/Name/E7D651FF=Dominion Middle 1 Deactivate
+Trigger/Name/E8E2A6E0=Palace Gate at 50%
+Trigger/Name/EAE6803E=Raynor Attack Prep Timing
+Trigger/Name/EC48A503=Start Upgrades (Hard)
+Trigger/Name/ECCBA2B2=Intro Cinematic
+Trigger/Name/ED605C53=Lane 3 Spawn Loop
+Trigger/Name/EDD29BA4=Intro Setup
+Trigger/Name/F15F2AAD=Intro Q
+Trigger/Name/F253B06C=Create Dominion Patrol - Right Side
+Trigger/Name/F97F5B41=Victory Setup
+Trigger/Name/FB4BAB63=Defeat Cheat
+Trigger/Name/FFF767EB=Dominion Right 1 Destroyed Q
+Variable/Name/001C166A=i
+Variable/Name/03F40C8C=PLAYER_04_DOMINION_YELLOW
+Variable/Name/03F8FAED=PalaceGatePing
+Variable/Name/059A9ECC=SCVFound
+Variable/Name/07AC9338=FadeDuration
+Variable/Name/0BC531CA=PLAYER_01_USER
+Variable/Name/0FFF542A=Transmission
+Variable/Name/11BD6517=MoveToA
+Variable/Name/171FEE74=DominionPatrolLeftGroup
+Variable/Name/1924E1F9=FadeDuration
+Variable/Name/1A738706=TempPoint
+Variable/Name/1C646281=KERRIGAN
+Variable/Name/1D7A16C7=CinematicTempUnits
+Variable/Name/1E41AB1B=FadeDuration
+Variable/Name/256B1AFA=LanesCleared
+Variable/Name/263D0FDF=PLAYER_09_RAYNOR_BLUE
+Variable/Name/26872465=i
+Variable/Name/2AC37ADE=PLAYER_07_GATES
+Variable/Name/2E1CF6C7=DepotGroup
+Variable/Name/2F2E36CC=PLAYER_14_IZSHA
+Variable/Name/30601208=YellowEnd
+Variable/Name/3F62F8D4=BlueEnd
+Variable/Name/4652EE01=Enemies
+Variable/Name/46794C6F=RepairSCVs
+Variable/Name/46CB88F7=IntroUnitFacings
+Variable/Name/477F7320=BunkerGroup
+Variable/Name/49D20C46=ObjectiveHyperionMustSurvive
+Variable/Name/4A3F85FB=MissionTimer
+Variable/Name/4E5B83CC=CinematicCompleted
+Variable/Name/52C77A5C=CinematicHiddenUnits
+Variable/Name/583FA154=i
+Variable/Name/5A4F10E5=HyperionDamaged
+Variable/Name/5BAE96AC=i
+Variable/Name/5EFABD28=Patrollers
+Variable/Name/5F683639=Depot
+Variable/Name/6134D9CF=SCV
+Variable/Name/61F2403C=i
+Variable/Name/7199542A=HyperionVictims
+Variable/Name/72F17D21=IntroUnitPositions
+Variable/Name/75B5F8A2=Patrollers
+Variable/Name/77EB9BE9=MoveToB
+Variable/Name/7C325357=DominionPatrolRightGroup
+Variable/Name/801BBC3E=HyperionFirstAttackTransmision
+Variable/Name/801E4AFA=ObjectiveDestroyPalaceGate
+Variable/Name/820A97B0=LaneClearedCount
+Variable/Name/872E545C=InCinematic
+Variable/Name/89FFE016=PatrollerPointsA
+Variable/Name/8C2F8286=i
+Variable/Name/9407FBDE=MidHyperion
+Variable/Name/949EDE96=PLAYER_03_DOMINION_TEAL
+Variable/Name/96FCC807=i
+Variable/Name/979B40EA=PLAYER_05_DOMINION_PINK
+Variable/Name/97B75446=IntroUnits
+Variable/Name/98AF731E=Ping
+Variable/Name/A1677F82=i
+Variable/Name/A286DA83=NumberOfRepairSCVs
+Variable/Name/A4DDE81B=PLAYER_10_BRIDGE_CONTROL
+Variable/Name/A6444A2D=FinalValue
+Variable/Name/AC6A2DC8=NumberOfIntroUnits
+Variable/Name/AC936921=FadeDuration
+Variable/Name/B05E9A85=OdinPing
+Variable/Name/B0EFA322=PatrollerPointsA
+Variable/Name/B2171D1E=HomePoint
+Variable/Name/B56CDD88=VictoryKerrigan
+Variable/Name/C00E2963=LanePing
+Variable/Name/C131F60D=DepotCount
+Variable/Name/C256EDA0=VictoryZerg1
+Variable/Name/C709835E=DominionPlayers
+Variable/Name/C8931965=PatrollerPointsB
+Variable/Name/CC4353FA=PalaceTurrets
+Variable/Name/CDE75B31=StartValue
+Variable/Name/CEA6A533=PatrollerPointsB
+Variable/Name/D1B49D5C=ObjectiveClearOuterLanes
+Variable/Name/D465A500=i
+Variable/Name/D5AA8755=DominionLeftGather
+Variable/Name/D7012AC7=HyperionPing
+Variable/Name/DC3730F7=GameOver
+Variable/Name/DEEFDB94=CinematicHyperion
+Variable/Name/E81B6940=HYPERION
+Variable/Name/E9D013BC=VictoryZerg2
+Variable/Name/EDEBF587=FadeDuration
+Variable/Name/EE75544B=DepotLoc
+Variable/Name/F0ACE0B1=PLAYER_02_DOMINION_RED
+Variable/Name/F5369777=FadeDuration
+Variable/Name/F66A3470=i
+Variable/Name/FD091901=DominionRightGather
+Variable/Name/FFA48BE4=MoveTo
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ruRU.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ruRU.SC2Data/LocalizedData/GameStrings.txt
new file mode 100644
index 000000000..5c6ca34bf
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ruRU.SC2Data/LocalizedData/GameStrings.txt
@@ -0,0 +1,49 @@
+DocInfo/Author=Blizzard Entertainment /// Blizzard Entertainment
+DocInfo/Name=Расплата /// The Reckoning
+LoadingScreen/Tip=Существует много путей, ведущих в императорский сектор, но все их контролируют силы Доминиона. Уничтожьте войска Доминиона, и Рой сможет присоединиться к бою. /// There are many avenues into the Imperial sector, but they are guarded by the Dominion. Eliminate them and Swarm forces will join the fight.
+LoadingScreen/TipRestart=Джим Рейнор будет защищать левый фланг от атак противника. Но его отряд уничтожат, если вы не вышлете подкрепление, когда Джим об этом попросит. /// Jim Raynor will protect your left flank from attacks, but he'll be overrun if you don't send help when he asks for it.
+MapInfo/Player01/Name=Стая Керриган /// Kerrigan's Brood
+MapInfo/Player02/Name=Войска Доминиона /// Dominion Forces
+MapInfo/Player03/Name=Войска Доминиона /// Dominion Forces
+MapInfo/Player04/Name=Войска Доминиона /// Dominion Forces
+MapInfo/Player05/Name=Войска Доминиона /// Dominion Forces
+MapInfo/Player06/Name=Рейдеры Рейнора /// Raynor's Raiders
+MapInfo/Player07/Name=Пульт управления мостом /// Bridge Control
+MapInfo/Player08/Name=Рой /// The Swarm
+MapInfo/Player09/Name=Враждебная группировка /// Hostile
+MapInfo/Player10/Name=Враждебная группировка /// Hostile
+MapInfo/Player11/Name=Враждебная группировка /// Hostile
+MapInfo/Player12/Name=Враждебная группировка /// Hostile
+Param/Expression/771E00B5=~A~ (~B~, ~C~) /// ~A~ (~B~, ~C~)
+Param/Value/10019ECC=Улей /// Hive Cluster
+Param/Value/12CCDD76=«Гиперион» уничтожен. /// The Hyperion has been destroyed.
+Param/Value/1C3B9AFC=Укрепленная позиция /// Entrenched Position
+Param/Value/1EB92790=Дворец /// Palace
+Param/Value/2764E991=ПеремещениеA - принудительное /// MoveA - Forced
+Param/Value/312673F4=
+Param/Value/3CD8D145=«Гиперион» - атака 2 /// Hyperion Attack 2
+Param/Value/40832EE5=Укрепленная позиция /// Entrenched Position
+Param/Value/47B5F2AE=Эскадрилья «Звездная ярость» /// Sky Fury Squadron
+Param/Value/4964D689=Подсказки /// Tips
+Param/Value/56D863DF=Максимальная численность зергов /// Largest Zerg Force
+Param/Value/57AE1FF8=«Гиперион» - атака 3 /// Hyperion Attack 3
+Param/Value/5AF16DC3=Эскадрилья «Альфа» /// Alpha Squadron
+Param/Value/6AA01F1B=Все ваши строения уничтожены. /// All of your structures have been destroyed.
+Param/Value/6BF797B1=Урона получено «Гиперионом» /// Damage Taken by the Hyperion
+Param/Value/7ACFB4DF=Рейдеры Рейнора /// Raynor's Raiders
+Param/Value/820C3550=ПеремещениеA - случайное /// MoveB - Random
+Param/Value/8963E359=Укрепленная позиция /// Entrenched Position
+Param/Value/A0FB34D1=«Гиперион» атакуют /// Hyperion Under Attack
+Param/Value/A9B0DEA9=Гиперион /// The Hyperion
+Param/Value/AA33E61F=«Гиперион» сильно поврежден /// Hyperion Badly Damaged
+Param/Value/AF9EB277=«Гиперион» атакуют /// Hyperion Under Attack
+Param/Value/B4B4E180=Убито Керриган /// Kerrigan Kills
+Param/Value/CEB82674=Уничтожено боевых единиц противника /// Enemy Troops Killed
+Param/Value/D67953B1=Стоимость проходимости = /// Pathing Cost =
+Param/Value/DCEB3B79=ПеремещениеA - принудительное /// MoveB - Forced
+Param/Value/DD0C4B19=«Гиперион» - атака 1 /// Hyperion Attack 1
+Param/Value/E2051C14=Один /// The Odin
+Param/Value/EC6FA82A=ПеремещениеA - случайное /// MoveA - Random
+Param/Value/F74B6456=Убито рейдерами Рейнора /// Raynor's Raiders Kills
+Unit/Name/Factory=Завод /// Factory
+Unit/Name/GateControlUnit=Пульт управления мостом /// Bridge Control
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ruRU.SC2Data/LocalizedData/ObjectStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ruRU.SC2Data/LocalizedData/ObjectStrings.txt
new file mode 100644
index 000000000..75f2e1c10
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ruRU.SC2Data/LocalizedData/ObjectStrings.txt
@@ -0,0 +1,10 @@
+AI/Name/05FE0989=P05 - Pink
+AI/Name/17BA421C=P03 - Teal
+AI/Name/392DEDDF=Za'gara Gates
+AI/Name/7AC59A6F=P04 - Yellow
+AI/Name/AFDBFFDC=P09 - Blue
+AI/Name/EC423AC6=P02 - Red
+Sound/Name/IntroMusic=IntroMusic
+Sound/Name/VictoryMusic=VictoryMusic
+Soundtrack/Name/IntroMusic=IntroMusic
+Soundtrack/Name/VictoryMusic=VictoryMusic
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ruRU.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ruRU.SC2Data/LocalizedData/TriggerStrings.txt
new file mode 100644
index 000000000..6d09f99f8
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/ruRU.SC2Data/LocalizedData/TriggerStrings.txt
@@ -0,0 +1,236 @@
+Category/Name/04D71C86=Starting Sequence
+Category/Name/0B0A7942======== MAIN =======
+Category/Name/11102239=Gates
+Category/Name/17F2C4BF=AI
+Category/Name/19E8D425=Main Objective - Hyperion Must Survive
+Category/Name/1ADB580B======== CINEMATIC =======
+Category/Name/1DD683CB=Hyperion
+Category/Name/22C8307E======== GAMEPLAY =======
+Category/Name/2A881197=Main Objective - Destroy Palace Gate
+Category/Name/31271F14=Zerg
+Category/Name/33FB539C======== OBJECTIVES =======
+Category/Name/3585DD2D=Variables
+Category/Name/551D8709=Midgame Cinematic
+Category/Name/5AF004C1=Victory Cinematic
+Category/Name/644E8094=Initialization
+Category/Name/684EF078=Global Variables
+Category/Name/7F423160=Mengsk Taunts
+Category/Name/946333D4=Dominion
+Category/Name/9CCD4C0D=Cinematic Variables
+Category/Name/B378510D=Intro Cinematic
+Category/Name/CC5013A3=Utility
+Category/Name/CD72C2D2=Victory/Defeat
+Category/Name/F7EEABB4=Bonus Objective - Clear Outer Lanes
+Category/Name/F8142391=Debug
+FunctionDef/Grammar/04AA644A=Move units from ~originalRegion~ to ~movePoint~, and have them return to their original positions with delay ~delay|Delay~
+FunctionDef/Grammar/398F1A9A=Enemies within ~range~ of ~unit~ matching ~filter~
+FunctionDef/Grammar/B8C55820=Repair ~structure~ with SCV at index ~index|Index~
+FunctionDef/Name/04AA644A=Intro Move Units
+FunctionDef/Name/398F1A9A=Enemies Within Range
+FunctionDef/Name/B88160FE=Create Patrol Unit
+FunctionDef/Name/B8C55820=Repair Structure with SCV
+FunctionDef/Name/C15ED3B6=AI - Diamondback
+ParamDef/Name/199051A9=Unit Spawn Point
+ParamDef/Name/1AFDC4B3=Unit
+ParamDef/Name/25102314=MovePoint
+ParamDef/Name/2B45B0E5=Unit Group
+ParamDef/Name/3779B33B=NearbyUnits
+ParamDef/Name/5C98BF97=Unit Facing Point
+ParamDef/Name/8C828248=Delay
+ParamDef/Name/9D871E87=Filter
+ParamDef/Name/A3BAE7BA=Index
+ParamDef/Name/BCCEB6CB=OriginalRegion
+ParamDef/Name/D0C7DF75=Structure
+ParamDef/Name/D2EA25BC=Range
+ParamDef/Name/D3F541E5=Unit Type
+ParamDef/Name/DFE84730=Diamondback
+ParamDef/Name/F6C47F8C=Owner
+Structure/Name/02D4152D=RECORD_RepairSCV
+Trigger/Name/045C8179=Objective Destroy Palace Gate Failed
+Trigger/Name/04AE8507=Kerrigan Is Killed Q
+Trigger/Name/06A3FAEC=Hyperion Trigger
+Trigger/Name/087495BB=Mid Hyperion Movement
+Trigger/Name/0A3E4AC0=Hyperion Intro Q
+Trigger/Name/0E7DD429=Mid Cleanup
+Trigger/Name/0E90E2D1=Victory Cleanup
+Trigger/Name/0EE212BB=Lane 3
+Trigger/Name/0F391288=Objective Hyperion Must Survive Complete
+Trigger/Name/10484B80=Objective - Clear Outer Lanes - Update
+Trigger/Name/11526464=Hyperion Attacked
+Trigger/Name/1259352A=SCV Repair Script
+Trigger/Name/1263F02F=Death Head Q
+Trigger/Name/12E86F79=Pride of Augustgrad Q
+Trigger/Name/14585378=Palace Gate at 75%
+Trigger/Name/16AEDC8B=DEBUG - Hyperion
+Trigger/Name/1DC6A40C=Aegis Guard / Bulwark Company Q
+Trigger/Name/1F33FB61=Intro Cleanup Not Skipped
+Trigger/Name/207D017A=Dominion Right 1 Deactivate
+Trigger/Name/21FDCD90=Handle Kerrigan Death
+Trigger/Name/225C725A=Intro Cinematic End
+Trigger/Name/2447B833=Create Dominion Patrol - Left Side
+Trigger/Name/26EF34E4=Initialization
+Trigger/Name/28D3794E=Objective Destroy Palace Gate Create
+Trigger/Name/2B8F2D6F=Init 03 Units
+Trigger/Name/2B9EC8DE=Sky Fury / Night Wolf Q
+Trigger/Name/2F267459=Dominion Right 2 Deactivate
+Trigger/Name/3293F101=Init 02 Players
+Trigger/Name/339DCA1C=Lane 1
+Trigger/Name/3472693E=Lane 1 Spawn Loop
+Trigger/Name/34C1C2A6=Init 01 Technology
+Trigger/Name/35FB224C=Objective Hyperion Must Survive Create
+Trigger/Name/36E6FAA6=Victory Q
+Trigger/Name/3A3A2F2B=Elite Force Intro Q
+Trigger/Name/46073A3C=Hyperion Big Attack 2 Q
+Trigger/Name/464A1841=Victory Zerg
+Trigger/Name/4D0BCD90=Create Augustgrad Gate Pings
+Trigger/Name/4FB8046F=Objective - Clear Outer Lanes - Create
+Trigger/Name/536B4E20=Init 05 Environment
+Trigger/Name/5593E429=DEBUG - AI Debug Output
+Trigger/Name/591B8338=Outback Hunter / Sons of Korhal Q
+Trigger/Name/5DDE161C=Victory Sequence
+Trigger/Name/5E176E0A=Init 04 Music
+Trigger/Name/5E798168=Intro Music
+Trigger/Name/61CE220E=Objective Destroy Palace Gate Complete
+Trigger/Name/665536A8=Hyperion SCV Respawn
+Trigger/Name/67BA042A=Dominion Left 2 Destroyed Q
+Trigger/Name/68A6B37C=Victory Cheat
+Trigger/Name/6BDB3DCA=Tip - Elite Forces Q
+Trigger/Name/6DFAA76F=Augustgrad Gate Intro Proximity
+Trigger/Name/70B20FA2=Hyperion Big Attack 3 Q
+Trigger/Name/7725090D=Start Game
+Trigger/Name/77EB8054=Dominion Left 2 Deactivate
+Trigger/Name/79813264=Init 07 Help
+Trigger/Name/7CC230CC=Init 06 Difficulties
+Trigger/Name/8CFE6E20=Hyperion Attacked First Time Q
+Trigger/Name/8D63DC78=Victory Destroy Palace Gate Completed
+Trigger/Name/9259F53F=Hyperion Big Attack 1 Q
+Trigger/Name/930D2A10=Defeat Base Dead
+Trigger/Name/9BE8ED02=Dominion Middle 2 Deactivate
+Trigger/Name/9E453ED8=AI Give Resources
+Trigger/Name/9F0436E9=Augustgrad Gate Intros Q
+Trigger/Name/A0D858AA=Defeat
+Trigger/Name/A8DDDF64=Start AI
+Trigger/Name/A93CF1AB=Victory Cinematic End
+Trigger/Name/B05AD640=Objective Hyperion Must Survive Failed
+Trigger/Name/B2AFB135=Start Upgrades (Normal)
+Trigger/Name/B377C922=Objective - Clear Outer Lanes - Complete
+Trigger/Name/B5078FB1=Mid Cinematic
+Trigger/Name/BA259BC1=Bulwark Cmpy / Shock Division Q
+Trigger/Name/BA6103F1=Bridge Control
+Trigger/Name/BC7E3853=Hyperion Damaged
+Trigger/Name/BCE0B1EF=Create Palace Gate Ping
+Trigger/Name/C09F3724=Mid Cinematic End
+Trigger/Name/C116D284=Hyperion Low Health Q
+Trigger/Name/C17EBB3F=Mid Q
+Trigger/Name/C1981AB2=Prometheus Cmpy / Outback Hunter Q
+Trigger/Name/C4828344=Odin Dies
+Trigger/Name/C9E9EE10=Lane 2 Spawn Loop
+Trigger/Name/CC636751=Victory Cinematic
+Trigger/Name/D0096EC0=DEBUG - Change Colors
+Trigger/Name/D2614D5A=Lane 2
+Trigger/Name/D2A5EAE6=Lane Cleared Q
+Trigger/Name/D671C2A7=Mid Setup
+Trigger/Name/DA7F8847=Raynor Attack Prep Q
+Trigger/Name/DCF3DAF1=Victory
+Trigger/Name/E27FE8EA=Hyperion Attacked Q
+Trigger/Name/E53A19FD=Intro Cleanup Skipped
+Trigger/Name/E5778D60=Defeat Hyperion Dies
+Trigger/Name/E7D651FF=Dominion Middle 1 Deactivate
+Trigger/Name/E8E2A6E0=Palace Gate at 50%
+Trigger/Name/EAE6803E=Raynor Attack Prep Timing
+Trigger/Name/EC48A503=Start Upgrades (Hard)
+Trigger/Name/ECCBA2B2=Intro Cinematic
+Trigger/Name/ED605C53=Lane 3 Spawn Loop
+Trigger/Name/EDD29BA4=Intro Setup
+Trigger/Name/F15F2AAD=Intro Q
+Trigger/Name/F253B06C=Create Dominion Patrol - Right Side
+Trigger/Name/F97F5B41=Victory Setup
+Trigger/Name/FB4BAB63=Defeat Cheat
+Trigger/Name/FFF767EB=Dominion Right 1 Destroyed Q
+Variable/Name/001C166A=i
+Variable/Name/03F40C8C=PLAYER_04_DOMINION_YELLOW
+Variable/Name/03F8FAED=PalaceGatePing
+Variable/Name/059A9ECC=SCVFound
+Variable/Name/07AC9338=FadeDuration
+Variable/Name/0BC531CA=PLAYER_01_USER
+Variable/Name/0FFF542A=Transmission
+Variable/Name/11BD6517=MoveToA
+Variable/Name/171FEE74=DominionPatrolLeftGroup
+Variable/Name/1924E1F9=FadeDuration
+Variable/Name/1A738706=TempPoint
+Variable/Name/1C646281=KERRIGAN
+Variable/Name/1D7A16C7=CinematicTempUnits
+Variable/Name/1E41AB1B=FadeDuration
+Variable/Name/256B1AFA=LanesCleared
+Variable/Name/263D0FDF=PLAYER_09_RAYNOR_BLUE
+Variable/Name/26872465=i
+Variable/Name/2AC37ADE=PLAYER_07_GATES
+Variable/Name/2E1CF6C7=DepotGroup
+Variable/Name/2F2E36CC=PLAYER_14_IZSHA
+Variable/Name/30601208=YellowEnd
+Variable/Name/3F62F8D4=BlueEnd
+Variable/Name/4652EE01=Enemies
+Variable/Name/46794C6F=RepairSCVs
+Variable/Name/46CB88F7=IntroUnitFacings
+Variable/Name/477F7320=BunkerGroup
+Variable/Name/49D20C46=ObjectiveHyperionMustSurvive
+Variable/Name/4A3F85FB=MissionTimer
+Variable/Name/4E5B83CC=CinematicCompleted
+Variable/Name/52C77A5C=CinematicHiddenUnits
+Variable/Name/583FA154=i
+Variable/Name/5A4F10E5=HyperionDamaged
+Variable/Name/5BAE96AC=i
+Variable/Name/5EFABD28=Patrollers
+Variable/Name/5F683639=Depot
+Variable/Name/6134D9CF=SCV
+Variable/Name/61F2403C=i
+Variable/Name/7199542A=HyperionVictims
+Variable/Name/72F17D21=IntroUnitPositions
+Variable/Name/75B5F8A2=Patrollers
+Variable/Name/77EB9BE9=MoveToB
+Variable/Name/7C325357=DominionPatrolRightGroup
+Variable/Name/801BBC3E=HyperionFirstAttackTransmision
+Variable/Name/801E4AFA=ObjectiveDestroyPalaceGate
+Variable/Name/820A97B0=LaneClearedCount
+Variable/Name/872E545C=InCinematic
+Variable/Name/89FFE016=PatrollerPointsA
+Variable/Name/8C2F8286=i
+Variable/Name/9407FBDE=MidHyperion
+Variable/Name/949EDE96=PLAYER_03_DOMINION_TEAL
+Variable/Name/96FCC807=i
+Variable/Name/979B40EA=PLAYER_05_DOMINION_PINK
+Variable/Name/97B75446=IntroUnits
+Variable/Name/98AF731E=Ping
+Variable/Name/A1677F82=i
+Variable/Name/A286DA83=NumberOfRepairSCVs
+Variable/Name/A4DDE81B=PLAYER_10_BRIDGE_CONTROL
+Variable/Name/A6444A2D=FinalValue
+Variable/Name/AC6A2DC8=NumberOfIntroUnits
+Variable/Name/AC936921=FadeDuration
+Variable/Name/B05E9A85=OdinPing
+Variable/Name/B0EFA322=PatrollerPointsA
+Variable/Name/B2171D1E=HomePoint
+Variable/Name/B56CDD88=VictoryKerrigan
+Variable/Name/C00E2963=LanePing
+Variable/Name/C131F60D=DepotCount
+Variable/Name/C256EDA0=VictoryZerg1
+Variable/Name/C709835E=DominionPlayers
+Variable/Name/C8931965=PatrollerPointsB
+Variable/Name/CC4353FA=PalaceTurrets
+Variable/Name/CDE75B31=StartValue
+Variable/Name/CEA6A533=PatrollerPointsB
+Variable/Name/D1B49D5C=ObjectiveClearOuterLanes
+Variable/Name/D465A500=i
+Variable/Name/D5AA8755=DominionLeftGather
+Variable/Name/D7012AC7=HyperionPing
+Variable/Name/DC3730F7=GameOver
+Variable/Name/DEEFDB94=CinematicHyperion
+Variable/Name/E81B6940=HYPERION
+Variable/Name/E9D013BC=VictoryZerg2
+Variable/Name/EDEBF587=FadeDuration
+Variable/Name/EE75544B=DepotLoc
+Variable/Name/F0ACE0B1=PLAYER_02_DOMINION_RED
+Variable/Name/F5369777=FadeDuration
+Variable/Name/F66A3470=i
+Variable/Name/FD091901=DominionRightGather
+Variable/Name/FFA48BE4=MoveTo
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3CellFlags b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3CellFlags
new file mode 100644
index 000000000..d29af5c66
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3CellFlags differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3FluffDoodad b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3FluffDoodad
new file mode 100644
index 000000000..5793cb588
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3FluffDoodad differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3HardTile b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3HardTile
new file mode 100644
index 000000000..098a5bdb9
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3HardTile differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3HeightMap b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3HeightMap
new file mode 100644
index 000000000..e3be8e27d
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3HeightMap differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3SyncCliffLevel b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3SyncCliffLevel
new file mode 100644
index 000000000..8e7faf786
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3SyncCliffLevel differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3SyncHeightMap b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3SyncHeightMap
new file mode 100644
index 000000000..cede5be75
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3SyncHeightMap differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3SyncTextureInfo b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3SyncTextureInfo
new file mode 100644
index 000000000..8e1f693f8
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3SyncTextureInfo differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3Terrain.version b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3Terrain.version
new file mode 100644
index 000000000..0b8d461d5
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3Terrain.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3Terrain.xml b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3Terrain.xml
new file mode 100644
index 000000000..169c463dc
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3Terrain.xml
@@ -0,0 +1,2309 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3TextureMasks b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3TextureMasks
new file mode 100644
index 000000000..5897f5ed2
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3TextureMasks differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3VertCol b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3VertCol
new file mode 100644
index 000000000..a7c143689
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3VertCol differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3Water b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3Water
new file mode 100644
index 000000000..350f19faa
Binary files /dev/null and b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/t3Water differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhCN.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhCN.SC2Data/LocalizedData/GameStrings.txt
new file mode 100644
index 000000000..16de60110
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhCN.SC2Data/LocalizedData/GameStrings.txt
@@ -0,0 +1,48 @@
+DocInfo/Author=暴雪娱乐 /// Blizzard Entertainment
+DocInfo/Name=最终审判 /// The Reckoning
+LoadingScreen/Tip=有多条大路通向王宫区,但都在帝国的重兵把守之下。消灭他们,虫群大军便会加入战斗。 /// There are many avenues into the Imperial sector, but they are guarded by the Dominion. Eliminate them and Swarm forces will join the fight.
+LoadingScreen/TipRestart=吉姆·雷诺会保护你的左翼来防止敌人攻击。但是如果他向你求助时得不到支援,便会陷入寡不敌众的境地。 /// Jim Raynor will protect your left flank from attacks, but he'll be overrun if you don't send help when he asks for it.
+MapInfo/Player01/Name=凯瑞甘的虫巢部队 /// Kerrigan's Brood
+MapInfo/Player02/Name=帝国部队 /// Dominion Forces
+MapInfo/Player03/Name=帝国部队 /// Dominion Forces
+MapInfo/Player04/Name=帝国部队 /// Dominion Forces
+MapInfo/Player05/Name=帝国部队 /// Dominion Forces
+MapInfo/Player06/Name=雷诺的游骑兵 /// Raynor's Raiders
+MapInfo/Player07/Name=桥梁控制部队 /// Bridge Control
+MapInfo/Player08/Name=虫群 /// The Swarm
+MapInfo/Player09/Name=敌对的 /// Hostile
+MapInfo/Player10/Name=敌对的 /// Hostile
+MapInfo/Player11/Name=敌对的 /// Hostile
+MapInfo/Player12/Name=敌对的 /// Hostile
+Param/Expression/771E00B5=~A~ (~B~, ~C~) /// ~A~ (~B~, ~C~)
+Param/Value/10019ECC=巢群 /// Hive Cluster
+Param/Value/12CCDD76=休伯利安号已经被摧毁。 /// The Hyperion has been destroyed.
+Param/Value/1C3B9AFC=防御工事 /// Entrenched Position
+Param/Value/1EB92790=王宫 /// Palace
+Param/Value/2764E991=移动A - 强制的 /// MoveA - Forced
+Param/Value/3CD8D145=休伯利安号进攻 2 /// Hyperion Attack 2
+Param/Value/40832EE5=防御工事 /// Entrenched Position
+Param/Value/47B5F2AE=天空之怒中队 /// Sky Fury Squadron
+Param/Value/4964D689=提示 /// Tips
+Param/Value/56D863DF=异虫部队的最大规模 /// Largest Zerg Force
+Param/Value/57AE1FF8=休伯利安号进攻 3 /// Hyperion Attack 3
+Param/Value/5AF16DC3=阿尔法中队 /// Alpha Squadron
+Param/Value/6AA01F1B=你所有的建筑都被摧毁了。 /// All of your structures have been destroyed.
+Param/Value/6BF797B1=休伯利安号受到的伤害量 /// Damage Taken by the Hyperion
+Param/Value/7ACFB4DF=雷诺的游骑兵 /// Raynor's Raiders
+Param/Value/820C3550=移动B - 随机的 /// MoveB - Random
+Param/Value/8963E359=防御工事 /// Entrenched Position
+Param/Value/A0FB34D1=休伯利安号正遭到攻击 /// Hyperion Under Attack
+Param/Value/A9B0DEA9=休伯利安号 /// The Hyperion
+Param/Value/AA33E61F=休伯利安号受到重创 /// Hyperion Badly Damaged
+Param/Value/AF9EB277=休伯利安号正遭到攻击 /// Hyperion Under Attack
+Param/Value/B4B4E180=凯瑞甘消灭
+Param/Value/CEB82674=消灭敌方部队
+Param/Value/D67953B1=路径花费 = /// Pathing Cost =
+Param/Value/DCEB3B79=移动B - 强制的 /// MoveB - Forced
+Param/Value/DD0C4B19=休伯利安号进攻 1 /// Hyperion Attack 1
+Param/Value/E2051C14=奥丁 /// The Odin
+Param/Value/EC6FA82A=移动A - 随机的 /// MoveA - Random
+Param/Value/F74B6456=雷诺的游骑兵消灭
+Unit/Name/Factory=重工厂 /// Factory
+Unit/Name/GateControlUnit=桥梁控制部队 /// Bridge Control
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhCN.SC2Data/LocalizedData/ObjectStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhCN.SC2Data/LocalizedData/ObjectStrings.txt
new file mode 100644
index 000000000..75f2e1c10
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhCN.SC2Data/LocalizedData/ObjectStrings.txt
@@ -0,0 +1,10 @@
+AI/Name/05FE0989=P05 - Pink
+AI/Name/17BA421C=P03 - Teal
+AI/Name/392DEDDF=Za'gara Gates
+AI/Name/7AC59A6F=P04 - Yellow
+AI/Name/AFDBFFDC=P09 - Blue
+AI/Name/EC423AC6=P02 - Red
+Sound/Name/IntroMusic=IntroMusic
+Sound/Name/VictoryMusic=VictoryMusic
+Soundtrack/Name/IntroMusic=IntroMusic
+Soundtrack/Name/VictoryMusic=VictoryMusic
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhCN.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhCN.SC2Data/LocalizedData/TriggerStrings.txt
new file mode 100644
index 000000000..6d09f99f8
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhCN.SC2Data/LocalizedData/TriggerStrings.txt
@@ -0,0 +1,236 @@
+Category/Name/04D71C86=Starting Sequence
+Category/Name/0B0A7942======== MAIN =======
+Category/Name/11102239=Gates
+Category/Name/17F2C4BF=AI
+Category/Name/19E8D425=Main Objective - Hyperion Must Survive
+Category/Name/1ADB580B======== CINEMATIC =======
+Category/Name/1DD683CB=Hyperion
+Category/Name/22C8307E======== GAMEPLAY =======
+Category/Name/2A881197=Main Objective - Destroy Palace Gate
+Category/Name/31271F14=Zerg
+Category/Name/33FB539C======== OBJECTIVES =======
+Category/Name/3585DD2D=Variables
+Category/Name/551D8709=Midgame Cinematic
+Category/Name/5AF004C1=Victory Cinematic
+Category/Name/644E8094=Initialization
+Category/Name/684EF078=Global Variables
+Category/Name/7F423160=Mengsk Taunts
+Category/Name/946333D4=Dominion
+Category/Name/9CCD4C0D=Cinematic Variables
+Category/Name/B378510D=Intro Cinematic
+Category/Name/CC5013A3=Utility
+Category/Name/CD72C2D2=Victory/Defeat
+Category/Name/F7EEABB4=Bonus Objective - Clear Outer Lanes
+Category/Name/F8142391=Debug
+FunctionDef/Grammar/04AA644A=Move units from ~originalRegion~ to ~movePoint~, and have them return to their original positions with delay ~delay|Delay~
+FunctionDef/Grammar/398F1A9A=Enemies within ~range~ of ~unit~ matching ~filter~
+FunctionDef/Grammar/B8C55820=Repair ~structure~ with SCV at index ~index|Index~
+FunctionDef/Name/04AA644A=Intro Move Units
+FunctionDef/Name/398F1A9A=Enemies Within Range
+FunctionDef/Name/B88160FE=Create Patrol Unit
+FunctionDef/Name/B8C55820=Repair Structure with SCV
+FunctionDef/Name/C15ED3B6=AI - Diamondback
+ParamDef/Name/199051A9=Unit Spawn Point
+ParamDef/Name/1AFDC4B3=Unit
+ParamDef/Name/25102314=MovePoint
+ParamDef/Name/2B45B0E5=Unit Group
+ParamDef/Name/3779B33B=NearbyUnits
+ParamDef/Name/5C98BF97=Unit Facing Point
+ParamDef/Name/8C828248=Delay
+ParamDef/Name/9D871E87=Filter
+ParamDef/Name/A3BAE7BA=Index
+ParamDef/Name/BCCEB6CB=OriginalRegion
+ParamDef/Name/D0C7DF75=Structure
+ParamDef/Name/D2EA25BC=Range
+ParamDef/Name/D3F541E5=Unit Type
+ParamDef/Name/DFE84730=Diamondback
+ParamDef/Name/F6C47F8C=Owner
+Structure/Name/02D4152D=RECORD_RepairSCV
+Trigger/Name/045C8179=Objective Destroy Palace Gate Failed
+Trigger/Name/04AE8507=Kerrigan Is Killed Q
+Trigger/Name/06A3FAEC=Hyperion Trigger
+Trigger/Name/087495BB=Mid Hyperion Movement
+Trigger/Name/0A3E4AC0=Hyperion Intro Q
+Trigger/Name/0E7DD429=Mid Cleanup
+Trigger/Name/0E90E2D1=Victory Cleanup
+Trigger/Name/0EE212BB=Lane 3
+Trigger/Name/0F391288=Objective Hyperion Must Survive Complete
+Trigger/Name/10484B80=Objective - Clear Outer Lanes - Update
+Trigger/Name/11526464=Hyperion Attacked
+Trigger/Name/1259352A=SCV Repair Script
+Trigger/Name/1263F02F=Death Head Q
+Trigger/Name/12E86F79=Pride of Augustgrad Q
+Trigger/Name/14585378=Palace Gate at 75%
+Trigger/Name/16AEDC8B=DEBUG - Hyperion
+Trigger/Name/1DC6A40C=Aegis Guard / Bulwark Company Q
+Trigger/Name/1F33FB61=Intro Cleanup Not Skipped
+Trigger/Name/207D017A=Dominion Right 1 Deactivate
+Trigger/Name/21FDCD90=Handle Kerrigan Death
+Trigger/Name/225C725A=Intro Cinematic End
+Trigger/Name/2447B833=Create Dominion Patrol - Left Side
+Trigger/Name/26EF34E4=Initialization
+Trigger/Name/28D3794E=Objective Destroy Palace Gate Create
+Trigger/Name/2B8F2D6F=Init 03 Units
+Trigger/Name/2B9EC8DE=Sky Fury / Night Wolf Q
+Trigger/Name/2F267459=Dominion Right 2 Deactivate
+Trigger/Name/3293F101=Init 02 Players
+Trigger/Name/339DCA1C=Lane 1
+Trigger/Name/3472693E=Lane 1 Spawn Loop
+Trigger/Name/34C1C2A6=Init 01 Technology
+Trigger/Name/35FB224C=Objective Hyperion Must Survive Create
+Trigger/Name/36E6FAA6=Victory Q
+Trigger/Name/3A3A2F2B=Elite Force Intro Q
+Trigger/Name/46073A3C=Hyperion Big Attack 2 Q
+Trigger/Name/464A1841=Victory Zerg
+Trigger/Name/4D0BCD90=Create Augustgrad Gate Pings
+Trigger/Name/4FB8046F=Objective - Clear Outer Lanes - Create
+Trigger/Name/536B4E20=Init 05 Environment
+Trigger/Name/5593E429=DEBUG - AI Debug Output
+Trigger/Name/591B8338=Outback Hunter / Sons of Korhal Q
+Trigger/Name/5DDE161C=Victory Sequence
+Trigger/Name/5E176E0A=Init 04 Music
+Trigger/Name/5E798168=Intro Music
+Trigger/Name/61CE220E=Objective Destroy Palace Gate Complete
+Trigger/Name/665536A8=Hyperion SCV Respawn
+Trigger/Name/67BA042A=Dominion Left 2 Destroyed Q
+Trigger/Name/68A6B37C=Victory Cheat
+Trigger/Name/6BDB3DCA=Tip - Elite Forces Q
+Trigger/Name/6DFAA76F=Augustgrad Gate Intro Proximity
+Trigger/Name/70B20FA2=Hyperion Big Attack 3 Q
+Trigger/Name/7725090D=Start Game
+Trigger/Name/77EB8054=Dominion Left 2 Deactivate
+Trigger/Name/79813264=Init 07 Help
+Trigger/Name/7CC230CC=Init 06 Difficulties
+Trigger/Name/8CFE6E20=Hyperion Attacked First Time Q
+Trigger/Name/8D63DC78=Victory Destroy Palace Gate Completed
+Trigger/Name/9259F53F=Hyperion Big Attack 1 Q
+Trigger/Name/930D2A10=Defeat Base Dead
+Trigger/Name/9BE8ED02=Dominion Middle 2 Deactivate
+Trigger/Name/9E453ED8=AI Give Resources
+Trigger/Name/9F0436E9=Augustgrad Gate Intros Q
+Trigger/Name/A0D858AA=Defeat
+Trigger/Name/A8DDDF64=Start AI
+Trigger/Name/A93CF1AB=Victory Cinematic End
+Trigger/Name/B05AD640=Objective Hyperion Must Survive Failed
+Trigger/Name/B2AFB135=Start Upgrades (Normal)
+Trigger/Name/B377C922=Objective - Clear Outer Lanes - Complete
+Trigger/Name/B5078FB1=Mid Cinematic
+Trigger/Name/BA259BC1=Bulwark Cmpy / Shock Division Q
+Trigger/Name/BA6103F1=Bridge Control
+Trigger/Name/BC7E3853=Hyperion Damaged
+Trigger/Name/BCE0B1EF=Create Palace Gate Ping
+Trigger/Name/C09F3724=Mid Cinematic End
+Trigger/Name/C116D284=Hyperion Low Health Q
+Trigger/Name/C17EBB3F=Mid Q
+Trigger/Name/C1981AB2=Prometheus Cmpy / Outback Hunter Q
+Trigger/Name/C4828344=Odin Dies
+Trigger/Name/C9E9EE10=Lane 2 Spawn Loop
+Trigger/Name/CC636751=Victory Cinematic
+Trigger/Name/D0096EC0=DEBUG - Change Colors
+Trigger/Name/D2614D5A=Lane 2
+Trigger/Name/D2A5EAE6=Lane Cleared Q
+Trigger/Name/D671C2A7=Mid Setup
+Trigger/Name/DA7F8847=Raynor Attack Prep Q
+Trigger/Name/DCF3DAF1=Victory
+Trigger/Name/E27FE8EA=Hyperion Attacked Q
+Trigger/Name/E53A19FD=Intro Cleanup Skipped
+Trigger/Name/E5778D60=Defeat Hyperion Dies
+Trigger/Name/E7D651FF=Dominion Middle 1 Deactivate
+Trigger/Name/E8E2A6E0=Palace Gate at 50%
+Trigger/Name/EAE6803E=Raynor Attack Prep Timing
+Trigger/Name/EC48A503=Start Upgrades (Hard)
+Trigger/Name/ECCBA2B2=Intro Cinematic
+Trigger/Name/ED605C53=Lane 3 Spawn Loop
+Trigger/Name/EDD29BA4=Intro Setup
+Trigger/Name/F15F2AAD=Intro Q
+Trigger/Name/F253B06C=Create Dominion Patrol - Right Side
+Trigger/Name/F97F5B41=Victory Setup
+Trigger/Name/FB4BAB63=Defeat Cheat
+Trigger/Name/FFF767EB=Dominion Right 1 Destroyed Q
+Variable/Name/001C166A=i
+Variable/Name/03F40C8C=PLAYER_04_DOMINION_YELLOW
+Variable/Name/03F8FAED=PalaceGatePing
+Variable/Name/059A9ECC=SCVFound
+Variable/Name/07AC9338=FadeDuration
+Variable/Name/0BC531CA=PLAYER_01_USER
+Variable/Name/0FFF542A=Transmission
+Variable/Name/11BD6517=MoveToA
+Variable/Name/171FEE74=DominionPatrolLeftGroup
+Variable/Name/1924E1F9=FadeDuration
+Variable/Name/1A738706=TempPoint
+Variable/Name/1C646281=KERRIGAN
+Variable/Name/1D7A16C7=CinematicTempUnits
+Variable/Name/1E41AB1B=FadeDuration
+Variable/Name/256B1AFA=LanesCleared
+Variable/Name/263D0FDF=PLAYER_09_RAYNOR_BLUE
+Variable/Name/26872465=i
+Variable/Name/2AC37ADE=PLAYER_07_GATES
+Variable/Name/2E1CF6C7=DepotGroup
+Variable/Name/2F2E36CC=PLAYER_14_IZSHA
+Variable/Name/30601208=YellowEnd
+Variable/Name/3F62F8D4=BlueEnd
+Variable/Name/4652EE01=Enemies
+Variable/Name/46794C6F=RepairSCVs
+Variable/Name/46CB88F7=IntroUnitFacings
+Variable/Name/477F7320=BunkerGroup
+Variable/Name/49D20C46=ObjectiveHyperionMustSurvive
+Variable/Name/4A3F85FB=MissionTimer
+Variable/Name/4E5B83CC=CinematicCompleted
+Variable/Name/52C77A5C=CinematicHiddenUnits
+Variable/Name/583FA154=i
+Variable/Name/5A4F10E5=HyperionDamaged
+Variable/Name/5BAE96AC=i
+Variable/Name/5EFABD28=Patrollers
+Variable/Name/5F683639=Depot
+Variable/Name/6134D9CF=SCV
+Variable/Name/61F2403C=i
+Variable/Name/7199542A=HyperionVictims
+Variable/Name/72F17D21=IntroUnitPositions
+Variable/Name/75B5F8A2=Patrollers
+Variable/Name/77EB9BE9=MoveToB
+Variable/Name/7C325357=DominionPatrolRightGroup
+Variable/Name/801BBC3E=HyperionFirstAttackTransmision
+Variable/Name/801E4AFA=ObjectiveDestroyPalaceGate
+Variable/Name/820A97B0=LaneClearedCount
+Variable/Name/872E545C=InCinematic
+Variable/Name/89FFE016=PatrollerPointsA
+Variable/Name/8C2F8286=i
+Variable/Name/9407FBDE=MidHyperion
+Variable/Name/949EDE96=PLAYER_03_DOMINION_TEAL
+Variable/Name/96FCC807=i
+Variable/Name/979B40EA=PLAYER_05_DOMINION_PINK
+Variable/Name/97B75446=IntroUnits
+Variable/Name/98AF731E=Ping
+Variable/Name/A1677F82=i
+Variable/Name/A286DA83=NumberOfRepairSCVs
+Variable/Name/A4DDE81B=PLAYER_10_BRIDGE_CONTROL
+Variable/Name/A6444A2D=FinalValue
+Variable/Name/AC6A2DC8=NumberOfIntroUnits
+Variable/Name/AC936921=FadeDuration
+Variable/Name/B05E9A85=OdinPing
+Variable/Name/B0EFA322=PatrollerPointsA
+Variable/Name/B2171D1E=HomePoint
+Variable/Name/B56CDD88=VictoryKerrigan
+Variable/Name/C00E2963=LanePing
+Variable/Name/C131F60D=DepotCount
+Variable/Name/C256EDA0=VictoryZerg1
+Variable/Name/C709835E=DominionPlayers
+Variable/Name/C8931965=PatrollerPointsB
+Variable/Name/CC4353FA=PalaceTurrets
+Variable/Name/CDE75B31=StartValue
+Variable/Name/CEA6A533=PatrollerPointsB
+Variable/Name/D1B49D5C=ObjectiveClearOuterLanes
+Variable/Name/D465A500=i
+Variable/Name/D5AA8755=DominionLeftGather
+Variable/Name/D7012AC7=HyperionPing
+Variable/Name/DC3730F7=GameOver
+Variable/Name/DEEFDB94=CinematicHyperion
+Variable/Name/E81B6940=HYPERION
+Variable/Name/E9D013BC=VictoryZerg2
+Variable/Name/EDEBF587=FadeDuration
+Variable/Name/EE75544B=DepotLoc
+Variable/Name/F0ACE0B1=PLAYER_02_DOMINION_RED
+Variable/Name/F5369777=FadeDuration
+Variable/Name/F66A3470=i
+Variable/Name/FD091901=DominionRightGather
+Variable/Name/FFA48BE4=MoveTo
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhTW.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhTW.SC2Data/LocalizedData/GameStrings.txt
new file mode 100644
index 000000000..af97e23c2
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhTW.SC2Data/LocalizedData/GameStrings.txt
@@ -0,0 +1,49 @@
+DocInfo/Author=Blizzard Entertainment /// Blizzard Entertainment
+DocInfo/Name=罪與罰 /// The Reckoning
+LoadingScreen/Tip=有許多街道通往皇宮區,不過全都被自治聯盟嚴密防守著。殲滅這些防禦兵力,其他蟲族大軍將會加入戰局。 /// There are many avenues into the Imperial sector, but they are guarded by the Dominion. Eliminate them and Swarm forces will join the fight.
+LoadingScreen/TipRestart=吉姆‧雷諾會保護你的左翼不受攻擊,可是如果你在他求援的時候不派軍協助的話,他很有可能會被敵人擊潰。 /// Jim Raynor will protect your left flank from attacks, but he'll be overrun if you don't send help when he asks for it.
+MapInfo/Player01/Name=凱莉根的群落 /// Kerrigan's Brood
+MapInfo/Player02/Name=自治聯盟部隊 /// Dominion Forces
+MapInfo/Player03/Name=自治聯盟部隊 /// Dominion Forces
+MapInfo/Player04/Name=自治聯盟部隊 /// Dominion Forces
+MapInfo/Player05/Name=自治聯盟部隊 /// Dominion Forces
+MapInfo/Player06/Name=雷諾突擊隊 /// Raynor's Raiders
+MapInfo/Player07/Name=橋樑控制台 /// Bridge Control
+MapInfo/Player08/Name=蟲群 /// The Swarm
+MapInfo/Player09/Name=敵對 /// Hostile
+MapInfo/Player10/Name=敵對 /// Hostile
+MapInfo/Player11/Name=敵對 /// Hostile
+MapInfo/Player12/Name=敵對 /// Hostile
+Param/Expression/771E00B5=~A~ (~B~, ~C~) /// ~A~ (~B~, ~C~)
+Param/Value/10019ECC=蟲巢 /// Hive Cluster
+Param/Value/12CCDD76=海伯利昂號被摧毀了。 /// The Hyperion has been destroyed.
+Param/Value/1C3B9AFC=防禦陣地 /// Entrenched Position
+Param/Value/1EB92790=宮殿 /// Palace
+Param/Value/2764E991=MoveA─強迫 /// MoveA - Forced
+Param/Value/312673F4=
+Param/Value/3CD8D145=海伯利昂號攻擊2 /// Hyperion Attack 2
+Param/Value/40832EE5=防禦陣地 /// Entrenched Position
+Param/Value/47B5F2AE=空怒中隊 /// Sky Fury Squadron
+Param/Value/4964D689=提示 /// Tips
+Param/Value/56D863DF=蟲族部隊最大數量 /// Largest Zerg Force
+Param/Value/57AE1FF8=海伯利昂號攻擊3 /// Hyperion Attack 3
+Param/Value/5AF16DC3=A 中隊 /// Alpha Squadron
+Param/Value/6AA01F1B=你所有的建築已被摧毀。 /// All of your structures have been destroyed.
+Param/Value/6BF797B1=海伯利昂號承受的傷害 /// Damage Taken by the Hyperion
+Param/Value/7ACFB4DF=雷諾突擊隊 /// Raynor's Raiders
+Param/Value/820C3550=MoveB─隨機 /// MoveB - Random
+Param/Value/8963E359=防禦陣地 /// Entrenched Position
+Param/Value/A0FB34D1=海伯利昂號遭到攻擊 /// Hyperion Under Attack
+Param/Value/A9B0DEA9=海伯利昂號 /// The Hyperion
+Param/Value/AA33E61F=海伯利昂號遭到重創 /// Hyperion Badly Damaged
+Param/Value/AF9EB277=海伯利昂號遭到攻擊 /// Hyperion Under Attack
+Param/Value/B4B4E180=凱莉根的擊殺數量 /// Kerrigan Kills
+Param/Value/CEB82674=擊殺的敵方單位數量 /// Enemy Troops Killed
+Param/Value/D67953B1=路徑消費= /// Pathing Cost =
+Param/Value/DCEB3B79=MoveB─強迫 /// MoveB - Forced
+Param/Value/DD0C4B19=海伯利昂號攻擊1 /// Hyperion Attack 1
+Param/Value/E2051C14=奧丁 /// The Odin
+Param/Value/EC6FA82A=MoveA─隨機 /// MoveA - Random
+Param/Value/F74B6456=雷諾突擊隊的擊殺數量 /// Raynor's Raiders Kills
+Unit/Name/Factory=軍工廠 /// Factory
+Unit/Name/GateControlUnit=橋樑控制台 /// Bridge Control
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhTW.SC2Data/LocalizedData/ObjectStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhTW.SC2Data/LocalizedData/ObjectStrings.txt
new file mode 100644
index 000000000..75f2e1c10
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhTW.SC2Data/LocalizedData/ObjectStrings.txt
@@ -0,0 +1,10 @@
+AI/Name/05FE0989=P05 - Pink
+AI/Name/17BA421C=P03 - Teal
+AI/Name/392DEDDF=Za'gara Gates
+AI/Name/7AC59A6F=P04 - Yellow
+AI/Name/AFDBFFDC=P09 - Blue
+AI/Name/EC423AC6=P02 - Red
+Sound/Name/IntroMusic=IntroMusic
+Sound/Name/VictoryMusic=VictoryMusic
+Soundtrack/Name/IntroMusic=IntroMusic
+Soundtrack/Name/VictoryMusic=VictoryMusic
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhTW.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhTW.SC2Data/LocalizedData/TriggerStrings.txt
new file mode 100644
index 000000000..6d09f99f8
--- /dev/null
+++ b/Maps/ArchipelagoCampaign/HotS/ap_the_reckoning.SC2Map/zhTW.SC2Data/LocalizedData/TriggerStrings.txt
@@ -0,0 +1,236 @@
+Category/Name/04D71C86=Starting Sequence
+Category/Name/0B0A7942======== MAIN =======
+Category/Name/11102239=Gates
+Category/Name/17F2C4BF=AI
+Category/Name/19E8D425=Main Objective - Hyperion Must Survive
+Category/Name/1ADB580B======== CINEMATIC =======
+Category/Name/1DD683CB=Hyperion
+Category/Name/22C8307E======== GAMEPLAY =======
+Category/Name/2A881197=Main Objective - Destroy Palace Gate
+Category/Name/31271F14=Zerg
+Category/Name/33FB539C======== OBJECTIVES =======
+Category/Name/3585DD2D=Variables
+Category/Name/551D8709=Midgame Cinematic
+Category/Name/5AF004C1=Victory Cinematic
+Category/Name/644E8094=Initialization
+Category/Name/684EF078=Global Variables
+Category/Name/7F423160=Mengsk Taunts
+Category/Name/946333D4=Dominion
+Category/Name/9CCD4C0D=Cinematic Variables
+Category/Name/B378510D=Intro Cinematic
+Category/Name/CC5013A3=Utility
+Category/Name/CD72C2D2=Victory/Defeat
+Category/Name/F7EEABB4=Bonus Objective - Clear Outer Lanes
+Category/Name/F8142391=Debug
+FunctionDef/Grammar/04AA644A=Move units from ~originalRegion~ to ~movePoint~, and have them return to their original positions with delay ~delay|Delay~
+FunctionDef/Grammar/398F1A9A=Enemies within ~range~ of ~unit~ matching ~filter~
+FunctionDef/Grammar/B8C55820=Repair ~structure~ with SCV at index ~index|Index~
+FunctionDef/Name/04AA644A=Intro Move Units
+FunctionDef/Name/398F1A9A=Enemies Within Range
+FunctionDef/Name/B88160FE=Create Patrol Unit
+FunctionDef/Name/B8C55820=Repair Structure with SCV
+FunctionDef/Name/C15ED3B6=AI - Diamondback
+ParamDef/Name/199051A9=Unit Spawn Point
+ParamDef/Name/1AFDC4B3=Unit
+ParamDef/Name/25102314=MovePoint
+ParamDef/Name/2B45B0E5=Unit Group
+ParamDef/Name/3779B33B=NearbyUnits
+ParamDef/Name/5C98BF97=Unit Facing Point
+ParamDef/Name/8C828248=Delay
+ParamDef/Name/9D871E87=Filter
+ParamDef/Name/A3BAE7BA=Index
+ParamDef/Name/BCCEB6CB=OriginalRegion
+ParamDef/Name/D0C7DF75=Structure
+ParamDef/Name/D2EA25BC=Range
+ParamDef/Name/D3F541E5=Unit Type
+ParamDef/Name/DFE84730=Diamondback
+ParamDef/Name/F6C47F8C=Owner
+Structure/Name/02D4152D=RECORD_RepairSCV
+Trigger/Name/045C8179=Objective Destroy Palace Gate Failed
+Trigger/Name/04AE8507=Kerrigan Is Killed Q
+Trigger/Name/06A3FAEC=Hyperion Trigger
+Trigger/Name/087495BB=Mid Hyperion Movement
+Trigger/Name/0A3E4AC0=Hyperion Intro Q
+Trigger/Name/0E7DD429=Mid Cleanup
+Trigger/Name/0E90E2D1=Victory Cleanup
+Trigger/Name/0EE212BB=Lane 3
+Trigger/Name/0F391288=Objective Hyperion Must Survive Complete
+Trigger/Name/10484B80=Objective - Clear Outer Lanes - Update
+Trigger/Name/11526464=Hyperion Attacked
+Trigger/Name/1259352A=SCV Repair Script
+Trigger/Name/1263F02F=Death Head Q
+Trigger/Name/12E86F79=Pride of Augustgrad Q
+Trigger/Name/14585378=Palace Gate at 75%
+Trigger/Name/16AEDC8B=DEBUG - Hyperion
+Trigger/Name/1DC6A40C=Aegis Guard / Bulwark Company Q
+Trigger/Name/1F33FB61=Intro Cleanup Not Skipped
+Trigger/Name/207D017A=Dominion Right 1 Deactivate
+Trigger/Name/21FDCD90=Handle Kerrigan Death
+Trigger/Name/225C725A=Intro Cinematic End
+Trigger/Name/2447B833=Create Dominion Patrol - Left Side
+Trigger/Name/26EF34E4=Initialization
+Trigger/Name/28D3794E=Objective Destroy Palace Gate Create
+Trigger/Name/2B8F2D6F=Init 03 Units
+Trigger/Name/2B9EC8DE=Sky Fury / Night Wolf Q
+Trigger/Name/2F267459=Dominion Right 2 Deactivate
+Trigger/Name/3293F101=Init 02 Players
+Trigger/Name/339DCA1C=Lane 1
+Trigger/Name/3472693E=Lane 1 Spawn Loop
+Trigger/Name/34C1C2A6=Init 01 Technology
+Trigger/Name/35FB224C=Objective Hyperion Must Survive Create
+Trigger/Name/36E6FAA6=Victory Q
+Trigger/Name/3A3A2F2B=Elite Force Intro Q
+Trigger/Name/46073A3C=Hyperion Big Attack 2 Q
+Trigger/Name/464A1841=Victory Zerg
+Trigger/Name/4D0BCD90=Create Augustgrad Gate Pings
+Trigger/Name/4FB8046F=Objective - Clear Outer Lanes - Create
+Trigger/Name/536B4E20=Init 05 Environment
+Trigger/Name/5593E429=DEBUG - AI Debug Output
+Trigger/Name/591B8338=Outback Hunter / Sons of Korhal Q
+Trigger/Name/5DDE161C=Victory Sequence
+Trigger/Name/5E176E0A=Init 04 Music
+Trigger/Name/5E798168=Intro Music
+Trigger/Name/61CE220E=Objective Destroy Palace Gate Complete
+Trigger/Name/665536A8=Hyperion SCV Respawn
+Trigger/Name/67BA042A=Dominion Left 2 Destroyed Q
+Trigger/Name/68A6B37C=Victory Cheat
+Trigger/Name/6BDB3DCA=Tip - Elite Forces Q
+Trigger/Name/6DFAA76F=Augustgrad Gate Intro Proximity
+Trigger/Name/70B20FA2=Hyperion Big Attack 3 Q
+Trigger/Name/7725090D=Start Game
+Trigger/Name/77EB8054=Dominion Left 2 Deactivate
+Trigger/Name/79813264=Init 07 Help
+Trigger/Name/7CC230CC=Init 06 Difficulties
+Trigger/Name/8CFE6E20=Hyperion Attacked First Time Q
+Trigger/Name/8D63DC78=Victory Destroy Palace Gate Completed
+Trigger/Name/9259F53F=Hyperion Big Attack 1 Q
+Trigger/Name/930D2A10=Defeat Base Dead
+Trigger/Name/9BE8ED02=Dominion Middle 2 Deactivate
+Trigger/Name/9E453ED8=AI Give Resources
+Trigger/Name/9F0436E9=Augustgrad Gate Intros Q
+Trigger/Name/A0D858AA=Defeat
+Trigger/Name/A8DDDF64=Start AI
+Trigger/Name/A93CF1AB=Victory Cinematic End
+Trigger/Name/B05AD640=Objective Hyperion Must Survive Failed
+Trigger/Name/B2AFB135=Start Upgrades (Normal)
+Trigger/Name/B377C922=Objective - Clear Outer Lanes - Complete
+Trigger/Name/B5078FB1=Mid Cinematic
+Trigger/Name/BA259BC1=Bulwark Cmpy / Shock Division Q
+Trigger/Name/BA6103F1=Bridge Control
+Trigger/Name/BC7E3853=Hyperion Damaged
+Trigger/Name/BCE0B1EF=Create Palace Gate Ping
+Trigger/Name/C09F3724=Mid Cinematic End
+Trigger/Name/C116D284=Hyperion Low Health Q
+Trigger/Name/C17EBB3F=Mid Q
+Trigger/Name/C1981AB2=Prometheus Cmpy / Outback Hunter Q
+Trigger/Name/C4828344=Odin Dies
+Trigger/Name/C9E9EE10=Lane 2 Spawn Loop
+Trigger/Name/CC636751=Victory Cinematic
+Trigger/Name/D0096EC0=DEBUG - Change Colors
+Trigger/Name/D2614D5A=Lane 2
+Trigger/Name/D2A5EAE6=Lane Cleared Q
+Trigger/Name/D671C2A7=Mid Setup
+Trigger/Name/DA7F8847=Raynor Attack Prep Q
+Trigger/Name/DCF3DAF1=Victory
+Trigger/Name/E27FE8EA=Hyperion Attacked Q
+Trigger/Name/E53A19FD=Intro Cleanup Skipped
+Trigger/Name/E5778D60=Defeat Hyperion Dies
+Trigger/Name/E7D651FF=Dominion Middle 1 Deactivate
+Trigger/Name/E8E2A6E0=Palace Gate at 50%
+Trigger/Name/EAE6803E=Raynor Attack Prep Timing
+Trigger/Name/EC48A503=Start Upgrades (Hard)
+Trigger/Name/ECCBA2B2=Intro Cinematic
+Trigger/Name/ED605C53=Lane 3 Spawn Loop
+Trigger/Name/EDD29BA4=Intro Setup
+Trigger/Name/F15F2AAD=Intro Q
+Trigger/Name/F253B06C=Create Dominion Patrol - Right Side
+Trigger/Name/F97F5B41=Victory Setup
+Trigger/Name/FB4BAB63=Defeat Cheat
+Trigger/Name/FFF767EB=Dominion Right 1 Destroyed Q
+Variable/Name/001C166A=i
+Variable/Name/03F40C8C=PLAYER_04_DOMINION_YELLOW
+Variable/Name/03F8FAED=PalaceGatePing
+Variable/Name/059A9ECC=SCVFound
+Variable/Name/07AC9338=FadeDuration
+Variable/Name/0BC531CA=PLAYER_01_USER
+Variable/Name/0FFF542A=Transmission
+Variable/Name/11BD6517=MoveToA
+Variable/Name/171FEE74=DominionPatrolLeftGroup
+Variable/Name/1924E1F9=FadeDuration
+Variable/Name/1A738706=TempPoint
+Variable/Name/1C646281=KERRIGAN
+Variable/Name/1D7A16C7=CinematicTempUnits
+Variable/Name/1E41AB1B=FadeDuration
+Variable/Name/256B1AFA=LanesCleared
+Variable/Name/263D0FDF=PLAYER_09_RAYNOR_BLUE
+Variable/Name/26872465=i
+Variable/Name/2AC37ADE=PLAYER_07_GATES
+Variable/Name/2E1CF6C7=DepotGroup
+Variable/Name/2F2E36CC=PLAYER_14_IZSHA
+Variable/Name/30601208=YellowEnd
+Variable/Name/3F62F8D4=BlueEnd
+Variable/Name/4652EE01=Enemies
+Variable/Name/46794C6F=RepairSCVs
+Variable/Name/46CB88F7=IntroUnitFacings
+Variable/Name/477F7320=BunkerGroup
+Variable/Name/49D20C46=ObjectiveHyperionMustSurvive
+Variable/Name/4A3F85FB=MissionTimer
+Variable/Name/4E5B83CC=CinematicCompleted
+Variable/Name/52C77A5C=CinematicHiddenUnits
+Variable/Name/583FA154=i
+Variable/Name/5A4F10E5=HyperionDamaged
+Variable/Name/5BAE96AC=i
+Variable/Name/5EFABD28=Patrollers
+Variable/Name/5F683639=Depot
+Variable/Name/6134D9CF=SCV
+Variable/Name/61F2403C=i
+Variable/Name/7199542A=HyperionVictims
+Variable/Name/72F17D21=IntroUnitPositions
+Variable/Name/75B5F8A2=Patrollers
+Variable/Name/77EB9BE9=MoveToB
+Variable/Name/7C325357=DominionPatrolRightGroup
+Variable/Name/801BBC3E=HyperionFirstAttackTransmision
+Variable/Name/801E4AFA=ObjectiveDestroyPalaceGate
+Variable/Name/820A97B0=LaneClearedCount
+Variable/Name/872E545C=InCinematic
+Variable/Name/89FFE016=PatrollerPointsA
+Variable/Name/8C2F8286=i
+Variable/Name/9407FBDE=MidHyperion
+Variable/Name/949EDE96=PLAYER_03_DOMINION_TEAL
+Variable/Name/96FCC807=i
+Variable/Name/979B40EA=PLAYER_05_DOMINION_PINK
+Variable/Name/97B75446=IntroUnits
+Variable/Name/98AF731E=Ping
+Variable/Name/A1677F82=i
+Variable/Name/A286DA83=NumberOfRepairSCVs
+Variable/Name/A4DDE81B=PLAYER_10_BRIDGE_CONTROL
+Variable/Name/A6444A2D=FinalValue
+Variable/Name/AC6A2DC8=NumberOfIntroUnits
+Variable/Name/AC936921=FadeDuration
+Variable/Name/B05E9A85=OdinPing
+Variable/Name/B0EFA322=PatrollerPointsA
+Variable/Name/B2171D1E=HomePoint
+Variable/Name/B56CDD88=VictoryKerrigan
+Variable/Name/C00E2963=LanePing
+Variable/Name/C131F60D=DepotCount
+Variable/Name/C256EDA0=VictoryZerg1
+Variable/Name/C709835E=DominionPlayers
+Variable/Name/C8931965=PatrollerPointsB
+Variable/Name/CC4353FA=PalaceTurrets
+Variable/Name/CDE75B31=StartValue
+Variable/Name/CEA6A533=PatrollerPointsB
+Variable/Name/D1B49D5C=ObjectiveClearOuterLanes
+Variable/Name/D465A500=i
+Variable/Name/D5AA8755=DominionLeftGather
+Variable/Name/D7012AC7=HyperionPing
+Variable/Name/DC3730F7=GameOver
+Variable/Name/DEEFDB94=CinematicHyperion
+Variable/Name/E81B6940=HYPERION
+Variable/Name/E9D013BC=VictoryZerg2
+Variable/Name/EDEBF587=FadeDuration
+Variable/Name/EE75544B=DepotLoc
+Variable/Name/F0ACE0B1=PLAYER_02_DOMINION_RED
+Variable/Name/F5369777=FadeDuration
+Variable/Name/F66A3470=i
+Variable/Name/FD091901=DominionRightGather
+Variable/Name/FFA48BE4=MoveTo