From 20134d3b1eedf853b7be74bd18349e90dff6bd8a Mon Sep 17 00:00:00 2001 From: PoryGone <98504756+PoryGone@users.noreply.github.com> Date: Tue, 21 May 2024 18:22:39 -0400 Subject: [PATCH] Celeste 64: Option Groups (#3321) * Celeste 64: Option Groups * Retarget OptionGroup import --- worlds/celeste64/Options.py | 26 +++++++++++++++++++++++++- worlds/celeste64/__init__.py | 4 +++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/worlds/celeste64/Options.py b/worlds/celeste64/Options.py index a2d142b8..9a67e7d7 100644 --- a/worlds/celeste64/Options.py +++ b/worlds/celeste64/Options.py @@ -1,6 +1,6 @@ from dataclasses import dataclass -from Options import Choice, Range, Toggle, DeathLink, PerGameCommonOptions +from Options import Choice, Range, Toggle, DeathLink, OptionGroup, PerGameCommonOptions class DeathLinkAmnesty(Range): @@ -47,7 +47,9 @@ class MoveShuffle(Toggle): - Air Dash - Skid Jump - Climb + NOTE: Having Move Shuffle and Standard Logic Difficulty will guarantee that one of the four Move items will be immediately accessible + WARNING: Combining Move Shuffle and Hard Logic Difficulty can require very difficult tricks """ display_name = "Move Shuffle" @@ -75,7 +77,9 @@ class Carsanity(Toggle): class BadelineChaserSource(Choice): """ What type of action causes more Badeline Chasers to start spawning + Locations: The number of locations you've checked contributes to Badeline Chasers + Strawberries: The number of Strawberry items you've received contributes to Badeline Chasers """ display_name = "Badeline Chaser Source" @@ -86,7 +90,9 @@ class BadelineChaserSource(Choice): class BadelineChaserFrequency(Range): """ How many of the `Badeline Chaser Source` actions must occur to make each Badeline Chaser start spawning + NOTE: Choosing `0` disables Badeline Chasers entirely + WARNING: Turning on Badeline Chasers alongside Move Shuffle could result in extremely difficult situations """ display_name = "Badeline Chaser Frequency" @@ -104,6 +110,24 @@ class BadelineChaserSpeed(Range): default = 3 +celeste_64_option_groups = [ + OptionGroup("Goal Options", [ + TotalStrawberries, + StrawberriesRequiredPercentage, + ]), + OptionGroup("Sanity Options", [ + Friendsanity, + Signsanity, + Carsanity, + ]), + OptionGroup("Badeline Chasers", [ + BadelineChaserSource, + BadelineChaserFrequency, + BadelineChaserSpeed, + ]), +] + + @dataclass class Celeste64Options(PerGameCommonOptions): death_link: DeathLink diff --git a/worlds/celeste64/__init__.py b/worlds/celeste64/__init__.py index d7e07462..7786e381 100644 --- a/worlds/celeste64/__init__.py +++ b/worlds/celeste64/__init__.py @@ -7,7 +7,7 @@ from .Items import Celeste64Item, unlockable_item_data_table, move_item_data_tab from .Locations import Celeste64Location, strawberry_location_data_table, friend_location_data_table,\ sign_location_data_table, car_location_data_table, location_table from .Names import ItemName, LocationName -from .Options import Celeste64Options +from .Options import Celeste64Options, celeste_64_option_groups class Celeste64WebWorld(WebWorld): @@ -24,6 +24,8 @@ class Celeste64WebWorld(WebWorld): tutorials = [setup_en] + option_groups = celeste_64_option_groups + class Celeste64World(World): """Relive the magic of Celeste Mountain alongside Madeline in this small, heartfelt 3D platformer.