I7 : Objet transporté par le joueur et non reconnu

Bonjour,

J’espère que je vais m’exprimer assez clairement.
Sans une routine de combat j’utilise l’action « Attacking it with » qui vient de « Lanista 2 », documentation 7.5.
Sans modifications autres qu’un peu de francisation, comme ceci :

Attacking it with is an action applying to one visible thing and one carried thing. Understand "attack [someone] avec [something preferably held]" as attacking it with.

Le joueur a une épée, décrite comme ceci :

Sword1 is a weapon.
The printed name of Sword1 is "votre épée".
The MaximumDamage of Sword1 is 6.
Understand "épée/epee" as Sword1.
Now the player carries Sword1;	

Juste avant le combat je fais un « showme sword1 » et j’obtiens ceci :

>showme sword1
votre épée - weapon
location: in Rue du Pot d'Etain
singular-named, proper-named; unlit, inedible, portable, handled; male
list grouping key: none
printed name: "votre épée"
printed plural name: "weapons"
indefinite article: none
grammatical gender: genre masculin
description: none
initial appearance: none
MaximumDamage: 6

Pour moi, tout est normal. Mais si au coup suivant je lance le combat, j’obtiens ceci :

>attaquer royaliste avec épée
Là où vous êtes, il n'y a rien de tel.  [ Message standard modifié ]

( L’action se passe pendant la Révolution, d’où le vocabulaire )

Ajouter « now the player holds sword1 » ne change rien.
« Attaquer royaliste avec sword1 » ne marche pas.
« Attack royaliste with épée » ne marche pas non plus.

Par contre, « try attacking Royaliste with sword1; » marche parfaitement.

Comprends rien du tout. Ça doit être bête comme chou. Pouvez-vous aider ? Merci.

Plusieurs choses, pas forcément en lien avec ton problème.

D’abord, inutile d’ajouter le mot avec accents dans les lignes de compréhension, même si ça ne pose pas de problème de le faire. « epee » suffit.

Dans ton code qui décrit l’épée, tu as écrit Now the player carries Sword1; sans le mettre dans une règle. Normalement, ça ne devrait pas compiler. Soit tu écrit The player carries Sword1, qui est une assertion décrivant l’état initial du monde, soit tu mets le now dans une règle, comme when play begins.

Comme « Sword1 » n’est destiné qu’au programmeur, tu peux rendre l’objet privately-named pour que le joueur ne puisse pas utiliser ce terme. En soi, ce n’est pas grave car le joueur n’aura pas moyen de savoir qu’on peut utiliser Sword1, mais ça peut toujours être utile.

Enfin, est-ce que ça fonctionne avec une action autre qu’attaquer avec (mettons, examiner) ? Si ce n’est pas le cas, alors ça vient soit des lignes de compréhension, soit du fait que l’objet n’est pas en scope (pas au même endroit, dans un conteneur opaque et fermé, etc.).

Merci, Natrium.

J’ai tout vérifié et re-vérifié, rien à changer chez moi. Pour moi il y a un petit bug quelque part.
Pas bien méchant d’ailleurs, puisqu’on peut le contourner facilement. Mais il y a un petit bug.

Pourrais-tu copier ici un projet minimal qui montre le problème ?

Je vais essayer, laisse-moi quelques jours.