Merge remote-tracking branch 'origin/OverworldShuffle' into GwaaKiwi
This commit is contained in:
@@ -1,5 +1,14 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.6.0.5
|
||||||
|
- Emergency fix for map/key totals in non-DR
|
||||||
|
|
||||||
|
## 0.6.0.4
|
||||||
|
- Fixed pause menu to show compass count and prizes to also show if you've seen them
|
||||||
|
- Fixed crash when Old Man follower exits with you at his destination entrance
|
||||||
|
- Old Man fetch cave is no longer restricted from exiting at his destination cave in ER
|
||||||
|
- Kodongo AI is returned to its vanilla behavior in their vanilla rooms
|
||||||
|
|
||||||
## 0.6.0.3
|
## 0.6.0.3
|
||||||
- Arrghus' Room has water floor restored in boss shuffle
|
- Arrghus' Room has water floor restored in boss shuffle
|
||||||
- Fixed no music in Links House when S+Q from Kakariko
|
- Fixed no music in Links House when S+Q from Kakariko
|
||||||
|
|||||||
2
Main.py
2
Main.py
@@ -1071,7 +1071,7 @@ def create_playthrough(world):
|
|||||||
|
|
||||||
collection_spheres.append(sphere)
|
collection_spheres.append(sphere)
|
||||||
|
|
||||||
logging.getLogger('').debug(world.fish.translate("cli","cli","building.final.spheres"), len(collection_spheres), len(sphere), len(required_locations))
|
logging.getLogger('').debug(world.fish.translate("cli","cli","building.final.spheres"), len(collection_spheres), len(sphere), len(sphere) + len(required_locations))
|
||||||
if not sphere:
|
if not sphere:
|
||||||
if world.has_beaten_game(state):
|
if world.has_beaten_game(state):
|
||||||
required_locations.clear()
|
required_locations.clear()
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ from OWEdges import OWTileRegions, OWEdgeGroups, OWEdgeGroupsTerrain, OWExitType
|
|||||||
from OverworldGlitchRules import create_owg_connections
|
from OverworldGlitchRules import create_owg_connections
|
||||||
from Utils import bidict
|
from Utils import bidict
|
||||||
|
|
||||||
version_number = '0.6.0.3'
|
version_number = '0.6.0.5'
|
||||||
# branch indicator is intentionally different across branches
|
# branch indicator is intentionally different across branches
|
||||||
version_branch = ''
|
version_branch = ''
|
||||||
|
|
||||||
|
|||||||
18
Rom.py
18
Rom.py
@@ -43,7 +43,7 @@ from source.enemizer.Enemizer import write_enemy_shuffle_settings
|
|||||||
|
|
||||||
|
|
||||||
JAP10HASH = '03a63945398191337e896e5771f77173'
|
JAP10HASH = '03a63945398191337e896e5771f77173'
|
||||||
RANDOMIZERBASEHASH = '54a07f064594e92f136cd994067a59c1'
|
RANDOMIZERBASEHASH = '294beab5461ddb889eefa4ca450a8f8b'
|
||||||
|
|
||||||
|
|
||||||
class JsonRom(object):
|
class JsonRom(object):
|
||||||
@@ -794,6 +794,12 @@ def patch_rom(world, rom, player, team, is_mystery=False):
|
|||||||
for room in world.rooms:
|
for room in world.rooms:
|
||||||
if room.player == player and room.palette is not None:
|
if room.player == player and room.palette is not None:
|
||||||
rom.write_byte(0x13f200+room.index, room.palette)
|
rom.write_byte(0x13f200+room.index, room.palette)
|
||||||
|
else:
|
||||||
|
if world.keyshuffle[player] != 'universal':
|
||||||
|
for name, layout in world.key_layout[player].items():
|
||||||
|
offset = compass_data[name][4]//2
|
||||||
|
rom.write_byte(0x13f020+offset, layout.max_chests + layout.max_drops) # not currently used
|
||||||
|
rom.write_byte(0x187010+offset, layout.max_chests)
|
||||||
if world.doorShuffle[player] == 'basic':
|
if world.doorShuffle[player] == 'basic':
|
||||||
rom.write_byte(0x138002, 1)
|
rom.write_byte(0x138002, 1)
|
||||||
for door in world.doors:
|
for door in world.doors:
|
||||||
@@ -1319,6 +1325,9 @@ def patch_rom(world, rom, player, team, is_mystery=False):
|
|||||||
| (0x04 if world.mapshuffle[player] != 'none' else 0x00)
|
| (0x04 if world.mapshuffle[player] != 'none' else 0x00)
|
||||||
| (0x08 if world.bigkeyshuffle[player] != 'none' else 0x00))) # free roaming item text boxes
|
| (0x08 if world.bigkeyshuffle[player] != 'none' else 0x00))) # free roaming item text boxes
|
||||||
rom.write_byte(0x18003B, 0x01 if world.mapshuffle[player] not in ['none', 'nearby'] else 0x00) # maps showing crystals on overworld
|
rom.write_byte(0x18003B, 0x01 if world.mapshuffle[player] not in ['none', 'nearby'] else 0x00) # maps showing crystals on overworld
|
||||||
|
if world.keyshuffle[player] != 'universal' and (world.mapshuffle[player] not in ['none', 'nearby'] or world.doorShuffle[player] != 'vanilla'
|
||||||
|
or world.dropshuffle[player] != 'none' or world.pottery[player] not in ['none', 'cave']):
|
||||||
|
rom.write_byte(0x18003A, 0x01) # show key counts on map pickup
|
||||||
|
|
||||||
# compasses showing dungeon count
|
# compasses showing dungeon count
|
||||||
compass_mode = 0x80 if world.compassshuffle[player] not in ['none', 'nearby'] else 0x00
|
compass_mode = 0x80 if world.compassshuffle[player] not in ['none', 'nearby'] else 0x00
|
||||||
@@ -1474,9 +1483,10 @@ def patch_rom(world, rom, player, team, is_mystery=False):
|
|||||||
| (0x10 if world.logic[player] == 'nologic' else 0))) # boss icon
|
| (0x10 if world.logic[player] == 'nologic' else 0))) # boss icon
|
||||||
|
|
||||||
def get_reveal_bytes(itemName):
|
def get_reveal_bytes(itemName):
|
||||||
for dungeon in world.dungeons:
|
if world.prizeshuffle[player] != 'wild':
|
||||||
if dungeon.player == player and dungeon.prize and dungeon.prize.name == itemName:
|
for dungeon in world.dungeons:
|
||||||
return reveal_bytes.get(dungeon.name, 0x0000)
|
if dungeon.player == player and dungeon.prize and dungeon.prize.name == itemName:
|
||||||
|
return reveal_bytes.get(dungeon.name, 0x0000)
|
||||||
return 0x0000
|
return 0x0000
|
||||||
|
|
||||||
write_int16(rom, 0x18017A, get_reveal_bytes('Green Pendant')) # Sahasrahla reveal
|
write_int16(rom, 0x18017A, get_reveal_bytes('Green Pendant')) # Sahasrahla reveal
|
||||||
|
|||||||
Binary file not shown.
@@ -403,7 +403,6 @@ def do_old_man_cave_exit(entrances, exits, avail, cross_world):
|
|||||||
else:
|
else:
|
||||||
region_name = 'West Dark Death Mountain (Top)'
|
region_name = 'West Dark Death Mountain (Top)'
|
||||||
om_cave_options = list(get_accessible_entrances(region_name, avail, [], cross_world, True, True, True, True))
|
om_cave_options = list(get_accessible_entrances(region_name, avail, [], cross_world, True, True, True, True))
|
||||||
om_cave_options = [e for e in om_cave_options if e in entrances and e != 'Old Man House (Bottom)']
|
|
||||||
if avail.swapped:
|
if avail.swapped:
|
||||||
om_cave_options = [e for e in om_cave_options if e not in Forbidden_Swap_Entrances]
|
om_cave_options = [e for e in om_cave_options if e not in Forbidden_Swap_Entrances]
|
||||||
assert len(om_cave_options), 'No available entrances left to place Old Man Cave'
|
assert len(om_cave_options), 'No available entrances left to place Old Man Cave'
|
||||||
|
|||||||
Reference in New Issue
Block a user