diff --git a/src/configBcDice.rb b/src/configBcDice.rb index 2f0e2f2b3..efff8ad99 100644 --- a/src/configBcDice.rb +++ b/src/configBcDice.rb @@ -159,6 +159,7 @@ Ryutama SMTKakuseihen SRS + SamsaraBallad Satasupe SevenFortressMobius ScreamHighSchool diff --git a/src/diceBot/DiceBotLoaderList.rb b/src/diceBot/DiceBotLoaderList.rb index efa0c2291..bcb798c30 100644 --- a/src/diceBot/DiceBotLoaderList.rb +++ b/src/diceBot/DiceBotLoaderList.rb @@ -147,6 +147,7 @@ def self.find(gameTitle) DiceBotLoader.new('DarkSouls'), DiceBotLoader.new('SterileLife'), DiceBotLoader.new('Paradiso'), + DiceBotLoader.new('SamsaraBallad'), DiceBotLoader.new('None', :filenames => [], :class => :DiceBot) ] end diff --git a/src/diceBot/SamsaraBallad.rb b/src/diceBot/SamsaraBallad.rb new file mode 100644 index 000000000..0b7adc01b --- /dev/null +++ b/src/diceBot/SamsaraBallad.rb @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +# frozen_string_literal: true + +class SamsaraBallad < DiceBot + # ゲームシステムの識別子 + ID = 'SamsaraBallad' + + # ゲームシステム名 + NAME = 'サンサーラ・バラッド' + + # ゲームシステム名の読みがな + # + # 「ゲームシステム名の読みがなの設定方法」(docs/dicebot_sort_key.md)を参考にして + # 設定してください + SORT_KEY = 'さんさあらはらつと' + + # ダイスボットの使い方 + HELP_MESSAGE = <= 0 && total_n % 10 <= f_value + is_critical = !is_fumble && c_value < 10 && total_n % 10 >= c_value + + if diff > 0 + if is_diff_eq_allowable + output = "(D100<=#{diff})" + cmp = (total_n <= diff) && (total_n < 100) + else + output = "(D100<#{diff})" + cmp = (total_n < diff) && (total_n < 100) + end + output += " > #{dice_label}" + if cmp + if is_fumble + output += " > ファンブル" + elsif is_critical + output += " > クリティカル" + else + output += " > 成功" + end + else + output += " > 失敗" + end + else + output = "D100 > #{dice_label}" + if is_fumble + output += " > ファンブル" + elsif is_critical + output += " > クリティカル" + end + end + + return output + end +end diff --git a/src/test/data/SamsaraBallad.txt b/src/test/data/SamsaraBallad.txt new file mode 100644 index 000000000..162638a68 --- /dev/null +++ b/src/test/data/SamsaraBallad.txt @@ -0,0 +1,329 @@ +input: +1D100<=90 roll 90 +output: +SamsaraBallad : (1D100<=90) > 99 > 失敗 +rand:99/100 +============================ +input: +SB roll +output: +SamsaraBallad : D100 > 75 +rand:75/100 +============================ +input: +SB#2@8 roll +output: +SamsaraBallad : D100 > 80 > ファンブル +rand:80/100 +============================ +input: +SB#2@8 roll +output: +SamsaraBallad : D100 > 83 +rand:83/100 +============================ +input: +SB#2@8 roll +output: +SamsaraBallad : D100 > 89 > クリティカル +rand:89/100 +============================ +input: +SBS roll +output: +SamsaraBallad : D100 > 7,5 > 57 +rand:7/10,5/10 +============================ +input: +SBS roll +output: +SamsaraBallad : D100 > 7,10 > 7 +rand:7/10,10/10 +============================ +input: +SBS roll +output: +SamsaraBallad : D100 > 10,10 > 100 +rand:10/10,10/10 +============================ +input: +SB<=90 roll 90 +output: +SamsaraBallad : (D100<=90) > 75 > 成功 +rand:75/100 +============================ +input: +SB<90 roll 90 +output: +SamsaraBallad : (D100<90) > 75 > 成功 +rand:75/100 +============================ +input: +SB<=80 roll 80 +output: +SamsaraBallad : (D100<=80) > 80 > 成功 +rand:80/100 +============================ +input: +SB<80 roll 80 +output: +SamsaraBallad : (D100<80) > 80 > 失敗 +rand:80/100 +============================ +input: +SB<=80 roll 79 +output: +SamsaraBallad : (D100<=80) > 79 > 成功 +rand:79/100 +============================ +input: +SB<80 roll 79 +output: +SamsaraBallad : (D100<80) > 79 > 成功 +rand:79/100 +============================ +input: +SB<=80 roll 80 +output: +SamsaraBallad : (D100<=80) > 81 > 失敗 +rand:81/100 +============================ +input: +SB<=90 roll 90 +output: +SamsaraBallad : (D100<=90) > 100 > 失敗 +rand:100/100 +============================ +input: +SBS<=80 roll 80 swap +output: +SamsaraBallad : (D100<=80) > 8,9 > 89 > 失敗 +rand:8/10,9/10 +============================ +input: +SBS<=80 roll 80 swap +output: +SamsaraBallad : (D100<=80) > 8,1 > 18 > 成功 +rand:8/10,1/10 +============================ +input: +SBS<=80 roll 80 swap +output: +SamsaraBallad : (D100<=80) > 7,9 > 79 > 成功 +rand:7/10,9/10 +============================ +input: +SBS<35 roll 35 swap +output: +SamsaraBallad : (D100<35) > 5,3 > 35 > 失敗 +rand:5/10,3/10 +============================ +input: +SBS<=35 roll 35 swap +output: +SamsaraBallad : (D100<=35) > 5,3 > 35 > 成功 +rand:5/10,3/10 +============================ +input: +SBS<=90 roll 90 swap +output: +SamsaraBallad : (D100<=90) > 10,10 > 100 > 失敗 +rand:10/10,10/10 +============================ +input: +SB#2@8<=90 roll 90 +output: +SamsaraBallad : (D100<=90) > 54 > 成功 +rand:54/100 +============================ +input: +SB#2@8<=90 roll 90 +output: +SamsaraBallad : (D100<=90) > 58 > クリティカル +rand:58/100 +============================ +input: +SB#5@8<=45 roll 45 +output: +SamsaraBallad : (D100<=45) > 55 > 失敗 +rand:55/100 +============================ +input: +SB#2@8<90 roll 90 +output: +SamsaraBallad : (D100<90) > 58 > クリティカル +rand:58/100 +============================ +input: +SB#2@8<=90 roll 90 +output: +SamsaraBallad : (D100<=90) > 59 > クリティカル +rand:59/100 +============================ +input: +SB#2@8<=90 roll 90 +output: +SamsaraBallad : (D100<=90) > 57 > 成功 +rand:57/100 +============================ +input: +SB#2@8<90 roll 90 +output: +SamsaraBallad : (D100<90) > 57 > 成功 +rand:57/100 +============================ +input: +SB#0@9<=80 roll 80 +output: +SamsaraBallad : (D100<=80) > 81 > 失敗 +rand:81/100 +============================ +input: +SB#0@9<81 roll 81 +output: +SamsaraBallad : (D100<81) > 81 > 失敗 +rand:81/100 +============================ +input: +SB#2@8<=90 roll 90 +output: +SamsaraBallad : (D100<=90) > 52 > ファンブル +rand:52/100 +============================ +input: +SB#0@8<=90 roll 90 +output: +SamsaraBallad : (D100<=90) > 80 > ファンブル +rand:80/100 +============================ +input: +SB#0@8<80 roll 80 +output: +SamsaraBallad : (D100<80) > 80 > 失敗 +rand:80/100 +============================ +input: +SB#2@8<=90 roll 90 +output: +SamsaraBallad : (D100<=90) > 51 > ファンブル +rand:51/100 +============================ +input: +SB#0@5<=35 roll 35 +output: +SamsaraBallad : (D100<=35) > 35 > クリティカル +rand:35/100 +============================ +input: +SB#0@5<35 roll 35 +output: +SamsaraBallad : (D100<35) > 35 > 失敗 +rand:35/100 +============================ +input: +SBS#2@8<=80 roll 80 +output: +SamsaraBallad : (D100<=80) > 8,1 > 18 > クリティカル +rand:8/10,1/10 +============================ +input: +SBS#2@8<=80 roll 80 +output: +SamsaraBallad : (D100<=80) > 9,7 > 79 > クリティカル +rand:9/10,7/10 +============================ +input: +SBS#2@8<=80 roll 80 +output: +SamsaraBallad : (D100<=80) > 7,5 > 57 > 成功 +rand:7/10,5/10 +============================ +input: +SBS#2@8<=80 roll 80 +output: +SamsaraBallad : (D100<=80) > 5,7 > 57 > 成功 +rand:5/10,7/10 +============================ +input: +SBS#2@8<80 roll 80 +output: +SamsaraBallad : (D100<80) > 7,5 > 57 > 成功 +rand:7/10,5/10 +============================ +input: +SBS#2@8<=80 roll 80 +output: +SamsaraBallad : (D100<=80) > 8,9 > 89 > 失敗 +rand:8/10,9/10 +============================ +input: +SBS#2@8<80 roll 80 +output: +SamsaraBallad : (D100<80) > 8,9 > 89 > 失敗 +rand:8/10,9/10 +============================ +input: +SBS#2@8<=15 roll 15 +output: +SamsaraBallad : (D100<=15) > 1,5 > 15 > 成功 +rand:1/10,5/10 +============================ +input: +SBS#2@8<15 roll 15 +output: +SamsaraBallad : (D100<15) > 1,5 > 15 > 失敗 +rand:1/10,5/10 +============================ +input: +SBS#2@8<=80 roll 80 +output: +SamsaraBallad : (D100<=80) > 2,1 > 12 > ファンブル +rand:2/10,1/10 +============================ +input: +SBS#2@8<80 roll 80 +output: +SamsaraBallad : (D100<80) > 2,1 > 12 > ファンブル +rand:2/10,1/10 +============================ +input: +SBS#2@8<=90 roll 90 +output: +SamsaraBallad : (D100<=90) > 1,3 > 13 > 成功 +rand:1/10,3/10 +============================ +input: +SBS#2@8<=90 roll 90 +output: +SamsaraBallad : (D100<=90) > 1,1 > 11 > ファンブル +rand:1/10,1/10 +============================ +input: +SB#5@3<=90 roll 90 +output: +SamsaraBallad : (D100<=90) > 24 > ファンブル +rand:24/100 +============================ +input: +SBS#0@5<=35 roll 35 +output: +SamsaraBallad : (D100<=35) > 5,3 > 35 > クリティカル +rand:5/10,3/10 +============================ +input: +SBS#0@5<35 roll 35 +output: +SamsaraBallad : (D100<35) > 5,3 > 35 > 失敗 +rand:5/10,3/10 +============================ +input: +SBS#3@8<=23 roll 23 +output: +SamsaraBallad : (D100<=23) > 2,3 > 23 > ファンブル +rand:2/10,3/10 +============================ +input: +SBS#3@8<23 roll 23 +output: +SamsaraBallad : (D100<23) > 2,3 > 23 > 失敗 +rand:2/10,3/10