


An Archipelago plugin for GTFO! Allows players to use the Archipelago software to randomize items across the multiworld.
The source for this mod can currently be found in my ReTFO repository, which contains all my GTFO mods: https://github.com/RoboRyGuy/ReTFO
Currently, this mod requires some extra steps compared to other Archipelago integrations; this is intended to allow future support of modded rundowns, though this may change.
At this time, many items and locations are supported. In general, if you receive an item, it will be placed "into the terminal system". You can use the custom AP command to retrieve the item. The custom AP command is also required to perform location checks, depending on how many floating items are randomized.
Some of the randomized items:
An additional set of "floating" items is also included
The YAML file supports six options at this time (as well as some options common to all Archipelago games). The key to the YAML is a tagging system. All items and locations each have a single, unique tag identifying them. Each tag has a parent, creating a tree which meets at the root tag "All". When using tags in the options, you can choose to either specify the leaf tags (which each correlate to a single item or location), or you can choose a common parent to affect groups of items and locations.
A full list of tags can be exported from the Network Settings menu. This will dump all tag names, IDs, descriptions, and parents to a CSV file for your purusal. If unfamiliar with CSV, simply open it in Excel :)
As an example of tag hierarchy: The item "R8E1 ZONE_513 Colored Key" is the tag for the key required to unlock the door to zone 513 in R8E1, at the start of the level. This tag is a child of "Colored Key Items", which is a parent of all colored keys. This tag, in turn, is a child of "Small Pickup Items", which is a child of "Pickup Items", which is a child of "All Items", which is a child of "All".
"All" > "All Items" > "Pickup Items" > "Small Pickup Items" > "Colored Key Items" > "R8E1 ZONE_513 Colored Key"
If you want to enable randomization of this key, you could whitelist any of these tags; if you whitelist just the leaf tag ("R8E1 ZONE_513 Colored Key"), you will only randomize the single item; as you move up the tree, you randomize more and more related items.
At this time, the following options are supported:
A list of expedition names, for example "R1A1", "R8E2", and so forth. Each expedition name must be unique. Each name listed will be added as a playable level, and you will be required to clear its main (and potentially side) objectives to clear the goal.
If true, clearing the goal will also require you clear all secondaries on any expedition you selected which has a secondary.
If true, clearing the goal will also require you clear all overload objectives on any expedition you selected which has an overload.
Note that there is no support for requiring PE objectives at this time.
This is a set of tags which enable items and locations for randomization. Items and locations which are either in the whitelist or which have tags which are children of the whitelist will be randomized (unless they are on the blacklist). Randomization only occurs if both the item and its vanilla spawn location are randomized. For simplicity, I recommend putting either "All Items" or "All Locations" to help ensure one of the pair is randomized, and then filtering the other half as desired.
This is a set of tags which disables items and locations for randomization. This works exactly the same as the whitelist, except it disables items. The blacklist overrules the whitelist.
GTFO supports its own custom start_items option. This works slightly differently from normal start items; instead of creating new items, it instead pulls matching items out of the randomization pool to give them to the player.
This also supports the tagging system; if you specify a parent tag, the desired number of child items are randomly selected from all available items and moved to the starting invetory, removing them from the game.
Each item removed in this manner is replaced with a dud "Empty" item which does nothing.
This works exactly the same as start_items, but instead of moving items to the start inventory it marks them as early items for the fill system. This can cause fill errors if insufficient early spots are available.
Below is a sample YAML file.
name: RoboRyGuy
description: YAML generated by Archipelago 0.6.7.
game: GTFO
GTFO:
progression_balancing: normal
accessibility: full
required_expeditions:
- R1B1
- R6A1
- R3A3
- R6B1
- R8C2
- R4D2
- R8E1
require_secondaries: true
require_overloads: true
whitelist:
- All
blacklist: []
early_items: {
"Primary Gear Items": 3,
"Special Gear Items": 1,
"Expedition Unlock Items": 1
}
local_items: []
non_local_items: []
start_items: {
"Melee Gear Items": 1,
"Primary Gear Items": 1,
"Special Gear Items": 1,
"Tool Gear Items": 1,
"Expedition Unlock Items": 1
}
start_hints: []
start_location_hints: []
exclude_locations: []
priority_locations: []
This file enables randomization of all supported items. The player will have to beat all objectives for 7 exepditions, including R1B1, R6A1, ..., R8E1 to reach the goal.
Because all expedition unlocks are randomized, the player must specify at least one starting expedition. In this case, they're having Archipelago randomly pick one of their expeditions and add it as a starting item.
Because all gear items are randomized, the player must specify at least one starting gear item for each slot. In this case, they're having Archipelago randomly pick an item for each slot (melee, primary, special, and tool).
To aid with exploration, the player has asked Archipelago to randomly select 3 primaaries, one special, and one expedition unlock to be added as early items.
It should also be noted that, since all items are randomized, the player starts with 3 locked lobby slots, meaning
they will have to find the lobby slot unlocks as they play before humans or bots can aid them. If this is harder than
desired, one could add "Unlock Lobby Slot Items": 1 to either the early or start items to ensure they quickly have allies.
This mod integration supports Death Link, though it hasn't been tested. The settings for Death Link are not tied to the YAML config and can be changed at any time in the mod settings in-game. See there for more details on ways to punish yourself for others' mistakes.
This mod integrates Energy Link. Picking up a Warden Artifact will add energy to your team; equipping a Booster costs energy. This is also not very tested, but theoretically works :)
This integrations aims to be compatible with modded rundowns. With that said, at this time, attempt it at your own risk; I need to get vanilla working before I will devote bandwidth to ensuring modded rundowns can work.