 defdf34e60
			
		
	
	defdf34e60
	
	
	
		
			
			- Players and AI can sacrifice their own units and upload them to the multiworld. - Players and AI can summon random units from the multiworld. - Has 4 new separate options for how many sacrifices and summons either the player or the AI can make per level attempt. - New /sacrifice_summon command to toggle sacrifices and summons on/off. Useful if the AI makes a level impossible with their summons. - Linux Support. - Is an apworld now. --------- Co-authored-by: Raspberry Floof <raspberry@rosenthalcastle.org> Co-authored-by: KScl <ks@rosenthalcastle.org> Co-authored-by: Abigail Fox <Raspberryfloof@users.noreply.github.com> Co-authored-by: qwint <qwint.42@gmail.com> Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
		
			
				
	
	
		
			96 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from dataclasses import dataclass
 | |
| from Options import Choice, Range, PerGameCommonOptions, StartInventoryPool, OptionDict, OptionGroup, \
 | |
|     DeathLinkMixin
 | |
| 
 | |
| 
 | |
| 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
 | |
| 
 | |
| 
 | |
| 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,
 | |
|         ]),
 | |
| ]
 | |
| 
 | |
| @dataclass
 | |
| class WargrooveOptions(DeathLinkMixin, PerGameCommonOptions):
 | |
|     income_boost: IncomeBoost
 | |
|     commander_defense_boost: CommanderDefenseBoost
 | |
|     commander_choice: CommanderChoice
 | |
|     player_sacrifice_limit: PlayerSacrificeLimit
 | |
|     player_summon_limit: PlayerSummonLimit
 | |
|     ai_sacrifice_limit: AISacrificeLimit
 | |
|     ai_summon_limit: AISummonLimit
 | |
|     start_inventory_from_pool: StartInventoryPool
 |