feat: add character images for Guilty Gear Strive and update fighting characters with DLC support
|
After Width: | Height: | Size: 828 KiB |
|
After Width: | Height: | Size: 515 KiB |
|
After Width: | Height: | Size: 605 KiB |
|
After Width: | Height: | Size: 400 KiB |
|
After Width: | Height: | Size: 236 KiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 762 KiB |
|
After Width: | Height: | Size: 402 KiB |
|
After Width: | Height: | Size: 406 KiB |
|
After Width: | Height: | Size: 776 KiB |
|
After Width: | Height: | Size: 177 KiB |
|
After Width: | Height: | Size: 207 KiB |
|
After Width: | Height: | Size: 368 KiB |
|
After Width: | Height: | Size: 515 KiB |
|
After Width: | Height: | Size: 416 KiB |
|
After Width: | Height: | Size: 225 KiB |
|
After Width: | Height: | Size: 266 KiB |
|
After Width: | Height: | Size: 179 KiB |
|
After Width: | Height: | Size: 299 KiB |
|
After Width: | Height: | Size: 226 KiB |
|
After Width: | Height: | Size: 268 KiB |
|
After Width: | Height: | Size: 277 KiB |
|
After Width: | Height: | Size: 187 KiB |
|
After Width: | Height: | Size: 192 KiB |
|
After Width: | Height: | Size: 516 KiB |
|
After Width: | Height: | Size: 290 KiB |
|
After Width: | Height: | Size: 240 KiB |
|
After Width: | Height: | Size: 716 KiB |
|
After Width: | Height: | Size: 414 KiB |
|
After Width: | Height: | Size: 804 KiB |
|
After Width: | Height: | Size: 492 KiB |
|
After Width: | Height: | Size: 167 KiB |
|
After Width: | Height: | Size: 254 KiB |
|
Before Width: | Height: | Size: 2.0 MiB After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 192 KiB |
|
After Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 4.1 MiB After Width: | Height: | Size: 1.9 MiB |
@@ -2,6 +2,7 @@ export interface FightingCharacterOption {
|
||||
label: string;
|
||||
value: string;
|
||||
image: string;
|
||||
dlc?: boolean;
|
||||
}
|
||||
|
||||
type GamePalette = readonly [startColor: string, endColor: string];
|
||||
@@ -58,7 +59,7 @@ const characterNamesByGame: Record<string, string[]> = {
|
||||
'Guilty Gear -Strive-': [
|
||||
'A.B.A',
|
||||
'Anji Mito',
|
||||
'Asuka R. Kreutz',
|
||||
'Asuka R.',
|
||||
'Axl Low',
|
||||
'Baiken',
|
||||
'Bedman?',
|
||||
@@ -90,7 +91,7 @@ const characterNamesByGame: Record<string, string[]> = {
|
||||
'Zato-1',
|
||||
],
|
||||
'Invincible VS': [
|
||||
'Allen The Alien',
|
||||
'Allen the Alien',
|
||||
'Anissa',
|
||||
'Atom Eve',
|
||||
'Battle Beast',
|
||||
@@ -104,7 +105,7 @@ const characterNamesByGame: Record<string, string[]> = {
|
||||
'Lucan',
|
||||
'Monster Girl',
|
||||
'Omni-Man',
|
||||
'Power Plex',
|
||||
'Powerplex',
|
||||
'Rex Splode',
|
||||
'Robot',
|
||||
'Thula',
|
||||
@@ -381,6 +382,57 @@ const getCharacterImage = (game: string, character: string, characterValue: stri
|
||||
return characterImageByKey[key] ?? buildCharacterPlaceholder(game, character);
|
||||
};
|
||||
|
||||
/**
|
||||
* DLC characters per game. Update as new content is released.
|
||||
* Characters not listed here are treated as base-roster.
|
||||
*/
|
||||
const dlcCharactersByGame: Record<string, ReadonlySet<string>> = {
|
||||
'FATAL FURY: City of the Wolves': new Set([
|
||||
'Chun-Li', // Season Pass (crossover)
|
||||
'Cristiano Ronaldo', // Season Pass (celebrity)
|
||||
'Ken Masters', // Season Pass (crossover)
|
||||
'Kenshiro', // Season Pass (crossover)
|
||||
'Nightmare Geese', // Season Pass
|
||||
'Salvatore Ganacci', // Season Pass (celebrity)
|
||||
'Vox Reaper', // Season Pass
|
||||
]),
|
||||
'Guilty Gear -Strive-': new Set([
|
||||
// Season 1
|
||||
'Goldlewis Dickinson', 'Jack-O', 'Happy Chaos', 'Baiken', 'Testament',
|
||||
// Season 2
|
||||
'Bridget', 'Sin Kiske', 'Bedman?', 'Asuka R. Kreutz', 'Johnny',
|
||||
// Season 3
|
||||
'Elphelt Valentine', 'A.B.A', 'Slayer', 'Dizzy', 'Venom',
|
||||
// Season 4
|
||||
'Lucy', 'Unika',
|
||||
]),
|
||||
'Mortal Kombat 1': new Set([
|
||||
// Kombat Pack 1
|
||||
'Ermac', 'Homelander', 'Omni-Man', 'Peacemaker', 'Quan Chi', 'Tanya',
|
||||
// Kombat Pack 2
|
||||
'Conan the Barbarian', 'Cyrax', 'Ghostface', 'Noob Saibot', 'Sektor',
|
||||
'Shang Tsung', 'Takeda', 'T-1000',
|
||||
]),
|
||||
'Street Fighter 6': new Set([
|
||||
// Year 1
|
||||
'A.K.I.', 'Akuma', 'Bison', 'Ed',
|
||||
// Year 2
|
||||
'Alex', 'Elena', 'Mai', 'Sagat', 'Terry', 'Viper',
|
||||
]),
|
||||
'TEKKEN 8': new Set([
|
||||
// Season 1
|
||||
'Clive', 'Eddy', 'Heihachi', 'Lidia',
|
||||
// Season 2
|
||||
'Anna', 'Fahkumram', 'Kunimitsu', 'Miary Zo', 'Roger Jr',
|
||||
]),
|
||||
'THE KING OF FIGHTERS XV': new Set([
|
||||
'Antonov', 'Elisabeth Blanctorche', 'Gato', 'Geese Howard', 'Goenitz',
|
||||
'Hinako Shijo', 'Krohnen McDougall', 'Kukri', 'Luong', 'Najd',
|
||||
'Orochi Chris', 'Orochi Shermie', 'Orochi Yashiro', 'Rock Howard',
|
||||
'Sylvie Paula Paula',
|
||||
]),
|
||||
};
|
||||
|
||||
export const fightingCharactersByGame: Record<string, FightingCharacterOption[]> = Object.fromEntries(
|
||||
Object.entries(characterNamesByGame).map(([game, characterNames]) => [
|
||||
game,
|
||||
@@ -391,6 +443,7 @@ export const fightingCharactersByGame: Record<string, FightingCharacterOption[]>
|
||||
label: character,
|
||||
value,
|
||||
image: getCharacterImage(game, character, value),
|
||||
dlc: dlcCharactersByGame[game]?.has(character) ?? false,
|
||||
};
|
||||
}),
|
||||
]),
|
||||
|
||||