diff --git a/Mods/ArchipelagoCore.SC2Mod/Base.SC2Data/Lib5BD4895D.galaxy b/Mods/ArchipelagoCore.SC2Mod/Base.SC2Data/Lib5BD4895D.galaxy
index 74aa96d95..85ce56fc8 100644
--- a/Mods/ArchipelagoCore.SC2Mod/Base.SC2Data/Lib5BD4895D.galaxy
+++ b/Mods/ArchipelagoCore.SC2Mod/Base.SC2Data/Lib5BD4895D.galaxy
@@ -51,6 +51,7 @@ void lib5BD4895D_InitVariables () {
for (init_i = 0; init_i <= 7; init_i += 1) {
lib5BD4895D_gv_aP_Core_rainbowColors[init_i] = 1;
}
+ lib5BD4895D_gv_aP_Core_tradeFlavorName = "Void Trade";
lib5BD4895D_gv_aP_Core_objectiveUsedCategories = 4;
lib5BD4895D_gv_aP_Core_objectiveDefaultTimer = TimerCreate();
lib5BD4895D_gv_aP_Core_objectivePanel.lv_dialogPanel = c_invalidDialogControlId;
@@ -1799,6 +1800,164 @@ void lib5BD4895D_gt_AP_Core_rainbowColorsInit_Init () {
TriggerAddEventMapInit(lib5BD4895D_gt_AP_Core_rainbowColorsInit);
}
+//--------------------------------------------------------------------------------------------------
+// Trigger: AP_Core_tradeStart
+//--------------------------------------------------------------------------------------------------
+bool lib5BD4895D_gt_AP_Core_tradeStart_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((lib5BD4895D_gv_aP_Core_tradeUnit != null))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ if ((libNtve_gf_TriggeringProgressUnitType() == lib5BD4895D_gv_aP_Core_tradeSendUnitType)) {
+ if ((UnitGroupCount(UnitCargoGroup(lib5BD4895D_gv_aP_Core_tradeUnit), c_unitCountAlive) == 0)) {
+ UnitIssueOrder(lib5BD4895D_gv_aP_Core_tradeUnit, Order(AbilityCommand("stop", 0)), c_orderQueueReplace);
+ }
+
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void lib5BD4895D_gt_AP_Core_tradeStart_Init () {
+ lib5BD4895D_gt_AP_Core_tradeStart = TriggerCreate("lib5BD4895D_gt_AP_Core_tradeStart_Func");
+ TriggerAddEventUnitTrainProgress(lib5BD4895D_gt_AP_Core_tradeStart, UnitRefFromVariable("lib5BD4895D_gv_aP_Core_tradeUnit"), c_unitProgressStageStart);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: AP_Core_tradeFail
+//--------------------------------------------------------------------------------------------------
+bool lib5BD4895D_gt_AP_Core_tradeFail_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ string lv_message;
+
+ // Automatic Variable Declarations
+ // Variable Initialization
+ lv_message = StringSub(EventChatMessage(false), 11, StringLength(EventChatMessage(false)));
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ lib5BD4895D_gf_sendchatmessage(EventPlayer(), StringSub(EventChatMessage(false), 11, StringLength(EventChatMessage(false))));
+ if ((lib5BD4895D_gv_aP_Core_tradeUnit != null) && (UnitIsAlive(lib5BD4895D_gv_aP_Core_tradeUnit) == true) && (UnitOrder(lib5BD4895D_gv_aP_Core_tradeUnit, 0) != null)) {
+ UnitIssueOrder(lib5BD4895D_gv_aP_Core_tradeUnit, Order(AbilityCommand("stop", 0)), c_orderQueueReplace);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void lib5BD4895D_gt_AP_Core_tradeFail_Init () {
+ lib5BD4895D_gt_AP_Core_tradeFail = TriggerCreate("lib5BD4895D_gt_AP_Core_tradeFail_Func");
+ TriggerAddEventChatMessage(lib5BD4895D_gt_AP_Core_tradeFail, c_playerAny, "?TradeFail", false);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: AP_Core_tradeSendSuccess
+//--------------------------------------------------------------------------------------------------
+bool lib5BD4895D_gt_AP_Core_tradeSendSuccess_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ unitgroup autoE5F28EA7_g;
+ int autoE5F28EA7_u;
+ unit autoE5F28EA7_var;
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ lib5BD4895D_gf_sendchatmessage(EventPlayer(), StringSub(EventChatMessage(false), 14, StringLength(EventChatMessage(false))));
+ if ((lib5BD4895D_gv_aP_Core_tradeUnit != null) && (UnitIsAlive(lib5BD4895D_gv_aP_Core_tradeUnit) == true) && (UnitOrder(lib5BD4895D_gv_aP_Core_tradeUnit, 0) != null)) {
+ autoE5F28EA7_g = UnitCargoGroup(lib5BD4895D_gv_aP_Core_tradeUnit);
+ autoE5F28EA7_u = UnitGroupCount(autoE5F28EA7_g, c_unitCountAll);
+ for (;; autoE5F28EA7_u -= 1) {
+ autoE5F28EA7_var = UnitGroupUnitFromEnd(autoE5F28EA7_g, autoE5F28EA7_u);
+ if (autoE5F28EA7_var == null) { break; }
+ UnitRemove(autoE5F28EA7_var);
+ }
+ UnitIssueOrder(lib5BD4895D_gv_aP_Core_tradeUnit, Order(AbilityCommand("stop", 0)), c_orderQueueReplace);
+ }
+
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void lib5BD4895D_gt_AP_Core_tradeSendSuccess_Init () {
+ lib5BD4895D_gt_AP_Core_tradeSendSuccess = TriggerCreate("lib5BD4895D_gt_AP_Core_tradeSendSuccess_Func");
+ TriggerAddEventChatMessage(lib5BD4895D_gt_AP_Core_tradeSendSuccess, c_playerAny, "?TradeSuccess", false);
+}
+
+//--------------------------------------------------------------------------------------------------
+// Trigger: AP_Core_tradeReceiveSuccess
+//--------------------------------------------------------------------------------------------------
+bool lib5BD4895D_gt_AP_Core_tradeReceiveSuccess_Func (bool testConds, bool runActions) {
+ // Variable Declarations
+ int lv_refunds;
+ int lv_word;
+ string lv_unitType;
+ int lv_unitCount;
+ int lv_totalCount;
+ int lv_mineralCost;
+ int lv_vespeneCost;
+
+ // Automatic Variable Declarations
+ // Variable Initialization
+ lv_refunds = StringToInt(StringWord(EventChatMessage(false), 2));
+ lv_word = 3;
+ lv_mineralCost = UnitTypeGetCost(lib5BD4895D_gv_aP_Core_tradeReceiveUnitType, c_unitCostMinerals);
+ lv_vespeneCost = UnitTypeGetCost(lib5BD4895D_gv_aP_Core_tradeReceiveUnitType, c_unitCostVespene);
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ if ((lib5BD4895D_gv_aP_Core_tradeUnit != null) && (UnitIsAlive(lib5BD4895D_gv_aP_Core_tradeUnit) == true) && (UnitOrder(lib5BD4895D_gv_aP_Core_tradeUnit, 0) != null)) {
+ UnitIssueOrder(lib5BD4895D_gv_aP_Core_tradeUnit, Order(AbilityCommand("stop", 0)), c_orderQueueReplace);
+ while ((StringWord(EventChatMessage(false), lv_word) != null)) {
+ lv_unitType = (StringWord(EventChatMessage(false), lv_word));
+ lv_unitCount = StringToInt(StringWord(EventChatMessage(false), (lv_word + 1)));
+ lv_totalCount = (lv_totalCount + lv_unitCount);
+ UnitCargoCreate(lib5BD4895D_gv_aP_Core_tradeUnit, lv_unitType, lv_unitCount);
+ lv_word = (lv_word + 2);
+ }
+ PlayerModifyPropertyInt(UnitGetOwner(lib5BD4895D_gv_aP_Core_tradeUnit), c_playerPropMinerals, c_playerPropOperSubtract, (lv_mineralCost * lv_totalCount));
+ PlayerModifyPropertyInt(UnitGetOwner(lib5BD4895D_gv_aP_Core_tradeUnit), c_playerPropVespene, c_playerPropOperSubtract, (lv_vespeneCost * lv_totalCount));
+ if ((lv_totalCount == 0)) {
+ lib5BD4895D_gf_sendchatmessage(EventPlayer(), (lib5BD4895D_gv_aP_Core_tradeFlavorName + " failed: No units were found. Trade cost refunded."));
+ }
+ else {
+ if ((lv_refunds > 0)) {
+ lib5BD4895D_gf_sendchatmessage(EventPlayer(), (lib5BD4895D_gv_aP_Core_tradeFlavorName + " partially successful: " + IntToString(lv_totalCount) + " units received, " + IntToString(lv_refunds) + " refunded."));
+ }
+ else {
+ lib5BD4895D_gf_sendchatmessage(EventPlayer(), (lib5BD4895D_gv_aP_Core_tradeFlavorName + " successful: Units received!"));
+ }
+ }
+ }
+ else {
+ lib5BD4895D_gf_sendchatmessage(EventPlayer(), (lib5BD4895D_gv_aP_Core_tradeFlavorName + " successful, but the trading structure couldn't be found. The received units are lost to the void..."));
+ }
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void lib5BD4895D_gt_AP_Core_tradeReceiveSuccess_Init () {
+ lib5BD4895D_gt_AP_Core_tradeReceiveSuccess = TriggerCreate("lib5BD4895D_gt_AP_Core_tradeReceiveSuccess_Func");
+ TriggerAddEventChatMessage(lib5BD4895D_gt_AP_Core_tradeReceiveSuccess, c_playerAny, "?Trade ", false);
+}
+
//--------------------------------------------------------------------------------------------------
// Trigger: AP_Core_giveStartingResources
//--------------------------------------------------------------------------------------------------
@@ -1998,6 +2157,10 @@ void lib5BD4895D_InitTriggers () {
lib5BD4895D_gt_AP_Core_keepControllerAlive_Init();
lib5BD4895D_gt_updatechatbox_Init();
lib5BD4895D_gt_AP_Core_rainbowColorsInit_Init();
+ lib5BD4895D_gt_AP_Core_tradeStart_Init();
+ lib5BD4895D_gt_AP_Core_tradeFail_Init();
+ lib5BD4895D_gt_AP_Core_tradeSendSuccess_Init();
+ lib5BD4895D_gt_AP_Core_tradeReceiveSuccess_Init();
lib5BD4895D_gt_AP_Core_giveStartingResources_Init();
lib5BD4895D_gt_AP_Core_setFactionColorHandler_Init();
lib5BD4895D_gt_AP_Triggers_loadFinished_Init();
diff --git a/Mods/ArchipelagoCore.SC2Mod/Base.SC2Data/Lib5BD4895D_h.galaxy b/Mods/ArchipelagoCore.SC2Mod/Base.SC2Data/Lib5BD4895D_h.galaxy
index 9ab1c8de4..6b70352c5 100644
--- a/Mods/ArchipelagoCore.SC2Mod/Base.SC2Data/Lib5BD4895D_h.galaxy
+++ b/Mods/ArchipelagoCore.SC2Mod/Base.SC2Data/Lib5BD4895D_h.galaxy
@@ -93,6 +93,10 @@ int lib5BD4895D_gv_aP_Core_controller2Status;
lib5BD4895D_gs_chatbox lib5BD4895D_gv_chatbox;
int[8] lib5BD4895D_gv_aP_Core_rainbowColors;
bool[21] lib5BD4895D_gv_aP_Core_rainbowKiller;
+string lib5BD4895D_gv_aP_Core_tradeFlavorName;
+unit lib5BD4895D_gv_aP_Core_tradeUnit;
+string lib5BD4895D_gv_aP_Core_tradeSendUnitType;
+string lib5BD4895D_gv_aP_Core_tradeReceiveUnitType;
int lib5BD4895D_gv_aP_Core_BonusMinerals;
int lib5BD4895D_gv_aP_Core_BonusVespene;
int lib5BD4895D_gv_aP_Core_objectiveUsedCategories;
@@ -164,6 +168,10 @@ trigger lib5BD4895D_gt_AP_Core_dontHideController;
trigger lib5BD4895D_gt_AP_Core_keepControllerAlive;
trigger lib5BD4895D_gt_updatechatbox;
trigger lib5BD4895D_gt_AP_Core_rainbowColorsInit;
+trigger lib5BD4895D_gt_AP_Core_tradeStart;
+trigger lib5BD4895D_gt_AP_Core_tradeFail;
+trigger lib5BD4895D_gt_AP_Core_tradeSendSuccess;
+trigger lib5BD4895D_gt_AP_Core_tradeReceiveSuccess;
trigger lib5BD4895D_gt_AP_Core_giveStartingResources;
trigger lib5BD4895D_gt_AP_Core_setFactionColorHandler;
trigger lib5BD4895D_gt_AP_Triggers_loadFinished;
diff --git a/Mods/ArchipelagoCore.SC2Mod/DocumentHeader b/Mods/ArchipelagoCore.SC2Mod/DocumentHeader
index 5de81d92f..2b4af860a 100644
Binary files a/Mods/ArchipelagoCore.SC2Mod/DocumentHeader and b/Mods/ArchipelagoCore.SC2Mod/DocumentHeader differ
diff --git a/Mods/ArchipelagoCore.SC2Mod/Triggers b/Mods/ArchipelagoCore.SC2Mod/Triggers
index 382f79c74..29c1a2984 100644
--- a/Mods/ArchipelagoCore.SC2Mod/Triggers
+++ b/Mods/ArchipelagoCore.SC2Mod/Triggers
@@ -8,6 +8,7 @@
+
@@ -4008,6 +4009,1556 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Flavor name for the trade system used in messages
+
+
+
+
+
+
+
+
+
+ Void Trade
+
+
+
+
+ The unit that performs the trade
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Dummy unit type for sending, to differentiate sending and receiving
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Dummy unit type for receiving 1 unit, to calculate trade cost
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel empty sends
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ stop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 11
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ?TradeFail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 11
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ stop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ?TradeSuccess
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 14
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ stop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Message format:
+ ?Trade <refunds> <unit1> <count1> <unit2> <count2>...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ?Trade
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ stop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ successful, but the trading structure couldn't be found. The received units are lost to the void...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Canceling refunds the training cost, so we need to manually reduce player resources
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ successful: Units received!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ partially successful:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ units received,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ refunded.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ failed: No units were found. Trade cost refunded.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
diff --git a/Mods/ArchipelagoCore.SC2Mod/enUS.SC2Data/LocalizedData/TriggerStrings.txt b/Mods/ArchipelagoCore.SC2Mod/enUS.SC2Data/LocalizedData/TriggerStrings.txt
index bd00b3c4e..b631fce0d 100644
--- a/Mods/ArchipelagoCore.SC2Mod/enUS.SC2Data/LocalizedData/TriggerStrings.txt
+++ b/Mods/ArchipelagoCore.SC2Mod/enUS.SC2Data/LocalizedData/TriggerStrings.txt
@@ -5,15 +5,18 @@ Category/Name/lib_5BD4895D_1FC64FD6=Setters
Category/Name/lib_5BD4895D_25EB2476=ArchipelagoStatus
Category/Name/lib_5BD4895D_2AD38C27=RainbowColorManager
Category/Name/lib_5BD4895D_2E944E7E=BotCommands
+Category/Name/lib_5BD4895D_3DAA7149=Variables
Category/Name/lib_5BD4895D_480A0D7B=FactionUtil
Category/Name/lib_5BD4895D_56C6DC4E=ObjectiveUtil
Category/Name/lib_5BD4895D_5B1940FF=triggers
Category/Name/lib_5BD4895D_736F700D=MapLoadHelper
Category/Name/lib_5BD4895D_74DC05F5=actions
Category/Name/lib_5BD4895D_76AA9C78=Factions
+Category/Name/lib_5BD4895D_7C761837=Handlers
Category/Name/lib_5BD4895D_80F5776F=vars
Category/Name/lib_5BD4895D_81E5C31C=Event
Category/Name/lib_5BD4895D_85E03602=Variables
+Category/Name/lib_5BD4895D_97D75126=Trade
Category/Name/lib_5BD4895D_983E707E=Variables
Category/Name/lib_5BD4895D_A6ED77DD=ArchipelagoController
Category/Name/lib_5BD4895D_BA176EF9=Util
@@ -202,13 +205,17 @@ Structure/Name/lib_5BD4895D_EB158E44=AP Objective
Trigger/Name/lib_5BD4895D_09118D7A=AP_Core_mapLoadStart
Trigger/Name/lib_5BD4895D_17817B71=AP_Core_controllerInit
Trigger/Name/lib_5BD4895D_4863529C=AP_Triggers_loadFinished
+Trigger/Name/lib_5BD4895D_51223CB4=AP_Core_tradeStart
Trigger/Name/lib_5BD4895D_648A0E6A=AP_Core_clearChat
Trigger/Name/lib_5BD4895D_7D74620C=AP_Core_objectiveTimerUpdate
Trigger/Name/lib_5BD4895D_9016353C=AP_Triggers_uncollectedLocations
Trigger/Name/lib_5BD4895D_A7AF36D4=update chatbox
+Trigger/Name/lib_5BD4895D_ADD4E109=AP_Core_tradeFail
Trigger/Name/lib_5BD4895D_AF628176=AP_Core_keepControllerAlive
Trigger/Name/lib_5BD4895D_B8E7CE01=AP_Core_dontHideController
+Trigger/Name/lib_5BD4895D_C6CCBDE1=AP_Core_tradeSendSuccess
Trigger/Name/lib_5BD4895D_CB983523=AP_Core_mapLoadEnd
+Trigger/Name/lib_5BD4895D_D41CD2CB=AP_Core_tradeReceiveSuccess
Trigger/Name/lib_5BD4895D_E0A7D8B1=AP_Core_setFactionColorHandler
Trigger/Name/lib_5BD4895D_F51822D9=AP_Core_rainbowColorsInit
Trigger/Name/lib_5BD4895D_FE6C5704=AP_Core_giveStartingResources
@@ -237,6 +244,7 @@ Variable/Name/lib_5BD4895D_1BBB4FF6=AP_Core_locationInit
Variable/Name/lib_5BD4895D_1C951515=timer
Variable/Name/lib_5BD4895D_1CD736EA=chat label
Variable/Name/lib_5BD4895D_1CDEA78A=objective index
+Variable/Name/lib_5BD4895D_1E14C21E=unitCount
Variable/Name/lib_5BD4895D_1E5BE914=Label
Variable/Name/lib_5BD4895D_1E719B54=objective index
Variable/Name/lib_5BD4895D_1FEE1ECF=AP_Core_locationCollectable
@@ -247,12 +255,14 @@ Variable/Name/lib_5BD4895D_28888CE6=main frame
Variable/Name/lib_5BD4895D_29B396A1=location index
Variable/Name/lib_5BD4895D_29D70F3C=upgrade100SupplyCount
Variable/Name/lib_5BD4895D_2C61B942=index
+Variable/Name/lib_5BD4895D_2CA48070=AP_Core_tradeUnit
Variable/Name/lib_5BD4895D_2CC5C3EA=timer copy index
Variable/Name/lib_5BD4895D_2F3BD71E=label
Variable/Name/lib_5BD4895D_2FFAEE02=AP_Core_locations_sent
Variable/Name/lib_5BD4895D_30F2A4CA=finished strip
Variable/Name/lib_5BD4895D_3168DD46=count
Variable/Name/lib_5BD4895D_33276991=has timer
+Variable/Name/lib_5BD4895D_33289DB2=unitType
Variable/Name/lib_5BD4895D_35877E75=visual index
Variable/Name/lib_5BD4895D_361DCA91=counter text
Variable/Name/lib_5BD4895D_376CFBCD=Objective
@@ -273,12 +283,14 @@ Variable/Name/lib_5BD4895D_46B093EA=category index
Variable/Name/lib_5BD4895D_470AA1C8=rolling index
Variable/Name/lib_5BD4895D_47322150=AP_Core_Faction_PRIMAL_ZERG
Variable/Name/lib_5BD4895D_4963C962=objective index
+Variable/Name/lib_5BD4895D_49CB76EF=totalCount
Variable/Name/lib_5BD4895D_4EA4ACFD=currentUnit
Variable/Name/lib_5BD4895D_4FAF2793=AP_Core_chatbox_offsetY
Variable/Name/lib_5BD4895D_523B020E=location index
Variable/Name/lib_5BD4895D_532D0706=color
Variable/Name/lib_5BD4895D_54145667=objective count
Variable/Name/lib_5BD4895D_54EDC48F=Category
+Variable/Name/lib_5BD4895D_561F711C=message
Variable/Name/lib_5BD4895D_568E08CE=color
Variable/Name/lib_5BD4895D_56C8A09F=faction
Variable/Name/lib_5BD4895D_58035D35=AP_Core_objectiveUsedCategories
@@ -297,6 +309,7 @@ Variable/Name/lib_5BD4895D_68E464DE=extra lines
Variable/Name/lib_5BD4895D_696D7EC0=value
Variable/Name/lib_5BD4895D_69AA996C=CounterMax
Variable/Name/lib_5BD4895D_6C88573E=category index
+Variable/Name/lib_5BD4895D_6C90BDB7=AP_Core_tradeReceiveUnitType
Variable/Name/lib_5BD4895D_6E2B5149=category index
Variable/Name/lib_5BD4895D_6E72D461=AP_Core_BonusMinerals
Variable/Name/lib_5BD4895D_6E945090=colorIndex
@@ -354,6 +367,8 @@ Variable/Name/lib_5BD4895D_B4D40DF3=visual rolling index
Variable/Name/lib_5BD4895D_B66911A5=AP_Core_blackScreen
Variable/Name/lib_5BD4895D_B7A41851=currentPlayer
Variable/Name/lib_5BD4895D_B7A49EF1=timer index
+Variable/Name/lib_5BD4895D_B85076EC=word
+Variable/Name/lib_5BD4895D_B91B0753=AP_Core_tradeSendUnitType
Variable/Name/lib_5BD4895D_B9605059=Name
Variable/Name/lib_5BD4895D_BB563F83=timer rolling index
Variable/Name/lib_5BD4895D_BDB6AADE=AP_Core_controller
@@ -367,6 +382,7 @@ Variable/Name/lib_5BD4895D_CB377F39=Has Timer
Variable/Name/lib_5BD4895D_CBC3AF45=objective index
Variable/Name/lib_5BD4895D_CC25FB18=AP_Core_primalZergColor
Variable/Name/lib_5BD4895D_CF227E57=currentPlayer
+Variable/Name/lib_5BD4895D_CFF1F80D=refunds
Variable/Name/lib_5BD4895D_D1226431=btn x offset
Variable/Name/lib_5BD4895D_D12D8261=objective index
Variable/Name/lib_5BD4895D_D3B2C226=finished
@@ -382,7 +398,10 @@ Variable/Name/lib_5BD4895D_DF417F0C=objective index
Variable/Name/lib_5BD4895D_E318F8D4=category index
Variable/Name/lib_5BD4895D_E6F9B53D=category index
Variable/Name/lib_5BD4895D_E884AC56=max messages
+Variable/Name/lib_5BD4895D_E8D31FC0=mineralCost
+Variable/Name/lib_5BD4895D_E95FD62D=AP_Core_tradeFlavorName
Variable/Name/lib_5BD4895D_EA65AB89=AP_Core_rainbowKiller
+Variable/Name/lib_5BD4895D_ECA6224E=vespeneCost
Variable/Name/lib_5BD4895D_ECEA655E=counter suffix
Variable/Name/lib_5BD4895D_ED587702=counter suffix
Variable/Name/lib_5BD4895D_EDE1A068=AP_Core_chatboxAnchor
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/AbilData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/AbilData.xml
index 93d4fbd4d..9c4540a80 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/AbilData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/AbilData.xml
@@ -195,6 +195,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -7604,6 +7656,9 @@
+
+
+
@@ -9287,6 +9342,9 @@
+
+
+
@@ -10827,6 +10885,9 @@
+
+
+
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ActorData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ActorData.xml
index dc742b90b..5a8cc1d01 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ActorData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ActorData.xml
@@ -1651,6 +1651,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -32392,6 +32443,7 @@
+
@@ -32404,6 +32456,7 @@
+
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ButtonData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ButtonData.xml
index d1d4ac4cc..ebbc2c21f 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ButtonData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ButtonData.xml
@@ -4140,6 +4140,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/FootprintData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/FootprintData.xml
index 378deadd3..f7a3fd3f8 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/FootprintData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/FootprintData.xml
@@ -355,4 +355,11 @@
+
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ModelData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ModelData.xml
index cb4c1d8a5..6a76e1ba9 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ModelData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ModelData.xml
@@ -20805,4 +20805,114 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/RequirementData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/RequirementData.xml
index 8ed80738a..2fdbbc602 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/RequirementData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/RequirementData.xml
@@ -3713,6 +3713,14 @@
+
+
+
+
+
+
+
+
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/RequirementNodeData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/RequirementNodeData.xml
index 898f85dff..6755d9c5e 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/RequirementNodeData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/RequirementNodeData.xml
@@ -6266,6 +6266,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/SoundData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/SoundData.xml
index 101faa105..353398cd1 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/SoundData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/SoundData.xml
@@ -14810,4 +14810,131 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/UnitData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/UnitData.xml
index cd104d28a..9dbfc199b 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/UnitData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/UnitData.xml
@@ -8503,6 +8503,7 @@
+
@@ -9896,6 +9897,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -17933,6 +18045,7 @@
+
@@ -19418,6 +19531,7 @@
+
@@ -26198,7 +26312,6 @@
-
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ValidatorData.xml b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ValidatorData.xml
index b706206e1..f285706e4 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ValidatorData.xml
+++ b/Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ValidatorData.xml
@@ -5481,6 +5481,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/DocumentHeader b/Mods/ArchipelagoPlayer.SC2Mod/DocumentHeader
index 8083cd875..da9d87000 100644
Binary files a/Mods/ArchipelagoPlayer.SC2Mod/DocumentHeader and b/Mods/ArchipelagoPlayer.SC2Mod/DocumentHeader differ
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameHotkeys.txt b/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameHotkeys.txt
index d391d2ed0..61aae2158 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameHotkeys.txt
+++ b/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameHotkeys.txt
@@ -261,6 +261,12 @@ Button/Hotkey/AP_NukeCalldown=N
Button/Hotkey/AP_NydusNetwork=N
Button/Hotkey/AP_NydusRecall=V
Button/Hotkey/AP_NydusWorm=N
+Button/Hotkey/AP_TradeStructure=V
+Button/Hotkey/AP_TradeStructureDummySend=S
+Button/Hotkey/AP_TradeStructureDummyReceive=R
+Button/Hotkey/AP_TradeStructureDummyReceive5=F
+Button/Hotkey/AP_TradeStructureLoad=L
+Button/Hotkey/AP_TradeStructureUnloadAll=D
Button/Hotkey/AP_Obliterate=I
Button/Hotkey/AP_Observer=B
Button/Hotkey/AP_ObserverScopophobia=C
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameStrings.txt b/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameStrings.txt
index 228cfa831..f6d2f8c40 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameStrings.txt
+++ b/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/GameStrings.txt
@@ -226,6 +226,7 @@ Abil/Name/AP_NovaWeaponPlasmaBlastNew=Plasma Surge
Abil/Name/AP_NovaWeaponPsiRifleAbduct=Nova - Weapon - Psi Rifle - Abduct
Abil/Name/AP_NovaWeaponsFree=NovaWeaponsFree
Abil/Name/AP_NydusWormTransport=AP_NydusWormTransport
+Abil/Name/AP_TradeStructureTransport=AP_TradeStructureTransport
Abil/Name/AP_Obliterate=Obliterate
Abil/Name/AP_ObserverTargetLock=Target Lock
Abil/Name/AP_EchidnaCreepBuild=Echidna Spawn Creep Tumor
@@ -1521,6 +1522,12 @@ Button/Name/AP_NukeMengskArm=Arm Silo with Tactical Missile
Button/Name/AP_NydusNetwork=Mutate into Nydus Network
Button/Name/AP_NydusRecall=Nydus Recall
Button/Name/AP_NydusWorm=Summon Nydus Worm
+Button/Name/AP_TradeStructure=Summon Void Trade Wormhole
+Button/Name/AP_TradeStructureDummySend=Send Units
+Button/Name/AP_TradeStructureDummyReceive=Get 1 Unit
+Button/Name/AP_TradeStructureDummyReceive5=Get 5 Units
+Button/Name/AP_TradeStructureLoad=Load
+Button/Name/AP_TradeStructureUnloadAll=Unload All
Button/Name/AP_NydusWormJormungandrStrain=Jormungandr Strain
Button/Name/AP_NydusWormRavenousAppetite=Ravenous Appetite
Button/Name/AP_NydusWormSubterraneanScales=Subterranean Scales
@@ -2929,6 +2936,12 @@ Button/Tooltip/AP_NukeMengskArm=Arms the Silo with a Tactical Missile.Ta
Button/Tooltip/AP_NydusNetwork=Enables:- Nydus Worm - Echidna Worm
Button/Tooltip/AP_NydusRecall=Recalls the Worm to the Nydus Network, removing it and returning 100% of its mineral and gas value (after cost reductions). Nydus Recall takes to finish. Warning: once Nydus Recall is triggered, it cannot be canceled.
Button/Tooltip/AP_NydusWorm=Friendly ground units can use a Nydus Worm to instantly travel to any other Nydus Worm or Nydus Network owned by the player.
+Button/Tooltip/AP_TradeStructure=Can send friendly units to the void and receive random units from the void.
+Button/Tooltip/AP_TradeStructureDummySend=Sends the contents of the Void Trade Wormhole to the void, making them available to other Starcraft players in the multiworld.Units you send will never be able to return to you, not even in other maps.
+Button/Tooltip/AP_TradeStructureDummyReceive=Asks the void for a random unit in exchange for a small tribute.You can only receive units if other players have already deposited units into the void.
+Button/Tooltip/AP_TradeStructureDummyReceive5=Asks the void for 5 random units in exchange for a medium tribute.You can only receive units if other players have already deposited units into the void.
+Button/Tooltip/AP_TradeStructureLoad=Loads units into the Wormhole.
+Button/Tooltip/AP_TradeStructureUnloadAll=Unloads all units.
Button/Tooltip/AP_NydusWormJormungandrStrain=Removes emerge time for Nydus Worms and Echidna Worms, and allows them to be salvaged, returning the cost spent on them.
Button/Tooltip/AP_NydusWormRavenousAppetite=Allows Nydus Worms and Nydus Networks to unload and load units nearly instantly.
Button/Tooltip/AP_NydusWormSubterraneanScales=Increases Nydus Worm and Echidna Worm health by 250 and armor by 1.
@@ -5449,6 +5462,8 @@ RequirementNode/Tooltip/AP_GTECountBehaviorMengskVeterancyWraithMengskCompleteOn
RequirementNode/Tooltip/AP_LTCountUnitInterceptorPurifierQueuedOrBetterAtUnit8=Trireme must have fewer than 8 Interceptors
RequirementNode/Tooltip/AP_LTCountUnitInterceptorQueuedOrBetterAtUnit8=Carrier must have fewer than 8 Interceptors
RequirementNode/Tooltip/AP_LTCountUnitInterceptorTaldarimQueuedOrBetterAtUnit8=Skylord must have fewer than 8 Interceptors
+RequirementNode/Tooltip/AP_NotTradeStructureResearchQueuedOrBetter=A Void Trade is already in progress
+RequirementNode/Tooltip/AP_NotCountUnitTradeStructureQueuedOrBetter=Cannot have more than one Void Trade Wormhole
UI/AP_Reconstructing=Reconstructing
UI/AP_SISpawning=Spawning
UI/AP_SoAMissionEnergyTooltip=Shows how much energy is available for Spear of Adun powers.
@@ -5467,6 +5482,7 @@ UI/TeamColor19=Arcane
UI/TeamColor20=Ember
UI/TeamColor21=Hot Pink
UI/TeamColorRainbow=Rainbow
+UI/TradeUnderway=Communicating
Unit/Category/AP_ProtossUnitsAir=Archipelago Protoss Air
Unit/Category/AP_ProtossUnitsGround=Archipelago Protoss Ground
Unit/Category/AP_TerranUnitsAir=Archipelago Terran Air
@@ -5740,6 +5756,7 @@ Unit/Name/AP_Nuke=Nuke
Unit/Name/AP_NukeMengsk=Build Tactical Missile at Shadow Ops
Unit/Name/AP_NydusNetwork=Nydus Network
Unit/Name/AP_NydusWorm=Nydus Worm
+Unit/Name/AP_TradeStructure=Void Trade Wormhole
Unit/Name/AP_Observer=Observer
Unit/Name/AP_EchidnaWorm=Echidna Worm
Unit/Name/AP_Oracle=Oracle
diff --git a/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/ObjectStrings.txt b/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/ObjectStrings.txt
index af344e43d..7191c2dc4 100644
--- a/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/ObjectStrings.txt
+++ b/Mods/ArchipelagoPlayer.SC2Mod/enUS.SC2Data/LocalizedData/ObjectStrings.txt
@@ -530,6 +530,7 @@ Actor/EditorPrefix/AP_NovaWeaponPlasmaBlastNew=Wizard Skillshot Action -
Actor/EditorPrefix/AP_NovaWeaponPlasmaBlastNewHit=Wizard Skillshot Hit Action -
Actor/EditorPrefix/AP_NovaWeaponPlasmaBlastNewLaunchMissile=Wizard Skillshot Missile -
Actor/EditorPrefix/AP_NydusWorm=AP -
+Actor/EditorPrefix/AP_TradeStructure=AP -
Actor/EditorPrefix/AP_OrbitalCommand_CalldownExtraSuppliesDrop=Orbital Command -
Actor/EditorPrefix/AP_OrbitalCommand_CalldownExtraSuppliesImpact=Orbital Command -
Actor/EditorPrefix/AP_OrbitalCommand_CalldownMuleDrop=Orbital Command -
@@ -6896,6 +6897,7 @@ Unit/EditorPrefix/AP_NovaWeaponPlasmaBlastNewLaunchMissile=Weapon -
Unit/EditorPrefix/AP_Nuke=Weapon -
Unit/EditorPrefix/AP_NydusNetwork=AP -
Unit/EditorPrefix/AP_NydusWorm=AP -
+Unit/EditorPrefix/AP_TradeStructure=AP -
Unit/EditorPrefix/AP_Observer=AP -
Unit/EditorPrefix/AP_EchidnaWorm=AP -
Unit/EditorPrefix/AP_Oracle=AP -
diff --git a/Mods/ArchipelagoPlayerHotS.SC2Mod/Base.SC2Data/GameData/AbilData.xml b/Mods/ArchipelagoPlayerHotS.SC2Mod/Base.SC2Data/GameData/AbilData.xml
new file mode 100644
index 000000000..ac012a436
--- /dev/null
+++ b/Mods/ArchipelagoPlayerHotS.SC2Mod/Base.SC2Data/GameData/AbilData.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Mods/ArchipelagoPlayerHotS.SC2Mod/DocumentHeader b/Mods/ArchipelagoPlayerHotS.SC2Mod/DocumentHeader
index 0bf4107b1..89fd04e8c 100644
Binary files a/Mods/ArchipelagoPlayerHotS.SC2Mod/DocumentHeader and b/Mods/ArchipelagoPlayerHotS.SC2Mod/DocumentHeader differ
diff --git a/Mods/ArchipelagoPlayerHotS.SC2Mod/DocumentInfo b/Mods/ArchipelagoPlayerHotS.SC2Mod/DocumentInfo
index 7469d601e..3ad01a05a 100644
--- a/Mods/ArchipelagoPlayerHotS.SC2Mod/DocumentInfo
+++ b/Mods/ArchipelagoPlayerHotS.SC2Mod/DocumentInfo
@@ -4,5 +4,6 @@
bnet:Swarm (Campaign)/0.0/999,file:Campaigns/Swarm.SC2Campaign
bnet:Swarm Story (Campaign)/0.0/999,file:Campaigns/SwarmStory.SC2Campaign
file:Mods\ArchipelagoPlayer.SC2Mod
+ file:Mods\ArchipelagoTradeSystem.SC2Mod
diff --git a/Mods/ArchipelagoPlayerLotV.SC2Mod/Base.SC2Data/GameData/AbilData.xml b/Mods/ArchipelagoPlayerLotV.SC2Mod/Base.SC2Data/GameData/AbilData.xml
index 85e95ddf5..cce3c2e99 100644
--- a/Mods/ArchipelagoPlayerLotV.SC2Mod/Base.SC2Data/GameData/AbilData.xml
+++ b/Mods/ArchipelagoPlayerLotV.SC2Mod/Base.SC2Data/GameData/AbilData.xml
@@ -62,4 +62,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Mods/ArchipelagoPlayerLotV.SC2Mod/DocumentHeader b/Mods/ArchipelagoPlayerLotV.SC2Mod/DocumentHeader
index 8b6b8168e..bf2fe8699 100644
Binary files a/Mods/ArchipelagoPlayerLotV.SC2Mod/DocumentHeader and b/Mods/ArchipelagoPlayerLotV.SC2Mod/DocumentHeader differ
diff --git a/Mods/ArchipelagoPlayerLotV.SC2Mod/DocumentInfo b/Mods/ArchipelagoPlayerLotV.SC2Mod/DocumentInfo
index ef085c445..e846d9fe5 100644
--- a/Mods/ArchipelagoPlayerLotV.SC2Mod/DocumentInfo
+++ b/Mods/ArchipelagoPlayerLotV.SC2Mod/DocumentInfo
@@ -4,5 +4,6 @@
bnet:Void (Campaign)/0.0/999,file:Campaigns/Void.SC2Campaign
bnet:Void Story (Campaign)/0.0/999,file:Campaigns/VoidStory.SC2Campaign
file:Mods\ArchipelagoPlayer.SC2Mod
+ file:Mods\ArchipelagoTradeSystem.SC2Mod
diff --git a/Mods/ArchipelagoPlayerLotVPrologue.SC2Mod/Base.SC2Data/GameData/AbilData.xml b/Mods/ArchipelagoPlayerLotVPrologue.SC2Mod/Base.SC2Data/GameData/AbilData.xml
index a2347e77b..d72759323 100644
--- a/Mods/ArchipelagoPlayerLotVPrologue.SC2Mod/Base.SC2Data/GameData/AbilData.xml
+++ b/Mods/ArchipelagoPlayerLotVPrologue.SC2Mod/Base.SC2Data/GameData/AbilData.xml
@@ -58,4 +58,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Mods/ArchipelagoPlayerLotVPrologue.SC2Mod/DocumentHeader b/Mods/ArchipelagoPlayerLotVPrologue.SC2Mod/DocumentHeader
index d56c3b44b..8235ae211 100644
Binary files a/Mods/ArchipelagoPlayerLotVPrologue.SC2Mod/DocumentHeader and b/Mods/ArchipelagoPlayerLotVPrologue.SC2Mod/DocumentHeader differ
diff --git a/Mods/ArchipelagoPlayerLotVPrologue.SC2Mod/DocumentInfo b/Mods/ArchipelagoPlayerLotVPrologue.SC2Mod/DocumentInfo
index 7c099e3a7..885969f41 100644
--- a/Mods/ArchipelagoPlayerLotVPrologue.SC2Mod/DocumentInfo
+++ b/Mods/ArchipelagoPlayerLotVPrologue.SC2Mod/DocumentInfo
@@ -3,5 +3,6 @@
file:Mods\voidprologue.sc2mod
file:Mods\ArchipelagoPlayer.SC2Mod
+ file:Mods\ArchipelagoTradeSystem.SC2Mod
diff --git a/Mods/ArchipelagoPlayerNCO.SC2Mod/Base.SC2Data/GameData/AbilData.xml b/Mods/ArchipelagoPlayerNCO.SC2Mod/Base.SC2Data/GameData/AbilData.xml
new file mode 100644
index 000000000..89105553c
--- /dev/null
+++ b/Mods/ArchipelagoPlayerNCO.SC2Mod/Base.SC2Data/GameData/AbilData.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Mods/ArchipelagoPlayerNCO.SC2Mod/DocumentHeader b/Mods/ArchipelagoPlayerNCO.SC2Mod/DocumentHeader
index b41e453b7..8b6d38525 100644
Binary files a/Mods/ArchipelagoPlayerNCO.SC2Mod/DocumentHeader and b/Mods/ArchipelagoPlayerNCO.SC2Mod/DocumentHeader differ
diff --git a/Mods/ArchipelagoPlayerNCO.SC2Mod/DocumentInfo b/Mods/ArchipelagoPlayerNCO.SC2Mod/DocumentInfo
index f3e758420..fc6d90f3f 100644
--- a/Mods/ArchipelagoPlayerNCO.SC2Mod/DocumentInfo
+++ b/Mods/ArchipelagoPlayerNCO.SC2Mod/DocumentInfo
@@ -3,5 +3,6 @@
file:Mods\missionpacks/novacampaign.sc2mod
file:Mods\ArchipelagoPlayerSuper.SC2Mod
+ file:Mods\ArchipelagoTradeSystem.SC2Mod
diff --git a/Mods/ArchipelagoPlayerWoL.SC2Mod/Base.SC2Data/GameData/AbilData.xml b/Mods/ArchipelagoPlayerWoL.SC2Mod/Base.SC2Data/GameData/AbilData.xml
index a2347e77b..ccc92c62a 100644
--- a/Mods/ArchipelagoPlayerWoL.SC2Mod/Base.SC2Data/GameData/AbilData.xml
+++ b/Mods/ArchipelagoPlayerWoL.SC2Mod/Base.SC2Data/GameData/AbilData.xml
@@ -58,4 +58,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Mods/ArchipelagoPlayerWoL.SC2Mod/DocumentHeader b/Mods/ArchipelagoPlayerWoL.SC2Mod/DocumentHeader
index 27380fb2b..35478d668 100644
Binary files a/Mods/ArchipelagoPlayerWoL.SC2Mod/DocumentHeader and b/Mods/ArchipelagoPlayerWoL.SC2Mod/DocumentHeader differ
diff --git a/Mods/ArchipelagoPlayerWoL.SC2Mod/DocumentInfo b/Mods/ArchipelagoPlayerWoL.SC2Mod/DocumentInfo
index ea33a9f01..9d3e16576 100644
--- a/Mods/ArchipelagoPlayerWoL.SC2Mod/DocumentInfo
+++ b/Mods/ArchipelagoPlayerWoL.SC2Mod/DocumentInfo
@@ -2,6 +2,7 @@
file:Mods\ArchipelagoPlayer.SC2Mod
+ file:Mods\ArchipelagoTradeSystem.SC2Mod
bnet:Liberty (Campaign)/0.0/999,file:Campaigns/Liberty.SC2Campaign
bnet:Liberty Story (Campaign)/0.0/999,file:Campaigns/LibertyStory.SC2Campaign
diff --git a/Mods/ArchipelagoTradeSystem.SC2Mod/Base.SC2Data/GameData/AbilData.xml b/Mods/ArchipelagoTradeSystem.SC2Mod/Base.SC2Data/GameData/AbilData.xml
new file mode 100644
index 000000000..b596df14a
--- /dev/null
+++ b/Mods/ArchipelagoTradeSystem.SC2Mod/Base.SC2Data/GameData/AbilData.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Mods/ArchipelagoTradeSystem.SC2Mod/Base.SC2Data/GameData/UnitData.xml b/Mods/ArchipelagoTradeSystem.SC2Mod/Base.SC2Data/GameData/UnitData.xml
new file mode 100644
index 000000000..e537c05d3
--- /dev/null
+++ b/Mods/ArchipelagoTradeSystem.SC2Mod/Base.SC2Data/GameData/UnitData.xml
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Mods/ArchipelagoTradeSystem.SC2Mod/ComponentList.SC2Components b/Mods/ArchipelagoTradeSystem.SC2Mod/ComponentList.SC2Components
new file mode 100644
index 000000000..d9cb22a74
--- /dev/null
+++ b/Mods/ArchipelagoTradeSystem.SC2Mod/ComponentList.SC2Components
@@ -0,0 +1,7 @@
+
+
+ GameData
+ GameText
+ DocumentInfo
+ Triggers
+
\ No newline at end of file
diff --git a/Mods/ArchipelagoTradeSystem.SC2Mod/DocumentHeader b/Mods/ArchipelagoTradeSystem.SC2Mod/DocumentHeader
new file mode 100644
index 000000000..56453ea52
Binary files /dev/null and b/Mods/ArchipelagoTradeSystem.SC2Mod/DocumentHeader differ
diff --git a/Mods/ArchipelagoTradeSystem.SC2Mod/DocumentInfo b/Mods/ArchipelagoTradeSystem.SC2Mod/DocumentInfo
new file mode 100644
index 000000000..6e46cf79e
--- /dev/null
+++ b/Mods/ArchipelagoTradeSystem.SC2Mod/DocumentInfo
@@ -0,0 +1,6 @@
+
+
+
+ file:Mods\ArchipelagoPlayer.SC2Mod
+
+
diff --git a/Mods/ArchipelagoTradeSystem.SC2Mod/DocumentInfo.version b/Mods/ArchipelagoTradeSystem.SC2Mod/DocumentInfo.version
new file mode 100644
index 000000000..d8b5d7638
Binary files /dev/null and b/Mods/ArchipelagoTradeSystem.SC2Mod/DocumentInfo.version differ
diff --git a/Mods/ArchipelagoTradeSystem.SC2Mod/GameData.version b/Mods/ArchipelagoTradeSystem.SC2Mod/GameData.version
new file mode 100644
index 000000000..3206759a4
Binary files /dev/null and b/Mods/ArchipelagoTradeSystem.SC2Mod/GameData.version differ
diff --git a/Mods/ArchipelagoTradeSystem.SC2Mod/GameText.version b/Mods/ArchipelagoTradeSystem.SC2Mod/GameText.version
new file mode 100644
index 000000000..d8c05fbb3
Binary files /dev/null and b/Mods/ArchipelagoTradeSystem.SC2Mod/GameText.version differ
diff --git a/Mods/ArchipelagoTradeSystem.SC2Mod/PreloadAssetDB.txt b/Mods/ArchipelagoTradeSystem.SC2Mod/PreloadAssetDB.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/Mods/ArchipelagoTradeSystem.SC2Mod/Triggers b/Mods/ArchipelagoTradeSystem.SC2Mod/Triggers
new file mode 100644
index 000000000..9fbe15e55
--- /dev/null
+++ b/Mods/ArchipelagoTradeSystem.SC2Mod/Triggers
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/Mods/ArchipelagoTradeSystem.SC2Mod/Triggers.version b/Mods/ArchipelagoTradeSystem.SC2Mod/Triggers.version
new file mode 100644
index 000000000..86dd97823
Binary files /dev/null and b/Mods/ArchipelagoTradeSystem.SC2Mod/Triggers.version differ
diff --git a/Mods/ArchipelagoTradeSystem.SC2Mod/enUS.SC2Data/LocalizedData/GameStrings.txt b/Mods/ArchipelagoTradeSystem.SC2Mod/enUS.SC2Data/LocalizedData/GameStrings.txt
new file mode 100644
index 000000000..5f59f26f6
--- /dev/null
+++ b/Mods/ArchipelagoTradeSystem.SC2Mod/enUS.SC2Data/LocalizedData/GameStrings.txt
@@ -0,0 +1,2 @@
+DocInfo/DescShort=Any
+DocInfo/Name=Just Another StarCraft II Mod
diff --git a/Mods/ArchipelagoTriggers.SC2Mod/Base.SC2Data/LibABFE498B.galaxy b/Mods/ArchipelagoTriggers.SC2Mod/Base.SC2Data/LibABFE498B.galaxy
index de8a5f5b3..a9900ea76 100644
--- a/Mods/ArchipelagoTriggers.SC2Mod/Base.SC2Data/LibABFE498B.galaxy
+++ b/Mods/ArchipelagoTriggers.SC2Mod/Base.SC2Data/LibABFE498B.galaxy
@@ -209,6 +209,19 @@ void libABFE498B_gf_AP_Triggers_setSoAOptions (int lp_bitArrayValue) {
TriggerExecute(libABFE498B_gt_AP_Triggers_InitSoA, true, false);
}
+void libABFE498B_gf_AP_Triggers_unlockTradeStructure (int lp_player, int lp_value) {
+ // Automatic Variable Declarations
+ // Implementation
+ if ((lp_value == 1)) {
+ TechTreeUnitAllow(lp_player, "AP_TradeStructure", true);
+ lib5BD4895D_gv_aP_Core_tradeSendUnitType = "AP_TradeStructureSendDummy";
+ lib5BD4895D_gv_aP_Core_tradeReceiveUnitType = "AP_TradeStructureReceiveDummy";
+ }
+ else {
+ TechTreeUnitAllow(lp_player, "AP_TradeStructure", false);
+ }
+}
+
void libABFE498B_gf_AP_Triggers_unlockTerranUnits (int lp_player, int lp_bitArrayValue) {
// Automatic Variable Declarations
// Implementation
@@ -9076,8 +9089,12 @@ bool libABFE498B_gt_AP_Triggers_setOptions_Func (bool testConds, bool runActions
string lv_storyLevels;
string lv_enableMorphling;
string lv_overrideRace;
+ string lv_enableTrade;
+ int lv_currentPlayer;
// Automatic Variable Declarations
+ playergroup auto03CC9166_g;
+
// Variable Initialization
lv_skipCutscenes = "";
lv_disableForcedCamera = "";
@@ -9094,6 +9111,7 @@ bool libABFE498B_gt_AP_Triggers_setOptions_Func (bool testConds, bool runActions
lv_storyLevels = "";
lv_enableMorphling = "";
lv_overrideRace = "";
+ lv_enableTrade = "";
// Actions
if (!runActions) {
@@ -9116,6 +9134,7 @@ bool libABFE498B_gt_AP_Triggers_setOptions_Func (bool testConds, bool runActions
lv_storyLevels = StringWord(EventChatMessage(false), 14);
lv_enableMorphling = StringWord(EventChatMessage(false), 15);
lv_overrideRace = StringWord(EventChatMessage(false), 16);
+ lv_enableTrade = StringWord(EventChatMessage(false), 17);
libABFE498B_gf_AP_Triggers_setDifficulty(lv_difficulty);
libABFE498B_gf_AP_Triggers_setGameSpeed(lv_gameSpeed);
libABFE498B_gv_aP_Triggers_Option_genericUpgradeResearch = StringToInt(lv_genericUpgradeResearch);
@@ -9131,6 +9150,13 @@ bool libABFE498B_gt_AP_Triggers_setOptions_Func (bool testConds, bool runActions
libABFE498B_gv_aP_Triggers_Option_grantStoryLevels = StringToInt(lv_storyLevels);
libABFE498B_gf_AP_Triggers_setRaceOverride(lv_overrideRace);
libABFE498B_gf_AP_Triggers_setSoAOptions(StringToInt(lv_soaOptions));
+ auto03CC9166_g = lib5BD4895D_gv_aP_Core_affectedPlayers;
+ lv_currentPlayer = -1;
+ while (true) {
+ lv_currentPlayer = PlayerGroupNextPlayer(auto03CC9166_g, lv_currentPlayer);
+ if (lv_currentPlayer < 0) { break; }
+ libABFE498B_gf_AP_Triggers_unlockTradeStructure(lv_currentPlayer, StringToInt(lv_enableTrade));
+ }
return true;
}
@@ -9538,6 +9564,33 @@ void libABFE498B_gt_UpgradeProtossStructures_Init () {
TriggerAddEventGeneric(libABFE498B_gt_UpgradeProtossStructures, lib5BD4895D_gv_aP_Core_LOAD_FINISHED_EVENT);
}
+//--------------------------------------------------------------------------------------------------
+// Trigger: AP_Triggers_tradeNydusBuilt
+//--------------------------------------------------------------------------------------------------
+bool libABFE498B_gt_AP_Triggers_tradeNydusBuilt_Func (bool testConds, bool runActions) {
+ // Automatic Variable Declarations
+ // Conditions
+ if (testConds) {
+ if (!((UnitGetType(EventUnitProgressUnit()) == "AP_TradeStructure"))) {
+ return false;
+ }
+ }
+
+ // Actions
+ if (!runActions) {
+ return true;
+ }
+
+ lib5BD4895D_gv_aP_Core_tradeUnit = EventUnitProgressUnit();
+ return true;
+}
+
+//--------------------------------------------------------------------------------------------------
+void libABFE498B_gt_AP_Triggers_tradeNydusBuilt_Init () {
+ libABFE498B_gt_AP_Triggers_tradeNydusBuilt = TriggerCreate("libABFE498B_gt_AP_Triggers_tradeNydusBuilt_Func");
+ TriggerAddEventUnitConstructProgress(libABFE498B_gt_AP_Triggers_tradeNydusBuilt, null, c_unitProgressStageComplete);
+}
+
//--------------------------------------------------------------------------------------------------
// Trigger: AP_Triggers_InitSoA
//--------------------------------------------------------------------------------------------------
@@ -9592,6 +9645,7 @@ void libABFE498B_InitTriggers () {
libABFE498B_gt_AP_Triggers_giveProtossTech_Init();
libABFE498B_gt_AP_Triggers_techTreeInit_Init();
libABFE498B_gt_UpgradeProtossStructures_Init();
+ libABFE498B_gt_AP_Triggers_tradeNydusBuilt_Init();
libABFE498B_gt_AP_Triggers_InitSoA_Init();
}
diff --git a/Mods/ArchipelagoTriggers.SC2Mod/Base.SC2Data/LibABFE498B_h.galaxy b/Mods/ArchipelagoTriggers.SC2Mod/Base.SC2Data/LibABFE498B_h.galaxy
index 2ee06c8ca..603cc4924 100644
--- a/Mods/ArchipelagoTriggers.SC2Mod/Base.SC2Data/LibABFE498B_h.galaxy
+++ b/Mods/ArchipelagoTriggers.SC2Mod/Base.SC2Data/LibABFE498B_h.galaxy
@@ -116,6 +116,7 @@ void libABFE498B_gf_AP_Triggers_setGameSpeed (string lp_gameSpeed);
void libABFE498B_gf_AP_Triggers_setDifficulty (string lp_difficultyChar);
void libABFE498B_gf_AP_Triggers_setKerriganOptions (int lp_bitArrayValue);
void libABFE498B_gf_AP_Triggers_setSoAOptions (int lp_bitArrayValue);
+void libABFE498B_gf_AP_Triggers_unlockTradeStructure (int lp_player, int lp_value);
void libABFE498B_gf_AP_Triggers_unlockTerranUnits (int lp_player, int lp_bitArrayValue);
void libABFE498B_gf_AP_Triggers_unlockTerranUnits2 (int lp_player, int lp_bitArrayValue);
void libABFE498B_gf_AP_Triggers_unlockTerranArmory1 (int lp_player, int lp_bitArrayValue);
@@ -942,6 +943,7 @@ trigger libABFE498B_gt_AP_Triggers_giveZergTech;
trigger libABFE498B_gt_AP_Triggers_giveProtossTech;
trigger libABFE498B_gt_AP_Triggers_techTreeInit;
trigger libABFE498B_gt_UpgradeProtossStructures;
+trigger libABFE498B_gt_AP_Triggers_tradeNydusBuilt;
trigger libABFE498B_gt_AP_Triggers_InitSoA;
// Library Initialization
diff --git a/Mods/ArchipelagoTriggers.SC2Mod/DocumentHeader b/Mods/ArchipelagoTriggers.SC2Mod/DocumentHeader
index a037f249b..1875a0ce0 100644
Binary files a/Mods/ArchipelagoTriggers.SC2Mod/DocumentHeader and b/Mods/ArchipelagoTriggers.SC2Mod/DocumentHeader differ
diff --git a/Mods/ArchipelagoTriggers.SC2Mod/DocumentInfo b/Mods/ArchipelagoTriggers.SC2Mod/DocumentInfo
index 979877a4b..b07b6fe2b 100644
--- a/Mods/ArchipelagoTriggers.SC2Mod/DocumentInfo
+++ b/Mods/ArchipelagoTriggers.SC2Mod/DocumentInfo
@@ -2,7 +2,7 @@
file:Mods\ArchipelagoCore.SC2Mod
- file:Mods\ArchipelagoPlayer.SC2Mod
+ file:Mods\ArchipelagoTradeSystem.SC2Mod
file:Mods\ArchipelagoPatches.SC2Mod
diff --git a/Mods/ArchipelagoTriggers.SC2Mod/Triggers b/Mods/ArchipelagoTriggers.SC2Mod/Triggers
index fe34bf4ca..b1bccc48a 100644
--- a/Mods/ArchipelagoTriggers.SC2Mod/Triggers
+++ b/Mods/ArchipelagoTriggers.SC2Mod/Triggers
@@ -876,6 +876,7 @@
+
@@ -2258,6 +2259,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AP_TradeStructure
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AP_TradeStructure
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AP_TradeStructureSendDummy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AP_TradeStructureReceiveDummy
+
+
+
@@ -4927,6 +5056,8 @@
+
+
@@ -4944,6 +5075,7 @@
+
@@ -4959,6 +5091,7 @@
+
skipCutscenes
@@ -5098,6 +5231,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
@@ -5661,6 +5813,41 @@
16
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 17
+
+
@@ -5993,6 +6180,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -77141,9 +77364,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AP_TradeStructure
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Mods/ArchipelagoTriggers.SC2Mod/enUS.SC2Data/LocalizedData/TriggerStrings.txt b/Mods/ArchipelagoTriggers.SC2Mod/enUS.SC2Data/LocalizedData/TriggerStrings.txt
index e238d1391..6cbf2c8d4 100644
--- a/Mods/ArchipelagoTriggers.SC2Mod/enUS.SC2Data/LocalizedData/TriggerStrings.txt
+++ b/Mods/ArchipelagoTriggers.SC2Mod/enUS.SC2Data/LocalizedData/TriggerStrings.txt
@@ -12,6 +12,7 @@ Category/Name/lib_ABFE498B_15F2CF56=Diamondback
Category/Name/lib_ABFE498B_17E94EDE=Reaper
Category/Name/lib_ABFE498B_18D54571=Infested SCV
Category/Name/lib_ABFE498B_1A4D12A4=Lurker
+Category/Name/lib_ABFE498B_1CA5D4F4=Trade
Category/Name/lib_ABFE498B_1E6E4119=Infested Banshee
Category/Name/lib_ABFE498B_224F04CB=MapConfig
Category/Name/lib_ABFE498B_23F68EB1=Defiler
@@ -307,6 +308,7 @@ FunctionDef/Name/lib_ABFE498B_3D0C8A3E=AP_Triggers_Terran_unlockThor
FunctionDef/Name/lib_ABFE498B_3D2B8858=AP_Triggers_Terran_unlockWidowMineExecutionerMissiles
FunctionDef/Name/lib_ABFE498B_3D3DE4CE=AP_Triggers_Terran_unlockBansheeHyperflightRotors
FunctionDef/Name/lib_ABFE498B_3D9164AE=AP_Triggers_Terran_unlockMarineProgressiveStimpack
+FunctionDef/Name/lib_ABFE498B_3DEFB3BE=AP_Triggers_unlockTradeStructure
FunctionDef/Name/lib_ABFE498B_3E5BCE4C=AP_Triggers_Zerg_KerriganAssimilationAura
FunctionDef/Name/lib_ABFE498B_3E5FE33C=AP_Triggers_Zerg_UltraliskResourceEfficiency
FunctionDef/Name/lib_ABFE498B_3E64398E=AP_Triggers_Terran_unlockMedivacScatterVeil
@@ -1597,6 +1599,7 @@ ParamDef/Name/lib_ABFE498B_B7DB6835=player
ParamDef/Name/lib_ABFE498B_B824761E=player
ParamDef/Name/lib_ABFE498B_B8A8D75E=player
ParamDef/Name/lib_ABFE498B_B97BA144=player
+ParamDef/Name/lib_ABFE498B_B99334A9=value
ParamDef/Name/lib_ABFE498B_B9A45B62=player
ParamDef/Name/lib_ABFE498B_B9BA73BB=player
ParamDef/Name/lib_ABFE498B_B9E98629=player
@@ -1768,6 +1771,7 @@ ParamDef/Name/lib_ABFE498B_E5101B7C=player
ParamDef/Name/lib_ABFE498B_E57F68F8=bitArrayValue
ParamDef/Name/lib_ABFE498B_E60CE7E8=player
ParamDef/Name/lib_ABFE498B_E61212E4=player
+ParamDef/Name/lib_ABFE498B_E6FEE615=player
ParamDef/Name/lib_ABFE498B_E72F3440=player
ParamDef/Name/lib_ABFE498B_E748B098=bitArrayValue
ParamDef/Name/lib_ABFE498B_E752E3D5=player
@@ -1864,6 +1868,7 @@ Trigger/Name/lib_ABFE498B_15BC943E=AP_Triggers_InitSoA
Trigger/Name/lib_ABFE498B_251CB9EA=AP_Triggers_techTreeInit
Trigger/Name/lib_ABFE498B_4F60B833=AP_Triggers_PatchesInit
Trigger/Name/lib_ABFE498B_929D05B5=AP_Triggers_giveProtossTech
+Trigger/Name/lib_ABFE498B_95EB6553=AP_Triggers_tradeNydusBuilt
Trigger/Name/lib_ABFE498B_C495BBBC=AP_Triggers_giveTerranTech
Trigger/Name/lib_ABFE498B_C7BAB5BA=UpgradeProtossStructures
Trigger/Name/lib_ABFE498B_CD39180C=AP_Triggers_giveZergTech
@@ -1878,6 +1883,7 @@ Variable/Name/lib_ABFE498B_07352B2A=AP_Triggers_Terran_terranShipArmorLevel
Variable/Name/lib_ABFE498B_08801FBF=AP_Triggers_Terran_hasBanshee
Variable/Name/lib_ABFE498B_0CCA3825=AP_Triggers_onDifficultyCasual
Variable/Name/lib_ABFE498B_0D7B4949=AP_Triggers_Protoss_has_Energizer
+Variable/Name/lib_ABFE498B_0EA94B78=enableTrade
Variable/Name/lib_ABFE498B_0F2909FC=mutation1Value
Variable/Name/lib_ABFE498B_0F481473=AP_Triggers_Protoss_has_Tempest
Variable/Name/lib_ABFE498B_0FAF9046=AP_Triggers_Protoss_has_Annihilator
@@ -2038,6 +2044,7 @@ Variable/Name/lib_ABFE498B_D9B96090=soaOptions
Variable/Name/lib_ABFE498B_DABA215D=novaGearValue
Variable/Name/lib_ABFE498B_DB246E8A=AP_Triggers_disableForcedCamera
Variable/Name/lib_ABFE498B_DC5EA569=AP_Triggers_Option_gameSpeed
+Variable/Name/lib_ABFE498B_DDCBF309=currentPlayer
Variable/Name/lib_ABFE498B_DDE70B14=AP_Triggers_Protoss_has_Destroyer
Variable/Name/lib_ABFE498B_DF856303=upgradeValue
Variable/Name/lib_ABFE498B_E2BE6D72=AP_Triggers_Option_enableMorphling