from typing import Any, Dict import Options as ap_options from .. import options from Options import Accessibility, ProgressionBalancing from .. import item_names from ..mission_tables import SC2Race, SC2Campaign from ..options import ( # avoid import * GameDifficulty, DifficultyDamageModifier, GameSpeed, DisableForcedCamera, SkipCutscenes, AllInMap, MissionOrder, MaximumCampaignSize, TwoStartPositions, KeyMode, PlayerColorTerranRaynor, PlayerColorProtoss, PlayerColorZerg, PlayerColorZergPrimal, PlayerColorNova, SelectedRaces, EnabledCampaigns, EnableRaceSwapVariants, EnableMissionRaceBalancing, ShuffleCampaigns, ShuffleNoBuild, StarterUnit, RequiredTactics, EnableVoidTrade, VoidTradeAgeLimit, VoidTradeWorkers, EnsureGenericItems, MinNumberOfUpgrades, MaxNumberOfUpgrades, MercenaryHighlanders, MaxUpgradeLevel, GenericUpgradeMissions, GenericUpgradeResearch, GenericUpgradeResearchSpeedup, GenericUpgradeItems, KerriganPresence, KerriganLevelsPerMissionCompleted, KerriganLevelsPerMissionCompletedCap, KerriganLevelItemSum, KerriganLevelItemDistribution, KerriganTotalLevelCap, StartPrimaryAbilities, KerriganPrimalStatus, KerriganMaxActiveAbilities, KerriganMaxPassiveAbilities, EnableMorphling, WarCouncilNerfs, SpearOfAdunPresence, SpearOfAdunPresentInNoBuild, SpearOfAdunPassiveAbilityPresence, SpearOfAdunPassivesPresentInNoBuild, SpearOfAdunMaxActiveAbilities, SpearOfAdunMaxAutocastAbilities, GrantStoryTech, GrantStoryLevels, NovaMaxWeapons, NovaMaxGadgets, NovaGhostOfAChanceVariant, TakeOverAIAllies, LockedItems, ExcludedItems, UnexcludedItems, ExcludedMissions, DifficultyCurve, ExcludeVeryHardMissions, VanillaItemsOnly, ExcludeOverpoweredItems, VictoryCache, VanillaLocations, ExtraLocations, ChallengeLocations, MasteryLocations, BasebustLocations, SpeedrunLocations, PreventativeLocations, FillerPercentage, MineralsPerItem, VespenePerItem, StartingSupplyPerItem, MaximumSupplyPerItem, MaximumSupplyReductionPerItem, LowestMaximumSupply, ResearchCostReductionPerItem, FillerItemsDistribution, MissionOrderScouting, CustomMissionOrder, OPTION_NAME ) template_settings = { # Free to play, 25 WoL missions, Terran only Golden Path. Matches the template.yaml. OPTION_NAME[Accessibility]: Accessibility.option_full, OPTION_NAME[ProgressionBalancing]: ProgressionBalancing.default, OPTION_NAME[GameDifficulty]: GameDifficulty.option_normal, OPTION_NAME[SelectedRaces]: {SC2Race.TERRAN.get_title()}, OPTION_NAME[MissionOrder]: MissionOrder.option_golden_path, OPTION_NAME[RequiredTactics]: RequiredTactics.option_standard, OPTION_NAME[EnabledCampaigns]: {SC2Campaign.WOL.campaign_name}, OPTION_NAME[EnableRaceSwapVariants]: EnableRaceSwapVariants.option_disabled, OPTION_NAME[KeyMode]: KeyMode.option_disabled, OPTION_NAME[MaximumCampaignSize]: 25, OPTION_NAME[StarterUnit]: StarterUnit.option_balanced, OPTION_NAME[NovaGhostOfAChanceVariant]: NovaGhostOfAChanceVariant.option_wol, OPTION_NAME[TakeOverAIAllies]: TakeOverAIAllies.option_false, OPTION_NAME[DifficultyCurve]: DifficultyCurve.option_standard, OPTION_NAME[MasteryLocations]: MasteryLocations.option_disabled, OPTION_NAME[MissionOrderScouting]: MissionOrderScouting.option_completed, OPTION_NAME[MineralsPerItem]: 10, OPTION_NAME[VespenePerItem]: 10, OPTION_NAME[StartingSupplyPerItem]: 2, OPTION_NAME[MaximumSupplyPerItem]: 1, OPTION_NAME[ResearchCostReductionPerItem]: 2, } f2p_big_settings = { # Free to play, all race 7x7 Grid OPTION_NAME[Accessibility]: Accessibility.option_full, OPTION_NAME[ProgressionBalancing]: ProgressionBalancing.default, OPTION_NAME[GameDifficulty]: GameDifficulty.option_normal, OPTION_NAME[SelectedRaces]: SelectedRaces.valid_keys, OPTION_NAME[MissionOrder]: MissionOrder.option_grid, OPTION_NAME[RequiredTactics]: RequiredTactics.option_standard, OPTION_NAME[EnabledCampaigns]: { SC2Campaign.WOL.campaign_name, SC2Campaign.PROPHECY.campaign_name, SC2Campaign.PROLOGUE.campaign_name }, OPTION_NAME[EnableRaceSwapVariants]: EnableRaceSwapVariants.option_shuffle_all, OPTION_NAME[EnableMissionRaceBalancing]: EnableMissionRaceBalancing.option_semi_balanced, OPTION_NAME[KeyMode]: KeyMode.option_disabled, OPTION_NAME[MaximumCampaignSize]: 48, OPTION_NAME[TwoStartPositions]: TwoStartPositions.option_true, OPTION_NAME[StarterUnit]: StarterUnit.option_balanced, OPTION_NAME[EnableMorphling]: EnableMorphling.option_true, OPTION_NAME[TakeOverAIAllies]: TakeOverAIAllies.option_false, OPTION_NAME[DifficultyCurve]: DifficultyCurve.option_standard, OPTION_NAME[VanillaLocations]: VanillaLocations.option_enabled, OPTION_NAME[ExtraLocations]: ExtraLocations.option_enabled, OPTION_NAME[ChallengeLocations]: ChallengeLocations.option_enabled, OPTION_NAME[MasteryLocations]: MasteryLocations.option_disabled, OPTION_NAME[KerriganPrimalStatus]: KerriganPrimalStatus.option_item, OPTION_NAME[WarCouncilNerfs]: WarCouncilNerfs.option_false, OPTION_NAME[SpearOfAdunPresence]: SpearOfAdunPresence.option_everywhere, OPTION_NAME[SpearOfAdunPresentInNoBuild]: SpearOfAdunPresentInNoBuild.option_false, OPTION_NAME[SpearOfAdunPassiveAbilityPresence]: SpearOfAdunPassiveAbilityPresence.option_everywhere, OPTION_NAME[SpearOfAdunPassivesPresentInNoBuild]: SpearOfAdunPassivesPresentInNoBuild.option_false, OPTION_NAME[MissionOrderScouting]: MissionOrderScouting.option_completed, OPTION_NAME[MineralsPerItem]: 5, OPTION_NAME[VespenePerItem]: 5, OPTION_NAME[StartingSupplyPerItem]: 2, OPTION_NAME[MaximumSupplyPerItem]: 1, OPTION_NAME[ResearchCostReductionPerItem]: 2, } zerg_rush_settings = { # Zerg only, Blitz, short (5 required, 15 total). Sync-friendly OPTION_NAME[Accessibility]: Accessibility.option_full, OPTION_NAME[ProgressionBalancing]: ProgressionBalancing.default, OPTION_NAME[GameDifficulty]: GameDifficulty.option_hard, OPTION_NAME[SelectedRaces]: {SC2Race.ZERG.get_title()}, OPTION_NAME[MissionOrder]: MissionOrder.option_blitz, OPTION_NAME[RequiredTactics]: RequiredTactics.option_advanced, OPTION_NAME[EnabledCampaigns]: EnabledCampaigns.valid_keys, OPTION_NAME[EnableRaceSwapVariants]: EnableRaceSwapVariants.option_shuffle_all, OPTION_NAME[KeyMode]: KeyMode.option_disabled, OPTION_NAME[MaximumCampaignSize]: 15, OPTION_NAME[StarterUnit]: StarterUnit.option_balanced, OPTION_NAME[EnableMorphling]: EnableMorphling.option_true, OPTION_NAME[TakeOverAIAllies]: TakeOverAIAllies.option_false, OPTION_NAME[DifficultyCurve]: DifficultyCurve.option_standard, OPTION_NAME[VictoryCache]: 3, OPTION_NAME[GenericUpgradeItems]: GenericUpgradeItems.option_bundle_all, OPTION_NAME[VanillaLocations]: VanillaLocations.option_enabled, OPTION_NAME[ExtraLocations]: ExtraLocations.option_enabled, OPTION_NAME[ChallengeLocations]: ChallengeLocations.option_enabled, OPTION_NAME[MasteryLocations]: MasteryLocations.option_disabled, OPTION_NAME[ExcludeVeryHardMissions]: ExcludeVeryHardMissions.option_true, OPTION_NAME[KerriganPrimalStatus]: KerriganPrimalStatus.option_item, OPTION_NAME[MissionOrderScouting]: MissionOrderScouting.option_all, OPTION_NAME[GrantStoryTech]: GrantStoryTech.option_grant, OPTION_NAME[GrantStoryLevels]: GrantStoryLevels.option_minimum, OPTION_NAME[MineralsPerItem]: 25, OPTION_NAME[VespenePerItem]: 25, OPTION_NAME[StartingSupplyPerItem]: 5, OPTION_NAME[MaximumSupplyPerItem]: 2, OPTION_NAME[ResearchCostReductionPerItem]: 5, } classic_grid_settings = { # Short-ish 5x5 Grid (8 required, 24 total), all races. Sync-friendly OPTION_NAME[Accessibility]: Accessibility.option_full, OPTION_NAME[ProgressionBalancing]: ProgressionBalancing.default, OPTION_NAME[GameDifficulty]: GameDifficulty.option_hard, OPTION_NAME[SelectedRaces]: SelectedRaces.valid_keys, OPTION_NAME[MissionOrder]: MissionOrder.option_grid, OPTION_NAME[RequiredTactics]: RequiredTactics.option_standard, OPTION_NAME[EnabledCampaigns]: EnabledCampaigns.valid_keys, OPTION_NAME[EnableRaceSwapVariants]: EnableRaceSwapVariants.option_shuffle_all, OPTION_NAME[EnableMissionRaceBalancing]: EnableMissionRaceBalancing.option_fully_balanced, OPTION_NAME[KeyMode]: KeyMode.option_disabled, OPTION_NAME[MaximumCampaignSize]: 24, OPTION_NAME[TwoStartPositions]: TwoStartPositions.option_true, OPTION_NAME[StarterUnit]: StarterUnit.option_balanced, OPTION_NAME[EnableMorphling]: EnableMorphling.option_true, OPTION_NAME[TakeOverAIAllies]: TakeOverAIAllies.option_false, OPTION_NAME[DifficultyCurve]: DifficultyCurve.option_standard, OPTION_NAME[VictoryCache]: 5, OPTION_NAME[GenericUpgradeItems]: GenericUpgradeItems.option_bundle_all, OPTION_NAME[VanillaLocations]: VanillaLocations.option_enabled, OPTION_NAME[ExtraLocations]: ExtraLocations.option_enabled, OPTION_NAME[ChallengeLocations]: ChallengeLocations.option_enabled, OPTION_NAME[MasteryLocations]: MasteryLocations.option_disabled, OPTION_NAME[ExcludeVeryHardMissions]: ExcludeVeryHardMissions.option_true, OPTION_NAME[KerriganPrimalStatus]: KerriganPrimalStatus.option_item, OPTION_NAME[WarCouncilNerfs]: WarCouncilNerfs.option_false, OPTION_NAME[SpearOfAdunPresence]: SpearOfAdunPresence.option_any_race_lotv, OPTION_NAME[SpearOfAdunPresentInNoBuild]: SpearOfAdunPresentInNoBuild.option_false, OPTION_NAME[SpearOfAdunPassiveAbilityPresence]: SpearOfAdunPassiveAbilityPresence.option_any_race_lotv, OPTION_NAME[SpearOfAdunPassivesPresentInNoBuild]: SpearOfAdunPassivesPresentInNoBuild.option_false, OPTION_NAME[MissionOrderScouting]: MissionOrderScouting.option_all, OPTION_NAME[GrantStoryTech]: GrantStoryTech.option_grant, OPTION_NAME[GrantStoryLevels]: GrantStoryLevels.option_minimum, OPTION_NAME[MineralsPerItem]: 25, OPTION_NAME[VespenePerItem]: 25, OPTION_NAME[StartingSupplyPerItem]: 5, OPTION_NAME[MaximumSupplyPerItem]: 2, OPTION_NAME[ResearchCostReductionPerItem]: 5, } raceswap_blitz_settings = { # medium-sized Blitz (10 required, 50 total), all races, forced raceswaps OPTION_NAME[Accessibility]: Accessibility.option_full, OPTION_NAME[ProgressionBalancing]: ProgressionBalancing.default, OPTION_NAME[GameDifficulty]: GameDifficulty.option_hard, OPTION_NAME[SelectedRaces]: SelectedRaces.valid_keys, OPTION_NAME[MissionOrder]: MissionOrder.option_blitz, OPTION_NAME[RequiredTactics]: RequiredTactics.option_advanced, OPTION_NAME[EnabledCampaigns]: EnabledCampaigns.valid_keys, OPTION_NAME[EnableRaceSwapVariants]: EnableRaceSwapVariants.option_pick_one_non_vanilla, OPTION_NAME[EnableMissionRaceBalancing]: EnableMissionRaceBalancing.option_semi_balanced, OPTION_NAME[KeyMode]: KeyMode.option_disabled, OPTION_NAME[MaximumCampaignSize]: 50, OPTION_NAME[StarterUnit]: StarterUnit.option_off, OPTION_NAME[EnableMorphling]: EnableMorphling.option_true, OPTION_NAME[TakeOverAIAllies]: TakeOverAIAllies.option_false, OPTION_NAME[DifficultyCurve]: DifficultyCurve.option_standard, OPTION_NAME[VanillaLocations]: VanillaLocations.option_enabled, OPTION_NAME[ExtraLocations]: ExtraLocations.option_enabled, OPTION_NAME[ChallengeLocations]: ChallengeLocations.option_enabled, OPTION_NAME[MasteryLocations]: MasteryLocations.option_disabled, OPTION_NAME[KerriganPrimalStatus]: KerriganPrimalStatus.option_item, OPTION_NAME[WarCouncilNerfs]: WarCouncilNerfs.option_true, OPTION_NAME[SpearOfAdunPresence]: SpearOfAdunPresence.option_protoss, OPTION_NAME[SpearOfAdunPresentInNoBuild]: SpearOfAdunPresentInNoBuild.option_false, OPTION_NAME[SpearOfAdunPassiveAbilityPresence]: SpearOfAdunPassiveAbilityPresence.option_protoss, OPTION_NAME[SpearOfAdunPassivesPresentInNoBuild]: SpearOfAdunPassivesPresentInNoBuild.option_false, OPTION_NAME[ExcludeOverpoweredItems]: ExcludeOverpoweredItems.option_true, OPTION_NAME[MissionOrderScouting]: MissionOrderScouting.option_completed, OPTION_NAME[MineralsPerItem]: 10, OPTION_NAME[VespenePerItem]: 10, OPTION_NAME[StartingSupplyPerItem]: 2, OPTION_NAME[MaximumSupplyPerItem]: 1, OPTION_NAME[ResearchCostReductionPerItem]: 2, } bread_and_butter_settings = { # 50 mission Golden Path, all races, limits on Upgrades per Unit/Kerrigan/Nova/SoA OPTION_NAME[Accessibility]: Accessibility.option_full, OPTION_NAME[ProgressionBalancing]: ProgressionBalancing.default, OPTION_NAME[GameDifficulty]: GameDifficulty.option_normal, OPTION_NAME[SelectedRaces]: SelectedRaces.valid_keys, OPTION_NAME[MissionOrder]: MissionOrder.option_blitz, OPTION_NAME[RequiredTactics]: RequiredTactics.option_standard, OPTION_NAME[EnabledCampaigns]: EnabledCampaigns.valid_keys, OPTION_NAME[EnableRaceSwapVariants]: EnableRaceSwapVariants.option_pick_one, OPTION_NAME[EnableMissionRaceBalancing]: EnableMissionRaceBalancing.option_semi_balanced, OPTION_NAME[KeyMode]: KeyMode.option_progressive_questlines, OPTION_NAME[MaximumCampaignSize]: 50, OPTION_NAME[StarterUnit]: StarterUnit.option_off, OPTION_NAME[EnableMorphling]: EnableMorphling.option_true, OPTION_NAME[TakeOverAIAllies]: TakeOverAIAllies.option_false, OPTION_NAME[DifficultyCurve]: DifficultyCurve.option_standard, OPTION_NAME[VanillaLocations]: VanillaLocations.option_enabled, OPTION_NAME[ExtraLocations]: ExtraLocations.option_enabled, OPTION_NAME[ChallengeLocations]: ChallengeLocations.option_enabled, OPTION_NAME[MasteryLocations]: MasteryLocations.option_disabled, OPTION_NAME[WarCouncilNerfs]: WarCouncilNerfs.option_true, OPTION_NAME[NovaGhostOfAChanceVariant]: NovaGhostOfAChanceVariant.option_nco, OPTION_NAME[GenericUpgradeItems]: GenericUpgradeItems.option_individual_items, OPTION_NAME[MinNumberOfUpgrades]: 1, OPTION_NAME[MaxNumberOfUpgrades]: 4, OPTION_NAME[NovaMaxWeapons]: 2, OPTION_NAME[NovaMaxGadgets]: 2, OPTION_NAME[KerriganPrimalStatus]: KerriganPrimalStatus.option_item, OPTION_NAME[KerriganMaxActiveAbilities]: 4, OPTION_NAME[KerriganMaxPassiveAbilities]: 2, OPTION_NAME[SpearOfAdunPresence]: SpearOfAdunPresence.option_protoss, OPTION_NAME[SpearOfAdunPresentInNoBuild]: SpearOfAdunPresentInNoBuild.option_false, OPTION_NAME[SpearOfAdunPassiveAbilityPresence]: SpearOfAdunPassiveAbilityPresence.option_protoss, OPTION_NAME[SpearOfAdunPassivesPresentInNoBuild]: SpearOfAdunPassivesPresentInNoBuild.option_false, OPTION_NAME[SpearOfAdunMaxActiveAbilities]: 3, OPTION_NAME[SpearOfAdunMaxAutocastAbilities]: 1, OPTION_NAME[MissionOrderScouting]: MissionOrderScouting.option_completed, OPTION_NAME[ExcludeOverpoweredItems]: ExcludeOverpoweredItems.option_true, OPTION_NAME[GrantStoryTech]: GrantStoryTech.option_allow_substitutes, OPTION_NAME[MineralsPerItem]: 10, OPTION_NAME[VespenePerItem]: 10, OPTION_NAME[StartingSupplyPerItem]: 2, OPTION_NAME[MaximumSupplyPerItem]: 1, OPTION_NAME[ResearchCostReductionPerItem]: 2, OPTION_NAME[FillerPercentage]: 30, OPTION_NAME[FillerItemsDistribution]: { item_names.STARTING_MINERALS: 10, item_names.STARTING_VESPENE: 10, item_names.STARTING_SUPPLY: 10, item_names.MAX_SUPPLY: 10, item_names.SHIELD_REGENERATION: 5, item_names.BUILDING_CONSTRUCTION_SPEED: 10, item_names.KERRIGAN_LEVELS_1: 0, item_names.UPGRADE_RESEARCH_SPEED: 10, item_names.UPGRADE_RESEARCH_COST: 10, item_names.REDUCED_MAX_SUPPLY: 0, } } all_protoss_settings = { # Vanilla campaign, but full Protoss. 62 missions, huge for one race, reduced locations, low values for fillers OPTION_NAME[Accessibility]: Accessibility.option_full, OPTION_NAME[ProgressionBalancing]: ProgressionBalancing.default, OPTION_NAME[GameDifficulty]: GameDifficulty.option_normal, OPTION_NAME[SelectedRaces]: {SC2Race.PROTOSS.get_title()}, OPTION_NAME[MissionOrder]: MissionOrder.option_vanilla_shuffled, OPTION_NAME[RequiredTactics]: RequiredTactics.option_standard, OPTION_NAME[EnabledCampaigns]: { SC2Campaign.WOL.campaign_name, SC2Campaign.PROPHECY.campaign_name, SC2Campaign.HOTS.campaign_name, SC2Campaign.PROLOGUE.campaign_name, SC2Campaign.LOTV.campaign_name, # SC2Campaign.EPILOGUE.campaign_name, enable once Epilogue gets race-swaps # SC2Campaign.NCO.campaign_name, enable once NCO gets race-swaps }, OPTION_NAME[EnableRaceSwapVariants]: EnableRaceSwapVariants.option_shuffle_all, OPTION_NAME[KeyMode]: KeyMode.option_progressive_questlines, OPTION_NAME[MaximumCampaignSize]: 61, OPTION_NAME[StarterUnit]: StarterUnit.option_off, OPTION_NAME[GrantStoryTech]: GrantStoryTech.option_grant, OPTION_NAME[GrantStoryLevels]: GrantStoryLevels.option_minimum, OPTION_NAME[TakeOverAIAllies]: TakeOverAIAllies.option_false, OPTION_NAME[DifficultyCurve]: DifficultyCurve.option_standard, OPTION_NAME[VanillaLocations]: VanillaLocations.option_enabled, OPTION_NAME[ExtraLocations]: ExtraLocations.option_enabled, OPTION_NAME[ChallengeLocations]: ChallengeLocations.option_disabled, OPTION_NAME[MasteryLocations]: MasteryLocations.option_disabled, OPTION_NAME[WarCouncilNerfs]: WarCouncilNerfs.option_true, OPTION_NAME[GenericUpgradeItems]: GenericUpgradeItems.option_individual_items, OPTION_NAME[MinNumberOfUpgrades]: 2, OPTION_NAME[MaxNumberOfUpgrades]: 4, OPTION_NAME[SpearOfAdunPresence]: SpearOfAdunPresence.option_protoss, OPTION_NAME[SpearOfAdunPresentInNoBuild]: SpearOfAdunPresentInNoBuild.option_false, OPTION_NAME[SpearOfAdunPassiveAbilityPresence]: SpearOfAdunPassiveAbilityPresence.option_protoss, OPTION_NAME[SpearOfAdunPassivesPresentInNoBuild]: SpearOfAdunPassivesPresentInNoBuild.option_false, OPTION_NAME[SpearOfAdunMaxActiveAbilities]: 3, OPTION_NAME[SpearOfAdunMaxAutocastAbilities]: 1, OPTION_NAME[MissionOrderScouting]: MissionOrderScouting.option_completed, OPTION_NAME[MineralsPerItem]: 5, OPTION_NAME[VespenePerItem]: 5, OPTION_NAME[StartingSupplyPerItem]: 1, OPTION_NAME[MaximumSupplyPerItem]: 1, OPTION_NAME[ResearchCostReductionPerItem]: 1, OPTION_NAME[FillerPercentage]: 30, OPTION_NAME[FillerItemsDistribution]: { item_names.STARTING_MINERALS: 1, item_names.STARTING_VESPENE: 1, item_names.STARTING_SUPPLY: 1, item_names.MAX_SUPPLY: 1, item_names.SHIELD_REGENERATION: 1, item_names.BUILDING_CONSTRUCTION_SPEED: 1, item_names.KERRIGAN_LEVELS_1: 0, item_names.UPGRADE_RESEARCH_SPEED: 1, item_names.UPGRADE_RESEARCH_COST: 1, item_names.REDUCED_MAX_SUPPLY: 0, } } evil_logic_settings = { # 6x6 grid on any_unit. High difficulty, disabled Kerrigan, harsh limits, trap items. any_unit has a chance to be unbeatable OPTION_NAME[Accessibility]: Accessibility.option_full, OPTION_NAME[ProgressionBalancing]: ProgressionBalancing.default, OPTION_NAME[GameDifficulty]: GameDifficulty.option_brutal, OPTION_NAME[SelectedRaces]: SelectedRaces.valid_keys, OPTION_NAME[MissionOrder]: MissionOrder.option_grid, OPTION_NAME[RequiredTactics]: RequiredTactics.option_standard, OPTION_NAME[EnabledCampaigns]: EnabledCampaigns.valid_keys, OPTION_NAME[EnableRaceSwapVariants]: EnableRaceSwapVariants.option_pick_one, OPTION_NAME[EnableMissionRaceBalancing]: EnableMissionRaceBalancing.option_semi_balanced, OPTION_NAME[KeyMode]: KeyMode.option_progressive_questlines, OPTION_NAME[MaximumCampaignSize]: 35, OPTION_NAME[StarterUnit]: StarterUnit.option_off, OPTION_NAME[EnableMorphling]: EnableMorphling.option_true, OPTION_NAME[TakeOverAIAllies]: TakeOverAIAllies.option_false, OPTION_NAME[DifficultyCurve]: DifficultyCurve.option_standard, OPTION_NAME[VanillaLocations]: VanillaLocations.option_enabled, OPTION_NAME[ExtraLocations]: ExtraLocations.option_enabled, OPTION_NAME[ChallengeLocations]: ChallengeLocations.option_enabled, OPTION_NAME[MasteryLocations]: MasteryLocations.option_enabled, OPTION_NAME[WarCouncilNerfs]: WarCouncilNerfs.option_true, OPTION_NAME[NovaGhostOfAChanceVariant]: NovaGhostOfAChanceVariant.option_nco, OPTION_NAME[GenericUpgradeItems]: GenericUpgradeItems.option_individual_items, OPTION_NAME[MinNumberOfUpgrades]: 1, OPTION_NAME[MaxNumberOfUpgrades]: 2, OPTION_NAME[NovaMaxWeapons]: 1, OPTION_NAME[NovaMaxGadgets]: 1, OPTION_NAME[KerriganPresence]: KerriganPresence.option_not_present, OPTION_NAME[SpearOfAdunPresence]: SpearOfAdunPresence.option_any_race_lotv, OPTION_NAME[SpearOfAdunPresentInNoBuild]: SpearOfAdunPresentInNoBuild.option_false, OPTION_NAME[SpearOfAdunPassiveAbilityPresence]: SpearOfAdunPassiveAbilityPresence.option_any_race_lotv, OPTION_NAME[SpearOfAdunPassivesPresentInNoBuild]: SpearOfAdunPassivesPresentInNoBuild.option_false, OPTION_NAME[SpearOfAdunMaxActiveAbilities]: 2, OPTION_NAME[SpearOfAdunMaxAutocastAbilities]: 1, OPTION_NAME[MissionOrderScouting]: MissionOrderScouting.option_completed, OPTION_NAME[ExcludeOverpoweredItems]: ExcludeOverpoweredItems.option_true, OPTION_NAME[GrantStoryTech]: GrantStoryTech.option_allow_substitutes, OPTION_NAME[MineralsPerItem]: 10, OPTION_NAME[VespenePerItem]: 10, OPTION_NAME[StartingSupplyPerItem]: 2, OPTION_NAME[MaximumSupplyPerItem]: 1, OPTION_NAME[ResearchCostReductionPerItem]: 2, OPTION_NAME[MaximumSupplyReductionPerItem]: 10, OPTION_NAME[FillerPercentage]: 20, OPTION_NAME[FillerItemsDistribution]: { item_names.STARTING_MINERALS: 10, item_names.STARTING_VESPENE: 10, item_names.STARTING_SUPPLY: 10, item_names.MAX_SUPPLY: 0, item_names.SHIELD_REGENERATION: 5, item_names.BUILDING_CONSTRUCTION_SPEED: 10, item_names.KERRIGAN_LEVELS_1: 0, item_names.UPGRADE_RESEARCH_SPEED: 10, item_names.UPGRADE_RESEARCH_COST: 10, item_names.REDUCED_MAX_SUPPLY: 2, } } full_campaign_settings = { # mandatory full campaign, not recommended, but will be expected. 195 mission grid, all races. Reduced locations and filler values OPTION_NAME[Accessibility]: Accessibility.option_full, OPTION_NAME[ProgressionBalancing]: ProgressionBalancing.default, OPTION_NAME[GameDifficulty]: GameDifficulty.option_normal, OPTION_NAME[SelectedRaces]: SelectedRaces.valid_keys, OPTION_NAME[MissionOrder]: MissionOrder.option_grid, OPTION_NAME[RequiredTactics]: RequiredTactics.option_standard, OPTION_NAME[EnabledCampaigns]: EnabledCampaigns.valid_keys, OPTION_NAME[EnableRaceSwapVariants]: EnableRaceSwapVariants.option_shuffle_all, OPTION_NAME[KeyMode]: KeyMode.option_progressive_missions, OPTION_NAME[MaximumCampaignSize]: MaximumCampaignSize.range_end, OPTION_NAME[TwoStartPositions]: TwoStartPositions.option_true, OPTION_NAME[StarterUnit]: StarterUnit.option_off, OPTION_NAME[EnableMorphling]: EnableMorphling.option_true, OPTION_NAME[NovaGhostOfAChanceVariant]: NovaGhostOfAChanceVariant.option_nco, OPTION_NAME[GrantStoryTech]: GrantStoryTech.option_allow_substitutes, OPTION_NAME[TakeOverAIAllies]: TakeOverAIAllies.option_false, OPTION_NAME[DifficultyCurve]: DifficultyCurve.option_standard, OPTION_NAME[VanillaLocations]: VanillaLocations.option_enabled, OPTION_NAME[ExtraLocations]: ExtraLocations.option_half_chance, OPTION_NAME[ChallengeLocations]: ChallengeLocations.option_disabled, OPTION_NAME[MasteryLocations]: MasteryLocations.option_disabled, OPTION_NAME[KerriganPrimalStatus]: KerriganPrimalStatus.option_item, OPTION_NAME[WarCouncilNerfs]: WarCouncilNerfs.option_true, OPTION_NAME[MaxUpgradeLevel]: 5, OPTION_NAME[SpearOfAdunPresence]: SpearOfAdunPresence.option_everywhere, OPTION_NAME[SpearOfAdunPresentInNoBuild]: SpearOfAdunPresentInNoBuild.option_false, OPTION_NAME[SpearOfAdunPassiveAbilityPresence]: SpearOfAdunPassiveAbilityPresence.option_everywhere, OPTION_NAME[SpearOfAdunPassivesPresentInNoBuild]: SpearOfAdunPassivesPresentInNoBuild.option_false, OPTION_NAME[MissionOrderScouting]: MissionOrderScouting.option_completed, OPTION_NAME[MineralsPerItem]: 5, OPTION_NAME[VespenePerItem]: 5, OPTION_NAME[StartingSupplyPerItem]: 1, OPTION_NAME[MaximumSupplyPerItem]: 1, OPTION_NAME[ResearchCostReductionPerItem]: 1, OPTION_NAME[FillerItemsDistribution]: { item_names.STARTING_MINERALS: 10, item_names.STARTING_VESPENE: 10, item_names.STARTING_SUPPLY: 10, item_names.MAX_SUPPLY: 10, item_names.SHIELD_REGENERATION: 5, item_names.BUILDING_CONSTRUCTION_SPEED: 10, item_names.KERRIGAN_LEVELS_1: 5, item_names.UPGRADE_RESEARCH_SPEED: 10, item_names.UPGRADE_RESEARCH_COST: 10, item_names.REDUCED_MAX_SUPPLY: 0, } } sc2_options_presets: Dict[str, Dict[str, Any]] = { "F2P Terran [~7 hours]": template_settings, "F2P Big [~10 hours]": f2p_big_settings, "Zerg Rush [~3 hours]": zerg_rush_settings, "Classic Grid [~4 hours]": classic_grid_settings, "Raceswap Blitz [~8 hours]": raceswap_blitz_settings, "Bread and Butter [~12 hours]": bread_and_butter_settings, "Pure Protoss [~15 hours]": all_protoss_settings, "Evil Logic [~6 hours]": evil_logic_settings, "Giant Grid Game [30+ hours]": full_campaign_settings, }