diff --git a/modules/coreI18n/src/main/key.scala b/modules/coreI18n/src/main/key.scala index a2fff7e4c57d6..8b666ef065c6f 100644 --- a/modules/coreI18n/src/main/key.scala +++ b/modules/coreI18n/src/main/key.scala @@ -1274,6 +1274,8 @@ object I18nKey: val `interferenceDescription`: I18nKey = "puzzleTheme:interferenceDescription" val `intermezzo`: I18nKey = "puzzleTheme:intermezzo" val `intermezzoDescription`: I18nKey = "puzzleTheme:intermezzoDescription" + val `killBoxMate`: I18nKey = "puzzleTheme:killBoxMate" + val `killBoxMateDescription`: I18nKey = "puzzleTheme:killBoxMateDescription" val `knightEndgame`: I18nKey = "puzzleTheme:knightEndgame" val `knightEndgameDescription`: I18nKey = "puzzleTheme:knightEndgameDescription" val `long`: I18nKey = "puzzleTheme:long" diff --git a/modules/puzzle/src/main/PuzzleTheme.scala b/modules/puzzle/src/main/PuzzleTheme.scala index 3e4a3bd2ca130..8dacb99dc2d7f 100644 --- a/modules/puzzle/src/main/PuzzleTheme.scala +++ b/modules/puzzle/src/main/PuzzleTheme.scala @@ -49,6 +49,7 @@ object PuzzleTheme: val interference = PuzzleTheme(i.interference, i.interferenceDescription) val intermezzo = PuzzleTheme(i.intermezzo, i.intermezzoDescription) val kingsideAttack = PuzzleTheme(i.kingsideAttack, i.kingsideAttackDescription) + val killBoxMate = PuzzleTheme(i.killBoxMate, i.killBoxMateDescription) val knightEndgame = PuzzleTheme(i.knightEndgame, i.knightEndgameDescription) val long = PuzzleTheme(i.long, i.longDescription) val master = PuzzleTheme(i.master, i.masterDescription) @@ -139,6 +140,7 @@ object PuzzleTheme: doubleBishopMate, dovetailMate, hookMate, + killBoxMate, smotheredMate ), I18nKey.puzzle.specialMoves -> List( diff --git a/public/images/puzzle-themes/killBoxMate.svg b/public/images/puzzle-themes/killBoxMate.svg new file mode 100644 index 0000000000000..d354b91eaebbd --- /dev/null +++ b/public/images/puzzle-themes/killBoxMate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/translation/source/puzzleTheme.xml b/translation/source/puzzleTheme.xml index 3ae2dd556eb57..dfaa121997ba2 100644 --- a/translation/source/puzzleTheme.xml +++ b/translation/source/puzzleTheme.xml @@ -57,6 +57,8 @@ Moving a piece between two opponent pieces to leave one or both opponent pieces undefended, such as a knight on a defended square between two rooks. Intermezzo Instead of playing the expected move, first interpose another move posing an immediate threat that the opponent must answer. Also known as "Zwischenzug" or "In between". + Kill box mate + A rook is next to the enemy king and supported by a queen that also blocks the king's escape squares. The rook and the queen catch the enemy king in a 3 by 3 "kill box". Knight endgame An endgame with only knights and pawns. Long puzzle diff --git a/ui/@types/lichess/i18n.d.ts b/ui/@types/lichess/i18n.d.ts index 5c27b24b9eebc..c0b9bfdf82756 100644 --- a/ui/@types/lichess/i18n.d.ts +++ b/ui/@types/lichess/i18n.d.ts @@ -2471,6 +2471,10 @@ interface I18n { intermezzo: string; /** Instead of playing the expected move, first interpose another move posing an immediate threat that the opponent must answer. Also known as "Zwischenzug" or "In between". */ intermezzoDescription: string; + /** Kill box mate */ + killBoxMate: string; + /** A rook is next to the enemy king and supported by a queen that also blocks the king's escape squares. The rook and the queen catch the enemy king in a 3 by 3 "kill box". */ + killBoxMateDescription: string; /** Kingside attack */ kingsideAttack: string; /** An attack of the opponent's king, after they castled on the king side. */