Document Connection Plando

and show where Connection Plando Errors come from
This commit is contained in:
Fabian Dill 2021-01-17 18:28:10 +01:00
parent 446893c504
commit 26314f7c13
2 changed files with 66 additions and 34 deletions

View File

@ -2251,7 +2251,10 @@ def plando_connect(world, player: int):
if world.plando_connections[player]: if world.plando_connections[player]:
for connection in world.plando_connections[player]: for connection in world.plando_connections[player]:
func = lookup[connection.direction] func = lookup[connection.direction]
func(world, connection.entrance, connection.exit, player) try:
func(world, connection.entrance, connection.exit, player)
except Exception as e:
raise Exception(f"Could not connect using {connection}") from e
LW_Dungeon_Entrances = ['Desert Palace Entrance (South)', LW_Dungeon_Entrances = ['Desert Palace Entrance (South)',

View File

@ -18,17 +18,17 @@
it defaults to vanilla it defaults to vanilla
- Instructions are separated by a semicolon - Instructions are separated by a semicolon
- Available Instructions: - Available Instructions:
- Direct Placement: - Direct Placement:
- Example: "Eastern Palace-Trinexx" - Example: "Eastern Palace-Trinexx"
- Takes a particular Arena and particular boss, then places that boss into that arena - Takes a particular Arena and particular boss, then places that boss into that arena
- Ganons Tower has 3 placements, "Ganons Tower Top", "Ganons Tower Middle" and "Ganons Tower Bottom" - Ganons Tower has 3 placements, "Ganons Tower Top", "Ganons Tower Middle" and "Ganons Tower Bottom"
- Boss Placement: - Boss Placement:
- Example: "Trinexx" - Example: "Trinexx"
- Takes a particular boss and places that boss in any remaining slots in which this boss can function. - Takes a particular boss and places that boss in any remaining slots in which this boss can function.
- In this example, it would fill Desert Palace, but not Tower of Hera. - In this example, it would fill Desert Palace, but not Tower of Hera.
- Boss Shuffle: - Boss Shuffle:
- Example: "simple" - Example: "simple"
- Runs a particular boss shuffle mode to finish construction instead of vanilla placement, typically used as a last instruction. - Runs a particular boss shuffle mode to finish construction instead of vanilla placement, typically used as a last instruction.
- [Available Bosses](https://github.com/Berserker66/MultiWorld-Utilities/blob/65fa39df95c90c9b66141aee8b16b7e560d00819/Bosses.py#L135) - [Available Bosses](https://github.com/Berserker66/MultiWorld-Utilities/blob/65fa39df95c90c9b66141aee8b16b7e560d00819/Bosses.py#L135)
- [Available Arenas](https://github.com/Berserker66/MultiWorld-Utilities/blob/65fa39df95c90c9b66141aee8b16b7e560d00819/Bosses.py#L186) - [Available Arenas](https://github.com/Berserker66/MultiWorld-Utilities/blob/65fa39df95c90c9b66141aee8b16b7e560d00819/Bosses.py#L186)
@ -52,25 +52,25 @@ boss_shuffle:
- Has the options from_pool, world, percentage and either item and location or items and locations - Has the options from_pool, world, percentage and either item and location or items and locations
- All of these options support subweights - All of these options support subweights
- percentage is the percentage chance for this block to trigger - percentage is the percentage chance for this block to trigger
- is a number in the range [0, 100], can be omitted entirely for 100% - is a number in the range [0, 100], can be omitted entirely for 100%
- from_pool denotes if the item should be taken from the item pool, or be an additional item entirely. - from_pool denotes if the item should be taken from the item pool, or be an additional item entirely.
- can be true or false, defaults to true when omitted - can be true or false, defaults to true when omitted
- world is the target world to place the item - world is the target world to place the item
- ignored if only one world is generated - ignored if only one world is generated
- can be a number, to target that slot in the multiworld - can be a number, to target that slot in the multiworld
- can be a name, to target that player's world - can be a name, to target that player's world
- can be true, to target any other player's world - can be true, to target any other player's world
- can be false, to target own world - can be false, to target own world
- can be null, to target a random world - can be null, to target a random world
- Single Placement - Single Placement
- place a single item at a single location - place a single item at a single location
- item denotes the Item to place - item denotes the Item to place
- location denotes the Location to place it into - location denotes the Location to place it into
- Multi Placement - Multi Placement
- place multiple items into multiple locations, until either list is exhausted. - place multiple items into multiple locations, until either list is exhausted.
- items denotes the items to use, can be given a number to have multiple of that item - items denotes the items to use, can be given a number to have multiple of that item
- locations lists the possible locations those items can be placed in - locations lists the possible locations those items can be placed in
- placements are picked randomly, not sorted in any way - placements are picked randomly, not sorted in any way
- [Available Items](https://github.com/Berserker66/MultiWorld-Utilities/blob/3b5ba161dea223b96e9b1fc890e03469d9c6eb59/Items.py#L26) - [Available Items](https://github.com/Berserker66/MultiWorld-Utilities/blob/3b5ba161dea223b96e9b1fc890e03469d9c6eb59/Items.py#L26)
- [Available Locations](https://github.com/Berserker66/MultiWorld-Utilities/blob/3b5ba161dea223b96e9b1fc890e03469d9c6eb59/Regions.py#L418) - [Available Locations](https://github.com/Berserker66/MultiWorld-Utilities/blob/3b5ba161dea223b96e9b1fc890e03469d9c6eb59/Regions.py#L418)
@ -112,14 +112,14 @@ The second example always triggers and places the Swords and Bows into one's own
- Has the options "text", "at" and "percentage" - Has the options "text", "at" and "percentage"
- percentage is the percentage chance for this text to be placed, can be omitted entirely for 100% - percentage is the percentage chance for this text to be placed, can be omitted entirely for 100%
- text is the text to be placed. - text is the text to be placed.
- can be weighted. - can be weighted.
- \n is a newline. - \n is a newline.
- @ is the entered player's name. - @ is the entered player's name.
- Warning: Text Mapper does not support full unicode. - Warning: Text Mapper does not support full unicode.
- [Alphabet](https://github.com/Berserker66/MultiWorld-Utilities/blob/65fa39df95c90c9b66141aee8b16b7e560d00819/Text.py#L756) - [Alphabet](https://github.com/Berserker66/MultiWorld-Utilities/blob/65fa39df95c90c9b66141aee8b16b7e560d00819/Text.py#L756)
- at is the location within the game to attach the text to. - at is the location within the game to attach the text to.
- can be weighted. - can be weighted.
- [List of targets](https://github.com/Berserker66/MultiWorld-Utilities/blob/65fa39df95c90c9b66141aee8b16b7e560d00819/Text.py#L1498) - [List of targets](https://github.com/Berserker66/MultiWorld-Utilities/blob/65fa39df95c90c9b66141aee8b16b7e560d00819/Text.py#L1498)
#### Example #### Example
```yaml ```yaml
@ -134,3 +134,32 @@ plando_texts:
This has a 50% chance to trigger at all, if it does, This has a 50% chance to trigger at all, if it does,
it throws a coin between "uncle_leaving_text" and "uncle_dying_sewer", then places the text it throws a coin between "uncle_leaving_text" and "uncle_dying_sewer", then places the text
"This is a plando.\nYou've been warned." at that location. "This is a plando.\nYou've been warned." at that location.
### Connections
- This module is disabled by default.
- Has the options "percentage", "entrance", "exit" and "direction".
- All options support subweights
- percentage is the percentage chance for this to be connected, can be omitted entirely for 100%
- Any Door has 4 total directions, as a door can be unlinked like in insanity ER
- entrance is the overworld door
- exit is the underworld exit
- direction can be "both", "entrance" or "exit"
- doors can be found in [this file](https://github.com/Berserker66/MultiWorld-Utilities/blob/main/EntranceShuffle.py)
#### Example
```yaml
plando_connections:
- entrance: Links House
exit: Hyrule Castle Exit (West)
direction: both
- entrance: Hyrule Castle Entrance (West)
exit: Links House Exit
direction: both
```
The first block connects the overworld entrance that normally leads to Link's House
to put you into the HC West Wing instead, exiting from within there will put you at the Overworld exiting Link's House.
Without the second block, you'd still exit from within Link's House to outside Link's House and the left side
Balcony Entrance would still lead into HC West Wing