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)
)