some er layout group fixes
This commit is contained in:
parent
58d748d7ff
commit
cd5696527d
17
Main.py
17
Main.py
|
@ -34,13 +34,12 @@ def get_seed(seed=None):
|
||||||
return seed
|
return seed
|
||||||
|
|
||||||
|
|
||||||
seeds: Dict[tuple, str] = dict()
|
|
||||||
|
|
||||||
|
|
||||||
def get_same_seed(world: World, seed_def: tuple) -> str:
|
def get_same_seed(world: World, seed_def: tuple) -> str:
|
||||||
|
seeds: Dict[tuple, str] = getattr(world, "__named_seeds", {})
|
||||||
if seed_def in seeds:
|
if seed_def in seeds:
|
||||||
return seeds[seed_def]
|
return seeds[seed_def]
|
||||||
seeds[seed_def] = str(world.random.randint(0, 2 ** 64))
|
seeds[seed_def] = str(world.random.randint(0, 2 ** 64))
|
||||||
|
world.__named_seeds = seeds
|
||||||
return seeds[seed_def]
|
return seeds[seed_def]
|
||||||
|
|
||||||
|
|
||||||
|
@ -117,9 +116,15 @@ def main(args, seed=None):
|
||||||
world.shuffle[player] = shuffle
|
world.shuffle[player] = shuffle
|
||||||
if shuffle == "vanilla":
|
if shuffle == "vanilla":
|
||||||
world.er_seeds[player] = "vanilla"
|
world.er_seeds[player] = "vanilla"
|
||||||
elif seed.startswith("team-"):
|
elif seed.startswith("group-"): # renamed from team to group to not confuses with existing team name use
|
||||||
world.er_seeds[player] = get_same_seed(world, (shuffle, seed, world.retro[player], world.mode[player], world.logic[player]))
|
world.er_seeds[player] = get_same_seed(world, (shuffle, seed, world.retro[player], world.mode[player], world.logic[player]))
|
||||||
else:
|
elif seed.startswith("team-"): # TODO: remove on breaking_changes
|
||||||
|
world.er_seeds[player] = get_same_seed(world, (shuffle, seed, world.retro[player], world.mode[player], world.logic[player]))
|
||||||
|
elif not args.race:
|
||||||
|
world.er_seeds[player] = seed
|
||||||
|
elif seed: # race but with a set seed, ignore set seed and use group logic instead
|
||||||
|
world.er_seeds[player] = get_same_seed(world, (shuffle, seed, world.retro[player], world.mode[player], world.logic[player]))
|
||||||
|
else: # race but without a set seed
|
||||||
world.er_seeds[player] = seed
|
world.er_seeds[player] = seed
|
||||||
elif world.shuffle[player] == "vanilla":
|
elif world.shuffle[player] == "vanilla":
|
||||||
world.er_seeds[player] = "vanilla"
|
world.er_seeds[player] = "vanilla"
|
||||||
|
@ -293,7 +298,7 @@ def main(args, seed=None):
|
||||||
apply_rom_settings(rom, args.heartbeep[player], args.heartcolor[player], args.quickswap[player],
|
apply_rom_settings(rom, args.heartbeep[player], args.heartcolor[player], args.quickswap[player],
|
||||||
args.fastmenu[player], args.disablemusic[player], args.sprite[player],
|
args.fastmenu[player], args.disablemusic[player], args.sprite[player],
|
||||||
palettes_options, world, player, True,
|
palettes_options, world, player, True,
|
||||||
reduceflashing=args.reduceflashing[player] if not args.race else True,
|
reduceflashing=args.reduceflashing[player] or args.race,
|
||||||
triforcehud=args.triforcehud[player])
|
triforcehud=args.triforcehud[player])
|
||||||
|
|
||||||
mcsb_name = ''
|
mcsb_name = ''
|
||||||
|
|
7
Utils.py
7
Utils.py
|
@ -13,7 +13,7 @@ class Version(typing.NamedTuple):
|
||||||
micro: int
|
micro: int
|
||||||
|
|
||||||
|
|
||||||
__version__ = "4.1.0"
|
__version__ = "4.1.1"
|
||||||
_version_tuple = tuplize_version(__version__)
|
_version_tuple = tuplize_version(__version__)
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
@ -54,7 +54,10 @@ def snes_to_pc(value):
|
||||||
def parse_player_names(names, players, teams):
|
def parse_player_names(names, players, teams):
|
||||||
names = tuple(n for n in (n.strip() for n in names.split(",")) if n)
|
names = tuple(n for n in (n.strip() for n in names.split(",")) if n)
|
||||||
if len(names) != len(set(names)):
|
if len(names) != len(set(names)):
|
||||||
raise ValueError("Duplicate Player names is not supported.")
|
import collections
|
||||||
|
name_counter = collections.Counter(names)
|
||||||
|
raise ValueError(f"Duplicate Player names is not supported, "
|
||||||
|
f'found multiple "{name_counter.most_common(1)[0][0]}".')
|
||||||
ret = []
|
ret = []
|
||||||
while names or len(ret) < teams:
|
while names or len(ret) < teams:
|
||||||
team = [n[:16] for n in names[:players]]
|
team = [n[:16] for n in names[:players]]
|
||||||
|
|
|
@ -90,6 +90,7 @@ entrance_shuffle: # Documentation: https://alttpr.com/en/options#entrance_shuffl
|
||||||
# you can also define entrance shuffle seed, like so:
|
# you can also define entrance shuffle seed, like so:
|
||||||
crossed-1000: 0 # using this method, you can have the same layout as another player and share entrance information
|
crossed-1000: 0 # using this method, you can have the same layout as another player and share entrance information
|
||||||
# however, many other settings like logic, world state, retro etc. may affect the shuffle result as well.
|
# however, many other settings like logic, world state, retro etc. may affect the shuffle result as well.
|
||||||
|
crossed-group-myfriends: 0 # using this method, everyone with "group-myfriends" will share the same seed
|
||||||
goals:
|
goals:
|
||||||
ganon: 50 # Climb GT, defeat Agahnim 2, and then kill Ganon
|
ganon: 50 # Climb GT, defeat Agahnim 2, and then kill Ganon
|
||||||
fast_ganon: 0 # Only killing Ganon is required. However, items may still be placed in GT
|
fast_ganon: 0 # Only killing Ganon is required. However, items may still be placed in GT
|
||||||
|
|
Loading…
Reference in New Issue