Wargroove: apworld (#4764)

- 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>
This commit is contained in:
Fly Hyping
2025-05-21 19:00:45 -04:00
committed by GitHub
parent 6827368e60
commit defdf34e60
10 changed files with 298 additions and 49 deletions

View File

@@ -8,18 +8,42 @@ from .Locations import location_table
from .Regions import create_regions
from .Rules import set_rules
from worlds.AutoWorld import World, WebWorld
from .Options import WargrooveOptions
from .Options import WargrooveOptions, wargroove_option_groups
from worlds.LauncherComponents import Component, components, Type, launch as launch_component
def launch_client(*args: str):
from .Client import launch
launch_component(launch, name="WargrooveClient", args=args)
components.append(Component("Wargroove Client", game_name="Wargroove", func=launch_client, component_type=Type.CLIENT))
class WargrooveSettings(settings.Group):
class RootDirectory(settings.UserFolderPath):
"""
Locate the Wargroove root directory on your system.
This is used by the Wargroove client, so it knows where to send communication files to
Locates the Wargroove root directory on your system.
This is used by the Wargroove client, so it knows where to send communication files to.
"""
description = "Wargroove root directory"
class SaveDirectory(settings.UserFolderPath):
"""
Locates the Wargroove save file directory on your system.
This is used by the Wargroove client, so it knows where to send mod and save files to.
"""
description = "Wargroove save file/appdata directory"
def browse(self, **kwargs):
from Utils import messagebox
messagebox("AppData folder not found",
"WargrooveClient couldn't detect a path to the AppData folder.\n"
"Please select the folder containing the \"/Chucklefish/Wargroove/\" directories.")
super().browse(**kwargs)
root_directory: RootDirectory = RootDirectory("C:/Program Files (x86)/Steam/steamapps/common/Wargroove")
save_directory: SaveDirectory = SaveDirectory("%APPDATA%")
class WargrooveWeb(WebWorld):
@@ -32,6 +56,8 @@ class WargrooveWeb(WebWorld):
["Fly Sniper"]
)]
option_groups = wargroove_option_groups
class WargrooveWorld(World):
"""
@@ -55,6 +81,11 @@ class WargrooveWorld(World):
'commander_defense_boost': self.options.commander_defense_boost.value,
'can_choose_commander': self.options.commander_choice.value != 0,
'commander_choice': self.options.commander_choice.value,
'player_sacrifice_limit': self.options.player_sacrifice_limit.value,
'player_summon_limit': self.options.player_summon_limit.value,
'ai_sacrifice_limit': self.options.ai_sacrifice_limit.value,
'ai_summon_limit': self.options.ai_summon_limit.value,
'death_link': self.options.death_link.value,
'starting_groove_multiplier': 20 # Backwards compatibility in case this ever becomes an option
}