Merge branch 'OverworldShuffleDev' into OverworldShuffle
This commit is contained in:
@@ -2898,7 +2898,8 @@ class Spoiler(object):
|
|||||||
'triforcegoal': self.world.treasure_hunt_count,
|
'triforcegoal': self.world.treasure_hunt_count,
|
||||||
'triforcepool': self.world.treasure_hunt_total,
|
'triforcepool': self.world.treasure_hunt_total,
|
||||||
'race': self.world.settings.world_rep['meta']['race'],
|
'race': self.world.settings.world_rep['meta']['race'],
|
||||||
'code': {p: Settings.make_code(self.world, p) for p in range(1, self.world.players + 1)}
|
'code': {p: Settings.make_code(self.world, p) for p in range(1, self.world.players + 1)},
|
||||||
|
'seed': self.world.seed
|
||||||
}
|
}
|
||||||
|
|
||||||
for p in range(1, self.world.players + 1):
|
for p in range(1, self.world.players + 1):
|
||||||
@@ -3018,7 +3019,7 @@ class Spoiler(object):
|
|||||||
if self.shops:
|
if self.shops:
|
||||||
out['Shops'] = self.shops
|
out['Shops'] = self.shops
|
||||||
out['playthrough'] = self.playthrough
|
out['playthrough'] = self.playthrough
|
||||||
out['paths'] = {l:p for (l, p) in self.paths if l not in self.suppress_spoiler_locations}
|
out['paths'] = {l:p for (l, p) in self.paths.items() if l not in self.suppress_spoiler_locations}
|
||||||
out['Bosses'] = self.bosses
|
out['Bosses'] = self.bosses
|
||||||
out['meta'] = self.metadata
|
out['meta'] = self.metadata
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.3.1.2
|
||||||
|
- Retro now gives a universal key from bottle vendor fish prize
|
||||||
|
- Fixed issue with Aga Door preventing Murahduhla Cutscene
|
||||||
|
- Fixed issue with Ice Cave/Shopping Mall water transitions not flipping in Mixed OWR
|
||||||
|
- Minor improvements to item GFX draw routine
|
||||||
|
|
||||||
## 0.3.1.1
|
## 0.3.1.1
|
||||||
- \~Merged in DR v1.2.0.17~
|
- \~Merged in DR v1.2.0.17~
|
||||||
- Various renames/reorganizations of region/rule definition to match upcoming DR world remodel
|
- Various renames/reorganizations of region/rule definition to match upcoming DR world remodel
|
||||||
|
|||||||
2
Main.py
2
Main.py
@@ -227,6 +227,8 @@ def main(args, seed=None, fish=None):
|
|||||||
update_world_regions(world, player)
|
update_world_regions(world, player)
|
||||||
mark_light_dark_world_regions(world, player)
|
mark_light_dark_world_regions(world, player)
|
||||||
create_dynamic_exits(world, player)
|
create_dynamic_exits(world, player)
|
||||||
|
if args.print_custom_yaml:
|
||||||
|
world.settings.record_overworld(world)
|
||||||
|
|
||||||
init_districts(world)
|
init_districts(world)
|
||||||
|
|
||||||
|
|||||||
@@ -1153,6 +1153,7 @@ OWTileRegions = bidict({
|
|||||||
'Lake Hylia Water D': 0x35,
|
'Lake Hylia Water D': 0x35,
|
||||||
|
|
||||||
'Ice Cave Area': 0x37,
|
'Ice Cave Area': 0x37,
|
||||||
|
'Ice Cave Water': 0x37,
|
||||||
|
|
||||||
'Desert Pass Area': 0x3a,
|
'Desert Pass Area': 0x3a,
|
||||||
'Middle Aged Man': 0x3a,
|
'Middle Aged Man': 0x3a,
|
||||||
@@ -1292,6 +1293,7 @@ OWTileRegions = bidict({
|
|||||||
'Ice Palace Area': 0x75,
|
'Ice Palace Area': 0x75,
|
||||||
|
|
||||||
'Shopping Mall Area': 0x77,
|
'Shopping Mall Area': 0x77,
|
||||||
|
'Shopping Mall Water': 0x77,
|
||||||
|
|
||||||
'Swamp Nook Area': 0x7a,
|
'Swamp Nook Area': 0x7a,
|
||||||
|
|
||||||
|
|||||||
@@ -383,7 +383,7 @@ boots_clips_local = [ # (name, from_region, to_region)
|
|||||||
|
|
||||||
('Hyrule Castle To Water Clip', 'Hyrule Castle Area', 'Hyrule Castle Water'), #fake flipper
|
('Hyrule Castle To Water Clip', 'Hyrule Castle Area', 'Hyrule Castle Water'), #fake flipper
|
||||||
|
|
||||||
('Bat Cave River Clip Spot', 'Blacksmith Area', 'Blacksmith Ledge'), #cannot guarantee camera correction
|
#('Bat Cave River Clip Spot', 'Blacksmith Area', 'Blacksmith Ledge'), #TODO: This should be added in MG (screenwrap transition)
|
||||||
|
|
||||||
('Maze Race Item Get Ledge Clip', 'Maze Race Area', 'Maze Race Prize'),
|
('Maze Race Item Get Ledge Clip', 'Maze Race Area', 'Maze Race Prize'),
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,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.3.1.1'
|
version_number = '0.3.1.2'
|
||||||
# branch indicator is intentionally different across branches
|
# branch indicator is intentionally different across branches
|
||||||
version_branch = ''
|
version_branch = ''
|
||||||
|
|
||||||
@@ -639,17 +639,17 @@ def shuffle_tiles(world, groups, result_list, do_grouped, player):
|
|||||||
if world.customizer:
|
if world.customizer:
|
||||||
if not do_grouped:
|
if not do_grouped:
|
||||||
custom_flips = world.customizer.get_owtileflips()
|
custom_flips = world.customizer.get_owtileflips()
|
||||||
if custom_flips:
|
if custom_flips and player in custom_flips:
|
||||||
|
custom_flips = custom_flips[player]
|
||||||
nonflipped_groups = list()
|
nonflipped_groups = list()
|
||||||
forced_flips = list()
|
forced_flips = list()
|
||||||
forced_nonflips = list()
|
forced_nonflips = list()
|
||||||
player_key = player
|
if 'undefined_chance' in custom_flips:
|
||||||
if 'undefined_chance' in custom_flips[player_key]:
|
undefined_chance = custom_flips['undefined_chance']
|
||||||
undefined_chance = custom_flips[player_key]['undefined_chance']
|
if 'force_flip' in custom_flips:
|
||||||
if 'force_flip' in custom_flips[player_key]:
|
forced_flips = custom_flips['force_flip']
|
||||||
forced_flips = custom_flips[player_key]['force_flip']
|
if 'force_no_flip' in custom_flips:
|
||||||
if 'force_no_flip' in custom_flips[player_key]:
|
forced_nonflips = custom_flips['force_no_flip']
|
||||||
forced_nonflips = custom_flips[player_key]['force_no_flip']
|
|
||||||
|
|
||||||
for group in groups:
|
for group in groups:
|
||||||
if any(owid in group[0] for owid in forced_nonflips):
|
if any(owid in group[0] for owid in forced_nonflips):
|
||||||
|
|||||||
5
Rom.py
5
Rom.py
@@ -38,7 +38,7 @@ from source.dungeon.RoomList import Room0127
|
|||||||
|
|
||||||
|
|
||||||
JAP10HASH = '03a63945398191337e896e5771f77173'
|
JAP10HASH = '03a63945398191337e896e5771f77173'
|
||||||
RANDOMIZERBASEHASH = 'a5c37eecbe3e52b49639c0d0ad91a7c3'
|
RANDOMIZERBASEHASH = '614fa2fcbb4644beddadcf356e121d5a'
|
||||||
|
|
||||||
|
|
||||||
class JsonRom(object):
|
class JsonRom(object):
|
||||||
@@ -1582,7 +1582,8 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False):
|
|||||||
rom.write_byte(0x301FC, 0xDA if world.bow_mode[player].startswith('retro') else 0xE1) # rupees replace arrows under pots
|
rom.write_byte(0x301FC, 0xDA if world.bow_mode[player].startswith('retro') else 0xE1) # rupees replace arrows under pots
|
||||||
if enemized:
|
if enemized:
|
||||||
rom.write_byte(0x1B152e, 0xDA if world.bow_mode[player].startswith('retro') else 0xE1)
|
rom.write_byte(0x1B152e, 0xDA if world.bow_mode[player].startswith('retro') else 0xE1)
|
||||||
rom.write_byte(0x30052, 0xDB if world.bow_mode[player].startswith('retro') else 0xE2) # replace arrows in fish prize from bottle merchant
|
if world.bow_mode[player].startswith('retro'):
|
||||||
|
rom.write_byte(0x30052, 0xE4 if world.keyshuffle[player] == 'universal' else 0xDB) # replace arrows in fish prize from bottle merchant
|
||||||
rom.write_bytes(0xECB4E, [0xA9, 0x00, 0xEA, 0xEA] if world.bow_mode[player].startswith('retro') else [0xAF, 0x77, 0xF3, 0x7E]) # Thief steals rupees instead of arrows
|
rom.write_bytes(0xECB4E, [0xA9, 0x00, 0xEA, 0xEA] if world.bow_mode[player].startswith('retro') else [0xAF, 0x77, 0xF3, 0x7E]) # Thief steals rupees instead of arrows
|
||||||
rom.write_bytes(0xF0D96, [0xA9, 0x00, 0xEA, 0xEA] if world.bow_mode[player].startswith('retro') else [0xAF, 0x77, 0xF3, 0x7E]) # Pikit steals rupees instead of arrows
|
rom.write_bytes(0xF0D96, [0xA9, 0x00, 0xEA, 0xEA] if world.bow_mode[player].startswith('retro') else [0xAF, 0x77, 0xF3, 0x7E]) # Pikit steals rupees instead of arrows
|
||||||
rom.write_bytes(0xEDA5, [0x35, 0x41] if world.bow_mode[player].startswith('retro') else [0x43, 0x44]) # Chest game gives rupees instead of arrows
|
rom.write_bytes(0xEDA5, [0x35, 0x41] if world.bow_mode[player].startswith('retro') else [0x43, 0x44]) # Chest game gives rupees instead of arrows
|
||||||
|
|||||||
Binary file not shown.
@@ -232,6 +232,14 @@ class CustomSettings(object):
|
|||||||
self.world_rep['settings'] = settings_dict
|
self.world_rep['settings'] = settings_dict
|
||||||
for p in self.player_range:
|
for p in self.player_range:
|
||||||
settings_dict[p] = {}
|
settings_dict[p] = {}
|
||||||
|
settings_dict[p]['ow_shuffle'] = world.owShuffle[p]
|
||||||
|
settings_dict[p]['ow_terrain'] = world.owTerrain[p]
|
||||||
|
settings_dict[p]['ow_crossed'] = world.owCrossed[p]
|
||||||
|
settings_dict[p]['ow_keepsimilar'] = world.owKeepSimilar[p]
|
||||||
|
settings_dict[p]['ow_mixed'] = world.owMixed[p]
|
||||||
|
settings_dict[p]['ow_whirlpool'] = world.owWhirlpoolShuffle[p]
|
||||||
|
settings_dict[p]['ow_fluteshuffle'] = world.owFluteShuffle[p]
|
||||||
|
settings_dict[p]['bonk_drops'] = world.shuffle_bonk_drops[p]
|
||||||
settings_dict[p]['shuffle'] = world.shuffle[p]
|
settings_dict[p]['shuffle'] = world.shuffle[p]
|
||||||
settings_dict[p]['door_shuffle'] = world.doorShuffle[p]
|
settings_dict[p]['door_shuffle'] = world.doorShuffle[p]
|
||||||
settings_dict[p]['intensity'] = world.intensity[p]
|
settings_dict[p]['intensity'] = world.intensity[p]
|
||||||
@@ -329,6 +337,15 @@ class CustomSettings(object):
|
|||||||
else:
|
else:
|
||||||
placements[location.player][location.name] = location.item.name
|
placements[location.player][location.name] = location.item.name
|
||||||
|
|
||||||
|
def record_overworld(self, world):
|
||||||
|
self.world_rep['ow-tileflips'] = flips = {}
|
||||||
|
for p in self.player_range:
|
||||||
|
if p in world.owswaps and len(world.owswaps[p][0]) > 0:
|
||||||
|
flips[p] = {}
|
||||||
|
flips[p]['force_flip'] = list(f for f in world.owswaps[p][0] if f < 0x40 or f >= 0x80)
|
||||||
|
flips[p]['force_flip'].sort()
|
||||||
|
flips[p]['undefined_chance'] = 0
|
||||||
|
|
||||||
def record_entrances(self, world):
|
def record_entrances(self, world):
|
||||||
self.world_rep['entrances'] = entrances = {}
|
self.world_rep['entrances'] = entrances = {}
|
||||||
world.custom_entrances = {}
|
world.custom_entrances = {}
|
||||||
|
|||||||
Reference in New Issue
Block a user