Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Game Implementation: Wargroove 2 #3730

Open
wants to merge 73 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 54 commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
8dafcda
KDL3: fix invalid inno_setup components and deathlink messages (#2922)
FlySniper Aug 3, 2024
3a3fd19
Wargroove 2: Squash commit. Update to main.
FlySniper Aug 3, 2024
aab96bb
Wargroove 2: Updated README.md and CODEOWNERS to include Wargroove 2.
FlySniper Aug 3, 2024
2f09b58
Wargroove 2: Fixed erroneous adjustments to BaseClasses.py
FlySniper Aug 3, 2024
8f60ee0
Update worlds/wargroove2/Items.py
FlySniper Aug 8, 2024
79e2c92
Update worlds/wargroove2/__init__.py
FlySniper Aug 8, 2024
b9af82a
Update worlds/wargroove2/__init__.py
FlySniper Aug 8, 2024
8208d15
Update worlds/wargroove2/Rules.py
FlySniper Aug 8, 2024
ea9ddb0
Update worlds/wargroove2/docs/en_Wargroove 2.md
FlySniper Aug 8, 2024
746cdf5
Update worlds/wargroove2/docs/wargroove2_en.md
FlySniper Aug 8, 2024
4e8d13a
Wargroove 2: implemented PR changes
FlySniper Aug 8, 2024
9f2000b
Wargroove 2: Fixed tests. Removed debug line.
FlySniper Aug 8, 2024
89be9fb
Update worlds/wargroove2/Levels.py
FlySniper Aug 9, 2024
28ab661
Update worlds/wargroove2/Levels.py
FlySniper Aug 9, 2024
44c81d7
Update worlds/wargroove2/Levels.py
FlySniper Aug 9, 2024
ad718fb
Update worlds/wargroove2/Levels.py
FlySniper Aug 9, 2024
a0e8b4c
Update worlds/wargroove2/Locations.py
FlySniper Aug 9, 2024
d24f573
Update worlds/wargroove2/__init__.py
FlySniper Aug 9, 2024
6baf1b9
Update worlds/wargroove2/__init__.py
FlySniper Aug 9, 2024
72890d0
Update worlds/wargroove2/__init__.py
FlySniper Aug 9, 2024
168f619
Update worlds/wargroove2/Locations.py
FlySniper Aug 9, 2024
3711650
Update worlds/wargroove2/__init__.py
FlySniper Aug 9, 2024
f5d50d6
Update worlds/wargroove2/__init__.py
FlySniper Aug 9, 2024
e7a5ec8
Update worlds/wargroove2/__init__.py
FlySniper Aug 9, 2024
e22621c
Update worlds/wargroove2/Regions.py
FlySniper Aug 9, 2024
a4ee924
Update worlds/wargroove2/Rules.py
FlySniper Aug 9, 2024
a8a0ca7
Update worlds/wargroove2/__init__.py
FlySniper Aug 9, 2024
6498e6b
Update worlds/wargroove2/__init__.py
FlySniper Aug 9, 2024
1735e4e
Update worlds/wargroove2/__init__.py
FlySniper Aug 9, 2024
876e5e3
Merge branch 'main' of https://github.com/ArchipelagoMW/Archipelago i…
FlySniper Aug 9, 2024
e736be0
Wargroove 2: Many more PR fixes. Tested by generating several WG2 gam…
FlySniper Aug 9, 2024
1e3bbbd
Wargroove 2: Build fixes.
FlySniper Aug 9, 2024
c511b70
Merge branch 'main' into wargroove2
FlySniper Aug 11, 2024
24fcb0f
Merge branch 'main' into wargroove2
FlySniper Aug 13, 2024
121a74a
Merge branch 'main' into wargroove2
FlySniper Aug 16, 2024
9849245
Merge branch 'main' into wargroove2
FlySniper Aug 20, 2024
79c5e07
Wargroove 2: Fixed python 3.8 tests again?!
FlySniper Aug 20, 2024
7def399
Merge branch 'main' into wargroove2
FlySniper Aug 23, 2024
01be6c2
Wargroove 2: Options for Multiple Locations per Check
FlySniper Sep 2, 2024
f626cbc
Various suggestions/changes
Exempt-Medic Sep 2, 2024
1540017
Forgot a newline
Exempt-Medic Sep 2, 2024
dbf8bcc
Merge pull request #5 from Exempt-Medic/wargroove2
FlySniper Sep 2, 2024
9f33abe
Update README.md
FlySniper Sep 2, 2024
57d334c
Wargroove 2: removed _get_slot_data method since most of it's values …
FlySniper Sep 2, 2024
7d893df
Merge branch 'wargroove2' of https://github.com/FlySniper/Archipelago…
FlySniper Sep 2, 2024
3171c72
Update worlds/wargroove2/docs/en_Wargroove 2.md
FlySniper Sep 2, 2024
89792f8
Update worlds/wargroove2/docs/en_Wargroove 2.md
FlySniper Sep 2, 2024
f7379ef
Update worlds/wargroove2/docs/en_Wargroove 2.md
FlySniper Sep 2, 2024
c6eb49a
Update worlds/wargroove2/docs/wargroove2_en.md
FlySniper Sep 2, 2024
d88a929
Wargroove 2: Documentation updates.
FlySniper Sep 2, 2024
98cd4d7
Update worlds/wargroove2/docs/wargroove2_en.md
FlySniper Sep 3, 2024
ab9451c
Update worlds/wargroove2/docs/wargroove2_en.md
FlySniper Sep 3, 2024
ce84725
Merge branch 'main' into wargroove2
FlySniper Sep 3, 2024
705694c
Wargroove 2: Eliminated a bunch of warnings from client.py
FlySniper Sep 3, 2024
78c94c9
Wargroove 2: Refactored level lists to be static instead of per Wargr…
FlySniper Sep 3, 2024
5fbcbb8
Update worlds/wargroove2/Regions.py
FlySniper Sep 3, 2024
14eae24
Update worlds/wargroove2/Rules.py
FlySniper Sep 3, 2024
4146b74
Wargroove 2: Fixed several warnings with the WG2 client.
FlySniper Sep 3, 2024
0f58bc1
Merge branch 'wargroove2' of https://github.com/FlySniper/Archipelago…
FlySniper Sep 3, 2024
7d21172
Wargroove 2: Fixed an issue where the level seed option would produce…
FlySniper Sep 4, 2024
461e202
Merge branch 'main' into wargroove2
FlySniper Sep 5, 2024
1e46141
Wargroove 2: Merge PR changes into 1.1
FlySniper Sep 5, 2024
618e39e
Wargroove 2: 1.1 working with the new PR changes.
FlySniper Sep 5, 2024
ef456ac
Merge branch 'ArchipelagoMW:main' into wargroove2-1.1
FlySniper Oct 4, 2024
861c332
Wargroove 2: 4 new maps. Random terrain generation in mod.
FlySniper Oct 11, 2024
118877d
Wargroove 2: Adjusted several levels
FlySniper Oct 14, 2024
04c2a9b
Merge branch 'ArchipelagoMW:main' into wargroove2-1.1
FlySniper Nov 15, 2024
996bcf7
Wargroove 2: Updated doc to match 1.1 changes.
FlySniper Nov 15, 2024
48e2177
Merge branch 'wargroove2-1.1' into wargroove2
FlySniper Nov 15, 2024
1c2a84a
Wargroove 2: Removed unnecessary RegionFilter method. Changed Objecti…
FlySniper Nov 16, 2024
542fca5
Merge branch 'main' into wargroove2
FlySniper Nov 16, 2024
42b4e19
Merge branch 'main' into wargroove2
FlySniper Nov 19, 2024
cbd04af
Wargroove 2: Merge main and fix conflicts in README.md
FlySniper Dec 14, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
FlySniper marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ Currently, the following games are supported:
* Kingdom Hearts 1
* Mega Man 2
* Yacht Dice
* Wargroove 2
FlySniper marked this conversation as resolved.
Show resolved Hide resolved

For setup and instructions check out our [tutorials page](https://archipelago.gg/tutorial/).
Downloads can be found at [Releases](https://github.com/ArchipelagoMW/Archipelago/releases), including compiled
Expand Down
11 changes: 11 additions & 0 deletions Wargroove2Client.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from __future__ import annotations

import ModuleUpdate
ModuleUpdate.update()

from worlds.wargroove2.client import launch
import Utils

if __name__ == "__main__":
Utils.init_logging("Wargroove2Client", exception_logger="Client")
launch()
3 changes: 3 additions & 0 deletions docs/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,9 @@
# Wargroove
/worlds/wargroove/ @FlySniper

# Wargroove 2
/worlds/wargroove2/ @FlySniper

# The Witness
/worlds/witness/ @NewSoupVi @blastron

Expand Down
138 changes: 138 additions & 0 deletions worlds/wargroove2/Items.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
from BaseClasses import Item, ItemClassification
from typing import Dict, List, NamedTuple, Optional

PROGRESSION = ItemClassification.progression
PROGRESSION_SKIP_BALANCING = ItemClassification.progression_skip_balancing
USEFUL = ItemClassification.useful
FILLER = ItemClassification.filler


class ItemData(NamedTuple):
code: Optional[int]
type: str
classification: ItemClassification = PROGRESSION


item_table: Dict[str, ItemData] = {
# Units
'Spearman': ItemData(252000, 'Unit'),
'Wagon': ItemData(252001, 'Unit'),
'Mage': ItemData(252002, 'Unit'),
'Archer': ItemData(252003, 'Unit'),
'Knight': ItemData(252004, 'Unit'),
'Ballista': ItemData(252005, 'Unit'),
'Trebuchet': ItemData(252006, 'Unit'),
'Golem': ItemData(252007, 'Unit'),
'Air Trooper': ItemData(252008, 'Unit'),
'Harpy': ItemData(252009, 'Unit'),
'Witch': ItemData(252010, 'Unit'),
'Dragon': ItemData(252011, 'Unit'),
'Balloon': ItemData(252012, 'Unit'),
'Barge': ItemData(252013, 'Unit'),
'River Boat': ItemData(252014, 'Unit'),
'Merfolk': ItemData(252015, 'Unit'),
'Turtle': ItemData(252016, 'Unit'),
'Harpoon Ship': ItemData(252017, 'Unit'),
'Warship': ItemData(252018, 'Unit'),
'Frog': ItemData(252019, 'Unit'),
'Kraken': ItemData(252020, 'Unit'),
'Thief': ItemData(252021, 'Unit'),
'Rifleman': ItemData(252022, 'Unit'),

# Map Triggers
'Bridges Event': ItemData(252023, 'Trigger'),
'Walls Event': ItemData(252024, 'Trigger'),
'Landing Event': ItemData(252025, 'Trigger'),
'Airstrike Event': ItemData(252026, 'Trigger'),
'Final North': ItemData(252027, 'Trigger', PROGRESSION_SKIP_BALANCING),
'Final East': ItemData(252028, 'Trigger', PROGRESSION_SKIP_BALANCING),
'Final South': ItemData(252029, 'Trigger', PROGRESSION_SKIP_BALANCING),
'Final West': ItemData(252030, 'Trigger', PROGRESSION_SKIP_BALANCING),
'Final Center': ItemData(252031, 'Trigger', PROGRESSION_SKIP_BALANCING),

# Player Buffs
'Income Boost': ItemData(252032, 'Boost', FILLER),

'Commander Defense Boost': ItemData(252033, 'Boost', FILLER),
'Groove Boost': ItemData(252041, 'Boost', FILLER),

# Factions
'Cherrystone Commanders': ItemData(252034, 'Faction', USEFUL),
'Felheim Commanders': ItemData(252035, 'Faction', USEFUL),
'Floran Commanders': ItemData(252036, 'Faction', USEFUL),
'Heavensong Commanders': ItemData(252037, 'Faction', USEFUL),
'Requiem Commanders': ItemData(252038, 'Faction', USEFUL),
'Pirate Commanders': ItemData(252039, 'Faction', USEFUL),
'Faahri Commanders': ItemData(252040, 'Faction', USEFUL),

# Event Items
'Wargroove 2 Victory': ItemData(None, 'Goal')

}

item_id_name: Dict[int, str] = {}
for name in item_table.keys():
id = item_table[name].code
if id is not None:
item_id_name[id] = name


class CommanderData(NamedTuple):
name: str
internal_name: str
alt_name: Optional[str] = None


faction_table: Dict[str, List[CommanderData]] = {
'Starter': [
CommanderData('Mercival', 'commander_mercival', 'Mercival II')
],
'Cherrystone': [
CommanderData('Mercia', 'commander_mercia'),
CommanderData('Emeric', 'commander_emeric'),
CommanderData('Caesar', 'commander_caesar'),
],
'Felheim': [
CommanderData('Valder', 'commander_valder'),
CommanderData('Ragna', 'commander_ragna'),
CommanderData('Sigrid', 'commander_sigrid')
],
'Floran': [
CommanderData('Greenfinger', 'commander_greenfinger', 'Zawan'),
CommanderData('Sedge', 'commander_sedge'),
CommanderData('Nuru', 'commander_nuru')
],
'Heavensong': [
CommanderData('Tenri', 'commander_tenri'),
CommanderData('Koji', 'commander_koji'),
CommanderData('Ryota', 'commander_ryota')
],
'Requiem': [
CommanderData('Elodie', 'commander_elodie'),
CommanderData('Dark Mercia', 'commander_darkmercia')
],
'Pirate': [
CommanderData('Wulfar', 'commander_wulfar_pirate'),
CommanderData('Twins', 'commander_twins', 'Errol & Orla'),
CommanderData('Vesper', 'commander_vesper'),
CommanderData('Nadia', 'commander_nadia')
],
'Faahri': [
CommanderData('Lytra', 'commander_lytra'),
CommanderData('Pistil', 'commander_pistil'),
CommanderData('Rhomb', 'commander_rhomb')
]
}


class Wargroove2Item(Item):
game = "Wargroove 2"

def __init__(self, name, player):
item_data = item_table[name]
super(Wargroove2Item, self).__init__(
name,
item_data.classification,
item_data.code,
player
)
Loading
Loading