From 81ac2f3dfe52a889ce3fb937bc28d520642f6cbc Mon Sep 17 00:00:00 2001 From: samtcifihi <565455483@protonmail.com> Date: Sat, 19 Sep 2026 20:38:44 +0000 Subject: [PATCH] Arimaa: pass the cell into the OCCUPIED validation message The two call sites in Arimaa omitted the interpolation parameter, so the message rendered literally as "The cell {{where}} is already occupied." 141 of the 148 call sites across the games already pass it. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01QDibMmzgf18ky9fiCRW5cL --- src/games/arimaa.ts | 4 ++-- test/games/arimaa.test.ts | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/games/arimaa.ts b/src/games/arimaa.ts index 98f505b1..41d6983a 100644 --- a/src/games/arimaa.ts +++ b/src/games/arimaa.ts @@ -739,7 +739,7 @@ export class ArimaaGame extends GameBase { // cell must be empty, including of anything placed earlier in this move if (cloned.board.has(cell)) { result.valid = false; - result.message = i18next.t("apgames:validation._general.OCCUPIED"); + result.message = i18next.t("apgames:validation._general.OCCUPIED", {where: cell}); return result; } // in normal play, must be on home ranks @@ -989,7 +989,7 @@ export class ArimaaGame extends GameBase { // to is empty if (cloned.board.has(to)) { result.valid = false; - result.message = i18next.t("apgames:validation._general.OCCUPIED"); + result.message = i18next.t("apgames:validation._general.OCCUPIED", {where: to}); return result; } // to is orthogonally adjacent diff --git a/test/games/arimaa.test.ts b/test/games/arimaa.test.ts index a82f8146..b3febba7 100644 --- a/test/games/arimaa.test.ts +++ b/test/games/arimaa.test.ts @@ -186,17 +186,17 @@ describe("Arimaa", () => { let g = new ArimaaGame(); let result = g.validateMove("Ee2,Me2,Hb2,Hg2,Cf2,Cc2,Dd1,De1,Ra2,Rh2,Ra1,Rb1,Rc1,Rf1,Rg1,Rh1"); expect(result.valid).to.be.false; - expect(result.message).to.equal(i18next.t("apgames:validation._general.OCCUPIED")); + expect(result.message).to.equal(i18next.t("apgames:validation._general.OCCUPIED", {where: "e2"})); g = new ArimaaGame(undefined, ["free"]); result = g.validateMove("Ec3,Mc3,Rd4"); expect(result.valid).to.be.false; - expect(result.message).to.equal(i18next.t("apgames:validation._general.OCCUPIED")); + expect(result.message).to.equal(i18next.t("apgames:validation._general.OCCUPIED", {where: "c3"})); // placing onto an opponent's piece is still caught the same way g = new ArimaaGame(undefined, ["free"]); g.move("Ec3,Rd4"); result = g.validateMove("ec3"); expect(result.valid).to.be.false; - expect(result.message).to.equal(i18next.t("apgames:validation._general.OCCUPIED")); + expect(result.message).to.equal(i18next.t("apgames:validation._general.OCCUPIED", {where: "c3"})); }); it ("classifications", () => {