Files
Archipelago/worlds/jakanddaxter/Options.py
massimilianodelliubaldini 4e4a59dd9a Create OptionGroups.
2024-09-17 16:57:46 -04:00

190 lines
6.6 KiB
Python

from dataclasses import dataclass
from Options import PerGameCommonOptions, StartInventoryPool, Toggle, Choice, Range, DefaultOnToggle
class EnableMoveRandomizer(Toggle):
"""Enable to 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.
This adds 11 items to the pool."""
display_name = "Enable Move Randomizer"
class EnableOrbsanity(Choice):
"""Enable to include bundles of Precursor Orbs as an ordered list of progressive checks. Every time you collect the
chosen number of orbs, you will trigger the next release in the list.
"Per Level" means these lists are generated and populated for each level in the game. "Global" means there
is only one list for the entire game.
This adds a number of Items and Locations to the pool inversely proportional to the size of the bundle.
For example, if your bundle size is 20 orbs, you will add 100 items to the pool. If your bundle size is 250 orbs,
you will add 8 items to the pool."""
display_name = "Enable Orbsanity"
option_off = 0
option_per_level = 1
option_global = 2
default = 0
class GlobalOrbsanityBundleSize(Choice):
"""Set the orb bundle size for Global Orbsanity. This only applies if "Enable Orbsanity" is set to "Global."
There are 2000 orbs in the game, so your bundle size must be a factor of 2000.
Multiplayer Minimum: 10
Multiplayer Maximum: 200"""
display_name = "Global Orbsanity Bundle Size"
option_1_orb = 1
option_2_orbs = 2
option_4_orbs = 4
option_5_orbs = 5
option_8_orbs = 8
option_10_orbs = 10
option_16_orbs = 16
option_20_orbs = 20
option_25_orbs = 25
option_40_orbs = 40
option_50_orbs = 50
option_80_orbs = 80
option_100_orbs = 100
option_125_orbs = 125
option_200_orbs = 200
option_250_orbs = 250
option_400_orbs = 400
option_500_orbs = 500
option_1000_orbs = 1000
option_2000_orbs = 2000
multiplayer_minimum = 10
multiplayer_maximum = 200
default = 20
class PerLevelOrbsanityBundleSize(Choice):
"""Set the orb bundle size for Per Level Orbsanity. This only applies if "Enable Orbsanity" is set to "Per Level."
There are 50, 150, or 200 orbs per level, so your bundle size must be a factor of 50.
Multiplayer Minimum: 10"""
display_name = "Per Level Orbsanity Bundle Size"
option_1_orb = 1
option_2_orbs = 2
option_5_orbs = 5
option_10_orbs = 10
option_25_orbs = 25
option_50_orbs = 50
multiplayer_minimum = 10
default = 25
class FireCanyonCellCount(Range):
"""Set the number of power cells you need to cross Fire Canyon.
Multiplayer Maximum: 30
Singleplayer Maximum: 34"""
display_name = "Fire Canyon Cell Count"
range_start = 0
range_end = 100
multiplayer_maximum = 30
singleplayer_maximum = 34
default = 20
class MountainPassCellCount(Range):
"""Set the number of power cells you need to reach Klaww and cross Mountain Pass.
Multiplayer Maximum: 60
Singleplayer Maximum: 63"""
display_name = "Mountain Pass Cell Count"
range_start = 0
range_end = 100
multiplayer_maximum = 60
singleplayer_maximum = 63
default = 45
class LavaTubeCellCount(Range):
"""Set the number of power cells you need to cross Lava Tube.
Multiplayer Maximum: 90
Singleplayer Maximum: 99"""
display_name = "Lava Tube Cell Count"
range_start = 0
range_end = 100
multiplayer_maximum = 90
singleplayer_maximum = 99
default = 72
class EnableOrderedCellCounts(DefaultOnToggle):
"""Enable to reorder the Cell Count options in ascending order. This is useful if you choose to randomize
those options.
For example, if Fire Canyon Cell Count, Mountain Pass Cell Count, and Lava Tube Cell Count are 60, 30, and 40
respectively, they will be reordered to 30, 40, and 60 respectively."""
display_name = "Enable Ordered Cell Counts"
class RequirePunchForKlaww(DefaultOnToggle):
"""Enable to force the Punch move to come before Klaww. Disabling this setting may require Jak to fight Klaww
and Gol and Maia by shooting yellow eco through his goggles. This only applies if "Enable Move Randomizer" is ON."""
display_name = "Require Punch For Klaww"
# 222 is the absolute maximum because there are 9 citizen trades and 2000 orbs to trade (2000/9 = 222).
class CitizenOrbTradeAmount(Range):
"""Set the number of orbs you need to trade to ordinary citizens for a power cell (Mayor, Uncle, etc.).
Along with Oracle Orb Trade Amount, this setting cannot exceed the total number of orbs in the game (2000).
The equation to determine the total number of trade orbs is (9 * Citizen Trades) + (6 * Oracle Trades).
Multiplayer Maximum: 120"""
display_name = "Citizen Orb Trade Amount"
range_start = 0
range_end = 222
multiplayer_maximum = 120
default = 90
# 333 is the absolute maximum because there are 6 oracle trades and 2000 orbs to trade (2000/6 = 333).
class OracleOrbTradeAmount(Range):
"""Set the number of orbs you need to trade to the Oracles for a power cell.
Along with Citizen Orb Trade Amount, this setting cannot exceed the total number of orbs in the game (2000).
The equation to determine the total number of trade orbs is (9 * Citizen Trades) + (6 * Oracle Trades).
Multiplayer Maximum: 150"""
display_name = "Oracle Orb Trade Amount"
range_start = 0
range_end = 333
multiplayer_maximum = 150
default = 120
class CompletionCondition(Choice):
"""Set the goal for completing the game."""
display_name = "Completion Condition"
option_cross_fire_canyon = 69
option_cross_mountain_pass = 87
option_cross_lava_tube = 89
option_defeat_dark_eco_plant = 6
option_defeat_klaww = 86
option_defeat_gol_and_maia = 112
option_open_100_cell_door = 116
default = 112
@dataclass
class JakAndDaxterOptions(PerGameCommonOptions):
enable_move_randomizer: EnableMoveRandomizer
enable_orbsanity: EnableOrbsanity
global_orbsanity_bundle_size: GlobalOrbsanityBundleSize
level_orbsanity_bundle_size: PerLevelOrbsanityBundleSize
fire_canyon_cell_count: FireCanyonCellCount
mountain_pass_cell_count: MountainPassCellCount
lava_tube_cell_count: LavaTubeCellCount
enable_ordered_cell_counts: EnableOrderedCellCounts
require_punch_for_klaww: RequirePunchForKlaww
citizen_orb_trade_amount: CitizenOrbTradeAmount
oracle_orb_trade_amount: OracleOrbTradeAmount
jak_completion_condition: CompletionCondition
start_inventory_from_pool: StartInventoryPool