aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/parser.rs
diff options
context:
space:
mode:
author简律纯 <i@jyunko.cn>2025-09-12 18:19:16 +0800
committer简律纯 <i@jyunko.cn>2025-09-12 18:19:16 +0800
commit2778db81c6973078dc0e8e04c4bb711143aef84d (patch)
treea262ee069fe4155c1bf315ed549161d3ee4ee1f8 /src/parser.rs
parent899ca820e34b1b62190e88da71cf734295974a19 (diff)
downloadOneRoll-2778db81c6973078dc0e8e04c4bb711143aef84d.tar.gz
OneRoll-2778db81c6973078dc0e8e04c4bb711143aef84d.zip
feat: add new reroll modifiers for enhanced dice functionality
Diffstat (limited to 'src/parser.rs')
-rw-r--r--src/parser.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/parser.rs b/src/parser.rs
index 50231c0..20cd992 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -126,6 +126,16 @@ impl DiceParser {
.map_err(|_| DiceError::ParseError("无效的条件重投数值".to_string()))?;
Ok(DiceModifier::RerollOnce(num))
}
+ Rule::reroll_until => {
+ let num = inner.into_inner().next().unwrap().as_str().parse::<i32>()
+ .map_err(|_| DiceError::ParseError("无效的直到重投数值".to_string()))?;
+ Ok(DiceModifier::RerollUntil(num))
+ }
+ Rule::reroll_add => {
+ let num = inner.into_inner().next().unwrap().as_str().parse::<i32>()
+ .map_err(|_| DiceError::ParseError("无效的重投并相加数值".to_string()))?;
+ Ok(DiceModifier::RerollAndAdd(num))
+ }
Rule::keep_alias => {
let num = inner.into_inner().next().unwrap().as_str().parse::<i32>()
.map_err(|_| DiceError::ParseError("无效的取高数值".to_string()))?;