From 586dcb231ec2dfa9b6301c895ee0552a6408a7dc Mon Sep 17 00:00:00 2001 From: faceless192x Date: Fri, 20 Mar 2026 11:00:52 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E5=88=9D=E5=AE=9F=E8=A3=85,=20Rubocop?= =?UTF-8?q?=E6=A4=9C=E8=A8=BC=E6=B8=88=E3=81=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/bcdice/game_system.rb | 1 + lib/bcdice/game_system/WorldEndScrapyard.rb | 331 ++++++++++++++++++++ test/data/WorldEndScrapyard.toml | 153 +++++++++ 3 files changed, 485 insertions(+) create mode 100644 lib/bcdice/game_system/WorldEndScrapyard.rb create mode 100644 test/data/WorldEndScrapyard.toml diff --git a/lib/bcdice/game_system.rb b/lib/bcdice/game_system.rb index 7bfaa1c16..5cb0b0b79 100644 --- a/lib/bcdice/game_system.rb +++ b/lib/bcdice/game_system.rb @@ -298,6 +298,7 @@ require "bcdice/game_system/Warhammer4" require "bcdice/game_system/WerewolfTheApocalypse5th" require "bcdice/game_system/WitchQuest" +require "bcdice/game_system/WorldEndScrapyard" require "bcdice/game_system/WorldOfDarkness" require "bcdice/game_system/WorldsEndFrontline" require "bcdice/game_system/YankeeMustDie" diff --git a/lib/bcdice/game_system/WorldEndScrapyard.rb b/lib/bcdice/game_system/WorldEndScrapyard.rb new file mode 100644 index 000000000..b1c45cf84 --- /dev/null +++ b/lib/bcdice/game_system/WorldEndScrapyard.rb @@ -0,0 +1,331 @@ +# frozen_string_literal: true + +module BCDice + module GameSystem + class WorldEndScrapyard < Base + # ゲームシステムの識別子 + ID = 'WorldEndScrapyard' + + # ゲームシステム名 + NAME = 'World End scrapyard' + + # ゲームシステム名の読みがな + SORT_KEY = 'わあるとえんとすくらつふやあと' + + # ダイスボットの使い方 + HELP_MESSAGE = <<~INFO_MESSAGETEXT + ■判定 WES<=t t:目標値({能力値}+{悪運}) + + 例)WES<=50+10:能力値50,悪運10で判定し、その結果を表示する。 + WES<=30: 悪運30で技能判定し、その結果を表示する。 + + ■各種表 + ・《変異表》 HEN HENC(任意選択,RoCのC) + ・《発掘表》 HAK HAKC( 同上 ) + ・《PC/NPC関係性表》 KAN + ・《シナリオの目的表》 MOK + ・《シナリオの場所表》 BAS + ・《登場NPC表》 TOJ + ・《探索表》 TANx+b (x:レベル,1~5 b:修正+5) + INFO_MESSAGETEXT + + register_prefix("WES", "HEN", "HAK", "KAN", "MOK", "BAS", "TOJ", "TAN") + + def initialize(command) + super(command) + + @round_type = RoundType::CEIL + end + + def eval_game_system_specific_command(command) + resolute_action(command) || + roll_roc_table(command) || + roll_search_table(command) || + roll_tables(command, TABLES) + end + + private + + # 技能判定 + # @param [String] command + # @return [Result] + def resolute_action(command) + m = /^WES<=((\d+)([+]\d+)?)/.match(command) + return nil unless m + + target = + if m[1].empty? + nil + else + Arithmetic.eval(m[1], @round_type) + end + + if target.nil? + return nil + end + + dice = @randomizer.roll_once(100) + + return Result.new.tap do |result| + result.condition = (dice <= target) + diff = target - dice + + sequence = [ + "(WES<=#{target})", + dice.to_s, + result.success? ? "成功" : "失敗", + "差分値#{diff}" + ].compact + + result.text = sequence.join(" > ") + end + end + + # 変異表 + VARIATION_TABLE = [ + "0:[回復不能]状態になります。", + "1:[異形]状態になります。", + "2:[大型]状態になります([小柄]状態だった場合でも)", + "3: 特に効果はありませんが『外見』を自由に変更させても構いません。", + "4:《悪運》以外の《能力値》を【2つ】を『ランダム』で選んで、その《能力値》の数値を入れ替えます。", + "5:《悪運》以外の《能力値》を【2つ】を『任意』で選んで、その《能力値》の数値を入れ替えます。", + "6: 特に効果はありません。", + "7:[小柄]状態になります([大型]状態だった場合でも)", + "8:《悪運》以外の《能力値》【5つ】の数値を【10点単位】で再分配します。", + "9:[異形]状態を打ち消します。", + ].freeze + + # 発掘表 + EXCAVATION_TABLE = [ + "01: なにも発見できなかった。", + "02:《悪運》を【レベル×3点】減少させる。", + "03: なにも発見できなかった。", + "04:《悪運》を【レベル×3点】上昇させる。", + "05: 何かの『物資・材料?』を発見する(内容はGM/PCで相談する)", + "06:《煙草》3本分、または《弾薬》3発分のどちらか【1つ】を得る。", + "07: 壊れた『日用品?』を発見する(内容はGM/PCの相談で決める)", + "08:《消費アイテム》をランダムで【1つ】を得る。", + "09: 壊れた『家具類?』を発見する(内容はGM/PCの相談で決める)", + "10:《装備アイテム》をランダムで【1つ】を得る。", + ].freeze + + # 探索表 + SEARCH_TABLE = [ + "06:エネミー:レベル1『スカベンジャー』PC数×1体と遭遇する。", + "07:なにもなし。", + "08:エネミー:レベル1『下水ネズミの群れ』PC数×2体と遭遇する。", + "09:なにもなし。", + "10:《対抗判定:魅力/成功率35》を行い、勝利時に《発掘表》を1回振る。", + "11:なにもなし。", + "12:《行為判定:魅力》の成功時、次回《探索表》の結果に【+5】を加える。", + "13:なにもなし。", + "14:《悪運》を【PCのレベル×3点】上昇させる。", + "15:行商人から【1レベル】までの《消費/装備アイテム》を交換・購入できる。", + "16:エネミー:レベル2『粗暴な自警団』PC数×1体と遭遇する。", + "17:なにもなし。", + "18:エネミー:レベル2『バイオゾンビ』PC数×2体と遭遇する。", + "19:なにもなし。", + "20:《対抗判定:知識/成功率40》を行い、勝利時に《発掘表》を1回振る。", + "21:なにもなし。", + "22:《行為判定:知識》の成功時、次回《探索表》の結果に【+5】を加える。", + "23:なにもなし。", + "24:《悪運》を【PCのレベル×3点】上昇させる。", + "25:行商人から【3レベル】までの《消費/装備アイテム》を交換・購入できる。", + "26:エネミー:レベル3『ピットスパイダー』PC数×1体と遭遇する。", + "27:なにもなし。", + "28:エネミー:レベル3『バイオグール』PC数×2体と遭遇する。", + "29:なにもなし。", + "30:《対抗判定:器用/成功率45》を行い、勝利時に《発掘表》を1回振る。", + "31:なにもなし。", + "32:《行為判定:器用》の成功時、次回《探索表》の結果に【+5】を加える。", + "33:なにもなし。", + "34:《悪運》を【PCのレベル×3点】上昇させる。", + "35:行商人から【5レベル】までの《消費/装備アイテム》を交換・購入できる。", + "36:エネミー:レベル4『暴走オートマトン』PC数×1体と遭遇する。", + "37:なにもなし。", + "38:エネミー:レベル4『ネクロソルジャー』PC数×2体と遭遇する。", + "39:なにもなし。", + "40:《対抗判定:敏捷/成功率50》を行い、勝利時に《発掘表》を1回振る。", + ].freeze + + def roll_roc_table(command) + m = /^(HEN|HAK)(C)?/.match(command) + return nil unless m + + sequence = [] + result_text = "" + cmd = m[1] + + target_table = [] + case cmd + when "HEN" + sequence.push("変異表") + target_table = VARIATION_TABLE + when "HAK" + sequence.push("発掘表") + target_table = EXCAVATION_TABLE + end + + if m[2].nil? + result_text = target_table[@randomizer.roll_once(10) - 1] + else + roc_table_all = [] + [0..9].each do |i| + roc_table_all.push(target_table[i]) + end + result_text = roc_table_all.join("\n") + end + + return Result.new.tap do |result| + sequence.push(result_text) + result.text = sequence.join(" > ") + end + end + + def roll_search_table(command) + m = /^(TAN)([1-5])([+]5)?/.match(command) + return nil unless m + + sequence = ["探索表"] + level = m[2].to_i + mod = + if m[3].nil? + 0 + else + Arithmetic.eval(m[3], @round_type) + end + idx = level * 5 + @randomizer.roll_once(10) + mod + result_text = SEARCH_TABLE[idx - 6] + + return Result.new.tap do |result| + sequence.push(result_text) + result.text = sequence.join(" > ") + end + end + TABLES = { + "KAN" => DiceTable::RangeTable.new( + "PC/NPC関係性表", + "1D10", + [ + [1, '物心付いた時からの長い幼馴染'], + [2..3, '旅立った頃からの始まりの仲間'], + [4..5, 'なにかどうしようもない腐れ縁'], + [6..7, '既に互いの腕を信用できる同志'], + [8..9, '未だ相手を良く知らない同業者'], + [10, 'いま出会ったばかりの仕事相手'], + ] + ), + "MOK" => DiceTable::RangeTable.new( + "シナリオの目的表", + "1D100", + [ + [1..6, '目的の物品を入手する'], + [7..12, '目的の情報を入手する'], + [13..18, '目的の人物と接触する'], + [19..24, '目的の人物を防衛する'], + [25..30, '目的の人物を救出する'], + [31..37, '場所を調査・探索する'], + [38..44, '場所を通過・突破する'], + [45..51, '場所を制圧・破壊する'], + [52..58, '場所から脱出する'], + [59..65, '場所を防衛する'], + [66..73, '敵目標を討伐する'], + [74..80, '敵目標を捕獲する'], + [81..87, '敵目標と和解する'], + [88..94, '敵目標を追跡する'], + [95..99, '敵目標から逃走する'], + [100, 'その他(GMの裁量で決めて良い)'], + ] + ), + "BAS" => DiceTable::RangeTable.new( + "シナリオの場所表", + "1D100", + [ + [1..7, '小規模コミュニティ〈シヴィラツィオ〉が主体。'], + [8..9, '小規模コミュニティ〈ペルディトゥス〉小種族区分が混在している。'], + [10, '小規模コミュニティ〈ペルディトゥス:トロウル〉が主体。'], + [11, '小規模コミュニティ〈ペルディトゥス:オーガ〉が主体。'], + [12, '小規模コミュニティ〈ペルディトゥス:ゴブ〉が主体。'], + [13, '小規模コミュニティ〈ペルディトゥス:アドラー〉が主体。'], + [14, '小規模コミュニティ〈ペルディトゥス:ドヴェルク〉が主体。'], + [15..19, '小規模コミュニティ〈フラグメンテ・マキナ〉が主体。'], + [20..24, '小規模コミュニティ〈サバイバーズ〉が主体。'], + [25..29, '小規模コミュニティ〈チルドレンズ〉が主体。'], + [30..35, '大規模コミュニティ(すべての種族が混在している)'], + [36..38, '廃墟〈シヴィラツィオ〉の住居跡など。'], + [39..41, '廃墟〈ペルディトゥス〉の森林や洞窟。'], + [42..44, '廃墟〈フラグメンテ・マキナ〉の機械施設。'], + [45..47, '廃墟〈サバイバーズ〉のバラックやキャンプ跡。'], + [48..50, '廃墟〈チルドレンズ〉のスラム跡や下水道など。'], + [51, '遺跡《テックレベル》2(神域の神殿など)'], + [52..56, '遺跡《テックレベル》3(古代の城塞など)'], + [57..64, '遺跡《テックレベル》5(廃ビルや研究所など)'], + [65..69, '遺跡《テックレベル》7(壊れた軌道エレベータなど)'], + [70, '遺跡《テックレベル》8(墜された恒星間宇宙艦など)'], + [71..80, '荒野'], + [81..86, '森林'], + [87..92, '沼沢'], + [93..99, '汚染領域(放射能や高密度魔力や生物汚染で汚染されている)'], + [100, 'その他(GMの裁量で決めて良い)'], + ] + ), + "TOJ" => DiceTable::RangeTable.new( + "登場NPC表", + "1D100", + [ + [1..2, '勇敢な小動物(子犬など)'], + [3..4, '温厚な乗輓用生物(ロバなど)'], + [5..6, '何もかも諦めた無気力な孤児'], + [7..8, '汚染で奇病を抱える賢い子供'], + [9..10, 'トラウマで言葉を失った無口な子供'], + [11..12, '暴力しか知らない戦闘狂の野生少年'], + [13..14, '昔の歌を歌い続ける夢見がちな少女'], + [15..16, '仲間を守るために戦う熱血漢の少年'], + [17..18, '物資を溜め込む利己主義な銭ゲバ少女'], + [19..20, '盗みが得意で小生意気なスラムの少年'], + [21..22, '人を裏切ることに躊躇しない狡猾な少女'], + [23..24, '機械いじりが得意な天才メカニック少年'], + [25..26, '大人を信用せず一人で生き延びる孤独な少女'], + [27..28, '早く大人にならざるを得なかった冷徹な少年兵'], + [29..30, '過去の文明に憧れ、古い本を読み漁る知識少女'], + [31..32, '復讐に燃える元軍人'], + [33..34, '薬物中毒の荒くれ戦士'], + [35..36, '冷酷だが仲間思いの傭兵'], + [37..38, '汚染地帯に潜む孤独な狩人'], + [39..40, 'カルト教団の狂信な宣教師'], + [41..42, '医術を独学で身につけた流れ者'], + [43..44, '金儲けと裏切りが得意な詐欺師'], + [45..46, '植物栽培に没頭する農業主義者'], + [47..48, '家族を探し続ける高潔な放浪者'], + [49..50, '話題を売りさばく胡散臭い情報屋'], + [51..52, 'コミュニティを守る厳格すぎる保安官'], + [53..54, '機械やロボットを操る天才エンジニア'], + [55..56, '奴隷売買を生業とする冷血な奴隷商人'], + [57..58, '倫理を失ったマッドサイエンティスト'], + [59..60, 'ロックで人々を鼓舞する放浪の演奏者'], + [61..62, '酒とギャンブルに溺れる自暴自棄な中年'], + [63..64, '汚染地帯を探索するトレジャーハンター'], + [65..66, '美しい外見で人を操るサイコパスな美女'], + [67..68, '過去の罪に苛まれる贖罪意識の強い戦士'], + [69..70, 'コミュニティ周辺を操る豪腕フィクサー'], + [71..72, '戦争の記憶を引きずる老兵'], + [73..74, '何も信じず虚無的な哲学者'], + [75..76, '権力欲が強く独裁的な集落支配者'], + [77..78, '過去の文明の知識を伝える語り部'], + [79..80, '薬草や民間療法に詳しい薬師の老婆'], + [81..82, '隠し物資を山ほど持つ強欲な蓄財家'], + [83..84, '落ちぶれたかつてのカリスマ的預言者'], + [85..86, '最後の正義を信じる老いた保安官代理'], + [87..88, 'コミュニティの厳しくも公正な指導者'], + [89..90, '疲れ果てたが諦めきれない不屈の老婆'], + [91..92, '汚染に体を蝕まれながらも戦う頑固親父'], + [93..94, '最高の銃を作る頑固なガンスミスの職人'], + [95..96, '交易路を熟知した熟練のキャラバン隊長'], + [97..98, '情報データベースの無機質な対話型AI'], + [99..100, '古い時空に存在していた高慢な魔法知性'], + ] + ), + }.freeze + end + end +end diff --git a/test/data/WorldEndScrapyard.toml b/test/data/WorldEndScrapyard.toml new file mode 100644 index 000000000..a71c4edb0 --- /dev/null +++ b/test/data/WorldEndScrapyard.toml @@ -0,0 +1,153 @@ +[[ test ]] +game_system = "WorldEndScrapyard" +input = "WES<=50 成功" +output = "(WES<=50) > 30 > 成功 > 差分値20" +success = true +rands = [ + { sides = 100, value = 30 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "WES<=50 失敗" +output = "(WES<=50) > 60 > 失敗 > 差分値-10" +failure = true +rands = [ + { sides = 100, value = 60 }, +] + + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "HEN 変異表" +output = "変異表 > 0:[回復不能]状態になります。" +rands = [ + { sides = 10, value = 1 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "HEN 変異表" +output = "変異表 > 9:[異形]状態を打ち消します。" +rands = [ + { sides = 10, value = 10 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "HENC 変異表(任意)" +output = "変異表 > 0:[回復不能]状態になります。\n1:[異形]状態になります。\n2:[大型]状態になります([小柄]状態だった場合でも)\n3: 特に効果はありませんが『外見』を自由に変更させても構いません。\n4:《悪運》以外の《能力値》を【2つ】を『ランダム』で選んで、その《能力値》の数値を入れ替えます。\n5:《悪運》以外の《能力値》を【2つ】を『任意』で選んで、その《能力値》の数値を入れ替えます。\n6: 特に効果はありません。\n7:[小柄]状態になります([大型]状態だった場合でも)\n8:《悪運》以外の《能力値》【5つ】の数値を【10点単位】で再分配します。\n9:[異形]状態を打ち消します。" +rands = [ +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "HAK 発掘表" +output = "発掘表 > 01: なにも発見できなかった。" +rands = [ + { sides = 10, value = 1 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "HAK 発掘表" +output = "発掘表 > 10:《装備アイテム》をランダムで【1つ】を得る。" +rands = [ + { sides = 10, value = 10 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "HAKC 発掘表(任意)" +output = "発掘表 > 01: なにも発見できなかった。\n02:《悪運》を【レベル×3点】減少させる。\n03: なにも発見できなかった。\n04:《悪運》を【レベル×3点】上昇させる。\n05: 何かの『物資・材料?』を発見する(内容はGM/PCで相談する)\n06:《煙草》3本分、または《弾薬》3発分のどちらか【1つ】を得る。\n07: 壊れた『日用品?』を発見する(内容はGM/PCの相談で決める)\n08:《消費アイテム》をランダムで【1つ】を得る。\n09: 壊れた『家具類?』を発見する(内容はGM/PCの相談で決める)\n10:《装備アイテム》をランダムで【1つ】を得る。" +rands = [ +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "TAN1 探索表" +output = "探索表 > 06:エネミー:レベル1『スカベンジャー』PC数×1体と遭遇する。" +rands = [ + { sides = 10, value = 1 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "TAN5 探索表" +output = "探索表 > 35:行商人から【5レベル】までの《消費/装備アイテム》を交換・購入できる。" +rands = [ + { sides = 10, value = 10 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "TAN5+5 探索表" +output = "探索表 > 40:《対抗判定:敏捷/成功率50》を行い、勝利時に《発掘表》を1回振る。" +rands = [ + { sides = 10, value = 10 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "KAN PC/NPC関係性表" +output = "PC/NPC関係性表(1) > 物心付いた時からの長い幼馴染" +rands = [ + { sides = 10, value = 1 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "KAN PC/NPC関係性表" +output = "PC/NPC関係性表(10) > いま出会ったばかりの仕事相手" +rands = [ + { sides = 10, value = 10 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "MOK シナリオの目的表" +output = "シナリオの目的表(1) > 目的の物品を入手する" +rands = [ + { sides = 100, value = 1 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "MOK シナリオの目的表" +output = "シナリオの目的表(100) > その他(GMの裁量で決めて良い)" +rands = [ + { sides = 100, value = 100 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "BAS シナリオの場所表" +output = "シナリオの場所表(1) > 小規模コミュニティ〈シヴィラツィオ〉が主体。" +rands = [ + { sides = 100, value = 1 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "BAS シナリオの場所表" +output = "シナリオの場所表(100) > その他(GMの裁量で決めて良い)" +rands = [ + { sides = 100, value = 100 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "TOJ 登場NPC表" +output = "登場NPC表(1) > 勇敢な小動物(子犬など)" +rands = [ + { sides = 100, value = 1 }, +] + +[[ test ]] +game_system = "WorldEndScrapyard" +input = "TOJ 登場NPC表" +output = "登場NPC表(100) > 古い時空に存在していた高慢な魔法知性" +rands = [ + { sides = 100, value = 100 }, +] + From 7be6d329f7eac45f836d20b5f34a22f9bdfc4f35 Mon Sep 17 00:00:00 2001 From: faceless192x Date: Fri, 20 Mar 2026 11:06:43 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=E7=99=BA=E6=8E=98=E8=A1=A8=E3=81=AE?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/bcdice/game_system/WorldEndScrapyard.rb | 20 ++++++++++---------- test/data/WorldEndScrapyard.toml | 6 +++--- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/bcdice/game_system/WorldEndScrapyard.rb b/lib/bcdice/game_system/WorldEndScrapyard.rb index b1c45cf84..54b0252a5 100644 --- a/lib/bcdice/game_system/WorldEndScrapyard.rb +++ b/lib/bcdice/game_system/WorldEndScrapyard.rb @@ -97,16 +97,16 @@ def resolute_action(command) # 発掘表 EXCAVATION_TABLE = [ - "01: なにも発見できなかった。", - "02:《悪運》を【レベル×3点】減少させる。", - "03: なにも発見できなかった。", - "04:《悪運》を【レベル×3点】上昇させる。", - "05: 何かの『物資・材料?』を発見する(内容はGM/PCで相談する)", - "06:《煙草》3本分、または《弾薬》3発分のどちらか【1つ】を得る。", - "07: 壊れた『日用品?』を発見する(内容はGM/PCの相談で決める)", - "08:《消費アイテム》をランダムで【1つ】を得る。", - "09: 壊れた『家具類?』を発見する(内容はGM/PCの相談で決める)", - "10:《装備アイテム》をランダムで【1つ】を得る。", + "0: なにも発見できなかった。", + "1:《悪運》を【レベル×3点】減少させる。", + "2: なにも発見できなかった。", + "3:《悪運》を【レベル×3点】上昇させる。", + "4: 何かの『物資・材料?』を発見する(内容はGM/PCで相談する)", + "5:《煙草》3本分、または《弾薬》3発分のどちらか【1つ】を得る。", + "6: 壊れた『日用品?』を発見する(内容はGM/PCの相談で決める)", + "7:《消費アイテム》をランダムで【1つ】を得る。", + "8: 壊れた『家具類?』を発見する(内容はGM/PCの相談で決める)", + "9:《装備アイテム》をランダムで【1つ】を得る。", ].freeze # 探索表 diff --git a/test/data/WorldEndScrapyard.toml b/test/data/WorldEndScrapyard.toml index a71c4edb0..c9fbf1248 100644 --- a/test/data/WorldEndScrapyard.toml +++ b/test/data/WorldEndScrapyard.toml @@ -43,7 +43,7 @@ rands = [ [[ test ]] game_system = "WorldEndScrapyard" input = "HAK 発掘表" -output = "発掘表 > 01: なにも発見できなかった。" +output = "発掘表 > 0: なにも発見できなかった。" rands = [ { sides = 10, value = 1 }, ] @@ -51,7 +51,7 @@ rands = [ [[ test ]] game_system = "WorldEndScrapyard" input = "HAK 発掘表" -output = "発掘表 > 10:《装備アイテム》をランダムで【1つ】を得る。" +output = "発掘表 > 9:《装備アイテム》をランダムで【1つ】を得る。" rands = [ { sides = 10, value = 10 }, ] @@ -59,7 +59,7 @@ rands = [ [[ test ]] game_system = "WorldEndScrapyard" input = "HAKC 発掘表(任意)" -output = "発掘表 > 01: なにも発見できなかった。\n02:《悪運》を【レベル×3点】減少させる。\n03: なにも発見できなかった。\n04:《悪運》を【レベル×3点】上昇させる。\n05: 何かの『物資・材料?』を発見する(内容はGM/PCで相談する)\n06:《煙草》3本分、または《弾薬》3発分のどちらか【1つ】を得る。\n07: 壊れた『日用品?』を発見する(内容はGM/PCの相談で決める)\n08:《消費アイテム》をランダムで【1つ】を得る。\n09: 壊れた『家具類?』を発見する(内容はGM/PCの相談で決める)\n10:《装備アイテム》をランダムで【1つ】を得る。" +output = "発掘表 > 0: なにも発見できなかった。\n1:《悪運》を【レベル×3点】減少させる。\n2: なにも発見できなかった。\n3:《悪運》を【レベル×3点】上昇させる。\n4: 何かの『物資・材料?』を発見する(内容はGM/PCで相談する)\n5:《煙草》3本分、または《弾薬》3発分のどちらか【1つ】を得る。\n6: 壊れた『日用品?』を発見する(内容はGM/PCの相談で決める)\n7:《消費アイテム》をランダムで【1つ】を得る。\n8: 壊れた『家具類?』を発見する(内容はGM/PCの相談で決める)\n9:《装備アイテム》をランダムで【1つ】を得る。" rands = [ ] From 2e805410cb69903b2de275510b862dd29fd6807f Mon Sep 17 00:00:00 2001 From: faceless192x Date: Fri, 20 Mar 2026 11:21:43 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=E3=83=98=E3=83=AB=E3=83=97=E3=81=AE?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/bcdice/game_system/WorldEndScrapyard.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/bcdice/game_system/WorldEndScrapyard.rb b/lib/bcdice/game_system/WorldEndScrapyard.rb index 54b0252a5..868bbc704 100644 --- a/lib/bcdice/game_system/WorldEndScrapyard.rb +++ b/lib/bcdice/game_system/WorldEndScrapyard.rb @@ -14,10 +14,12 @@ class WorldEndScrapyard < Base # ダイスボットの使い方 HELP_MESSAGE = <<~INFO_MESSAGETEXT - ■判定 WES<=t t:目標値({能力値}+{悪運}) + ■判定 WES<=t t:成功率({能力値}+{悪運}) + 能力値は(筋力・敏捷・器用・知識・魅力)のいずれか。 + 成功・失敗・差分値を表示する。 - 例)WES<=50+10:能力値50,悪運10で判定し、その結果を表示する。 - WES<=30: 悪運30で技能判定し、その結果を表示する。 + 例)WES<=20+10:能力値20,悪運10で判定し、その結果を表示する。 + WES<=30: 悪運30で判定し、その結果を表示する。 ■各種表 ・《変異表》 HEN HENC(任意選択,RoCのC)