diff --git a/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/DocumentHeader b/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/DocumentHeader
index 6722250d6..9e7b6d34d 100644
Binary files a/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/DocumentHeader and b/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/DocumentHeader differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/MapScript.galaxy b/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/MapScript.galaxy
index c5edad35d..fcf89231f 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/MapScript.galaxy
+++ b/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/MapScript.galaxy
@@ -46,6 +46,7 @@ const int gv_LOCATION_ID_SOUTHWEST_BANELING_NEST = 6;
const int gv_LOCATION_ID_SOUTHEAST_BANELING_NEST = 7;
const int gv_LOCATION_ID_NORTH_BANELING_NEST = 8;
const int gv_LOCATION_ID_NORTHEAST_BANELING_NEST = 9;
+const int gv_LOCATION_ID_WIN_WITHOUT_100_EGGS = 10;
//--------------------------------------------------------------------------------------------------
// Global Structures
@@ -143,6 +144,7 @@ unit gv_victoryKerrigan;
unit gv_victoryZagara;
unitgroup gv_victoryZerg;
int gv_objectiveRepelZagara;
+int gv_objectiveWithoutEggs;
bool gv_aPFirstZagara;
void InitGlobals () {
@@ -180,6 +182,7 @@ void InitGlobals () {
gv_midEggHatchDelay = 1.8;
gv_victoryZerg = UnitGroupEmpty();
gv_objectiveRepelZagara = c_invalidObjectiveId;
+ gv_objectiveWithoutEggs = c_invalidObjectiveId;
gv_aPFirstZagara = true;
}
@@ -326,6 +329,9 @@ trigger gt_VictoryZerglings;
trigger gt_VictoryZergHold;
trigger gt_ObjectiveRepelZagaraCreate;
trigger gt_ObjectiveRepelZagaraComplete;
+trigger gt_ObjectiveWithoutEggsCreate;
+trigger gt_ObjectiveWithoutEggsComplete;
+trigger gt_ObjectiveWithoutEggsFail;
trigger gt_onDifficultyCasual;
trigger gt_onDifficultyNormal;
trigger gt_onDifficultyHard;
@@ -1308,6 +1314,8 @@ bool gt_StartGameQ_Func (bool testConds, bool runActions) {
TriggerQueueEnter();
TriggerExecute(gt_ObjectiveCollectEggsCreate, true, true);
TriggerExecute(gt_ObjectiveFindBanelingNestsCreate, true, false);
+ Wait(2.0, c_timeReal);
+ TriggerExecute(gt_ObjectiveWithoutEggsCreate, true, false);
TriggerQueueExit();
Wait(4.0, c_timeReal);
TriggerExecute(gt_TipMissionHelpQ, true, false);
@@ -2198,6 +2206,7 @@ bool gt_EggPickup_Func (bool testConds, bool runActions) {
if ((gv_eggsCollected >= 100)) {
TriggerEnable(TriggerGetCurrent(), false);
gv_eggsCollected = 100;
+ TriggerExecute(gt_ObjectiveWithoutEggsFail, true, false);
TriggerExecute(gt_ObjectiveCollectEggsUpdate, true, false);
TriggerExecute(gt_ObjectiveCollectEggsComplete, true, false);
TriggerExecute(gt_ObjectiveZagaraEggsComplete, true, false);
@@ -5101,6 +5110,11 @@ bool gt_VictoryZagarasBaseDestroyed_Func (bool testConds, bool runActions) {
}
TriggerEnable(TriggerGetCurrent(), false);
+ if ((gv_eggsCollected < 100)) {
+ lib5BD4895D_gf_AP_Core_collectLocationUpdateObjective(gv_LOCATION_ID_WIN_WITHOUT_100_EGGS);
+ TriggerExecute(gt_ObjectiveWithoutEggsComplete, true, false);
+ }
+
lib5BD4895D_gf_AP_Core_collectLocationUpdateObjective(lib5BD4895D_gv_aP_Core_locationVictory);
TriggerExecute(gt_VictorySequence, true, false);
return true;
@@ -6573,6 +6587,100 @@ void gt_ObjectiveRepelZagaraComplete_Init () {
gt_ObjectiveRepelZagaraComplete = TriggerCreate("gt_ObjectiveRepelZagaraComplete_Func");
}
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective - Without Eggs - Create
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveWithoutEggsCreate_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_category;
+
+ // Automatic Variable Declarations
+ // Variable Initialization
+ lv_category = lib5BD4895D_ge_APObjectiveCategory_Challenge;
+
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ ObjectiveCreate(StringExternal("Param/Value/C7458DD3"), StringToText(""), c_objectiveStateHidden, false);
+ gv_objectiveWithoutEggs = ObjectiveLastCreated();
+ lib5BD4895D_gf_AP_Core_addCategoryObjectiveSimple(gv_objectiveWithoutEggs, lv_category, true);
+ lib5BD4895D_gf_AP_Core_associateObjectiveWithLocation(gv_objectiveWithoutEggs, gv_LOCATION_ID_WIN_WITHOUT_100_EGGS);
+ lib5BD4895D_gf_AP_Core_setObjectiveVisibility(gv_objectiveWithoutEggs, true);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveWithoutEggsCreate_Init () {
+ gt_ObjectiveWithoutEggsCreate = TriggerCreate("gt_ObjectiveWithoutEggsCreate_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective - Without Eggs - Complete
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveWithoutEggsComplete_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_ObjectiveWithoutEggsCreate, true, false);
+ lib5BD4895D_gf_AP_Core_setObjectiveCompleted(gv_objectiveWithoutEggs);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveWithoutEggsComplete_Init () {
+ gt_ObjectiveWithoutEggsComplete = TriggerCreate("gt_ObjectiveWithoutEggsComplete_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective - Without Eggs - Fail
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveWithoutEggsFail_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);
+ lib5BD4895D_gf_AP_Core_setObjectiveFailed(gv_objectiveWithoutEggs);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveWithoutEggsFail_Init () {
+ gt_ObjectiveWithoutEggsFail = TriggerCreate("gt_ObjectiveWithoutEggsFail_Func");
+}
+
//--------------------------------------------------------------------------------------------------
// Trigger: onDifficultyCasual
//--------------------------------------------------------------------------------------------------
@@ -6973,6 +7081,9 @@ void InitTriggers () {
gt_VictoryZergHold_Init();
gt_ObjectiveRepelZagaraCreate_Init();
gt_ObjectiveRepelZagaraComplete_Init();
+ gt_ObjectiveWithoutEggsCreate_Init();
+ gt_ObjectiveWithoutEggsComplete_Init();
+ gt_ObjectiveWithoutEggsFail_Init();
gt_onDifficultyCasual_Init();
gt_onDifficultyNormal_Init();
gt_onDifficultyHard_Init();
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/Triggers b/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/Triggers
index 2d0de744e..25b33911f 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/Triggers
+++ b/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/Triggers
@@ -5285,6 +5285,8 @@
+
+
@@ -5326,6 +5328,41 @@
+
+
+
+
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -13622,6 +13659,7 @@
+
@@ -13663,6 +13701,26 @@
100
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -37730,6 +37788,7 @@
+
@@ -37927,6 +37986,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 100
+
+
@@ -51468,6 +51582,7 @@
+
@@ -51485,6 +51600,7 @@
+
LOCATION_ID_CENTER_INFESTED_COMMAND_CENTER
@@ -51594,6 +51710,18 @@
9
+
+ LOCATION_ID_WIN_WITHOUT_100_EGGS
+
+
+
+
+
+
+
+ 10
+
+
@@ -51889,6 +52017,367 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create the objective
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Update the objective
+
+
+
+
+
+
+
+
+
+
+
+
+ Wait a short amount of time so the player can see the objective is completed. You can delete this action if you're completing multiple objectives at once.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/Triggers.version b/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/Triggers.version
index 1a851b4a1..6aeddd1f9 100644
Binary files a/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/Triggers.version and b/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/Triggers.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
index 73a5c6985..d06e93e31 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
+++ b/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
@@ -44,6 +44,7 @@ Param/Value/A1AC8C33=Find Baneling Nests
Param/Value/AB71505C=+NumberOfEggs
Param/Value/BA756A5C=Zagara Returns In:
Param/Value/C41A47E9=An uprooted Spine Crawler can move.Use Root to allow the Spine Crawler to attack.
+Param/Value/C7458DD3=Destroy Zagara's base without collecting 100 eggs
Param/Value/C7620A1C=Baneling Egg Nest
Param/Value/C7BD448C=Zerg Eggs
Param/Value/D9E70ECE=Baneling Nests Rescued Before Eggs Collected
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
index 1c640950d..e49cc094c 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
+++ b/Maps/ArchipelagoCampaign/HotS/ap_domination.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
@@ -6,13 +6,14 @@ Category/Name/1EDC04AC=Midgame Cinematic
Category/Name/264242E8=Difficulty
Category/Name/2DC36FF6======== CINEMATIC =======
Category/Name/314173AB=Utility
+Category/Name/500BFEEB=Bonus Objective - Without Eggs
Category/Name/50639A7A=Achievements & Stats
Category/Name/74252522======== GAMEPLAY =======
Category/Name/7D18442D=Bonus Objective - Find Baneling Nests
Category/Name/8370D92A=Eggs
Category/Name/8BFD4E5A=Variables
Category/Name/8FA8F08F=AI Attack Waves
-Category/Name/944689C6=Custom Objectives
+Category/Name/944689C6=Bonus Objective - Repel Zagara
Category/Name/A22763B2======== MAIN =======
Category/Name/A5723261=Debug
Category/Name/A9A166FD=EggsVariable
@@ -79,6 +80,7 @@ Trigger/Name/1739CB04=Mid Setup
Trigger/Name/1ED3DD94=Start AI
Trigger/Name/2054893F=Objective - Find Baneling Nests - Complete
Trigger/Name/21865551=Baneling Egg Q
+Trigger/Name/23E6987D=Objective - Without Eggs - Complete
Trigger/Name/2591E432=Init 04 Music
Trigger/Name/26DC3327=First Attack - Zagara Taunt Q
Trigger/Name/279B2F18=Mid Cinematic
@@ -143,6 +145,7 @@ Trigger/Name/A243F528=Created Unit
Trigger/Name/A2F36D3E=AI Give Minerals
Trigger/Name/A33ED1CF=Achievement: Baneling Kills
Trigger/Name/A3B57F08=50 Egg Q
+Trigger/Name/A844F51C=Objective - Without Eggs - Fail
Trigger/Name/A955ACC9=Objective - Zagara Eggs - Failed
Trigger/Name/AB383BE6=Infested Command Center Destroyed
Trigger/Name/AB47600C=Objective - Repel Zagara - Complete
@@ -152,6 +155,7 @@ Trigger/Name/AD7E5281=onDifficultyBrutal
Trigger/Name/AD9B7AA1=Objective - Repel Zagara - Create
Trigger/Name/AE32B2CB=Spine Crawler Transform
Trigger/Name/AF064DE4=90 Egg Q
+Trigger/Name/B15D0127=Objective - Without Eggs - Create
Trigger/Name/B2019440=Mid Q
Trigger/Name/B308233D=Zagara Ping Control
Trigger/Name/B4645072=Victory Zerglings
@@ -220,6 +224,7 @@ Variable/Name/27170EF0=EggNests
Variable/Name/29FA5B27=IntroMusicFinished
Variable/Name/2BD4339E=FiredOnce
Variable/Name/30DA8F95=LOCATION_ID_NORTH_INFESTED_COMMAND_CENTER
+Variable/Name/336E4B4C=ObjectiveWithoutEggs
Variable/Name/337E5480=AP First Zagara
Variable/Name/339897B0=TimeoutTimer
Variable/Name/339F6AB7=Index
@@ -270,6 +275,7 @@ Variable/Name/7F1185A6=PLAYER_06_FERAL_BANELINGS
Variable/Name/7F534C07=FadeDuration
Variable/Name/7F6B51AE=DestroyZagarasBaseTimer
Variable/Name/809D4447=FeralBanelingGroup
+Variable/Name/83F5E0DB=category
Variable/Name/860AE09A=i
Variable/Name/86CF9571=ZagaraCorruptingEgg
Variable/Name/88DE7F85=VictoryCinematicCompleted
@@ -291,6 +297,7 @@ Variable/Name/AD5F892E=LOCATION_ID_CLOSE_BANELING_NEST
Variable/Name/B0DF1BAA=NearestBanelingEgg
Variable/Name/B180F8E3=Index
Variable/Name/B1FCE0A9=MidSpawnedUnitsSelected
+Variable/Name/B6030FFA=LOCATION_ID_WIN_WITHOUT_100_EGGS
Variable/Name/B6085F5C=TransfusionCooldownTimer
Variable/Name/B79D7040=ZerglingActors
Variable/Name/B8004569=PLAYER_04_EGGS
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/DocumentHeader b/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/DocumentHeader
index 65a77ebe8..0befe86ee 100644
Binary files a/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/DocumentHeader and b/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/DocumentHeader differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/MapScript.galaxy b/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/MapScript.galaxy
index 5630c4c6f..ba4cac1a4 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/MapScript.galaxy
+++ b/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/MapScript.galaxy
@@ -55,6 +55,9 @@ const int gv_LOCATION_ID_SOUTH_ZERG_RESCUE = 6;
const int gv_LOCATION_ID_NORTH_ZERG_RESCUE = 7;
const int gv_LOCATION_ID_WEST_QUEEN_RESCUE = 8;
const int gv_LOCATION_ID_EAST_QUEEN_RESCUE = 9;
+const int gv_LOCATION_ID_SOUTH_ORBITAL_COMMAND_CENTER = 10;
+const int gv_LOCATION_ID_NORTHWEST_ORBITAL_COMMAND_CENTER = 11;
+const int gv_LOCATION_ID_SOUTHEAST_ORBITAL_COMMAND_CENTER = 12;
//--------------------------------------------------------------------------------------------------
// Global Variables
@@ -128,6 +131,8 @@ bool gv_victoryCinematicCompleted;
unitgroup gv_victoryHiddenUnitGroup2;
unit gv_victoryKerrigan;
sound gv_victorySound;
+int gv_objectiveDestroyOrbitals;
+int gv_orbitalsDestroyed;
void InitGlobals () {
int init_i;
@@ -160,6 +165,7 @@ void InitGlobals () {
gv_introTextTag = c_textTagNone;
gv_midHiddenUnitGroup = UnitGroupEmpty();
gv_victoryHiddenUnitGroup2 = UnitGroupEmpty();
+ gv_objectiveDestroyOrbitals = c_invalidObjectiveId;
}
//--------------------------------------------------------------------------------------------------
@@ -299,11 +305,17 @@ trigger gt_onDifficultyCasual;
trigger gt_onDifficultyNormal;
trigger gt_onDifficultyHard;
trigger gt_onDifficultyBrutal;
+trigger gt_ObjectiveDestroyOrbitalsCreate;
+trigger gt_ObjectiveDestroyOrbitalsUpdate;
+trigger gt_ObjectiveDestroyOrbitalsComplete;
trigger gt_ArchInit;
trigger gt_SetMineralCount;
trigger gt_ObjectiveFindZergBiomassWest;
trigger gt_ObjectiveFindZergBiomassNorth;
trigger gt_ObjectiveFindZergBiomassSouth;
+trigger gt_ObjectiveDestroyOrbitalSouth;
+trigger gt_ObjectiveDestroyOrbitalNorthwest;
+trigger gt_ObjectiveDestroyOrbitalSoutheast;
//--------------------------------------------------------------------------------------------------
// Custom AI Functions
@@ -1251,6 +1263,8 @@ bool gt_StartGameQ_Func (bool testConds, bool runActions) {
Wait(3.0, c_timeReal);
TriggerQueueEnter();
TriggerExecute(gt_ObjectiveDestroyGorgonsCreate, true, true);
+ Wait(2.0, c_timeGame);
+ TriggerExecute(gt_ObjectiveDestroyOrbitalsCreate, true, false);
TriggerQueueExit();
Wait(2.0, c_timeGame);
TriggerExecute(gt_GorgonLaunchPlay, true, false);
@@ -6180,6 +6194,100 @@ void gt_onDifficultyBrutal_Init () {
gt_onDifficultyBrutal = TriggerCreate("gt_onDifficultyBrutal_Func");
}
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Destroy Orbitals Create
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveDestroyOrbitalsCreate_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_category;
+
+ // Automatic Variable Declarations
+ // Variable Initialization
+ lv_category = lib5BD4895D_ge_APObjectiveCategory_Challenge;
+
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ ObjectiveCreate(StringExternal("Param/Value/AA69C287"), StringToText(""), c_objectiveStateHidden, false);
+ gv_objectiveDestroyOrbitals = ObjectiveLastCreated();
+ lib5BD4895D_gf_AP_Core_addCategoryObjectiveWithCounter(gv_objectiveDestroyOrbitals, lv_category, "", gv_orbitalsDestroyed, 3, true);
+ lib5BD4895D_gf_AP_Core_associateObjectiveWithLocation(gv_objectiveDestroyOrbitals, gv_LOCATION_ID_SOUTH_ORBITAL_COMMAND_CENTER);
+ lib5BD4895D_gf_AP_Core_associateObjectiveWithLocation(gv_objectiveDestroyOrbitals, gv_LOCATION_ID_NORTHWEST_ORBITAL_COMMAND_CENTER);
+ lib5BD4895D_gf_AP_Core_associateObjectiveWithLocation(gv_objectiveDestroyOrbitals, gv_LOCATION_ID_SOUTHEAST_ORBITAL_COMMAND_CENTER);
+ lib5BD4895D_gf_AP_Core_setObjectiveVisibility(gv_objectiveDestroyOrbitals, true);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveDestroyOrbitalsCreate_Init () {
+ gt_ObjectiveDestroyOrbitalsCreate = TriggerCreate("gt_ObjectiveDestroyOrbitalsCreate_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Destroy Orbitals Update
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveDestroyOrbitalsUpdate_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gv_orbitalsDestroyed += 1;
+ lib5BD4895D_gf_AP_Core_setObjectiveCounter(gv_objectiveDestroyOrbitals, gv_orbitalsDestroyed);
+ if ((gv_orbitalsDestroyed >= 3)) {
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_ObjectiveDestroyOrbitalsComplete, true, false);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveDestroyOrbitalsUpdate_Init () {
+ gt_ObjectiveDestroyOrbitalsUpdate = TriggerCreate("gt_ObjectiveDestroyOrbitalsUpdate_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Destroy Orbitals Complete
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveDestroyOrbitalsComplete_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_ObjectiveDestroyOrbitalsCreate, true, false);
+ lib5BD4895D_gf_AP_Core_setObjectiveCompleted(gv_objectiveDestroyOrbitals);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveDestroyOrbitalsComplete_Init () {
+ gt_ObjectiveDestroyOrbitalsComplete = TriggerCreate("gt_ObjectiveDestroyOrbitalsComplete_Func");
+}
+
//--------------------------------------------------------------------------------------------------
// Trigger: Arch Init
//--------------------------------------------------------------------------------------------------
@@ -6336,6 +6444,105 @@ void gt_ObjectiveFindZergBiomassSouth_Init () {
TriggerAddEventUnitRange(gt_ObjectiveFindZergBiomassSouth, null, UnitFromId(1824), 1.5, true);
}
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Destroy Orbital South
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveDestroyOrbitalSouth_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);
+ lib5BD4895D_gf_AP_Core_collectLocationUpdateObjective(gv_LOCATION_ID_SOUTH_ORBITAL_COMMAND_CENTER);
+ TriggerExecute(gt_ObjectiveDestroyOrbitalsUpdate, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveDestroyOrbitalSouth_Init () {
+ gt_ObjectiveDestroyOrbitalSouth = TriggerCreate("gt_ObjectiveDestroyOrbitalSouth_Func");
+ TriggerAddEventUnitDied(gt_ObjectiveDestroyOrbitalSouth, UnitRefFromUnit(UnitFromId(306)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Destroy Orbital Northwest
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveDestroyOrbitalNorthwest_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);
+ lib5BD4895D_gf_AP_Core_collectLocationUpdateObjective(gv_LOCATION_ID_NORTHWEST_ORBITAL_COMMAND_CENTER);
+ TriggerExecute(gt_ObjectiveDestroyOrbitalsUpdate, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveDestroyOrbitalNorthwest_Init () {
+ gt_ObjectiveDestroyOrbitalNorthwest = TriggerCreate("gt_ObjectiveDestroyOrbitalNorthwest_Func");
+ TriggerAddEventUnitDied(gt_ObjectiveDestroyOrbitalNorthwest, UnitRefFromUnit(UnitFromId(242)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Destroy Orbital Southeast
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveDestroyOrbitalSoutheast_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);
+ lib5BD4895D_gf_AP_Core_collectLocationUpdateObjective(gv_LOCATION_ID_SOUTHEAST_ORBITAL_COMMAND_CENTER);
+ TriggerExecute(gt_ObjectiveDestroyOrbitalsUpdate, true, false);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveDestroyOrbitalSoutheast_Init () {
+ gt_ObjectiveDestroyOrbitalSoutheast = TriggerCreate("gt_ObjectiveDestroyOrbitalSoutheast_Func");
+ TriggerAddEventUnitDied(gt_ObjectiveDestroyOrbitalSoutheast, UnitRefFromUnit(UnitFromId(130)));
+}
+
//--------------------------------------------------------------------------------------------------
// Trigger Initialization
//--------------------------------------------------------------------------------------------------
@@ -6458,11 +6665,17 @@ void InitTriggers () {
gt_onDifficultyNormal_Init();
gt_onDifficultyHard_Init();
gt_onDifficultyBrutal_Init();
+ gt_ObjectiveDestroyOrbitalsCreate_Init();
+ gt_ObjectiveDestroyOrbitalsUpdate_Init();
+ gt_ObjectiveDestroyOrbitalsComplete_Init();
gt_ArchInit_Init();
gt_SetMineralCount_Init();
gt_ObjectiveFindZergBiomassWest_Init();
gt_ObjectiveFindZergBiomassNorth_Init();
gt_ObjectiveFindZergBiomassSouth_Init();
+ gt_ObjectiveDestroyOrbitalSouth_Init();
+ gt_ObjectiveDestroyOrbitalNorthwest_Init();
+ gt_ObjectiveDestroyOrbitalSoutheast_Init();
}
//--------------------------------------------------------------------------------------------------
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/Triggers b/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/Triggers
index 8bc833ff2..5be3ce0c2 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/Triggers
+++ b/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/Triggers
@@ -5309,6 +5309,8 @@
+
+
@@ -5330,6 +5332,41 @@
+
+
+
+
+
+
+
+
+ 2.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -46786,11 +46823,15 @@
+
+
+
+
@@ -46802,6 +46843,9 @@
+
+
+
LOCATION_ID_WEST_BIOMASS
@@ -46911,6 +46955,42 @@
9
+
+ LOCATION_ID_SOUTH_ORBITAL_COMMAND_CENTER
+
+
+
+
+
+
+
+ 10
+
+
+
+ LOCATION_ID_NORTHWEST_ORBITAL_COMMAND_CENTER
+
+
+
+
+
+
+
+ 11
+
+
+
+ LOCATION_ID_SOUTHEAST_ORBITAL_COMMAND_CENTER
+
+
+
+
+
+
+
+ 12
+
+
@@ -47065,6 +47145,451 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create the objective
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Update the objective
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -47869,4 +48394,298 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/Triggers.version b/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/Triggers.version
index ec80f41f9..1a8d10d42 100644
Binary files a/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/Triggers.version and b/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/Triggers.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
index cac90902d..41bf1ff52 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
+++ b/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
@@ -41,6 +41,7 @@ Param/Value/9DFC3C2F=Scourge Nest
Param/Value/A4208892=Raven
Param/Value/A50B2849=Tips
Param/Value/A86D9394=Scourge Nest Awakened
+Param/Value/AA69C287=Destroy Orbital Command Centers
Param/Value/ABAD7A82=Scourge Nest
Param/Value/B04BE048=Move Kerrigan here to collect the Zerg Biomass.
Param/Value/B74336EA=Largest Zerg Force
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
index 74be927a0..ace12cd2c 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
+++ b/Maps/ArchipelagoCampaign/HotS/ap_fire_in_the_sky.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
@@ -14,6 +14,7 @@ Category/Name/737AC7CC======== GAMEPLAY =======
Category/Name/76D16D62=Utility
Category/Name/80AC3597=Achievements & Stats
Category/Name/83579686=Cinematic Variables
+Category/Name/84E769F7=Bonus Objective - Destroy Orbitals
Category/Name/859380BC=Starting Sequence
Category/Name/9647B2FE=Bonus Objective - Find Zerg Biomass
Category/Name/A1226ACA=Bonus Objective - Find Zerg
@@ -91,7 +92,9 @@ Trigger/Name/42EDB43B=Intro Cleanup
Trigger/Name/44D92427=Zerg Rescue - Bottom
Trigger/Name/4562F862=Transmission: Queen Thanks You Q
Trigger/Name/47FEA667=Gorgon Close to Base
+Trigger/Name/484D6FCF=Objective Destroy Orbital South
Trigger/Name/48E49668=Objective Destroy Gorgons Create
+Trigger/Name/48FE0667=Objective Destroy Orbital Southeast
Trigger/Name/4BED3D3E=Init 02 Players
Trigger/Name/4F30C6D7=Init 07 Help
Trigger/Name/501C1945=Achievement: Destroy X Gorgons in Y seconds H
@@ -99,6 +102,7 @@ Trigger/Name/50842F6B=Init 05 Environment
Trigger/Name/53130067=Scourge Nest Cycle
Trigger/Name/53F1C5EB=onDifficultyCasual
Trigger/Name/541FBEBC=Scourge Nest - Contruction Completed
+Trigger/Name/577FBE17=Objective Destroy Orbitals Create
Trigger/Name/587A0B93=Victory Sequence
Trigger/Name/5F6FB6D1=Objective Activate Scourge Nest Complete
Trigger/Name/63E5D971=Intro Q
@@ -109,6 +113,7 @@ Trigger/Name/69719FFB=Largest Zerg Force
Trigger/Name/6A11142A=Mid Music
Trigger/Name/6C9EA05A=Transmission: Dominion Raven Q
Trigger/Name/6DB63D8C=Transmission: Gorgon Close Q
+Trigger/Name/6EDFEFBC=Objective Destroy Orbitals Update
Trigger/Name/7451D856=Firebat Attacked
Trigger/Name/7491C08B=Queen Rescue 01
Trigger/Name/753E718C=Queen Rescue 02
@@ -131,6 +136,7 @@ Trigger/Name/9E815F62=Init 06 Difficulties
Trigger/Name/9E83B650=Creep Tumor Target Cursor Leave
Trigger/Name/A095294A=Gorgon Destroyed for Achievement
Trigger/Name/A50CC67D=Victrory Droppods
+Trigger/Name/A5882CC0=Objective Destroy Orbitals Complete
Trigger/Name/A65B8FA6=Objective Find Zerg Create
Trigger/Name/A6C558FA=Units Lost To Gorgon
Trigger/Name/A73DC2E0=Intro Gorgon Launch
@@ -156,6 +162,7 @@ Trigger/Name/C89571BF=Objective Find Zerg Update
Trigger/Name/CB5EE5FB=Objective Find Zerg Biomass North
Trigger/Name/CBAF800E=Objective Find Zerg Biomass Create
Trigger/Name/CC792480=Victory Cinematic End
+Trigger/Name/CC9A4FCE=Objective Destroy Orbital Northwest
Trigger/Name/D23039EF=Gorgon Destroyed
Trigger/Name/D389CD40=Transmission: Supplyline Breakers Q
Trigger/Name/D3A212A4=AI Give Minerals
@@ -191,7 +198,9 @@ Variable/Name/06A211D8=RescuedQueen
Variable/Name/06BF507A=Point
Variable/Name/0812E778=Index
Variable/Name/08FC7B53=Distance Increment
+Variable/Name/0923DA88=LOCATION_ID_SOUTHEAST_ORBITAL_COMMAND_CENTER
Variable/Name/0D422AE9=LaunchTimeIncrement
+Variable/Name/0D9C9538=ObjectiveDestroyOrbitals
Variable/Name/14A87389=Firebats
Variable/Name/14E06B9C=FadeDuration
Variable/Name/166F75CB=VisionGroup
@@ -204,6 +213,7 @@ Variable/Name/1B9BF553=VictoryZergRight
Variable/Name/1C4B2C6B=POINT
Variable/Name/1C59646C=ObjectiveZergBiomassFound
Variable/Name/1CADE1C2=MidHiddenUnitGroup
+Variable/Name/1CEEF469=OrbitalsDestroyed
Variable/Name/1FD546A6=PLAYER_05_DEAD_NEST
Variable/Name/222CBA0D=currentUnit
Variable/Name/22F86912=LOCATION_ID_WEST_QUEEN_RESCUE
@@ -289,6 +299,7 @@ Variable/Name/B9F7599E=GorgonDestroyedQuicklyTimer
Variable/Name/BB4B3F0E=THE_ONE_GORGON
Variable/Name/BB4CF1CC=PLAYER_06_ACTIVE_NEST
Variable/Name/BBC4B3AB=Transmission_ProximityWarning
+Variable/Name/BDC54475=LOCATION_ID_SOUTH_ORBITAL_COMMAND_CENTER
Variable/Name/C24D0512=Index
Variable/Name/C2B79D1F=IntroFlashbackSound
Variable/Name/C346F8EA=Creep Tumor
@@ -298,6 +309,7 @@ Variable/Name/C521A423=LOCATION_ID_CLOSE_ZERG_RESCUE
Variable/Name/C5D29A38=GorgonAttacker
Variable/Name/C78FB8C3=TUMOR
Variable/Name/C7EE2515=UnitsLostToGorgon
+Variable/Name/C9D6BF2D=LOCATION_ID_NORTHWEST_ORBITAL_COMMAND_CENTER
Variable/Name/C9FEB622=Distance Step Count
Variable/Name/D16826EE=IntroTextTag
Variable/Name/D18A08E5=Index
@@ -305,6 +317,7 @@ Variable/Name/D25D92DE=Gorgon Arrival Time
Variable/Name/D3E2CD59=CinematicCompleted
Variable/Name/D45DDB3D=GorgonDestructionInProgress
Variable/Name/D62A8DB9=VictoryKerrigan
+Variable/Name/D73631F4=category
Variable/Name/DA1A1B78=GorgonWarningPing
Variable/Name/DA380CF1=CinematicHiddenUnits
Variable/Name/DB6AA5D3=Objective INT
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/DocumentHeader b/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/DocumentHeader
index ad719e61b..bbd6fa19d 100644
Binary files a/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/DocumentHeader and b/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/DocumentHeader differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/MapScript.galaxy b/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/MapScript.galaxy
index 2e1d55774..3edcfdee0 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/MapScript.galaxy
+++ b/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/MapScript.galaxy
@@ -52,6 +52,7 @@ const int gv_LOCATION_ID_NORTHEAST_PSILINK_SPIRE = 5;
const int gv_LOCATION_ID_NORTHWEST_PSILINK_SPIRE = 6;
const int gv_LOCATION_ID_SOUTHWEST_PSILINK_SPIRE = 7;
const int gv_LOCATION_ID_NAFASH = 8;
+const int gv_LOCATION_ID_20_UNFROZEN_STRUCTURES = 9;
//--------------------------------------------------------------------------------------------------
// Global Variables
@@ -130,6 +131,8 @@ unitgroup gv_victoryHiddenUnitGroup;
unit gv_victoryKerrigan;
point gv_victorySpirePoint;
sound gv_victoryEndWinHordeSound;
+int gv_objectiveUnfrozenStructures;
+int gv_protossStructuresRemaining;
void InitGlobals () {
gv_roachRescues = UnitGroupEmpty();
@@ -160,6 +163,7 @@ void InitGlobals () {
gv_cinematicTempUnits = UnitGroupEmpty();
gv_cinematicHiddenUnits = UnitGroupEmpty();
gv_victoryHiddenUnitGroup = UnitGroupEmpty();
+ gv_objectiveUnfrozenStructures = c_invalidObjectiveId;
}
//--------------------------------------------------------------------------------------------------
@@ -346,6 +350,11 @@ trigger gt_onDifficultyCasual;
trigger gt_onDifficultyNormal;
trigger gt_onDifficultyHard;
trigger gt_onDifficultyBrutal;
+trigger gt_ObjectiveUnfrozenStructuresCreate;
+trigger gt_ObjectiveUnfrozenStructuresUpdate;
+trigger gt_ObjectiveUnfrozenStructuresComplete;
+trigger gt_ObjectiveUnfrozenStructuresFailed;
+trigger gt_UnitDiesUpdateTargetCount;
trigger gt_ArchInit;
trigger gt_SetMineralCount;
trigger gt_UrsadonMatriarchFirst;
@@ -2009,6 +2018,7 @@ bool gt_StartGameStage2Q_Func (bool testConds, bool runActions) {
TriggerExecute(gt_AIAttackWaves, true, false);
TriggerQueueEnter();
TriggerExecute(gt_ObjectiveDestroyPsiLinkSpiresCreate, true, true);
+ TriggerExecute(gt_ObjectiveUnfrozenStructuresCreate, true, false);
TriggerQueueExit();
TriggerExecute(gt_CreatePingPsiLinkSpire01, true, false);
Wait(6.0, c_timeReal);
@@ -2070,6 +2080,7 @@ bool gt_UnitDiesGiveEssenceUpdateStats_Func (bool testConds, bool runActions) {
if ((gv_flashFreezeActive == false) && (UnitGetOwner(libNtve_gf_KillingUnit()) == gv_pLAYER_01_USER) && ((UnitGetOwner(EventUnit()) == gv_pLAYER_04_PROTOSS) || (UnitGetOwner(EventUnit()) == gv_pLAYER_05_PROTOSS) || (UnitGetOwner(EventUnit()) == gv_pLAYER_06_PROTOSS)) && (UnitTypeTestAttribute(UnitGetType(EventUnit()), c_unitAttributeStructure) == true)) {
gv_unfrozenStructureDestroyed = (gv_unfrozenStructureDestroyed + 1);
+ TriggerExecute(gt_ObjectiveUnfrozenStructuresUpdate, true, false);
if ((gv_unfrozenStructureDestroyed >= 20)) {
TriggerExecute(gt_AchievementDestroyUnfrozenStructures, true, false);
}
@@ -8597,6 +8608,184 @@ void gt_onDifficultyBrutal_Init () {
gt_onDifficultyBrutal = TriggerCreate("gt_onDifficultyBrutal_Func");
}
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Unfrozen Structures Create
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveUnfrozenStructuresCreate_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_category;
+
+ // Automatic Variable Declarations
+ // Variable Initialization
+ lv_category = lib5BD4895D_ge_APObjectiveCategory_Challenge;
+
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ ObjectiveCreate(StringExternal("Param/Value/137EE48E"), StringToText(""), c_objectiveStateHidden, false);
+ gv_objectiveUnfrozenStructures = ObjectiveLastCreated();
+ lib5BD4895D_gf_AP_Core_addCategoryObjectiveWithCounter(gv_objectiveUnfrozenStructures, lv_category, "", gv_unfrozenStructureDestroyed, 20, true);
+ lib5BD4895D_gf_AP_Core_associateObjectiveWithLocation(gv_objectiveUnfrozenStructures, gv_LOCATION_ID_20_UNFROZEN_STRUCTURES);
+ lib5BD4895D_gf_AP_Core_setObjectiveVisibility(gv_objectiveUnfrozenStructures, true);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveUnfrozenStructuresCreate_Init () {
+ gt_ObjectiveUnfrozenStructuresCreate = TriggerCreate("gt_ObjectiveUnfrozenStructuresCreate_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Unfrozen Structures Update
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveUnfrozenStructuresUpdate_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerExecute(gt_ObjectiveUnfrozenStructuresCreate, true, false);
+ lib5BD4895D_gf_AP_Core_setObjectiveCounter(gv_objectiveUnfrozenStructures, gv_unfrozenStructureDestroyed);
+ if ((gv_unfrozenStructureDestroyed >= 20)) {
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_ObjectiveUnfrozenStructuresComplete, true, false);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveUnfrozenStructuresUpdate_Init () {
+ gt_ObjectiveUnfrozenStructuresUpdate = TriggerCreate("gt_ObjectiveUnfrozenStructuresUpdate_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Unfrozen Structures Complete
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveUnfrozenStructuresComplete_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_ObjectiveUnfrozenStructuresCreate, true, false);
+ lib5BD4895D_gf_AP_Core_setObjectiveCounter(gv_objectiveUnfrozenStructures, 20);
+ lib5BD4895D_gf_AP_Core_setObjectiveCompleted(gv_objectiveUnfrozenStructures);
+ lib5BD4895D_gf_AP_Core_collectLocationUpdateObjective(gv_LOCATION_ID_20_UNFROZEN_STRUCTURES);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveUnfrozenStructuresComplete_Init () {
+ gt_ObjectiveUnfrozenStructuresComplete = TriggerCreate("gt_ObjectiveUnfrozenStructuresComplete_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Unfrozen Structures Failed
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveUnfrozenStructuresFailed_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);
+ lib5BD4895D_gf_AP_Core_setObjectiveFailed(gv_objectiveUnfrozenStructures);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveUnfrozenStructuresFailed_Init () {
+ gt_ObjectiveUnfrozenStructuresFailed = TriggerCreate("gt_ObjectiveUnfrozenStructuresFailed_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Unit Dies - Update Target Count
+//--------------------------------------------------------------------------------------------------
+bool gt_UnitDiesUpdateTargetCount_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_01_USER))) {
+ return false;
+ }
+
+ if (!(((UnitGetOwner(EventUnit()) == gv_pLAYER_04_PROTOSS) || (UnitGetOwner(EventUnit()) == gv_pLAYER_05_PROTOSS) || (UnitGetOwner(EventUnit()) == gv_pLAYER_06_PROTOSS)))) {
+ return false;
+ }
+
+ if (!((UnitTypeTestAttribute(UnitGetType(EventUnit()), c_unitAttributeStructure) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ gv_protossStructuresRemaining = (UnitCount(null, gv_pLAYER_04_PROTOSS, RegionPlayableMap(), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0) + UnitCount(null, gv_pLAYER_05_PROTOSS, RegionPlayableMap(), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0) + UnitCount(null, gv_pLAYER_06_PROTOSS, RegionPlayableMap(), UnitFilter((1 << c_targetFilterStructure), 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0));
+ if (((gv_protossStructuresRemaining + gv_unfrozenStructureDestroyed) < 20)) {
+ TriggerExecute(gt_ObjectiveUnfrozenStructuresFailed, true, false);
+ TriggerEnable(TriggerGetCurrent(), false);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_UnitDiesUpdateTargetCount_Init () {
+ gt_UnitDiesUpdateTargetCount = TriggerCreate("gt_UnitDiesUpdateTargetCount_Func");
+ TriggerAddEventUnitDied(gt_UnitDiesUpdateTargetCount, null);
+}
+
//--------------------------------------------------------------------------------------------------
// Trigger: Arch Init
//--------------------------------------------------------------------------------------------------
@@ -8847,6 +9036,11 @@ void InitTriggers () {
gt_onDifficultyNormal_Init();
gt_onDifficultyHard_Init();
gt_onDifficultyBrutal_Init();
+ gt_ObjectiveUnfrozenStructuresCreate_Init();
+ gt_ObjectiveUnfrozenStructuresUpdate_Init();
+ gt_ObjectiveUnfrozenStructuresComplete_Init();
+ gt_ObjectiveUnfrozenStructuresFailed_Init();
+ gt_UnitDiesUpdateTargetCount_Init();
gt_ArchInit_Init();
gt_SetMineralCount_Init();
gt_UrsadonMatriarchFirst_Init();
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/Triggers b/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/Triggers
index ad5ff7d72..7e0211965 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/Triggers
+++ b/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/Triggers
@@ -9328,6 +9328,7 @@
+
@@ -9349,6 +9350,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -10721,6 +10742,7 @@
+
@@ -10779,6 +10801,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -58924,6 +58966,7 @@
+
@@ -58938,6 +58981,7 @@
+
LOCATION_ID_FIRST_URSADON_MATRIARCH
@@ -59035,6 +59079,18 @@
8
+
+ LOCATION_ID_20_UNFROZEN_STRUCTURES
+
+
+
+
+
+
+
+ 9
+
+
@@ -59304,6 +59360,1011 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 20
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Show Bonus Objective Floating Text
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 20
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Update the campaign progress for this objective. This must be done whenever an objective's progress changes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 20
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Structure;Missile,Dead,Hidden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 20
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/Triggers.version b/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/Triggers.version
index 72139f657..cb6bfbea1 100644
Binary files a/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/Triggers.version and b/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/Triggers.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
index 13a522820..8e468ba1d 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
+++ b/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
@@ -16,6 +16,7 @@ Param/Expression/0894A15A=~B~
Param/Value/06E759C8=Hatchery
Param/Value/0D114C2C=DIE
Param/Value/11531BDB=Hive Cluster
+Param/Value/137EE48E=Destroy unfrozen structures
Param/Value/155903C2=An uprooted Spine Crawler can move but not attack.Use Root to activate its attack.
Param/Value/18D3B3F7=Nafash's Corpse
Param/Value/1C004C23=Defends base against enemy ground units.
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
index b33f106a4..fb6bede5f 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
+++ b/Maps/ArchipelagoCampaign/HotS/ap_harvest_of_screams.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
@@ -18,6 +18,7 @@ Category/Name/6F59E1F6======== ARCHIPELAGO =======
Category/Name/77AE09E1=Location IDs
Category/Name/885B00E0=Main Objective - Recover Lost Brood
Category/Name/916B6E65=Ursadon Behaviors
+Category/Name/93763330=Bonus Objective - Unfrozen Structures
Category/Name/A1EBD7CD=Campaign Mission
Category/Name/A28636B3======== MAIN =======
Category/Name/A414F9EA=Midgame Cinematic - Recover Brood
@@ -78,6 +79,7 @@ ParamDef/Name/D8C59B29=CHOSEN_PLAYER
ParamDef/Name/EC1C1EE7=UnitGroup
ParamDef/Name/F31B9578=SPAWN_POINT
ParamDef/Name/FD36AF87=CHOSEN_TARGET
+Trigger/Name/00E3A751=Objective Unfrozen Structures Complete
Trigger/Name/01EC1BBE=Objective Ursadon Matriarchs Create
Trigger/Name/020E7BD7=Psi Link Spire Destroyed
Trigger/Name/053608F0=Created Unit
@@ -202,6 +204,7 @@ Trigger/Name/AB4303DB=Fog Change01
Trigger/Name/AB7D94DE=Show Bonus Objective Q
Trigger/Name/AFC46D23=Victory Cinematic
Trigger/Name/B0D73FCD=Ground Ice Collapse 01
+Trigger/Name/B15CCC48=Objective Unfrozen Structures Create
Trigger/Name/B813A521=Objective Find Nafash Corpse Complete
Trigger/Name/B8C9A42A=DEBUG Start Snow
Trigger/Name/B98490AD=Victory Psi Link Spires Destroyed
@@ -219,8 +222,10 @@ Trigger/Name/C4BB1050=Victory Cheat
Trigger/Name/C4D68942=Mid Recover Brood Cinematic
Trigger/Name/CAA64359=Objective Destroy Psi Link Spires Complete
Trigger/Name/CC0B200A=Init 07 Help
+Trigger/Name/CEBFEDBA=Objective Unfrozen Structures Update
Trigger/Name/CF6B28A7=Start First Matriarch Attack
Trigger/Name/D1A46FD5=Objective Find Nafash Corpse Failed
+Trigger/Name/D4BB3B91=Objective Unfrozen Structures Failed
Trigger/Name/D5936341=Victory Sequence
Trigger/Name/D5F691C8=Psi Link Spire Damaged 1
Trigger/Name/D6099DD3=Objective Find Nafash Corpse Create
@@ -232,6 +237,7 @@ Trigger/Name/E0612BDE=Objective Collect Ursadon Essence Create
Trigger/Name/E40E1C53=Initialization
Trigger/Name/E47932DC=Victory Setup
Trigger/Name/E60CEF79=Init 02 Players
+Trigger/Name/EA40F5DD=Unit Dies - Update Target Count
Trigger/Name/EB217ACB=Spire 01 Warp In Defenders
Trigger/Name/EB29C7C1=Transmission: First Ursadon Matriarch Essence Collected Q
Trigger/Name/EC0B8F82=Intro Cleanup
@@ -251,6 +257,8 @@ Variable/Name/08D04A5A=PLAYER_02_RESCUE_ZERG
Variable/Name/0A683C06=DeliverRetreatLine
Variable/Name/0C7D6ECD=VisionGroup01
Variable/Name/0ED856C7=VictoryHiddenUnitGroup
+Variable/Name/1062F1B3=ObjectiveUnfrozenStructures
+Variable/Name/14DF9955=category
Variable/Name/1964D93A=CinematicCompleted
Variable/Name/1B32AD5F=VictoryEndWinHordeSound
Variable/Name/1B8D6A94=RandomLine
@@ -266,6 +274,7 @@ Variable/Name/26A5E8E2=ObjectiveKillUrsadonMatriarchs
Variable/Name/2873CB83=BaseRescued
Variable/Name/2992968B=playerGroup
Variable/Name/2AFE9BF2=currentUnit
+Variable/Name/2E2D4AC8=ProtossStructuresRemaining
Variable/Name/2F9750F7=LargestZergForce
Variable/Name/31895DEC=ObjectiveCollectUrsadonEssence
Variable/Name/32930D6C=LOCATION_ID_NORTHWEST_PSI-LINK_SPIRE
@@ -278,6 +287,7 @@ Variable/Name/38DBA272=currentUnit
Variable/Name/3DDF366B=FlashFreezeDuration_Window
Variable/Name/41E2EC35=OverlordPathingBlockers
Variable/Name/42351E3E=PingMatriarch
+Variable/Name/429FC05D=LOCATION_ID_20_UNFROZEN_STRUCTURES
Variable/Name/43EC99DF=VictoryCinematicCompleted
Variable/Name/45A29DD1=FlashFreezeActive
Variable/Name/4652F608=Ursadon_CenterSouth
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/DocumentHeader b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/DocumentHeader
index 75b207425..a4de781c5 100644
Binary files a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/DocumentHeader and b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/DocumentHeader differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/MapScript.galaxy b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/MapScript.galaxy
index 2c3c0a5f9..ab1872fa9 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/MapScript.galaxy
+++ b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/MapScript.galaxy
@@ -58,6 +58,9 @@ const int gv_LOCATION_ID_SOUTHWEST_FROZEN_ZERG = 6;
const int gv_LOCATION_ID_SOUTHEAST_FROZEN_ZERG = 7;
const int gv_LOCATION_ID_WEST_FROZEN_ZERG = 8;
const int gv_LOCATION_ID_EAST_FROZEN_ZERG = 9;
+const int gv_LOCATION_ID_WEST_LAUNCH_BAY = 10;
+const int gv_LOCATION_ID_CENTER_LAUNCH_BAY = 11;
+const int gv_LOCATION_ID_EAST_LAUNCH_BAY = 12;
//--------------------------------------------------------------------------------------------------
// Global Preset Declarations
@@ -134,6 +137,7 @@ int gv_introSoundCount;
bool gv_victoryCinematicCompleted;
unitgroup gv_victoryHiddenUnitGroup;
unit gv_victoryKerrigan;
+int gv_objectiveBonusDestroyLaunchBays;
void InitGlobals () {
int init_i;
@@ -165,6 +169,7 @@ void InitGlobals () {
gv_cinematicTempUnits = UnitGroupEmpty();
gv_introHydras = UnitGroupEmpty();
gv_victoryHiddenUnitGroup = UnitGroupEmpty();
+ gv_objectiveBonusDestroyLaunchBays = c_invalidObjectiveId;
}
//--------------------------------------------------------------------------------------------------
@@ -307,6 +312,9 @@ trigger gt_onDifficultyCasual;
trigger gt_onDifficultyNormal;
trigger gt_onDifficultyHard;
trigger gt_onDifficultyBrutal;
+trigger gt_ObjectiveDestroyLaunchBaysCreate;
+trigger gt_ObjectiveDestroyLaunchBaysUpdate;
+trigger gt_ObjectiveDestroyLaunchBaysComplete;
trigger gt_ArchInit;
trigger gt_SetMineralCount;
trigger gt_StasisChamberDestroyedEast;
@@ -316,6 +324,9 @@ trigger gt_SouthwestFrozenZerg;
trigger gt_WestFrozenZerg;
trigger gt_SoutheastFrozenZerg;
trigger gt_EastFrozenZerg;
+trigger gt_WestLaunchBay;
+trigger gt_CenterLaunchBay;
+trigger gt_EastLaunchBay;
//--------------------------------------------------------------------------------------------------
// Custom AI Functions
@@ -1574,6 +1585,7 @@ bool gt_StartGameQ_Func (bool testConds, bool runActions) {
TriggerExecute(gt_ObjectiveNoShuttleCanEscapeCreate, true, true);
TriggerExecute(gt_ObjectiveFindFrozenZergBaseCreate, true, true);
TriggerExecute(gt_ObjectiveFindFrozenZergCreate, true, true);
+ TriggerExecute(gt_ObjectiveDestroyLaunchBaysCreate, true, true);
TriggerExecute(gt_CreateWarpConduitPingLeft, true, false);
TriggerQueueExit();
Wait(8.0, c_timeAI);
@@ -4689,6 +4701,7 @@ bool gt_AchievementDestroyShuttleBaysH_Func (bool testConds, bool runActions) {
}
gv_dockingBaysDestroyed += 1;
+ TriggerExecute(gt_ObjectiveDestroyLaunchBaysUpdate, true, false);
if ((libNtve_gf_DifficultyValueInt(0, 1, 1, 1) == 1) && (GameGetMissionTime() < 661.0)) {
libSwaC_gf_CampaignAwardAchievement("Anniversary_ZExpedition02", gv_pLAYER_01_USER);
TriggerDebugOutput(1, StringExternal("Param/Value/4823D88D"), false);
@@ -6087,6 +6100,107 @@ void gt_onDifficultyBrutal_Init () {
gt_onDifficultyBrutal = TriggerCreate("gt_onDifficultyBrutal_Func");
}
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Destroy Launch Bays Create
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveDestroyLaunchBaysCreate_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_category;
+
+ // Automatic Variable Declarations
+ // Variable Initialization
+ lv_category = lib5BD4895D_ge_APObjectiveCategory_Challenge;
+
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ ObjectiveCreate(StringExternal("Param/Value/FEA2AC04"), StringToText(""), c_objectiveStateHidden, false);
+ gv_objectiveBonusDestroyLaunchBays = ObjectiveLastCreated();
+ lib5BD4895D_gf_AP_Core_addCategoryObjectiveWithCounter(gv_objectiveBonusDestroyLaunchBays, lv_category, "", gv_dockingBaysDestroyed, 3, true);
+ lib5BD4895D_gf_AP_Core_associateObjectiveWithLocation(gv_objectiveBonusDestroyLaunchBays, gv_LOCATION_ID_WEST_LAUNCH_BAY);
+ lib5BD4895D_gf_AP_Core_associateObjectiveWithLocation(gv_objectiveBonusDestroyLaunchBays, gv_LOCATION_ID_CENTER_LAUNCH_BAY);
+ lib5BD4895D_gf_AP_Core_associateObjectiveWithLocation(gv_objectiveBonusDestroyLaunchBays, gv_LOCATION_ID_EAST_LAUNCH_BAY);
+ lib5BD4895D_gf_AP_Core_setObjectiveVisibility(gv_objectiveBonusDestroyLaunchBays, true);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveDestroyLaunchBaysCreate_Init () {
+ gt_ObjectiveDestroyLaunchBaysCreate = TriggerCreate("gt_ObjectiveDestroyLaunchBaysCreate_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Destroy Launch Bays Update
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveDestroyLaunchBaysUpdate_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerExecute(gt_ObjectiveDestroyLaunchBaysCreate, true, false);
+ lib5BD4895D_gf_AP_Core_setObjectiveCounter(gv_objectiveBonusDestroyLaunchBays, gv_dockingBaysDestroyed);
+ if ((gv_dockingBaysDestroyed >= 3)) {
+ TriggerEnable(TriggerGetCurrent(), false);
+ TriggerExecute(gt_ObjectiveDestroyLaunchBaysComplete, true, false);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveDestroyLaunchBaysUpdate_Init () {
+ gt_ObjectiveDestroyLaunchBaysUpdate = TriggerCreate("gt_ObjectiveDestroyLaunchBaysUpdate_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Destroy Launch Bays Complete
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveDestroyLaunchBaysComplete_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_ObjectiveDestroyLaunchBaysCreate, true, false);
+ lib5BD4895D_gf_AP_Core_setObjectiveCompleted(gv_objectiveBonusDestroyLaunchBays);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveDestroyLaunchBaysComplete_Init () {
+ gt_ObjectiveDestroyLaunchBaysComplete = TriggerCreate("gt_ObjectiveDestroyLaunchBaysComplete_Func");
+}
+
//--------------------------------------------------------------------------------------------------
// Trigger: Arch Init
//--------------------------------------------------------------------------------------------------
@@ -6392,6 +6506,69 @@ void gt_EastFrozenZerg_Init () {
TriggerAddEventUnitRegion(gt_EastFrozenZerg, null, RegionFromId(3), true);
}
+//--------------------------------------------------------------------------------------------------
+// Trigger: West Launch Bay
+//--------------------------------------------------------------------------------------------------
+bool gt_WestLaunchBay_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ lib5BD4895D_gf_AP_Core_collectLocationUpdateObjective(gv_LOCATION_ID_WEST_LAUNCH_BAY);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_WestLaunchBay_Init () {
+ gt_WestLaunchBay = TriggerCreate("gt_WestLaunchBay_Func");
+ TriggerAddEventUnitDied(gt_WestLaunchBay, UnitRefFromUnit(UnitFromId(22)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Center Launch Bay
+//--------------------------------------------------------------------------------------------------
+bool gt_CenterLaunchBay_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ lib5BD4895D_gf_AP_Core_collectLocationUpdateObjective(gv_LOCATION_ID_CENTER_LAUNCH_BAY);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_CenterLaunchBay_Init () {
+ gt_CenterLaunchBay = TriggerCreate("gt_CenterLaunchBay_Func");
+ TriggerAddEventUnitDied(gt_CenterLaunchBay, UnitRefFromUnit(UnitFromId(151)));
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: East Launch Bay
+//--------------------------------------------------------------------------------------------------
+bool gt_EastLaunchBay_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ lib5BD4895D_gf_AP_Core_collectLocationUpdateObjective(gv_LOCATION_ID_EAST_LAUNCH_BAY);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_EastLaunchBay_Init () {
+ gt_EastLaunchBay = TriggerCreate("gt_EastLaunchBay_Func");
+ TriggerAddEventUnitDied(gt_EastLaunchBay, UnitRefFromUnit(UnitFromId(153)));
+}
+
//--------------------------------------------------------------------------------------------------
// Trigger Initialization
//--------------------------------------------------------------------------------------------------
@@ -6516,6 +6693,9 @@ void InitTriggers () {
gt_onDifficultyNormal_Init();
gt_onDifficultyHard_Init();
gt_onDifficultyBrutal_Init();
+ gt_ObjectiveDestroyLaunchBaysCreate_Init();
+ gt_ObjectiveDestroyLaunchBaysUpdate_Init();
+ gt_ObjectiveDestroyLaunchBaysComplete_Init();
gt_ArchInit_Init();
gt_SetMineralCount_Init();
gt_StasisChamberDestroyedEast_Init();
@@ -6525,6 +6705,9 @@ void InitTriggers () {
gt_WestFrozenZerg_Init();
gt_SoutheastFrozenZerg_Init();
gt_EastFrozenZerg_Init();
+ gt_WestLaunchBay_Init();
+ gt_CenterLaunchBay_Init();
+ gt_EastLaunchBay_Init();
}
//--------------------------------------------------------------------------------------------------
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/Minimap.tga b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/Minimap.tga
index 134d60c69..718bf45e0 100644
Binary files a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/Minimap.tga and b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/Minimap.tga differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/Triggers b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/Triggers
index ad03cb49f..24eaa87f6 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/Triggers
+++ b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/Triggers
@@ -4168,6 +4168,7 @@
+
@@ -4250,6 +4251,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -30381,6 +30402,7 @@
+
@@ -30484,6 +30506,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -39351,10 +39392,12 @@
+
+
@@ -39366,6 +39409,9 @@
+
+
+
LOCATION_ID_EAST_STATIS_CHAMBER
@@ -39475,6 +39521,42 @@
9
+
+ LOCATION_ID_WEST_LAUNCH_BAY
+
+
+
+
+
+
+
+ 10
+
+
+
+ LOCATION_ID_CENTER_LAUNCH_BAY
+
+
+
+
+
+
+
+ 11
+
+
+
+ LOCATION_ID_EAST_LAUNCH_BAY
+
+
+
+
+
+
+
+ 12
+
+
@@ -39629,6 +39711,477 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create the objective
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Update the objective
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -40735,4 +41288,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/Triggers.version b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/Triggers.version
index d72159707..53f52598d 100644
Binary files a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/Triggers.version and b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/Triggers.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
index 846ec0954..bc5d23051 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
+++ b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
@@ -60,5 +60,6 @@ Param/Value/DCC58208=Remaining
Param/Value/E8A25D96=Warp Conduit
Param/Value/EF364743=A Protoss Shuttle has escaped.
Param/Value/FBA8F002=All of your structures have been destroyed.
+Param/Value/FEA2AC04=Destroy the Launch Bays
Unit/Name/ProtossCruiser=Mothership
Unit/Name/ProtossFrigate=Shuttle
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
index 7b55615e8..47f85def1 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
+++ b/Maps/ArchipelagoCampaign/HotS/ap_shoot_the_messenger.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
@@ -9,7 +9,9 @@ Category/Name/31DE5281=Scripted Events
Category/Name/411D580B=Initialization
Category/Name/462AC102======== OBJECTIVE =======
Category/Name/49425B60=Variables
+Category/Name/552A7750=LaunchBays
Category/Name/6152F0DF=Utility
+Category/Name/6CE88EC6=Bonus Objective - Destroy Launch Bays
Category/Name/740FE2F5=Shuttle Launch Transmissions
Category/Name/7E685090=Debug
Category/Name/80B4AE7B=Variables
@@ -108,6 +110,7 @@ Trigger/Name/02F8C83A=Stasis Chamber Destroyed West
Trigger/Name/07C312AB=Rescue Frozen Zerg Expansion
Trigger/Name/09F02B3B=Objective Destroy Stasis Chamber Complete
Trigger/Name/0A899EA8=Victory Q
+Trigger/Name/0F3B675B=East Launch Bay
Trigger/Name/144FB5E6=Intro Hydras Setup
Trigger/Name/19EECBDF=Transmission: First Attack Q
Trigger/Name/1A83CF54=Defeat Cheat
@@ -143,6 +146,7 @@ Trigger/Name/4C5BC8AB=Create Auto Saves
Trigger/Name/4DC35103=Initialization
Trigger/Name/503A28A1=Objective Destroy All Protoss Shuttles Failed
Trigger/Name/5178C5A1=Ice Wall Collapse 01
+Trigger/Name/51AF4FFE=Objective Destroy Launch Bays Update
Trigger/Name/534B103E=Arch Init
Trigger/Name/5AC72920=East Frozen Zerg
Trigger/Name/5B890DF6=Defeat
@@ -168,12 +172,14 @@ Trigger/Name/7F377E16=Transmission: Shuttle Launch 04 Q
Trigger/Name/8051A575=Transmission: Stasis Chamber Destroyed Q
Trigger/Name/81DB2DFB=Objective Destroy All Protoss Shuttles Complete
Trigger/Name/8306511F=Shuttle Send Wave 07
+Trigger/Name/83448B3F=Objective Destroy Launch Bays Create
Trigger/Name/871EFDF6=Shuttle Send Wave 02
Trigger/Name/889EA5A1=West Frozen Zerg
Trigger/Name/89735F5B=Stasis Chamber Destroyed East
Trigger/Name/8F3DD432=Shuttle becomes Cloaked
Trigger/Name/90565F19=Shuttle Escape Warning
Trigger/Name/9136D549=Transmission: Escape Warning Q
+Trigger/Name/9370C3B9=Center Launch Bay
Trigger/Name/939F044D=onDifficultyBrutal
Trigger/Name/9490B1CF=Intro Cinematic
Trigger/Name/966AEC51=AI Give Gas
@@ -211,9 +217,11 @@ Trigger/Name/CC4A7B92=Achievement: Destroy Nexus N/H
Trigger/Name/D0B1FE68=Create Shuttle Reticule
Trigger/Name/D0DFF768=Victory
Trigger/Name/D4B15E15=Southeast Frozen Zerg
+Trigger/Name/D8E08597=West Launch Bay
Trigger/Name/D9E2C0AA=Shuttle Send Wave 05
Trigger/Name/DBB483F7=Activate Warp Conduit Right
Trigger/Name/DE8BE6F0=Discover Frozen Expansion
+Trigger/Name/DEF22029=Objective Destroy Launch Bays Complete
Trigger/Name/EB4E7109=Init 02 Players
Trigger/Name/EB5B4997=Transmission: Stasis Chamber Intro Q
Trigger/Name/ECD3CE37=Intro Spawn Shuttle
@@ -276,6 +284,7 @@ Variable/Name/44C0AA3B=StasisChamberGroup
Variable/Name/45556C42=currentUnit
Variable/Name/511E6194=IntroSoundCount
Variable/Name/53857BD9=LaunchFacGroups_SizeOf
+Variable/Name/560F9488=LOCATION_ID_CENTER_LAUNCH_BAY
Variable/Name/56CDE09F=ShuttleShields
Variable/Name/56DA0A62=Index
Variable/Name/58112AB7=Warp Away Panel
@@ -288,6 +297,7 @@ Variable/Name/701DC7E9=VictoryZerg
Variable/Name/70A24A8D=WarningTransmission
Variable/Name/70A6D4BA=lv_EvacPointIndex
Variable/Name/71AFDBBF=ObjectiveFindFrozenZergBase
+Variable/Name/723B6452=ObjectiveBonusDestroyLaunchBays
Variable/Name/72467E6A=StasisChamberType
Variable/Name/74339DD0=DockingBayUnits
Variable/Name/7B760006=FrozenExpansionProtoss
@@ -309,6 +319,7 @@ Variable/Name/8ED33C92=NumberOfDockingBays
Variable/Name/8EE654C0=pings
Variable/Name/9050173A=PLAYER_04_PROTOSS_RED
Variable/Name/92545BF2=C_Width
+Variable/Name/92CF9969=LOCATION_ID_WEST_LAUNCH_BAY
Variable/Name/937FDCF7=FrozenZergGroupGlobal
Variable/Name/9647AEAA=ShuttleToEscort
Variable/Name/96D916B5=Shuttle
@@ -326,6 +337,7 @@ Variable/Name/ADA2B913=IntroMusicCompleted
Variable/Name/AFA3F007=PLAYER_07_FROZENZERG
Variable/Name/B1FB5E96=StasisChamberPingArray
Variable/Name/B8217ACA=EscortIncrement
+Variable/Name/B8343DB2=LOCATION_ID_EAST_LAUNCH_BAY
Variable/Name/B9550754=ShuttleEscapePoint
Variable/Name/B95B0121=LOCATION_ID_CENTER_STATIS_CHAMBER
Variable/Name/BDBCDE9D=Movement Speed
@@ -338,6 +350,7 @@ Variable/Name/C5C13F2F=ShuttleSpeed
Variable/Name/C6D054DF=lv_i
Variable/Name/C6DA6BB9=ProtossPlayers
Variable/Name/C91BE7B9=Warp Away Value
+Variable/Name/C9E476A1=category
Variable/Name/CBA076BE=LOCATION_ID_WEST_STATIS_CHAMBER
Variable/Name/CF56E621=MapMusicTrack
Variable/Name/CFC1F25B=C_Height
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/DocumentHeader b/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/DocumentHeader
index 8ef40aa30..766448d6e 100644
Binary files a/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/DocumentHeader and b/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/DocumentHeader differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/MapScript.galaxy b/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/MapScript.galaxy
index 3f518e460..84f1b8c00 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/MapScript.galaxy
+++ b/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/MapScript.galaxy
@@ -55,6 +55,7 @@ const int gv_LOCATION_ID_SOUTH_PROXY_PRIMAL_HIVE = 5;
const int gv_LOCATION_ID_EAST_PROXY_PRIMAL_HIVE = 6;
const int gv_LOCATION_ID_SOUTH_MAIN_PRIMAL_HIVE = 7;
const int gv_LOCATION_ID_EAST_MAIN_PRIMAL_HIVE = 8;
+const int gv_LOCATION_ID_FLAWLESS = 9;
//--------------------------------------------------------------------------------------------------
// Global Structures
@@ -182,6 +183,7 @@ bool gv_victoryCinematicCompleted;
unitgroup gv_victoryHiddenUnitGroup;
unit gv_victoryKerrigan;
sound gv_victoryZurvanSound;
+int gv_objective_Flawless;
bool gv_aPBrakkKilled;
void InitGlobals () {
@@ -249,6 +251,7 @@ void InitGlobals () {
gv_introGuardians = UnitGroupEmpty();
gv_introZerglings = UnitGroupEmpty();
gv_victoryHiddenUnitGroup = UnitGroupEmpty();
+ gv_objective_Flawless = c_invalidObjectiveId;
}
//--------------------------------------------------------------------------------------------------
@@ -326,7 +329,7 @@ trigger gt_PlayerStartsDraggingMeat;
trigger gt_MutaliskButtonClicked;
trigger gt_TransmissionTeachMutalisksQ;
trigger gt_BrakkForcesEatingMeatQ;
-trigger gt_BrakkFrocesFightingQuillgarQ;
+trigger gt_BrakkForcesFightingQuillgorQ;
trigger gt_ProgressUpdatePlayerFirstMeatQ;
trigger gt_ProgressUpdatePlayer2MeatsQ;
trigger gt_ProgressUpdatePlayer4MeatsQ;
@@ -431,6 +434,9 @@ trigger gt_onDifficultyCasual;
trigger gt_onDifficultyNormal;
trigger gt_onDifficultyHard;
trigger gt_onDifficultyBrutal;
+trigger gt_ObjectiveFlawlessCreate;
+trigger gt_ObjectiveFlawlessComplete;
+trigger gt_ObjectiveFlawlessFailed;
trigger gt_ArchInit;
trigger gt_SetMineralCount;
trigger gt_EssencePoolAbsorbedCenter;
@@ -687,6 +693,7 @@ void gf_CorpseEatenEnemy (int lp_campIndex) {
libNtve_gf_CreatePingFacingAngle(PlayerGroupAll(), "PingWarning", UnitGetPosition(gv_corpse_PerCamp[lp_campIndex]), ColorWithAlpha(100.00, 0.00, 0.00, 0.00), 4.0, 270.0);
UIAlertPoint("Trigger", gv_pLAYER_01_USER, StringExternal("Param/Value/03E2DC77"), null, UnitGetPosition(gv_corpse_PerCamp[lp_campIndex]));
gv_score_Enemy += 1;
+ TriggerExecute(gt_ObjectiveFlawlessFailed, true, false);
TriggerExecute(gt_ObjectiveQuillgorMeatEnemyUpdate, true, false);
libNtve_gf_KillModel(libHots_gf_ActorForUnit(gv_corpse_PerCamp[lp_campIndex], 1));
TextTagDestroy(libHots_gf_TextTagForUnit(gv_corpse_PerCamp[lp_campIndex], 1));
@@ -2894,6 +2901,11 @@ bool gt_CorpseEatenPlayer_Func (bool testConds, bool runActions) {
lib5BD4895D_gf_AP_Core_collectLocationUpdateObjective(gv_LOCATION_ID_FINISH_FEEDING);
PingDestroy(gv_feedingPointPing);
TriggerExecute(gt_ObjectiveHarvestMeatComplete, true, true);
+ if ((gv_score_Enemy == 0)) {
+ lib5BD4895D_gf_AP_Core_collectLocationUpdateObjective(gv_LOCATION_ID_FLAWLESS);
+ TriggerExecute(gt_ObjectiveFlawlessComplete, true, false);
+ }
+
if ((gv_score_Player >= gv_score_Quota_Player) && (gv_aPBrakkKilled == true)) {
TriggerExecute(gt_VictorySequence, true, false);
}
@@ -3188,9 +3200,9 @@ void gt_BrakkForcesEatingMeatQ_Init () {
}
//--------------------------------------------------------------------------------------------------
-// Trigger: Brakk Froces Fighting Quillgar Q
+// Trigger: Brakk Forces Fighting Quillgor Q
//--------------------------------------------------------------------------------------------------
-bool gt_BrakkFrocesFightingQuillgarQ_Func (bool testConds, bool runActions) {
+bool gt_BrakkForcesFightingQuillgorQ_Func (bool testConds, bool runActions) {
// Variable Declarations
unit lv_quillgarAlpha;
int lv_campIndex;
@@ -3234,6 +3246,7 @@ bool gt_BrakkFrocesFightingQuillgarQ_Func (bool testConds, bool runActions) {
if ((TriggerIsEnabled(gt_ObjectiveQuillgorMeatEnemyCreate) == true)) {
Wait(1.0, c_timeReal);
TriggerExecute(gt_ObjectiveQuillgorMeatEnemyCreate, true, true);
+ TriggerExecute(gt_ObjectiveFlawlessCreate, true, false);
}
TriggerQueueExit();
@@ -3252,8 +3265,8 @@ bool gt_BrakkFrocesFightingQuillgarQ_Func (bool testConds, bool runActions) {
}
//--------------------------------------------------------------------------------------------------
-void gt_BrakkFrocesFightingQuillgarQ_Init () {
- gt_BrakkFrocesFightingQuillgarQ = TriggerCreate("gt_BrakkFrocesFightingQuillgarQ_Func");
+void gt_BrakkForcesFightingQuillgorQ_Init () {
+ gt_BrakkForcesFightingQuillgorQ = TriggerCreate("gt_BrakkForcesFightingQuillgorQ_Func");
}
//--------------------------------------------------------------------------------------------------
@@ -4363,7 +4376,7 @@ bool gt_CorpseBeingEatenQ_Func (bool testConds, bool runActions) {
return true;
}
- TriggerEnable(gt_BrakkFrocesFightingQuillgarQ, false);
+ TriggerEnable(gt_BrakkForcesFightingQuillgorQ, false);
gv_quillgorCampCorpseEatenIndex[lv_campIndex] = 4;
if ((gv_corpse_PingWarning[lv_campIndex] == c_invalidPingId)) {
if ((gv_firstHarvesterIndex > 0) && (gv_aIHarvestCamps[gv_firstHarvesterIndex] == lv_campIndex) && (gv_firstHarvestingWarningPing != c_invalidPingId)) {
@@ -4395,13 +4408,16 @@ bool gt_CorpseBeingEatenQ_Func (bool testConds, bool runActions) {
if (auto1F90468F_val == 1) {
libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Speech);
libSwaC_gf_SendTransmissionCampaign(null, "zMission_Zerus01|Line00094", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
+ TriggerExecute(gt_ObjectiveQuillgorMeatEnemyCreate, true, false);
Wait(2.0, c_timeGame);
+ TriggerExecute(gt_ObjectiveFlawlessCreate, true, false);
libSwaC_gf_SendTransmissionCampaign(gv_tHE_ONE_BRAKK, "zMission_Zerus01|Line00131", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
libSwaC_gf_SendTransmissionCampaign(gv_kerrigan, "zMission_Zerus01|Line00093", c_transmissionDurationAdd, 0.0, true, libSwaC_ge_CampaignTransmissionPortraitOptioins_HidePortraitAfter, libSwaC_ge_CampaignTransmissionCueSoundOptions_DefaultCueSoundBehavior);
libSwaC_gf_SetAllSoundChannelVolumesCampaign(libSwaC_ge_VolumeChannelModeCampaign_Game);
if ((TriggerIsEnabled(gt_ObjectiveQuillgorMeatEnemyCreate) == true)) {
Wait(1.0, c_timeReal);
TriggerExecute(gt_ObjectiveQuillgorMeatEnemyCreate, true, true);
+ TriggerExecute(gt_ObjectiveFlawlessCreate, true, false);
}
}
@@ -5461,7 +5477,7 @@ bool gt_AIQuillgorHarvesterInCombat_Func (bool testConds, bool runActions) {
if ((((lv_attacker != null) && ((UnitGetType(lv_attacker) == "SpaceCowSmall") || (UnitGetType(lv_attacker) == "SpaceCowMedium"))) || ((EventUnit() != null) && ((UnitGetType(EventUnit()) == "SpaceCowSmall") || (UnitGetType(EventUnit()) == "SpaceCowMedium"))))) {
if ((gv_firstHarvesterIndex == 0)) {
gv_firstHarvesterIndex = lv_harvestIndex;
- TriggerExecute(gt_BrakkFrocesFightingQuillgarQ, true, false);
+ TriggerExecute(gt_BrakkForcesFightingQuillgorQ, true, false);
}
}
@@ -8185,6 +8201,99 @@ void gt_onDifficultyBrutal_Init () {
gt_onDifficultyBrutal = TriggerCreate("gt_onDifficultyBrutal_Func");
}
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Flawless Create
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveFlawlessCreate_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_category;
+
+ // Automatic Variable Declarations
+ // Variable Initialization
+ lv_category = lib5BD4895D_ge_APObjectiveCategory_Challenge;
+
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerEnable(TriggerGetCurrent(), false);
+ ObjectiveCreate(StringExternal("Param/Value/FE0FDD54"), StringToText(""), c_objectiveStateHidden, false);
+ gv_objective_Flawless = ObjectiveLastCreated();
+ lib5BD4895D_gf_AP_Core_addCategoryObjectiveSimple(gv_objective_Flawless, lv_category, true);
+ lib5BD4895D_gf_AP_Core_associateObjectiveWithLocation(gv_objective_Flawless, gv_LOCATION_ID_FLAWLESS);
+ lib5BD4895D_gf_AP_Core_setObjectiveVisibility(gv_objective_Flawless, true);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveFlawlessCreate_Init () {
+ gt_ObjectiveFlawlessCreate = TriggerCreate("gt_ObjectiveFlawlessCreate_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Flawless Complete
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveFlawlessComplete_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ TriggerExecute(gt_ObjectiveFlawlessCreate, true, true);
+ lib5BD4895D_gf_AP_Core_setObjectiveCompleted(gv_objective_Flawless);
+ Wait(libSwaC_gv_campaignObjectiveDelay, c_timeReal);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveFlawlessComplete_Init () {
+ gt_ObjectiveFlawlessComplete = TriggerCreate("gt_ObjectiveFlawlessComplete_Func");
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: Objective Flawless Failed
+//--------------------------------------------------------------------------------------------------
+bool gt_ObjectiveFlawlessFailed_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);
+ lib5BD4895D_gf_AP_Core_setObjectiveFailed(gv_objective_Flawless);
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void gt_ObjectiveFlawlessFailed_Init () {
+ gt_ObjectiveFlawlessFailed = TriggerCreate("gt_ObjectiveFlawlessFailed_Func");
+}
+
//--------------------------------------------------------------------------------------------------
// Trigger: Arch Init
//--------------------------------------------------------------------------------------------------
@@ -8524,7 +8633,7 @@ void InitTriggers () {
gt_MutaliskButtonClicked_Init();
gt_TransmissionTeachMutalisksQ_Init();
gt_BrakkForcesEatingMeatQ_Init();
- gt_BrakkFrocesFightingQuillgarQ_Init();
+ gt_BrakkForcesFightingQuillgorQ_Init();
gt_ProgressUpdatePlayerFirstMeatQ_Init();
gt_ProgressUpdatePlayer2MeatsQ_Init();
gt_ProgressUpdatePlayer4MeatsQ_Init();
@@ -8629,6 +8738,9 @@ void InitTriggers () {
gt_onDifficultyNormal_Init();
gt_onDifficultyHard_Init();
gt_onDifficultyBrutal_Init();
+ gt_ObjectiveFlawlessCreate_Init();
+ gt_ObjectiveFlawlessComplete_Init();
+ gt_ObjectiveFlawlessFailed_Init();
gt_ArchInit_Init();
gt_SetMineralCount_Init();
gt_EssencePoolAbsorbedCenter_Init();
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/Triggers b/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/Triggers
index 9c2fb8590..ade964f0c 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/Triggers
+++ b/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/Triggers
@@ -7836,6 +7836,7 @@
+
@@ -7878,6 +7879,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -8387,6 +8444,7 @@
+
@@ -8567,6 +8625,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -10387,6 +10464,7 @@
+
@@ -10424,6 +10502,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -23627,7 +23725,9 @@
+
+
@@ -23688,6 +23788,26 @@
zMission_Zerus01|Line00094
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -23703,6 +23823,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -23799,6 +23939,7 @@
+
@@ -23836,6 +23977,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -64115,6 +64276,7 @@
+
@@ -64136,6 +64298,7 @@
+
LOCATION_ID_CENTER_ESSENCE_POOL
@@ -64233,6 +64396,18 @@
8
+
+ LOCATION_ID_FLAWLESS
+
+
+
+
+
+
+
+ 9
+
+
@@ -64317,6 +64492,338 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create the objective
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ Ensure that the objective exists
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Update the objective
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/Triggers.version b/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/Triggers.version
index 8226ce5ee..98e0f3ef0 100644
Binary files a/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/Triggers.version and b/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/Triggers.version differ
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
index 17e0e6053..698f6d8db 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
+++ b/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/enUS.SC2Data/LocalizedData/GameStrings.txt
@@ -60,6 +60,7 @@ Param/Value/DBA07935=Quillgor Biomass
Param/Value/DCBCB90F=Enables air units and upgrades.
Param/Value/DF2D61EA=Quillgor Corpse
Param/Value/F977BE30=Order a Drone to carry this Biomass to the Ancient One.
+Param/Value/FE0FDD54=Brakk Can't Destroy ANY Quillgor Biomass
Unit/Name/SpaceCowCorpse=Quillgor Corpse
Unit/Name/SpaceCowMedium=Quillgor Alpha
Unit/Name/SpaceCowSmall=Quillgor
diff --git a/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt b/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
index ac6d7a3f7..e61c96822 100644
--- a/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
+++ b/Maps/ArchipelagoCampaign/HotS/ap_waking_the_ancient.SC2Map/enUS.SC2Data/LocalizedData/TriggerStrings.txt
@@ -7,6 +7,7 @@ Category/Name/379071B2=Location IDs
Category/Name/420BA6AA=Primary Objective - Meat Eaten by Enemy
Category/Name/4C220BE4=Dehaka
Category/Name/508DA2A6=Debug
+Category/Name/515CDBDD=Bonus Objective - Flawless
Category/Name/59363045=Cinematic Variables
Category/Name/5967B39C=Initialization
Category/Name/639B4110=Starting Sequence
@@ -237,7 +238,7 @@ Trigger/Name/8D9D99F6=Initialization
Trigger/Name/8E4E2ACA=Start Game Q
Trigger/Name/8FF0DA58=Intro Setup
Trigger/Name/9665E46B=Reveal Meat Areas
-Trigger/Name/9757D847=Brakk Froces Fighting Quillgar Q
+Trigger/Name/9757D847=Brakk Forces Fighting Quillgor Q
Trigger/Name/98201E13=Progress Update - Player - First Meat Q
Trigger/Name/99D4BD83=AI - Unit Enter AI Retreat Region
Trigger/Name/A067D4A3=Objective Harvest Meat Complete
@@ -263,6 +264,7 @@ Trigger/Name/C0031886=Progress Update - Enemy Meats Q
Trigger/Name/C1FD11CB=Mid Q
Trigger/Name/C5506446=Achievement: Meat Lost H
Trigger/Name/C8EE5937=Set Spire Mouseover
+Trigger/Name/CB234CFC=Objective Flawless Complete
Trigger/Name/CEB2243E=Victory Cinematic - Camera Shakes
Trigger/Name/D4C0B3B5=Largest Zerg Force
Trigger/Name/D7FA801B=onDifficultyHard
@@ -270,6 +272,7 @@ Trigger/Name/D9081BFF=Set Mineral Count
Trigger/Name/D9142D87=Essence Pool Intro Q
Trigger/Name/DE1C6C34=Primal Hive Warning Q
Trigger/Name/E0BCBF40=Mid Music
+Trigger/Name/E20FFAC9=Objective Flawless Create
Trigger/Name/E2A570E5=Spore Ray Patrols
Trigger/Name/E43FD229=Defeat Cheat
Trigger/Name/E465EDAD=Transmission: Brakk Kills Stuff! Q
@@ -287,6 +290,7 @@ Trigger/Name/F56E1B1C=East Proxy Hive
Trigger/Name/F6335092=AI - Send Harvest Waves
Trigger/Name/F84B7E4C=Transmission: Brakk Death Q
Trigger/Name/FA176221=Arch Init
+Trigger/Name/FBF21AC9=Objective Flawless Failed
Trigger/Name/FC0C1F67=Intro Cinematic
Variable/Name/00E7EAC8=Corpse
Variable/Name/01292423=VictoryKerrigan
@@ -299,6 +303,7 @@ Variable/Name/0866828C=Dehaka Encounter Count
Variable/Name/08BC4986=QuillgorCampCorpseHarvestedByDrone
Variable/Name/09757A57=CampIndex
Variable/Name/097FF5C7=CampIndex
+Variable/Name/09A6E936=Objective_Flawless
Variable/Name/0A1720BA=LOCATION_ID_FINISH_FEEDING
Variable/Name/0AA60DA0=SPORE_RAY_MAX_COUNT
Variable/Name/0C30374D=QuillgorCampSpawned
@@ -398,6 +403,7 @@ Variable/Name/6B8BE065=Distance
Variable/Name/6BFD465C=IntroQuillgor
Variable/Name/6C67ABFA=LOCATION_ID_SOUTH_ESSENCE_POOL
Variable/Name/6C708A53=BrakkStartedDestroyingMeat
+Variable/Name/6E256D91=category
Variable/Name/6E4D423A=QuillgorCampRevealer
Variable/Name/6EC017BE=MeatDialogProgressBar
Variable/Name/6EFB7002=i
@@ -418,6 +424,7 @@ Variable/Name/7961F3C5=CinematicBrakk
Variable/Name/79C817DC=CinematicTempUnits
Variable/Name/7AF0A0AF=AttackGroup
Variable/Name/7EFF9B6A=FadeDuration
+Variable/Name/7F97C24D=LOCATION_ID_FLAWLESS
Variable/Name/800087EE=P03_ZERG_BULLIES
Variable/Name/8010CE7D=VictoryCinematicCompleted
Variable/Name/8025A3BD=CampRegion