| 
									
										
										
										
											2024-05-16 12:46:13 -04:00
										 |  |  | from dataclasses import dataclass | 
					
						
							| 
									
										
										
										
											2025-05-21 19:00:45 -04:00
										 |  |  | from Options import Choice, Range, PerGameCommonOptions, StartInventoryPool, OptionDict, OptionGroup, \ | 
					
						
							|  |  |  |     DeathLinkMixin | 
					
						
							| 
									
										
										
										
											2023-02-24 01:35:09 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class IncomeBoost(Range): | 
					
						
							|  |  |  |     """How much extra income the player gets per turn per boost received.""" | 
					
						
							|  |  |  |     display_name = "Income Boost" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 100 | 
					
						
							|  |  |  |     default = 25 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CommanderDefenseBoost(Range): | 
					
						
							|  |  |  |     """How much extra defense the player's commander gets per boost received.""" | 
					
						
							|  |  |  |     display_name = "Commander Defense Boost" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 8 | 
					
						
							|  |  |  |     default = 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CommanderChoice(Choice): | 
					
						
							|  |  |  |     """How the player's commander is selected for missions.
 | 
					
						
							|  |  |  |     Locked Random: The player's commander is randomly predetermined for each level. | 
					
						
							|  |  |  |     Unlockable Factions: The player starts with Mercival and can unlock playable factions. | 
					
						
							|  |  |  |     Random Starting Faction:  The player starts with a random starting faction and can unlock the rest. | 
					
						
							|  |  |  |     When playing with unlockable factions, faction items are added to the pool. | 
					
						
							|  |  |  |     Extra faction items after the first also reward starting Groove charge."""
 | 
					
						
							|  |  |  |     display_name = "Commander Choice" | 
					
						
							|  |  |  |     option_locked_random = 0 | 
					
						
							|  |  |  |     option_unlockable_factions = 1 | 
					
						
							|  |  |  |     option_random_starting_faction = 2 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-05-21 19:00:45 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | class PlayerSacrificeLimit(Range): | 
					
						
							|  |  |  |     """How many times the player can sacrifice a unit at the Stronghold per level attempt.
 | 
					
						
							|  |  |  |     Sacrificed units are stored in the multiworld for other players to summon."""
 | 
					
						
							|  |  |  |     display_name = "Player Sacrifice Limit" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 5 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PlayerSummonLimit(Range): | 
					
						
							|  |  |  |     """How many times the player can summon a unit at the Stronghold per level attempt.
 | 
					
						
							|  |  |  |     Summoned units are from the multiworld which were sacrificed by other players."""
 | 
					
						
							|  |  |  |     display_name = "Player Summon Limit" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 5 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AISacrificeLimit(Range): | 
					
						
							|  |  |  |     """How many times the AI can sacrifice a unit at the Stronghold per level attempt.
 | 
					
						
							|  |  |  |     Sacrificed units are stored in the multiworld for other AIs to summon."""
 | 
					
						
							|  |  |  |     display_name = "AI Sacrifice Limit" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 5 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AISummonLimit(Range): | 
					
						
							|  |  |  |     """How many times the AI can summon a unit at the Stronghold per level attempt.
 | 
					
						
							|  |  |  |     Summoned units are from the multiworld which were sacrificed by other AIs. | 
					
						
							|  |  |  |     AI summoning can be overwhelming, use /sacrifice_summon in the client if a level becomes impossible."""
 | 
					
						
							|  |  |  |     display_name = "AI Summon Limit" | 
					
						
							|  |  |  |     range_start = 0 | 
					
						
							|  |  |  |     range_end = 5 | 
					
						
							|  |  |  |     default = 0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | wargroove_option_groups = [ | 
					
						
							|  |  |  |         OptionGroup("General Options", [ | 
					
						
							|  |  |  |             IncomeBoost, | 
					
						
							|  |  |  |             CommanderDefenseBoost, | 
					
						
							|  |  |  |             CommanderChoice | 
					
						
							|  |  |  |         ]), | 
					
						
							|  |  |  |         OptionGroup("Sacrifice and Summon Options", [ | 
					
						
							|  |  |  |             PlayerSacrificeLimit, | 
					
						
							|  |  |  |             PlayerSummonLimit, | 
					
						
							|  |  |  |             AISacrificeLimit, | 
					
						
							|  |  |  |             AISummonLimit, | 
					
						
							|  |  |  |         ]), | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-16 12:46:13 -04:00
										 |  |  | @dataclass | 
					
						
							| 
									
										
										
										
											2025-05-21 19:00:45 -04:00
										 |  |  | class WargrooveOptions(DeathLinkMixin, PerGameCommonOptions): | 
					
						
							| 
									
										
										
										
											2024-05-16 12:46:13 -04:00
										 |  |  |     income_boost: IncomeBoost | 
					
						
							|  |  |  |     commander_defense_boost: CommanderDefenseBoost | 
					
						
							|  |  |  |     commander_choice: CommanderChoice | 
					
						
							| 
									
										
										
										
											2025-05-21 19:00:45 -04:00
										 |  |  |     player_sacrifice_limit: PlayerSacrificeLimit | 
					
						
							|  |  |  |     player_summon_limit: PlayerSummonLimit | 
					
						
							|  |  |  |     ai_sacrifice_limit: AISacrificeLimit | 
					
						
							|  |  |  |     ai_summon_limit: AISummonLimit | 
					
						
							|  |  |  |     start_inventory_from_pool: StartInventoryPool |