Files
dockipelago/worlds/armoredcore/options.py
Jonathan Tinney 7971961166
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
add schedule I, sonic 1/frontiers/heroes, spirit island
2026-04-02 23:46:36 -07:00

83 lines
2.7 KiB
Python

import typing
import dataclasses
from Options import Range, Choice, PerGameCommonOptions, DefaultOnToggle, Toggle as DefaultOffToggle
from dataclasses import dataclass
class Goal(Choice):
"""
Choose what you want your goal to be.
In missionsanity all missions are individually added to the pool of checks,
you set the number of missions that you must complete in order to complete your goal.
In progressive missions you receive 'progressive mission' items that unlock groups of
5 missions at a time. Your goal is completing Destroy Floating Mines after collecting
all 'progressive mission' items.
"""
display_name = "Goal"
option_missionsanity = 0
option_progressive_missions = 1
default = 1
class MissionsanityGoalRequirement(Range):
"""
This option only matters if your Goal is Missionsanity.
Select how many missions it takes to complete your goal.
Does not include the tutorial mission.
"""
display_name = "Missionsanity Goal Requirement"
range_start = 1
range_end = 46
default = 46
class IncludeHumanPlusFiller(DefaultOnToggle):
"""
If this option is on, three "Progressive Human+"
Enhancement levels will be added as filler to the item pool.
"""
display_name = "Include Human+ Filler"
class Shopsanity(DefaultOffToggle):
"""
Shopsanity turns all parts listings in the shop into locations,
and all parts that you don't start with are shuffled into the multiworld.
"""
display_name = "Shopsanity"
class ShopsanityListingsPerMission(Range):
"""
Define how many shop listings open up per mission completion.
Higher numbers may require more grinding. Includes Raven Test.
"""
display_name = "Shopsanity Listings Per Mission"
range_start = 4
range_end = 146
default = 4
class RandomizeStartingParts(DefaultOffToggle):
"""
Your starting AC Parts will be randomized but still
adhere to weight and energy limits.
"""
display_name = "Randomize Starting Mech"
class CreditCheckAmount(Range):
"""
Define how much you earn from Credit Filler checks you receieve.
"""
display_name = "Credit Check Amount"
range_start = 100
range_end = 100000
default = 10000
@dataclass
class ACOptions(PerGameCommonOptions):
goal: Goal
missionsanity_goal_requirement: MissionsanityGoalRequirement
include_humanplus: IncludeHumanPlusFiller
shopsanity: Shopsanity
shopsanity_listings_per_mission: ShopsanityListingsPerMission
rando_start_parts: RandomizeStartingParts
credit_check_amount: CreditCheckAmount
def serialize(self) -> typing.Dict[str, int]:
return {field.name: getattr(self, field.name).value for field in dataclasses.fields(self)}