From 2d012b7f4a9a4c13985ecd7303bb1fc646831c86 Mon Sep 17 00:00:00 2001 From: massimilianodelliubaldini <8584296+massimilianodelliubaldini@users.noreply.github.com> Date: Tue, 20 May 2025 01:05:25 -0400 Subject: [PATCH] Implement Vi suggestion on webhost-capable friendly limits. --- worlds/jakanddaxter/Client.py | 6 ++++-- worlds/jakanddaxter/Options.py | 24 ++++++++++++++---------- worlds/jakanddaxter/__init__.py | 4 ++-- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/worlds/jakanddaxter/Client.py b/worlds/jakanddaxter/Client.py index aa963607f0..170414a87e 100644 --- a/worlds/jakanddaxter/Client.py +++ b/worlds/jakanddaxter/Client.py @@ -20,6 +20,7 @@ from pymem.exception import ProcessNotFound # Archipelago imports import ModuleUpdate import Utils +import settings from CommonClient import ClientCommandProcessor, CommonContext, server_loop, gui_enabled from NetUtils import ClientStatus @@ -433,11 +434,12 @@ async def run_game(ctx: JakAndDaxterContext): ctx.on_log_warn(logger, "Compiler not running, attempting to start.") try: - auto_detect_root_directory = JakAndDaxterWorld.settings.auto_detect_root_directory + host_settings = settings.get_settings()["jakanddaxter_options"] + auto_detect_root_directory = host_settings["auto_detect_root_directory"] if auto_detect_root_directory: root_path = find_root_directory(ctx) else: - root_path = JakAndDaxterWorld.settings.root_directory + root_path = host_settings["root_directory"] # Always trust your instincts... the user may not have entered their root_directory properly. # We don't have to do this check if the root directory was auto-detected. diff --git a/worlds/jakanddaxter/Options.py b/worlds/jakanddaxter/Options.py index 296caacc63..9f9d16fa73 100644 --- a/worlds/jakanddaxter/Options.py +++ b/worlds/jakanddaxter/Options.py @@ -1,9 +1,13 @@ from dataclasses import dataclass from functools import cached_property from Options import PerGameCommonOptions, StartInventoryPool, Toggle, Choice, Range, DefaultOnToggle, OptionCounter +from settings import get_settings from .Items import trap_item_table +enforce_friendly_options: bool = get_settings()["jakanddaxter_options"]["enforce_friendly_options"] + + class EnableMoveRandomizer(Toggle): """Include movement options as items in the randomizer. Until you find his other moves, Jak is limited to running, swimming, single-jumping, and shooting yellow eco through his goggles. @@ -83,10 +87,10 @@ class FireCanyonCellCount(Range): Multiplayer Maximum: 30 Singleplayer Maximum: 34""" display_name = "Fire Canyon Cell Count" - range_start = 0 - range_end = 100 multiplayer_maximum = 30 singleplayer_maximum = 34 + range_start = 0 + range_end = multiplayer_maximum if enforce_friendly_options else 100 default = 20 @@ -96,10 +100,10 @@ class MountainPassCellCount(Range): Multiplayer Maximum: 60 Singleplayer Maximum: 63""" display_name = "Mountain Pass Cell Count" - range_start = 0 - range_end = 100 multiplayer_maximum = 60 singleplayer_maximum = 63 + range_start = 0 + range_end = multiplayer_maximum if enforce_friendly_options else 100 default = 45 @@ -109,10 +113,10 @@ class LavaTubeCellCount(Range): Multiplayer Maximum: 90 Singleplayer Maximum: 99""" display_name = "Lava Tube Cell Count" - range_start = 0 - range_end = 100 multiplayer_maximum = 90 singleplayer_maximum = 99 + range_start = 0 + range_end = multiplayer_maximum if enforce_friendly_options else 100 default = 72 @@ -139,9 +143,9 @@ class CitizenOrbTradeAmount(Range): Multiplayer Maximum: 120""" display_name = "Citizen Orb Trade Amount" - range_start = 0 - range_end = 222 multiplayer_maximum = 120 + range_start = 0 + range_end = multiplayer_maximum if enforce_friendly_options else 222 default = 90 @@ -154,9 +158,9 @@ class OracleOrbTradeAmount(Range): Multiplayer Maximum: 150""" display_name = "Oracle Orb Trade Amount" - range_start = 0 - range_end = 333 multiplayer_maximum = 150 + range_start = 0 + range_end = multiplayer_maximum if enforce_friendly_options else 333 default = 120 diff --git a/worlds/jakanddaxter/__init__.py b/worlds/jakanddaxter/__init__.py index 54fea4b428..af6dda9b52 100644 --- a/worlds/jakanddaxter/__init__.py +++ b/worlds/jakanddaxter/__init__.py @@ -15,7 +15,7 @@ from BaseClasses import (Item, from Options import OptionGroup # Jak imports -from .Options import * +from . import Options from .GameID import jak1_id, jak1_name, jak1_max from .Items import (JakAndDaxterItem, OrbAssoc, @@ -265,7 +265,7 @@ class JakAndDaxterWorld(World): # For the fairness of other players in a multiworld game, enforce some friendly limitations on our options, # so we don't cause chaos during seed generation. These friendly limits should **guarantee** a successful gen. # We would have done this earlier, but we needed to sort the power cell thresholds first. - enforce_friendly_options = self.settings.enforce_friendly_options + enforce_friendly_options = settings.get_settings()["jakanddaxter_options"]["enforce_friendly_options"] if enforce_friendly_options: if self.multiworld.players > 1: enforce_multiplayer_limits(self)