Class: BCDice::GameSystem::WitchQuest

Inherits:
Base
  • Object
show all
Defined in:
lib/bcdice/game_system/WitchQuest.rb

Constant Summary collapse

ID =

ゲームシステムの識別子

'WitchQuest'
NAME =

ゲームシステム名

'ウィッチクエスト'
SORT_KEY =

ゲームシステム名の読みがな

'ういつちくえすと'
HELP_MESSAGE =

ダイスボットの使い方

<<~MESSAGETEXT
  ・チャレンジ(成功判定)(WQn)
   n回2d6ダイスを振って判定を行います。
   例)WQ3
  ・SET(ストラクチャーカードの遭遇表(SETn)
   ストラクチャーカードの番号(n)の遭遇表結果を得ます。
   例)SET1 SET48
MESSAGETEXT

Instance Attribute Summary

Attributes inherited from Base

#d66_sort_type, #default_cmp_op, #default_target_number, #randomizer, #reroll_dice_reroll_threshold, #round_type, #sides_implicit_d, #upper_dice_reroll_threshold

Instance Method Summary collapse

Methods inherited from Base

#change_text, #check_result, command_pattern, #enable_debug, #enabled_d9?, #eval, eval, #grich_text, #initialize, prefixes_pattern, register_prefix, register_prefix_from_super_class, #sort_add_dice?, #sort_barabara_dice?

Methods included from Translate

#translate

Constructor Details

This class inherits a constructor from BCDice::Base

Instance Method Details

#challenge(number) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/bcdice/game_system/WitchQuest.rb', line 40

def challenge(number)
  success = 0
  results = []

  number.times do
    value1 = @randomizer.roll_once(6)
    value2 = @randomizer.roll_once(6)

    if value1 == value2
      success += 1
    end

    results << "#{value1},#{value2}"
  end

  successText = "(#{results.join(' / ')}) > " + getSuccessText(success)
  return successText
end

#eval_game_system_specific_command(command) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/bcdice/game_system/WitchQuest.rb', line 27

def eval_game_system_specific_command(command)
  case command
  when /WQ(\d+)/
    number = Regexp.last_match(1).to_i
    return challenge(number)
  when /SET(\d+)/
    number = Regexp.last_match(1).to_i
    return getStructureEncounter(number)
  end

  return nil
end

#getPersonTable(table) ⇒ Object



267
268
269
270
271
272
# File 'lib/bcdice/game_system/WitchQuest.rb', line 267

def getPersonTable(table)
  number = @randomizer.roll_d66(D66SortType::ASC)
  debug("getPersonTable number", number)

  "#{number}:" + get_table_by_number(number, table)
end

#getPersonTable1Object



137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# File 'lib/bcdice/game_system/WitchQuest.rb', line 137

def getPersonTable1()
  gotoNextTable = lambda { "表2へ" + getPersonTable2() }

  table = [[11, "おじさん"],
           [12, "おばさん"],
           [13, "おじいさん"],
           [14, "おばあさん"],
           [15, "男の子"],
           [16, "女の子"],

           [22, "美少女"],
           [23, "美少年"],
           [24, "青年"],
           [25, "少年"],
           [26, "男女(カップル)"],

           [33, "新婚さん"],
           [34, "お兄さん"],
           [35, "お姉さん"],
           [36, "店主(お店の人)"],

           [44, "王様"],
           [45, "衛兵"],
           [46, "魔女"],

           [55, "お姫様"],
           [56, gotoNextTable],

           [66, gotoNextTable],]

  getPersonTable(table)
end

#getPersonTable2Object



170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# File 'lib/bcdice/game_system/WitchQuest.rb', line 170

def getPersonTable2()
  gotoNextTable = lambda { "表3へ" + getPersonTable3() }

  table = [[11, "魔法使い"],
           [12, "観光客"],
           [13, "先生"],
           [14, "探偵"],
           [15, ""],
           [16, "お嬢様"],

           [22, "お嬢様"],
           [23, "紳士"],
           [24, "ご婦人"],
           [25, "女王様"],
           [26, "職人さん"],

           [33, "女子高生"],
           [34, "学生"],
           [35, "剣闘士"],
           [36, ""],

           [44, ""],
           [45, ""],
           [46, "カエル"],

           [55, ""],
           [56, gotoNextTable],

           [66, gotoNextTable],]

  getPersonTable(table)
end

#getPersonTable3Object



203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
# File 'lib/bcdice/game_system/WitchQuest.rb', line 203

def getPersonTable3()
  gotoNextTable = lambda { "表4へ" + getPersonTable4() }

  table = [[11, "貴族"],
           [12, "いるか"],
           [13, "だいこん"],
           [14, "じゃがいも"],
           [15, "にんじん"],
           [16, "ドラゴン"],

           [22, "ゾンビ"],
           [23, "幽霊"],
           [24, "うさぎ"],
           [25, "天使"],
           [26, "悪魔"],

           [33, "赤ちゃん"],
           [34, ""],
           [35, ""],
           [36, "お母さん"],

           [44, "妖精"],
           [45, "守護霊"],
           [46, "猫神様"],

           [55, "ロボット"],
           [56, "恐ろしい人"],

           [66, gotoNextTable],]

  getPersonTable(table)
end

#getPersonTable4Object



236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
# File 'lib/bcdice/game_system/WitchQuest.rb', line 236

def getPersonTable4()
  table = [[11, "魔女エディス"],
           [12, "魔女レーデルラン"],
           [13, "魔女キリル"],
           [14, "大魔女”ロロ”様"],
           [15, "エディスのお母さん”エリー”"],
           [16, "猫トンガリ"],

           [22, "猫ヒューベ"],
           [23, "猫ゆうのす"],
           [24, "猫集会の集団の一団"],
           [25, ""],
           [26, "PCの母"],

           [33, "PCの父"],
           [34, "PCの兄"],
           [35, "PCの姉"],
           [36, "PCの弟"],

           [44, "PCの妹"],
           [45, "PCの遠い親戚"],
           [46, "PCの死んだはずの両親"],

           [55, "初恋の人"],
           [56, "分かれた女(男)、不倫中の相手、または独身PCの場合、二股をかけている二人の両方"],

           [66, "宇宙人"],]

  getPersonTable(table)
end

#getStructureEncounter(number) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/bcdice/game_system/WitchQuest.rb', line 75

def getStructureEncounter(number)
  debug("getStructureEncounter number", number)

  tables = [[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, ['2階からお金をばらまいている', '窓の奥で涙をながしている', '窓から忍びこもう', 'ピアノを弾いている', 'ここに住んでいる', '家に招待したがる']],
            [45, ['馬にブラシをかけている', '気性の激しい', '騎手を探している', '馬と話ができる', '馬の生まれ変わりという', '馬を安楽死させようか迷っている']],
            [46, ['いたずら好きな', 'ライバル意識の強い', '魔法の下手な', '魔法を信じない', '自分を神と思っている', '魔法を使って人を化かしたがる']],
            [47, ['傷だらけな', '両手に宝物を持った', 'かわいい', '地図を見ながら出てきている', '剣を持った', 'ダンジョンの主といわれる']],
            [48, ['墓参りをしている', '耳の遠い', '死んでしまった', '葬式をしている', 'きもだめしをしている', '墓守をしている']],]

  table = get_table_by_number(number, tables, nil)
  return nil if table.nil?

  text, index = get_table_by_1d6(table)

  person = getPersonTable1()

  return "SET#{number}#{index}:#{text}#{person}"
end

#getSuccessText(success) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/bcdice/game_system/WitchQuest.rb', line 59

def getSuccessText(success)
  table = [[0, "失敗"],
           [1, "1レベル成功(成功)"],
           [2, "2レベル成功(大成功)"],
           [3, "3レベル成功(奇跡的大成功)"],
           [4, "4レベル成功(歴史的大成功)"],
           [5, "5レベル成功(伝説的大成功)"],
           [6, "6レベル成功(神話的大成功)"],]

  if success >= table.last.first
    return table.last.last
  end

  return get_table_by_number(success, table)
end