Toujours dans le contexte du développement d'ItemDispatcher, je génère des conditions qui déterminent si un objet sera distribué sur une créature ou dans un magasin.
Par exemple, voici une condition générée qui indique que l'objet sera disponible durant les chapitre 2, 4, 6, uniquement la nuit, si le joueur joue en très facile ou difficile.
Code : Tout sélectionner
OR(3)
Global("Chapter","GLOBAL",2)
Global("Chapter","GLOBAL",4)
Global("Chapter","GLOBAL",6)
TimeOfDay(NIGHT)
OR(2)
Difficulty(EASIEST)
Difficulty(HARD)
C'est ici que je bloque, car là où il est assez simple d'écrire des conditions inversées grâce aux parenthèses, il n'existe, à ma connaissance, aucun mécanisme pour les scripts du jeu.
Si je traite chaque "groupe" de condition indépendamment, c'est très facile, la difficulté survient lorsque je dois combiner ces inversions.
Code : Tout sélectionner
OR(3)
Global("Chapter","GLOBAL",2)
Global("Chapter","GLOBAL",4)
Global("Chapter","GLOBAL",6)
Code : Tout sélectionner
!Global("Chapter","GLOBAL",2)
!Global("Chapter","GLOBAL",4)
!Global("Chapter","GLOBAL",6)
Code : Tout sélectionner
TimeOfDay(NIGHT)
Code : Tout sélectionner
!TimeOfDay(NIGHT)
Code : Tout sélectionner
OR(2)
Difficulty(EASIEST)
Difficulty(HARD)
Code : Tout sélectionner
!Difficulty(EASIEST)
!Difficulty(HARD)
Avec la condition inversée, on veut que si UN SEUL des groupes est valide, l'action s'exécute.
Je voudrais donc trouver la solution pour écrire l'équivalent de ceci
Code : Tout sélectionner
IF (
(
!Global("Chapter","GLOBAL",2)
AND !Global("Chapter","GLOBAL",4)
AND !Global("Chapter","GLOBAL",6)
)
OR !TimeOfDay(NIGHT)
OR (
!Difficulty(EASIEST)
AND !Difficulty(HARD)
)
)
Elle consiste à vérifier pour toutes les autres valeurs disponibles lorsqu'on a un OR(x) dans la condition de base.
Code : Tout sélectionner
OR(23)
Global("Chapter","GLOBAL",1)
Global("Chapter","GLOBAL",3)
Global("Chapter","GLOBAL",5)
Global("Chapter","GLOBAL",7)
Global("Chapter","GLOBAL",8)
Global("Chapter","GLOBAL",9)
Global("Chapter","GLOBAL",10)
Global("Chapter","GLOBAL",11)
Global("Chapter","GLOBAL",12)
Global("Chapter","GLOBAL",13)
Global("Chapter","GLOBAL",14)
Global("Chapter","GLOBAL",15)
Global("Chapter","GLOBAL",16)
Global("Chapter","GLOBAL",17)
Global("Chapter","GLOBAL",18)
Global("Chapter","GLOBAL",19)
Global("Chapter","GLOBAL",20)
Global("Chapter","GLOBAL",21)
Global("Chapter","GLOBAL",22)
!TimeOfDay(NIGHT)
Difficulty(EASY)
Difficulty(NORMAL)
Difficulty(HARDEST)