From 5d33c39f1d1162a061f97825b11ce0012bef61b4 Mon Sep 17 00:00:00 2001 From: SAKATA Sinji Date: Mon, 24 Jun 2024 20:49:26 +0900 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=E3=83=A8=E3=82=BF=E3=83=90=E3=83=8A?= =?UTF-8?q?=E3=80=8D=E3=82=92=E8=BF=BD=E5=8A=A0?= 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/Yotabana.rb | 62 ++++++++++++++++++++++++++++++ test/data/Yotabana.toml | 15 ++++++++ 3 files changed, 78 insertions(+) create mode 100644 lib/bcdice/game_system/Yotabana.rb create mode 100644 test/data/Yotabana.toml diff --git a/lib/bcdice/game_system.rb b/lib/bcdice/game_system.rb index 00387d9a2..c4b697878 100644 --- a/lib/bcdice/game_system.rb +++ b/lib/bcdice/game_system.rb @@ -263,6 +263,7 @@ require "bcdice/game_system/YankeeYogSothoth" require "bcdice/game_system/YearZeroEngine" require "bcdice/game_system/Yggdrasill" +require "bcdice/game_system/Yotabana" require "bcdice/game_system/ZettaiReido" require "bcdice/game_system/ZombiLine" require "bcdice/game_system/FinalFantasyXIV" diff --git a/lib/bcdice/game_system/Yotabana.rb b/lib/bcdice/game_system/Yotabana.rb new file mode 100644 index 000000000..1ee96587d --- /dev/null +++ b/lib/bcdice/game_system/Yotabana.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +module BCDice + module GameSystem + class Yotabana < Base + # ゲームシステムの識別子 + ID = "Yotabana" + + # ゲームシステム名 + NAME = "ヨタバナ" + + # ゲームシステム名の読みがな + SORT_KEY = "よたはな" + + # ダイスボットの使い方 + HELP_MESSAGE = <<~INFO_MESSAGE_TEXT + ▪️ 各種表 + COT 収束表 + EVT イベント表 + INFO_MESSAGE_TEXT + + def eval_game_system_specific_command(command) + roll_tables(command, TABLES) + end + + TABLES = { + "COT" => DiceTable::Table.new( + "収束表", + "1D6", + [ + "サプライズ忍者/唐突に忍者が乱入し、場面にいるキャラクターを倒して去っていく", + "仙人/唐突に仙人が乱入し、不思議な力で事態を収束させて帰っていく", + "洗脳薬/不思議な薬が散布され、キャラクターを洗脳し、事態を収束させる", + "作者の手/キャラクターたちの言動が唐突に変わり、事態が収束する。作者の大いなる手だ……", + "神の奇跡/神が奇跡を起こし事態を収束させる。または神の信徒になり、信仰の前に争いは無意味であると悟る", + "和解/話し合えば分かり合えた。この世は対話で通じ合える", + ] + ), + "EVT" => DiceTable::Table.new( + "イベント表", + "1D12", + [ + "道端に刺さっていた聖剣を拾う", + "ゾンビの群れと遭遇する", + "落ちていたコインを拾う。ちょっとラッキーな気分になる", + "あらゆるところで爆発が!?", + "唐突に冬が訪れ、猛吹雪が襲う", + "無人のトラックが突っ込んでくる", + "ネコちゃんに懐かれる", + "料金滞納で水道を止められる", + "ゴキゲンな音楽が鳴り響く", + "水着になる", + "オークションにかけられる", + "殺人アンドロイドが襲いかかってくる", + ] + ), + }.freeze + + register_prefix(TABLES.keys) + end + end +end diff --git a/test/data/Yotabana.toml b/test/data/Yotabana.toml new file mode 100644 index 000000000..5dfe67a39 --- /dev/null +++ b/test/data/Yotabana.toml @@ -0,0 +1,15 @@ +[[ test ]] +game_system = "Yotabana" +input = "COT" +output = "収束表(1) > サプライズ忍者/唐突に忍者が乱入し、場面にいるキャラクターを倒して去っていく" +rands = [ + { sides = 6, value = 1 }, +] + +[[ test ]] +game_system = "Yotabana" +input = "EVT" +output = "イベント表(1) > 道端に刺さっていた聖剣を拾う" +rands = [ + { sides = 12, value = 1 }, +]