2022-05-18 21:27:38 +00:00
|
|
|
from typing import Dict
|
|
|
|
from BaseClasses import MultiWorld
|
|
|
|
from Options import Choice, Option
|
|
|
|
|
2022-05-20 15:05:16 +00:00
|
|
|
|
2022-05-18 21:27:38 +00:00
|
|
|
class GameDifficulty(Choice):
|
|
|
|
"""The difficulty of the campaign, affects enemy AI, starting units, and game speed."""
|
|
|
|
display_name = "Game Difficulty"
|
|
|
|
option_casual = 0
|
|
|
|
option_normal = 1
|
|
|
|
option_hard = 2
|
|
|
|
option_brutal = 3
|
|
|
|
|
2022-05-20 15:05:16 +00:00
|
|
|
|
2022-05-18 21:27:38 +00:00
|
|
|
class UpgradeBonus(Choice):
|
|
|
|
"""Determines what lab upgrade to use, whether it is Ultra-Capacitors which boost attack speed with every weapon upgrade
|
|
|
|
or Vanadium Plating which boosts life with every armor upgrade."""
|
|
|
|
display_name = "Upgrade Bonus"
|
|
|
|
option_ultra_capacitors = 0
|
|
|
|
option_vanadium_plating = 1
|
|
|
|
|
2022-05-20 15:05:16 +00:00
|
|
|
|
2022-05-18 21:27:38 +00:00
|
|
|
class BunkerUpgrade(Choice):
|
|
|
|
"""Determines what bunker lab upgrade to use, whether it is Shrike Turret which outfits bunkers with an automated turret or
|
|
|
|
Fortified Bunker which boosts the life of bunkers."""
|
|
|
|
display_name = "Bunker Upgrade"
|
|
|
|
option_shrike_turret = 0
|
|
|
|
option_fortified_bunker = 1
|
|
|
|
|
2022-05-20 15:05:16 +00:00
|
|
|
|
2022-05-18 21:27:38 +00:00
|
|
|
class AllInMap(Choice):
|
2022-05-20 15:05:16 +00:00
|
|
|
"""Determines what version of All-In (final map) that will be generated for the campaign."""
|
2022-05-18 21:27:38 +00:00
|
|
|
display_name = "All In Map"
|
|
|
|
option_ground = 0
|
|
|
|
option_air = 1
|
|
|
|
|
|
|
|
|
|
|
|
# noinspection PyTypeChecker
|
|
|
|
sc2wol_options: Dict[str, Option] = {
|
|
|
|
"game_difficulty": GameDifficulty,
|
|
|
|
"upgrade_bonus": UpgradeBonus,
|
|
|
|
"bunker_upgrade": BunkerUpgrade,
|
|
|
|
"all_in_map": AllInMap,
|
|
|
|
}
|
|
|
|
|
2022-05-20 15:05:16 +00:00
|
|
|
|
2022-05-18 21:27:38 +00:00
|
|
|
def get_option_value(world: MultiWorld, player: int, name: str) -> int:
|
|
|
|
option = getattr(world, name, None)
|
|
|
|
|
|
|
|
if option == None:
|
|
|
|
return 0
|
|
|
|
|
2022-05-20 15:05:16 +00:00
|
|
|
return int(option[player].value)
|