From dc5319ae97417b99655d7a5939404d98fda757f7 Mon Sep 17 00:00:00 2001 From: compiling <8335770+compiling@users.noreply.github.com> Date: Sat, 31 Oct 2020 14:37:34 +1100 Subject: [PATCH] Don't fix fake worlds for glitched modes. Pre-open pyramid for crystals goal with entrance shuffles that don't move Ganon (vanilla, dungeon-only shuffles) --- BaseClasses.py | 3 ++- Rom.py | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/BaseClasses.py b/BaseClasses.py index 3bb7c9bd..55a46911 100644 --- a/BaseClasses.py +++ b/BaseClasses.py @@ -73,7 +73,8 @@ class World(object): self.customitemarray = customitemarray self.can_take_damage = True self.difficulty_requirements = None - self.fix_fake_world = True + self.fix_fake_world = logic not in ['owglitches', 'nologic'] or shuffle in ['crossed', 'insanity', 'madness_legacy'] + self.pre_open_pyramid = goal == 'crystals' and shuffle in ['vanilla', 'dungeonssimple', 'dungeonsfull'] self.boss_shuffle = boss_shuffle self.hints = hints self.crystals_needed_for_ganon = 7 diff --git a/Rom.py b/Rom.py index 894cf11a..d9006c82 100644 --- a/Rom.py +++ b/Rom.py @@ -847,7 +847,7 @@ def patch_rom(world, player, rom): rom.write_byte(0x180211, 0x06) #Game type, we set the Entrance and item randomization flags # assorted fixes - rom.write_byte(0x1800A2, 0x01) # remain in real dark world when dying in dark world dungeon before killing aga1 + rom.write_byte(0x1800A2, 0x01 if world.fix_fake_world else 0x00) # remain in real dark world when dying in dark world dungeon before killing aga1 rom.write_byte(0x180169, 0x01 if world.lock_aga_door_in_escape else 0x00) # Lock or unlock aga tower door during escape sequence. if world.mode == 'inverted': rom.write_byte(0x180169, 0x02) # lock aga/ganon tower door with crystals in inverted @@ -859,14 +859,14 @@ def patch_rom(world, player, rom): rom.write_bytes(0x50563, [0x3F, 0x14]) # disable below ganon chest rom.write_byte(0x50599, 0x00) # disable below ganon chest rom.write_bytes(0xE9A5, [0x7E, 0x00, 0x24]) # disable below ganon chest - rom.write_byte(0x18008B, 0x00) # Pyramid Hole not pre-opened - rom.write_byte(0x18008C, 0x01 if world.crystals_needed_for_gt == 0 else 0x00) # Pyramid Hole pre-opened if crystal requirement is 0 + rom.write_byte(0x18008B, 0x01 if world.pre_open_pyramid else 0x00) # Pyramid Hole pre-opened for crystals goal if Ganon is not shuffled + rom.write_byte(0x18008C, 0x01 if world.crystals_needed_for_gt == 0 else 0x00) # Ganon's Tower pre-opened if crystal requirement is 0 rom.write_byte(0xF5D73, 0xF0) # bees are catchable rom.write_byte(0xF5F10, 0xF0) # bees are catchable rom.write_byte(0x180086, 0x00 if world.aga_randomness else 0x01) # set blue ball and ganon warp randomness rom.write_byte(0x1800A0, 0x01) # return to light world on s+q without mirror rom.write_byte(0x1800A1, 0x01) # enable overworld screen transition draining for water level inside swamp - rom.write_byte(0x180174, 0x01 if world.fix_fake_world else 0x00) + rom.write_byte(0x180174, 0x01 if world.fix_fake_world else 0x00) # Fix fake worlds when traveling between light/dark world in the underworld rom.write_byte(0x18017E, 0x01) # Fairy fountains only trade in bottles rom.write_byte(0x180034, 0x0A) # starting max bombs rom.write_byte(0x180035, 30) # starting max arrows