TUNIC: Add Hidden all_random Option (#4635)

This commit is contained in:
Scipio Wright
2025-05-07 10:59:16 -04:00
committed by GitHub
parent 0ba9ee0695
commit 17bc184e28
2 changed files with 28 additions and 1 deletions

View File

@@ -1,3 +1,4 @@
from dataclasses import fields
from typing import Dict, List, Any, Tuple, TypedDict, ClassVar, Union, Set, TextIO
from logging import warning
from BaseClasses import Region, Location, Item, Tutorial, ItemClassification, MultiWorld, CollectionState
@@ -16,7 +17,7 @@ from .options import (TunicOptions, EntranceRando, tunic_option_groups, tunic_op
from .breakables import breakable_location_name_to_id, breakable_location_groups, breakable_location_table
from .combat_logic import area_data, CombatState
from worlds.AutoWorld import WebWorld, World
from Options import PlandoConnection, OptionError
from Options import PlandoConnection, OptionError, PerGameCommonOptions, Removed, Range
from settings import Group, Bool
@@ -120,6 +121,20 @@ class TunicWorld(World):
raise Exception("You have a TUNIC APWorld in your lib/worlds folder and custom_worlds folder.\n"
"This would cause an error at the end of generation.\n"
"Please remove one of them, most likely the one in lib/worlds.")
if self.options.all_random:
for option_name in (attr.name for attr in fields(TunicOptions)
if attr not in fields(PerGameCommonOptions)):
option = getattr(self.options, option_name)
if option_name == "all_random":
continue
if isinstance(option, Removed):
continue
if option.supports_weighting:
if isinstance(option, Range):
option.value = self.random.randint(option.range_start, option.range_end)
else:
option.value = self.random.choice(list(option.name_lookup))
check_options(self)

View File

@@ -332,6 +332,16 @@ class LadderStorageWithoutItems(Toggle):
display_name = "Ladder Storage without Items"
class HiddenAllRandom(Toggle):
"""
Sets all options that can be random to random.
For test gens.
"""
internal_name = "all_random"
display_name = "All Random Debug"
visibility = Visibility.none
class LogicRules(Choice):
"""
This option has been superseded by the individual trick options.
@@ -392,6 +402,8 @@ class TunicOptions(PerGameCommonOptions):
ice_grappling: IceGrappling
ladder_storage: LadderStorage
ladder_storage_without_items: LadderStorageWithoutItems
all_random: HiddenAllRandom
fixed_shop: FixedShop # will be removed at a later date
logic_rules: Removed # fully removed in the direction pairs update