ลูกกลิ้งลูกเต๋านี้เป็นตัวแยกวิเคราะห์สตริงที่ส่งคืนอ็อบเจ็กต์ที่มีส่วนประกอบของการทอยลูกเต๋า รองรับข้อกำหนดลูกเต๋า Roll20 เต็มรูปแบบ ใช้ไวยากรณ์ pegjs เพื่อสร้างการแสดงรูปแบบการทอยลูกเต๋า จากนั้นสามารถแปลงเป็นค่าตัวเลขอย่างง่าย หรือเป็นวัตถุที่ซับซ้อนซึ่งใช้เพื่อแสดงรายละเอียดม้วนทั้งหมด
นี่เป็นทางแยกของโครงการ dice_roller ของ Ben Morton มีข้อบกพร่องเล็กน้อย ดังนั้นฉันจึงเผยแพร่อีกครั้งพร้อมการแก้ไขและฟีเจอร์ที่จำเป็นสำหรับโครงการของฉัน
ติดตั้งไลบรารีโดยใช้:
npm install dice-roller-parser
เมื่อติดตั้งแล้ว เพียงโหลดไลบรารีไม่ว่าจะในเบราว์เซอร์:
< script src =" node_modules/dice-roller-parser/dist/index.js " > </ script >
หรือในโหนด:
import { DiceRoller } from "dice-roller-parser" ;
จากนั้นสร้างอินสแตนซ์ใหม่ของคลาส DiceRoller
และใช้มันเพื่อทอยลูกเต๋า
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 ) ;
ไลบรารีนี้แสดงสองคลาส ได้แก่ DiceRoller
และ DiscordRollRenderer
DiceRoller
คลาส DiceRoller
จัดการการแยกวิเคราะห์สตริงลูกเต๋าและดำเนินการทอยตามผลลัพธ์
// Creates a new instance of the DiceRoller class
const roller = new DiceRoller ( ) ;
ตัวสร้างเริ่มต้นใช้ Math.random
และใช้จำนวนม้วนสูงสุดต่อแม่พิมพ์ 1,000 ตัว สิ่งเหล่านี้สามารถระบุได้โดยใช้ตัวสร้างโอเวอร์โหลดต่อไปนี้
DiceRoller(GeneratorFunction)
คุณสามารถระบุฟังก์ชันที่จะใช้เป็นตัวสร้างตัวเลขสุ่มโดยลูกกลิ้งลูกเต๋า ฟังก์ชันนี้ควรเป็นประเภท () => number
และส่งกลับตัวเลขระหว่าง 0 ถึง 1 ตามค่าเริ่มต้น จะใช้เมธอด Math.random
ในตัว
// 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 ) ;
ซึ่งสามารถอ่านหรือแก้ไขได้โดยใช้คุณสมบัติ randFunction
roller . randFunction = ( ) => 0.5 ;
DiceRoller(GeneratorFunction, MaxRollsPerDie)
เพื่อป้องกันการพยายามแยกวิเคราะห์ม้วนแม่พิมพ์จำนวนมาก สามารถระบุจำนวนม้วนสูงสุดสำหรับแม่พิมพ์ได้ ค่าเริ่มต้นตั้งไว้ที่ 1,000
// 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 ) ;
ซึ่งสามารถอ่านหรือแก้ไขได้โดยใช้คุณสมบัติ maxRollCount
roller . maxRollCount = 75 ;
เมื่อคลาส DiceRoller
ถูกสร้างขึ้นแล้ว จะมีสามตัวเลือกสำหรับการทอยลูกเต๋า:
เมธอด rollValue
รับอินพุตสตริงลูกเต๋า แยกวิเคราะห์ ทำการทอย และส่งกลับผลลัพธ์ค่าตัวเลขที่คำนวณได้
// 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 ) ;
วิธี roll
ใช้อินพุตสตริงลูกเต๋า แยกวิเคราะห์ ทำการม้วน จากนั้นส่งคืนออบเจ็กต์ที่แสดงถึงการม้วน การใช้ออบเจ็กต์ม้วน คุณสามารถสร้างฟังก์ชันการแสดงม้วนของคุณเอง แทนที่จะส่งออกเพียงค่าสุดท้าย
// 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 } ` ) ;
ดูผลลัพธ์ผลลัพธ์ม้วนในส่วนประเภทผลลัพธ์ด้านล่างสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับออบเจ็กต์ที่ส่งคืน
วิธี parse
รับอินพุตสตริงลูกเต๋า แยกวิเคราะห์ และส่งกลับค่าตัวแทนของอินพุตที่แยกวิเคราะห์ สามารถใช้ในการทอยลูกเต๋าหรือสร้างอินพุตดั้งเดิมขึ้นมาใหม่ เมธอด rollParsed
ใช้ผลลัพธ์ที่แยกวิเคราะห์นี้เป็นอินพุต ดำเนินการม้วน และส่งกลับเอาต์พุตเดียวกันกับจากวิธี roll
// 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 } ` ) ;
ดูเอาต์พุตม้วนแยกวิเคราะห์ในส่วนประเภทเอาต์พุตด้านล่างสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับออบเจ็กต์ที่ส่งคืน
DiscordRollRenderer
คลาส DiscordRollRenderer
เป็นคลาสตัวเรนเดอร์ตัวอย่างที่รับอินพุตแบบม้วนที่แสดงโดยออบเจ็กต์ RollBase
และเรนเดอร์เป็นสตริงในรูปแบบมาร์กดาวน์ ซึ่งเข้ากันได้กับ Discord
// Creates a new instance of the DiceRoller class
const renderer = new DiscordRollRenderer ( ) ;
DiscordRollRenderer
เปิดเผยวิธี render
เดี่ยวด้วยพารามิเตอร์เดียว นั่นคือออบเจ็กต์ RollBase
ที่จะเรนเดอร์ และส่งกลับสตริงที่เรนเดอร์
// 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 ) ;
หากต้องการพัฒนาไลบรารีนี้ เพียงโคลนพื้นที่เก็บข้อมูล รันการติดตั้ง:
npm install
จากนั้นทำการสร้าง:
npm run build
สิ่งนี้ทำสี่สิ่ง:
# 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
หากต้องการรันชุดทดสอบ ให้ใช้:
npm run test
นั่นคือทั้งหมดที่มีให้!
ประเภทอ็อบเจ็กต์ต่อไปนี้เอาต์พุตจากคลาส DiceRoller
และพร้อมใช้งานเป็นอินเทอร์เฟซสำหรับผู้ใช้ typescript
ออบเจ็กต์ที่ส่งคืนโดยผลลัพธ์การม้วนประกอบด้วยประเภทต่อไปนี้
RollBase
คลาสพื้นฐานสำหรับลูกกลิ้งแม่พิมพ์ทั้งหมด ขยายตามคุณสมบัติประเภท
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
ความสำเร็จ | boolean | การทอยสำเร็จหรือไม่สำหรับทอยหมายเลขเป้าหมาย ตัวอย่าง: 3d6 > 3 |
พิมพ์ | RollType | ประเภทของม้วนที่วัตถุนี้เป็นตัวแทน |
ถูกต้อง | boolean | ม้วนยังคงใช้ได้และรวมอยู่ในการคำนวณหรือไม่ |
ค่า | number | ค่ารีดหรือคำนวณของม้วนนี้ |
ฉลาก | string | ป้ายแสดงผลสำหรับม้วนนี้ คุณสมบัตินี้เป็นทางเลือก |
คำสั่ง | number | คุณสมบัติที่ใช้เพื่อรักษาลำดับการทอยลูกเต๋าภายในกลุ่ม |
RollType
แจงนับของประเภทม้วนที่ถูกต้อง ค่าที่เป็นไปได้คือ:
"number"
"diceexpressionroll"
"expressionroll"
"mathfunction"
"grouproll"
"fate"
"die"
"roll"
"fateroll"
GroupedRoll
อินเทอร์เฟซระดับกลางขยายสำหรับกลุ่มลูกเต๋า อินเทอร์เฟซนี้ขยาย RollBase
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
ลูกเต๋า | Array< RollBase > | ม้วนที่รวมเป็นส่วนหนึ่งของกลุ่มนี้ |
DiceExpressionRoll
การแสดงการแสดงออกของลูกเต๋า อินเทอร์เฟซนี้ขยาย GroupedRoll
ตัวอย่าง
2d20 + 6d6
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "diceexpressionroll" | ประเภทของม้วนที่วัตถุนี้เป็นตัวแทน |
ปฏิบัติการ | Array< DiceGroupMathOperation > | การดำเนินการที่จะดำเนินการบนม้วน |
ExpressionRoll
การแสดงนิพจน์ทางคณิตศาสตร์ อินเทอร์เฟซนี้ขยาย GroupedRoll
ตัวอย่าง
20 * 17
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "expressionroll" | ประเภทของม้วนที่วัตถุนี้เป็นตัวแทน |
ปฏิบัติการ | Array< MathOperation > | การดำเนินการที่จะดำเนินการบนม้วน |
MathFunctionRoll
การแสดงฟังก์ชันทางคณิตศาสตร์ อินเทอร์เฟซนี้ขยาย RollBase
ตัวอย่าง
floor(20 / 17)
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "expressionfunc" | ประเภทของม้วนที่วัตถุนี้เป็นตัวแทน |
ปฏิบัติการ | MathFunction | การดำเนินการที่จะดำเนินการบนม้วน |
หมดอายุ | RollBase | นิพจน์ที่ฟังก์ชันถูกนำไปใช้ |
GroupRoll
เป็นตัวแทนของกลุ่มม้วน
ตัวอย่าง
{4d6,3d6}. อินเทอร์เฟซนี้ขยาย
GroupedRoll
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "grouproll" | ประเภทของม้วนที่วัตถุนี้เป็นตัวแทน |
DiceRollResult
ผลการทอยลูกเต๋าเป็นกลุ่ม อินเทอร์เฟซนี้ขยาย RollBase
ตัวอย่าง
6d20
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
ตาย | RollBase | ค่าตายที่ผลลัพธ์นี้แสดงถึง |
พิมพ์ | "die" | ประเภทของม้วนที่วัตถุนี้เป็นตัวแทน |
ม้วน | DieRollBase [] | แต่ละม้วนของตาย |
นับ | RollBase | จำนวนม้วนของแม่พิมพ์ |
จับคู่ | boolean | ไม่ว่าจะเป็นผลการแข่งขัน |
DieRollBase
ส่วนต่อประสานระดับกลางขยายสำหรับลูกกลิ้งแม่พิมพ์แต่ละอัน (ดูด้านล่าง) อินเทอร์เฟซนี้ขยาย RollBase
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
ม้วน | number | ผลการรีดของการตาย |
จับคู่ | boolean | ไม่ว่าม้วนนี้จะเข้ากันก็ตาม |
DieRoll
ทอยลูกเต๋าธรรมดา อินเทอร์เฟซนี้ขยาย DieRollBase
ตัวอย่าง
d20
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
ตาย | number | หมายเลขลูกเต๋าที่จะทอย |
พิมพ์ | "roll" | ประเภทของม้วนที่วัตถุนี้เป็นตัวแทน |
วิกฤต | CriticalType | หากบทบาทนี้เป็นความสำเร็จหรือความล้มเหลวที่สำคัญ (สำหรับการเรนเดอร์) |
FateDieRoll
โชคชะตาพลิกผันตาย อินเทอร์เฟซนี้ขยาย DieRollBase
ตัวอย่าง
dF
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "fateroll" | ประเภทของม้วนที่วัตถุนี้เป็นตัวแทน |
อินเทอร์เฟซต่อไปนี้ถูกเปิดเผยโดยไลบรารีเป็นการเป็นตัวแทนใหม่ของสตริงอินพุตที่แยกวิเคราะห์ การตอบสนองจากวิธี parse
เป็นวัตถุ RootType
และอาจเป็นอินเทอร์เฟซใดๆ ที่ขยายได้
ParsedObjectType
แจงนับของประเภทม้วนที่ถูกต้อง ค่าที่เป็นไปได้คือ:
"number"
"inline"
"success"
"failure"
"crit"
"critfail"
"match"
"keep"
"drop"
"group"
"diceExpression"
"sort"
"explode"
"compound"
"penetrate"
"reroll"
"rerollOnce"
"target"
"die"
"fate"
"expression"
"math"
"mathfunction"
ParsedType
นี่คืออินเทอร์เฟซพื้นฐานสำหรับทุกประเภทที่แยกวิเคราะห์
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | string | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
RootType
นี่คืออินเทอร์เฟซพื้นฐานสำหรับชุดย่อยของประเภทการแยกวิเคราะห์ เฉพาะที่สามารถเป็นประเภทรูทได้ วัตถุนี้ขยายอินเทอร์เฟซ ParsedType
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
ฉลาก? | string | ป้ายข้อความที่แนบมากับม้วนนี้ คุณสมบัตินี้เป็นทางเลือก |
ราก | boolean | ธงบูลีนเพื่อระบุว่านี่คือรากของแผนผังการแยกวิเคราะห์หรือไม่ |
NumberType
วัตถุนี้แสดงถึงตัวเลขเดียวในอินพุต วัตถุนี้ขยายอินเทอร์เฟซ RootType
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "number" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
ค่า | number | ค่าของตัวเลข |
InlineExpression
ออบเจ็กต์นี้แสดงถึงนิพจน์ลูกเต๋าแบบอินไลน์ภายในสตริง ซึ่งอยู่ในวงเล็บเหลี่ยมคู่ วัตถุนี้ขยายอินเทอร์เฟซ RootType
ตัวอย่าง
I want to roll [[2d20]] dice
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "inline" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
หมดอายุ | Expression | นิพจน์ที่ถูกแยกวิเคราะห์เป็นสตริงแบบอินไลน์ |
AnyRoll
ประเภทรวมที่แสดงถึงการม้วนที่ถูกต้อง นี่คือการรวมกันของประเภทต่อไปนี้:
GroupedRoll
FullRoll
NumberType
ModGroupedRoll
วัตถุนี้แสดงถึงม้วนที่จัดกลุ่มพร้อมกับตัวแก้ไขเพิ่มเติม วัตถุนี้ขยายอินเทอร์เฟซ RootType
ตัวอย่าง
{4d6+3d8}kh1
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
ม็อด | Array< KeepDropModType , SuccessFailureModType > | ตัวแก้ไขที่จะใช้กับม้วนที่จัดกลุ่ม |
SuccessFailureCritModType
ออบเจ็กต์ที่แสดงถึงตัวแก้ไขการทดสอบความสำเร็จ วัตถุนี้ขยายอินเทอร์เฟซ ParsedType
ตัวแก้ไข "success"
หรือ "failure"
จะแปลงผลลัพธ์เป็นผลลัพธ์ประเภทความสำเร็จซึ่งส่งคืนจำนวนม้วนที่ตรงตามเป้าหมาย ตัวปรับค่า "crit"
หรือ "critfail"
จะทดสอบการหมุนว่าควรแสดงการม้วนเป็นความสำเร็จขั้นวิกฤตหรือความล้มเหลวขั้นวิกฤติ
ตัวอย่าง
สำเร็จ:
3d6>3
ล้มเหลว:3d6f<3
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "success", "failure", "crit", "critfail" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
ม็อด | CompareOperation | ประเภทเช็คที่จะใช้สำหรับเงื่อนไข |
หมดอายุ | RollExpression | การแสดงออกที่แสดงถึงเงื่อนไขความสำเร็จ |
SuccessFailureModType
เทียบเท่ากับ SuccessFailureCritModType
แต่รองรับเฉพาะตัวแก้ไข "success" และ "failure" เท่านั้น วัตถุนี้ขยายอินเทอร์เฟซ SuccessFailureCritModType
ตัวอย่าง
สำเร็จ:
3d6>3
ล้มเหลว:3d6f<3
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "success", "failure" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
ม็อด | CompareOperation | ประเภทเช็คที่จะใช้สำหรับเงื่อนไข |
หมดอายุ | RollExpression | การแสดงออกที่แสดงถึงเงื่อนไขความสำเร็จ |
MatchModType
ออบเจ็กต์ที่แสดงตัวแก้ไขประเภทการจับคู่ ใช้เพื่อแก้ไขการแสดงผลเอาต์พุตลูกเต๋าใน roll20 วัตถุนี้ขยายอินเทอร์เฟซ ParsedType
ตัวอย่าง
2d6m
เมื่อใช้ร่วมกับส่วนขยาย mt
จะส่งคืนจำนวนรายการที่ตรงกันที่พบ
ตัวอย่าง
20d6mt
สามารถระบุอาร์กิวเมนต์เพิ่มเติมเพื่อเพิ่มจำนวนการแข่งขันที่ต้องการหรือเพื่อเพิ่มข้อจำกัดในการจับคู่
ตัวอย่าง
20d6mt3 counts matches of 3 items
ตัวอย่าง
20d6m>3 Only counts matches where the rolled value is > 3
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "match" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
นาที | NumberType | จำนวนการแข่งขันขั้นต่ำที่จะยอมรับ คุณสมบัตินี้มีค่าเริ่มต้นเป็น 2 เป็น NumberType |
นับ | boolean | ไม่ว่าจะนับการแข่งขันหรือไม่ |
ม็อด? | CompareOperation | ประเภทเช็คที่จะใช้สำหรับเงื่อนไขการจับคู่ หากระบุ ฟิลด์นี้เป็นทางเลือก |
หมดอายุ? | RollExpression | นิพจน์ที่แสดงถึงเงื่อนไขการจับคู่ หากมีการระบุ ฟิลด์นี้เป็นทางเลือก |
KeepDropModType
อ็อบเจ็กต์ที่แสดงถึงตัวแก้ไขการเก็บหรือดรอป โดยระบุจำนวนการทอยลูกเต๋าที่จะเก็บหรือดรอป ไม่ว่าจะเป็นการทอยสูงสุดหรือต่ำสุด วัตถุนี้ขยายอินเทอร์เฟซ ParsedType
ตัวอย่าง
เก็บ:
2d20kh1
ลดลง:2d20dl1
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "keep", "drop" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
ไฮโล | HighLowType | ไม่ว่าจะเก็บ/วางม้วนสูงสุดหรือต่ำสุด |
หมดอายุ | RollExpression | นิพจน์ที่แสดงถึงจำนวนม้วนที่จะเก็บ/วาง คุณสมบัตินี้มีค่าเริ่มต้นเป็น 1 เป็น NumberType ตัวอย่าง: 2d6 |
GroupedRoll
ออบเจ็กต์นี้แสดงถึงกลุ่มของม้วนที่รวมกัน โดยมีตัวแก้ไขเพิ่มเติม วัตถุนี้ขยายอินเทอร์เฟซ ModGroupedRoll
ตัวอย่าง
{2d6,3d6}
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "group" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
ม้วน | Array< RollExpression > | กลุ่มม้วนที่รวมอยู่ในกลุ่มนี้ |
RollExpressionType
ออบเจ็กต์ที่แสดงถึงนิพจน์การม้วนซึ่งรวมถึงการม้วนและกลุ่มที่ซับซ้อน อนุญาตเฉพาะการดำเนินการเพิ่มเติมเท่านั้น วัตถุนี้ขยายอินเทอร์เฟซ RootType
ตัวอย่าง
{2d6,3d6}kh1 + {3d6 + 2d6}kh2
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
ศีรษะ | RollOrExpression | ม้วนหรือนิพจน์เริ่มต้นสำหรับนิพจน์ม้วน |
พิมพ์ | "diceExpression" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
ปฏิบัติการ | Array< MathType < RollOrExpression , DiceGroupMathOperation >> | การดำเนินการที่จะใช้กับม้วนหรือนิพจน์เริ่มต้น |
RollExpression
การรวมประเภทตัวช่วยของนิพจน์การทอยที่ซับซ้อน การทอย หรือนิพจน์ทางคณิตศาสตร์ แสดงถึงประเภทต่อไปนี้:
RollExpressionType
RollOrExpression
RollOrExpression
การรวมประเภทตัวช่วยของการม้วนหรือนิพจน์ทางคณิตศาสตร์ แสดงถึงประเภทต่อไปนี้:
FullRoll
Expression
FullRoll
วัตถุที่แสดงถึงการทอย รวมถึงทอยลูกเต๋า และตัวปรับแต่งใดๆ วัตถุนี้ขยายอินเทอร์เฟซ DiceRoll
ตัวอย่าง
2d6kh1
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
ม็อด? | Array< ReRollMod , KeepDropModType > | ตัวดัดแปลงใด ๆ ที่แนบมากับม้วน คุณสมบัตินี้เป็นทางเลือก |
เป้าหมาย? | Array< SuccessFailureCritModType > | เป้าหมายสำเร็จหรือล้มเหลวสำหรับการหมุน คุณสมบัตินี้เป็นทางเลือก |
จับคู่? | MatchModTyp | ตัวปรับแต่งการจับคู่ใดๆ สำหรับการทอย คุณสมบัตินี้เป็นทางเลือก |
เรียงลำดับ? | SortRollType | การดำเนินการเรียงลำดับใดๆ ที่จะนำไปใช้กับม้วน คุณสมบัตินี้เป็นทางเลือก |
SortRollType
การดำเนินการเรียงลำดับเพื่อนำไปใช้กับม้วน วัตถุนี้ขยายอินเทอร์เฟซ ParsedType
ตัวอย่าง
10d6sa
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "sort" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
asc | boolean | ไม่ว่าจะเรียงลำดับจากน้อยไปหามากหรือมากไปหาน้อย |
ReRollMod
ออบเจ็กต์ที่แสดงถึงการดำเนินการม้วนซ้ำเพื่อนำไปใช้กับม้วน สามารถเป็นประเภทใดประเภทหนึ่งต่อไปนี้:
"explode"
: ทอยลูกเต๋าซ้ำอีกครั้งที่ตรงตามเป้าหมาย และดำเนินการต่อหากทอยใหม่ตรงกัน"compound"
: ทอยลูกเต๋าใด ๆ ที่ตรงเป้าหมายอีกครั้ง ดำเนินการต่อหากทอยใหม่ตรงกันและเพิ่มผลลัพธ์ลงในทอยเดียว"penetrate"
: ทอยลูกเต๋าใด ๆ ที่ตรงกับเป้าหมายลบ 1 จากค่าใหม่ ดำเนินการต่อหากทอยใหม่ตรงกัน"reroll"
: ทอยลูกเต๋าซ้ำตราบใดที่มันเข้าเป้า โดยคงทอยสุดท้ายไว้"rerollOnce"
: ทอยลูกเต๋าซ้ำหนึ่งครั้งหากถึงเป้าหมาย โดยคงทอยใหม่ไว้ตัวอย่าง
2d6!
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "explode", "compound", "penetrate", "reroll", "rerollOnce" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
เป้า | TargetMod | ตัวแก้ไขเป้าหมายเพื่อเปรียบเทียบค่าการหมุนด้วย |
TargetMod
วัตถุที่วางตัวดัดแปลงเป้าหมายเพื่อใช้กับม้วน วัตถุนี้ขยายอินเทอร์เฟซ ParsedType
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "target" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
ม็อด | CompareOperation | ประเภทเช็คที่จะใช้สำหรับเงื่อนไข |
ค่า | RollExpr | นิพจน์ที่แสดงถึงค่าเงื่อนไขเป้าหมาย |
DiceRoll
การเป็นตัวแทนของม้วนแม่พิมพ์ วัตถุนี้ขยายอินเทอร์เฟซ RootType
ตัวอย่าง
2d6
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
ตาย | RollExpr , FateExpr | ค่าลูกเต๋าที่จะทอยต้าน อาจเป็นโชคชะตาทอย ตัวเลข หรือนิพจน์ทอยที่ซับซ้อน |
นับ | RollExpr | จำนวนเวลาในการทอยลูกเต๋านี้ |
พิมพ์ | "die" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
FateExpr
การเป็นตัวแทนของทอยทอยแห่งโชคชะตา วัตถุนี้ขยายอินเทอร์เฟซ ParsedType
ตัวอย่าง
2dF
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "fate" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
RollExpr
การรวมประเภทตัวช่วยของตัวเลขหรือค่าที่ไม่ใช่นิพจน์ แสดงถึงประเภทต่อไปนี้:
MathExpression
NumberType
Expression
การรวมประเภทตัวช่วยของประเภทนิพจน์ แสดงถึงประเภทต่อไปนี้:
InlineExpression
MathExpression
MathExpression
นิพจน์ประเภทคณิตศาสตร์ระหว่างการทอยลูกเต๋าสองลูกขึ้นไป วัตถุนี้ขยายอินเทอร์เฟซ RootType
ตัวอย่าง
2d6 + 3d6 * 4d6
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
ศีรษะ | AnyRoll | ม้วนเริ่มแรกเพื่อดำเนินการต่อต้าน |
พิมพ์ | "expression" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
ปฏิบัติการ | Array< MathType < AnyRoll >> | การดำเนินการเพื่อนำไปใช้กับม้วนเริ่มต้น |
MathType
ออบเจ็กต์ที่แสดงถึงการดำเนินการทางคณิตศาสตร์แบบม้วนที่จะนำไปใช้และค่าที่จะนำไปใช้ วัตถุนี้ขยายอินเทอร์เฟซ ParsedType
อินเทอร์เฟซสำหรับออบเจ็กต์นี้ใช้ TailType
ประเภทเทมเพลตซึ่งระบุประเภทของค่าที่สองที่ใช้ในการดำเนินการ มี OpValues
ประเภทเทมเพลตที่สองซึ่งระบุประเภทของการดำเนินการที่สามารถใช้ได้ ค่าเริ่มต้นนี้เป็น Array<
MathOperation
>`
ตัวอย่าง
+ 3d6 (as part of 2d6 + 3d6)
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "math" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
ปฏิบัติการ | OpValues | การดำเนินการทางคณิตศาสตร์ที่จะดำเนินการ |
หาง | TailType | ค่าที่สองที่จะใช้ในการดำเนินการ |
MathFunctionExpression
วัตถุที่แสดงถึงฟังก์ชันทางคณิตศาสตร์ที่จะนำไปใช้และนิพจน์ที่จะใช้กับฟังก์ชันดังกล่าว วัตถุนี้ขยายอินเทอร์เฟซ RootType
ตัวอย่าง
floor(3d6 / 2d4)
คุณสมบัติ | พิมพ์ | คำอธิบาย |
---|---|---|
พิมพ์ | "mathfunction" | ประเภทของรายการที่แยกวิเคราะห์ที่ออบเจ็กต์นี้เป็นตัวแทน |
ปฏิบัติการ | MathFunction | ฟังก์ชั่นที่จะนำไปใช้ |
หมดอายุ | AnyRoll | นิพจน์ที่จะใช้ฟังก์ชันกับ |
ต่อไปนี้เป็นประเภทการสนับสนุนที่ใช้โดยอินเทอร์เฟซด้านบน
DiceGroupMathOperation
ประเภทตัวช่วยที่แสดงถึงการดำเนินการที่ถูกต้องสำหรับการดำเนินการทางคณิตศาสตร์กับกลุ่มลูกเต๋า
"+" | "-"
MathOperation
ประเภทตัวช่วยที่แสดงถึงการดำเนินการที่ถูกต้องสำหรับการดำเนินการทางคณิตศาสตร์
"+" | "-" | "*" | "/" | "%" | "**"
MathFunction
ประเภทตัวช่วยที่แสดงถึงการดำเนินการที่ถูกต้องสำหรับการดำเนินการทางคณิตศาสตร์
"floor" | "ceil" | "round" | "abs"
CriticalType
ประเภทตัวช่วยที่ใช้เมื่อทำเครื่องหมายม้วนว่าสำเร็จหรือล้มเหลวขั้นวิกฤต
"success" | "failure" | null
CompareOperation
ประเภทตัวช่วยสำหรับการดำเนินการที่มีอยู่สำหรับจุดเปรียบเทียบ
">" | "<" | "="
HighLowType
ประเภทตัวช่วยที่ใช้ในการกำหนดม้วนที่จะเก็บหรือวาง
"h" | "l" | null