diff --git a/server/src/server/router/ir/beatoraja/charts/convert-scores.test.ts b/server/src/server/router/ir/beatoraja/charts/convert-scores.test.ts index c2e28413d..15bfb1be2 100644 --- a/server/src/server/router/ir/beatoraja/charts/convert-scores.test.ts +++ b/server/src/server/router/ir/beatoraja/charts/convert-scores.test.ts @@ -3,6 +3,7 @@ import t from "tap"; import ResetDBState from "test-utils/resets"; import { GetKTDataJSON } from "test-utils/test-data"; import { TachiScoreDataToBeatorajaFormat } from "./convert-scores"; +import deepmerge from "deepmerge"; const gazerChart = GetKTDataJSON("./tachi/bms-gazer-chart.json"); @@ -48,6 +49,61 @@ t.test("#TachiScoreDataToBeatorajaFormat", (t) => { passnotes: 0, minbp: 0, notes: 2256, + epg: 617, + lpg: 0, + egr: 0, + lgr: 0, + egd: 0, + lgd: 0, + ebd: 0, + lbd: 0, + epr: 0, + lpr: 0, + ems: 0, + lms: 0, + }, + "Should return the beatoraja score format." + ); + + t.end(); + }); + + t.test("Should fake epg/egr data if the score doesn't have it..", (t) => { + const res = TachiScoreDataToBeatorajaFormat( + deepmerge(pbScore, { scoreData: { score: 999 } }), + gazerChart.data.hashSHA256, + "", + gazerChart.data.notecount, + 0 + ); + + t.strictSame( + res, + { + sha256: "195fe1be5c3e74fccd04dc426e05f8a9cfa8a1059c339d0a23e99f63661f0b7d", + player: "", + playcount: 0, + clear: 5, + date: 0, + maxcombo: 0, + deviceType: null, + gauge: 0, + random: null, + passnotes: 0, + minbp: 0, + notes: 2256, + epg: Math.floor(999 / 2), + lpg: 0, + egr: 1, + lgr: 0, + egd: 0, + lgd: 0, + ebd: 0, + lbd: 0, + epr: 0, + lpr: 0, + ems: 0, + lms: 0, }, "Should return the beatoraja score format." ); @@ -79,6 +135,18 @@ t.test("#TachiScoreDataToBeatorajaFormat", (t) => { passnotes: 0, minbp: 0, notes: 2256, + epg: 617, + lpg: 0, + egr: 0, + lgr: 0, + egd: 0, + lgd: 0, + ebd: 0, + lbd: 0, + epr: 0, + lpr: 0, + ems: 0, + lms: 0, }, "Should return the beatoraja score format." ); diff --git a/server/src/server/router/ir/beatoraja/charts/convert-scores.ts b/server/src/server/router/ir/beatoraja/charts/convert-scores.ts index 9a00e25e4..7bd31380b 100644 --- a/server/src/server/router/ir/beatoraja/charts/convert-scores.ts +++ b/server/src/server/router/ir/beatoraja/charts/convert-scores.ts @@ -89,5 +89,12 @@ export function TachiScoreDataToBeatorajaFormat( judgements[key] = scoreData.hitMeta[key] ?? 0; } - return beatorajaScore; + // If we have no epg/egr data, we can't calculate EX score on the beatoraja client. + // We have to fake some data for LR2 scores/other scores. + if (!judgements.epg && !judgements.lpg && !judgements.egr && !judgements.lgr) { + judgements.epg = Math.floor(pbScore.scoreData.score / 2); + judgements.egr = pbScore.scoreData.score % 2; + } + + return { ...beatorajaScore, ...judgements }; }