Dieser Würfelwurf ist ein String-Parser, der ein Objekt zurückgibt, das die Bestandteile des Würfelwurfs enthält. Es unterstützt die vollständige Roll20 Dice-Spezifikation. Es verwendet eine PegJS-Grammatik, um eine Darstellung des Würfelwurfformats zu erstellen. Dieser kann dann in einen einfachen Zahlenwert oder in ein komplexes Objekt umgewandelt werden, das zur Anzeige der vollständigen Rollendetails verwendet wird.
Dies ist eine Abzweigung von Ben Mortons dice_roller-Projekt. Es gab ein paar Fehler, daher veröffentliche ich es erneut mit Korrekturen und Funktionen, die ich für meine Projekte benötige.
Installieren Sie die Bibliothek mit:
npm install dice-roller-parser
Nach der Installation laden Sie einfach die Bibliothek, entweder im Browser:
< script src =" node_modules/dice-roller-parser/dist/index.js " > </ script >
Oder im Knoten:
import { DiceRoller } from "dice-roller-parser" ;
Erstellen Sie dann eine neue Instanz der DiceRoller
-Klasse und führen Sie damit einige Würfelwürfe durch.
const diceRoller = new DiceRoller ( ) ;
// Returns the total rolled value
const roll = diceRoller . rollValue ( "2d20kh1" ) ;
console . log ( roll ) ;
// Returns an object representing the dice roll, use to display the component parts of the roll
const rollObject = diceRoller . roll ( "2d20kh1" ) ;
console . log ( rollObject . value ) ;
Diese Bibliothek stellt zwei Klassen bereit, einen DiceRoller
und einen DiscordRollRenderer
.
DiceRoller
Die DiceRoller
-Klasse verwaltet das Parsen einer Würfelfolge und das Ausführen von Würfen basierend auf dem Ergebnis.
// Creates a new instance of the DiceRoller class
const roller = new DiceRoller ( ) ;
Der Standardkonstruktor verwendet Math.random
und wendet eine maximale Anzahl von Würfen pro Würfel von 1000 an. Diese können mithilfe der folgenden Konstruktorüberladungen angegeben werden.
DiceRoller(GeneratorFunction)
Sie können eine Funktion angeben, die vom Würfelwurf als Zufallszahlengenerator verwendet werden soll. Diese Funktion sollte vom Typ () => number
sein und eine Zahl zwischen 0 und 1 zurückgeben. Standardmäßig verwendet sie die integrierte Math.random
-Methode.
// Default constructor using Math.random
const roller = new DiceRoller ( ) ;
// Uses a custom random generator that always returns 0.5
const roller = new DiceRoller ( ( ) => 0.5 ) ;
Dies kann mithilfe der Eigenschaft randFunction
gelesen oder geändert werden.
roller . randFunction = ( ) => 0.5 ;
DiceRoller(GeneratorFunction, MaxRollsPerDie)
Um zu verhindern, dass versucht wird, sehr viele Würfelwürfe zu analysieren, kann eine maximale Anzahl von Würfelwürfen für einen Würfel angegeben werden. Der Standardwert ist auf 1000 eingestellt.
// Uses the default constructor with a limit of 100 rolls per die
const roller = new DiceRoller ( null , 100 ) ;
// Uses a custom random generator that always returns 0.5, and a limit of 10 rolls per die
const roller = new DiceRoller ( ( ) => 0.5 , 10 ) ;
Dies kann mit der Eigenschaft maxRollCount
gelesen oder geändert werden.
roller . maxRollCount = 75 ;
Sobald die DiceRoller
-Klasse erstellt wurde, gibt es drei Möglichkeiten, einen Würfelwurf durchzuführen:
Die rollValue
-Methode nimmt eine Würfelzeichenfolgeneingabe entgegen, analysiert sie, führt einen Wurf durch und gibt das berechnete Zahlenwertergebnis zurück.
// Rolls 2 d20 dice and keeps the value of the highest
const roll = roller . rollValue ( "2d20kh1" ) ;
// Prints out the numeric value result
console . log ( roll ) ;
Die roll
-Methode nimmt eine Würfelzeichenfolgeneingabe entgegen, analysiert sie, führt einen Wurf durch und gibt dann ein Objekt zurück, das den Wurf darstellt. Mithilfe der Roll-Objekte können Sie Ihre eigene Roll-Anzeigefunktion erstellen, anstatt nur den Endwert auszugeben.
// Rolls 2 d20 dice and keeps the value of the highest
const roll = roller . roll ( "2d20kh1" ) ;
// Print out the full roll breakdown
printDiceRoll ( roll ) ;
// Prints out the numeric value result
console . log ( `Final roll value: ${ roll . Value } ` ) ;
Weitere Einzelheiten zum zurückgegebenen Objekt finden Sie in der Rollergebnisausgabe im Abschnitt „Ausgabetypen“ weiter unten.
Die parse
Methode nimmt eine Dice-String-Eingabe entgegen, analysiert sie und gibt eine Darstellung der analysierten Eingabe zurück. Dies kann entweder verwendet werden, um einen Würfelwurf durchzuführen oder die ursprüngliche Eingabe wiederherzustellen. Die rollParsed
-Methode nimmt dieses analysierte Ergebnis als Eingabe, führt den Rollvorgang durch und gibt dieselbe Ausgabe wie die roll
-Methode zurück.
// Rolls 2 d20 dice and keeps the value of the highest
const parsedInput = roller . parse ( "2d20kh1" ) ;
// Print out a re-constructed input string
printParsedInput ( parsedInput ) ;
// Run the roller on the parsed object
const roll = roller . rollParsed ( parsedInput ) ;
// Print out the full roll breakdown
printDiceRoll ( roll ) ;
// Print out the numeric value result
console . log ( `Final roll value: ${ roll . Value } ` ) ;
Weitere Details zum zurückgegebenen Objekt finden Sie in der geparsten Roll-Ausgabe im Abschnitt „Ausgabetypen“ weiter unten.
DiscordRollRenderer
Die DiscordRollRenderer
-Klasse ist eine Beispiel-Renderer-Klasse, die eine gerollte Eingabe, die durch ein RollBase
-Objekt dargestellt wird, in einen String in einem mit Discord kompatiblen Markdown-Format rendert.
// Creates a new instance of the DiceRoller class
const renderer = new DiscordRollRenderer ( ) ;
Der DiscordRollRenderer
stellt eine einzelne render
mit einem einzigen Parameter, dem zu rendernden RollBase
Objekt, bereit und gibt die gerenderte Zeichenfolge zurück.
// Rolls 2 d20 dice and keeps the value of the highest
const roll = roller . rollValue ( "2d20kh1" ) ;
// Get the formatted string
const render = renderer . render ( roll ) ;
console . log ( render ) ;
Um diese Bibliothek zu entwickeln, klonen Sie einfach das Repository und führen Sie eine Installation aus:
npm install
Dann machen Sie einen Build:
npm run build
Dies bewirkt vier Dinge:
# Clean any existing builds
npm run clean
# Build the dice grammer
npx pegjs src/diceroll.pegjs
# Run tslint against the project
tslint -c tslint.json --project tsconfig.json
# Then run webpack to build and package everything up nicely
webpack
Um die Testsuite auszuführen, verwenden Sie:
npm run test
Das ist alles!
Die folgenden Objekttypen werden von der DiceRoller
-Klasse ausgegeben und stehen als Schnittstellen für TypeScript-Benutzer zur Verfügung.
Das von einem Rollergebnis zurückgegebene Objekt besteht aus den folgenden Typen.
RollBase
Die Basisklasse für alle Würfelwürfe, erweitert basierend auf der Type-Eigenschaft.
Eigentum | Typ | Beschreibung |
---|---|---|
Erfolg | boolean | War der Wurf ein Erfolg, für Zielzahlwürfe? Beispiel: 3d6 > 3 |
Typ | RollType | Der Rollentyp, den dieses Objekt darstellt. |
gültig | boolean | Ist die Rolle noch gültig und wird sie in die Berechnungen einbezogen? |
Wert | number | Der gewürfelte oder berechnete Wert dieses Wurfs. |
Etikett | string | Das Anzeigeetikett für diese Rolle. Diese Eigenschaft ist optional. |
Befehl | number | Eine Eigenschaft, die verwendet wird, um die Reihenfolge der Würfelwürfe innerhalb von Gruppen beizubehalten. |
RollType
Eine Aufzählung der gültigen Rollentypen. Die möglichen Werte sind:
"number"
"diceexpressionroll"
"expressionroll"
"mathfunction"
"grouproll"
"fate"
"die"
"roll"
"fateroll"
GroupedRoll
Eine für Würfelgruppen erweiterte Zwischenschnittstelle. Diese Schnittstelle erweitert RollBase
.
Eigentum | Typ | Beschreibung |
---|---|---|
Würfel | Array< RollBase > | Die in dieser Gruppe enthaltenen Rollen. |
DiceExpressionRoll
Eine Darstellung eines Würfelausdrucks. Diese Schnittstelle erweitert GroupedRoll
.
Beispiel
2d20 + 6d6
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "diceexpressionroll" | Der Rollentyp, den dieses Objekt darstellt. |
ops | Array< DiceGroupMathOperation > | Die an den Rollen auszuführenden Vorgänge. |
ExpressionRoll
Eine Darstellung eines mathematischen Ausdrucks. Diese Schnittstelle erweitert GroupedRoll
.
Beispiel
20 * 17
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "expressionroll" | Der Rollentyp, den dieses Objekt darstellt. |
ops | Array< MathOperation > | Die an den Rollen auszuführenden Vorgänge. |
MathFunctionRoll
Eine Darstellung einer mathematischen Funktion. Diese Schnittstelle erweitert RollBase
.
Beispiel
floor(20 / 17)
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "expressionfunc" | Der Rollentyp, den dieses Objekt darstellt. |
op | MathFunction | Die an den Rollen auszuführenden Vorgänge. |
Ausdruck | RollBase | Der Ausdruck, auf den die Funktion angewendet wird. |
GroupRoll
Eine Darstellung einer Gruppe von Rollen
Beispiel
{4d6,3d6}. Diese Schnittstelle erweitert
GroupedRoll
.
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "grouproll" | Der Rollentyp, den dieses Objekt darstellt. |
DiceRollResult
Das gewürfelte Ergebnis einer Würfelgruppe. Diese Schnittstelle erweitert RollBase
.
Beispiel
6d20
Eigentum | Typ | Beschreibung |
---|---|---|
sterben | RollBase | Der Würfel, den dieses Ergebnis darstellt. |
Typ | "die" | Der Rollentyp, den dieses Objekt darstellt. |
Rollen | DieRollBase [] | Jeder Würfelwurf. |
zählen | RollBase | Die Anzahl der Würfelwürfe. |
abgestimmt | boolean | Ob es sich hierbei um ein Spielergebnis handelt. |
DieRollBase
Eine Zwischenschnittstelle, die für einzelne Würfelwürfe erweitert wurde (siehe unten). Diese Schnittstelle erweitert RollBase
.
Eigentum | Typ | Beschreibung |
---|---|---|
rollen | number | Das gewürfelte Ergebnis des Würfels. |
abgestimmt | boolean | Ob diese Rolle passt. |
DieRoll
Ein Wurf mit einem normalen Würfel. Diese Schnittstelle erweitert DieRollBase
.
Beispiel
d20
Eigentum | Typ | Beschreibung |
---|---|---|
sterben | number | Die zu würfelnde Würfelzahl. |
Typ | "roll" | Der Rollentyp, den dieses Objekt darstellt. |
kritisch | CriticalType | Ob diese Rolle ein kritischer Erfolg oder Misserfolg ist (für das Rendern). |
FateDieRoll
Ein Wurf mit einem Schicksalswürfel. Diese Schnittstelle erweitert DieRollBase
.
Beispiel
dF
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "fateroll" | Der Rollentyp, den dieses Objekt darstellt. |
Die folgenden Schnittstellen werden von der Bibliothek als Neudarstellung der analysierten Eingabezeichenfolge bereitgestellt. Die Antwort der parse
Methode ist ein RootType
-Objekt und könnte eine der Schnittstellen sein, die es erweitern.
ParsedObjectType
Eine Aufzählung der gültigen Rollentypen. Die möglichen Werte sind:
"number"
"inline"
"success"
"failure"
"crit"
"critfail"
"match"
"keep"
"drop"
"group"
"diceExpression"
"sort"
"explode"
"compound"
"penetrate"
"reroll"
"rerollOnce"
"target"
"die"
"fate"
"expression"
"math"
"mathfunction"
ParsedType
Dies ist die Basisschnittstelle für alle analysierten Typen.
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | string | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
RootType
Dies ist die Basisschnittstelle für eine Teilmenge der analysierten Typen, also nur für diejenigen, die der Stammtyp sein können. Dieses Objekt erweitert die ParsedType
Schnittstelle.
Eigentum | Typ | Beschreibung |
---|---|---|
Etikett? | string | Das dieser Rolle beigefügte Textetikett. Diese Eigenschaft ist optional. |
Wurzel | boolean | Ein boolesches Flag, das angibt, ob dies die Wurzel des Analysebaums ist. |
NumberType
Dieses Objekt stellt eine einzelne Zahl in der Eingabe dar. Dieses Objekt erweitert die RootType
Schnittstelle.
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "number" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
Wert | number | Der Wert der Zahl. |
InlineExpression
Dieses Objekt stellt einen Inline-Würfelausdruck innerhalb einer Zeichenfolge dar, eingeschlossen in doppelte eckige Klammern. Dieses Objekt erweitert die RootType
Schnittstelle.
Beispiel
I want to roll [[2d20]] dice
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "inline" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
Ausdruck | Expression | Der Ausdruck, der als Inline-String analysiert wurde. |
AnyRoll
Ein kombinierter Typ, der einen beliebigen gültigen Wurf darstellt. Dies ist eine Kombination der folgenden Typen:
GroupedRoll
FullRoll
NumberType
ModGroupedRoll
Dieses Objekt stellt eine gruppierte Rolle mit einem optionalen Modifikator dar. Dieses Objekt erweitert die RootType
Schnittstelle.
Beispiel
{4d6+3d8}kh1
Eigentum | Typ | Beschreibung |
---|---|---|
Mods | Array< KeepDropModType , SuccessFailureModType > | Die Modifikatoren, die auf den gruppierten Wurf angewendet werden sollen. |
SuccessFailureCritModType
Ein Objekt, das einen Erfolgstestmodifikator darstellt. Dieses Objekt erweitert die ParsedType
Schnittstelle. Ein "success"
oder "failure"
-Modifikator wandelt das Ergebnis in ein Erfolgsergebnis um, das die Anzahl der Würfe zurückgibt, die das Ziel erreichen. Ein "crit"
oder "critfail"
-Modifikator prüft den Wurf darauf, ob der Wurf als kritischer Erfolg oder kritischer Misserfolg angezeigt werden soll.
Beispiel
Erfolg:
3d6>3
Fehlschlag:3d6f<3
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "success", "failure", "crit", "critfail" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
Mod | CompareOperation | Der für die Bedingung zu verwendende Prüftyp. |
Ausdruck | RollExpression | Ein Ausdruck, der die Erfolgsbedingung darstellt. |
SuccessFailureModType
Entspricht dem SuccessFailureCritModType
, unterstützt aber nur die Modifikatoren „success“ und „failure“. Dieses Objekt erweitert die SuccessFailureCritModType
Schnittstelle.
Beispiel
Erfolg:
3d6>3
Fehlschlag:3d6f<3
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "success", "failure" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
Mod | CompareOperation | Der für die Bedingung zu verwendende Prüftyp. |
Ausdruck | RollExpression | Ein Ausdruck, der die Erfolgsbedingung darstellt. |
MatchModType
Ein Objekt, das einen Match-Typ-Modifikator darstellt und zum Ändern der Anzeige der Würfelausgabe in roll20 verwendet wird. Dieses Objekt erweitert die ParsedType
Schnittstelle.
Beispiel
2d6m
Bei Verwendung mit der mt
Erweiterung wird die Anzahl der gefundenen Übereinstimmungen zurückgegeben.
Beispiel
20d6mt
Es können zusätzliche Argumente angegeben werden, die die erforderliche Anzahl von Übereinstimmungen erhöhen oder den Übereinstimmungen eine Einschränkung hinzufügen.
Beispiel
20d6mt3 counts matches of 3 items
Beispiel
20d6m>3 Only counts matches where the rolled value is > 3
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "match" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
min | NumberType | Die Mindestanzahl der zu akzeptierenden Übereinstimmungen. Diese Eigenschaft ist als NumberType standardmäßig auf 2 eingestellt. |
zählen | boolean | Ob die Spiele gezählt werden sollen oder nicht. |
Mod? | CompareOperation | Der für die Übereinstimmungsbedingung zu verwendende Prüftyp, sofern angegeben. Dieses Feld ist optional. |
Ausdruck? | RollExpression | Ein Ausdruck, der die Übereinstimmungsbedingung darstellt, falls angegeben. Dieses Feld ist optional. |
KeepDropModType
Ein Objekt, das einen Behalten- oder Fallenlassen-Modifikator darstellt und die Anzahl der Würfelwürfe angibt, die beibehalten oder fallengelassen werden sollen, entweder der höchste oder der niedrigste Würfelwurf. Dieses Objekt erweitert die ParsedType
Schnittstelle.
Beispiel
Behalten:
2d20kh1
Drop:2d20dl1
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "keep", "drop" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
highlow | HighLowType | Ob der höchste oder der niedrigste Wurf behalten/fallen gelassen werden soll. |
Ausdruck | RollExpression | Ein Ausdruck, der die Anzahl der zu behaltenden/zu löschenden Würfe darstellt. Diese Eigenschaft ist als NumberType standardmäßig auf 1 eingestellt. Beispiel: 2d6 |
GroupedRoll
Dieses Objekt stellt eine Gruppe kombinierter Rollen mit optionalen Modifikatoren dar. Dieses Objekt erweitert die ModGroupedRoll
Schnittstelle.
Beispiel
{2d6,3d6}
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "group" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
Rollen | Array< RollExpression > | Die in dieser Gruppe enthaltene Rollengruppe. |
RollExpressionType
Ein Objekt, das einen Rollenausdruck einschließlich komplexer Rollen und Gruppen darstellt, lässt nur Additionsoperationen zu. Dieses Objekt erweitert die RootType
Schnittstelle.
Beispiel
{2d6,3d6}kh1 + {3d6 + 2d6}kh2
Eigentum | Typ | Beschreibung |
---|---|---|
Kopf | RollOrExpression | Der anfängliche Wurf oder Ausdruck für den Wurfausdruck. |
Typ | "diceExpression" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
ops | Array< MathType < RollOrExpression , DiceGroupMathOperation >> | Die Operationen, die auf den ersten Wurf oder Ausdruck angewendet werden sollen. |
RollExpression
Eine Hilfstypkombination aus einem komplexen Rollausdruck, einem Roll oder einem mathematischen Ausdruck. Stellt die folgenden Typen dar:
RollExpressionType
RollOrExpression
RollOrExpression
Eine Hilfstypkombination aus einem Wurf oder einem mathematischen Ausdruck. Stellt die folgenden Typen dar:
FullRoll
Expression
FullRoll
Ein Objekt, das einen Wurf darstellt, einschließlich des Würfelwurfs und etwaiger Modifikatoren. Dieses Objekt erweitert die DiceRoll
Schnittstelle.
Beispiel
2d6kh1
Eigentum | Typ | Beschreibung |
---|---|---|
Mods? | Array< ReRollMod , KeepDropModType > | Alle mit dem Wurf verbundenen Modifikatoren. Diese Eigenschaft ist optional. |
Ziele? | Array< SuccessFailureCritModType > | Alle Erfolgs- oder Misserfolgsziele für den Wurf. Diese Eigenschaft ist optional. |
übereinstimmen? | MatchModTyp | Alle Match-Modifikatoren für den Wurf. Diese Eigenschaft ist optional. |
Sortieren? | SortRollType | Alle Sortiervorgänge, die auf die Rolle angewendet werden sollen. Diese Eigenschaft ist optional. |
SortRollType
Ein Sortiervorgang, der auf eine Rolle angewendet werden soll. Dieses Objekt erweitert die ParsedType
Schnittstelle.
Beispiel
10d6sa
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "sort" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
aufsteigend | boolean | Ob aufsteigend oder absteigend sortiert werden soll. |
ReRollMod
Ein Objekt, das einen erneuten Wurfvorgang darstellt, der auf einen Wurf angewendet werden soll. Kann einer der folgenden Typen sein:
"explode"
: würfelt alle Würfel, die das Ziel erreichen, erneut und fährt fort, wenn der neue Wurf übereinstimmt"compound"
: Alle Würfel, die das Ziel erreichen, werden erneut gewürfelt. Wenn der neue Wurf übereinstimmt, werden die Ergebnisse zu einem einzigen Wurf addiert"penetrate"
: Alle Würfel, die das Ziel erreichen, werden erneut gewürfelt, wobei 1 vom neuen Wert abgezogen wird. Wird fortgefahren, wenn der neue Wurf übereinstimmt"reroll"
: würfelt erneut, solange er das Ziel erreicht, wobei der letzte Wurf beibehalten wird"rerollOnce"
: würfelt einen Würfel einmal erneut, wenn er das Ziel erreicht, und behält den neuen Wurf beiBeispiel
2d6!
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "explode", "compound", "penetrate", "reroll", "rerollOnce" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
Ziel | TargetMod | Der Zielmodifikator, mit dem der Rollwert verglichen werden soll. |
TargetMod
Ein Objekt, das einen Zielmodifikator darstellt, der auf einen Wurf angewendet werden soll. Dieses Objekt erweitert die ParsedType
Schnittstelle.
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "target" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
Mod | CompareOperation | Der für die Bedingung zu verwendende Prüftyp. |
Wert | RollExpr | Ein Ausdruck, der den Zielbedingungswert darstellt. |
DiceRoll
Die Darstellung eines Würfelwurfs. Dieses Objekt erweitert die RootType
Schnittstelle.
Beispiel
2d6
Eigentum | Typ | Beschreibung |
---|---|---|
sterben | RollExpr , FateExpr | Der Würfelwert, gegen den gewürfelt wird, kann ein Schicksalswürfel, eine Zahl oder ein komplexer Wurfausdruck sein. |
zählen | RollExpr | Die Anzahl der Würfe dieses Würfels. |
Typ | "die" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
FateExpr
Die Darstellung eines Schicksalswürfelwurfs. Dieses Objekt erweitert die ParsedType
Schnittstelle.
Beispiel
2dF
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "fate" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
RollExpr
Eine Hilfstypkombination aus einer Zahl oder einem Wert, die kein Ausdruck ist. Stellt die folgenden Typen dar:
MathExpression
NumberType
Expression
Eine Hilfstypkombination von Ausdruckstypen. Stellt die folgenden Typen dar:
InlineExpression
MathExpression
MathExpression
Ein mathematischer Ausdruck zwischen zwei oder mehr Würfelwürfen. Dieses Objekt erweitert die RootType
Schnittstelle.
Beispiel
2d6 + 3d6 * 4d6
Eigentum | Typ | Beschreibung |
---|---|---|
Kopf | AnyRoll | Der erste Wurf, gegen den Operationen durchgeführt werden. |
Typ | "expression" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
ops | Array< MathType < AnyRoll >> | Die Vorgänge, die auf den ersten Wurf angewendet werden sollen. |
MathType
Ein Objekt, das eine anzuwendende Roll-Mathe-Operation und den Wert darstellt, auf den sie angewendet werden soll. Dieses Objekt erweitert die ParsedType
Schnittstelle. Die Schnittstelle für dieses Objekt verwendet einen Vorlagentyp TailType
, der den Typ des zweiten Werts angibt, der in der Operation verwendet wird. Es gibt einen zweiten Vorlagentyp OpValues
, der die Art der Operationen angibt, die verwendet werden können. Der Standardwert ist Array<
MathOperation
>`.
Beispiel
+ 3d6 (as part of 2d6 + 3d6)
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "math" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
op | OpValues | Die auszuführende mathematische Operation. |
Schwanz | TailType | Der zweite Wert, der in der Operation verwendet werden soll. |
MathFunctionExpression
Ein Objekt, das eine anzuwendende mathematische Funktion und den Ausdruck darstellt, auf den sie angewendet werden soll. Dieses Objekt erweitert die RootType
Schnittstelle.
Beispiel
floor(3d6 / 2d4)
Eigentum | Typ | Beschreibung |
---|---|---|
Typ | "mathfunction" | Der Typ des analysierten Elements, das dieses Objekt darstellt. |
op | MathFunction | Die anzuwendende Funktion. |
Ausdruck | AnyRoll | Der Ausdruck, auf den die Funktion angewendet werden soll. |
Die folgenden Unterstützungstypen werden von den oben genannten Schnittstellen verwendet.
DiceGroupMathOperation
Ein Hilfstyp, der die gültigen Operationen für eine mathematische Operation für eine Gruppe von Würfeln darstellt.
"+" | "-"
MathOperation
Ein Hilfstyp, der die gültigen Operationen für eine mathematische Operation darstellt.
"+" | "-" | "*" | "/" | "%" | "**"
MathFunction
Ein Hilfstyp, der die gültigen Operationen für eine mathematische Operation darstellt.
"floor" | "ceil" | "round" | "abs"
CriticalType
Ein Hilfstyp, der verwendet wird, wenn ein Wurf als kritischer Erfolg oder Misserfolg markiert wird.
"success" | "failure" | null
CompareOperation
Ein Hilfstyp für die verfügbaren Vorgänge für einen Vergleichspunkt.
">" | "<" | "="
HighLowType
Ein Hilfstyp, der verwendet wird, um zu bestimmen, welche Würfe behalten oder fallen gelassen werden sollen.
"h" | "l" | null