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.