Adding new GUI/CLI option for Parallel Worlds
This commit is contained in:
@@ -25,6 +25,7 @@ class World(object):
|
|||||||
self.teams = 1
|
self.teams = 1
|
||||||
self.owShuffle = owShuffle.copy()
|
self.owShuffle = owShuffle.copy()
|
||||||
self.owKeepSimilar = {}
|
self.owKeepSimilar = {}
|
||||||
|
self.owParallelWorlds = {}
|
||||||
self.shuffle = shuffle.copy()
|
self.shuffle = shuffle.copy()
|
||||||
self.doorShuffle = doorShuffle.copy()
|
self.doorShuffle = doorShuffle.copy()
|
||||||
self.intensity = {}
|
self.intensity = {}
|
||||||
@@ -2095,6 +2096,7 @@ class Spoiler(object):
|
|||||||
'goal': self.world.goal,
|
'goal': self.world.goal,
|
||||||
'ow_shuffle': self.world.owShuffle,
|
'ow_shuffle': self.world.owShuffle,
|
||||||
'ow_keepsimilar': self.world.owKeepSimilar,
|
'ow_keepsimilar': self.world.owKeepSimilar,
|
||||||
|
'ow_parallel': self.world.owParallelWorlds,
|
||||||
'shuffle': self.world.shuffle,
|
'shuffle': self.world.shuffle,
|
||||||
'door_shuffle': self.world.doorShuffle,
|
'door_shuffle': self.world.doorShuffle,
|
||||||
'intensity': self.world.intensity,
|
'intensity': self.world.intensity,
|
||||||
@@ -2174,6 +2176,7 @@ class Spoiler(object):
|
|||||||
outfile.write('Item Functionality:'.ljust(line_width) + '%s\n' % self.metadata['item_functionality'][player])
|
outfile.write('Item Functionality:'.ljust(line_width) + '%s\n' % self.metadata['item_functionality'][player])
|
||||||
outfile.write('Overworld Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['ow_shuffle'][player])
|
outfile.write('Overworld Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['ow_shuffle'][player])
|
||||||
outfile.write('Keep OW Edges Together:'.ljust(line_width) + '%s\n' % ('Yes' if self.metadata['ow_keepsimilar'][player] else 'No'))
|
outfile.write('Keep OW Edges Together:'.ljust(line_width) + '%s\n' % ('Yes' if self.metadata['ow_keepsimilar'][player] else 'No'))
|
||||||
|
outfile.write('Parallel Worlds:'.ljust(line_width) + '%s\n' % ('Yes' if self.metadata['ow_parallel'][player] else 'No'))
|
||||||
outfile.write('Entrance Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['shuffle'][player])
|
outfile.write('Entrance Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['shuffle'][player])
|
||||||
outfile.write('Door Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['door_shuffle'][player])
|
outfile.write('Door Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['door_shuffle'][player])
|
||||||
outfile.write('Intensity:'.ljust(line_width) + '%s\n' % self.metadata['intensity'][player])
|
outfile.write('Intensity:'.ljust(line_width) + '%s\n' % self.metadata['intensity'][player])
|
||||||
|
|||||||
1
CLI.py
1
CLI.py
@@ -144,6 +144,7 @@ def parse_settings():
|
|||||||
"shuffleganon": True,
|
"shuffleganon": True,
|
||||||
"ow_shuffle": "vanilla",
|
"ow_shuffle": "vanilla",
|
||||||
"ow_keepsimilar": False,
|
"ow_keepsimilar": False,
|
||||||
|
"ow_parallel": False,
|
||||||
"shuffle": "vanilla",
|
"shuffle": "vanilla",
|
||||||
|
|
||||||
"shufflepots": False,
|
"shufflepots": False,
|
||||||
|
|||||||
1
Main.py
1
Main.py
@@ -74,6 +74,7 @@ def main(args, seed=None, fish=None):
|
|||||||
world.crystals_ganon_orig = args.crystals_ganon.copy()
|
world.crystals_ganon_orig = args.crystals_ganon.copy()
|
||||||
world.crystals_gt_orig = args.crystals_gt.copy()
|
world.crystals_gt_orig = args.crystals_gt.copy()
|
||||||
world.owKeepSimilar = args.ow_keepsimilar.copy()
|
world.owKeepSimilar = args.ow_keepsimilar.copy()
|
||||||
|
world.owParallelWorlds = args.ow_parallel.copy()
|
||||||
world.open_pyramid = args.openpyramid.copy()
|
world.open_pyramid = args.openpyramid.copy()
|
||||||
world.boss_shuffle = args.shufflebosses.copy()
|
world.boss_shuffle = args.shufflebosses.copy()
|
||||||
world.enemy_shuffle = args.shuffleenemies.copy()
|
world.enemy_shuffle = args.shuffleenemies.copy()
|
||||||
|
|||||||
@@ -154,6 +154,7 @@ def roll_settings(weights):
|
|||||||
overworld_shuffle = get_choice('overworld_shuffle')
|
overworld_shuffle = get_choice('overworld_shuffle')
|
||||||
ret.ow_shuffle = overworld_shuffle if overworld_shuffle != 'none' else 'vanilla'
|
ret.ow_shuffle = overworld_shuffle if overworld_shuffle != 'none' else 'vanilla'
|
||||||
ret.ow_keepsimilar = get_choice('ow_keepsimilar')
|
ret.ow_keepsimilar = get_choice('ow_keepsimilar')
|
||||||
|
ret.ow_parallel = get_choice('ow_parallel')
|
||||||
entrance_shuffle = get_choice('entrance_shuffle')
|
entrance_shuffle = get_choice('entrance_shuffle')
|
||||||
ret.shuffle = entrance_shuffle if entrance_shuffle != 'none' else 'vanilla'
|
ret.shuffle = entrance_shuffle if entrance_shuffle != 'none' else 'vanilla'
|
||||||
door_shuffle = get_choice('door_shuffle')
|
door_shuffle = get_choice('door_shuffle')
|
||||||
|
|||||||
11
README.md
11
README.md
@@ -10,6 +10,7 @@ This is a very new mode of LTTPR so the tools and info is very limited. There is
|
|||||||
|
|
||||||
# Known Issues
|
# Known Issues
|
||||||
(Updated 2021-04-26)
|
(Updated 2021-04-26)
|
||||||
|
(Updated 2021-05-04)
|
||||||
|
|
||||||
### If you want to playtest this, know these things:
|
### If you want to playtest this, know these things:
|
||||||
- Camera unlocking issues, which opens up the possibility of a hardlock. The workaround is to move Link around until the camera locks in place. DO NOT try to transition where there is a visible line.
|
- Camera unlocking issues, which opens up the possibility of a hardlock. The workaround is to move Link around until the camera locks in place. DO NOT try to transition where there is a visible line.
|
||||||
@@ -56,6 +57,10 @@ OW is not shuffled.
|
|||||||
|
|
||||||
This keeps similar edge transitions together. ie. The 2 west edges will be paired to another set of two similar edges
|
This keeps similar edge transitions together. ie. The 2 west edges will be paired to another set of two similar edges
|
||||||
|
|
||||||
|
## Parallel Worlds (--ow_parallel)
|
||||||
|
|
||||||
|
This ensures matching layouts of Light and Dark worlds. Any remaining edge transitions that don't have a matching counterpart will be shuffled amongst themselves. ie. If going right from Link's House leads to Blacksmith, then going right from Big Bomb Shop will lead to Hammer Pegs
|
||||||
|
|
||||||
|
|
||||||
# Command Line Options
|
# Command Line Options
|
||||||
|
|
||||||
@@ -76,3 +81,9 @@ For specifying the overworld shuffle you want as above. (default: vanilla)
|
|||||||
```
|
```
|
||||||
|
|
||||||
This keeps similar edge transitions paired together with other pairs of transitions
|
This keeps similar edge transitions paired together with other pairs of transitions
|
||||||
|
|
||||||
|
```
|
||||||
|
--ow_parallel
|
||||||
|
```
|
||||||
|
|
||||||
|
This ensures the layout of both worlds have the same shape
|
||||||
|
|||||||
@@ -120,6 +120,10 @@
|
|||||||
"action": "store_true",
|
"action": "store_true",
|
||||||
"type": "bool"
|
"type": "bool"
|
||||||
},
|
},
|
||||||
|
"ow_parallel": {
|
||||||
|
"action": "store_true",
|
||||||
|
"type": "bool"
|
||||||
|
},
|
||||||
"shuffle": {
|
"shuffle": {
|
||||||
"choices": [
|
"choices": [
|
||||||
"vanilla",
|
"vanilla",
|
||||||
|
|||||||
@@ -203,7 +203,10 @@
|
|||||||
" overworld screens from the same world.",
|
" overworld screens from the same world.",
|
||||||
"Crossed: Overworld screen transitions can lead to any other overworld screen."
|
"Crossed: Overworld screen transitions can lead to any other overworld screen."
|
||||||
],
|
],
|
||||||
"ow_keepsimilar": [ "This keeps similar edge transitions together. ie. the two west edges on Potion Shop will be paired with another similar pair." ],
|
"ow_keepsimilar": [
|
||||||
|
"This keeps similar edge transitions together. ie. the two west edges on",
|
||||||
|
"Potion Shop will be paired with another similar pair." ],
|
||||||
|
"ow_parallel": [ "This ensures the layouts of both worlds are the same shape." ],
|
||||||
"door_shuffle": [
|
"door_shuffle": [
|
||||||
"Select Door Shuffling Algorithm. (default: %(default)s)",
|
"Select Door Shuffling Algorithm. (default: %(default)s)",
|
||||||
"Basic: Doors are mixed within a single dungeon.",
|
"Basic: Doors are mixed within a single dungeon.",
|
||||||
|
|||||||
@@ -116,6 +116,7 @@
|
|||||||
"randomizer.overworld.overworldshuffle.crossed": "Crossed",
|
"randomizer.overworld.overworldshuffle.crossed": "Crossed",
|
||||||
|
|
||||||
"randomizer.overworld.keepsimilar": "Keep Similar Edges Together",
|
"randomizer.overworld.keepsimilar": "Keep Similar Edges Together",
|
||||||
|
"randomizer.overworld.parallelworlds": "Parallel Worlds",
|
||||||
|
|
||||||
"randomizer.entrance.openpyramid": "Pre-open Pyramid Hole",
|
"randomizer.entrance.openpyramid": "Pre-open Pyramid Hole",
|
||||||
"randomizer.entrance.shuffleganon": "Include Ganon's Tower and Pyramid Hole in shuffle pool",
|
"randomizer.entrance.shuffleganon": "Include Ganon's Tower and Pyramid Hole in shuffle pool",
|
||||||
|
|||||||
@@ -11,6 +11,10 @@
|
|||||||
"keepsimilar": {
|
"keepsimilar": {
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
"default": true
|
"default": true
|
||||||
|
},
|
||||||
|
"parallelworlds": {
|
||||||
|
"type": "checkbox",
|
||||||
|
"default": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -72,7 +72,8 @@ SETTINGSTOPROCESS = {
|
|||||||
},
|
},
|
||||||
"overworld": {
|
"overworld": {
|
||||||
"overworldshuffle": "ow_shuffle",
|
"overworldshuffle": "ow_shuffle",
|
||||||
"keepsimilar": "ow_keepsimilar"
|
"keepsimilar": "ow_keepsimilar",
|
||||||
|
"parallelworlds": "ow_parallel"
|
||||||
},
|
},
|
||||||
"entrance": {
|
"entrance": {
|
||||||
"openpyramid": "openpyramid",
|
"openpyramid": "openpyramid",
|
||||||
|
|||||||
Reference in New Issue
Block a user