forked from ArchipelagoMW/Archipelago
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add 5 Rock Band games (ArchipelagoMW#32)
RB 1 through 4 plus Lego Rock Band are in this, with some NDS-only switches for the two games where it matters, otherwise very direct implementations.
- Loading branch information
Showing
5 changed files
with
684 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
from __future__ import annotations | ||
|
||
import functools | ||
from typing import List | ||
|
||
from dataclasses import dataclass | ||
|
||
from Options import Toggle | ||
|
||
from ..game import Game | ||
from ..game_objective_template import GameObjectiveTemplate | ||
|
||
from ..enums import KeymastersKeepGamePlatforms | ||
|
||
|
||
@dataclass | ||
class LegoRockBandArchipelagoOptions: | ||
lego_rock_band_nds_only: LegoRockBandNDSOnly | ||
|
||
|
||
class LegoRockBandGame(Game): | ||
# Initial implementation by JCBoorgo | ||
|
||
name = "Lego Rock Band" | ||
platform = KeymastersKeepGamePlatforms.PS3 | ||
|
||
platforms_other = [ | ||
KeymastersKeepGamePlatforms.X360, | ||
KeymastersKeepGamePlatforms.WII, | ||
KeymastersKeepGamePlatforms.NDS | ||
] | ||
|
||
is_adult_only_or_unrated = False | ||
|
||
options_cls = LegoRockBandArchipelagoOptions | ||
|
||
def optional_game_constraint_templates(self) -> List[GameObjectiveTemplate]: | ||
return list() | ||
|
||
def game_objective_templates(self) -> List[GameObjectiveTemplate]: | ||
return [ | ||
GameObjectiveTemplate( | ||
label="Play TRACK", | ||
data={"TRACK": (self.tracks, 1)}, | ||
is_time_consuming=False, | ||
is_difficult=False, | ||
weight=3, | ||
), | ||
GameObjectiveTemplate( | ||
label="Get a Full Combo on TRACK", | ||
data={"TRACK": (self.tracks, 1)}, | ||
is_time_consuming=False, | ||
is_difficult=True, | ||
weight=1, | ||
), | ||
] | ||
|
||
def tracks(self) -> List[str]: | ||
track_list = self.tracks_nds | ||
|
||
if not self.archipelago_options.lego_rock_band_nds_only.value: | ||
track_list += self.tracks_base | ||
|
||
return sorted(track_list) | ||
|
||
@functools.cached_property | ||
def tracks_base(self) -> List[str]: | ||
return [ | ||
"Aliens Exist", | ||
"Breakout", | ||
"Crocodile Rock", | ||
"Dig", | ||
"Dreaming of You", | ||
"Every Little Thing She Does Is Magic", | ||
"Fire", | ||
"Make Me Smile (Come Up and See Me)", | ||
"Naïve", | ||
"Real Wild Child", | ||
"Ride a White Swan", | ||
"Rooftops (A Liberation Broadcast)", | ||
"Short and Sweet", | ||
"Stumble and Fall", | ||
"Summer of '69", | ||
"Thunder", | ||
"Tick Tick Boom", | ||
"Valerie", | ||
"Word Up!", | ||
"You Give Love a Bad Name" | ||
] | ||
|
||
@functools.cached_property | ||
def tracks_nds(self) -> List[str]: | ||
return [ | ||
"A-Punk", | ||
"Accidentally in Love", | ||
"Check Yes Juliet", | ||
"Crash", | ||
"Free Fallin'", | ||
"Ghostbusters", | ||
"Girls & Boys", | ||
"Grace", | ||
"I Want You Back", | ||
"In Too Deep", | ||
"Kung Fu Fighting", | ||
"Let's Dance", | ||
"Life Is a Highway", | ||
"Monster", | ||
"Ruby", | ||
"So What", | ||
"Song 2", | ||
"Suddenly I See", | ||
"Swing, Swing", | ||
"The Final Countdown", | ||
"The Passenger", | ||
"Two Princes", | ||
"Walking on Sunshine", | ||
"We Are the Champions", | ||
"We Will Rock You" | ||
] | ||
|
||
|
||
# Archipelago Options | ||
class LegoRockBandNDSOnly(Toggle): | ||
""" | ||
Indicates whether to only include the Nintendo DS tracks in the list for Lego Rock Band. | ||
""" | ||
|
||
display_name = "Lego Rock Band NDS Only" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,150 @@ | ||
from __future__ import annotations | ||
|
||
import functools | ||
from typing import List | ||
|
||
from dataclasses import dataclass | ||
|
||
from ..game import Game | ||
from ..game_objective_template import GameObjectiveTemplate | ||
|
||
from ..enums import KeymastersKeepGamePlatforms | ||
|
||
|
||
@dataclass | ||
class RockBand2ArchipelagoOptions: | ||
pass | ||
|
||
|
||
class RockBand2Game(Game): | ||
# Initial implementation by JCBoorgo | ||
|
||
name = "Rock Band 2" | ||
platform = KeymastersKeepGamePlatforms.X360 | ||
|
||
platforms_other = [ | ||
KeymastersKeepGamePlatforms.PS3, | ||
KeymastersKeepGamePlatforms.PS2, | ||
KeymastersKeepGamePlatforms.WII, | ||
] | ||
|
||
is_adult_only_or_unrated = False | ||
|
||
options_cls = RockBand2ArchipelagoOptions | ||
|
||
def optional_game_constraint_templates(self) -> List[GameObjectiveTemplate]: | ||
return list() | ||
|
||
def game_objective_templates(self) -> List[GameObjectiveTemplate]: | ||
return [ | ||
GameObjectiveTemplate( | ||
label="Play TRACK", | ||
data={"TRACK": (self.tracks, 1)}, | ||
is_time_consuming=False, | ||
is_difficult=False, | ||
weight=3 | ||
), | ||
GameObjectiveTemplate( | ||
label="Get a Full Combo on TRACK", | ||
data={"TRACK": (self.tracks, 1)}, | ||
is_time_consuming=False, | ||
is_difficult=True, | ||
weight=1 | ||
), | ||
] | ||
|
||
def tracks(self) -> List[str]: | ||
return sorted(self.tracks_base) | ||
|
||
@functools.cached_property | ||
def tracks_base(self) -> List[str]: | ||
return [ | ||
"A Jagged Gorgeous Winter", | ||
"Ace of Spades '08", | ||
"Alabama Getaway", | ||
"Alex Chilton", | ||
"Alive", | ||
"Almost Easy", | ||
"American Woman", | ||
"Any Way You Want It", | ||
"Aqualung", | ||
"Bad Reputation", | ||
"Battery", | ||
"Bodhisattva", | ||
"Carry On Wayward Son", | ||
"Chop Suey", | ||
"Colony of Birchmen", | ||
"Come Out and Play (Keep 'Em Separated)", | ||
"Conventional Lover", | ||
"Cool for Cats", | ||
"De-Luxe", | ||
"Down with the Sickness", | ||
"Drain You", | ||
"E-Pro", | ||
"Everlong", | ||
"Eye of the Tiger", | ||
"Feel the Pain", | ||
"Float On", | ||
"Get Clean", | ||
"Girl's Not Grey", | ||
"Give It All", | ||
"Give It Away", | ||
"Go Your Own Way", | ||
"Hello There", | ||
"Hungry Like the Wolf", | ||
"I Was Wrong", | ||
"Kids in America", | ||
"Lazy Eye", | ||
"Let There Be Rock", | ||
"Livin' on a Prayer", | ||
"Lump", | ||
"Man in the Box", | ||
"Master Exploder", | ||
"Mountain Song", | ||
"My Own Worst Enemy", | ||
"New Kid in School", | ||
"Night Lies", | ||
"Nine in the Afternoon", | ||
"One Step Closer", | ||
"One Way or Another", | ||
"Our Truth", | ||
"Painkiller", | ||
"Panic Attack", | ||
"PDA", | ||
"Peace Sells", | ||
"Pinball Wizard", | ||
"Pretend We're Dead", | ||
"Psycho Killer", | ||
"Pump It Up", | ||
"Ramblin' Man", | ||
"Rebel Girl", | ||
"Rob the Prez-O-Dent", | ||
"Rock'n Me", | ||
"Round and Round", | ||
"Shackler's Revenge", | ||
"Shooting Star", | ||
"Shoulder to the Plow", | ||
"So What'cha Want", | ||
"Souls of Black", | ||
"Spirit in the Sky", | ||
"Spoonman", | ||
"Supreme Girl", | ||
"Tangled Up in Blue", | ||
"Teen Age Riot", | ||
"Testify", | ||
"That's What You Get", | ||
"The Middle", | ||
"The Trees (Vault Edition)", | ||
"Today", | ||
"Uncontrollable Urge", | ||
"Visions", | ||
"We Got the Beat", | ||
"Welcome to the Neighborhood", | ||
"Where'd You Go?", | ||
"White Wedding (Part 1)", | ||
"You Oughta Know" | ||
] | ||
|
||
|
||
# Archipelago Options | ||
# ... |
Oops, something went wrong.