mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 12:11:33 -06:00

- 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
|