diff --git a/i18n/NinjaSlayer2/ja_jp.yml b/i18n/NinjaSlayer2/ja_jp.yml new file mode 100644 index 000000000..f2df2a164 --- /dev/null +++ b/i18n/NinjaSlayer2/ja_jp.yml @@ -0,0 +1,34 @@ +ja_jp: + NinjaSlayer2: + table: + SATSUBATSU: + name: "サツバツ!!(D6) > " + type: 1D6 + items: + - "「イヤーッ!」腹部に強烈な一撃が命中! 敵はくの字に折れ曲がり、ワイヤーアクションめいて吹っ飛んだ! \n『痛打+1』。敵の【体力】を減らした場合、付属効果として『弾き飛ばし』を与える。" + - "「観念してハイクを詠め!」頭部への痛烈なカラテが命中! 眼球破壊もしくは激しい脳震盪が敵を襲う! \n『痛打+1』。敵の【体力】を減らした場合、付属効果として『ニューロンダメージ2』と『ワザマエダメージ1』と『●部位損傷:頭部』を与える。" + - "「苦しみ抜いて死ぬがいい!」急所や内臓を情け容赦なく破壊! \n『痛打+1』。敵の【体力】を減らした場合、付属効果として『ニューロンダメージ1』と『精神力ダメージ2』と『●部位損傷:胴体』を与える。" + - "「どこへ逃げても無駄だ!」敵の脚を無慈悲に粉砕! \n『痛打+1』。敵の【体力】を減らした場合、付属効果として『カラテダメージ1』と『脚力ダメージ2』と『●部位損傷:脚部』を与える。" + - "「これで手も足も出まい!」敵の両腕をダブルチョップ切断! 傷口から鮮血がスプリンクラーめいて噴き出す! \n『痛打+1』。敵の【体力】を減らした場合、付属効果として『カラテダメージ2』と『ワザマエダメージ2』と『●部位損傷:腕部』を与える。" + - "「さらばだ! イイイヤアアアアーーーーッ!」ヤリめいたチョップが敵の胸を貫通! さらに心臓を掴み取り、握りつぶした! ゴウランガ! \n『即死!』。敵が『即死耐性』を持つ場合、この効果は『痛打+2D6』に置き換えられる。" + WASSHOI: + name: "ニンジャスレイヤー=サンのエントリー!!(D6) > " + type: 1D6 + items: + - "高所からの回転着地! タタミ四枚の距離で睨み合った! \n標的ニンジャから3または4マス離れた任意のマスに、【殺】コマを置くこと。" + - "ドアを蹴破って出現! \n標的ニンジャがいる部屋の任意のドアの隣に【殺】コマを置くこと。 \nなお、ドアにあらかじめ鍵をかけるなどの行為は全て無駄である。" + - "KRAAAAASH! 窓を突き破り出現! \n標的ニンジャがいる部屋の任意の窓の隣に【殺】コマを置くこと。 \n【殺】コマが隣接している間、その窓は脱出用として使用できなくなる。" + - "天井破壊や床破砕、または垂直リフト射出により出現! \n標的ニンジャから2マス離れた任意の場所に【殺】コマを置くこと。 \n激しい恐怖や動揺により、次のターンの終了時まで、その場にいる【DKK】1以上のニンジャ全員は『連続側転判定』の難易度が+1される。" + - "冷蔵庫や金庫から突如出現! \nそのマップ上に存在するトレジャーボックス内に、ニンジャスレイヤーが潜んでいた。標的ニンジャから最も近いトレジャーボックス1個(もしくは適切な障害物や爆発物)の隣に【殺】コマを置くこと。 \n激しい恐怖や動揺により、次のターンの終了時まで、その場にいる【DKK】1以上のニンジャ全員は『連続側転判定』の難易度が+1される。" + - "「行き先はジゴクですよ」 \nマップ上にいるNPC1人(標的ニンジャから最も近くにいる者)が、実はニンジャスレイヤーの変装であった。そのNPCのコマを【殺】に変更せよ(本物のNPCがどこにいったのかはニンジャマスターが後で考える)。 \n激しい恐怖や動揺により、次のターンの終了時まで、その場にいる【DKK】1以上のニンジャ全員は『連続側転判定』の難易度が+2される。" + NRS: + name: "ニンジャ・リアリティ・ショック発症(D7) > " + type: 1D7 + items: + - "絶叫 \n恐怖のあまり、その場で絶叫を上げる。 \n探索中の場合、近くの敵に存在を気づかれる可能性がある(シナリオ次第)。 \n戦闘中の場合、恐怖のあまり足がガクガクと震え、このターン終了まで【脚力】が0となり、『崩れ状態』とみなされる。" + - "失禁 \n恐怖とトラウマのあまりその場で立ちすくみ、失禁する。自尊心を失い【精神力】が-1される。 \n戦闘中の場合、足がすくんで手がブルブルと震え、このターン終了まであらゆる自発的行動の難易度が+1され、【脚力】が1となり、『崩れ状態』とみなされる。" + - "パニック逃走や異常行動 \n恐怖のあまり絶叫し、仲間を見捨ててその場から全速力で逃げ出そうとしたり、銃を持っている場合は見えない敵に向かって乱射しようとする。 \nあるいは仲間のことをニンジャだと思い込んで攻撃を仕掛けたり、理解不能な異常行動を取ったりする。 \n探索シーケンスの場合、直ちに戦闘シーケンスが発生してこのPCの手番となり、1ターンだけマスターがこのPCを操作する。このPCは常軌を逸した身体能力を発揮し、【脚力】6として行動する。マスターはこのPCに自傷行為以外のどんな行動を取らせてもよい。このPCにとっては、あらゆるキャラが敵とみなされる。このターンの終了時に、このPCは正気に戻る。 \n戦闘中の場合も同様で、次の手番にこの状態となる。手番開始時に攻撃できる相手がニンジャしか見えていない場合、逃走を優先する。" + - "ドゲザ \n失禁し【精神力】に1ダメージ。突然ドゲザによる命乞いを行うため、このターン終了時まで『麻痺状態』とみなされる。" + - "激しい嘔吐や鼻血 \n【体力】と【精神力】にそれぞれ1ダメージを受ける。 \n戦闘中の場合、このターンのあらゆる判定難易度が+1される。 \nしかし目の前の脅威に立ち向かおうとする意志は砕けていない。" + - "気絶 \n失禁し【精神力】に1ダメージ。さらに打ち上げられたマグロめいてその場で倒れて口をパクパクとさせ、『気絶状態』となる。 \n戦闘が終了するか、一定時間が経過するか、誰かに蘇生してもらうまで、この状態は解除されない。" + - "心臓発作や狂死 \n急激なニンジャリアリティショックに耐えきれず、PCは心臓発作やニューロン損傷を起こして【体力】0となり、その場に倒れ『気絶状態』となる。 \nZBRアドレナリンでなければ蘇生できない。処置を受けずに時間が経過すると死亡する。" diff --git a/lib/bcdice/game_system.rb b/lib/bcdice/game_system.rb index eea0c928a..b3c4bc69f 100644 --- a/lib/bcdice/game_system.rb +++ b/lib/bcdice/game_system.rb @@ -152,6 +152,7 @@ require "bcdice/game_system/NightWizard3rd" require "bcdice/game_system/NightmareHunterDeep" require "bcdice/game_system/NinjaSlayer" +require "bcdice/game_system/NinjaSlayer2" require "bcdice/game_system/NjslyrBattle" require "bcdice/game_system/NobunagasBlackCastle" require "bcdice/game_system/NSSQ" diff --git a/lib/bcdice/game_system/NinjaSlayer2.rb b/lib/bcdice/game_system/NinjaSlayer2.rb new file mode 100644 index 000000000..76ae9329e --- /dev/null +++ b/lib/bcdice/game_system/NinjaSlayer2.rb @@ -0,0 +1,393 @@ +# frozen_string_literal: true + +module BCDice + module GameSystem + class NinjaSlayer2 < Base + # ゲームシステムの識別子 + ID = "NinjaSlayer2" + + # ゲームシステム名 + NAME = "ニンジャスレイヤーTRPG 2版" + + # ゲームシステム名の読みがな + SORT_KEY = "にんしやすれいやあTRPG2" + + HELP_MESSAGE = <<~TEXT + - K{x1},{x2},...,{xn} + 難易度K([K]ids)の成功判定({x1}B6>=2)を、ダイス{x1}個({x2}~を指定した場合はそれぞれ個々に)で実行します。 + 先頭の文字を変えることで、難易度E([E]asy),N([N]ormal),H([H]ard),U([U]ltra-hard)もしくはUH([U]ltra-[H]ard)でも実行可能です。(以下も同様) + + - K{x1},{x2},...,{xn}[>={y}] + K{x1}のロールの結果を使って、[]内で指定された条件を満たすダイスの個数を追加で出力します。 + 判定式は「>=」の他に「>」「<=」「<」「=」「!=」が利用可能です。 + [=5][=6]のように複数記述することで、それぞれで追加判定が可能です。 + + - K{x1},{x2},...,{xn}[S] or K{x1},{x2},...,{xn}[S{y}] + - K{x1},{x2},...,{xn}[C] or K{x1},{x2},...,{xn}[C{y}] + いずれもK{x1},{x2},...,{xn}[>={y}]のショートカットです。({y}省略時は固定値6で処理します。) + 出力時のテキストが、Sの場合は「サツバツ!」に、Cの場合は「クリティカル!」になります。 + こちらも複数記述することで、それぞれで追加判定が可能です。 + + - SB or SB@{x} + {x}(1-6/省略時はd6)に対応したサツバツ([S]atz-[B]atz)・クリティカル表の内容を返します。 + + - WS{x} + {x}(1-12/省略不可)に対応する[W]as[s]hoi!判定(2d6<={x})を行います + + - WSE or WSE@{x} + {x}(1-6/省略時はd6)に対応する死神のエントリー決定表([W]as[s]hoi! [E]ntry)の内容を返します。 + + - NRS_E{x} or NRS_E{x}@{y} or NRS@{y} + ダイス{x}個で難易度[E]asy(>=3)のNRS判定({x}省略時はスキップ)を行い、失敗した場合は{y}(1~7/省略時は難易度に応じたダイス目)に対応するNRS発狂表を返します。 + 「_E」部分を変更することで、難易度N,H,U,UHでも利用可能です。(Kはありません) + + 以下は1版用のダイスボット互換の処理です。 + 2版用のルールに適合しない箇所もありますので、利用の際はご注意ください。 + + - NJ{x}[{y}] or NJ{x}@{y} or NJ{x} + ダイス{x}個で難易度{y}(2-6もしくはK,E,N,H,U,UH/省略時は4)の成功判定を行います。 + + - EV{x}[{y}]/{z} or EV{x}@{y}/{z} or EV{x}/{z} or EV{x}[{y}] or EV{x}@{y} or EV{x} + ダイス{x}個で難易度{y}(2-6もしくはK,E,N,H,U,UH/省略時は4)の回避判定を行います。 + 成功数が{z}(0~/省略時はカウンター発生なし)を超えた場合はカウンターカラテ発生を表示します。 + + - AT{x}[{y}] or AT{x}@{y} or AT{x} + ダイス{x}個で難易度{y}(2-6もしくはK,E,N,H,U,UH/省略時は4)の近接攻撃判定を行います。 + 出目に【6,6】が含まれていた場合はサツバツ!発生を表示します。 + ※ 2版ルールでは【6,6】以外の条件でもサツバツ!が発生することがあります。 + + - EL{x}[{y}] or EL{x}@{y} or EL{x} + ダイス{x}個で難易度{y}(2-6もしくはK,E,N,H,U,UH/省略時は4)の電子戦判定を行います。 + 出目が【6】のダイスを成功数に加算します。 + ※ 現時点での2版のコア・ルールには電子戦は存在しません。 + + ◆出典 + 本ダイスボットで使用している難易度表記と判定式、および各種乱数表のテキストは、 + 物理書籍版『ニンジャスレイヤーTRPG コア・ルールブック』記載の内容に対応しています。 + TEXT + + # Base::eval_game_system_specific_commandの実装 + # @param command [String] + # @return [String, nil] + def eval_game_system_specific_command(command) + # @debug = true + debug("input: #{command}") + + begin + case command + when RE_OLD_COMMAND + # 1版のコマンドにマッチしたら1版側の処理 + return proc_dice_1st(Regexp.last_match) + + when RE_JUDGE_DICEROLL + # 2版用のダイス判定 + proc_result = proc_dice_2nd(Regexp.last_match) + + # 結果は文字列と達成値という形で受け取る + if proc_result[1] > 0 + return Result.success(proc_result[0]) + else + return Result.failure(proc_result[0]) + end + else + # ダイスでなければ定型文処理 + return proc_text(command) + end + rescue StandardError => e + # 解析できずにエラーが出たら構文ミスと皆してnilを返す + debug("#{e.message} \n#{e.backtrace}") + return nil + end + end + + private + + # 文字列stringを数値化する。nilの場合はdefaultで指定された値を返す + # @param string [String] + # @param default [Integer] + # @return [Integer] + def s_to_i(string, default) + return string.nil? ? default : string.to_i + end + + # 判定結果の出力テキストと成功数のカウントを返す。 + # @param dice_array [Array] + # @param difficulty [Integer] + # @param cmp_op [String] + # @param title_text [String] + # @return [String, Integer] + def check_difficulty(dice_array, difficulty, cmp_op, title_text) + success_num = 0 + success_dice = [] + dice_array.each do |dice_value| + if dice_value.send(Normalize.comparison_operator(cmp_op), difficulty) + success_num += 1 + success_dice.push(dice_value) + end + end + + success_dice_s = success_dice.empty? ? "" : "[#{success_dice.sort.reverse.join(',')}]" + return "#{title_text}:#{success_num}#{success_dice_s}", success_num + end + + # ダイス処理(1版用) + # @param match [MatchData] + def proc_dice_1st(match) + # 基本的なnBx>=t処理までは共通 + command_type = match[1] + dice_num = match[2].to_i + dificulty_s = match[3] || match[4] + dificulty_i = dificulty_s.to_i + ev_target = match[5].to_i + + if dificulty_i == 0 + dificulty_i = dificulty_s.nil? ? 4 : DIFFICULTY_SYMBOL_TO_INTEGER.fetch(dificulty_s) + end + + roll_command = "#{dice_num}B6>=#{dificulty_i}" + roll_result = BCDice::CommonCommand::BarabaraDice.eval(roll_command, self, @randomizer) + output_text = "(#{roll_command}) > #{roll_result.last_dice_list.join(',')} > 成功数#{roll_result.success_num}" + + case command_type + when "NJ" + # NJコマンドは成功/失敗判定あり + if roll_result.success_num > 0 + return Result.success(output_text) + else + return Result.failure(output_text) + end + else + # NJコマンド以外は成功/失敗判定なし + case command_type + when "EV" + # EVコマンドは成功数が目標値を超えたらカウンターカラテ発生 + if ev_target > 0 && roll_result.success_num > ev_target + output_text += " > カウンターカラテ!!" + end + when "AT" + # ATコマンドは【6,6】でサツバツ!!判定 + if roll_result.last_dice_list.count(6) >= 2 + output_text += " > サツバツ!!" + end + when "EL" + # ELコマンドはダイス目6を成功数に上乗せ + if roll_result.last_dice_list.count(6) > 0 + output_text += " + #{roll_result.last_dice_list.count(6)} > #{roll_result.success_num + roll_result.last_dice_list.count(6)}" + end + end + + return Result.new.tap do |r| + r.text = output_text + end + end + end + + # ダイス処理(2版用) + # @param command [String] + # @return [String, Integer] + def proc_dice_2nd(match) + output_text = '' + total_success_num = 0 + + difficulty = DIFFICULTY_SYMBOL_TO_INTEGER.fetch(match[1]) + appendix = match[3] + + match[2].split(",").each do |sub_command| + dice_num = sub_command.to_i + + # D6バラバラロール + roll_command = "#{dice_num}B6>=#{difficulty}" + roll_result = BCDice::CommonCommand::BarabaraDice.eval(roll_command, self, @randomizer) + + output_text += "(#{roll_command}) > #{roll_result.last_dice_list.join(',')} > 成功数:#{roll_result.success_num}" + success_num = roll_result.success_num + + # Appendix部分の処理 + unless appendix.nil? + debug("---- appendix: [#{appendix}]") + ap_command_array = appendix.split("\]\[") + ap_command_array.each do |ap_command| + debug("----- ap_command: #{ap_command}") + case ap_command + when RE_COUNT_SATZ_BATZ + # サツバツ!カウント + check_result = check_difficulty(roll_result.last_dice_list, s_to_i(Regexp.last_match[1], 6), ">=", "サツバツ!") + output_text += ", #{check_result[0]}" + success_num += check_result[1] + when RE_COUNT_CRITICAL + # クリティカル!カウント + check_result = check_difficulty(roll_result.last_dice_list, s_to_i(Regexp.last_match[1], 6), ">=", "クリティカル!") + output_text += ", #{check_result[0]}" + success_num += check_result[1] + when RE_COUNT_JUDGE + # 追加判定カウント + check_result = check_difficulty(roll_result.last_dice_list, Regexp.last_match[2].to_i, Regexp.last_match[1], "追加判定") + output_text += ", #{check_result[0]}" + success_num += check_result[1] + end + end + end + output_text += " \n" + + total_success_num += success_num + end + + return output_text, total_success_num + end + + # サツバツ!の処理を実行する + # @param type [Integer] + # @return [Result] + def proc_satz_batz(type) + # サツバツ判定(d6) + if type > 0 + return "サツバツ!!(#{type}) > #{translate('NinjaSlayer2.table.SATSUBATSU.items')[type - 1]}" + else + return DiceTable::Table.from_i18n("NinjaSlayer2.table.SATSUBATSU", @locale).roll(@randomizer) + end + end + + # Wasshoi!判定の処理を実行する + # @param dkk [Integer] + # @return [Result] + def proc_wasshoi(dkk) + dice_array = @randomizer.roll_barabara(2, 6) + output_text = "Wasshoi!判定(2D6) > (#{dice_array.join('+')}) > #{dice_array.sum()}" + + if dice_array.sum() > dkk + output_text += "(>#{dkk}) 判定失敗" + return Result.success(output_text) + else + output_text += "(<=#{dkk}) 判定成功!! \nニンジャスレイヤー=サンのエントリーだ!!" + return Result.failure(output_text) + end + end + + # Wasshoi!の処理を実行する + # @param type [Integer] + # @return [Result] + def proc_wasshoi_entry(type) + # Wasshoi!判定 + output_text = "" + if type > 0 + output_text += "ニンジャスレイヤー=サンのエントリー!!(#{type}) > #{translate('NinjaSlayer2.table.WASSHOI.items')[type - 1]}" + else + # DKKの指定無し、もしくはロール結果がDKKを超えたら死神のエントリー決定表(d6) + table = DiceTable::Table.from_i18n("NinjaSlayer2.table.WASSHOI", @locale) + output_text += table.roll(@randomizer).to_s + end + return output_text + end + + # NRS判定の処理を実行する + # @param dice_num [Integer] + # @param dificulty_s [String] + # @param type [Integer] + # @return [Result] + def proc_nrs(dice_num, dificulty_s, type) + # 難易度も乱数表の番号も指定が無ければコマンドミス + dificulty_i = dificulty_s.nil? ? 0 : DIFFICULTY_SYMBOL_TO_INTEGER.fetch(dificulty_s) + if dificulty_i == 0 && type == 0 + return nil + end + + # NRS判定 + output_text = "" + if dificulty_i > 0 + roll_command = "#{dice_num}B6>=#{dificulty_i}" + roll_result = BCDice::CommonCommand::BarabaraDice.eval(roll_command, self, @randomizer) + output_text += "NRS判定(#{roll_command}) > #{roll_result.last_dice_list.join(',')} > 成功数:#{roll_result.success_num}" + if roll_result.success_num > 0 + output_text += " NRS克服!!" + return Result.success(output_text) + else + output_text += " NRS発症!! \n" + end + end + + # NRS発狂表の決定 + dice_face = 0 + additional = 0 + if type == 0 + case dificulty_s + when "E" + dice_face = 3 + when "N" + dice_face = 6 + when "H", "U" + dice_face = 6 + additional = 1 + end + type = @randomizer.roll_once(dice_face) + additional + end + roll_command = "1D#{dice_face}#{additional > 0 ? '+' + additional.to_s : ''}" + output_text += "NRS発狂#{dice_face > 0 ? "(#{roll_command}) > " : ''}(#{type}) > #{translate('NinjaSlayer2.table.NRS.items')[type - 1]}" + return Result.failure(output_text) + end + + # テキスト系処理 + # @param command [String] + # @return [String, Integer] + def proc_text(command) + debug("text: #{command}") + case command + when RE_JUDGE_SATZ_BATZ + # サツバツ判定(d6) + return proc_satz_batz(Regexp.last_match[1].to_i) + when RE_JUDGE_WASSHOI + # Wasshoi!判定 + return proc_wasshoi(Regexp.last_match[1].to_i) + when RE_JUDGE_WASSHOI_ENTRY + # Wasshoi!判定 + return proc_wasshoi_entry(Regexp.last_match[1].to_i) + when RE_JUDGE_NRS + # NRS判定 + return proc_nrs(Regexp.last_match[2].to_i, Regexp.last_match[1], Regexp.last_match[3].to_i) + end + end + + RE_COUNT_SATZ_BATZ = /S([1-6])?/i.freeze + RE_COUNT_CRITICAL = /C([1-6])?/i.freeze + RE_COUNT_JUDGE = /(=|!=|>=|>|<=|<)([1-6])/.freeze + + RE_JUDGE_DICEROLL = /^(UH|[KENHU])([\d,]+)(?:\[((?:(?:#{RE_COUNT_SATZ_BATZ}|#{RE_COUNT_CRITICAL}|#{RE_COUNT_JUDGE})(?:\]\[)?)+)\])?$/i.freeze + RE_JUDGE_SATZ_BATZ = /^SB(?:@([1-6]))?$/i.freeze + RE_JUDGE_WASSHOI = /^WS([1-9]|10|11|12)$/i.freeze + RE_JUDGE_WASSHOI_ENTRY = /^WSE(?:@([1-6]))?$/i.freeze + RE_JUDGE_NRS = /^NRS(?:_(E|N|H|U|UH)(\d+))?(?:@([1-7]))?$/i.freeze + + # 難易度の文字表現から整数値への対応 + DIFFICULTY_SYMBOL_TO_INTEGER = { + 'K' => 2, + 'E' => 3, + 'N' => 4, + 'H' => 5, + 'U' => 6, + 'UH' => 6 + }.freeze + + # 以下、1版互換用の処理 + + # 難易度の値の正規表現 + DIFFICULTY_VALUE_RE = /UH|[2-6KENHU]/i.freeze + # 難易度の正規表現 + DIFFICULTY_RE = /\[(#{DIFFICULTY_VALUE_RE})\]|@(#{DIFFICULTY_VALUE_RE})/io.freeze + + RE_OLD_COMMAND = %r{^(NJ|EV|AT|EL)(\d+)#{DIFFICULTY_RE}?(?:/(\d+))?$}i.freeze + RE_OLD_NJ_COMMAND = /^NJ(\d+)#{DIFFICULTY_RE}?$/i.freeze + RE_OLD_AT_COMMAND = /^AT(\d+)#{DIFFICULTY_RE}?$/i.freeze + RE_OLD_EL_COMMAND = /^EL(\d+)#{DIFFICULTY_RE}?$/i.freeze + + register_prefix( + RE_JUDGE_DICEROLL, + RE_JUDGE_SATZ_BATZ, + RE_JUDGE_WASSHOI, + RE_JUDGE_WASSHOI_ENTRY, + RE_JUDGE_NRS + ) + + # 1版互換用のコマンド登録 + register_prefix("NJ", "EV", "AT", "EL") + end + end +end diff --git a/test/data/NinjaSlayer2.toml b/test/data/NinjaSlayer2.toml new file mode 100644 index 000000000..ce6c37ec4 --- /dev/null +++ b/test/data/NinjaSlayer2.toml @@ -0,0 +1,897 @@ +# B6K{m} ([K]ids判定用の簡易コマンド) +[[ test ]] +game_system = "NinjaSlayer2" +input = "K5" +output = "(5B6>=2) > 4,6,3,1,5 > 成功数:4 \n" +success = true +rands = [ + { sides = 6, value = 4 }, + { sides = 6, value = 6 }, + { sides = 6, value = 3 }, + { sides = 6, value = 1 }, + { sides = 6, value = 5 }, +] + +# B6E{m} ([E]asy判定用の簡易コマンド) +[[ test ]] +game_system = "NinjaSlayer2" +input = "E5" +output = "(5B6>=3) > 4,6,3,1,5 > 成功数:4 \n" +success = true +rands = [ + { sides = 6, value = 4 }, + { sides = 6, value = 6 }, + { sides = 6, value = 3 }, + { sides = 6, value = 1 }, + { sides = 6, value = 5 }, +] + +# B6N{m} ([N]ormal判定用の簡易コマンド) +[[ test ]] +game_system = "NinjaSlayer2" +input = "N5" +output = "(5B6>=4) > 4,6,3,1,5 > 成功数:3 \n" +success = true +rands = [ + { sides = 6, value = 4 }, + { sides = 6, value = 6 }, + { sides = 6, value = 3 }, + { sides = 6, value = 1 }, + { sides = 6, value = 5 }, +] + +# B6H{m} ([H]ard判定用の簡易コマンド) +[[ test ]] +game_system = "NinjaSlayer2" +input = "H5" +output = "(5B6>=5) > 4,6,3,1,5 > 成功数:2 \n" +success = true +rands = [ + { sides = 6, value = 4 }, + { sides = 6, value = 6 }, + { sides = 6, value = 3 }, + { sides = 6, value = 1 }, + { sides = 6, value = 5 }, +] + +# B6U{m} ([U]ltra-hard判定用の簡易コマンド) +[[ test ]] +game_system = "NinjaSlayer2" +input = "U5" +output = "(5B6>=6) > 4,2,3,1,5 > 成功数:0 \n" +failure = true +rands = [ + { sides = 6, value = 4 }, + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 1 }, + { sides = 6, value = 5 }, +] + +# N{m},{n}[appendix] 簡易コマンドの連続処理 (追加判定) +[[ test ]] +game_system = "NinjaSlayer2" +input = "N5,3,4[!=1][s][c2]" +output = "(5B6>=4) > 4,6,3,1,5 > 成功数:3, 追加判定:4[6,5,4,3], サツバツ!:1[6], クリティカル!:4[6,5,4,3] \n(3B6>=4) > 1,1,2 > 成功数:0, 追加判定:1[2], サツバツ!:0, クリティカル!:1[2] \n(4B6>=4) > 6,6,1,2 > 成功数:2, 追加判定:3[6,6,2], サツバツ!:2[6,6], クリティカル!:3[6,6,2] \n" +success = true +rands = [ + { sides = 6, value = 4 }, + { sides = 6, value = 6 }, + { sides = 6, value = 3 }, + { sides = 6, value = 1 }, + { sides = 6, value = 5 }, + + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 2 }, + + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 1 }, + { sides = 6, value = 2 }, +] + +# サツバツ!(D6) +[[ test ]] +game_system = "NinjaSlayer2" +input = "SB" +output = "サツバツ!!(D6) > (3) > 「苦しみ抜いて死ぬがいい!」急所や内臓を情け容赦なく破壊! \n『痛打+1』。敵の【体力】を減らした場合、付属効果として『ニューロンダメージ1』と『精神力ダメージ2』と『●部位損傷:胴体』を与える。" +rands = [ + { sides = 6, value = 3 }, +] + +# サツバツ!(効果指定) +[[ test ]] +game_system = "NinjaSlayer2" +input = "SB@6" +output = "サツバツ!!(6) > 「さらばだ! イイイヤアアアアーーーーッ!」ヤリめいたチョップが敵の胸を貫通! さらに心臓を掴み取り、握りつぶした! ゴウランガ! \n『即死!』。敵が『即死耐性』を持つ場合、この効果は『痛打+2D6』に置き換えられる。" +rands = [] + +# Wasshoi!(2D6/失敗) +[[ test ]] +game_system = "NinjaSlayer2" +input = "WS8" +output = "Wasshoi!判定(2D6) > (4+5) > 9(>8) 判定失敗" +success = true +rands = [ + { sides = 6, value = 4 }, + { sides = 6, value = 5 }, +] + +# Wasshoi!(2D6/成功) +[[ test ]] +game_system = "NinjaSlayer2" +input = "WS8" +output = "Wasshoi!判定(2D6) > (3+1) > 4(<=8) 判定成功!! \nニンジャスレイヤー=サンのエントリーだ!!" +failure = true +rands = [ + { sides = 6, value = 3 }, + { sides = 6, value = 1 }, +] + +# Wasshoi!エントリー(D6) +[[ test ]] +game_system = "NinjaSlayer2" +input = "WSE" +output = "ニンジャスレイヤー=サンのエントリー!!(D6) > (4) > 天井破壊や床破砕、または垂直リフト射出により出現! \n標的ニンジャから2マス離れた任意の場所に【殺】コマを置くこと。 \n激しい恐怖や動揺により、次のターンの終了時まで、その場にいる【DKK】1以上のニンジャ全員は『連続側転判定』の難易度が+1される。" +rands = [ + { sides = 6, value = 4 }, +] + +# Wasshoi!エントリー(エントリー表指定) +[[ test ]] +game_system = "NinjaSlayer2" +input = "WSE@6" +output = "ニンジャスレイヤー=サンのエントリー!!(6) > 「行き先はジゴクですよ」 \nマップ上にいるNPC1人(標的ニンジャから最も近くにいる者)が、実はニンジャスレイヤーの変装であった。そのNPCのコマを【殺】に変更せよ(本物のNPCがどこにいったのかはニンジャマスターが後で考える)。 \n激しい恐怖や動揺により、次のターンの終了時まで、その場にいる【DKK】1以上のニンジャ全員は『連続側転判定』の難易度が+2される。" +rands = [] + +# NRS判定(難易度Easy, 成功) +[[ test ]] +game_system = "NinjaSlayer2" +input = "NRS_E4" +output = "NRS判定(4B6>=3) > 1,2,3,4 > 成功数:2 NRS克服!!" +success = true +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, +] + +# NRS判定(難易度Easy, 失敗, 発狂表指定なし) +[[ test ]] +game_system = "NinjaSlayer2" +input = "NRS_E4" +output = "NRS判定(4B6>=3) > 1,1,1,1 > 成功数:0 NRS発症!! \nNRS発狂(1D3) > (3) > パニック逃走や異常行動 \n恐怖のあまり絶叫し、仲間を見捨ててその場から全速力で逃げ出そうとしたり、銃を持っている場合は見えない敵に向かって乱射しようとする。 \nあるいは仲間のことをニンジャだと思い込んで攻撃を仕掛けたり、理解不能な異常行動を取ったりする。 \n探索シーケンスの場合、直ちに戦闘シーケンスが発生してこのPCの手番となり、1ターンだけマスターがこのPCを操作する。このPCは常軌を逸した身体能力を発揮し、【脚力】6として行動する。マスターはこのPCに自傷行為以外のどんな行動を取らせてもよい。このPCにとっては、あらゆるキャラが敵とみなされる。このターンの終了時に、このPCは正気に戻る。 \n戦闘中の場合も同様で、次の手番にこの状態となる。手番開始時に攻撃できる相手がニンジャしか見えていない場合、逃走を優先する。" +failure = true +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 3, value = 3 }, +] + +# NRS判定(難易度Normal, 失敗, 発狂表指定なし) +[[ test ]] +game_system = "NinjaSlayer2" +input = "NRS_N4" +output = "NRS判定(4B6>=4) > 1,1,1,1 > 成功数:0 NRS発症!! \nNRS発狂(1D6) > (6) > 気絶 \n失禁し【精神力】に1ダメージ。さらに打ち上げられたマグロめいてその場で倒れて口をパクパクとさせ、『気絶状態』となる。 \n戦闘が終了するか、一定時間が経過するか、誰かに蘇生してもらうまで、この状態は解除されない。" +failure = true +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 6 }, +] + +# NRS判定(難易度Hard, 失敗, 発狂表指定なし) +[[ test ]] +game_system = "NinjaSlayer2" +input = "NRS_H4" +output = "NRS判定(4B6>=5) > 1,1,1,1 > 成功数:0 NRS発症!! \nNRS発狂(1D6+1) > (6) > 気絶 \n失禁し【精神力】に1ダメージ。さらに打ち上げられたマグロめいてその場で倒れて口をパクパクとさせ、『気絶状態』となる。 \n戦闘が終了するか、一定時間が経過するか、誰かに蘇生してもらうまで、この状態は解除されない。" +failure = true +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 5 }, +] + +# NRS判定(難易度Ultra-hard, 失敗, 発狂表指定なし) +[[ test ]] +game_system = "NinjaSlayer2" +input = "NRS_U4" +output = "NRS判定(4B6>=6) > 1,1,1,1 > 成功数:0 NRS発症!! \nNRS発狂(1D6+1) > (7) > 心臓発作や狂死 \n急激なニンジャリアリティショックに耐えきれず、PCは心臓発作やニューロン損傷を起こして【体力】0となり、その場に倒れ『気絶状態』となる。 \nZBRアドレナリンでなければ蘇生できない。処置を受けずに時間が経過すると死亡する。" +failure = true +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 6 }, +] + +# NRS判定(難易度Easy, 失敗, 発狂表指定あり) +[[ test ]] +game_system = "NinjaSlayer2" +input = "NRS_E4@7" +output = "NRS判定(4B6>=3) > 1,1,1,1 > 成功数:0 NRS発症!! \nNRS発狂(7) > 心臓発作や狂死 \n急激なニンジャリアリティショックに耐えきれず、PCは心臓発作やニューロン損傷を起こして【体力】0となり、その場に倒れ『気絶状態』となる。 \nZBRアドレナリンでなければ蘇生できない。処置を受けずに時間が経過すると死亡する。" +failure = true +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 3, value = 3 }, +] + +# NRS判定(判定なし, 発狂表指定あり) +[[ test ]] +game_system = "NinjaSlayer2" +input = "NRS@7" +output = "NRS発狂(7) > 心臓発作や狂死 \n急激なニンジャリアリティショックに耐えきれず、PCは心臓発作やニューロン損傷を起こして【体力】0となり、その場に倒れ『気絶状態』となる。 \nZBRアドレナリンでなければ蘇生できない。処置を受けずに時間が経過すると死亡する。" +failure = true +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 3, value = 3 }, +] + + + + + + + + + + +# 以下は1版互換の動作確認 +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[N]" +output = "(4B6>=4) > 2,3,6,4 > 成功数2" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[N]" +output = "(4B6>=4) > 2,3,2,1 > 成功数0" +failure = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 2 }, + { sides = 6, value = 1 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[n]" +output = "(4B6>=4) > 2,3,6,4 > 成功数2" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[4]" +output = "(4B6>=4) > 2,3,6,4 > 成功数2" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4" +output = "(4B6>=4) > 2,3,6,4 > 成功数2" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "SNJ4" +output = "(4B6>=4) > 2,3,6,4 > 成功数2" +secret = true +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4@N" +output = "(4B6>=4) > 2,3,6,4 > 成功数2" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4@n" +output = "(4B6>=4) > 2,3,6,4 > 成功数2" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4@4" +output = "(4B6>=4) > 2,3,6,4 > 成功数2" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[H]" +output = "(4B6>=5) > 2,3,6,4 > 成功数1" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[H]" +output = "(4B6>=5) > 2,3,3,4 > 成功数0" +failure = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 3 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[UH]" +output = "(4B6>=6) > 2,3,6,4 > 成功数1" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[UH]" +output = "(4B6>=6) > 2,3,5,4 > 成功数0" +failure = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 5 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[K]" +output = "(4B6>=2) > 2,3,6,4 > 成功数4" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[k]" +output = "(4B6>=2) > 2,3,6,4 > 成功数4" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4@K" +output = "(4B6>=2) > 2,3,6,4 > 成功数4" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[2]" +output = "(4B6>=2) > 2,3,6,4 > 成功数4" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4@2" +output = "(4B6>=2) > 2,3,6,4 > 成功数4" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[E]" +output = "(4B6>=3) > 2,3,6,4 > 成功数3" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[e]" +output = "(4B6>=3) > 2,3,6,4 > 成功数3" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4@E" +output = "(4B6>=3) > 2,3,6,4 > 成功数3" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[3]" +output = "(4B6>=3) > 2,3,6,4 > 成功数3" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4@3" +output = "(4B6>=3) > 2,3,6,4 > 成功数3" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EV4[N]/2" +output = "(4B6>=4) > 2,5,6,4 > 成功数3 > カウンターカラテ!!" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EV4[N]/2" +output = "(4B6>=4) > 2,5,3,1 > 成功数1" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 5 }, + { sides = 6, value = 3 }, + { sides = 6, value = 1 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EV4[n]/2" +output = "(4B6>=4) > 2,5,6,4 > 成功数3 > カウンターカラテ!!" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EV4[4]/2" +output = "(4B6>=4) > 2,5,6,4 > 成功数3 > カウンターカラテ!!" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EV4@N/2" +output = "(4B6>=4) > 2,5,6,4 > 成功数3 > カウンターカラテ!!" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EV4[H]/2" +output = "(4B6>=5) > 2,5,6,4 > 成功数2" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EV4[UH]/2" +output = "(4B6>=6) > 6,5,6,4 > 成功数2" +rands = [ + { sides = 6, value = 6 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EV4[K]/2" +output = "(4B6>=2) > 2,5,6,4 > 成功数4 > カウンターカラテ!!" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EV4[N]" +output = "(4B6>=4) > 2,5,6,4 > 成功数3" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EV4" +output = "(4B6>=4) > 2,5,6,4 > 成功数3" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 5 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "AT4[N]" +output = "(4B6>=4) > 2,2,6,6 > 成功数2 > サツバツ!!" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "AT4" +output = "(4B6>=4) > 1,1,1,1 > 成功数0" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "AT4" +output = "(4B6>=4) > 2,2,6,6 > 成功数2 > サツバツ!!" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "x2 AT4 繰り返し実行で蓄積した出目を用いて判断しない" +output = """ +#1 +(4B6>=4) > 2,2,6,6 > 成功数2 > サツバツ!! + +#2 +(4B6>=4) > 1,1,1,1 > 成功数0""" +rands = [ + # 1回目 + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + + # 2回目 + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "AT4[n]" +output = "(4B6>=4) > 2,2,6,6 > 成功数2 > サツバツ!!" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "AT4[4]" +output = "(4B6>=4) > 2,2,6,6 > 成功数2 > サツバツ!!" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "AT4@N" +output = "(4B6>=4) > 2,2,6,6 > 成功数2 > サツバツ!!" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "AT4[K]" +output = "(4B6>=2) > 2,1,3,2 > 成功数3" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 1 }, + { sides = 6, value = 3 }, + { sides = 6, value = 2 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "AT4[H]" +output = "(4B6>=5) > 2,2,6,6 > 成功数2 > サツバツ!!" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "AT4[UH]" +output = "(4B6>=6) > 2,2,6,6 > 成功数2 > サツバツ!!" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EL4[N]" +output = "(4B6>=4) > 2,2,6,6 > 成功数2 + 2 > 4" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EL4" +output = "(4B6>=4) > 1,1,1,1 > 成功数0" +rands = [ + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EL4" +output = "(4B6>=4) > 2,2,2,6 > 成功数1 + 1 > 2" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "x2 EL4 繰り返し実行で蓄積した出目を用いて判断しない" +output = """ +#1 +(4B6>=4) > 2,2,2,6 > 成功数1 + 1 > 2 + +#2 +(4B6>=4) > 1,1,1,1 > 成功数0""" +rands = [ + # 1回目 + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + + # 2回目 + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, + { sides = 6, value = 1 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EL4[n]" +output = "(4B6>=4) > 2,2,2,2 > 成功数0" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EL4[4]" +output = "(4B6>=4) > 2,6,6,6 > 成功数3 + 3 > 6" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EL4@N" +output = "(4B6>=4) > 6,6,6,6 > 成功数4 + 4 > 8" +rands = [ + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EL4[K]" +output = "(4B6>=2) > 2,1,3,2 > 成功数3" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 1 }, + { sides = 6, value = 3 }, + { sides = 6, value = 2 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EL4[H]" +output = "(4B6>=5) > 2,2,6,6 > 成功数2 + 2 > 4" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +[[ test ]] +game_system = "NinjaSlayer2" +input = "EL4[UH]" +output = "(4B6>=6) > 2,2,6,6 > 成功数2 + 2 > 4" +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 2 }, + { sides = 6, value = 6 }, + { sides = 6, value = 6 }, +] + +# 以下は1版のバグ修正動作確認 +[[ test ]] +game_system = "NinjaSlayer2" +input = "NJ4[N] コメント" +output = "(4B6>=4) > 2,3,6,4 > 成功数2" +success = true +rands = [ + { sides = 6, value = 2 }, + { sides = 6, value = 3 }, + { sides = 6, value = 6 }, + { sides = 6, value = 4 }, +]