Parler et verbes de communication dans la lib francophone

La lib en version 2.2 (et antérieures ?) contient un bug dans la grammaire du verbe parler, qui fait planter l’interpréteur dans certaines conditions. En me penchant dessus pour le corriger (FrenchG.h), j’ai apporté un certain nombre d’ajouts et simplifications sur les verbes permettant de parler avec les personnages.

Voici le code de la grammaire que je propose :

! ------- Verbes de communication avec des personnages
[VagueTellSub;
    "Soyez plus précis dans votre communication, ou reformulez.";
];

[CrierSeulSub;
    "Vous criez ce qui vous passe par la tête. Cela n'a aucun effet pratique mais cela vous défoule un peu.";
];

Verb 'repondre' 'dire' 'crier' 'hurler'
    *                                             -> VagueTell       ! dire (d'accord mais quoi...)
    * creature                                    -> VagueTell       ! dis-lui (d'accord mais quoi...)
    * 'à'/'a'/'au'/'aux' creature                 -> VagueTell       ! dire à toto (d'accord mais quoi...)
    * 'de'/'d^' topic                             -> VagueTell       ! dire de partir (d'accord mais à qui...)  
    * creature 'de'/'d^' topic                    -> AskTo           ! dis lui de faire ça
    * 'à'/'a'/'au'/'aux' creature 'de'/'d^' topic -> AskTo           ! dire a toto de faire ça
    * creature topic                              -> Answer reverse  ! dis-lui bonjour
    * 'à'/'a'/'au'/'aux' creature topic           -> Answer reverse  ! dire a toto bonjour
    * topic 'à'/'a'/'au'/'aux' creature           -> Answer;         ! dire bonjour à toto

Verb 'demander'
    *                                             -> VagueTell       ! demander (d'accord mais quoi...)
    * creature                                    -> VagueTell       ! demande-lui (d'accord mais quoi...)
    * 'à'/'a'/'au'/'aux' creature                 -> VagueTell       ! demander à toto (d'accord mais quoi...)
    * 'de'/'d^' topic                             -> VagueTell       ! demander de partir (d'accord mais à qui...)  
    * 'que'/'qu^' topic                           -> VagueTell       ! (on ne gère pas "demander que toto sorte")
    * creature 'de'/'d^' topic                    -> AskTo           ! demande lui de faire ça
    * 'à'/'a'/'au'/'aux' creature 'de'/'d^' topic -> AskTo           ! demander a toto de faire ça
    * creature noun                               -> AskFor          ! demande-lui du pain
    * noun 'à'/'a'/'au'/'aux' creature            -> AskFor reverse  ! demander du pain au boulanger
    * 'à'/'a'/'au'/'aux' creature noun            -> AskFor;         ! demander au boulanger du pain

Extend only 'crier' first
    *                                             -> CrierSeul;

Verb 'parler' 'discuter' 'causer'
    * 'avec'/'à'/'a'/'au'/'aux' creature                                              -> Tell
    * 'avec'/'à'/'a'/'au'/'aux' creature 'de'/'du'/'des'/'d^' topic                   -> Tell
    * 'avec'/'à'/'a'/'au'/'aux' creature 'au' 'sujet' 'de'/'du'/'des'/'d^' topic      -> Tell
    * 'avec'/'à'/'a'/'au'/'aux' creature 'a'/'à' 'propos' 'de'/'du'/'des'/'d^' topic  -> Tell
    * 'de'/'du'/'des'/'d^' topic 'avec'/'à'/'a'/'au'/'aux' creature                   -> Tell reverse 
    * 'au' 'sujet' 'de'/'du'/'des'/'d^' topic 'avec'/'à'/'a'/'au'/'aux' creature      -> Tell reverse
    * 'a'/'à' 'propos' 'de'/'du'/'des'/'d^' topic 'avec'/'à'/'a'/'au'/'aux' creature  -> Tell reverse
    * creature                                                                        -> Tell ! "parle-lui"
    * creature 'de'/'du'/'des'/'d^' topic                                             -> Tell ! "parle-lui"
    * creature 'au' 'sujet' 'de'/'du'/'des'/'d^' topic                                -> Tell ! "parle-lui"
    * creature 'a'/'à' 'propos' 'de'/'du'/'des'/'d^' topic                            -> Tell; ! "parle-lui"

Verb 'questionner' 'interroger'
    * creature 'à'/'a' 'propos' 'de'/'du'/'des' topic   -> Ask
    * creature 'au' 'sujet' 'de'/'du'/'des' topic       -> Ask
    * creature 'sur' topic                              -> Ask;

!Verb 'exiger' !*! reclamer
!                * topic 'à'/'a'/'au'/'aux' creature   -> Tell
!                * creature topic   		 -> Tell ! "demande-lui"
!                * 'à'/'a'/'au'/'aux' creature topic   -> Tell
!                * creature 'de' topic			-> AskTo
!                * 'à'/'a'/'au'/'aux' creature 'de' topic	-> AskTo;

Verb 'ordonner' 
    * creature 'de' topic                       -> AskTo ! "ordonne-lui"
    * 'à'/'a'/'au'/'aux' creature 'de' topic	-> AskTo;

Je n’ai pas trop le temps là tout de suite mais je reviendrai détailler un peu les diverses propositions. Je suis en train de faire un petit jeu (deux salles, deux persos) où l’on devra intéragir avec les personnages, et qui pourra servir de test, je vous le soumettrai bientôt.

Notez l’ajout de l’action VagueTell pour des formulations incomplètes, et le retrait du verbe exiger. A vos remarques, je ne touche pas au SVN pour le moment pour ce gros changement.

Voici une nouvelle version de ma proposition. J’ai ajouté une action ParlerSansPrecision pour des phrases comme « Parler » ou « Parler avec la dame », qui ne peuvent pas être gérées correctement par l’action Tell qui attend systématiquement un topic (ce qui fait que dans la propriété life du personnage on est dans l’impossibilité de savoir si un topic a effectivement été précisé ou non !).

De même, ajout d’un InterrogerSansPrecision si on interroge un personnage sans préciser de topic.

Et pour être plus clair, j’ai renommé mon action VagueTell en ParlerIncorrect

! ------- Verbes de communication avec des personnages
[ParlerIncorrectSub;
    "Soyez plus précis dans votre communication, ou reformulez.";
];

[CrierSansPrecisionSub;
    "Vous criez ce qui vous passe par la tête. Cela n'a aucun effet pratique mais cela vous défoule un peu.";
];

[ParlerSansPrecisionSub;
    "Lui parler, pourquoi pas, mais de quoi ?";
];

[InterrogerSansPrecisionSub;
    "L'interroger, pourquoi pas, mais à propos de quoi ?";
];


Verb 'repondre' 'dire' 'crier' 'hurler'
    *                                             -> ParlerIncorrect ! dire (d'accord mais quoi...)
    * creature                                    -> ParlerIncorrect ! dis-lui (d'accord mais quoi...)
    * 'à'/'a'/'au'/'aux' creature                 -> ParlerIncorrect ! dire à toto (d'accord mais quoi...)
    * 'de'/'d^' topic                             -> ParlerIncorrect ! dire de partir (d'accord mais à qui...)  
    * creature 'de'/'d^' topic                    -> AskTo           ! dis lui de faire ça
    * 'à'/'a'/'au'/'aux' creature 'de'/'d^' topic -> AskTo           ! dire a toto de faire ça
    * creature topic                              -> Answer reverse  ! dis-lui bonjour
    * 'à'/'a'/'au'/'aux' creature topic           -> Answer reverse  ! dire a toto bonjour
    * topic 'à'/'a'/'au'/'aux' creature           -> Answer;         ! dire bonjour à toto

Verb 'demander'
    *                                             -> ParlerIncorrect ! demander (d'accord mais quoi...)
    * creature                                    -> ParlerIncorrect ! demande-lui (d'accord mais quoi...)
    * 'à'/'a'/'au'/'aux' creature                 -> ParlerIncorrect ! demander à toto (d'accord mais quoi...)
    * 'de'/'d^' topic                             -> ParlerIncorrect ! demander de partir (d'accord mais à qui...)  
    * 'que'/'qu^' topic                           -> ParlerIncorrect ! (on ne gère pas "demander que toto sorte")
    * creature 'de'/'d^' topic                    -> AskTo           ! demande lui de faire ça
    * 'à'/'a'/'au'/'aux' creature 'de'/'d^' topic -> AskTo           ! demander a toto de faire ça
    * creature noun                               -> AskFor          ! demande-lui du pain
    * noun 'à'/'a'/'au'/'aux' creature            -> AskFor reverse  ! demander du pain au boulanger
    * 'à'/'a'/'au'/'aux' creature noun            -> AskFor          ! demander au boulanger du pain
    * creature topic                              -> Answer reverse  ! dis-lui bonjour
    * 'à'/'a'/'au'/'aux' creature topic           -> Answer reverse  ! dire a toto bonjour
    * topic 'à'/'a'/'au'/'aux' creature           -> Answer;         ! dire bonjour à toto

Extend only 'crier' first
    *                                             -> CrierSansPrecision;

Verb 'parler' 'discuter' 'causer'
    * 'avec'/'à'/'a'/'au'/'aux' creature                                              -> ParlerSansPrecision
    * 'avec'/'à'/'a'/'au'/'aux' creature 'de'/'du'/'des'/'d^' topic                   -> Tell
    * 'avec'/'à'/'a'/'au'/'aux' creature 'au' 'sujet' 'de'/'du'/'des'/'d^' topic      -> Tell
    * 'avec'/'à'/'a'/'au'/'aux' creature 'a'/'à' 'propos' 'de'/'du'/'des'/'d^' topic  -> Tell
    * 'de'/'du'/'des'/'d^' topic 'avec'/'à'/'a'/'au'/'aux' creature                   -> Tell reverse 
    * 'au' 'sujet' 'de'/'du'/'des'/'d^' topic 'avec'/'à'/'a'/'au'/'aux' creature      -> Tell reverse
    * 'a'/'à' 'propos' 'de'/'du'/'des'/'d^' topic 'avec'/'à'/'a'/'au'/'aux' creature  -> Tell reverse
    * creature                                                                        -> ParlerSansPrecision ! "parle-lui"
    * creature 'de'/'du'/'des'/'d^' topic                                             -> Tell ! "parle-lui"
    * creature 'au' 'sujet' 'de'/'du'/'des'/'d^' topic                                -> Tell ! "parle-lui"
    * creature 'a'/'à' 'propos' 'de'/'du'/'des'/'d^' topic                            -> Tell; ! "parle-lui"

Verb 'questionner' 'interroger' !'consulter'
    * creature                                          -> InterrogerSansPrecision
    * creature 'à'/'a' 'propos' 'de'/'du'/'des' topic   -> Ask
    * creature 'au' 'sujet' 'de'/'du'/'des' topic       -> Ask
    * creature 'sur' topic                              -> Ask;

!Verb 'exiger' !*! reclamer
!                * topic 'à'/'a'/'au'/'aux' creature   -> Tell
!                * creature topic   		 -> Tell ! "demande-lui"
!                * 'à'/'a'/'au'/'aux' creature topic   -> Tell
!                * creature 'de' topic			-> AskTo
!                * 'à'/'a'/'au'/'aux' creature 'de' topic	-> AskTo;

Verb 'ordonner' 
    * creature 'de' topic                       -> AskTo ! "ordonne-lui"
    * 'à'/'a'/'au'/'aux' creature 'de' topic	-> AskTo;

oui c’est pas mal comme ça, et bien mieux avec le dernier ajout. Pour homogénéiser, peut-être pourrais-tu nommer ParlerSansPrecision : « VagueTell » (il existe déjà vaguego et vaguedo), voire simplement « parler » pour faciliter l’écriture des jeux.

InterrogerSansPrecision me semble un peu superflu. Attention car avec plus de verbes c’est plus difficile à gérer. InterrogerSansPrecision pourrait simplement rediriger vers « parler » (ou parlersansprecision selon le nom choisi). Après effectivement dans certains cas précis on pourra vouloir « interroger » certains NPC (sous entendre « faire parler »), mais cela pourrait peut-être être à l’auteur de créer le verbe en fonction de ses besoins.

Enfin, il faut voir ce qu’en pensent les autres. L’interaction avec les NPC c’est vraiment la galère dans les jeux textuels, et cela tourne trop souvent au « guess the topic ».

Le problème avec l’appelation « VagueTell » c’est justement sa proximité avec « VagueDo ».
En effet, VagueDo c’est quand quelqu’un a tapé juste « faire ». Je ne vois aucune situation où le verbe « faire » seul peut servir à quelque chose.

En revanche « ParlerSansPrecision » est susceptible d’être souvent utilisé par les auteurs qui ne veulent pas s’embeter avec des dialogues compliqués et déclenchent un dialogue scripté.

En revanche c’est vrai que ParlerSansPrecision est un peu long et si on peut trouver plus court sans ajouter d’ambiguïté ce ne serait pas mal.

Pour le InterrogerSansPrecision, c’est vrai qu’il peut être superflu, je le retire donc et je le remplace par ParlerSansPrecision.
Cependant, si quelqu’un a un bon argument pour le remettre on étudiera cette éventualité.
Edit : au final seul ParlerSansPrecision reste.

Une précision sur l’impact de cette nouvelle action ParlerSansPrecision sur le codage de nos IF : cette action ne sera pas interceptée dans la propriété « life » des PNJ (d’ailleurs si quelqu’un sait comment faire pour qu’elle le soit je suis preneur !), donc il faudra la traiter dans le before.
Edit : maintenant si.

Ainsi, pour traiter un PNJ il faudra bien penser à intercepter cette action dans le before (Edit : dans life maintenant), ainsi que Answer, Tell et Ask dans life. Si l’on veut que Answer, Tell et Ask renvoient sans distinction l’action ParlerSansPrecision, plutôt que dupliquer le code pour traiter les actions, envoyer un <>, qu’en pensez-vous ? (Edit : inutile maintenant qu’on peut tout intercepter dans life)

Résumé des actions de communication
Pour travailler sur ces modifications, j’ai dû réussir à comprendre les différences entre les diverses actions, et en voici un résumé pour ceux qui comme moi il y a trois jours ignoraient comment communiquer correctement avec les personnages.
Par défaut dans la lib anglophone, pour communiquer par la parole avec un personnage, on a les actions suivantes :

  • Answer : comme son nom ne l’indique pas, c’est l’action d’envoyer n’importe quel texte libre au personnage. C’est la
    plus difficile à gérer. Si je dis « dire comment ça va au personnage », le personnage va recevoir une action Answer avec le texte « comment ça va ». A nous de gérer ensuite comment il la traite. J’adorerais qu’on ait une classe de PNJ prédéfinie qui gère les expressions de base, et je la ferai d’ailleurs peut-être moi-même, ou on pourrait la faire ensemble.

  • Tell : ça c’est quand on parle d’un sujet précis à un personnage : « Parler du loup des bois à toto ». L’action Tell est envoyée à l’objet toto, avec comme « topic », sujet de conversation, les mots « loup des bois ». A nous de gérer ensuite les différents sujets qui peuvent être abordés et leurs diverses formulations.

  • Ask : c’est identique à Tell ! Sauf que c’est l’action envoyée par les verbes permettant d’interroger les personnages. Cela permet si l’on le souhaite, de différencier le fait de parler d’un sujet avec celui de questionner sur un sujet. Dans la pratique, si l’on ne souhaite pas faire cette différenciation, il est indispensable d’intercepter aussi bien Tell que Ask dans la propriété life.

    life [;
        Ask, Tell : ! si le sujet dont on veut parler est le loup des bois, dire qu'il est très rare
  • ParlerSansPrecision
    Le lecteur avisé aura remarqué ce que j’ai mis un moment avant de comprendre : il n’existe dans la lib anglophone d’origine aucune action pour intercepter le verbe Parler (cherchez « talk » dans Grammar.h vous verrez). Le fait de pouvoir simplement « Parler » est un ajout dans la lib francophone, mais dans la version actuelle il est erronné (même si ça ne se voit pas toujours dans la pratique) car il est associé à l’action Tell qui attend obligatoirement un topic pour être traitée correctement !

Comme le fait de pouvoir simplement « Parler » sans évoquer un sujet précis me semble très utile, j’ai donc ajouté ce fameux ParlerSansPrecision, et s’il est retenu il va nous falloir apprendre à en tenir compte dans nos codages, et adapter le code de certains jeux existants à cette séparation des actions.

Autre solution, suivre la lib anglophone et mettre le verbe Parler dans un fichier de lib séparé, mais dans tous les cas un jeu recompilé avec la prochaine version de la lib francophone devra être retesté sur les dialogues, voire adapté. (Edit : cette solution n’a pas été retenue pour l’instant)

C’est pourquoi l’avis de tous les intéressés est plus que nécessaire avant tout changement définitif.

(Autres actions que je n’ai pas détaillées : AskFor qui envoit une action Give au life du personnage : « demander du pain au boulanger », et AskTo qui veut dire « demander de faire quelque chose » et qui est traité dans la propriété « orders » des personnages.

au fait pour ceux qui veulent je suis sur l’irc (voir sur le site ifiction.free.fr pour les coordonnées), et j’essaie de m’y connecter régulièrement. Ca peut être sympa pour discuter parfois.

exact pour le vagueDo etc, donc à ne pas utiliser.

dans verblibm on a ça :

[ AskSub; if (RunLife(noun,##Ask) ~= 0) rfalse; L__M(##Ask, 1, noun); ];

donc ça doit être adaptable pour « parler », sauf que à la place de L__M(##Ask, 1, noun); on aurait la phrase par défaut.

donc pour ParlerSansPrecision (ou parler), cela serait sans doute (à tester) :

[ ParlerSub; if (RunLife(noun,##Parler) ~= 0) rfalse; "Lui parler, pourquoi pas, mais de quoi ?"; ];

à supposer que le test passe pour un verbe qui ne se trouve pas dans verblibm

De toute façon je pense que dans la plupart de mes prochains jeux je vais utiliser des menus ou des interactions uniques avec les NPC (on lui parle à un moment, il répond selon le contexte). Même avec inform 7 ma femme avait bien galéré entre les objets dont on parle qui ne sont pas présents (topic), les objets dont on parle qui sont présents, et cela se mélangeait un peu voire beaucoup. J’avais voulu (sans succès) faire pour mon premier jeu quand on tape « parler avec untel », on entre dans un mode spécial, et de là on a juste à taper des mots clés, et cela répond en fonction de ça. C’est un peu fastidieux d’avoir à taper « questionner untel au sujet de machin » (plus facile en anglais : ask NPC about noun) je trouve, mais cela dépend peut-être aussi des jeux.

ps : ok pour l’IRC, je vais essayer de m’y connecter également.

Stormi, tu t’attaques à un chantier important !

Ben, malheureusement, je n’ai encore jamais codé en Inform. Donc je te serais probable de peu d’aide. Mais les informations que tu donnes semblent utiles.

Vrai, cependant si tu gère Tell et Ask ensemble, le joueur peut taper plus court, et encore plus s’il n’y a qu’un personnage dans la salle :

Extrait du petit jeu que je vais bientôt vous faire tester et n’utilisant pas d’autres artifices que la lib francophone modifiée :

> parler de l'ascenseur
(avec l'homme à l'air bougon)
"Le bouton est haut hein ?" (sourire narquois)

Cela marche aussi avec questionner, mais là c’est plus court :slight_smile:

Sinon c’est intéressant le RunLife il faudra que je regarder de plus près. J’ai juste peur que Ask, Answer et Tell ne soient trop profondéments codés dans la lib inform. À tester.

Dans certains jeux en anglais (City of Secrets, par exemple), on peut abréger « ASK ABOUT » en A et « TELL ABOUT » en T, ce qui permet de taper simplement « A  » ou « T  », du moins quand il n’y a qu’une personne avec qui on peut parler.

Je ne sais pas comment on pourrait adapter ça en français. Il me semble qu’Otto avait utilisé « Q » comme abréviation de « questionner » dans un de ses jeux (peut-être Le temple de feu), mais normalement c’est déjà pris comme abréviation de « quitter », il me semble… Enfin, on devrait pouvoir en trouver une autre ?

Sinon, il me semble quand même qu’on peut déjà écrire « sur » au lieu de « au sujet de », non ?

Oui on peut dire « sur ».

[Edit : donc « questionner toto au sujet de la pizza » peut se réduire à « interroger toto sur la pizza », qui n’est pas trop long.]

Suggestion : reconnaitre « faire parler sur » comme synonyme de « questionner sur » ?

Par ailleurs ma dernière version ne reconnaît pas la formulation « demander de l’aide au monsieur » car « demander quelquechose à » ne porte que sur des objets visibles (et si on remplace par n’importe quel topic alors on ne pourra plus demander un objet à quelqu’un). Je recherche une solution mais je suis preneur des idées.

En réponse à Eriorg, comme abréviation de « questionner sur », peut-on utiliser un point d’interrogation ? « -> ? Chaussures »
A moins que ce soit déjà utilisé pour « help » (mais ici ce serait la forme verbe+complément. Donc peut être qu’il n’y a pas d’ambiguité…)

Ta remarque, Stormi (sur demander), me fait vraiment penser que dans tous les jeux ou on pense avoir des dialogue, il faudrait ajouter un paragraphe dans l’aide sur les règles de base. C’est souvent le cas, mais ton exemple illustre encore une fois que tout n’est pas intuitif pour le joueur.

Bonne idée, je l’ai mis en place sur ma version de développement à l’instant, en rendant « ? » équivalent de interroger, et j’ai ajouté une grammaire permettant de se passer de préposition :

>? homme sur bouton
"Le bouton est haut hein ?" (sourire narquois)

>? bouton
(-> l'homme à l'air bougon)
"Le bouton est haut hein ?" (sourire narquois)

Défaut du système : je suis obligé de définir une préposition fictive ‹ -> › qui est affichée entre parenthèses lorsque la personne questionnée est déterminée automatiquement par le parser. Si vous avez une meilleure idée…

Tout à fait, il nous faut à la fois être très bons dans la gestion des dialogues, mais surtout préciser comment ça marche dans l’aide.

P.S. : viendez sur IRC les gens :slight_smile:

Est-ce que le parseur peut savoir si il doit mettre la préposition au singulier ou au pluriel ? Si oui, il suffit d’écrire « à » au singulier et « aux » au pluriel…

Il y a plein d’expressions synonymes, mais toutes celles que j’ai en tête finissent par « de » ou « des » en fonction du nombre :
« à l’attention de »
« auprès de »

Ca me fait penser. Une fois les modifications apportées, il pourrait être utile que l’on rédige un article en anglais sur les modifications que nous avons fait sur la librairie, les porblèmes techniques que nous avons rencontré et les solutions. Ca pourrait être utile pour les confrères redacteur d’IF utilisant d’autres langues…

Non, la préposition est écrite tel quel d’après ce que je sais.

Voici la version actuelle de ces changements


! ------- Verbes de communication avec des personnages
[ParlerIncorrectSub;
    "Soyez plus précis dans votre communication, ou reformulez.";
];

[CrierSansPrecisionSub;
    "Vous criez ce qui vous passe par la tête. Cela n'a aucun effet pratique mais cela vous défoule un peu.";
];

[ParlerSansPrecisionSub;
    if (noun==player) "Vous ne savez pas quoi vous dire que vous ne sachiez déjà.";
    "Lui parler, pourquoi pas, mais de quoi ?";
];

Verb 'repondre' 'dire' 'crier' 'hurler'
    *                                             -> ParlerIncorrect ! dire (d'accord mais quoi...)
    * creature                                    -> ParlerIncorrect ! dis-lui (d'accord mais quoi...)
    * 'à'/'a'/'au'/'aux' creature                 -> ParlerIncorrect ! dire à toto (d'accord mais quoi...)
    * 'de'/'d^' topic                             -> ParlerIncorrect ! dire de partir (d'accord mais à qui...)  
    * creature 'de'/'d^' topic                    -> AskTo           ! dis lui de faire ça
    * 'à'/'a'/'au'/'aux' creature 'de'/'d^' topic -> AskTo           ! dire a toto de faire ça
    * creature topic                              -> Answer reverse  ! dis-lui bonjour
    * 'à'/'a'/'au'/'aux' creature topic           -> Answer reverse  ! dire a toto bonjour
    * topic 'à'/'a'/'au'/'aux' creature           -> Answer;         ! dire bonjour à toto

Extend only 'crier' 'hurler' first
    *                                             -> CrierSansPrecision;

Verb 'demander'
    *                                             -> ParlerIncorrect ! demander (d'accord mais quoi...)
    * creature                                    -> ParlerIncorrect ! demande-lui (d'accord mais quoi...)
    * 'à'/'a'/'au'/'aux' creature                 -> ParlerIncorrect ! demander à toto (d'accord mais quoi...)
    * 'que'/'qu^' topic                           -> ParlerIncorrect ! (on ne gère pas "demander que toto sorte" à cause du subjonctif)
    * creature 'de'/'d^' topic                    -> AskTo           ! demande lui de faire ça
    * 'à'/'a'/'au'/'aux' creature 'de'/'d^' topic -> AskTo           ! demander a toto de faire ça
!    * 'de'/'d^' topic 'à'/'a'/'au'/'aux' creature -> AskTo reverse  ! demander de partir à toto   !x! ça plante
    * creature noun                               -> AskFor          ! demande-lui du pain
    * noun 'à'/'a'/'au'/'aux' creature            -> AskFor reverse  ! demander du pain au boulanger
    * 'à'/'a'/'au'/'aux' creature noun            -> AskFor          ! demander au boulanger du pain
    * creature topic                              -> Ask             ! dis-lui bonjour
    * topic 'à'/'a'/'au'/'aux' creature           -> Ask reverse     ! demander de l'aide à toto...
    * 'à'/'a'/'au'/'aux' creature topic           -> Ask;            ! dire a toto bonjour



Verb 'parler' 'discuter' 'causer' '!//'
    * 'avec'/'à'/'a'/'au'/'aux' creature                                              -> ParlerSansPrecision
    * 'avec'/'à'/'a'/'au'/'aux' creature 'de'/'du'/'des'/'d^' topic                   -> Tell
    * 'avec'/'à'/'a'/'au'/'aux' creature 'au' 'sujet' 'de'/'du'/'des'/'d^' topic      -> Tell
    * 'avec'/'à'/'a'/'au'/'aux' creature 'a'/'à' 'propos' 'de'/'du'/'des'/'d^' topic  -> Tell
    * 'de'/'du'/'des'/'d^' topic 'avec'/'à'/'a'/'au'/'aux' creature                   -> Tell reverse 
    * 'au' 'sujet' 'de'/'du'/'des'/'d^' topic 'avec'/'à'/'a'/'au'/'aux' creature      -> Tell reverse
    * 'a'/'à' 'propos' 'de'/'du'/'des'/'d^' topic 'avec'/'à'/'a'/'au'/'aux' creature  -> Tell reverse
    * creature                                                                        -> ParlerSansPrecision ! "parle-lui"
    * creature 'de'/'du'/'des'/'d^' topic                                             -> Tell ! "parle-lui"
    * creature 'au' 'sujet' 'de'/'du'/'des'/'d^' topic                                -> Tell ! "parle-lui"
    * creature 'a'/'à' 'propos' 'de'/'du'/'des'/'d^' topic                            -> Tell
    * topic '->' creature                                                             -> Tell reverse;

Verb 'questionner' 'interroger' '?//'
    * creature                                                    -> ParlerSansPrecision
    * creature 'à'/'a' 'propos' 'de'/'du'/'des'/'d^' topic        -> Ask
    * creature 'au' 'sujet' 'de'/'du'/'des'/'d^' topic            -> Ask
    * creature 'sur' topic                                        -> Ask
    ! Les lignes qui suivent servent à comprendre si le joueur fainéant
    ! tape juste : 
    ! > interroger sur le ballon
    ! (Toto) 
    ! "Toto ne sait rien sur le ballon."
    * 'à'/'a' 'propos' 'de'/'du'/'des'/'d^' topic '->' creature   -> Ask reverse
    * 'au' 'sujet' 'de'/'du'/'des'/'d^' topic '->' creature       -> Ask reverse
    * 'sur' topic '->' creature                                   -> Ask reverse
    * topic '->' creature                                         -> Ask reverse;

Verb 'ordonner' 
    * creature 'de'/'d^' topic                       -> AskTo ! "ordonne-lui"
    * 'à'/'a'/'au'/'aux' creature 'de'/'d^' topic	 -> AskTo;

J’ai notamment modifié le verbe demander, et ajouté les verbes « ? » et « ! » pour interroger et parler.
Comme demandé, InterrogerSansPrecision disparaît.

Note : le code source complet de FrenchG.h est disponible sur le dépôt subversion dans la branche refonteParler : svn.tuxfamily.org/viewvc.cgi/inf … r_informfr

Quelques commentaire tiré du post sur l’histoire que tu as écrit :

« Est-il possible dans la librairie que tu as révisé d’intercepter automatiquement « Dire bonjour à quelqu’un » et renvoyer l’action « saluer quelqu’un » ?
Comme ça les 2 manières de rédiger fonctionne de la même manière. Aussi, « Saluer quelqu’un » devrait peut-être avoir une réponse standard ? »

Une autre suggestion sur le « -> », si tu veux le remplacer, tu peux simplement écrire « interroger »

Oui, ce serait envisageable d’intercepter « dire bonjour ».

Le problème c’est qu’à l’heure actuelle l’action « saluer » (WaveHands) n’est pas transitive. « Saluer quelqu’un » n’existe donc pas. C’est le cas dans la version anglaise aussi. Il faut donc qu’on décide si cela relève de la lib francophone de créer une telle action (cela me semble souhaitable mais ça se discute), ou si elle est laissée à l’appréciation de chaque auteur.

Sinon pour l’instant je laisse la préposition « -> », de toutes façons elle n’apparaît que si on a écrit une commande raccourcie, qui n’est pas très française. Si la réponse en elle-même a des éléments particuliers comme ce ->, c’est acceptable dans ce contexte.

Dans le dictionniare, ce n’est pas possible de définir plusieurs usage pour un verbe ? C’est à dire qu’il renvoie un évènement si il y a un complément, et un autre si il n’y en a pas ?

Si mais ici il s’agit de créer une action qui n’existe pas de base, donc une action de plus à gérer par les auteurs. Techniquement c’est assez simple, mais avant de le faire il faut qu’on soit à peu près tous d’accord sur l’inclusion d’une telle action dans la bibliothèque de base.

Actuellement WaveHands ne sert pas à grand chose si on ne peut utiliser un complément avec. « Vous agitez vos mains, vous sentant stupide », c’est plutôt inutile comme commentaire si on l’utilise seul. Et dans les jeux, si on tape « saluer untel », cela renvoie « je n’ai compris que saluer », si le joueur tape cela, il aura le message qui ne veut rien dire dans le contexte. Peut-être que l’on peut envisager de le rendre transitif. Je pense même que l’on peut garder les 2 formes comme pour le verbe sentir :

Verb 'sentir' 'renifler' * -> Smell * noun -> Smell;