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'],