From 46786ca4891c6950da1df26df144031e5af6e4b7 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Tue, 1 Nov 2022 20:16:01 -0500 Subject: [PATCH] Renamed Tile Swap to Tile Flip --- BaseClasses.py | 6 +++--- EntranceShuffle.py | 2 +- OverworldGlitchRules.py | 4 ++-- OverworldShuffle.py | 22 +++++++++++----------- README.md | 24 ++++++++++++------------ resources/app/cli/lang/en.json | 4 ++-- resources/app/gui/lang/en.json | 2 +- 7 files changed, 32 insertions(+), 32 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index 9195b60e..f59086dd 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -3020,7 +3020,7 @@ class Spoiler(object): outfile.write('Crossed OW:'.ljust(line_width) + '%s\n' % self.metadata['ow_crossed'][player]) if self.metadata['ow_shuffle'][player] != 'vanilla' or self.metadata['ow_crossed'][player] != 'none': outfile.write('Keep Similar OW Edges Together:'.ljust(line_width) + '%s\n' % yn(self.metadata['ow_keepsimilar'][player])) - outfile.write('Swapped OW (Mixed):'.ljust(line_width) + '%s\n' % yn(self.metadata['ow_mixed'][player])) + outfile.write('OW Tile Flip (Mixed):'.ljust(line_width) + '%s\n' % yn(self.metadata['ow_mixed'][player])) outfile.write('Whirlpool Shuffle:'.ljust(line_width) + '%s\n' % yn(self.metadata['ow_whirlpool'][player])) outfile.write('Flute Shuffle:'.ljust(line_width) + '%s\n' % self.metadata['ow_fluteshuffle'][player]) outfile.write('Bonk Drops:'.ljust(line_width) + '%s\n' % yn(self.metadata['bonk_drops'][player])) @@ -3112,10 +3112,10 @@ class Spoiler(object): outfile.write(str('(Player ' + str(player) + ')\n')) # player name outfile.write(self.maps[('flute', player)]['text'] + '\n\n') - # overworld tile swaps + # overworld tile flips for player in range(1, self.world.players + 1): if ('swaps', player) in self.maps: - outfile.write('OW Tile Swaps:\n') + outfile.write('OW Tile Flips:\n') break for player in range(1, self.world.players + 1): if ('swaps', player) in self.maps: diff --git a/EntranceShuffle.py b/EntranceShuffle.py index 86121e74..d2e493d6 100644 --- a/EntranceShuffle.py +++ b/EntranceShuffle.py @@ -182,7 +182,7 @@ def link_entrances(world, player): if 0x03 in world.owswaps[player][0] == 0x05 in world.owswaps[player][0]: # if WDM and EDM are in same world connect_caves(world, lw_wdm_entrances + lw_edm_entrances, [], caves, player) else: - # place Old Man House in WDM if not swapped + # place Old Man House in WDM if not flipped if not world.is_tile_swapped(0x03, player): connect_caves(world, lw_wdm_entrances, [], list(Old_Man_House), player) else: diff --git a/OverworldGlitchRules.py b/OverworldGlitchRules.py index 58f49b8f..29986c80 100644 --- a/OverworldGlitchRules.py +++ b/OverworldGlitchRules.py @@ -334,7 +334,7 @@ def set_owg_rules(player, world, connections, default_rule): glitch_regions = (['Central Cliffs', 'Eastern Cliff', 'Desert Northeast Cliffs'], ['Dark Central Cliffs', 'Darkness Cliff', 'Mire Northeast Cliffs']) -# same screen clips, no OWR tile swap implications +# same screen clips, no Tile Flip OWR implications boots_clips_local = [ # (name, from_region, to_region) ('Hera Ascent Clip', 'West Death Mountain (Bottom)', 'West Death Mountain (Top)'), #cannot guarantee camera correction, but a bomb clip exists ('WDDM Bomb Clip', 'West Dark Death Mountain (Bottom)', 'West Dark Death Mountain (Top)'), #cannot guarantee camera correction, but a bomb clip exists @@ -386,7 +386,7 @@ boots_clips_local = [ # (name, from_region, to_region) # Common structure for cross-screen connections: # (name, from_region, to_region) <- each three consists of [LW, DW] -# This is so OWR Tile Swap can properly connect both connections, and simultaneously be aware of which one requires pearl +# This is so Tile Flip OWR can properly connect both connections, and simultaneously be aware of which one requires pearl # Note: Some clips have no way to reach the OOB area, and others have no way to get from the OOB area # to a proper destination, these are marked with 'None'; these connections will not be made boots_clips = [ diff --git a/OverworldShuffle.py b/OverworldShuffle.py index aa877f5c..a6fd48d3 100644 --- a/OverworldShuffle.py +++ b/OverworldShuffle.py @@ -73,7 +73,7 @@ def link_overworld(world, player): raise Exception('Cannot move a parallel edge without the other') new_mode = OpenStd.Open if tuple((OpenStd.Open, WorldType((int(wrld) + 1) % 2), dir, terrain, parallel, count)) not in new_groups.keys(): - # when Links House tile is swapped, the DW edges need to get put into existing Standard group + # when Links House tile is flipped, the DW edges need to get put into existing Standard group new_mode = OpenStd.Standard new_groups[(new_mode, WorldType((int(wrld) + 1) % 2), dir, terrain, parallel, count)][0].append(forward_set) new_groups[(new_mode, WorldType((int(wrld) + 1) % 2), dir, terrain, parallel, count)][1].append(back_set) @@ -103,7 +103,7 @@ def link_overworld(world, player): else: raise NotImplementedError('Cannot move one side of a non-parallel connection') else: - raise NotImplementedError('Invalid OW Edge swap scenario') + raise NotImplementedError('Invalid OW Edge flip scenario') return new_groups tile_groups = define_tile_groups(world, player, False) @@ -143,7 +143,7 @@ def link_overworld(world, player): trimmed_groups = reorganize_groups(world, trimmed_groups, player) # tile shuffle - logging.getLogger('').debug('Swapping overworld tiles') + logging.getLogger('').debug('Flipping overworld tiles') if world.owMixed[player]: swapped_edges = shuffle_tiles(world, tile_groups, world.owswaps[player], False, player) @@ -199,8 +199,8 @@ def link_overworld(world, player): if world.owCrossed[player] in ['grouped', 'limited'] or (world.owShuffle[player] == 'vanilla' and world.owCrossed[player] == 'chaos'): if world.owCrossed[player] == 'grouped': - # the idea is to XOR the new swaps with the ones from Mixed so that non-parallel edges still work - # Polar corresponds to Grouped with no swaps in ow_crossed_tiles_mask + # the idea is to XOR the new flips with the ones from Mixed so that non-parallel edges still work + # Polar corresponds to Grouped with no flips in ow_crossed_tiles_mask ow_crossed_tiles_mask = [[],[],[]] crossed_edges = shuffle_tiles(world, define_tile_groups(world, player, True), ow_crossed_tiles_mask, True, player) ow_crossed_tiles = [i for i in range(0x82) if (i in world.owswaps[player][0]) != (i in ow_crossed_tiles_mask[0])] @@ -252,7 +252,7 @@ def link_overworld(world, player): elif edge in parallel_links_new.inverse: crossed_edges.append(parallel_links_new.inverse[edge][0]) - # after tile swap and crossed, determine edges that need to swap + # after tile flip and crossed, determine edges that need to flip edges_to_swap = [e for e in swapped_edges+crossed_edges if (e not in swapped_edges) or (e not in crossed_edges)] # whirlpool shuffle @@ -307,9 +307,9 @@ def link_overworld(world, player): logging.getLogger('').debug('Shuffling overworld layout') if world.owShuffle[player] == 'vanilla': - # apply outstanding swaps + # apply outstanding flips trimmed_groups = performSwap(trimmed_groups, edges_to_swap) - assert len(edges_to_swap) == 0, 'Not all edges were swapped successfully: ' + ', '.join(edges_to_swap) + assert len(edges_to_swap) == 0, 'Not all edges were flipped successfully: ' + ', '.join(edges_to_swap) # vanilla transitions groups = list(trimmed_groups.values()) @@ -619,8 +619,8 @@ def shuffle_tiles(world, groups, result_list, do_grouped, player): attempts = 1000 while True: - if attempts == 0: # expected to only occur with custom swaps - raise GenerationException('Could not find valid tile swaps') + if attempts == 0: # expected to only occur with custom flips + raise GenerationException('Could not find valid tile flips') # tile shuffle happens here removed = list() @@ -702,7 +702,7 @@ def define_tile_groups(world, player, do_grouped): if world.mode[player] == 'standard' and (0x1b in group or 0x2b in group or 0x2c in group): return False - # sanctuary/chapel should not be swapped if S+Q guaranteed to output on that screen + # sanctuary/chapel should not be flipped if S+Q guaranteed to output on that screen if 0x13 in group and ((world.shuffle[player] in ['vanilla', 'dungeonssimple', 'dungeonsfull'] \ and (world.mode[player] in ['standard', 'inverted'] or world.doorShuffle[player] != 'crossed' or world.intensity[player] < 3)) \ or (world.shuffle[player] in ['lite', 'lean'] and world.mode[player] == 'inverted')): diff --git a/README.md b/README.md index 36abf9da..bf39ece6 100644 --- a/README.md +++ b/README.md @@ -55,18 +55,18 @@ This is a common sentiment among those who are unfamiliar with OWR's offerings. OWR definitely has a lot of options, and all of them by themselves are pretty simple to grasp, but combining multiple OWR options together increases the complexity and confusion in exponential fashion. Now, of course, some OWR options like Flute Shuffle can safely be combined at any level and isn't gonna make anything more complicated. But specifically, avoid combining these 3 options, at least when going for your first seed: - OW Layout Shuffle -- OW Tile Swap (Mixed) +- OW Tile Flip (Mixed) - Crossed OW ## "Any recommendations for a first-timer?" For a first (and second) seed... *and I say "second" because I feel like both of these recommendations I'm about to make have VERY different vibes, have different levels of challenge, but are both, of their own right, worthy of being tried at least once.* Your first OWR experience can be combined with any mode combination that you are already familiar with and have a lot of experience in playing. If you like Crosskeys and feel very comfortable running that, feel free to turn on all those settings in addition to ONE of these two options: -1. `OW Tile Swap (Mixed)` - Overly, a pretty easy-breezy mode, it doesn't require too much big brain, and is pretty managable even without proper logic tracking, as long as you at least have a standard map tracker. This is actually my favorite way to run OWR today +1. `OW Tile Flip (Mixed)` - Overly, a pretty easy-breezy mode, it doesn't require too much big brain, and is pretty managable even without proper logic tracking, as long as you at least have a standard map tracker. This is actually my favorite way to run OWR today - DO NOT turn on Layout or Whirlpool Shuffle, leave this on `Vanilla` - DO NOT turn on Crossed OWR - `Flute Shuffle` or `Bonk Drops` could be enabled if desired, altho I'd recommend against it, at least for a fresh viewpoint of Mixed OWR -2. `OW Layout Shuffle` - Set to `Parallel`. This is the original spirit and vision of OWR from the time of its own founding. It's definitely much more complicated to run than OW Tile Swap, so keep that in mind. +2. `OW Layout Shuffle` - Set to `Parallel`. This is the original spirit and vision of OWR from the time of its own founding. It's definitely much more complicated to run than OW Tile Flip, so keep that in mind. - `Starting Boots` - Either actual boots or pseudoboots, you will be spending a lot of time navigating the OW, so it's best to do it with the ability to run fast. - - DO NOT turn on OW Tile Swap (Mixed) + - DO NOT turn on OW Tile Flip (Mixed) - DO NOT turn on Crossed OWR - Enable `Whirlpool Shuffle` - Recommended to always be enabled with Layout Shuffle - Enable `Keep Similar Edges Together` - This just helps keep some of your sanity for a first experience @@ -134,7 +134,7 @@ Note: These changes do impact the logic. If you use `CodeTracker`, these Inverte Only settings specifically added by this Overworld Shuffle fork are found here. All door and entrance randomizer settings are supported. See their [readme](https://github.com/Aerinon/ALttPDoorRandomizer/blob/master/README.md) ## Overworld Layout Shuffle (--ow_shuffle) -OW Edge Transitions are shuffled to create new world layouts. A brief visual representation of this can be viewed [here](https://media.discordapp.net/attachments/783989090017738753/857299555183362078/ow-modes.gif). (This graphic also includes combinations of Crossed and Tile Swap) +OW Edge Transitions are shuffled to create new world layouts. A brief visual representation of this can be viewed [here](https://media.discordapp.net/attachments/783989090017738753/857299555183362078/ow-modes.gif). (This graphic also includes combinations of Crossed and Tile Flip) ### Vanilla @@ -168,11 +168,11 @@ Transitions will remain same-world. ### Grouped -This option shuffles connections cross-world in the same manner as Tile Swap/Mixed, the connections coming in and going out of a Tile Group (see `Terminology` section above) are crossed (ie. meaning it is impossible to take a different path to a tile and end up in the opposite world, unlike Limited and Chaos). This is considered the simplest way to play Crossed OWR. +This option shuffles connections cross-world in the same manner as Tile Flip (Mixed), the connections coming in and going out of a Tile Group (see `Terminology` section above) are crossed (ie. meaning it is impossible to take a different path to a tile and end up in the opposite world, unlike Limited and Chaos). This is considered the simplest way to play Crossed OWR. ### Polar -Only effective if Mixed/Tile Swap is enabled. Polar follows the same principle as Grouped, except that it preserves the original/vanilla connections even when tiles are swapped/mixed. This results in a completely vanilla overworld, except that some tiles will transform Link to a Bunny. Even though these tiles give the appearance of your normal LW tile, due to how Mixed/Tile Swap works, those LW tiles give DW properties (such as bunnying, ability to mirror, and prevents flute usage). This offers an interesting twist on Mixed where you have a pre-conditioned knowledge of the terrain you will encounter, but not necessarily be able to do what you need to do there, due to bunny state. (see `Tile Swap/Mixed` section for more details) +Only effective if Tile Flip (Mixed) is enabled. Polar follows the same principle as Grouped, except that it preserves the original/vanilla connections even when tiles are flipped/mixed. This results in a completely vanilla overworld, except that some tiles will transform Link to a Bunny. Even though these tiles give the appearance of your normal LW tile, due to how Tile Flip works, those LW tiles give DW properties (such as bunnying, ability to mirror, and prevents flute usage). This offers an interesting twist on Mixed where you have a pre-conditioned knowledge of the terrain you will encounter, but not necessarily be able to do what you need to do there, due to bunny state. (see `Tile Flip / Mixed` section for more details) ### Limited @@ -194,17 +194,17 @@ This keeps similar edge transitions together. ie. The 2 west land edges of Potio Note: This affects OW Layout Shuffle mostly, but also affects Limited and Chaos modes in Crossed OW. -## Tile Swap / Mixed Overworld (--ow_mixed) +## Tile Flip / Mixed Overworld (--ow_mixed) -Tile Swap (often referred to as Mixed OWR) can be thought of as a hybrid of Open and Inverted, where OW tiles are randomly chosen to be swapped to become a part of the opposite world. When this occurs, that tile will use the Inverted version of that tile. For instance, if the Cave 45 tile becomes swapped, that means while walking around in the LW, you will find the screen that's south of Stumpy instead, and Cave 45 will instead be found in the DW; but like Inverted, the Cave 45 tile is modified to not have a ledge, this ensures that it will be possible to access it. +Tile Flip (often referred to as Mixed OWR) can be thought of as a hybrid of Open and Inverted, where OW tiles are randomly chosen to be flipped to become a part of the opposite world. When this occurs, that tile will use the Inverted version of that tile. For instance, if the Cave 45 tile becomes flipped, that means while walking around in the LW, you will find the screen that's south of Stumpy instead, and Cave 45 will instead be found in the DW; but like Inverted, the Cave 45 tile is modified to not have a ledge, this ensures that it will be possible to access it. Being that this uses concepts from Inverted, it will be important to review the OWR-exclusive changes that have been made to Inverted (often referred to as Inverted 2.0). See `Inverted Changes` for more details. During gameplay: - When on the OW, there will be an L or D in the upper left corner, indicating which world you are currently in. Mirroring still works the same, you must be in the DW to mirror to the LW. - - When doing a map check (pressing X while on the OW), the tiles shown will reflect the swapped tiles. This means that dungeon prizes will show the prizes for the dungeons that are now part of that world, beware of Desert/Mire and Eastern/PoD. Here is an image showing the difference of appearance when tiles are swapped on the [map check](https://media.discordapp.net/attachments/783989090017738753/970646558049714196/lttp-lw-mapcheck.gif) screen. + - When doing a map check (pressing X while on the OW), the tiles shown will reflect the flipped tiles. This means that dungeon prizes will show the prizes for the dungeons that are now part of that world, beware of Desert/Mire and Eastern/PoD. Here is an image showing the difference of appearance when tiles are flipped on the [map check](https://media.discordapp.net/attachments/783989090017738753/970646558049714196/lttp-lw-mapcheck.gif) screen. -Note: Tiles are put into Tile Groups (see `Terminology`) that must be shuffled together when certain settings are enabled. For instance, if ER is disabled, then any tiles that have a connector cave that leads to a different tile, then those tiles must swap together. +Note: Tiles are put into Tile Groups (see `Terminology`) that must be shuffled together when certain settings are enabled. For instance, if ER is disabled, then any tiles that have a connector cave that leads to a different tile, then those tiles must flip together. ## Whirlpool Shuffle (--ow_whirlpool) @@ -350,7 +350,7 @@ This keeps similar edge transitions paired together with other pairs of transiti --ow_mixed ``` -This gives each OW tile a random chance to be swapped to the opposite world +This gives each OW tile a random chance to be flipped to the opposite world ``` --ow_fluteshuffle diff --git a/resources/app/cli/lang/en.json b/resources/app/cli/lang/en.json index 5869f144..afc77cba 100644 --- a/resources/app/cli/lang/en.json +++ b/resources/app/cli/lang/en.json @@ -221,8 +221,8 @@ "None: No transitions are cross-world connections.", "Grouped: This ensures a two-plane separation so that you cannot", " walk around and access the other plane version by walking.", - "Polar: Only used when Mixed is enabled. This retains original", - " connections even when overworld tiles are swapped.", + "Polar: Only used when Tile Flip is enabled. This retains original", + " connections even when overworld tiles are flipped.", "Limited: Exactly nine transitions are randomly chosen as", " cross-world connections (to emulate the nine portals).", "Chaos: Every transition has a 50/50 chance to become a", diff --git a/resources/app/gui/lang/en.json b/resources/app/gui/lang/en.json index 9a92eb81..bcfba383 100644 --- a/resources/app/gui/lang/en.json +++ b/resources/app/gui/lang/en.json @@ -142,7 +142,7 @@ "randomizer.overworld.keepsimilar": "Keep Similar Edges Together", - "randomizer.overworld.mixed": "Tile Swap (Mixed)", + "randomizer.overworld.mixed": "Tile Flip (Mixed)", "randomizer.overworld.whirlpool": "Whirlpool Shuffle",