From 4fcb393cabb7d9fca1b8bd52b76c9e331c6fce40 Mon Sep 17 00:00:00 2001 From: zkldi <20380519+zkldi@users.noreply.github.com> Date: Mon, 3 Jan 2022 23:29:47 +0000 Subject: [PATCH] Add PMS and Jubeat config support. --- common/src/config/config.test.ts | 5 + common/src/config/config.ts | 262 ++++++++++++++++++++++++++++- common/src/config/static-config.ts | 12 +- common/src/game-classes.ts | 31 ++++ common/src/lib/util.test.ts | 10 -- common/src/lib/util.ts | 25 --- common/src/types.ts | 61 ++++++- 7 files changed, 353 insertions(+), 53 deletions(-) delete mode 100644 common/src/lib/util.test.ts delete mode 100644 common/src/lib/util.ts diff --git a/common/src/config/config.test.ts b/common/src/config/config.test.ts index a508a8a1b..1ff82fb82 100644 --- a/common/src/config/config.test.ts +++ b/common/src/config/config.test.ts @@ -23,6 +23,11 @@ t.test("#GetGamePTConfig", (t) => { `${game}:${playtype}`, `Should return the right GamePTConfig (${game} ${playtype})` ); + + if (conf.gradeBoundaries === null) { + continue; + } + t.equal( conf.gradeBoundaries.length, conf.grades.length, diff --git a/common/src/config/config.ts b/common/src/config/config.ts index 9a65afaf3..1500833a0 100644 --- a/common/src/config/config.ts +++ b/common/src/config/config.ts @@ -8,6 +8,8 @@ import { GameClassSets, GitadoraColours, IIDXDans, + JubeatColours, + PMSDans, PopnClasses, SDVXDans, SDVXVFClasses, @@ -63,7 +65,7 @@ interface BaseGamePTConfig { grades: Grades[I][]; gradeColours: Record; clearGrade: Grades[I]; - gradeBoundaries: number[]; + gradeBoundaries: number[] | null; lamps: Lamps[I][]; lampColours: Record; @@ -107,6 +109,7 @@ export const COLOUR_SET = { paleGreen: "rgba(142,174,79, 1)", paleBlue: "rgba(92, 97, 153, 1)", green: "rgba(50, 205, 50, 1)", + darkGreen: "rgba(30, 130, 76, 1)", blue: "rgba(70, 130, 180, 1)", gold: "rgba(255, 215, 0, 1)", vibrantYellow: "rgba(245, 229, 27, 1)", @@ -165,12 +168,12 @@ const GAME_CONFIGS: GameConfigs = { internalName: "gitadora", validPlaytypes: ["Gita", "Dora"], }, - // jubeat: { - // defaultPlaytype: "Single", - // name: "jubeat", - // internalName: "jubeat", - // validPlaytypes: ["Single"], - // }, + jubeat: { + defaultPlaytype: "Single", + name: "jubeat", + internalName: "jubeat", + validPlaytypes: ["Single"], + }, maimai: { defaultPlaytype: "Single", name: "maimai", @@ -201,6 +204,12 @@ const GAME_CONFIGS: GameConfigs = { internalName: "wacca", validPlaytypes: ["Single"], }, + pms: { + defaultPlaytype: "Controller", + internalName: "pms", + name: "PMS", + validPlaytypes: ["Controller", "Keyboard"], + }, }; type GamePTConfigs = { @@ -1746,6 +1755,245 @@ const GAME_PT_CONFIGS: GamePTConfigs = { tierlists: [], tierlistDescriptions: {}, }, + "jubeat:Single": { + idString: "jubeat:Single", + + percentMax: 120, + + defaultScoreRatingAlg: "jubility", + defaultSessionRatingAlg: "jubility", + defaultProfileRatingAlg: "jubility", + + scoreRatingAlgs: ["jubility"], + sessionRatingAlgs: ["jubility"], + profileRatingAlgs: ["jubility", "naiveJubility"], + + scoreRatingAlgFormatters: {}, + profileRatingAlgFormatters: {}, + sessionRatingAlgFormatters: {}, + + difficulties: ["BSC", "ADV", "EXT", "HARD BSC", "HARD ADV", "HARD EXT"], + shortDifficulties: { + BSC: "BSC", + ADV: "ADV", + EXT: "EXT", + "HARD BSC": "H. BSC", + "HARD ADV": "H. ADV", + "HARD EXT": "H. EXT", + }, + defaultDifficulty: "EXT", + difficultyColours: { + BSC: COLOUR_SET.green, + ADV: COLOUR_SET.gold, + EXT: COLOUR_SET.red, + "HARD BSC": COLOUR_SET.darkGreen, + "HARD ADV": COLOUR_SET.orange, + "HARD EXT": COLOUR_SET.maroon, + }, + + grades: ["E", "D", "C", "B", "A", "S", "SS", "SSS", "EXC"], + gradeColours: { + E: COLOUR_SET.gray, + D: COLOUR_SET.maroon, + C: COLOUR_SET.red, + B: COLOUR_SET.blue, + A: COLOUR_SET.green, + S: COLOUR_SET.gold, + SS: COLOUR_SET.orange, + SSS: COLOUR_SET.teal, + EXC: COLOUR_SET.white, + }, + clearGrade: "A", + gradeBoundaries: null, + + lamps: ["FAILED", "CLEAR", "FULL COMBO", "EXCELLENT"], + lampColours: { + FAILED: COLOUR_SET.red, + CLEAR: COLOUR_SET.blue, + "FULL COMBO": COLOUR_SET.teal, + EXCELLENT: COLOUR_SET.white, + }, + clearLamp: "CLEAR", + + classHumanisedFormat: { + colour: JubeatColours, + }, + + supportsESD: false, + judgements: ["perfect", "great", "good", "bad", "miss"], + + scoreBucket: "grade", + + currentLatestVersion: "festo", + currentGameOmniVersion: null, + currentLocalVersion: "festo", + supportedVersions: ["festo"], + + tierlists: [], + tierlistDescriptions: {}, + }, + "pms:Controller": { + idString: "pms:Controller", + percentMax: 100, + + defaultScoreRatingAlg: "sieglinde", + defaultSessionRatingAlg: "sieglinde", + defaultProfileRatingAlg: "sieglinde", + + scoreRatingAlgs: ["sieglinde"], + sessionRatingAlgs: ["sieglinde"], + profileRatingAlgs: ["sieglinde"], + + scoreRatingAlgFormatters: {}, + profileRatingAlgFormatters: {}, + sessionRatingAlgFormatters: {}, + + difficulties: ["CHART"], + shortDifficulties: {}, + defaultDifficulty: "CHART", + difficultyColours: { + CHART: null, + }, + + grades: ["F", "E", "D", "C", "B", "A", "AA", "AAA", "MAX-", "MAX"], + gradeColours: { + F: COLOUR_SET.gray, + E: COLOUR_SET.red, + D: COLOUR_SET.maroon, + C: COLOUR_SET.purple, + B: COLOUR_SET.paleBlue, + A: COLOUR_SET.green, + AA: COLOUR_SET.blue, + AAA: COLOUR_SET.gold, + "MAX-": COLOUR_SET.teal, + MAX: COLOUR_SET.white, + }, + clearGrade: "A", + gradeBoundaries: [0, 22.22, 33.33, 44.44, 55.55, 66.66, 77.77, 88.88, 94.44, 100.0], + + lamps: [ + "NO PLAY", + "FAILED", + "ASSIST CLEAR", + "EASY CLEAR", + "CLEAR", + "HARD CLEAR", + "EX HARD CLEAR", + "FULL COMBO", + ], + lampColours: { + "NO PLAY": COLOUR_SET.gray, + FAILED: COLOUR_SET.red, + "ASSIST CLEAR": COLOUR_SET.purple, + "EASY CLEAR": COLOUR_SET.green, + CLEAR: COLOUR_SET.blue, + "HARD CLEAR": COLOUR_SET.orange, + "EX HARD CLEAR": COLOUR_SET.gold, + "FULL COMBO": COLOUR_SET.teal, + }, + clearLamp: "CLEAR", + + classHumanisedFormat: { + dan: PMSDans, + }, + + supportsESD: false, + judgements: ["cool", "great", "good", "bad", "poor"], + + scoreBucket: "lamp", + + currentLatestVersion: null, + currentGameOmniVersion: null, + currentLocalVersion: null, + supportedVersions: [], + + tierlists: ["sgl-EC", "sgl-HC"], + tierlistDescriptions: { + "sgl-EC": "Sieglinde Easy Clear ratings.", + "sgl-HC": "Sieglinde Hard Clear ratings.", + }, + }, + "pms:Keyboard": { + idString: "pms:Keyboard", + percentMax: 100, + + defaultScoreRatingAlg: "sieglinde", + defaultSessionRatingAlg: "sieglinde", + defaultProfileRatingAlg: "sieglinde", + + scoreRatingAlgs: ["sieglinde"], + sessionRatingAlgs: ["sieglinde"], + profileRatingAlgs: ["sieglinde"], + + scoreRatingAlgFormatters: {}, + profileRatingAlgFormatters: {}, + sessionRatingAlgFormatters: {}, + + difficulties: ["CHART"], + shortDifficulties: {}, + defaultDifficulty: "CHART", + difficultyColours: { + CHART: null, + }, + + grades: ["F", "E", "D", "C", "B", "A", "AA", "AAA", "MAX-", "MAX"], + gradeColours: { + F: COLOUR_SET.gray, + E: COLOUR_SET.red, + D: COLOUR_SET.maroon, + C: COLOUR_SET.purple, + B: COLOUR_SET.paleBlue, + A: COLOUR_SET.green, + AA: COLOUR_SET.blue, + AAA: COLOUR_SET.gold, + "MAX-": COLOUR_SET.teal, + MAX: COLOUR_SET.white, + }, + clearGrade: "A", + gradeBoundaries: [0, 22.22, 33.33, 44.44, 55.55, 66.66, 77.77, 88.88, 94.44, 100.0], + + lamps: [ + "NO PLAY", + "FAILED", + "ASSIST CLEAR", + "EASY CLEAR", + "CLEAR", + "HARD CLEAR", + "EX HARD CLEAR", + "FULL COMBO", + ], + lampColours: { + "NO PLAY": COLOUR_SET.gray, + FAILED: COLOUR_SET.red, + "ASSIST CLEAR": COLOUR_SET.purple, + "EASY CLEAR": COLOUR_SET.green, + CLEAR: COLOUR_SET.blue, + "HARD CLEAR": COLOUR_SET.orange, + "EX HARD CLEAR": COLOUR_SET.gold, + "FULL COMBO": COLOUR_SET.teal, + }, + clearLamp: "CLEAR", + + classHumanisedFormat: { + dan: PMSDans, + }, + + supportsESD: false, + judgements: ["cool", "great", "good", "bad", "poor"], + + scoreBucket: "lamp", + + currentLatestVersion: null, + currentGameOmniVersion: null, + currentLocalVersion: null, + supportedVersions: [], + + tierlists: ["sgl-EC", "sgl-HC"], + tierlistDescriptions: { + "sgl-EC": "Sieglinde Easy Clear ratings.", + "sgl-HC": "Sieglinde Hard Clear ratings.", + }, + }, }; /** diff --git a/common/src/config/static-config.ts b/common/src/config/static-config.ts index 1d5eaee6e..2fda4ee92 100644 --- a/common/src/config/static-config.ts +++ b/common/src/config/static-config.ts @@ -59,19 +59,22 @@ export const allIDStrings: IDStrings[] = [ "usc:Controller", "usc:Keyboard", "wacca:Single", + "pms:Controller", + "pms:Keyboard", + "jubeat:Single", ]; export const allSupportedGames: Game[] = [ "iidx", "museca", "maimai", - // "jubeat", + "jubeat", "popn", "sdvx", "ddr", "bms", "chunithm", - // "gitadora", + "gitadora", "usc", "wacca", ]; @@ -157,4 +160,9 @@ export const PrettyVersions: Versions = { "wacca:Single": { reverse: "REVERSE", }, + "jubeat:Single": { + festo: "festo", + }, + "pms:Controller": {}, + "pms:Keyboard": {}, }; diff --git a/common/src/game-classes.ts b/common/src/game-classes.ts index 9328b1dd7..af3f84d6c 100644 --- a/common/src/game-classes.ts +++ b/common/src/game-classes.ts @@ -257,6 +257,35 @@ export const PopnClasses = [ mouseoverVariant("神", "God", "warning"), ]; +export const PMSDans = [ + mouseoverVariant("●1", "Insane 1st Dan", "info"), + mouseoverVariant("●2", "Insane 2nd Dan", "info"), + mouseoverVariant("●3", "Insane 3rd Dan", "info"), + mouseoverVariant("●4", "Insane 4th Dan", "info"), + mouseoverVariant("●5", "Insane 5th Dan", "info"), + mouseoverVariant("●6", "Insane 6th Dan", "info"), + mouseoverVariant("●7", "Insane 7th Dan", "info"), + mouseoverVariant("●8", "Insane 8th Dan", "info"), + mouseoverCSS("●9", "Insane 9th Dan", "red"), + mouseoverCSS("●10", "Insane 10th Dan", "red"), + mouseoverCSS("●●", "Insane Kaiden", "teal"), + noMouseoverCSS("●OJ", "Overjoy", "purple"), + mouseoverVariant("●UNDF", "Undefined (Post-Overjoy)", "warning"), +]; + +export const JubeatColours = [ + noMouseoverVariant("Black", "secondary"), + noMouseoverCSS("Yellow-Green", "yellowgreen", "black"), + noMouseoverCSS("Green", "green"), + noMouseoverCSS("Light Blue", "cyan", "black"), + noMouseoverVariant("Blue", "info"), + noMouseoverCSS("Violet", "violet"), + noMouseoverCSS("Purple", "purple"), + noMouseoverCSS("Pink", "pink"), + noMouseoverCSS("Orange", "orange"), + noMouseoverVariant("Gold", "warning"), +]; + export interface GameClassSets { "iidx:SP": "dan"; "iidx:DP": "dan"; @@ -275,6 +304,8 @@ export interface GameClassSets { "gitadora:Gita": "colour"; "gitadora:Dora": "colour"; "wacca:Single": "stageUp" | "colour"; + "pms:Controller": "dan"; + "pms:Keyboard": "dan"; } export type AllClassSets = GameClassSets[IDStrings]; diff --git a/common/src/lib/util.test.ts b/common/src/lib/util.test.ts deleted file mode 100644 index d36c2383d..000000000 --- a/common/src/lib/util.test.ts +++ /dev/null @@ -1,10 +0,0 @@ -import t from "tap"; -import { CalculateGradeDeltaIIDX } from "./util"; - -t.test("#CalculateGradeDeltaIIDX", (t) => { - t.equal(CalculateGradeDeltaIIDX("A", 1000, 2000), "A-334"); - t.equal(CalculateGradeDeltaIIDX("AAA", 1778, 2000), "AAA+0"); - t.equal(CalculateGradeDeltaIIDX("MAX", 1900, 2000), "MAX-100"); - - t.end(); -}); diff --git a/common/src/lib/util.ts b/common/src/lib/util.ts deleted file mode 100644 index 585243ac8..000000000 --- a/common/src/lib/util.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { GetGamePTConfig } from "../config/config"; -import { Grades, integer } from "../types"; - -const IIDXConfig = GetGamePTConfig("iidx", "SP"); - -export function CalculateGradeDeltaIIDX( - cmpGrade: Grades["iidx:SP" | "iidx:DP"], - score: integer, - notecount: integer -): string { - const cmpGradeIDX = IIDXConfig.grades.indexOf(cmpGrade); - - const cmpGradePercent = IIDXConfig.gradeBoundaries[cmpGradeIDX]; - - const cmpScore = Math.ceil(notecount * (cmpGradePercent / 100)); - - const delta = score - cmpScore; - - if (delta >= 0) { - return `${cmpGrade}+${delta}`; - } else { - // negative numbers implicitly stringify with the - prefix - return `${cmpGrade}${delta}`; - } -} diff --git a/common/src/types.ts b/common/src/types.ts index f9e6313fc..98d6a3fd8 100644 --- a/common/src/types.ts +++ b/common/src/types.ts @@ -26,13 +26,15 @@ export type IDStrings = | "ddr:DP" | "maimai:Single" | "museca:Single" - // | "jubeat:Single" + | "jubeat:Single" | "bms:7K" | "bms:14K" | "chunithm:Single" | "gitadora:Gita" | "gitadora:Dora" - | "wacca:Single"; + | "wacca:Single" + | "pms:Keyboard" + | "pms:Controller"; export interface IDStringToPlaytype { "iidx:SP": "SP"; @@ -52,6 +54,8 @@ export interface IDStringToPlaytype { "gitadora:Gita": "Gita"; "gitadora:Dora": "Dora"; "wacca:Single": "Single"; + "pms:Keyboard": "Keyboard"; + "pms:Controller": "Controller"; } export interface IDStringToGame { @@ -72,6 +76,8 @@ export interface IDStringToGame { "gitadora:Gita": "gitadora"; "gitadora:Dora": "gitadora"; "wacca:Single": "wacca"; + "pms:Keyboard": "pms"; + "pms:Controller": "pms"; } export interface GameToIDStrings { @@ -87,6 +93,7 @@ export interface GameToIDStrings { gitadora: "gitadora:Gita" | "gitadora:Dora"; popn: "popn:9B"; wacca: "wacca:Single"; + pms: "pms:Keyboard" | "pms:Controller"; } /** @@ -111,7 +118,7 @@ export type Game = | "iidx" | "museca" | "maimai" - // | "jubeat" + | "jubeat" | "popn" | "sdvx" | "ddr" @@ -119,7 +126,8 @@ export type Game = | "chunithm" | "gitadora" | "usc" - | "wacca"; + | "wacca" + | "pms"; /** * This is the generic response from the Kamaitachi API in event of a failure. @@ -162,6 +170,7 @@ export interface Playtypes { bms: "7K" | "14K"; gitadora: "Gita" | "Dora"; wacca: "Single"; + pms: "Keyboard" | "Controller"; } type IIDXGrades = "F" | "E" | "D" | "C" | "B" | "A" | "AA" | "AAA" | "MAX-" | "MAX"; @@ -230,6 +239,8 @@ export interface Grades { | "SSS" | "SSS+" | "MASTER"; + "pms:Controller": IIDXGrades; + "pms:Keyboard": IIDXGrades; } type IIDXLamps = @@ -278,6 +289,8 @@ export interface Lamps { "gitadora:Gita": GitadoraLamps; "gitadora:Dora": GitadoraLamps; "wacca:Single": "FAILED" | "CLEAR" | "MISSLESS" | "FULL COMBO" | "ALL MARVELOUS"; + "pms:Controller": IIDXLamps; + "pms:Keyboard": IIDXLamps; } export type IIDX2DXTraSets = "Kichiku" | "Kiraku" | "All Scratch"; @@ -294,7 +307,7 @@ export interface Difficulties { "ddr:SP": "BEGINNER" | "BASIC" | "DIFFICULT" | "EXPERT" | "CHALLENGE"; "ddr:DP": "BASIC" | "DIFFICULT" | "EXPERT" | "CHALLENGE"; "maimai:Single": "Easy" | "Basic" | "Advanced" | "Expert" | "Master" | "Re:Master"; - "jubeat:Single": "BSC" | "ADV" | "EXT"; + "jubeat:Single": "BSC" | "ADV" | "EXT" | "HARD BSC" | "HARD ADV" | "HARD EXT"; "museca:Single": "Green" | "Yellow" | "Red"; "bms:7K": "CHART"; "bms:14K": "CHART"; @@ -310,6 +323,8 @@ export interface Difficulties { | "BASS MASTER"; "gitadora:Dora": "BASIC" | "ADVANCED" | "EXTREME" | "MASTER"; "wacca:Single": "NORMAL" | "HARD" | "EXPERT" | "INFERNO"; + "pms:Controller": "CHART"; + "pms:Keyboard": "CHART"; } /** @@ -508,6 +523,8 @@ export interface SessionCalculatedDataLookup { "gitadora:Gita": "skill"; "gitadora:Dora": "skill"; "wacca:Single": "naiveRate"; + "pms:Controller": "sieglinde"; + "pms:Keyboard": "sieglinde"; } export interface SessionDocument extends MongoDBDocument { @@ -733,7 +750,7 @@ export interface UGSRatingsLookup { "ddr:SP": "MFCP" | "ktRating"; "ddr:DP": "MFCP" | "ktRating"; "maimai:Single": "ktRating"; - "jubeat:Single": "jubility"; + "jubeat:Single": "jubility" | "naiveJubility"; "museca:Single": "ktRating"; "bms:7K": "sieglinde"; "bms:14K": "sieglinde"; @@ -741,6 +758,8 @@ export interface UGSRatingsLookup { "gitadora:Gita": "skill"; "gitadora:Dora": "skill"; "wacca:Single": "naiveRate" | "rate"; + "pms:Controller": "sieglinde"; + "pms:Keyboard": "sieglinde"; } export interface UserGameStats extends MongoDBDocument { @@ -801,7 +820,7 @@ export interface GPTSupportedVersions { "ddr:SP": "a20"; "ddr:DP": "a20"; "maimai:Single": "finale"; - "jubeat:Single": never; + "jubeat:Single": "festo"; "museca:Single": "1.5" | "1.5-b"; "bms:7K": never; "bms:14K": never; @@ -809,6 +828,8 @@ export interface GPTSupportedVersions { "gitadora:Gita": "nextage"; "gitadora:Dora": "nextage"; "wacca:Single": "reverse"; + "pms:Controller": never; + "pms:Keyboard": never; } interface CDDataIIDXSP { @@ -852,7 +873,7 @@ interface ChartDocumentData { "ddr:SP": CDDataDDRSP; "ddr:DP": CDDataDDRSP; "maimai:Single": { maxPercent: number; inGameID: number; inGameStrID: string }; - "jubeat:Single": { arcChartID: string | null }; + "jubeat:Single": { inGameID: integer }; "museca:Single": { inGameID: integer }; "bms:7K": CDDataBMS; "bms:14K": CDDataBMS; @@ -860,6 +881,8 @@ interface ChartDocumentData { "gitadora:Gita": { inGameID: integer }; "gitadora:Dora": { inGameID: integer }; "wacca:Single": { isHot: boolean }; + "pms:Controller": CDDataBMS; + "pms:Keyboard": CDDataBMS; } export interface GPTTierlists { @@ -880,6 +903,8 @@ export interface GPTTierlists { "gitadora:Gita": never; "gitadora:Dora": never; "wacca:Single": never; + "pms:Controller": "sgl-HC" | "sgl-EC"; + "pms:Keyboard": "sgl-HC" | "sgl-EC"; } export interface ChartTierlistInfo { @@ -901,6 +926,7 @@ export interface ChartDocument extends MongoDBD tierlistInfo: Partial>; versions: GPTSupportedVersions[I][]; } + interface SongDocumentData { iidx: { genre: string; displayVersion: string | null }; museca: { titleJP: string; artistJP: string; displayVersion: string }; @@ -914,6 +940,7 @@ interface SongDocumentData { chunithm: { genre: string; displayVersion: string }; gitadora: { isHot: boolean; displayVersion: string }; wacca: { titleJP: string; artistJP: string; genre: string; displayVersion: string | null }; + pms: { genre: string | null; subtitle: string | null; subartist: string | null }; } export interface SongDocument extends MongoDBDocument { @@ -997,6 +1024,12 @@ interface BMS7KScoreMeta { gauge: "NORMAL" | "EASY" | "HARD" | "EX-HARD" | null; } +interface PMSScoreMeta { + random: RanOptions | null; + client: "beatoraja" | null; + gauge: "NORMAL" | "EASY" | "HARD" | "EX-HARD" | null; +} + interface USCScoreMeta { noteMod: "NORMAL" | "MIRROR" | "RANDOM" | "MIR-RAN" | null; gaugeMod: "NORMAL" | "HARD" | "PERMISSIVE" | null; @@ -1026,6 +1059,8 @@ interface ScoreMetaLookup { "gitadora:Gita": Record; "gitadora:Dora": Record; "wacca:Single": { mirror: boolean | null }; + "pms:Controller": PMSScoreMeta; + "pms:Keyboard": PMSScoreMeta; } interface BASE_VALID_HIT_META { @@ -1099,6 +1134,8 @@ export interface HitMetaLookup { "gitadora:Gita": BASE_VALID_HIT_META; "gitadora:Dora": BASE_VALID_HIT_META; "wacca:Single": BASE_VALID_HIT_META; + "pms:Controller": BMSHitMeta; + "pms:Keyboard": BMSHitMeta; } type IIDXJudges = "pgreat" | "great" | "good" | "bad" | "poor"; @@ -1126,6 +1163,8 @@ export interface JudgementLookup { "gitadora:Gita": GitadoraJudges; "gitadora:Dora": GitadoraJudges; "wacca:Single": "marvelous" | "great" | "good" | "miss"; + "pms:Controller": "cool" | "great" | "good" | "bad" | "poor"; + "pms:Keyboard": "cool" | "great" | "good" | "bad" | "poor"; } export interface ScoreCalculatedDataLookup { @@ -1138,7 +1177,7 @@ export interface ScoreCalculatedDataLookup { "ddr:SP": "MFCP" | "ktRating"; "ddr:DP": "MFCP" | "ktRating"; "maimai:Single": "ktRating"; - // "jubeat:Single": "jubility"; + "jubeat:Single": "jubility"; "museca:Single": "ktRating"; "bms:7K": "sieglinde"; "bms:14K": "sieglinde"; @@ -1146,6 +1185,8 @@ export interface ScoreCalculatedDataLookup { "gitadora:Gita": "skill"; "gitadora:Dora": "skill"; "wacca:Single": "rate"; + "pms:Controller": "sieglinde"; + "pms:Keyboard": "sieglinde"; } export interface ScoreDocument extends MongoDBDocument { @@ -1382,6 +1423,8 @@ export interface UGPTSpecificPreferences { "gitadora:Gita": Record; "gitadora:Dora": Record; "wacca:Single": Record; + "pms:Controller": Record; + "pms:Keyboard": Record; } export interface UGPTSettings extends MongoDBDocument {