131 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			131 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from dataclasses import dataclass
							 | 
						||
| 
								 | 
							
								from Options import (
							 | 
						||
| 
								 | 
							
								    Choice,
							 | 
						||
| 
								 | 
							
								    DefaultOnToggle,
							 | 
						||
| 
								 | 
							
								    OptionSet,
							 | 
						||
| 
								 | 
							
								    PerGameCommonOptions,
							 | 
						||
| 
								 | 
							
								    Range,
							 | 
						||
| 
								 | 
							
								    StartInventoryPool,
							 | 
						||
| 
								 | 
							
								    Toggle,
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								from .Enum import CivVIHintClassification
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ProgressionStyle(Choice):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    **Districts Only**: Each tech/civic that would normally unlock a district or building now has a logical progression.
							 | 
						||
| 
								 | 
							
								    Example: TECH_BRONZE_WORKING is now PROGRESSIVE_ENCAMPMENT
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    **Eras and Districts**: Players will be defeated if they play until the world era advances beyond the currently unlocked maximum era.
							 | 
						||
| 
								 | 
							
								    Unlocked eras can be seen in both the tech and civic trees. Includes all progressive districts.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    **None**: No progressive items will be included. This means you can get district upgrades that won't be usable until the relevant district is unlocked.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    rich_text_doc = True
							 | 
						||
| 
								 | 
							
								    display_name = "Progression Style"
							 | 
						||
| 
								 | 
							
								    option_districts_only = 0
							 | 
						||
| 
								 | 
							
								    option_eras_and_districts = 1
							 | 
						||
| 
								 | 
							
								    option_none = 2
							 | 
						||
| 
								 | 
							
								    default = option_districts_only
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ShuffleGoodyHuts(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """Shuffles the goody hut rewards.
							 | 
						||
| 
								 | 
							
								    Goody huts will only contain junk items and locations are checked sequentially (First goody hut gives GOODY_HUT_1, second gives GOODY_HUT_2, etc.).
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Shuffle Goody Hut Rewards"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class BoostSanity(Toggle):
							 | 
						||
| 
								 | 
							
								    """Boosts for Civics/Techs are location checks. Boosts can now be triggered even if the item has already been
							 | 
						||
| 
								 | 
							
								    researched.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    **Note**: If a boost is dependent upon a unit that is now obsolete, you can click to toggle on/off the relevant tech in
							 | 
						||
| 
								 | 
							
								    the tech tree."""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    rich_text_doc = True
							 | 
						||
| 
								 | 
							
								    display_name = "Boostsanity"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ResearchCostMultiplier(Range):
							 | 
						||
| 
								 | 
							
								    """Multiplier for research cost of techs and civics, higher values make research more expensive."""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Tech/Civic Cost Multiplier"
							 | 
						||
| 
								 | 
							
								    range_start = 50
							 | 
						||
| 
								 | 
							
								    range_end = 150
							 | 
						||
| 
								 | 
							
								    default = 100
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class PreHintItems(OptionSet):
							 | 
						||
| 
								 | 
							
								    """Controls what items from the tech/civics trees are pre-hinted for the multiworld.
							 | 
						||
| 
								 | 
							
								    **Progression**: Include Progression items in hints
							 | 
						||
| 
								 | 
							
								    **Useful**: Include Useful items in hints
							 | 
						||
| 
								 | 
							
								    **Filler**: Include Filler items in hints
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Tech/Civic Tree pre-hinted Items"
							 | 
						||
| 
								 | 
							
								    valid_keys = {classification.value for classification in CivVIHintClassification}  # type: ignore
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class HideItemNames(Toggle):
							 | 
						||
| 
								 | 
							
								    """Each Tech and Civic Location will have a title of 'Unrevealed' until its prereqs have been researched. Note that
							 | 
						||
| 
								 | 
							
								    hints will still be precollected if that option is enabled."""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Hide Item Names"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class InGameFlagProgressionItems(DefaultOnToggle):
							 | 
						||
| 
								 | 
							
								    """If enabled, an advisor icon will be added to any location that contains a progression item."""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Advisor Indicates Progression Items"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class CivDeathLink(Toggle):
							 | 
						||
| 
								 | 
							
								    """If enabled, losing a unit will trigger a death link effect on other players in the multiworld. When a death link is received, the player will receive the effect specified in 'Death Link Effect'."""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Death Link"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class DeathLinkEffect(OptionSet):
							 | 
						||
| 
								 | 
							
								    """What happens when a unit dies.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    **Unit Killed**: A random unit will be killed when a death link is received.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    **Faith**: Faith will be decreased by the amount specified in 'Death Link Effect Percent'.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    **Gold**: Gold will be decreased by the amount specified in 'Death Link Effect Percent'.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    **Era Score**: Era score is decreased by 1.
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    rich_text_doc = True
							 | 
						||
| 
								 | 
							
								    display_name = "Death Link Effect"
							 | 
						||
| 
								 | 
							
								    valid_keys = ["Unit Killed", "Faith", "Gold", "Era Score"]  # type: ignore
							 | 
						||
| 
								 | 
							
								    default = frozenset({"Unit Killed"})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class DeathLinkEffectPercent(Range):
							 | 
						||
| 
								 | 
							
								    """The percentage of the effect that will be applied. Only applicable for Gold and Faith effects."""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    display_name = "Death Link Effect Percent"
							 | 
						||
| 
								 | 
							
								    default = 20
							 | 
						||
| 
								 | 
							
								    range_start = 1
							 | 
						||
| 
								 | 
							
								    range_end = 100
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@dataclass
							 | 
						||
| 
								 | 
							
								class CivVIOptions(PerGameCommonOptions):
							 | 
						||
| 
								 | 
							
								    start_inventory_from_pool: StartInventoryPool
							 | 
						||
| 
								 | 
							
								    progression_style: ProgressionStyle
							 | 
						||
| 
								 | 
							
								    shuffle_goody_hut_rewards: ShuffleGoodyHuts
							 | 
						||
| 
								 | 
							
								    boostsanity: BoostSanity
							 | 
						||
| 
								 | 
							
								    research_cost_multiplier: ResearchCostMultiplier
							 | 
						||
| 
								 | 
							
								    pre_hint_items: PreHintItems
							 | 
						||
| 
								 | 
							
								    hide_item_names: HideItemNames
							 | 
						||
| 
								 | 
							
								    advisor_show_progression_items: InGameFlagProgressionItems
							 | 
						||
| 
								 | 
							
								    death_link: CivDeathLink
							 | 
						||
| 
								 | 
							
								    death_link_effect: DeathLinkEffect
							 | 
						||
| 
								 | 
							
								    death_link_effect_percent: DeathLinkEffectPercent
							 |