diff --git a/public/oops/sounds.html b/public/oops/sounds.html
index 1492ee536148b..8de581794596d 100644
--- a/public/oops/sounds.html
+++ b/public/oops/sounds.html
@@ -78,6 +78,7 @@
Sound Test Page
'draw',
'berserk',
'check',
+ 'checkmate',
'newChallenge',
'newPM',
'confirmation',
diff --git a/public/sound/futuristic/Checkmate.mp3 b/public/sound/futuristic/Checkmate.mp3
new file mode 120000
index 0000000000000..5d03cc53ce2d1
--- /dev/null
+++ b/public/sound/futuristic/Checkmate.mp3
@@ -0,0 +1 @@
+Check.mp3
\ No newline at end of file
diff --git a/public/sound/futuristic/Checkmate.ogg b/public/sound/futuristic/Checkmate.ogg
new file mode 120000
index 0000000000000..80b2f6e44fb86
--- /dev/null
+++ b/public/sound/futuristic/Checkmate.ogg
@@ -0,0 +1 @@
+Check.ogg
\ No newline at end of file
diff --git a/public/sound/instrument/Checkmate.mp3 b/public/sound/instrument/Checkmate.mp3
new file mode 120000
index 0000000000000..5d03cc53ce2d1
--- /dev/null
+++ b/public/sound/instrument/Checkmate.mp3
@@ -0,0 +1 @@
+Check.mp3
\ No newline at end of file
diff --git a/public/sound/instrument/Checkmate.ogg b/public/sound/instrument/Checkmate.ogg
new file mode 120000
index 0000000000000..80b2f6e44fb86
--- /dev/null
+++ b/public/sound/instrument/Checkmate.ogg
@@ -0,0 +1 @@
+Check.ogg
\ No newline at end of file
diff --git a/public/sound/lisp/Checkmate.mp3 b/public/sound/lisp/Checkmate.mp3
new file mode 120000
index 0000000000000..5d03cc53ce2d1
--- /dev/null
+++ b/public/sound/lisp/Checkmate.mp3
@@ -0,0 +1 @@
+Check.mp3
\ No newline at end of file
diff --git a/public/sound/lisp/Checkmate.ogg b/public/sound/lisp/Checkmate.ogg
new file mode 120000
index 0000000000000..80b2f6e44fb86
--- /dev/null
+++ b/public/sound/lisp/Checkmate.ogg
@@ -0,0 +1 @@
+Check.ogg
\ No newline at end of file
diff --git a/public/sound/nes/Checkmate.mp3 b/public/sound/nes/Checkmate.mp3
new file mode 120000
index 0000000000000..5d03cc53ce2d1
--- /dev/null
+++ b/public/sound/nes/Checkmate.mp3
@@ -0,0 +1 @@
+Check.mp3
\ No newline at end of file
diff --git a/public/sound/nes/Checkmate.ogg b/public/sound/nes/Checkmate.ogg
new file mode 120000
index 0000000000000..80b2f6e44fb86
--- /dev/null
+++ b/public/sound/nes/Checkmate.ogg
@@ -0,0 +1 @@
+Check.ogg
\ No newline at end of file
diff --git a/public/sound/piano/Checkmate.mp3 b/public/sound/piano/Checkmate.mp3
new file mode 120000
index 0000000000000..5d03cc53ce2d1
--- /dev/null
+++ b/public/sound/piano/Checkmate.mp3
@@ -0,0 +1 @@
+Check.mp3
\ No newline at end of file
diff --git a/public/sound/piano/Checkmate.ogg b/public/sound/piano/Checkmate.ogg
new file mode 120000
index 0000000000000..80b2f6e44fb86
--- /dev/null
+++ b/public/sound/piano/Checkmate.ogg
@@ -0,0 +1 @@
+Check.ogg
\ No newline at end of file
diff --git a/public/sound/robot/Checkmate.mp3 b/public/sound/robot/Checkmate.mp3
new file mode 100644
index 0000000000000..2f866f9e89baf
Binary files /dev/null and b/public/sound/robot/Checkmate.mp3 differ
diff --git a/public/sound/robot/Checkmate.ogg b/public/sound/robot/Checkmate.ogg
new file mode 100644
index 0000000000000..b354eb2c9d578
Binary files /dev/null and b/public/sound/robot/Checkmate.ogg differ
diff --git a/public/sound/sfx/Checkmate.mp3 b/public/sound/sfx/Checkmate.mp3
new file mode 120000
index 0000000000000..5d03cc53ce2d1
--- /dev/null
+++ b/public/sound/sfx/Checkmate.mp3
@@ -0,0 +1 @@
+Check.mp3
\ No newline at end of file
diff --git a/public/sound/sfx/Checkmate.ogg b/public/sound/sfx/Checkmate.ogg
new file mode 120000
index 0000000000000..80b2f6e44fb86
--- /dev/null
+++ b/public/sound/sfx/Checkmate.ogg
@@ -0,0 +1 @@
+Check.ogg
\ No newline at end of file
diff --git a/public/sound/standard/Checkmate.mp3 b/public/sound/standard/Checkmate.mp3
new file mode 120000
index 0000000000000..5d03cc53ce2d1
--- /dev/null
+++ b/public/sound/standard/Checkmate.mp3
@@ -0,0 +1 @@
+Check.mp3
\ No newline at end of file
diff --git a/public/sound/standard/Checkmate.ogg b/public/sound/standard/Checkmate.ogg
new file mode 120000
index 0000000000000..80b2f6e44fb86
--- /dev/null
+++ b/public/sound/standard/Checkmate.ogg
@@ -0,0 +1 @@
+Check.ogg
\ No newline at end of file
diff --git a/public/sound/woodland/Checkmate.mp3 b/public/sound/woodland/Checkmate.mp3
new file mode 120000
index 0000000000000..5d03cc53ce2d1
--- /dev/null
+++ b/public/sound/woodland/Checkmate.mp3
@@ -0,0 +1 @@
+Check.mp3
\ No newline at end of file
diff --git a/public/sound/woodland/Checkmate.ogg b/public/sound/woodland/Checkmate.ogg
new file mode 120000
index 0000000000000..80b2f6e44fb86
--- /dev/null
+++ b/public/sound/woodland/Checkmate.ogg
@@ -0,0 +1 @@
+Check.ogg
\ No newline at end of file
diff --git a/ui/round/src/ctrl.ts b/ui/round/src/ctrl.ts
index 051066ffa7d18..d4487843f988f 100644
--- a/ui/round/src/ctrl.ts
+++ b/ui/round/src/ctrl.ts
@@ -442,7 +442,11 @@ export default class RoundController implements MoveRootCtrl {
},
check: !!o.check,
});
- if (o.check) site.sound.play('check', o.volume);
+ if (o.status?.name === 'mate') {
+ site.sound.play('checkmate', o.volume);
+ } else if (o.check) {
+ site.sound.play('check', o.volume);
+ }
blur.onMove();
pubsub.emit('ply', this.ply);
}
diff --git a/ui/site/src/sound.ts b/ui/site/src/sound.ts
index 14f57dcae6a6f..301d7a5ed842f 100644
--- a/ui/site/src/sound.ts
+++ b/ui/site/src/sound.ts
@@ -51,11 +51,11 @@ export default new (class implements SoundI {
if (!this.enabled()) return;
let dir = this.theme;
if (this.theme === 'music' || this.speech()) {
- if (['move', 'capture', 'check'].includes(name)) return;
+ if (['move', 'capture', 'check', 'checkmate'].includes(name)) return;
dir = 'standard';
}
return this.url(`${dir}/${name[0].toUpperCase() + name.slice(1)}.mp3`);
- }
+ }
url(name: Name): string {
return site.asset.url(`sound/${name}`, { version: '_____1' });
@@ -76,7 +76,11 @@ export default new (class implements SoundI {
else {
if (o?.san?.includes('x')) this.throttled('capture', volume);
else this.throttled('move', volume);
- if (o?.san?.includes('#') || o?.san?.includes('+')) this.throttled('check', volume);
+ if (o?.san?.includes('#')) {
+ this.throttled('checkmate', volume);
+ } else if (o?.san?.includes('+')) {
+ this.throttled('check', volume);
+ }
}
}
if (o?.filter === 'game' || this.theme !== 'music') return;
@@ -193,7 +197,7 @@ export default new (class implements SoundI {
}
preloadBoardSounds() {
- for (const name of ['move', 'capture', 'check', 'genericNotify']) this.load(name);
+ for (const name of ['move', 'capture', 'check', 'checkmate', 'genericNotify']) this.load(name);
}
async resumeWithTest(): Promise {