bcdice 3.15.0 → 3.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +29 -0
- data/i18n/DoubleCross/ja_jp.yml +2 -2
- data/i18n/Emoklore/ko_kr.yml +7 -0
- data/i18n/SkynautsBouken/ja_jp.yml +28 -28
- data/lib/bcdice/game_system/EdgeFlippers.rb +315 -0
- data/lib/bcdice/game_system/Emoklore_Korean.rb +42 -0
- data/lib/bcdice/game_system/Garactier.rb +1 -1
- data/lib/bcdice/game_system/JuinKansen_Korean.rb +251 -0
- data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +122 -2
- data/lib/bcdice/game_system/Revulture_Korean.rb +125 -0
- data/lib/bcdice/game_system/Ventangle_Korean.rb +130 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/atoz_table.rb +1184 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/randr236_table.rb +254 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/table.rb +54 -0
- data/lib/bcdice/game_system/meikyu_kingdom_basic/tk_table.rb +755 -0
- data/lib/bcdice/game_system.rb +5 -0
- data/lib/bcdice/version.rb +1 -1
- metadata +10 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0655889e9b810aa19a7d8acd91c5f1c0a4ad90b1cdf96c02a0ceb389a9dfcebb'
|
4
|
+
data.tar.gz: 4853ef0527d01f54c207fa4334564dc1a67e43bdf34199b4f5a491e0d495491a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfc8483774954f9f363a25c9d929846224bcfcf307bd8fd1725f1eb0017bf242896f5cf8992b272304356c6cf3f71f9af35173428e497d26e729b1bd480a52f4
|
7
|
+
data.tar.gz: 82c306474c22924131fddf41057a09ea4cc227f6817791323f3beaefacc8cf111226e2164336cfff7f0d139d71ba6598312767c5043e56fb6292a6b0fe2541f1
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,34 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## 3.16.1 2025/08/23
|
4
|
+
|
5
|
+
### バグ修正
|
6
|
+
- [Revulture:Korean] 親クラスの読み込み不備を修正。 ([676db9b](https://github.com/bcdice/BCDice/commit/676db9b91c8bc0598cd77b44ae9cdf2aff3725e7))
|
7
|
+
|
8
|
+
## 3.16.0 2025/08/23
|
9
|
+
|
10
|
+
### 対応ゲームシステムの追加
|
11
|
+
|
12
|
+
- 韓国語版 Ventangle (Ventangle:Korean): MY4kさんありがとうっ! ([#788](https://github.com/bcdice/BCDice/pull/788))
|
13
|
+
- 韓国語版 光砕のリヴァルチャー (Revulture:Korean): MY4kさんありがとうっ! ([#790](https://github.com/bcdice/BCDice/pull/790))
|
14
|
+
- 韓国語版 エモクロアTRPG (Emoklore:Korean): MY4kさんありがとうっ! ([#791](https://github.com/bcdice/BCDice/pull/791))
|
15
|
+
- 韓国語版 呪印感染 (JuinKansen:Korean): MY4kさんありがとうっ! ([#792](https://github.com/bcdice/BCDice/pull/792))
|
16
|
+
- EDGE FLIPPERS (EdgeFlippers): ([#795](https://github.com/bcdice/BCDice/pull/795))
|
17
|
+
|
18
|
+
### 追加機能
|
19
|
+
|
20
|
+
- [迷宮キングダム基本ルール] 追加表を実装。Facelessさんありがとうっ! ([#794](https://github.com/bcdice/BCDice/pull/794))
|
21
|
+
|
22
|
+
### 誤植修正
|
23
|
+
|
24
|
+
- [歯車の塔の探空士(冒険企画局)] 誤字の修正。IrisRainbow7さんありがとうっ! ([#778](https://github.com/bcdice/BCDice/pull/778))
|
25
|
+
- [ダブルクロス2nd,3rd] 誤字の修正。RYOSKATEさんありがとうっ! ([#786](https://github.com/bcdice/BCDice/pull/786))
|
26
|
+
- [ガラクティア] 誤字の修正。JackyAniueさんありがとうっ! ([#793](https://github.com/bcdice/BCDice/pull/793))
|
27
|
+
|
28
|
+
### 翻訳の更新
|
29
|
+
|
30
|
+
- [永い後日談のネクロニカ] 姉妹への未練表/中立者への未練表/敵への未練表の韓国語を追加。MY4kさんありがとうっ! ([#787](https://github.com/bcdice/BCDice/pull/787))
|
31
|
+
|
3
32
|
## 3.15.0 2025/06/18
|
4
33
|
|
5
34
|
### 対応ゲームシステムの追加
|
data/i18n/DoubleCross/ja_jp.yml
CHANGED
@@ -63,13 +63,13 @@ ja_jp:
|
|
63
63
|
- ["26..30", "プレッシャー。そのラウンド中に進行判定を行なったキャラクターは、判定の直後に重圧を受ける。"]
|
64
64
|
- ["31..35", "幸運がほほえむ。このラウンド中に行なう進行判定はすべてクリティカル値-1される。"]
|
65
65
|
- ["36..40", "破滅的不運。このラウンド中に行なう進行判定はすべてクリティカル値+1される。"]
|
66
|
-
- ["41..45", "
|
66
|
+
- ["41..45", "一か八かのチャンス。このラウンド中、最大達成値と難易度に+10。"]
|
67
67
|
- ["46..55", "膠着した進行。修正は特にない。"]
|
68
68
|
- ["56..60", "綱渡りのような状況。このラウンド中、難易度+1D10。"]
|
69
69
|
- ["61..65", "あるかなきかのチャンス。このラウンド中、最大達成値+10。"]
|
70
70
|
- ["66..70", "消耗を伴う作業。このラウンド中に進行判定を行なったキャラクターは、判定の直後に1D10点のHPダメージを受ける。"]
|
71
71
|
- ["71..75", "チャンス到来。このラウンド中に行なう進行判定は、ダイスが+5個される。"]
|
72
|
-
- ["76..80", "
|
72
|
+
- ["76..80", "予想外のピンチ。このラウンド中に行なう進行判定は、ダイスが-5個される。"]
|
73
73
|
- ["81..85", "緊張がレネゲイドを活性化。そのラウンド中に進行判定を行なったキャラクターは、判定の直後に1D10点侵蝕率が増加。"]
|
74
74
|
- ["86..90", "突破口の発見。このシーン中の最大達成値+10。この効果は重複しない。"]
|
75
75
|
- ["91..95", "事態の断続的な悪化。このシーン中の難易度+1D10。この効果は重複する。"]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
ja_jp:
|
2
2
|
SkynautsBouken:
|
3
|
-
special: "スペシャル(【生命点】
|
3
|
+
special: "スペシャル(【生命点】1D6回復)"
|
4
4
|
fumble: "ファンブル(ファンブル表FT)"
|
5
5
|
big_shake: "大揺れ"
|
6
6
|
fire: "火災"
|
@@ -23,9 +23,9 @@ ja_jp:
|
|
23
23
|
items:
|
24
24
|
- "なんとか大事にはいたらなかった。通常の失敗と同様の処理を行うこと。"
|
25
25
|
- "転んでしまった。キミは[転倒](p107)する。"
|
26
|
-
- "
|
27
|
-
- "
|
28
|
-
- "頭をぶつけてしまった。キミの【生命点】を「
|
26
|
+
- "失敗にイライラしてしまった。キミが獲得している【キズナ】1つの「支援チェック」にチェックを入れる。"
|
27
|
+
- "部屋を壊してしまった。自身のいるマスを[破損](p104)させる。この[破損]によって、キミの【生命点】は減少しない。"
|
28
|
+
- "頭をぶつけてしまった。キミの【生命点】を「1D6点」減少する。"
|
29
29
|
- "奇跡的な結果。 この行為判定は成功となる。"
|
30
30
|
VoyageTable:
|
31
31
|
name: "航海表"
|
@@ -41,17 +41,17 @@ ja_jp:
|
|
41
41
|
name: 航行イベント表 航行系
|
42
42
|
type: "2D6"
|
43
43
|
items:
|
44
|
-
- "フナ酔い\n
|
45
|
-
- "乱流\n
|
46
|
-
- "急変\nGMは、フライトエリア上の任意のスポット2つを選択する。そのスポットのイベントタイプは「困難系」に変更される。\n
|
44
|
+
- "フナ酔い\nバッドステータス。キミは次のクエストフェイズ終了時まで、【移動力】が「1点」低くなり、「ダッシュ」(p101)を行うことができない。\n 空の上で風に揺さぶられていると、まるで自分と世界が混ざったような感覚がするんだ。それを思い出すだけで……ウプッ。"
|
45
|
+
- "乱流\n次のシーンでは、航行表の結果にかかわらず、航行チェックで飛空艇コマが進む距離がスポット1つ分になる。\n このあたりの風の流れはデタラメだ。これじゃ、風に乗ってフネを進めることなんてできやしない。焦らず、慎重に進むべきだ。"
|
46
|
+
- "急変\nGMは、フライトエリア上の任意のスポット2つを選択する。そのスポットのイベントタイプは「困難系」に変更される。\n 空の天気はきまぐれだ。天気が変わるのを止めることは出来ない。けれども、こういう変わり方はしてほしくなかったな……。"
|
47
47
|
- "シケ\n次のシーンでは、シーンプレイヤーは航行チェックを行うことができず、「操舵に専念する」を宣言することもできない。\n ぽつり、ぽつりと窓に雨粒が滴り落ちる。こうなってしまえば、フネを進めることはできない。この間に紅茶を1杯、というのもいいだろう。……ティータイムには生憎の空模様だがね。"
|
48
48
|
- "気流-1\n飛空艇コマを1スポット分戻す。\n 飛空艇に吹く気流は、常に探空士たちの味方をするとは限らない。誰かの追い風は、誰かの向かい風となってしまうこともあるだろう。"
|
49
49
|
- "穏やかな空\nこの航行イベントには、特に効果はない。\n 見通しのいい空域。風向きも安定しており、舵を取られるようなこともないだろう。気持ちのいい青空の中、白い雲の合間を縫うようにして、フネは進んでいく。"
|
50
|
-
- "気流+1\n
|
51
|
-
- "進路良好!\n飛空艇は【手がかり】を「1つ」得る。\n
|
52
|
-
- "突風+1\n飛空艇コマを1
|
50
|
+
- "気流+1\n飛空艇コマを1スポット分進める。\n 他の空域よりも、比較的強い流れが一定の方向に吹き続けている空域。ときに探空士たちの手助けになり、ときに探空士たちに立ちはだかる。どの空域にどんな風が流れているかを見極めて進むのが、空の旅での基本だ。"
|
51
|
+
- "進路良好!\n飛空艇は【手がかり】を「1つ」得る。\n このあたりはとても見晴らしがいい。雲海から上には雲ひとつ見当たらず、邪魔な浮遊生物たちもいない。今のうちに周辺の様子を探って、残る旅路に備えよう。"
|
52
|
+
- "突風+1\n飛空艇コマを1スポット分進める。その後、飛空艇コマのいるスポットのイベントタイプを確認し、そのイベントタイプの航行イベント表を振って、出た航行イベントの効果を適用する。\n 突然、フネに強風が吹き付ける。なんとか転覆することなく持ち直したけれども、予定していたコースを外れてしまったようだ。なにか起こるかもしれない。警戒を強めたほうがいいだろう。"
|
53
53
|
- "貿易風\n次のシーンの航行チェックでは、ダイスを振らずに、航行表の結果の中から好きなものを選んで適用することができる。\n 気流が吹く空域の中でも、特に風向きが安定していて、飛空艇乗りたちに空路として好まれている空域。飛翔イカ等の小さな浮遊生物なんかも、よく群がっている。"
|
54
|
-
- "気流+2\n飛空艇コマを2スポット分進める。\n
|
54
|
+
- "気流+2\n飛空艇コマを2スポット分進める。\n うまい具合に気流に乗ることができれば、飛空艇はその性能以上の働きを見せてくれる。進路良好、この分なら、予定よりも早く目的地につくことができるだろう。"
|
55
55
|
NavigationEventEncounterTable:
|
56
56
|
name: "航行イベント表 遭遇系"
|
57
57
|
type: "2D6"
|
@@ -60,12 +60,12 @@ ja_jp:
|
|
60
60
|
- "敵対的なソラクジラ\n飛空艇は「D46[大揺れ]/1」のダメージを受ける。\n 飛空艇乗りに人気のソラクジラにも、機嫌が悪いときがある。 こんなときに近づいてしまったのなら、運が悪かったとしか言いようがない。 ご愁傷さま。"
|
61
61
|
- "トラブルメーカー\nキミの【生命点】を「3点」減少させる。\n えへへ、 じゃないよ! なんてことしてくれたんだ!"
|
62
62
|
- "敵対的な浮遊生物\n飛空艇は「D/3」のダメージを受ける。\n 浮遊生物は 飛空艇に友好的とは限らない。 彼らの生態系に飛び込んでしまったフネには、 彼らなりの出迎え方があるというものだ。"
|
63
|
-
- "検問\nこのシーンでは、キミはアクションを行うことができない。\n キミたちのフネの上に巨大な影が落ちる。 キミたちのフネの数倍はあろうかという、
|
64
|
-
- "風光明媚\n船内マップ上にいるすべてのキャラクターは、【生命点】を「1点」回復させる。\n 空を旅していると、
|
63
|
+
- "検問\nこのシーンでは、キミはアクションを行うことができない。\n キミたちのフネの上に巨大な影が落ちる。 キミたちのフネの数倍はあろうかという、 王立空軍の巡空艦だ。「女王陛下万歳!」赤い服の兵士たちが、 敬礼とともにキミたちの書類仕事を増やしていく。……やりたいことだってあったのに。"
|
64
|
+
- "風光明媚\n船内マップ上にいるすべてのキャラクターは、【生命点】を「1点」回復させる。\n 空を旅していると、 想像を絶するような絶景に恵まれることもある。夕日を受けて茜色に染まる雲海や、雲を跳ねるソライルカの群れ。 そんな光景を目に焼き付けたとき、 探空士たちは、自分たちが空を旅する意味に気づくんだ。"
|
65
65
|
- "ソラクジラ\n船内マップ上にいるすべてのキャラクターは、【生命点】を「1D6点」回復させる。\n 雲の中から、 巨大なソラクジラが浮かび上がる。きゅうんという独特の鳴き声をあげて、ゆっくりと、落ちるように雲の下へ戻っていくソラクジラの雄大な姿は、なかなか見られるものじゃない。 息を呑む圧巻の光景に、しばし目を奪われよう。"
|
66
|
-
- "大漁\n船内マップ上にいるすべてのキャラクターの【生命点】の最大値を「2点」増加する。この効果は重複しない。\n 飛翔イカの群れだ!
|
66
|
+
- "大漁\n船内マップ上にいるすべてのキャラクターの【生命点】の最大値を「2点」増加する。この効果は重複しない。\n 飛翔イカの群れだ! どうも、 窓から漏れる明かりにつられてやってきたらしい。網をはろう。今夜は新鮮なイカがたらふく食べられそうだ。"
|
67
67
|
- "気流+1\n飛空艇コマを1スポット分進める。\n 他の空域よりも、比較的強い流れが一定の方向に吹き続けている空域。ときに探空士たちの手助けになり、ときに探空士たちに立ちはだかる。どの空域にどんな風が流れているかを見極めて進むのが、空の旅での基本だ。"
|
68
|
-
- "
|
68
|
+
- "ケセランパサラン\nキミは任意の船内マップ上に配置されてるパーツ1つを選択する。そのパーツが【快適度】のキーワード効果がある場合、このセッションの間、その数値は「1点」高いものとして扱う。\n ふわふわとした大きな綿毛のような浮遊生物。その毛のさわり心地は、上級階級のソファにも使われるほど柔らかい。捕まえて飼うことができれば、一服の癒やしをあたえてくれることだろう。"
|
69
69
|
- "うさこぷたー\nキミの【生命点】を「3点」回復する。\n ふたつの耳を回転させて空を飛ぶうさぎのような浮遊生物が、ずっとこちらを見つめている。かわいいはかわいいのだが、こいつは一体なんなんだろう……。"
|
70
70
|
NavigationEventOnBoardTable:
|
71
71
|
name: "航行イベント表 船内系"
|
@@ -73,30 +73,30 @@ ja_jp:
|
|
73
73
|
items:
|
74
74
|
- "二日酔い\nバッドステータス。キミは次のクエストフェイズ終了時まで、すべての行為判定の【ファンブル値】が「1」高いものとして扱う。\n 仲間との楽しい時間、まだ見ぬ素晴らしい景色。空での旅路は、ビールを美味しくするものにあふれている。だからこれは、 空の旅で出くわす様々な危険のひとつだともいえるんだ。嵐や空賊みたいにさ。頭の痛い存在だよ。"
|
75
75
|
- "イメージダウン\n船内マップ上にいるすべてのキャラクターは、キミに対して獲得している【キズナ】の「支援チェック」にチェックを入れる。\n お前、本当に何したんだよ……。"
|
76
|
-
- "白熱\nキミは、任意の船内マップ上のキャラクターを1人選ぶ。その後、キミは船内マップ上の、キャラクターが居ない底面マスが2
|
76
|
+
- "白熱\nキミは、任意の船内マップ上のキャラクターを1人選ぶ。その後、キミは船内マップ上の、キャラクターが居ない底面マスが2つ以上あるパーツを選び、そのパーツの、キャラクターがいない任意の底面マス2つにキミと、選んだキャラクターを移動させる。このシーン、キミは「交流」以外のアクションを行うことはできない。(パーツを選ぶことができなかった場合、キャラクターの移動は行われず、キミはこのシーン中、アクションを行うことができない)\n ちょっとした暇つぶしのはずだった。キミがカードを取り出したから、相手も乗っただけだ。でも、勝ったほうは嬉しいし、負けた方は悔しい。それだけのことを、キミたちは忘れてはいけなかったんだ。"
|
77
77
|
- "見てしまった\nキミは、自身が獲得している任意の【キズナ】1つを選ぶ。その【キズナ】は失われる。\n 誰にだって、隠したい秘密のひとつやふたつはあるものだ。それを咎めるのはよくない。偶然それを目にしてしまったキミが悪いわけでもない。運が悪かっただけなんだ。な?"
|
78
|
-
- "ケンカ\nキミは、自身が獲得している任意の【キズナ】1
|
78
|
+
- "ケンカ\nキミは、自身が獲得している任意の【キズナ】1つを選んで、その「支援チェック」にチェックを入れる。もし、キミが獲得しているすべての【キズナ】に「支援チェック」が入っていた場合、前述のチェックを入れる処理のかわりにキミの【生命点】を「1D6点」減少させる。\n 些細ないさかいで、チームワークにひびが入ってしまうことはよくあることだ。人の仲は、ときに人生に影を落とす。 もっとも、ケンカする相手もいないよりは、よっぽどましな人生だと思うけどね。"
|
79
79
|
- "おしゃべり\nこのシーン中、キミが「交流」のアクションを行うとき、キミのいるパーツ内のキャラクター以外のキャラクターも選ぶことができる。\n 船内に張り巡らされた伝声管を通せば、船内の誰とでも連絡をとることができる。いざというときのための設備だが、何気ないおしゃべりに花を咲かせるのもいいものだ。"
|
80
|
-
- "月が綺麗ですね\nキミは、任意の船内マップ上のキャラクター1人を選ぶ。キミは、そのキャラクターに対する【キズナ】を獲得する。\n
|
80
|
+
- "月が綺麗ですね\nキミは、任意の船内マップ上のキャラクター1人を選ぶ。キミは、そのキャラクターに対する【キズナ】を獲得する。\n 夜空に黄色い月が、まんまるな月が輝いている。フネの中はいつだって機関室の音で騒々しいが、月を眺めるときだけはなぜか、しぃんとした静けさを感じるんだ。"
|
81
81
|
- "プレゼント\nキミは、任意の船内マップ上のキャラクター1人を選ぶ。そのキャラクターは、キミに対する【キズナ】を獲得する。\n ちょっといい感じの包み紙に包まれたチョコレートや、普段は飲まない銘柄の茶葉。特段意味のあるわけでもない置物。幸福とはつまるところ、そういったものと、誰かの思いでできている。"
|
82
82
|
- "気流+1\n飛空艇コマを1スポット分進める。\n 他の空域よりも、比較的強い流れが一定の方向に吹き続けている空域。ときに探空士たちの手助けになり、ときに探空士たちに立ちはだかる。どの空域にどんな風が流れているかを見極めて進むのが、空の旅での基本だ。"
|
83
83
|
- "記念日\n船内マップ上にいるすべてのキャラクターは、キミに対して【キズナ】を獲得する。\n 今朝起きてから、みんながどこかよそよそしい。話しかけても要領を得ないし、自分だけのけものにして、なにかの話し合いをしているらしい。いやだな。なにかしたっけな。あれ、そういえば今日って……。"
|
84
|
-
- "パーティ\n船内マップ上にいるすべてのキャラクターは、それぞれ、任意のキャラクター1人を選ぶ。それぞれのキャラクターは、選んだキャラクターへの【キズナ】を獲得する。\n この日ばっかりは仕事はよそう!
|
84
|
+
- "パーティ\n船内マップ上にいるすべてのキャラクターは、それぞれ、任意のキャラクター1人を選ぶ。それぞれのキャラクターは、選んだキャラクターへの【キズナ】を獲得する。\n この日ばっかりは仕事はよそう! 樽いっぱいのビールに、船長秘蔵のワイン。テーブルの上にはとにかく、飲むものと、つまむものでいっぱいだ。"
|
85
85
|
NavigationEventHardTable:
|
86
86
|
name: "航行イベント表 困難系"
|
87
87
|
type: "2D6"
|
88
88
|
items:
|
89
|
-
- "ケガ\nバッドステータス。キミは次のクエストフェイズ終了時まで、【生命点】の最大値が「5点」となる。すでに5点以上の【生命点】があった場合は、あわせて【生命点】が「5点」になる。\n
|
90
|
-
- "大災害\n飛空艇は「D/5」のダメージを受ける。このダメージに《回避運動》のスキル効果を使用することはできない。\n 空で旅を続けていれば、どうしようもない状況に出くわすなんてしょっちゅうだ。そんなときどうするのかって?
|
89
|
+
- "ケガ\nバッドステータス。キミは次のクエストフェイズ終了時まで、【生命点】の最大値が「5点」となる。すでに5点以上の【生命点】があった場合は、あわせて【生命点】が「5点」になる。\n ケガのひとつやふたつが、旅を終える理由になるわけがない。だが、何をするにしてもキミの身に走る激痛は、確実にキミの行く手を阻むだろう。これまで通りの穏やかな旅路とはいかなくなるはずだ。"
|
90
|
+
- "大災害\n飛空艇は「D/5」のダメージを受ける。このダメージに《回避運動》のスキル効果を使用することはできない。\n 空で旅を続けていれば、どうしようもない状況に出くわすなんてしょっちゅうだ。そんなときどうするのかって? どうしようもないからただ祈る? 決まっているさ。それでもなんとかするんだよ。"
|
91
91
|
- "自然の猛威\n飛空艇は「D/4」のダメージを受ける。このダメージに《回避運動》のスキル効果を使用することはできない。\n 『塔』の上の人間は、いつか自然を人間が支配するときが来ると思っている。自然の力を身を以て体感する探空士に、そんな考えをもっているヤツはいない。"
|
92
92
|
- "シケ\n次のシーンでは、シーンプレイヤーは航行チェックを行うことができず、「操舵に専念する」を宣言することもできない。\n ぽつり、ぽつりと窓に雨粒が滴り落ちる。こうなってしまえば、フネを進めることはできない。この間に紅茶を1杯、というのもいいだろう。……ティータイムには生憎の空模様だがね。"
|
93
93
|
- "落雷\n飛空艇は「D/3」のダメージを受ける。このダメージに《回避運動》のスキル効果を使用することはできない。\n 突如、飛空艇を轟音と、閃光が包む。何事か、とキミが周囲を確認するより先に、フネに稲妻がほとばしり、どこかが焼ける焦げ臭い匂いが、キミの鼻腔をつく。これはまずいぞ。はやくこの空域を抜けるんだ!"
|
94
94
|
- "ゲリラ豪雨\n飛空艇は「D/3」のダメージを受ける。\n 暴風に呑まれまいと、出力最大で風雨を振り切る。エンジンは赤熱し、吐き出す蒸気が機関室を白く染める。……もってくれよ。こんなところで空に放り出されるのはゴメンだ。"
|
95
95
|
- "嵐の前触れ\n次のシーンでは、スポットのイベントタイプや、「その場に留まる」を宣言したかどうかにかかわらず、航行イベントを「航行イベント表:困難系」を使用して決定する。\n 突然目の前に現れたどす黒い雲。気圧計の針がみるみるうちに下がっていき、キミたちに不穏な前触れを告げる。これは、覚悟を決めなければならないかもしれない……。"
|
96
96
|
- "シケ\n次のシーンでは、シーンプレイヤーは航行チェックを行うことができず、「操舵に専念する」を宣言することもできない。\n ぽつり、ぽつりと窓に雨粒が滴り落ちる。こうなってしまえば、フネを進めることはできない。この間に紅茶を1杯、というのもいいだろう。……ティータイムには生憎の空模様だがね。"
|
97
|
-
- "気流+2\n飛空艇コマを2
|
98
|
-
- "荒れ狂う空\nキミは「身体・感覚:7」の行為判定を3回行う。失敗した回数だけ、飛空艇は「D/3」のダメージを受ける。\n うっかりしてるにしても、これはひどすぎだ!
|
99
|
-
- "低気圧の中心\nキミは「身体・感覚:9
|
97
|
+
- "気流+2\n飛空艇コマを2スポット分移動する。\n このあたりは危険な空域らしいが、このくらいの風を乗りこなせなければ、プロとは言えない。事実、キミはそれをやってのけた。これが、探空士の仕事ぶりというものさ。"
|
98
|
+
- "荒れ狂う空\nキミは「身体・感覚:7」の行為判定を3回行う。失敗した回数だけ、飛空艇は「D/3」のダメージを受ける。\n うっかりしてるにしても、これはひどすぎだ! 気づけばフネは暴風域のど真ん中。これを抜けるのは、ただの乱気流を避けるのとはワケが違うんだぞ!"
|
99
|
+
- "低気圧の中心\nキミは「身体・感覚:9」の行為判定を行う。この判定に成功しない限り、飛空艇コマはフライトエリア上を移動することはできず、次のシーンの航行イベントも、自動的に「低気圧の中心」となる。行為判定に成功したかどうかにかかわらず、その後飛空艇は「D/4」のダメージを受ける。このダメージに《回避運動》のスキル効果を使用することはできない。\n 巨大な渦巻きのような雲。近づくだけでフネは引き寄せられ、一瞬でも舵をはなせば呑み込まれてしまう。その圧倒的な力はさながら、巨大な竜に襲われているかのようだ。"
|
100
100
|
NavigationEventLongJourneyTable:
|
101
101
|
name: "航行イベント表 長旅系"
|
102
102
|
type: "2D6"
|
@@ -107,8 +107,8 @@ ja_jp:
|
|
107
107
|
- "食糧難\n船内マップ上のキャラクター全員の【生命点】が「2点」減少する。\n キミたちの前には、缶詰がひとつだけ。キミたちは顔を突き合わせ、お互いをにらみつける。どのみち、こんなものを奪いあっても、何にもならないというのに。"
|
108
108
|
- "老朽化\nキミのいるマスが[破損]する。この[破損]によって、キミの【生命点】は減少しない。\n 最近ミシミシというようになってきたな。とは思ったんだ。いつか修理しなきゃ、と思っていたさ。でも、こう、パキッといきなりいっちゃうとは思わなかったんだ。本当だよ。"
|
109
109
|
- "まだ大丈夫……\nこの航行イベントには、特に効果はない。\n 今の所、このフネにはまだ安全な空の旅を続けるだけの余裕はある。だが、キミたちの脳裏には不安がよぎる。安全はあっても、安心はできないのだ。"
|
110
|
-
- "先を急ぐ\n
|
111
|
-
- "パンデミック\nキミは「フナ酔い」(p91)、「二日酔い」(p93)、「ケガ」(p94)から1つを選ぶ。船内マップ上にいるキャラクター全員は、選ばれた航行イベントに記載されているバッドステータスを受ける。\n 悪いことに、病気というものはときとして人から人へと伝染する。地上の流行り病も大変だというのに、空の上でこうなってしまったらとんでもない。ああ、天はキミたちを見放したのだろうか。"
|
110
|
+
- "先を急ぐ\nこのシーン中、キミはアクションを行うことができない。そのかわりに、飛空艇コマを1スポット分移動させる。\n 先を急ごう。焦燥に苛まれる中、キミたち全員がそう思っていた。のんびりと旅を楽しんでいる時間はない。そんな時間は、とっくの昔に過ぎ去っている。"
|
111
|
+
- "パンデミック\nキミは「フナ酔い」(p91)、「風邪」(p92)、「二日酔い」(p93)、「ケガ」(p94)から1つを選ぶ。船内マップ上にいるキャラクター全員は、選ばれた航行イベントに記載されているバッドステータスを受ける。\n 悪いことに、病気というものはときとして人から人へと伝染する。地上の流行り病も大変だというのに、空の上でこうなってしまったらとんでもない。ああ、天はキミたちを見放したのだろうか。"
|
112
112
|
- "気流+1\n飛空艇コマを1スポット分移動させる。\n しめた!追い風となっている気流を見つける。一刻も早く目的地までたどり着かなければならないキミたちにとって、まさに願ってもないことだ。"
|
113
|
-
- "こんなときに\nシーンプレイヤーは、「航行イベント表:困難系」(p94)
|
114
|
-
- "遭難\n
|
113
|
+
- "こんなときに\nシーンプレイヤーは、「航行イベント表:困難系」(p94)を振ること。振って出た航行イベントの効果が適用される。\n いくらキミたちが困っていても、自然はそんなことかまいやしない。困難は見境なく訪れ、キミたちをさらに困らせる。"
|
114
|
+
- "遭難\nこの航行イベントが発生した時点で、セッションは終了となる。お疲れ様。\n その後、キミたちが再び『塔』へと戻ってくることはなかった。嵐にのまれたのだろうか、空賊や、浮遊生物に襲われたのだろうか。それを知る者は、もうどこにもいない。"
|
@@ -0,0 +1,315 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class EdgeFlippers < Base
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = 'EdgeFlippers'
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = 'EDGE FLIPPERS'
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
SORT_KEY = 'えつしふりつはあす'
|
14
|
+
|
15
|
+
# ダイスボットの使い方
|
16
|
+
HELP_MESSAGE = <<~MESSAGETEXT
|
17
|
+
■ 汎用コマンド
|
18
|
+
xHD+ySD=t,t,t
|
19
|
+
人間ダイスと怪異ダイスをロールして、特定の出目があるか判定します。
|
20
|
+
x: 人間ダイスの数
|
21
|
+
y: 怪異ダイスの数
|
22
|
+
t: 必要な出目(省略化)
|
23
|
+
|
24
|
+
■ 拮抗判定
|
25
|
+
xHD+ySD=Xi
|
26
|
+
人間ダイスと怪異ダイスをロールして、ゾロ目が必要数あるか判定します。
|
27
|
+
i: 必要なゾロ目の個数
|
28
|
+
|
29
|
+
■ 全力判定
|
30
|
+
xHFD>=t
|
31
|
+
xSFD>=t
|
32
|
+
x: ダイスの数
|
33
|
+
t: 目標値(省略時20)
|
34
|
+
|
35
|
+
■ 存在判定
|
36
|
+
EXIST -> 2HD+2SD
|
37
|
+
|
38
|
+
■ 都市判定
|
39
|
+
xHCD -> xHD=1,2,3,4
|
40
|
+
|
41
|
+
■ 超常判定
|
42
|
+
nSPD -> nSD=7,8,9,10
|
43
|
+
|
44
|
+
■ 術式判定
|
45
|
+
TD
|
46
|
+
|
47
|
+
■ ランダム表
|
48
|
+
BAET:【人間】にも【怪異】にも影響のある後遺症
|
49
|
+
HAET:【人間寄り】の時に影響のある後遺症
|
50
|
+
SAET:【怪異寄り】の時に影響のある後遺症
|
51
|
+
MESSAGETEXT
|
52
|
+
|
53
|
+
def eval_game_system_specific_command(command)
|
54
|
+
roll_hs(command) || roll_alias(command) || roll_fullpower(command) || roll_technical(command) || roll_tables(command, TABLES)
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
class HSCommand
|
60
|
+
class << self
|
61
|
+
def parse(command)
|
62
|
+
m = /^(?:(\d+)HD(?:\+(\d+)SD)?|(\d+)SD(?:\+(\d+)HD)?)(?:=(?:([\d,]+)|X(\d+)))?$/.match(command)
|
63
|
+
return nil unless m
|
64
|
+
|
65
|
+
h = m[1]&.to_i || m[4]&.to_i || 0
|
66
|
+
s = m[2]&.to_i || m[3]&.to_i || 0
|
67
|
+
targets = parse_target(m[5])
|
68
|
+
same_value = m[6]&.to_i
|
69
|
+
|
70
|
+
if h == 0 && s == 0
|
71
|
+
return nil
|
72
|
+
end
|
73
|
+
|
74
|
+
return HSCommand.new(h, s, targets, same_value)
|
75
|
+
end
|
76
|
+
|
77
|
+
private
|
78
|
+
|
79
|
+
def parse_target(str)
|
80
|
+
return nil unless str
|
81
|
+
|
82
|
+
str.split(",").filter { |s| !s.empty? }.map(&:to_i).sort
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def initialize(h, s, targets, same_value)
|
87
|
+
@h = h
|
88
|
+
@s = s
|
89
|
+
@targets = targets
|
90
|
+
@same_value = same_value
|
91
|
+
end
|
92
|
+
|
93
|
+
def roll(randomizer)
|
94
|
+
@hv = randomizer.roll_barabara(@h, 6).sort
|
95
|
+
@sv = randomizer.roll_barabara(@s, 10).sort
|
96
|
+
values = (@hv + @sv).sort
|
97
|
+
|
98
|
+
@is_success = if @targets
|
99
|
+
subset?(values, @targets)
|
100
|
+
elsif @same_value
|
101
|
+
values.group_by(&:itself).any? { |_k, v| v.length >= @same_value }
|
102
|
+
end
|
103
|
+
|
104
|
+
Result.new.tap do |r|
|
105
|
+
r.text = [expr(), result_values(), result_label].compact.join(" > ")
|
106
|
+
unless @is_success.nil?
|
107
|
+
r.condition = @is_success
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
private
|
113
|
+
|
114
|
+
def subset?(superset, subset)
|
115
|
+
return true if subset.empty?
|
116
|
+
|
117
|
+
i = 0
|
118
|
+
superset.each do |a|
|
119
|
+
b = subset[i]
|
120
|
+
if b == a
|
121
|
+
i += 1
|
122
|
+
if i == subset.length
|
123
|
+
return true
|
124
|
+
end
|
125
|
+
elsif a > b
|
126
|
+
return false
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
return false
|
131
|
+
end
|
132
|
+
|
133
|
+
def expr
|
134
|
+
"(#{expr_body()}#{expr_cond()})"
|
135
|
+
end
|
136
|
+
|
137
|
+
def expr_body
|
138
|
+
if @h != 0 && @s != 0
|
139
|
+
"#{@h}HD+#{@s}SD"
|
140
|
+
elsif @h != 0
|
141
|
+
"#{@h}HD"
|
142
|
+
else
|
143
|
+
"#{@s}SD"
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
def expr_cond
|
148
|
+
if @targets
|
149
|
+
"=#{@targets.join(',')}"
|
150
|
+
elsif @same_value
|
151
|
+
"=X#{@same_value}"
|
152
|
+
else
|
153
|
+
""
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
def result_values
|
158
|
+
d6 = !@hv.empty? ? "D6[#{@hv.join(',')}]" : nil
|
159
|
+
d10 = !@sv.empty? ? "D10[#{@sv.join(',')}]" : nil
|
160
|
+
[d6, d10].compact.join(" ")
|
161
|
+
end
|
162
|
+
|
163
|
+
def result_label
|
164
|
+
case @is_success
|
165
|
+
when true
|
166
|
+
"成功"
|
167
|
+
when false
|
168
|
+
"失敗"
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
def roll_hs(command)
|
174
|
+
cmd = HSCommand.parse(command)
|
175
|
+
return nil unless cmd
|
176
|
+
|
177
|
+
cmd.roll(@randomizer)
|
178
|
+
end
|
179
|
+
|
180
|
+
def parse_target(str)
|
181
|
+
return nil unless str
|
182
|
+
|
183
|
+
str.split(",").filter { |s| !s.empty? }.map(&:to_i).sort
|
184
|
+
end
|
185
|
+
|
186
|
+
def subset?(superset, subset)
|
187
|
+
return true if subset.empty?
|
188
|
+
|
189
|
+
i = 0
|
190
|
+
superset.each do |a|
|
191
|
+
b = subset[i]
|
192
|
+
if b == a
|
193
|
+
i += 1
|
194
|
+
if i == subset.length
|
195
|
+
return true
|
196
|
+
end
|
197
|
+
elsif a > b
|
198
|
+
return false
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
return false
|
203
|
+
end
|
204
|
+
|
205
|
+
def roll_alias(command)
|
206
|
+
case command
|
207
|
+
when "EXIST"
|
208
|
+
return roll_hs("2HD+2SD")
|
209
|
+
end
|
210
|
+
|
211
|
+
m = /^(\d+)(HCD|SPD)$/.match(command)
|
212
|
+
return nil unless m
|
213
|
+
|
214
|
+
n = m[1].to_i
|
215
|
+
case m[2]
|
216
|
+
when "HCD"
|
217
|
+
roll_hs("#{n}HD=1,2,3,4")
|
218
|
+
when "SPD"
|
219
|
+
roll_hs("#{n}SD=7,8,9,10")
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
def roll_fullpower(command)
|
224
|
+
parser = Command::Parser.new(/[HS]FD/, round_type: @round_type)
|
225
|
+
.disable_modifier.enable_prefix_number.restrict_cmp_op_to(nil, :>=)
|
226
|
+
parsed = parser.parse(command)
|
227
|
+
return nil unless parsed
|
228
|
+
|
229
|
+
n = parsed.prefix_number
|
230
|
+
side = parsed.command == "HFD" ? 6 : 10
|
231
|
+
target = parsed.target_number || 20
|
232
|
+
return nil if n == 0
|
233
|
+
|
234
|
+
dice = @randomizer.roll_barabara(n, side).sort
|
235
|
+
sum = dice.sum()
|
236
|
+
tries = [dice]
|
237
|
+
while sum < target
|
238
|
+
dice = @randomizer.roll_barabara(n, side).sort
|
239
|
+
tries.push(dice)
|
240
|
+
sum += dice.sum()
|
241
|
+
end
|
242
|
+
|
243
|
+
Result.new.tap do |r|
|
244
|
+
r.text = "(#{n}#{parsed.command}>=#{target})"
|
245
|
+
tries.each do |ds|
|
246
|
+
r.text += " > #{ds.sum}[#{ds.join(',')}]"
|
247
|
+
end
|
248
|
+
|
249
|
+
is_success = tries.length < 5
|
250
|
+
r.text += " > #{sum}(#{tries.length}回)"
|
251
|
+
r.text += is_success ? " > 成功" : " > 失敗"
|
252
|
+
r.condition = is_success
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
def roll_technical(command)
|
257
|
+
return nil unless command == "TD"
|
258
|
+
|
259
|
+
value = @randomizer.roll_once(10)
|
260
|
+
is_success = value <= 2
|
261
|
+
Result.new.tap do |r|
|
262
|
+
r.text = "(TD) > #{value} > #{is_success ? '成功' : '失敗'}"
|
263
|
+
r.condition = is_success
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
TABLES = {
|
268
|
+
"BAET" => DiceTable::Table.new(
|
269
|
+
"【人間】にも【怪異】にも影響のある後遺症",
|
270
|
+
"1D12",
|
271
|
+
[
|
272
|
+
"鏡に映らない:鏡や水面に姿が映らなくなる。他者から見えなくなるわけではない",
|
273
|
+
"部分的に透明:身体のどこかが透明になる",
|
274
|
+
"部分的欠落:身体のどこかが消えて触ることもできなくなる。生命維持に影響はない",
|
275
|
+
"角が生える:角が生えてくる。元から角がある場合はさらに追加",
|
276
|
+
"しっぽ:動物のしっぽが生える",
|
277
|
+
"けもみみ:動物の耳が頭に生える",
|
278
|
+
"影がなくなる:自分の影がなくなってしまう",
|
279
|
+
"涙が止まらない:ずっと涙が流れ続けて止まらなくなる",
|
280
|
+
"視界の端に何かいる:常に視界の端に何かがいて、踊っている",
|
281
|
+
"耳鳴り:ずっと耳鳴りがやまない。たまに幻聴がする",
|
282
|
+
"美しい幻聴:時々他人の声が現実離れした美しい声に変わって聞こえる",
|
283
|
+
"皮膚の下のうごめき:皮膚の下でずっと何かが蠢いているように感じられる",
|
284
|
+
]
|
285
|
+
),
|
286
|
+
"HAET" => DiceTable::Table.new(
|
287
|
+
"【人間寄り】の時に影響のある後遺症",
|
288
|
+
"1D6",
|
289
|
+
[
|
290
|
+
"幻肢の感覚:存在しない追加の腕や翼の感覚がある",
|
291
|
+
"声変わり:普段とは違う声になってしまう",
|
292
|
+
"怪異の片鱗:【怪異寄り】のときの容姿の一部が【人間寄り】の時にも出てしまう",
|
293
|
+
"幻覚:時折やけに生々しい幻覚が見えるようになる",
|
294
|
+
"恐怖:あらゆるものが怖く見える",
|
295
|
+
"怪異言語:【人間】の領域には存在しない謎の言語が理解できる",
|
296
|
+
]
|
297
|
+
),
|
298
|
+
"SAET" => DiceTable::Table.new(
|
299
|
+
"【怪異寄り】の時に影響のある後遺症",
|
300
|
+
"1D6",
|
301
|
+
[
|
302
|
+
"吸精体質:他者に触れると生命力を吸収してしまう。特に仲の良い相手だとより強くなる",
|
303
|
+
"威圧する視線:あなたの視線は周囲に強烈な威圧感を与えてしまう",
|
304
|
+
"キメラ:あなたの容姿の一部が、他の【越境者】の【怪異寄り】のときの容姿のものと同じになる",
|
305
|
+
"異なる怪異:あなた本来の【怪異】の姿とは違う姿に変化してしまう",
|
306
|
+
"ポルターガイスト:周囲でラップ音や部品の浮遊といった怪現象が多発する",
|
307
|
+
"人間そのもの:【怪異寄り】のときでも人間そのものの容姿になってしまう",
|
308
|
+
]
|
309
|
+
),
|
310
|
+
}.freeze
|
311
|
+
|
312
|
+
register_prefix('\d+HD', '\d+SD', '\d+HCD', '\d+SPD', '\d+HFD', '\dSFD', 'EXIST', 'TD', TABLES.keys)
|
313
|
+
end
|
314
|
+
end
|
315
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BCDice
|
4
|
+
module GameSystem
|
5
|
+
class Emoklore_Korean < Emoklore
|
6
|
+
# ゲームシステムの識別子
|
7
|
+
ID = "Emoklore:Korean"
|
8
|
+
|
9
|
+
# ゲームシステム名
|
10
|
+
NAME = "에모크로아TRPG"
|
11
|
+
|
12
|
+
# ゲームシステム名の読みがな
|
13
|
+
#
|
14
|
+
# 「ゲームシステム名の読みがなの設定方法」(docs/dicebot_sort_key.md)を参考にして
|
15
|
+
# 設定してください
|
16
|
+
SORT_KEY = "国際化:Korean:에모크로아TRPG"
|
17
|
+
|
18
|
+
# ダイスボットの使い方
|
19
|
+
HELP_MESSAGE = <<~MESSAGETEXT
|
20
|
+
・기능치 판정(xDM<=y)
|
21
|
+
"(개수)DM<=(판정치)"로 판정합니다.
|
22
|
+
주사위의 개수는 생략 가능하며, 생략 시 1개로 설정됩니다.
|
23
|
+
ex)2DM<=5 DM<=8
|
24
|
+
|
25
|
+
・기능치 판정(sDAa+z)
|
26
|
+
"(기능 레벨)DA(능력치)+(주사위 보너스)"로 판정합니다.
|
27
|
+
주사위 보너스의 개수는 생략 가능하며, 생략 시 0개로 설정됩니다.
|
28
|
+
기능 레벨에는 1~3의 수치를 입력합니다. 기본 기능으로 판정하려면 기능 레벨에"b"를 입력하세요.
|
29
|
+
주사위 개수는 기능 레벨과 주사위 보너스 개수에 따라 결정되며, s+z개의 주사위를 굴립니다. (s="b"인 경우 s=1)
|
30
|
+
판정치는 s+a 입니다.(s="b"인 경우에는 s=0)
|
31
|
+
MESSAGETEXT
|
32
|
+
|
33
|
+
register_prefix_from_super_class()
|
34
|
+
|
35
|
+
def initialize(command)
|
36
|
+
super(command)
|
37
|
+
|
38
|
+
@locale = :ko_kr
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|