Aller au contenu

Notation

tilttek/dice

Une expression est analysée, vérifiée et normalisée avant d'être lancée. Les lettres s'écrivent en minuscules ou en majuscules. Une entrée contient une instruction ou plus ; les instructions, les références, les groupes, les listes de textes, les textes, les branches et les commentaires sont décrits dans instructions et résultats.

Dés

ConstructionExemplesSens
Dés2d6, d20, d%Un nombre — 1 s'il est omis — et les faces ; d% vaut d100
Dés Fudge4dF, 4dF.2, 4dF.1Faces −1, 0 et +1 : deux de chaque, ou un −1, quatre faces vides et un +1 avec .1
Dés sur un intervalle4d[-1..1], 3d[0..9]Chaque entier d'une borne à l'autre, les deux comprises
Dés personnalisés3d{chromatic}Un dé que déclare l'application, nommé entre accolades (dés personnalisés)
Nombre et faces lancés d'abord(1d4+1)d6, 3d(2*6), (1d4)dFUne expression entre parenthèses donne le nombre, ou les faces d'un dé numéroté
Une liste de valeurs[10,25,43,8]kh1, [-1,3]Des entiers pris comme des dés déjà lancés, qui acceptent les modificateurs qui jugent des dés
Les dés précédents8d10>=6-@=1Les dés qui ont compté dans l'ensemble lancé ou énuméré juste avant, dans la même expression, jugés de nouveau

Un nombre ou un nombre de faces entre parenthèses qui est une constante équivaut à la forme simple : (3)d6 vaut 3d6. Un nombre lancé inférieur à 1, ou des faces lancées inférieures à 1, ne peuvent pas être lancés (lancer).

Modificateurs

ConstructionExemplesSens
Relance4d6r1, 4d6r<3, 4d6ro1Relancer chaque dé tombé sur une face ou correspondant à un validateur, jusqu'à ce qu'il n'y corresponde plus ; ro relance une seule fois
Unique4d6u, 4d6uoRelancer chaque dé qui montre une valeur déjà montrée par un dé précédent de l'ensemble, jusqu'à ce qu'elle diffère ; uo une seule fois
Explosions3d6!, 3d6!5, 3d6!>=5Lancer un dé de plus pour chaque dé tombé sur la face la plus haute, sur une face, ou correspondant à un validateur, et de nouveau pour chaque nouveau dé qui y correspond
Explosions composées3d10!!, 3d10!!>8Les dés que lance une explosion s'ajoutent au dé qui a explosé, qui reste un seul dé
Explosions pénétrantes2d6!p, 2d6!!pChaque dé qu'ajoute une explosion compte un de moins ; un dé explose toujours sur la face telle qu'elle est tombée
Explosions limitées3d10!(3), 3d10!>8(1d4)Au plus tant d'explosions par dé, la limite écrite ou lancée d'abord
Relancer et ajouter3d10a10Une seule fois, lancer un dé de plus et l'ajouter au dé qui correspond : 3d10!!10(1)
Dés tous identiques2d6tQuand chaque dé de l'ensemble montre la même valeur, relancer autant de dés et les ajouter, tant qu'ils sortent tous identiques
Plancher, plafond4d6min3, 4d6max5, 4dFmin-1Chaque dé compte au moins, ou au plus, cette valeur
Transformation5d10t[>5:15,<=5:0]Un dé qui correspond à la première condition prend sa valeur
Filtre4d6f[!=6], 4d6f[all:>1]Les dés qui ne correspondent pas sont écartés
Garder, écarter4d6kh3, 4d6kl1, 4d6dh1, 4d6dl1Garder ou écarter les plus hauts ou les plus bas ; k seul garde les plus hauts, d seul écarte les plus bas
Avantaged20 adv, d20 dis2d20kh1 et 2d20kl1, pour un seul dé
Réussites6d10>=7, 6d10=10, 8d10c[6..10]Compter les dés qui correspondent, au lieu de les additionner
Échecs6d10>=7f1, 6d10>=7f<3Chaque dé qui n'est pas une réussite et qui correspond retire une réussite
Occurrences10d10o, 10d10o3[>=7]Les ensembles de dés de même valeur — au moins deux, ou la largeur écrite —, d'une hauteur qui correspond quand elle est donnée : la valeur est le nombre d'ensembles
Groupes5d10g10Des groupes de dés qui atteignent chacun la somme — le plus grand nombre que forment les dés, jusqu'à 12 dés (lancer) — : la valeur est le nombre de groupes
Marques critiques1d20cs, 1d20cs>19, 1d20cf1Marquer une réussite critique — la face la plus haute telle qu'elle est tombée — ou un échec critique — la plus basse —, pour l'affichage
Jetons d'apparence8d10look[2:accent,muted]Un jeton de l'apparence de la page pour les dés suivants, ou pour chaque dé restant quand aucun nombre n'est donné
Tri4d6s, 4d6sa, 4d6sdÉnumérer les dés par valeur, croissante ou décroissante

Une face seule, une comparaison écrite avec son signe, ou un validateur entre crochets indique à quels dés s'applique une relance, une explosion ou une marque critique : r1, r<3, r[1|2]. Les comparaisons gardent le sens simple de leur signe : >5 est strictement supérieur à 5, >=5 vaut 5 ou plus, =6 vaut 6. Les échecs prennent une face ou une comparaison ; f[…] est le filtre.

Un jeton d'apparence compte de 1 à 32 lettres minuscules, chiffres ou traits d'union, en commençant par une lettre : il nomme un style que définit la page — accent, muted —, jamais une couleur.

Les validateurs et leur portée

Entre crochets, un validateur indique quelles valeurs correspondent :

ValidateurExempleCorrespond à
Une valeur[6], [-1]Cette valeur
Une comparaison[>=6], [!=1]Les valeurs pour lesquelles la comparaison est vraie, != compris
Un intervalle[8..10], [-1..1]Les valeurs d'une borne à l'autre, les deux comprises
Un reste[%2=0], [%3!=0]Les valeurs dont le reste par le diviseur vérifie la comparaison ; le reste a le signe du diviseur
Composites[>2&<6], `[16], [%2=0^>4]`

Une condition — les réussites c[…], le filtre f[…] et les transformations t[…] — peut écrire sa portée avant le validateur, suivie d'un deux-points :

PortéeExempleVérifiée contre
Chaque valeur finale (par défaut)c[>=6]La valeur de chaque dé une fois son plancher, son plafond et sa transformation appliqués
Chaque déc[die:6]Chaque dé tel qu'il est tombé, avant son plancher, son plafond ou sa transformation
Tousc[all:>2]Chaque dé qui compte : une réussite ou aucune ; gardés ou écartés ensemble
L'un d'euxc[any:6]Au moins un dé qui compte
Totalc[total:>=10]La somme des dés qui comptent

Une transformation juge chaque dé. Des réussites jugées ensemble ne comptent aucun échec.

L'ordre des modificateurs

Quel que soit l'ordre dans lequel ils sont écrits, les modificateurs d'un ensemble de dés s'appliquent dans cet ordre. Pendant le lancer de chaque dé : la relance, la relance d'une valeur déjà montrée, l'explosion. Une fois chaque dé lancé : l'explosion des dés tous identiques. Ensuite, sur les dés lancés ou énumérés : le plancher et le plafond, les transformations, le filtre, la sélection, les réussites et les échecs — ou les occurrences, ou les groupes —, les marques critiques, les jetons d'apparence, et l'ordre dans lequel les dés sont énumérés.

Chaque modificateur peut être donné une seule fois. Un ensemble compte des réussites, des occurrences ou des groupes, un seul des trois au plus ; les échecs exigent des réussites jugées dé par dé ; un plancher reste inférieur ou égal à son plafond. Un lancer qui ne finirait jamais est refusé : une explosion que chaque face déclencherait, sauf si elle est limitée (d6!>=1), ou une relance répétée de chaque face (d6r<7). Les dés uniques répétés exigent autant de faces que de dés ; les dés tous identiques explosent à partir de deux dés. Une sélection garde d'un dé à tous, ou écarte d'un dé à tous sauf un. Une liste de valeurs, les dés précédents, les dés des instructions et un groupe n'acceptent aucun modificateur qui lance des dés ; les dés précédents et ceux des instructions gardent ou écartent ce qu'ils peuvent des dés qu'ils trouvent.

Arithmétique et fonctions

ConstructionExemplesSens
Opérations2d6+3, (1d8+2)*2, -1d4, 10/3, 10%3Des entiers ; *, / et % lient plus fort que + et -
Puissance2^10, 2^-1, -2^2, 2^3^2Lie plus fort qu'une négation — -2^2 vaut −4 — et de droite à gauche
Arrondifloor(1d6/3), ceil(1d6/3), round(7/2)Les divisions à l'intérieur arrondissent vers le bas, vers le haut, ou au plus proche, les demis s'éloignant de zéro
Valeur absolueabs(1-1d6)
Plus petit, plus grandmin(1d6, 3), max(1d20, 1d20)De deux arguments ou plus
Répétitionsrepeat(4d6kh3, 6), repeat(1d6, 1d4)Le premier argument lancé autant de fois que le dit le second, en une liste
Instructions2d6, 1d8, 2d6; 1d8Plusieurs instructions lancées ensemble, chacune avec son propre résultat

Une division arrondit comme le dit le lancer — vers le bas par défaut (lancer) —, sauf si floor(), ceil() ou round() autour d'elle disent autre chose ; toute autre fonction garde l'arrondi du lancer. Une puissance à exposant négatif vaut un divisé par la puissance, arrondi de la même façon. Un texte ou une liste ne prend aucune part à l'arithmétique. Un reste a le signe du diviseur : -7%3 vaut 2.

La forme canonique

Pool::canonical() réécrit une expression en lettres minuscules — sauf le F des dés Fudge et le L et le S des listes de textes et des aiguillages —, chaque nombre écrit, les modificateurs dans l'ordre où ils s'appliquent, les instructions séparées par ", ", et pas plus de parenthèses que n'en exige l'arbre. Un seuil sur une face s'écrit avec la face seule (r1, !6), ou avec = quand elle est négative (r=-1). Des réussites jugées sur chaque valeur finale par une comparaison l'écrivent seule (>=7), toute autre par c[…]. s s'écrit sa, a10 s'écrit !!10(1), o écrit sa largeur.

EntréeForme canonique
4D6KH34d6kh3
d% + d41d100+1d4
d20 adv2d20kh1
4d6kh3!r14d6r1!kh3
8d10c[>=6]-@c[=1]8d10>=6-@=1
3d10a103d10!!10(1)
min(1d6,3)min(1d6, 3)
((2))2
3d{Chromatic}3d{chromatic}

La forme canonique s'analyse de nouveau en le même arbre.

Erreurs

Une entrée invalide lève InvalidExpression, dont position est le décalage de l'erreur, en caractères à partir de 0, et dont le message la nomme : Unexpected "x" at position 3 of "2d6x". Les nombres valent 1 000 000 000 au plus ; les parenthèses, les négations, les fonctions, les groupes, les branches et les parenthèses des validateurs s'imbriquent sur 32 niveaux au plus. Une entrée qui s'analyse mais dépasse une limite lève LimitExceeded (limites).