Core: convert mixture of Plando Options and Settings into just Options
This commit is contained in:
parent
c839a76fe7
commit
02d3eef565
|
@ -48,7 +48,7 @@ class MultiWorld():
|
||||||
precollected_items: Dict[int, List[Item]]
|
precollected_items: Dict[int, List[Item]]
|
||||||
state: CollectionState
|
state: CollectionState
|
||||||
|
|
||||||
plando_settings: PlandoSettings
|
plando_options: PlandoOptions
|
||||||
accessibility: Dict[int, Options.Accessibility]
|
accessibility: Dict[int, Options.Accessibility]
|
||||||
early_items: Dict[int, Dict[str, int]]
|
early_items: Dict[int, Dict[str, int]]
|
||||||
local_early_items: Dict[int, Dict[str, int]]
|
local_early_items: Dict[int, Dict[str, int]]
|
||||||
|
@ -161,7 +161,7 @@ class MultiWorld():
|
||||||
self.custom_data = {}
|
self.custom_data = {}
|
||||||
self.worlds = {}
|
self.worlds = {}
|
||||||
self.slot_seeds = {}
|
self.slot_seeds = {}
|
||||||
self.plando_settings = PlandoSettings.none
|
self.plando_options = PlandoOptions.none
|
||||||
|
|
||||||
def get_all_ids(self) -> Tuple[int, ...]:
|
def get_all_ids(self) -> Tuple[int, ...]:
|
||||||
return self.player_ids + tuple(self.groups)
|
return self.player_ids + tuple(self.groups)
|
||||||
|
@ -1560,7 +1560,7 @@ class Spoiler():
|
||||||
Utils.__version__, self.multiworld.seed))
|
Utils.__version__, self.multiworld.seed))
|
||||||
outfile.write('Filling Algorithm: %s\n' % self.multiworld.algorithm)
|
outfile.write('Filling Algorithm: %s\n' % self.multiworld.algorithm)
|
||||||
outfile.write('Players: %d\n' % self.multiworld.players)
|
outfile.write('Players: %d\n' % self.multiworld.players)
|
||||||
outfile.write(f'Plando Options: {self.multiworld.plando_settings}\n')
|
outfile.write(f'Plando Options: {self.multiworld.plando_options}\n')
|
||||||
AutoWorld.call_stage(self.multiworld, "write_spoiler_header", outfile)
|
AutoWorld.call_stage(self.multiworld, "write_spoiler_header", outfile)
|
||||||
|
|
||||||
for player in range(1, self.multiworld.players + 1):
|
for player in range(1, self.multiworld.players + 1):
|
||||||
|
@ -1677,7 +1677,7 @@ class Tutorial(NamedTuple):
|
||||||
authors: List[str]
|
authors: List[str]
|
||||||
|
|
||||||
|
|
||||||
class PlandoSettings(IntFlag):
|
class PlandoOptions(IntFlag):
|
||||||
none = 0b0000
|
none = 0b0000
|
||||||
items = 0b0001
|
items = 0b0001
|
||||||
connections = 0b0010
|
connections = 0b0010
|
||||||
|
@ -1685,7 +1685,7 @@ class PlandoSettings(IntFlag):
|
||||||
bosses = 0b1000
|
bosses = 0b1000
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_option_string(cls, option_string: str) -> PlandoSettings:
|
def from_option_string(cls, option_string: str) -> PlandoOptions:
|
||||||
result = cls(0)
|
result = cls(0)
|
||||||
for part in option_string.split(","):
|
for part in option_string.split(","):
|
||||||
part = part.strip().lower()
|
part = part.strip().lower()
|
||||||
|
@ -1694,14 +1694,14 @@ class PlandoSettings(IntFlag):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_set(cls, option_set: Set[str]) -> PlandoSettings:
|
def from_set(cls, option_set: Set[str]) -> PlandoOptions:
|
||||||
result = cls(0)
|
result = cls(0)
|
||||||
for part in option_set:
|
for part in option_set:
|
||||||
result = cls._handle_part(part, result)
|
result = cls._handle_part(part, result)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _handle_part(cls, part: str, base: PlandoSettings) -> PlandoSettings:
|
def _handle_part(cls, part: str, base: PlandoOptions) -> PlandoOptions:
|
||||||
try:
|
try:
|
||||||
part = cls[part]
|
part = cls[part]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -1712,7 +1712,7 @@ class PlandoSettings(IntFlag):
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
if self.value:
|
if self.value:
|
||||||
return ", ".join(flag.name for flag in PlandoSettings if self.value & flag.value)
|
return ", ".join(flag.name for flag in PlandoOptions if self.value & flag.value)
|
||||||
return "None"
|
return "None"
|
||||||
|
|
||||||
|
|
||||||
|
|
20
Generate.py
20
Generate.py
|
@ -20,7 +20,7 @@ from worlds.generic import PlandoConnection
|
||||||
from Utils import parse_yamls, version_tuple, __version__, tuplize_version, get_options, user_path
|
from Utils import parse_yamls, version_tuple, __version__, tuplize_version, get_options, user_path
|
||||||
from worlds.alttp.EntranceRandomizer import parse_arguments
|
from worlds.alttp.EntranceRandomizer import parse_arguments
|
||||||
from Main import main as ERmain
|
from Main import main as ERmain
|
||||||
from BaseClasses import seeddigits, get_seed, PlandoSettings
|
from BaseClasses import seeddigits, get_seed, PlandoOptions
|
||||||
import Options
|
import Options
|
||||||
from worlds.alttp.Text import TextTable
|
from worlds.alttp.Text import TextTable
|
||||||
from worlds.AutoWorld import AutoWorldRegister
|
from worlds.AutoWorld import AutoWorldRegister
|
||||||
|
@ -61,7 +61,7 @@ def mystery_argparse():
|
||||||
args.weights_file_path = os.path.join(args.player_files_path, args.weights_file_path)
|
args.weights_file_path = os.path.join(args.player_files_path, args.weights_file_path)
|
||||||
if not os.path.isabs(args.meta_file_path):
|
if not os.path.isabs(args.meta_file_path):
|
||||||
args.meta_file_path = os.path.join(args.player_files_path, args.meta_file_path)
|
args.meta_file_path = os.path.join(args.player_files_path, args.meta_file_path)
|
||||||
args.plando: PlandoSettings = PlandoSettings.from_option_string(args.plando)
|
args.plando: PlandoOptions = PlandoOptions.from_option_string(args.plando)
|
||||||
return args, options
|
return args, options
|
||||||
|
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ def main(args=None, callback=ERmain):
|
||||||
f"A mix is also permitted.")
|
f"A mix is also permitted.")
|
||||||
erargs = parse_arguments(['--multi', str(args.multi)])
|
erargs = parse_arguments(['--multi', str(args.multi)])
|
||||||
erargs.seed = seed
|
erargs.seed = seed
|
||||||
erargs.plando_settings = args.plando
|
erargs.plando_options = args.plando
|
||||||
erargs.glitch_triforce = options["generator"]["glitch_triforce_room"]
|
erargs.glitch_triforce = options["generator"]["glitch_triforce_room"]
|
||||||
erargs.spoiler = args.spoiler
|
erargs.spoiler = args.spoiler
|
||||||
erargs.race = args.race
|
erargs.race = args.race
|
||||||
|
@ -408,7 +408,7 @@ def roll_triggers(weights: dict, triggers: list) -> dict:
|
||||||
return weights
|
return weights
|
||||||
|
|
||||||
|
|
||||||
def handle_option(ret: argparse.Namespace, game_weights: dict, option_key: str, option: type(Options.Option), plando_options: PlandoSettings):
|
def handle_option(ret: argparse.Namespace, game_weights: dict, option_key: str, option: type(Options.Option), plando_options: PlandoOptions):
|
||||||
if option_key in game_weights:
|
if option_key in game_weights:
|
||||||
try:
|
try:
|
||||||
if not option.supports_weighting:
|
if not option.supports_weighting:
|
||||||
|
@ -424,7 +424,7 @@ def handle_option(ret: argparse.Namespace, game_weights: dict, option_key: str,
|
||||||
setattr(ret, option_key, option.from_any(option.default)) # call the from_any here to support default "random"
|
setattr(ret, option_key, option.from_any(option.default)) # call the from_any here to support default "random"
|
||||||
|
|
||||||
|
|
||||||
def roll_settings(weights: dict, plando_options: PlandoSettings = PlandoSettings.bosses):
|
def roll_settings(weights: dict, plando_options: PlandoOptions = PlandoOptions.bosses):
|
||||||
if "linked_options" in weights:
|
if "linked_options" in weights:
|
||||||
weights = roll_linked_options(weights)
|
weights = roll_linked_options(weights)
|
||||||
|
|
||||||
|
@ -437,7 +437,7 @@ def roll_settings(weights: dict, plando_options: PlandoSettings = PlandoSettings
|
||||||
if tuplize_version(version) > version_tuple:
|
if tuplize_version(version) > version_tuple:
|
||||||
raise Exception(f"Settings reports required version of generator is at least {version}, "
|
raise Exception(f"Settings reports required version of generator is at least {version}, "
|
||||||
f"however generator is of version {__version__}")
|
f"however generator is of version {__version__}")
|
||||||
required_plando_options = PlandoSettings.from_option_string(requirements.get("plando", ""))
|
required_plando_options = PlandoOptions.from_option_string(requirements.get("plando", ""))
|
||||||
if required_plando_options not in plando_options:
|
if required_plando_options not in plando_options:
|
||||||
if required_plando_options:
|
if required_plando_options:
|
||||||
raise Exception(f"Settings reports required plando module {str(required_plando_options)}, "
|
raise Exception(f"Settings reports required plando module {str(required_plando_options)}, "
|
||||||
|
@ -471,12 +471,12 @@ def roll_settings(weights: dict, plando_options: PlandoSettings = PlandoSettings
|
||||||
if option_key not in world_type.option_definitions and \
|
if option_key not in world_type.option_definitions and \
|
||||||
(option_key not in Options.common_options or option_key in game_weights):
|
(option_key not in Options.common_options or option_key in game_weights):
|
||||||
handle_option(ret, game_weights, option_key, option, plando_options)
|
handle_option(ret, game_weights, option_key, option, plando_options)
|
||||||
if PlandoSettings.items in plando_options:
|
if PlandoOptions.items in plando_options:
|
||||||
ret.plando_items = game_weights.get("plando_items", [])
|
ret.plando_items = game_weights.get("plando_items", [])
|
||||||
if ret.game == "Minecraft" or ret.game == "Ocarina of Time":
|
if ret.game == "Minecraft" or ret.game == "Ocarina of Time":
|
||||||
# bad hardcoded behavior to make this work for now
|
# bad hardcoded behavior to make this work for now
|
||||||
ret.plando_connections = []
|
ret.plando_connections = []
|
||||||
if PlandoSettings.connections in plando_options:
|
if PlandoOptions.connections in plando_options:
|
||||||
options = game_weights.get("plando_connections", [])
|
options = game_weights.get("plando_connections", [])
|
||||||
for placement in options:
|
for placement in options:
|
||||||
if roll_percentage(get_choice("percentage", placement, 100)):
|
if roll_percentage(get_choice("percentage", placement, 100)):
|
||||||
|
@ -591,7 +591,7 @@ def roll_alttp_settings(ret: argparse.Namespace, weights, plando_options):
|
||||||
raise Exception(f"unknown Medallion {medallion} for {'misery mire' if index == 0 else 'turtle rock'}")
|
raise Exception(f"unknown Medallion {medallion} for {'misery mire' if index == 0 else 'turtle rock'}")
|
||||||
|
|
||||||
ret.plando_texts = {}
|
ret.plando_texts = {}
|
||||||
if PlandoSettings.texts in plando_options:
|
if PlandoOptions.texts in plando_options:
|
||||||
tt = TextTable()
|
tt = TextTable()
|
||||||
tt.removeUnwantedText()
|
tt.removeUnwantedText()
|
||||||
options = weights.get("plando_texts", [])
|
options = weights.get("plando_texts", [])
|
||||||
|
@ -603,7 +603,7 @@ def roll_alttp_settings(ret: argparse.Namespace, weights, plando_options):
|
||||||
ret.plando_texts[at] = str(get_choice_legacy("text", placement))
|
ret.plando_texts[at] = str(get_choice_legacy("text", placement))
|
||||||
|
|
||||||
ret.plando_connections = []
|
ret.plando_connections = []
|
||||||
if PlandoSettings.connections in plando_options:
|
if PlandoOptions.connections in plando_options:
|
||||||
options = weights.get("plando_connections", [])
|
options = weights.get("plando_connections", [])
|
||||||
for placement in options:
|
for placement in options:
|
||||||
if roll_percentage(get_choice_legacy("percentage", placement, 100)):
|
if roll_percentage(get_choice_legacy("percentage", placement, 100)):
|
||||||
|
|
2
Main.py
2
Main.py
|
@ -38,7 +38,7 @@ def main(args, seed=None, baked_server_options: Optional[Dict[str, object]] = No
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
world.set_seed(seed, args.race, str(args.outputname if args.outputname else world.seed))
|
world.set_seed(seed, args.race, str(args.outputname if args.outputname else world.seed))
|
||||||
world.plando_settings = args.plando_settings
|
world.plando_options = args.plando_options
|
||||||
|
|
||||||
world.shuffle = args.shuffle.copy()
|
world.shuffle = args.shuffle.copy()
|
||||||
world.logic = args.logic.copy()
|
world.logic = args.logic.copy()
|
||||||
|
|
|
@ -133,10 +133,10 @@ class Option(typing.Generic[T], metaclass=AssembleOptions):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
if typing.TYPE_CHECKING:
|
if typing.TYPE_CHECKING:
|
||||||
from Generate import PlandoSettings
|
from Generate import PlandoOptions
|
||||||
from worlds.AutoWorld import World
|
from worlds.AutoWorld import World
|
||||||
|
|
||||||
def verify(self, world: World, player_name: str, plando_options: PlandoSettings) -> None:
|
def verify(self, world: World, player_name: str, plando_options: PlandoOptions) -> None:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
def verify(self, *args, **kwargs) -> None:
|
def verify(self, *args, **kwargs) -> None:
|
||||||
|
@ -578,8 +578,8 @@ class PlandoBosses(TextChoice, metaclass=BossMeta):
|
||||||
def verify(self, world, player_name: str, plando_options) -> None:
|
def verify(self, world, player_name: str, plando_options) -> None:
|
||||||
if isinstance(self.value, int):
|
if isinstance(self.value, int):
|
||||||
return
|
return
|
||||||
from Generate import PlandoSettings
|
from Generate import PlandoOptions
|
||||||
if not(PlandoSettings.bosses & plando_options):
|
if not(PlandoOptions.bosses & plando_options):
|
||||||
import logging
|
import logging
|
||||||
# plando is disabled but plando options were given so pull the option and change it to an int
|
# plando is disabled but plando options were given so pull the option and change it to an int
|
||||||
option = self.value.split(";")[-1]
|
option = self.value.split(";")[-1]
|
||||||
|
|
|
@ -12,7 +12,7 @@ def allowed_file(filename):
|
||||||
return filename.endswith(('.txt', ".yaml", ".zip"))
|
return filename.endswith(('.txt', ".yaml", ".zip"))
|
||||||
|
|
||||||
|
|
||||||
from Generate import roll_settings, PlandoSettings
|
from Generate import roll_settings, PlandoOptions
|
||||||
from Utils import parse_yamls
|
from Utils import parse_yamls
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ def get_yaml_data(file) -> Union[Dict[str, str], str, Markup]:
|
||||||
def roll_options(options: Dict[str, Union[dict, str]],
|
def roll_options(options: Dict[str, Union[dict, str]],
|
||||||
plando_options: Set[str] = frozenset({"bosses", "items", "connections", "texts"})) -> \
|
plando_options: Set[str] = frozenset({"bosses", "items", "connections", "texts"})) -> \
|
||||||
Tuple[Dict[str, Union[str, bool]], Dict[str, dict]]:
|
Tuple[Dict[str, Union[str, bool]], Dict[str, dict]]:
|
||||||
plando_options = PlandoSettings.from_set(set(plando_options))
|
plando_options = PlandoOptions.from_set(set(plando_options))
|
||||||
results = {}
|
results = {}
|
||||||
rolled_results = {}
|
rolled_results = {}
|
||||||
for filename, text in options.items():
|
for filename, text in options.items():
|
||||||
|
|
|
@ -12,7 +12,7 @@ from flask import request, flash, redirect, url_for, session, render_template
|
||||||
from pony.orm import commit, db_session
|
from pony.orm import commit, db_session
|
||||||
|
|
||||||
from BaseClasses import seeddigits, get_seed
|
from BaseClasses import seeddigits, get_seed
|
||||||
from Generate import handle_name, PlandoSettings
|
from Generate import handle_name, PlandoOptions
|
||||||
from Main import main as ERmain
|
from Main import main as ERmain
|
||||||
from Utils import __version__
|
from Utils import __version__
|
||||||
from WebHostLib import app
|
from WebHostLib import app
|
||||||
|
@ -119,7 +119,7 @@ def gen_game(gen_options: dict, meta: Optional[Dict[str, Any]] = None, owner=Non
|
||||||
erargs.outputname = seedname
|
erargs.outputname = seedname
|
||||||
erargs.outputpath = target.name
|
erargs.outputpath = target.name
|
||||||
erargs.teams = 1
|
erargs.teams = 1
|
||||||
erargs.plando_options = PlandoSettings.from_set(meta.setdefault("plando_options",
|
erargs.plando_options = PlandoOptions.from_set(meta.setdefault("plando_options",
|
||||||
{"bosses", "items", "connections", "texts"}))
|
{"bosses", "items", "connections", "texts"}))
|
||||||
|
|
||||||
name_counter = Counter()
|
name_counter = Counter()
|
||||||
|
|
|
@ -113,8 +113,8 @@ class TestPlandoBosses(unittest.TestCase):
|
||||||
"""Test automatic singularity mode"""
|
"""Test automatic singularity mode"""
|
||||||
self.assertIn(";singularity", MultiBosses.from_any("b2").value)
|
self.assertIn(";singularity", MultiBosses.from_any("b2").value)
|
||||||
|
|
||||||
def testPlandoSettings(self):
|
def testPlandoOptions(self):
|
||||||
"""Test that plando settings verification works"""
|
"""Test that plando options verification works"""
|
||||||
plandoed_string = "l1-b2;l2-b1"
|
plandoed_string = "l1-b2;l2-b1"
|
||||||
mixed_string = "l1-b2;shuffle"
|
mixed_string = "l1-b2;shuffle"
|
||||||
regular_string = "shuffle"
|
regular_string = "shuffle"
|
||||||
|
@ -123,14 +123,14 @@ class TestPlandoBosses(unittest.TestCase):
|
||||||
regular = MultiBosses.from_any(regular_string)
|
regular = MultiBosses.from_any(regular_string)
|
||||||
|
|
||||||
# plando should work with boss plando
|
# plando should work with boss plando
|
||||||
plandoed.verify(None, "Player", Generate.PlandoSettings.bosses)
|
plandoed.verify(None, "Player", Generate.PlandoOptions.bosses)
|
||||||
self.assertTrue(plandoed.value.startswith(plandoed_string))
|
self.assertTrue(plandoed.value.startswith(plandoed_string))
|
||||||
# plando should fall back to default without boss plando
|
# plando should fall back to default without boss plando
|
||||||
plandoed.verify(None, "Player", Generate.PlandoSettings.items)
|
plandoed.verify(None, "Player", Generate.PlandoOptions.items)
|
||||||
self.assertEqual(plandoed, MultiBosses.option_vanilla)
|
self.assertEqual(plandoed, MultiBosses.option_vanilla)
|
||||||
# mixed should fall back to mode
|
# mixed should fall back to mode
|
||||||
mixed.verify(None, "Player", Generate.PlandoSettings.items) # should produce a warning and still work
|
mixed.verify(None, "Player", Generate.PlandoOptions.items) # should produce a warning and still work
|
||||||
self.assertEqual(mixed, MultiBosses.option_shuffle)
|
self.assertEqual(mixed, MultiBosses.option_shuffle)
|
||||||
# mode stuff should just work
|
# mode stuff should just work
|
||||||
regular.verify(None, "Player", Generate.PlandoSettings.items)
|
regular.verify(None, "Player", Generate.PlandoOptions.items)
|
||||||
self.assertEqual(regular, MultiBosses.option_shuffle)
|
self.assertEqual(regular, MultiBosses.option_shuffle)
|
||||||
|
|
|
@ -10,7 +10,7 @@ from rando.ItemLocContainer import ItemLocation
|
||||||
# Holds settings not related to graph layout.
|
# Holds settings not related to graph layout.
|
||||||
class RandoSettings(object):
|
class RandoSettings(object):
|
||||||
def __init__(self, maxDiff, progSpeed, progDiff, qty, restrictions,
|
def __init__(self, maxDiff, progSpeed, progDiff, qty, restrictions,
|
||||||
superFun, runtimeLimit_s, plandoSettings, minDiff):
|
superFun, runtimeLimit_s, PlandoOptions, minDiff):
|
||||||
self.progSpeed = progSpeed.lower()
|
self.progSpeed = progSpeed.lower()
|
||||||
self.progDiff = progDiff.lower()
|
self.progDiff = progDiff.lower()
|
||||||
self.maxDiff = maxDiff
|
self.maxDiff = maxDiff
|
||||||
|
@ -20,7 +20,7 @@ class RandoSettings(object):
|
||||||
self.runtimeLimit_s = runtimeLimit_s
|
self.runtimeLimit_s = runtimeLimit_s
|
||||||
if self.runtimeLimit_s <= 0:
|
if self.runtimeLimit_s <= 0:
|
||||||
self.runtimeLimit_s = sys.maxsize
|
self.runtimeLimit_s = sys.maxsize
|
||||||
self.plandoSettings = plandoSettings
|
self.PlandoOptions = PlandoOptions
|
||||||
self.minDiff = minDiff
|
self.minDiff = minDiff
|
||||||
|
|
||||||
def getSuperFun(self):
|
def getSuperFun(self):
|
||||||
|
@ -30,7 +30,7 @@ class RandoSettings(object):
|
||||||
self.superFun = superFun[:]
|
self.superFun = superFun[:]
|
||||||
|
|
||||||
def isPlandoRando(self):
|
def isPlandoRando(self):
|
||||||
return self.plandoSettings is not None
|
return self.PlandoOptions is not None
|
||||||
|
|
||||||
def getItemManager(self, smbm, nLocs):
|
def getItemManager(self, smbm, nLocs):
|
||||||
if not self.isPlandoRando():
|
if not self.isPlandoRando():
|
||||||
|
@ -43,20 +43,20 @@ class RandoSettings(object):
|
||||||
return None
|
return None
|
||||||
exclude = {'alreadyPlacedItems': defaultdict(int), 'forbiddenItems': []}
|
exclude = {'alreadyPlacedItems': defaultdict(int), 'forbiddenItems': []}
|
||||||
# locsItems is a dict {'loc name': 'item type'}
|
# locsItems is a dict {'loc name': 'item type'}
|
||||||
for locName,itemType in self.plandoSettings["locsItems"].items():
|
for locName,itemType in self.PlandoOptions["locsItems"].items():
|
||||||
if not any(loc.Name == locName for loc in locations):
|
if not any(loc.Name == locName for loc in locations):
|
||||||
continue
|
continue
|
||||||
exclude['alreadyPlacedItems'][itemType] += 1
|
exclude['alreadyPlacedItems'][itemType] += 1
|
||||||
exclude['alreadyPlacedItems']['total'] += 1
|
exclude['alreadyPlacedItems']['total'] += 1
|
||||||
|
|
||||||
exclude['forbiddenItems'] = self.plandoSettings['forbiddenItems']
|
exclude['forbiddenItems'] = self.PlandoOptions['forbiddenItems']
|
||||||
|
|
||||||
return exclude
|
return exclude
|
||||||
|
|
||||||
def collectAlreadyPlacedItemLocations(self, container):
|
def collectAlreadyPlacedItemLocations(self, container):
|
||||||
if not self.isPlandoRando():
|
if not self.isPlandoRando():
|
||||||
return
|
return
|
||||||
for locName,itemType in self.plandoSettings["locsItems"].items():
|
for locName,itemType in self.PlandoOptions["locsItems"].items():
|
||||||
if not any(loc.Name == locName for loc in container.unusedLocations):
|
if not any(loc.Name == locName for loc in container.unusedLocations):
|
||||||
continue
|
continue
|
||||||
item = container.getNextItemInPool(itemType)
|
item = container.getNextItemInPool(itemType)
|
||||||
|
|
|
@ -621,7 +621,7 @@ class VariaRandomizer:
|
||||||
self.ctrlDict = { getattr(ctrl, button) : button for button in ctrlButton }
|
self.ctrlDict = { getattr(ctrl, button) : button for button in ctrlButton }
|
||||||
args.moonWalk = ctrl.Moonwalk
|
args.moonWalk = ctrl.Moonwalk
|
||||||
|
|
||||||
plandoSettings = None
|
PlandoOptions = None
|
||||||
if args.plandoRando is not None:
|
if args.plandoRando is not None:
|
||||||
forceArg('progressionSpeed', 'speedrun', "'Progression Speed' forced to speedrun")
|
forceArg('progressionSpeed', 'speedrun', "'Progression Speed' forced to speedrun")
|
||||||
progSpeed = 'speedrun'
|
progSpeed = 'speedrun'
|
||||||
|
@ -632,10 +632,10 @@ class VariaRandomizer:
|
||||||
args.plandoRando = json.loads(args.plandoRando)
|
args.plandoRando = json.loads(args.plandoRando)
|
||||||
RomPatches.ActivePatches[self.player] = args.plandoRando["patches"]
|
RomPatches.ActivePatches[self.player] = args.plandoRando["patches"]
|
||||||
DoorsManager.unserialize(args.plandoRando["doors"])
|
DoorsManager.unserialize(args.plandoRando["doors"])
|
||||||
plandoSettings = {"locsItems": args.plandoRando['locsItems'], "forbiddenItems": args.plandoRando['forbiddenItems']}
|
PlandoOptions = {"locsItems": args.plandoRando['locsItems'], "forbiddenItems": args.plandoRando['forbiddenItems']}
|
||||||
randoSettings = RandoSettings(self.maxDifficulty, progSpeed, progDiff, qty,
|
randoSettings = RandoSettings(self.maxDifficulty, progSpeed, progDiff, qty,
|
||||||
restrictions, args.superFun, args.runtimeLimit_s,
|
restrictions, args.superFun, args.runtimeLimit_s,
|
||||||
plandoSettings, minDifficulty)
|
PlandoOptions, minDifficulty)
|
||||||
|
|
||||||
# print some parameters for jm's stats
|
# print some parameters for jm's stats
|
||||||
if args.jm == True:
|
if args.jm == True:
|
||||||
|
|
Loading…
Reference in New Issue