selection de la pièce à teleporter

This commit is contained in:
Didictateur 2025-11-23 01:02:19 +01:00
parent 11dc04b5b0
commit 3d2bb42aa6
2 changed files with 13 additions and 4 deletions

View file

@ -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.

View file

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