Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OneDice V2 草案 #3

Open
lunzhiPenxil opened this issue Jan 25, 2022 · 11 comments
Open

OneDice V2 草案 #3

lunzhiPenxil opened this issue Jan 25, 2022 · 11 comments

Comments

@lunzhiPenxil
Copy link
Member

lunzhiPenxil commented Jan 25, 2022

目前确认已经开始确定V2草案,可以在此提出建议,并进行讨论

@zhaodice
Copy link
Contributor

赋值运算
说明: 将3d6的结果赋值给0号变量
$0e(3d6)

变量运算
说明: 判断$0是否大于2,如果是则为1,否则为0
$0>2

与运算&
说明: 1d2等于2,3d6大于3必须同时满足,满足结果为1,不满足结果为0
(1d2=2)&(3d6>3)

或运算|
说明:有一个满足则为1,否则为0

不等式运算 >,<
说明:满足则为1,否则为0

三目运算符
说明:如果3d6大于5,则骰2d8否则骰3d6
(3d6>5)?(2d8):(3d6)

非运算!
同上

@zhaodice
Copy link
Contributor

寄存器存储指令:
$0e(2d6)
意思是2d6的骰点结果给$0,这样就可以一次骰点到处使用:
例如。r$0e(2d7);($0>10)?(2d8):($0)
意思是2d7骰完给$0,如果$0比10大就重新骰2d8,否则就使用$0

@zhaodice
Copy link
Contributor

其中;可以分割多个语句,最终骰点计算结果以最后一行代码为准

@lunzhiPenxil
Copy link
Member Author

X? 阶加运算

X! 阶乘运算

@lunzhiPenxil
Copy link
Member Author

df 运算符 等同 f

@lunzhiPenxil
Copy link
Member Author

lunzhiPenxil commented Aug 20, 2022

借鉴fvtt的格式,提供图灵完备的新表达式格式
https://foundryvtt.com/article/dice-advanced/

[4d6k3,4d6k3,4d6k3,4d6k3] 多元组输出,resInt为最后一个表达式的值,以元组输出分段的多条表达式内容,
当多元组为最外层时,将计算每一个成员

[2d6,10]kl 多左值输入 取最小
[2d6,10]kh 多左值输入 取最大
[2d6,10, 8]kh2 多左值输入 取最大2个
[2d6,10, 8]dl 多左值输入 丢弃最低
[2d6,10, 8]dh 多左值输入 丢弃最高
7min6 = 7
5min6 = 6
5max6 = 5
7max6 = 6
[7, 4]max5 = 5, 4
[2d6,10, 8]max5 多左值输入 将任何高于5的值用5替代
[2d6,10, 8]min5 多左值输入 将任何低于于5的值用5替代
https://foundryvtt.com/article/dice-modifiers/
[1,2,100]lp[id6,6di] 循环算符 以1~100,步进2,循环中将变量赋值i并依次执行
例如:
[1,2,8]lp[id6,6di] = [1d6,6d1,3d6,6d3,5d6,6d5,7d6,6d7]

2d20kl kl算符优先级介于^与d之间,这意味着 kl 会将 2d20 整个节点的输出值中包含的多元组(d将会将每个单独骰子的出值作为多元组内容)作为左值
例如:
2d20 = 11+7 = 18
则多元组为[11,7]
那么
[11,7]kl = 7

@Anillc
Copy link
Contributor

Anillc commented Aug 22, 2022

使用 $ [ ] 这样的符号是否会对移动端输入不友好,一个是从输入法选取符号比较麻烦,另一个是 Android QQ 在输入 $ 时会弹出礼物界面,是否考虑更换为更容易输入的方式,比如 @ 是否为一个更好的选择呢

@lunzhiPenxil
Copy link
Member Author

使用 $ [ ] 这样的符号是否会对移动端输入不友好,一个是从输入法选取符号比较麻烦,另一个是 Android QQ 在输入 $ 时会弹出礼物界面,是否考虑更换为更容易输入的方式,比如 @ 是否为一个更好的选择呢

具体来说,fvtt的这种格式其实更多是用在作为富文本场景做插值的时候使用的,例如:
LCFX15)GU$XLQJ1_JQIK{KY
https://foundryvtt.com/article/dice/
这种做法其实不太考虑用户手动输入的体验,只是作为兼容存在。
你所说的@的方案我认为可以详细讨论,同时支持。

@shigma
Copy link

shigma commented Aug 25, 2022

你所说的@的方案我认为可以详细讨论,同时支持。

我觉得同时支持并不是好主意,不仅会占用更多的符号,影响未来的发展,还会分化用户的使用习惯。

@lunzhiPenxil
Copy link
Member Author

我觉得同时支持并不是好主意,不仅会占用更多的符号,影响未来的发展,还会分化用户的使用习惯。

对于这一点我不赞同,因为fvtt格式的表达式是已经存在的用户习惯,这是确实存在的用户需求。

@lunzhiPenxil
Copy link
Member Author

lunzhiPenxil commented Sep 3, 2022

多元组操作
sp算符: 可以对多元组进行角标和裁剪
[1,2,3,4,5,6]sp[2] = [2] = 2
[1,2,3,4,5,6]sp[2,5] = [2,3,4,5]
以上操作类似Python的list,但左界+1
[1,2,3,4,5,6]sp[1,2,5] = [2,4]
新增步进操作

tp算符: 可以将任何具有多元组的上一级节点结果直接取出
[1,2,3,4,5,6]tp = [1,2,3,4,5,6]
3d100tp = 44, 32, 85 (而不是 44+32+85)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants