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

加算ロール:フィルタ処理付きダイスロールを追加する #181

Merged
merged 4 commits into from
May 8, 2020

Conversation

ochaochaocha3
Copy link
Member

fixes #88

#88 で挙げられていた、大きな/小さな出目から複数個取る/除く機能(D&D 5thなどで使う)を実装しました。ダイスロールの後、条件を満たす出目のみを残すことから「フィルタ処理付きダイスロール(DiceRollWithFilter)」という名前にしました。

動作

nDxを振った後、出目のうち条件を満たすものを残して(フィルタを適用して)、それらの和を求めます。

名前 略称 コマンド フィルタ
Keep Highest KH nDxKHm 大きな出目からm個取る
Keep Lowest KL nDxKLm 小さな出目からm個取る
Drop Highest DH nDxDHm 大きな出目からm個除く
Drop Lowest DL nDxDLm 小さな出目からm個除く

構文

<term> ::= <dice_roll_with_filter> | <dice_roll> | <number>
<dice_roll_with_filter> ::= <number> D <number> <filter> <number>
<filter> ::= K H | K L | D H | D L

実行例

以下は追加したテストケースです。

input:
5D10KH3 大きな出目から3個取った後の和
output:
DiceBot : (5D10KH3) > 21[8,3,2,5,8] > 21
rand:8/10,3/10,2/10,5/10,8/10
============================
input:
5D10KL3 小さな出目から3個取った後の和
output:
DiceBot : (5D10KL3) > 10[8,3,2,5,8] > 10
rand:8/10,3/10,2/10,5/10,8/10
============================
input:
5D10DH3 大きな出目から3個除いた後の和
output:
DiceBot : (5D10DH3) > 5[8,3,2,5,8] > 5
rand:8/10,3/10,2/10,5/10,8/10
============================
input:
5D10DL3 小さな出目から3個除いた後の和
output:
DiceBot : (5D10DL3) > 16[8,3,2,5,8] > 16
rand:8/10,3/10,2/10,5/10,8/10
============================
input:
5D10KH0 取る数が0の場合でも動く
output:
DiceBot : (5D10KH0) > 0[8,3,2,5,8] > 0
rand:8/10,3/10,2/10,5/10,8/10
============================
input:
5D10KH7 取る数が多すぎても動く
output:
DiceBot : (5D10KH7) > 26[8,3,2,5,8] > 26
rand:8/10,3/10,2/10,5/10,8/10
============================
input:
2D20KH1+1 キープ機能修正値付き
output:
DiceBot : (2D20KH1+1) > 20[1,20]+1 > 21
rand:1/20,20/20
============================
input:
2D20DH1+1 ドロップ機能修正値付き
output:
DiceBot : (2D20DH1+1) > 1[1,20]+1 > 2
rand:1/20,20/20

fixes #88

大きな/小さな出目から、複数個取る/除く機能。
D&D 5thなどで使う。
@ochaochaocha3 ochaochaocha3 added the 新機能 新機能の実装やリクエスト label May 5, 2020
@ochaochaocha3 ochaochaocha3 requested a review from ysakasin May 5, 2020 13:14
src/dice/add_dice/node.rb Outdated Show resolved Hide resolved
大きな出目や小さな出目から選択する処理なので、表示もソートされて
いた方が見やすい。
Copy link
Member

@ysakasin ysakasin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@ysakasin ysakasin merged commit 327e1c9 into master May 8, 2020
@ysakasin ysakasin deleted the add_dice-dice_roll_with_filter branch May 8, 2020 15:49
blhsrwznrghfzpr added a commit to blhsrwznrghfzpr/udonarium that referenced this pull request Jun 15, 2020
ysakasin added a commit that referenced this pull request Aug 30, 2020
加算ロール:フィルタ処理付きダイスロールを追加する
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
新機能 新機能の実装やリクエスト
Projects
None yet
Development

Successfully merging this pull request may close these issues.

複数ダイスを振って大きいもの/小さいものから任意個を取る処理がしたい
2 participants