forked from mirror/Archipelago
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
343 lines
12 KiB
Python
343 lines
12 KiB
Python
from typing import List, Dict, Any
|
|
from dataclasses import dataclass
|
|
from worlds.AutoWorld import PerGameCommonOptions
|
|
from Options import Choice, OptionGroup, Toggle, Range
|
|
|
|
def create_option_groups() -> List[OptionGroup]:
|
|
option_group_list: List[OptionGroup] = []
|
|
for name, options in pokemon_stadium_option_groups.items():
|
|
option_group_list.append(OptionGroup(name=name, options=options))
|
|
|
|
return option_group_list
|
|
|
|
class VictoryCondition(Choice):
|
|
"""
|
|
Choose victory condition
|
|
"""
|
|
display_name = "Victory Condition"
|
|
option_defeat_rival = 1
|
|
option_clear_master_ball_cup = 2
|
|
default = 1
|
|
|
|
class BaseStatTotalRandomness(Choice):
|
|
"""
|
|
Controls the level of randomness for Pokemon BST. Stat distribution per Pokemon will follow a randomly selected distribution curve.
|
|
The higher the selection, the more extreme a curve you may see used.
|
|
Stat changes are universal. Rental Pokemon and enemy trainer team Pokemon use the same BSTs.
|
|
Vanilla - No change
|
|
Low - 3 distribution types
|
|
Medium - 4 distribution types
|
|
High - 5 distribution types
|
|
"""
|
|
display_name = "BST Randomness"
|
|
option_vanilla = 1
|
|
option_low = 2
|
|
option_medium = 3
|
|
option_high = 4
|
|
default = 1
|
|
|
|
class Trainersanity(Toggle):
|
|
"""
|
|
Toggle on to make all Trainers into checks. This option is off by default.
|
|
"""
|
|
display_name = 'Trainersanity'
|
|
option_off = 0
|
|
option_on = 1
|
|
default = 0
|
|
|
|
class GymCastleTrainerRandomness(Choice):
|
|
"""
|
|
Controls the level of randomness for the enemy team and movesets in Gym Leader Castle.
|
|
Vanilla - No change
|
|
Low - Movesets have a status, STAB, and higher attack stat aligned move. (4th move is fully random)
|
|
Medium - Movesets have a STAB, and higher attack stat aligned move. (3rd and 4th moves are fully random)
|
|
High - Movesets have a higher attack stat aligned move. (all other moves are fully random)
|
|
"""
|
|
display_name = "Gym Castle Trainer Randomness"
|
|
option_vanilla = 1
|
|
option_low = 2
|
|
option_medium = 3
|
|
option_high = 4
|
|
default = 1
|
|
|
|
class PokeCupTrainerRandomness(Choice):
|
|
"""
|
|
Controls the level of randomness for the enemy team and movesets in Poke Cup.
|
|
Vanilla - No change
|
|
Low - Movesets have a status, STAB, and higher attack stat aligned move. (4th move is fully random)
|
|
Medium - Movesets have a STAB, and higher attack stat aligned move. (3rd and 4th moves are fully random)
|
|
High - Movesets have a higher attack stat aligned move. (all other moves are fully random)
|
|
"""
|
|
display_name = "Poke Cup Trainer Randomness"
|
|
option_vanilla = 1
|
|
option_low = 2
|
|
option_medium = 3
|
|
option_high = 4
|
|
default = 1
|
|
|
|
class PrimeCupTrainerRandomness(Choice):
|
|
"""
|
|
Controls the level of randomness for the enemy team and movesets in Prime Cup.
|
|
Vanilla - No change
|
|
Low - Movesets have a status, STAB, and higher attack stat aligned move. (4th move is fully random)
|
|
Medium - Movesets have a STAB, and higher attack stat aligned move. (3rd and 4th moves are fully random)
|
|
High - Movesets have a higher attack stat aligned move. (all other moves are fully random)
|
|
"""
|
|
display_name = "Prime Cup Trainer Randomness"
|
|
option_vanilla = 1
|
|
option_low = 2
|
|
option_medium = 3
|
|
option_high = 4
|
|
default = 1
|
|
|
|
class PetitCupTrainerRandomness(Choice):
|
|
"""
|
|
Controls the level of randomness for the enemy team and movesets in Petit Cup.
|
|
Vanilla - No change
|
|
Low - Movesets have a status, STAB, and higher attack stat aligned move. (4th move is fully random)
|
|
Medium - Movesets have a STAB, and higher attack stat aligned move. (3rd and 4th moves are fully random)
|
|
High - Movesets have a higher attack stat aligned move. (all other moves are fully random)
|
|
"""
|
|
display_name = "Petit Cup Trainer Randomness"
|
|
option_vanilla = 1
|
|
option_low = 2
|
|
option_medium = 3
|
|
option_high = 4
|
|
default = 1
|
|
|
|
class PikaCupTrainerRandomness(Choice):
|
|
"""
|
|
Controls the level of randomness for the enemy team and movesets in Pika Cup.
|
|
Vanilla - No change
|
|
Low - Movesets have a status, STAB, and higher attack stat aligned move. (4th move is fully random)
|
|
Medium - Movesets have a STAB, and higher attack stat aligned move. (3rd and 4th moves are fully random)
|
|
High - Movesets have a higher attack stat aligned move. (all other moves are fully random)
|
|
"""
|
|
display_name = "Pika Cup Trainer Randomness"
|
|
option_vanilla = 1
|
|
option_low = 2
|
|
option_medium = 3
|
|
option_high = 4
|
|
default = 1
|
|
|
|
class GymCastleRentalRandomness(Choice):
|
|
"""
|
|
Controls the level of randomness for the rental Pokemon moves in Gym Leader Castle.
|
|
Vanilla - No change
|
|
Low - Movesets have a status, STAB, and higher attack stat aligned move. (4th move is fully random)
|
|
Medium - Movesets have a STAB, and higher attack stat aligned move. (3rd and 4th moves are fully random)
|
|
High - Movesets have a higher attack stat aligned move. (all other moves are fully random)
|
|
"""
|
|
display_name = "Gym Castle Rental Randomness"
|
|
option_vanilla = 1
|
|
option_low = 2
|
|
option_medium = 3
|
|
option_high = 4
|
|
default = 1
|
|
|
|
class PokeCupRentalRandomness(Choice):
|
|
"""
|
|
Controls the level of randomness for the rental Pokemon moves in the Poke Cup.
|
|
Vanilla - No change
|
|
Low - Movesets have a status, STAB, and higher attack stat aligned move. (4th move is fully random)
|
|
Medium - Movesets have a STAB, and higher attack stat aligned move. (3rd and 4th moves are fully random)
|
|
High - Movesets have a higher attack stat aligned move. (all other moves are fully random)
|
|
"""
|
|
display_name = "Poke Cup Rental Randomness"
|
|
option_vanilla = 1
|
|
option_low = 2
|
|
option_medium = 3
|
|
option_high = 4
|
|
default = 1
|
|
|
|
class PrimeCupRentalRandomness(Choice):
|
|
"""
|
|
Controls the level of randomness for the rental Pokemon moves in the Prime Cup.
|
|
Vanilla - No change
|
|
Low - Movesets have a status, STAB, and higher attack stat aligned move. (4th move is fully random)
|
|
Medium - Movesets have a STAB, and higher attack stat aligned move. (3rd and 4th moves are fully random)
|
|
High - Movesets have a higher attack stat aligned move. (all other moves are fully random)
|
|
"""
|
|
display_name = "Prime Cup Rental Randomness"
|
|
option_vanilla = 1
|
|
option_low = 2
|
|
option_medium = 3
|
|
option_high = 4
|
|
default = 1
|
|
|
|
class PetitCupRentalRandomness(Choice):
|
|
"""
|
|
Controls the level of randomness for the rental Pokemon moves in the Petit Cup.
|
|
Vanilla - No change
|
|
Low - Movesets have a status, STAB, and higher attack stat aligned move. (4th move is fully random)
|
|
Medium - Movesets have a STAB, and higher attack stat aligned move. (3rd and 4th moves are fully random)
|
|
High - Movesets have a higher attack stat aligned move. (all other moves are fully random)
|
|
"""
|
|
display_name = "Petit Cup Rental Randomness"
|
|
option_vanilla = 1
|
|
option_low = 2
|
|
option_medium = 3
|
|
option_high = 4
|
|
default = 1
|
|
class PikaCupRentalRandomness(Choice):
|
|
"""
|
|
Controls the level of randomness for the rental Pokemon moves in the Pika Cup.
|
|
Vanilla - No change
|
|
Low - Movesets have a status, STAB, and higher attack stat aligned move. (4th move is fully random)
|
|
Medium - Movesets have a STAB, and higher attack stat aligned move. (3rd and 4th moves are fully random)
|
|
High - Movesets have a higher attack stat aligned move. (all other moves are fully random)
|
|
"""
|
|
display_name = "Pika Cup Rental Randomness"
|
|
option_vanilla = 1
|
|
option_low = 2
|
|
option_medium = 3
|
|
option_high = 4
|
|
default = 1
|
|
|
|
class RentalListShuffle(Choice):
|
|
"""
|
|
Controls whether the rental pokemon list is randomized or not
|
|
Instead of going in dex order, the rental tables will be shuffled
|
|
|
|
Off - No change
|
|
On - All tables shuffled
|
|
Manual: Select which tables are shuffled
|
|
"""
|
|
display_name = "Rental List Shuffle"
|
|
option_off = 1
|
|
option_on = 2
|
|
option_manual = 3
|
|
default = 1
|
|
|
|
class RentalListShuffleGLC(Choice):
|
|
"""
|
|
Controls whether the rental pokemon list for the Gym Leader Castle is randomized or not
|
|
Instead of going in dex order, the rental tables will be shuffled
|
|
This option only matters if RentalListShuffle is set to Manual mode.
|
|
Default is set to On
|
|
|
|
Off - No change
|
|
On - All tables shuffled
|
|
"""
|
|
display_name = "RLS Manual: Gym Leader Castle"
|
|
option_off = 1
|
|
option_on = 2
|
|
default = 2
|
|
|
|
class RentalListShufflePokeCup(Choice):
|
|
"""
|
|
Controls whether the rental pokemon list for the Poke Cup is randomized or not
|
|
Instead of going in dex order, the rental tables will be shuffled
|
|
This option only matters if RentalListShuffle is set to Manual mode.
|
|
Default is set to On
|
|
|
|
Off - No change
|
|
On - All tables shuffled
|
|
"""
|
|
display_name = "RLS Manual: Poke Cup"
|
|
option_off = 1
|
|
option_on = 2
|
|
default = 2
|
|
|
|
class RentalListShufflePrimeCup(Choice):
|
|
"""
|
|
Controls whether the rental pokemon list for the Prime Cup is randomized or not
|
|
Instead of going in dex order, the rental tables will be shuffled
|
|
This option only matters if RentalListShuffle is set to Manual mode.
|
|
Default is set to On
|
|
|
|
Off - No change
|
|
On - All tables shuffled
|
|
"""
|
|
display_name = "RLS Manual: Prime Cup"
|
|
option_off = 1
|
|
option_on = 2
|
|
default = 2
|
|
|
|
class RentalListShufflePetitCup(Choice):
|
|
"""
|
|
Controls whether the rental pokemon list for the Petit Cup is randomized or not
|
|
Instead of going in dex order, the rental tables will be shuffled
|
|
This option only matters if RentalListShuffle is set to Manual mode.
|
|
Default is set to On
|
|
|
|
Off - No change
|
|
On - All tables shuffled
|
|
"""
|
|
display_name = "RLS Manual: Petit Cup"
|
|
option_off = 1
|
|
option_on = 2
|
|
default = 2
|
|
|
|
class RentalListShufflePikaCup(Choice):
|
|
"""
|
|
Controls whether the rental pokemon list for the Pika Cup is randomized or not
|
|
Instead of going in dex order, the rental tables will be shuffled
|
|
This option only matters if RentalListShuffle is set to Manual mode.
|
|
Default is set to On
|
|
|
|
Off - No change
|
|
On - All tables shuffled
|
|
"""
|
|
display_name = "RLS Manual: Pika Cup"
|
|
option_off = 1
|
|
option_on = 2
|
|
default = 2
|
|
|
|
|
|
@dataclass
|
|
class PokemonStadiumOptions(PerGameCommonOptions):
|
|
VictoryCondition: VictoryCondition
|
|
BaseStatTotalRandomness: BaseStatTotalRandomness
|
|
Trainersanity: Trainersanity
|
|
GymCastleTrainerRandomness: GymCastleTrainerRandomness
|
|
PokeCupTrainerRandomness: PokeCupTrainerRandomness
|
|
PrimeCupTrainerRandomness: PrimeCupTrainerRandomness
|
|
PetitCupTrainerRandomness: PetitCupTrainerRandomness
|
|
PikaCupTrainerRandomness: PikaCupTrainerRandomness
|
|
GymCastleRentalRandomness: GymCastleRentalRandomness
|
|
PokeCupRentalRandomness: PokeCupRentalRandomness
|
|
PrimeCupRentalRandomness: PrimeCupRentalRandomness
|
|
PetitCupRentalRandomness: PetitCupRentalRandomness
|
|
PikaCupRentalRandomness: PikaCupRentalRandomness
|
|
RentalListShuffle: RentalListShuffle
|
|
RentalListShuffleGLC: RentalListShuffleGLC
|
|
RentalListShufflePokeCup: RentalListShufflePokeCup
|
|
RentalListShufflePrimeCup: RentalListShufflePrimeCup
|
|
RentalListShufflePetitCup: RentalListShufflePetitCup
|
|
RentalListShufflePikaCup: RentalListShufflePikaCup
|
|
|
|
|
|
# This is where you organize your options
|
|
# Its entirely up to you how you want to organize it
|
|
pokemon_stadium_option_groups: Dict[str, List[Any]] = {
|
|
"General Options": [
|
|
VictoryCondition,
|
|
BaseStatTotalRandomness,
|
|
Trainersanity,
|
|
],
|
|
|
|
"Enemy Trainer Pokemon Options": [
|
|
GymCastleTrainerRandomness,
|
|
PokeCupTrainerRandomness,
|
|
PrimeCupTrainerRandomness,
|
|
PetitCupTrainerRandomness,
|
|
PikaCupTrainerRandomness,
|
|
],
|
|
"Rental Pokemon Options":
|
|
[
|
|
GymCastleRentalRandomness,
|
|
PokeCupRentalRandomness,
|
|
PrimeCupRentalRandomness,
|
|
PetitCupRentalRandomness,
|
|
PikaCupRentalRandomness,
|
|
],
|
|
"Shuffling Options":
|
|
[ RentalListShuffle,
|
|
RentalListShuffleGLC,
|
|
RentalListShufflePokeCup,
|
|
RentalListShufflePrimeCup,
|
|
RentalListShufflePetitCup,
|
|
RentalListShufflePikaCup],
|
|
}
|