Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DoubleCross]ハプニングチャートとRWプロローグチャートを振るためのコマンド(HC, PCP, PCN)を追加 #736

Open
wants to merge 16 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions i18n/DoubleCross/ja_jp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,56 @@ ja_jp:
"86_90": 不快感(ふかいかん)
"91_95": 憤懣(ふんまん)
"96_100": 敵愾心(てきがいしん)
HC:
name: ハプニングチャート
type: 1D100
items:
- ["1..5", "こともなし。修正は特にない。"]
- ["6..10", "専門的知識が必要。そのラウンドの間、指定された技能が4レベル以下のキャラクターが獲得する進行値は-1となる(最低0)"]
- ["11..15", "焦り。そのラウンド中、難易度+1D10。"]
- ["16..20", "一歩間違えば致命的な状況。次の進行判定に失敗した場合、今まで獲得した進行値が0になる。"]
- ["21..25", "異常な興奮。そのラウンド中、進行判定に失敗したキャラクターは暴走を受ける。"]
- ["26..30", "プレッシャー。そのラウンド中に進行判定を行なったキャラクターは、判定の直後に重圧を受ける。"]
- ["31..35", "幸運がほほえむ。このラウンド中に行なう進行判定はすべてクリティカル値-1される。"]
- ["36..40", "破滅的不運。このラウンド中に行なう進行判定はすべてクリティカル値+1される。"]
- ["41..45", "ーか八かのチャンス。このラウンド中、最大達成値と難易度に+10。"]
- ["46..55", "膠着した進行。修正は特にない。"]
- ["56..60", "綱渡りのような状況。このラウンド中、難易度+1D10。"]
- ["61..65", "あるかなきかのチャンス。このラウンド中、最大達成値+10。"]
- ["66..70", "消耗を伴う作業。このラウンド中に進行判定を行なったキャラクターは、判定の直後に1D10点のHPダメージを受ける。"]
- ["71..75", "チャンス到来。このラウンド中に行なう進行判定は、ダイスが+5個される。"]
- ["76..80", "予想外のビンチ。このラウンド中に行なう進行判定は、ダイスが-5個される。"]
- ["81..85", "緊張がレネゲイドを活性化。そのラウンド中に進行判定を行なったキャラクターは、判定の直後に1D10点侵蝕率が増加。"]
- ["86..90", "突破口の発見。このシーン中の最大達成値+10。この効果は重複しない。"]
- ["91..95", "事態の断続的な悪化。このシーン中の難易度+1D10。この効果は重複する。"]
- ["96..100","順当な進行。このラウンド中に進行判定に成功したキャラクターは、進行値を+1得る。"]

PCP:
name: プロローグチャート(ポジティブ)
type: 1D10
items:
- 【ヴィクトリー】 ヴィランの集団と戦い、勝利する。報道陣や観衆がその勝利を称える。
- 【ハプニング】 銀行や商店などにいる際、突発的な犯罪に巻き込まれ、それを解決する。
- 【レスキュー】 火事や爆発事故、倒壊などの災害現場で、市民を救出する。
- 【ヴァーサス】 ライバルである強力なヴィランと対決している。決着はつかず、ヴィランは逃亡する。
- 【ヒーローインタビュー】 メディアから取材を受ける。事件の解決や首長からの表彰によって、あるいは注目のヒーローとしてなど。
- 【トレーニング】 ヒーローとしてトレーニングを行なっている。身体能力やエフェクトの訓練、知識の補強など。
- 【オリジン】 自分がヒーローとなったきっかけ、発端の場面を回想する。初めてオーヴァードに覚醒した場面や、初めて他人を救った時、かつての憧れのヒーローについてなど。
- 【エブリデイ・ライフ】 日常生活を送っている。久々の休暇か、ヒーロー以外の生活か。ロイスの対象と会話するのもよいだろう。
- 【ニューパワー】 新しいエフェクトや装備を身につける、受け取る。これで新たな力を手に入れたことになる。
- 【サクセス】 なにかに大成功した場面だ。仕事でもよいし、休暇中のゲームやスポーツかもしれない。

PCN:
name: プロローグチャート(ネガティブ)
type: 1D10
items:
- 【ディフィート】 ヴィランと戦い、敗北した場面を回想する。その時の負傷は既に回復しているが、誇りはまだ回復していない。
- 【アクシデント】 不運に見舞われる。事故に巻き込まれる、たまたまヴィランの攻撃を受けるなど。その不幸で誰かが助かるかもしれない。
- 【ディザスター】 事故や災害に巻き込まれる、あるいは過去に巻き込まれた場面の回想。自分はオーヴァードの能力で生き残るが、他は⋯⋯。
- 【ウィークポイント】 ライバルである強力なヴィランと対決している。ヴィランはあなたの弱点や致命的欠陥、不吉な未来を告げて去っていく。
- 【バッシング】 メディアや市民から批判を受ける。過去の失敗や、今の乱暴な解決法など。
- 【リカバリー】 治療を受けている。最近怪我をした、過去の古傷が残っている、もう肉体が限界だ⋯⋯など。
- 【トラウマ】 過去の不幸、悲劇、失敗などを回想している。それがヒーローになったきっかけかもしれない。
- 【アキューズ】 あなたを責める会話。ロイスの対象、被害者の肉親など。それでもヒーローを続けるしかない⋯⋯。
- 【タイムリミット】 診療を受け、限界が近いことを告げられる。オーヴァードの能力に肉体が耐えられない、能力が衰えているなど。
- 【プリーズ】 ロイスの対象などから、ヒーローを引退するようにお願いされる。あなたが心配だ、危険すぎる、など。聞き入れるわけにはいかないが⋯⋯。
19 changes: 18 additions & 1 deletion lib/bcdice/game_system/DoubleCross.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ class DoubleCross < Base
  ポジティブとネガティブの両方を振って、表になっている側に○を付けて表示します。
  もちろん任意で選ぶ部分は変更して構いません。

・ハプニングチャート(HC)
・RWプロローグチャート ポジティブ (PCP)
・RWプロローグチャート ネガティブ (PCN)
・D66ダイスあり
INFO_MESSAGE_TEXT

Expand Down Expand Up @@ -213,6 +216,10 @@ def eval_game_system_specific_command(command)
return dx.execute(@randomizer)
end

RYOSKATE marked this conversation as resolved.
Show resolved Hide resolved
if self.class::TABLES.key?(command)
return roll_tables(command, self.class::TABLES)
end

if command == 'ET'
return roll_emotion_table()
end
Expand Down Expand Up @@ -356,13 +363,23 @@ def negative_emotion_table(locale)
]
).freeze
end
end

def translate_tables(locale)
{
"HC" => DiceTable::RangeTable.from_i18n("DoubleCross.HC", locale),
"PCP" => DiceTable::Table.from_i18n("DoubleCross.PCP", locale),
"PCN" => DiceTable::Table.from_i18n("DoubleCross.PCN", locale),
}
end
end
RYOSKATE marked this conversation as resolved.
Show resolved Hide resolved
# 感情表(ポジティブ)
POSITIVE_EMOTION_TABLE = positive_emotion_table(:ja_jp).freeze

# 感情表(ネガティブ)
NEGATIVE_EMOTION_TABLE = negative_emotion_table(:ja_jp).freeze

RYOSKATE marked this conversation as resolved.
Show resolved Hide resolved
TABLES = translate_tables(:ja_jp).freeze
register_prefix('\d+DX', TABLES.keys)
end
end
end
72 changes: 72 additions & 0 deletions test/data/DoubleCross.toml
Original file line number Diff line number Diff line change
Expand Up @@ -1872,6 +1872,78 @@ rands = [
{ sides = 2, value = 1 },
]

[[ test ]]
game_system = "DoubleCross"
input = "HC"
output = "ハプニングチャート(1) > こともなし。修正は特にない。"
rands = [
{ sides = 100, value = 1 }
]

[[ test ]]
game_system = "DoubleCross"
input = "HC"
output = "ハプニングチャート(55) > 膠着した進行。修正は特にない。"
rands = [
{ sides = 100, value = 55 }
]

[[ test ]]
game_system = "DoubleCross"
input = "HC"
output = "ハプニングチャート(100) > 順当な進行。このラウンド中に進行判定に成功したキャラクターは、進行値を+1得る。"
rands = [
{ sides = 100, value = 100 }
]

[[ test ]]
game_system = "DoubleCross"
input = "PCP"
output = "プロローグチャート(ポジティブ)(1) > 【ヴィクトリー】 ヴィランの集団と戦い、勝利する。報道陣や観衆がその勝利を称える。"
rands = [
{ sides = 10, value = 1 }
]

[[ test ]]
game_system = "DoubleCross"
input = "PCP"
output = "プロローグチャート(ポジティブ)(5) > 【ヒーローインタビュー】 メディアから取材を受ける。事件の解決や首長からの表彰によって、あるいは注目のヒーローとしてなど。"
rands = [
{ sides = 10, value = 5 }
]

[[ test ]]
game_system = "DoubleCross"
input = "PCP"
output = "プロローグチャート(ポジティブ)(10) > 【サクセス】 なにかに大成功した場面だ。仕事でもよいし、休暇中のゲームやスポーツかもしれない。"
rands = [
{ sides = 10, value = 10 }
]

[[ test ]]
game_system = "DoubleCross"
input = "PCN"
output = "プロローグチャート(ネガティブ)(1) > 【ディフィート】 ヴィランと戦い、敗北した場面を回想する。その時の負傷は既に回復しているが、誇りはまだ回復していない。"
rands = [
{ sides = 10, value = 1 }
]

[[ test ]]
game_system = "DoubleCross"
input = "PCN"
output = "プロローグチャート(ネガティブ)(5) > 【バッシング】 メディアや市民から批判を受ける。過去の失敗や、今の乱暴な解決法など。"
rands = [
{ sides = 10, value = 5 }
]

[[ test ]]
game_system = "DoubleCross"
input = "PCN"
output = "プロローグチャート(ネガティブ)(10) > 【プリーズ】 ロイスの対象などから、ヒーローを引退するようにお願いされる。あなたが心配だ、危険すぎる、など。聞き入れるわけにはいかないが⋯⋯。"
rands = [
{ sides = 10, value = 10 }
]

[[ test ]]
game_system = "DoubleCross"
input = "10dx+5*2@8"
Expand Down