Les variables locales aux règles

    Les variables de règles sont des variables ayant une portée limitée à la règle qui les utilise. Cela signifie que ces variables sont renseignées à l'intérieur de la règle et qu'elles ne peuvent être utilisées que dans cette règle.

Voici la liste des variables disponibles :

this-any-ally (un allié défini)
this-any-computer (un JGO défini)
this-any-computer-ally (un JGO allié défini)
this-any-computer-enemy (un JGO ennemi défini)
this-any-computer-neutral (un JGO neutre défini)
this-any-enemy (un ennemi défini)
this-any-human (un humain défini)
this-any-human-ally (un humain allié défini)
this-any-human-enemy (un humain ennemi défini)
this-any-human-neutral (un humain neutre défini)
this-any-neutral (un joueur neutre défini)

Ces variables peuvent être utilisées à la place du paramètre <player-number> dans les actions suivantes :

chat-to-player
chat-to-player-using-id
clear-tribute-memory
set-stance
tribute-to-player

Ces variables sont renseignées par le paramètre joker associé utilisé dans les informations de contexte. Par exemple, le joker any-ennemi correspondant stockera sa valeur dans this-any-ennemi.
Voici un exemple d'utilisation de variables de règles :

(defrule
(players-civ any-enemy gothic)
=>
(chat-to-player this-any-enemy "Je sais que vous autres, les Goths, êtes nos ennemis !")
(disable-self)
)

Dans cet exemple, l'information player-civ recherche parmi tous les ennemis ceux qui sont Goths. Si un ennemi de cette civilisation est trouvé, la règle se déclenche. En même temps, le résultat du joker recherché est stocké dans this-any-ennemy. L'action chat-to-player est exécutée et utilise la variable this-any-ennemy pour envoyer le message approprié à l'ennemi connu pour appartenir à la civilisation Goth.
Il est important de se souvenir que la variable a une portée limitée à la règle. Cela signifie qu'une fois que la règle a été exécutée, la variable n'est plus valide. Par exemple, si la règle suivante se trouve derrière la règle définie plus haut, le message "Je n'aime pas les Goths !" ne sera pas envoyé.

(defrule
(true)
=>
(chat-to-player this-any-enemy "Je n'aime pas les Goths") ; Ne sera jamais envoyé car this-any-ennemy n'est plus valable sorti de la règle précédente.
(disable-self)
)