Initial Commit

This commit is contained in:
Luminiferous committed 2026-10-10 17:05:45 +02:00
commit fa38469735
30 files changed
+6902

No files matched your search

+57
View File
@@ -0,0 +1,57 @@
# Object classes from AP that represent different types of options that you can create
from Options import Option, FreeText, NumericOption, Toggle, DefaultOnToggle, Choice, TextChoice, Range, NamedRange, OptionGroup, PerGameCommonOptions
# These helper methods allow you to determine if an option has been set, or what its value is, for any player in the multiworld
from ..Helpers import is_option_enabled, get_option_value
from typing import Type, Any
####################################################################
# NOTE: At the time that options are created, Manual has no concept of the multiworld or its own world.
# Options are defined before the world is even created.
#
# Example of creating your own option:
#
# class MakeThePlayerOP(Toggle):
# """Should the player be overpowered? Probably not, but you can choose for this to do... something!"""
# display_name = "Make me OP"
#
# options["make_op"] = MakeThePlayerOP
#
#
# Then, to see if the option is set, you can call is_option_enabled or get_option_value.
#####################################################################
# To add an option, use the before_options_defined hook below and something like this:
# options["total_characters_to_win_with"] = TotalCharactersToWinWith
#
class TotalCharactersToWinWith(Range):
"""Instead of having to beat the game with all characters, you can limit locations to a subset of character victory locations."""
display_name = "Number of characters to beat the game with before victory"
range_start = 10
range_end = 50
default = 50
# This is called before any manual options are defined, in case you want to define your own with a clean slate or let Manual define over them
def before_options_defined(options: dict[str, Type[Option[Any]]]) -> dict[str, Type[Option[Any]]]:
return options
# This is called after any manual options are defined, in case you want to see what options are defined or want to modify the defined options
def after_options_defined(options: Type[PerGameCommonOptions]):
# To access a modifiable version of options check the dict in options.type_hints
# For example if you want to change DLC_enabled's display name you would do:
# options.type_hints["DLC_enabled"].display_name = "New Display Name"
# Here's an example on how to add your aliases to the generated goal
# options.type_hints['goal'].aliases.update({"example": 0, "second_alias": 1})
# options.type_hints['goal'].options.update({"example": 0, "second_alias": 1}) #for an alias to be valid it must also be in options
pass
# Use this Hook if you want to add your Option to an Option group (existing or not)
def before_option_groups_created(groups: dict[str, list[Type[Option[Any]]]]) -> dict[str, list[Type[Option[Any]]]]:
# Uses the format groups['GroupName'] = [TotalCharactersToWinWith]
return groups
def after_option_groups_created(groups: list[OptionGroup]) -> list[OptionGroup]:
return groups