Le contexte

    Le contexte est l'ensemble des informations testées dans les règles. Les informations sur le joueur telles que la quantité d'or possédée, les informations sur les autres joueurs telles que le score ou bien les informations sur le jeu telles que la durée de la partie ou les conditions de victoire sont quelques exemples. Ces informations véhiculent des valeurs et ce sont ces valeurs qui peuvent être testées dans une règle. Il existe quatre types d'information :

    Utilisation du contexte :

Les informations sont utilisées pour activer les règles. Un test d'un contexte est utilisé pour savoir si une condition est vérifiée. La réponse à un test de contexte ne peut être que VRAI (True) ou FAUX (False).L'exemple suivant montre comment provoquer l'entraînement d'un villageois lorsqu'on possède au moins 50 unités de nourriture :
(defrule
(food-amount greater-than 50)
=>
(train villager)
)

Tester le contexte :

    (defrule
    (regicide-game)
    =>
    (chat-to-all "A mort le roi !")
    )

    (defrule
    (wood-amount greater-than 1000)
    =>
    (chat-to-all "J'ai plus de 1000 unités de bois !")
    )
    Dans notre exemple, wood-amount (quantité de bois) est une information numérique de contexte, greater-than (plus grand que) est un opérateur relatif et 1000 est la valeur de comparaison. La règle peut être traduite en algorithmique par : Si la quantité de bois en ma possession est strictement supérieure à 1000 unités alors envoyer à tout le monde le message "J'ai plus de 1000 unités de bois !".
    Les opérateurs relatifs existants sont les suivants :
    # less-than (strictement inférieur à, raccourci : <)
    # less-or-equal (inférieur ou égal à, raccourci : <=)
    # greater-than (strictement supérieur à, raccourci : >)
    # greater-or-equal (supérieur ou égal à, raccourci : >=, attention ne pas confondre avec => désignant une liste d'actions dans une règle)
    # equal (égal à, raccourci : ==, attention ce sont deux symboles = contigus)
    # not-equal (différent de, raccourci : !=)

    (defrule
    (civ-selected viking)
    =>
    (chat-to-all "Vous allez voir ce que nous autres les vikings sommes capables de vous infliger !!!")
    )
    Dans cet exemple, viking est une valeur prédéfinie du paramètre <civ> (civilisation).

    (defrule
    (escrow-amount gold > 10000)
    =>
    (chat-to-all "Je suis extrêmement riche.")
    )
    Dans cet exemple, escrow amount (quantité mise en réserve) doit connaître le type de ressources que l'on souhaite tester pour renvoyer une valeur, le type de ressource <resource-type> est ici l'or (gold).