Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions lib/bcdice/game_system/FateCoreSystem.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ class FateCoreSystem < Base
HELP_MESSAGE = <<~MESSAGETEXT
■ ファッジダイスによる判定 (xDF+y>=t)
ファッジダイスをx個ダイスロールし、結果を判定します。
x: ダイス数
x: ダイス数(省略時4)
y: 修正値(省略可)
t: 目標値値(省略可)
例)4DF, 4DF>=3, 4DF+1>=3
t: 目標値(省略可)
例)4DF, 4DF>=3, 4DF+1>=3, DF, DF>=3, DF+1>=3
MESSAGETEXT

register_prefix('\d+DF')
register_prefix('\d*DF')

def eval_game_system_specific_command(command)
roll_df(command)
Expand All @@ -40,7 +40,9 @@ def roll_df(command)
return nil
end

dice_list = roll_fate_dice(parsed.prefix_number)
dice_x = 4
dice_x = parsed.prefix_number if parsed.prefix_number
dice_list = roll_fate_dice(dice_x)
total = dice_list.sum() + parsed.modify_number

fate_dice_list = dice_list.map do |i|
Expand Down Expand Up @@ -103,7 +105,9 @@ def outcome(total, target)
if target.nil?
Result.new
elsif total == target
Result.success("Tie")
Result.success("Tie(+0)")
elsif total == target + 1
Result.success("Succeed(+1)")
elsif total >= target + 3
Result.critical("Succeed with Style")
elsif total >= target
Expand Down
40 changes: 38 additions & 2 deletions test/data/FateCoreSystem.toml
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ rands = [
[[ test ]]
game_system = "FateCoreSystem"
input = "4DF>=3"
output = "(4DF>=3) > [+][+][+][+] > Great(+4) > Succeed"
output = "(4DF>=3) > [+][+][+][+] > Great(+4) > Succeed(+1)"
success = true
rands = [
{ sides = 3, value = 3 },
Expand Down Expand Up @@ -197,7 +197,7 @@ rands = [
[[ test ]]
game_system = "FateCoreSystem"
input = "4DF+1>=3"
output = "(4DF+1>=3) > [+][+][+][-]+1 > Good(+3) > Tie"
output = "(4DF+1>=3) > [+][+][+][-]+1 > Good(+3) > Tie(+0)"
success = true
rands = [
{ sides = 3, value = 3 },
Expand All @@ -217,3 +217,39 @@ rands = [
{ sides = 3, value = 3 },
{ sides = 3, value = 1 },
]

[[ test ]]
game_system = "FateCoreSystem"
input = "DF"
output = "(DF) > [-][ ][-][-] > Terrible(-3)"
rands = [
{ sides = 3, value = 1 },
{ sides = 3, value = 2 },
{ sides = 3, value = 1 },
{ sides = 3, value = 1 },
]

[[ test ]]
game_system = "FateCoreSystem"
input = "DF+1>=3"
output = "(DF+1>=3) > [+][ ][+][-]+1 > Fair(+2) > Fail"
failure = true
rands = [
{ sides = 3, value = 3 },
{ sides = 3, value = 2 },
{ sides = 3, value = 3 },
{ sides = 3, value = 1 },
]

[[ test ]]
game_system = "FateCoreSystem"
input = "DF+1+2>=3"
output = "(DF+3>=3) > [+][ ][+][-]+3 > Great(+4) > Succeed(+1)"
success = true
rands = [
{ sides = 3, value = 3 },
{ sides = 3, value = 2 },
{ sides = 3, value = 3 },
{ sides = 3, value = 1 },
]