From 3d2bb42aa6ae0a3aef4627f8573869d389de3ec3 Mon Sep 17 00:00:00 2001 From: Didictateur Date: Sun, 23 Nov 2025 01:02:19 +0100 Subject: [PATCH] =?UTF-8?q?selection=20de=20la=20pi=C3=A8ce=20=C3=A0=20tel?= =?UTF-8?q?eporter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/game.html | 14 ++++++++++++-- server.js | 3 +-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/public/game.html b/public/game.html index 56c242b..dae30b0 100644 --- a/public/game.html +++ b/public/game.html @@ -71,7 +71,14 @@ // helper: decide if a card requires a target selected after clicking 'Jouer' function cardRequiresTarget(cardId){ if(!cardId) return null; - const id = String(cardId).toLowerCase(); + // normalize and strip diacritics so titles like "Téléportation" become "teleportation" + let id = String(cardId).toLowerCase(); + try{ + id = id.normalize('NFD').replace(/\p{Diacritic}/gu, ''); + }catch(e){ + // fallback: remove non-ascii characters + id = id.replace(/[^\x00-\x7F]/g, ''); + } if(id.indexOf('mine') !== -1) return 'empty'; // kamikaz targets one of your pieces (play card, then choose a piece) if(id.indexOf('kamikaz') !== -1) return 'owned'; @@ -88,6 +95,8 @@ return 'enemy'; } if(id.indexOf('coin') !== -1 || id === 'coin_coin') return 'owned'; + // teleportation: require selecting one of your pieces first (like promotion) + if(id.indexOf('teleport') !== -1 || id.indexOf('tele') !== -1 || id.indexOf('t_l_portation') !== -1) return 'owned'; return null; } @@ -777,7 +786,8 @@ function emitPlay(){ if(!socket) return; const cid = cardEl.dataset.cardId; - const requireType = cardRequiresTarget(cid); + // try cardId first, then fall back to the human title (helps with accented ids like "Téléportation") + const requireType = cardRequiresTarget(cid) || cardRequiresTarget(c.title || ''); if(requireType){ if(requireType === 'player'){ // If there's only one opponent, auto-select them (no modal needed). Otherwise show modal. diff --git a/server.js b/server.js index 649b907..bf431e1 100644 --- a/server.js +++ b/server.js @@ -129,7 +129,6 @@ function buildDefaultDeck(){ ['adoubement','La pièce sélectionnée peut maintenant faire les déplacements du cavalier en plus'], ['folie','La pièce sélectionnée peut maintenant faire les déplacements du fou en plus'], ['fortification','La pièce sélectionnée peut maintenant faire les déplacements de la tour en plus'], - ['fortification','La pièce sélectionnée peut maintenant faire les déplacements de la tour en plus'], ["l'anneau","Le plateau devient un anneau pendant un tour"], // ['brouillard de guerre','Les joueur ne peuvent voir que au alentour de leurs pièces pendant 4 tours'], // ['changer la pièce à capturer','Le joueur choisie la nouvelle pièce jouant le rôle de roi sans la révéler'], @@ -152,7 +151,7 @@ function buildDefaultDeck(){ // ['épidémie','Toutes les pièces sur le territoire enemie est est capturée'], // ['glue','Toutes les pièces autour de la pièce désignée ne peuvent pas bouger tant que cette dernière ne bouge pas'], ["coin coin","Possibilité de se téléporter depuis un coin vers n'importe quel autre coin"], - // ['téléportation','Téléporte n importe quelle pièce de son camp sur une case vide'], + ['téléportation','Téléporte n importe quelle pièce de son camp sur une case vide'], // ['changement de camp','On retourne le plateau'], // ['ça tangue','Toutes les pièces se décale du même côté'], // ['réinitialisation','Toutes les pièces reviennent à leur position initiale. S il y a des pièces supplémenaires, se rangent devant les pions'],