Skip to content

Commit

Permalink
detatoko-world: ラスボスチャート・クエストチャートを実装
Browse files Browse the repository at this point in the history
  • Loading branch information
koi-chan committed Jan 30, 2018
1 parent 6ebf7a6 commit e326b1e
Show file tree
Hide file tree
Showing 4 changed files with 158 additions and 0 deletions.
42 changes: 42 additions & 0 deletions doc/plugins/trpg/detatoko.md
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,48 @@ d66 ダイスの結果に加え選択肢がもう1回ある項目についても
> でたとこサーガ [koi-chan]<趣味・弱点>: [5,6,6] -> 566 : 暑さ (特定の環境)
```

### ラスボスチャート

#### 書式

```
.dlbc
。でラスボスチャート
```

#### 説明

サプリメント『でたとこワールドツアー』で追加されたルールです。
ラスボスチャート表 (p.102-103) から1つを選びます。

####

```
.dlbc
> でたとこサーガ [koi-chan]<ラスボスチャート>: [1,6] -> 16 : 【侵略】オーク王
```

### クエストチャート

#### 書式

```
.dqc
。でクエストチャート
```

#### 説明

サプリメント『でたとこワールドツアー』で追加されたルールです。
クエストチャート表 (p.104) から1つを選びます。

####

```
.dqc
> でたとこサーガ [koi-chan]<クエストチャート>: [1,4] -> 14 : うち捨てられて廃墟となった街を訪れる。
```

### 1行キャラクターシート

#### 書式
Expand Down
83 changes: 83 additions & 0 deletions lib/rgrb/plugin/trpg/detatoko/gamedatas.rb
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,89 @@ class Generator
%w(読書・文芸 美術品・絵画 歌・音楽・楽器演奏 施策・詩吟・ポエム/クイズ・なぞなぞ・パズル ギャンブル・賭け事 ゲーム),
%w(暗い場所 せまい場所 高い場所 広い場所 寒さ 暑さ)
]

# チャート表
# でたとこワールドツアー
CHARTS = {
# ラスボスチャート
lastboss: %w(
【侵略】暗黒魔王
【陰謀】謎の賢者
【暴君】魔界番長
【破壊】エレメンタル
【封印】ミノタウロス
【侵略】オーク王
【暴君】火龍
【陰謀】サキュバス
【滅亡】暗黒魔道士
【恐怖】黒騎士
【恐怖】人狼
【独裁】吸血鬼
【陰謀】暗殺者
【犠牲】堕ちた英雄
【封印】邪神
【独裁】ニセモノ
【陰謀】切り裂き魔
【恐怖】鬼
【人望】聖騎士
【崇拝】堕天使
【独裁】人気者
【破壊】大嵐
【封印】大いなる負債
【暴君】聖王女
【犠牲】クラーケン
【犠牲】ミノタウロス
【犠牲】火龍
【恐怖】霧の中の怪物
【崇拝】吸血鬼
【恐怖】狂気の怪物
【滅亡】暗黒の塔
【封印】墜ちた城
【恐怖】大迷宮
【人望】人気者
【崇拝】大舞台
【人望】ライバル
),
# クエストチャート
:quest => %w(
噴煙を上げる灼熱の火山を目指して長い旅をする。
モンスターのうろつく巨大な迷宮を探索する。
謎めいた古代遺跡の秘密を調査する。
うち捨てられて廃墟となった街を訪れる。
魔力に満ちた原始の樹海を行く。何が飛び出してくるかわからない。
魔法使いたちの集う都を訪ねる。
複雑に入り組んだ下水道を通り抜け、目的地を目指す。
危険な遠洋への航海に繰り返す。
「地獄」と呼ばれる場所で冒険する。
世界中を巡る。
あらゆる悪徳の蔓延る邪悪の街に潜り込む。
難攻不落と知られる敵の城塞に攻め入る。
拠点を守り、巨大な敵と激突する。
大軍勢を相手取って戦い、包囲網を打ち破る。
ラスボスの放った強力な刺客につけ狙われる。
脱出不可能と謳われる大監獄から脱走する。
無実の罪を着せられ、守るべき人々から追われる身となる。
蛮族の戦士と力比べをして、実力を認めさせる。
思わぬ裏切りにあい窮地に陥る。
かつての仲間と対決する。
行方知れずの伝説の勇者を探し出す。
わからず屋の王侯貴族や議員とやりあう。
神や精霊の力を借りるため、試練に挑む。
異世界の存在と接触する。
人々の希望となり、民衆を導く。
かつての自分を超えなければならない。
恐ろしい病が流行する。原因を突き止めねば。
かけられた呪いを解くために奔走する。
伝説のアイテムを手に入れるため探索の旅に出る。
古代の書物や碑文を読み解き、謎を解き明かす。
囚われの姫や仲間を救出する。
ラスボスの配下から秘密を聞き出す。
敵の敵を味方につける。
封印された古の存在を揺り起こす。
開かずの扉を開く。
国を挙げて大規模な儀式を執り行う。
)
}
end
end
end
Expand Down
11 changes: 11 additions & 0 deletions lib/rgrb/plugin/trpg/detatoko/generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,17 @@ def like_things
"[#{value.join(',')}] -> #{value.join('')} : #{thing}"
end

# ラスボスチャート・クエストチャートを引く
# @param [Symbol] type ラスボスか、クエストか
# @option :lastboss ラスボスチャート
# @option :quest クエストチャート
# @return [String]
def chart(type)
value = @dice_roll_generator.dxx_roll('66')
result = CHARTS[type][(value[0] - 1) * 6 + value[1] - 1]
"[#{value.join(',')}] -> #{value.join('')} : #{result}"
end

# 1行キャラシを出力する
# @param [Array<String>] ids 対象のキャラシID
# @return [Hash]
Expand Down
22 changes: 22 additions & 0 deletions lib/rgrb/plugin/trpg/detatoko/irc_adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ class IrcAdapter

match(/lt/i, method: :like_things)

match(/(lb|q)c/i, method: :chart)

match(/cs #{LCSIDS_RE}/io, method: :lcs)

match(/す([あかさたなはまやらわ]+)/i, method: :skill_decision_ja, :prefix => prefix_ja)
Expand All @@ -50,6 +52,7 @@ class IrcAdapter
match(/クラス/i, method: :character_class, :prefix => prefix_ja)
match(/(|敵|悪)ポジション/i, method: :position, :prefix => prefix_ja)
match(/((?:趣味|苦手)|(?:好き|嫌い)なもの)/i, method: :like_things, :prefix => prefix_ja)
match(/(ラスボス|クエスト)チャート/i, method: :chart, :prefix => prefix_ja)

def initialize(*args)
super
Expand Down Expand Up @@ -186,6 +189,25 @@ def like_things(m)
notice_multi_lines([message], m.target, header)
end

# ラスボスチャート・クエストチャートを引く
# @param [Cinch::Message] m
# @param [String] type ラスボスか・クエストか
# @return [void]
def chart(m, type)
log_incoming(m)

insert, type = case type
when 'lb', 'ラスボス'
['ラスボス', :lastboss]
when 'q', 'クエスト'
['クエスト', :quest]
end

header = "#{@header}[#{m.user.nick}]<#{insert}チャート>: "
message = @generator.chart(type)
notice_multi_lines([message], m.target, header)
end

# 1行のキャラクターシートを生成する
# @param [Cinch::Message] m
# @param [String] ids_str キャラクターシートの ID (String 型)
Expand Down

0 comments on commit e326b1e

Please sign in to comment.