Fix scanner battle log Wahoo World detection case

This commit is contained in:
Kalle
2026-08-10 19:50:57 +03:00
parent 6c220a3841
commit bf012e0330
4 changed files with 95 additions and 5 deletions

View File

@@ -67,12 +67,14 @@ interface TopBandParse {
/**
* In the BlitzMain glyphs the digit forms are near-identical to their letter
* lookalikes (0/O, the 1/I/l/| bars), so a stage read can surface the digit
* ("R0M-en") and burn an edit the snap threshold cannot spare. Stage names
* are digit-free in every language (sole exception carries a '9'), so digits
* and bars fold to letters before snapping.
* ("R0M-en") or the wrong bar ("WnrId") and burn an edit the snap threshold
* cannot spare. Stage names are digit-free in every language (sole exception
* carries a '9'), so digits and bars fold to letters before snapping — on
* both the reading and the entry, so an entry's own 'I' ("Inkblot") lands in
* the same folded space.
*/
function foldDigitLookalikes(s: string): string {
return s.replace(/0/g, "o").replace(/[1|]/g, "l");
return s.replace(/0/g, "o").replace(/[1|I]/g, "l");
}
function parseTopBand(reading: string): TopBandParse {
@@ -94,7 +96,7 @@ function parseTopBand(reading: string): TopBandParse {
const match = closestBy(
foldDigitLookalikes(stageReading),
ALL_STAGE_ENTRIES,
(e) => e.text,
(e) => foldDigitLookalikes(e.text),
);
if (match) {
stageScore = match.score;

View File

@@ -0,0 +1,88 @@
{
"event": "ScoreboardBattleLog",
"data": {
"lobby": "PRIVATE",
"mode": "SZ",
"stage": 11,
"stageLabel": "Wahoo World",
"timestamp": "7/8/2026 21:43",
"matchScores": [
100,
0
],
"povIndex": 7,
"players": [
{
"name": "アリ",
"weaponId": 211,
"paint": 351,
"ka": 7,
"d": 1,
"s": 1
},
{
"name": "p",
"weaponId": 2070,
"paint": 630,
"ka": 6,
"d": 0,
"s": 2
},
{
"name": "hannah",
"weaponId": 50,
"paint": 361,
"ka": 4,
"d": 1,
"s": 1
},
{
"name": "goji",
"weaponId": 6011,
"paint": 298,
"ka": 2,
"d": 0,
"s": 1
},
{
"name": "Comrade",
"weaponId": 2070,
"paint": 575,
"ka": 1,
"d": 0,
"s": 2
},
{
"name": "☆☆1_¡[⊃し☆☆",
"weaponId": 4001,
"paint": 528,
"ka": 1,
"d": 3,
"s": 2
},
{
"name": "☆★」V「▲GN№★☆",
"weaponId": 211,
"paint": 239,
"ka": 2,
"d": 3,
"s": 1
},
{
"name": "Sendou",
"weaponId": 6011,
"paint": 265,
"ka": 0,
"d": 4,
"s": 1
}
]
},
"options": {
"skipFields": [
"players.1.name",
"players.3.name"
],
"notes": "1080p stream capture with horizontal banding. Live misread: the header stage read came back 'Wahnn WnrId l' (banding cuts the o bowls) and failed to snap to Wahoo World before bar-lookalike folding covered 'I'. players.1.name (p) reads P and players.3.name (goji) reads gパi under the same banding."
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

BIN
wahoo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB