diff --git a/server/src/lib/score-import/framework/pb/game-specific-merge.ts b/server/src/lib/score-import/framework/pb/game-specific-merge.ts index d23f4a4fc..802ca6ee6 100644 --- a/server/src/lib/score-import/framework/pb/game-specific-merge.ts +++ b/server/src/lib/score-import/framework/pb/game-specific-merge.ts @@ -1,3 +1,4 @@ +/* eslint-disable require-atomic-updates */ import { InternalFailure } from "../common/converter-failures"; import db from "external/mongo/db"; import { Volforce } from "rg-stats"; @@ -139,5 +140,26 @@ export async function SDVXMergeFn( chart.levelNum ); + // find the users score with the highest exScore + const bestExScore = (await db.scores.findOne( + { + chartID: pbDoc.chartID, + "scoreData.hitMeta.exScore": { $type: "number" }, + }, + { + sort: { + "scoreData.hitMeta.exScore": -1, + }, + } + )) as ScoreDocument<"sdvx:Single"> | null; + + if (!bestExScore) { + pbDoc.scoreData.hitMeta.exScore = undefined; + } else { + pbDoc.scoreData.hitMeta.exScore = bestExScore.scoreData.hitMeta.exScore; + + pbDoc.composedFrom.other = [{ name: "exScorePB", scoreID: bestExScore.scoreID }]; + } + return true; }