Merge remote-tracking branch 'upstream/DoorDevUnstable' into OverworldShuffleDev
This commit is contained in:
@@ -1071,6 +1071,7 @@ def assign_cross_keys(dungeon_builders, world, player):
|
||||
# Step 3: Initial valid combination find - reduce flex if needed
|
||||
for name, builder in dungeon_builders.items():
|
||||
suggested = builder.key_doors_num - builder.key_drop_cnt
|
||||
builder.total_keys = builder.key_doors_num
|
||||
find_valid_combination(builder, start_regions_map[name], world, player)
|
||||
actual_chest_keys = builder.key_doors_num - builder.key_drop_cnt
|
||||
if actual_chest_keys < suggested:
|
||||
@@ -1087,6 +1088,7 @@ def assign_cross_keys(dungeon_builders, world, player):
|
||||
name = builder.name
|
||||
logger.debug('Cross Dungeon: Increasing key count by 1 for %s', name)
|
||||
builder.key_doors_num += 1
|
||||
builder.total_keys = builder.key_doors_num
|
||||
result = find_valid_combination(builder, start_regions_map[name], world, player, drop_keys=False)
|
||||
if result:
|
||||
remaining -= 1
|
||||
@@ -1380,7 +1382,7 @@ def shuffle_key_doors(builder, world, player):
|
||||
skips.append(world.get_door(dp.door_a, player))
|
||||
break
|
||||
num_key_doors += 1
|
||||
builder.key_doors_num = num_key_doors
|
||||
builder.key_doors_num = builder.total_keys = num_key_doors
|
||||
find_small_key_door_candidates(builder, start_regions, world, player)
|
||||
find_valid_combination(builder, start_regions, world, player)
|
||||
reassign_key_doors(builder, world, player)
|
||||
|
||||
@@ -1175,6 +1175,7 @@ class DungeonBuilder(object):
|
||||
self.pre_open_stonewalls = set() # used by stonewall system
|
||||
|
||||
self.candidates = None
|
||||
self.total_keys = None
|
||||
self.key_doors_num = None
|
||||
self.combo_size = None
|
||||
self.flex = 0
|
||||
|
||||
@@ -375,6 +375,13 @@ flexible_starts = {
|
||||
'Skull Woods': ['Skull Left Drop', 'Skull Pinball']
|
||||
}
|
||||
|
||||
default_key_counts = {
|
||||
'Hyrule Castle': 1, 'Eastern Palace': 0, 'Desert Palace': 1,
|
||||
'Tower of Hera': 1, 'Agahnims Tower': 2, 'Palace of Darkness': 6,
|
||||
'Swamp Palace': 1, 'Skull Woods': 3, 'Thieves Town': 1,
|
||||
'Ice Palace': 2, 'Misery Mire': 3, 'Turtle Rock': 4, 'Ganons Tower': 4
|
||||
}
|
||||
|
||||
dungeon_keys = {
|
||||
'Hyrule Castle': 'Small Key (Escape)',
|
||||
'Eastern Palace': 'Small Key (Eastern Palace)',
|
||||
|
||||
@@ -4,7 +4,7 @@ from collections import defaultdict, deque
|
||||
|
||||
from BaseClasses import DoorType
|
||||
from Regions import dungeon_events
|
||||
from Dungeons import dungeon_keys, dungeon_bigs
|
||||
from Dungeons import dungeon_keys, dungeon_bigs, default_key_counts
|
||||
from DungeonGenerator import ExplorationState, special_big_key_doors
|
||||
|
||||
|
||||
@@ -1384,9 +1384,10 @@ def create_key_counters(key_layout, world, player):
|
||||
flat_proposal = key_layout.flat_prop
|
||||
state = ExplorationState(dungeon=key_layout.sector.name)
|
||||
if world.doorShuffle[player] == 'vanilla':
|
||||
state.key_locations = len(world.get_dungeon(key_layout.sector.name, player).small_keys)
|
||||
state.key_locations = default_key_counts[key_layout.sector.name]
|
||||
else:
|
||||
state.key_locations = world.dungeon_layouts[player][key_layout.sector.name].key_doors_num
|
||||
builder = world.dungeon_layouts[player][key_layout.sector.name]
|
||||
state.key_locations = builder.total_keys - builder.key_drop_cnt
|
||||
state.big_key_special, special_region = False, None
|
||||
for region in key_layout.sector.regions:
|
||||
for location in region.locations:
|
||||
|
||||
2
Main.py
2
Main.py
@@ -29,7 +29,7 @@ from Fill import sell_potions, sell_keys, balance_multiworld_progression, balanc
|
||||
from ItemList import generate_itempool, difficulties, fill_prizes, customize_shops
|
||||
from Utils import output_path, parse_player_names
|
||||
|
||||
__version__ = '0.5.0.2-u'
|
||||
__version__ = '0.5.0.3-u'
|
||||
|
||||
from source.classes.BabelFish import BabelFish
|
||||
|
||||
|
||||
@@ -846,7 +846,7 @@ async def track_locations(ctx : Context, roomid, roomdata):
|
||||
new_locations.append(Regions.lookup_name_to_id[location])
|
||||
|
||||
try:
|
||||
if roomid in location_shop_ids:
|
||||
if ctx.shop_mode or ctx.retro_mode:
|
||||
misc_data = await snes_read(ctx, SHOP_ADDR, SHOP_SRAM_LEN)
|
||||
for cnt, b in enumerate(misc_data):
|
||||
my_check = Regions.shop_table_by_location_id[0x400000 + cnt]
|
||||
|
||||
@@ -15,6 +15,10 @@ CLI: ```--bombbag```
|
||||
|
||||
# Bug Fixes and Notes.
|
||||
|
||||
* 0.5.0.3
|
||||
* Fixed a bug in retro+vanilla and big key placement
|
||||
* Fixed a problem with shops not registering in the Multiclient until you visit one
|
||||
* Fixed a bug in the Mystery code with sfx
|
||||
* 0.5.0.2
|
||||
* --shuffle_sfx option added
|
||||
* 0.5.0.1
|
||||
|
||||
Reference in New Issue
Block a user