Crossed Dungeon generation work

--Introduced reachable_switches
--Calculate total completion in equation resolution
--Prioritized one-way connections over neutral/neutral_profitable sectored but not over dead-ends
--Simplified finding good complex branching candidates - just re-used equations routine
--Valid multi choice for global polarity when fixing parity
--Added total dungeon charge as critieria when fixing parity
--Pinball used for navigation in skull 2, marked appropriately (particularly with Ice Cross in Skull 2)
--Equation resolution detects used benefits with unreached_doors benefits
--Greedy equation finder not longer used destination/entrance sectors of the wrong split dungeon
--Required connections don't overestimate benefits
--Introduced the concept of crystal switches and doors blocked by blue barriers to equations
This commit is contained in:
aerinon
2020-07-22 17:11:20 -06:00
parent b4fd8f6bdc
commit 24177fa8b8
4 changed files with 306 additions and 43 deletions

View File

@@ -24,7 +24,7 @@ from Fill import distribute_items_cutoff, distribute_items_staleness, distribute
from ItemList import generate_itempool, difficulties, fill_prizes
from Utils import output_path, parse_player_names
__version__ = '0.1.0.11-u'
__version__ = '0.1.0.12-u'
class EnemizerError(RuntimeError):
pass
@@ -287,7 +287,8 @@ def main(args, seed=None, fish=None):
"roms": rom_names,
"remote_items": [player for player in range(1, world.players + 1) if world.remote_items[player]],
"locations": [((location.address, location.player), (location.item.code, location.item.player))
for location in world.get_filled_locations() if type(location.address) is int]
for location in world.get_filled_locations() if type(location.address) is int],
"tags" : ["DR"]
}).encode("utf-8"))
if args.jsonout:
jsonout["multidata"] = list(multidata)