Class: BCDice::GameSystem::SwordWorld2_5

Inherits:
SwordWorld2_0 show all
Defined in:
lib/bcdice/game_system/SwordWorld2_5.rb

Constant Summary collapse

ID =

ゲームシステムの識別子

'SwordWorld2.5'
NAME =

ゲームシステム名

'ソードワールド2.5'
SORT_KEY =

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

'そおとわあると2.5'
HELP_MESSAGE =

ダイスボットの使い方

<<~INFO_MESSAGE_TEXT
  自動的成功、成功、失敗、自動的失敗の自動判定を行います。

  ・レーティング表 (Kx)
   "Kキーナンバー+ボーナス"の形で記入します。
   ボーナスの部分に「K20+K30」のようにレーティングを取ることは出来ません。
   また、ボーナスは複数取ることが出来ます。
   レーティング表もダイスロールと同様に、他のプレイヤーに隠れてロールすることも可能です。
   例)K20   K10+5   k30   k10+10   Sk10-1   k10+5+2

  ・クリティカル値の設定
   クリティカル値は"[クリティカル値]"で指定します。
   指定しない場合はクリティカル値10とします。
   クリティカル処理が必要ないときは13などとしてください。(防御時などの対応)
   またタイプの軽減化のために末尾に「@クリティカル値」でも処理するようにしました。
   例)K20[10]   K10+5[9]   k30[10]   k10[9]+10   k10-5@9

  ・レーティング表の半減 (HKx, KxH+N)
   レーティング表の先頭または末尾に"H"をつけると、レーティング表を振って最終結果を半減させます。
   末尾につけた場合、直後に修正ををつけることで、半減後の加減算を行うことができます。
   この際、複数の項による修正にはカッコで囲うことが必要です(カッコがないとパースに失敗します)
   クリティカル値を指定しない場合、クリティカルなしと扱われます。
   例)HK20  K20h  HK10-5@9  K10-5@9H  K20gfH  K20+8H+2  K20+8H+(1+1)

  ・ダイス目の修正(運命変転やクリティカルレイ用)
   末尾に「$修正値」でダイス目に修正がかかります。
   $+1と修正表記ならダイス目に+修正、$9のように固定値ならダイス目をその出目に差し替え。
   クリティカルした場合でも固定値や修正値の適用は最初の一回だけです。
   例)K20$+1   K10+5$9   k10-5@9$+2   k10[9]+10$9

  ・ダイス目の修正(必殺攻撃用)
   「#修正値」でダイス目に修正がかかります。
   クリティカルした場合でも修正値の適用は継続されます。
   例)K20#1   k10-5@9#2

  ・首切り刀用レーティング上昇 r5
   例)K20r5 K30+24@8R5 K40+24@8$12r5

  ・グレイテストフォーチュンは末尾に gf
   例)K20gf K30+24@8GF K40+24@8$12r5gf

  ・超越判定用に2d6ロールに 2D6@10 書式でクリティカル値付与が可能に。
   例)2D6@10 2D6@10+11>=30

  ・成長 (Gr)
   末尾に数字を付加することで、複数回の成長をまとめて行えます。
   例)Gr3

  ・防御ファンブル表 (FT)
   防御ファンブル表を出すことができます。

  ・絡み効果表 (TT)
   絡み効果表を出すことができます。

  ・ドルイドの物理魔法用表 (Dru[2-6の値,7-9の値,10-12の値])
   例)Dru[0,3,6]+10-3

  ・アビスカース表 (ABT)
   アビスカース表を出すことができます。
INFO_MESSAGE_TEXT
ABYSS_CURSE_TABLE =
DiceTable::D66GridTable.new(
  'アビスカース表', [
    [
      "「自傷の」 装備時 この武具を装備中に装備者がクリティカルを発生させた時、装備者のHPが5点減少する。",
      "「嘆きの」 装備時 近くに敵がいたり、長い緊張状態が続くと涙が止まらなくなる。戦闘中なら「射程:術者(自身)」「射程:接触」以外の効果で対象を選べなくなる。",
      "「優しき」 装備時 敵に同情してしまう。敵対するキャラクターを対象にする場合、対象のHPが1点以上減少しているなら命中力判定、魔法行使判定に-2のペナルティ修正を受ける。",
      "「差別の」 装備時 特定の分類に対して与える物理ダメージ・魔法ダメージが2点減少する。分類は「分類決定表」で無作為に決定する。",
      "「脆弱な」 装備時 魔法ダメージを受けるたび、そのダメージが+1点される。",
      "「無謀な」 装備時 防護点が2点減少する(最低0)。",
    ], [
      "「重い」 装備時 強化した武具の必要筋力が+2される。威力、防護点などは変化なし。",
      "「難しい」 装備時 いかなる威力表使用時でも、③④欄の数値が威力に関係なく「0」になる(自動失敗ではない)。",
      "「軟弱な」 装備時 精神抵抗力判定に-1のペナルティ修正を受ける。",
      "「病弱な」 装備時 生命抵抗力判定に-1のペナルティ修正を受ける。",
      "「過敏な」 装備時 特定の属性から受ける物理ダメージ、魔法ダメージが2点上昇する。属性は「属性決定表」で無作為に決定する。",
      "「陽気な」 装備時 精神抵抗判定に失敗するたび、笑いが止まらなくなる。次の手番終了時まで行動判定(『Ⅰ』123頁)に-1のペナルティ修正を受ける。この効果は累積する。",
    ], [
      "「たどたどしい」 装備時 話をする時に言葉に詰まったり、言い間違えたりしやすくなる。魔法行使判定に-1のペナルティ修正を受ける。",
      "「代弁する」 装備時 自身の会話は、そのまま武具が魔法文明語の聞き取りづらい声で話す。装備中は魔法文明語以外の言語で会話は行えず、妖精魔法、魔動機術を行使できなくなる。",
      "「施しは受けない」 装備時 戦闘中、「抵抗:任意」の効果を受け入れた場合、次の手番終了時まで生命抵抗力、精神抵抗力に-2のペナルティ修正を受ける。",
      "「死に近い」 携行時 常に生死判定に「冒険者レベル」と同じ値のペナルティ修正を受ける。",
      "「おしゃれな」 携行時 その武具を常に華美に飾りたくなる。収入を得るたび、その1割以上をこの武具の装飾に費やさなければならない(効果などに変化はない)。",
      "「マナを吸う」 携行時 魔法や練技など、自身の意思でMPを消費する効果を使用する場合、すべてのMP消費が1点上昇する。",
    ], [
      "「鈍重な」 携行時 移動力が半分(端数切り上げ)になる。",
      "「定まらない」 携行時 戦闘中の手番開始時に1dし、出目が「1」なら《ターゲッティング》とそれを前提とした戦闘特技を習得していないものとして扱う。",
      "「錯乱の」 携行時 戦闘中の手番開始時に1dし、出目が「1」なら近接攻撃を含む「射程:接触」の対象に効果を使用する際、対象は同じ位置(エリア、座標)の全てのキャラクター(敵味方含む)から無作為に選ばれる。",
      "「足絡みの」 携行時 戦闘中の手番開始時に1dし、出目が「1」ならその場で即座に転倒する。手番中には起き上がれない。",
      "「滑り落ちる」 携行時 戦闘中の手番開始時に1dし、出目が「1」なら手に装備または保持しているものをすべてその場に落とす(その手番の主動作で拾う事は可能)。",
      "「悪臭放つ」 携行時 強い悪臭を放つ。所持しているだけで他のキャラクターに不快感を与え、隠密判定に-2のペナルティ修正を受ける。さらに冒険者ランク(『Ⅱ』137頁)が1段階低いものとして扱われる。",
    ], [
      "「醜悪な」 携行時 武具の見た目が悪く、魅力がない。売却する際、基本取引価格の4分の1の価格で売却する。さらに冒険者ランク(『Ⅱ』137頁)が1段階低いものとして扱われる。",
      "「唸る」 携行時 その武具から常に羽虫が飛び交うような音が響く。隠密判定、危険感知判定に-4のペナルティ修正を受ける。",
      "「ふやけた」 携行時 水を吸ったようにふやけた質感をしている。追加ダメージ-1(武器)、防護点-1(鎧、盾)。病気属性の効果に対する生命抵抗力、精神抵抗力判定に-4のペナルティ修正を受ける。",
      "「古傷の」 携行時 HPを回復する効果(休息による回復を含む)を受けた場合、その回復量が1点減少する。",
      "「まばゆい」 携行時 光などを弾いて強く輝く。自身は常に視界が悪い事による-1のペナルティ修正を受ける。",
      "「栄光なき」 携行時 行為判定で自動成功した際、自動成功とは扱わず、2dを振り直し、その後の出目に従う。この効果は1日に1回のみ発揮される。",
    ], [
      "「正直者の」 携行時 嘘、方便がすぐばれるようになる。真偽判定の対象となる場合、-4のペナルティ修正を受ける。",
      "「乗り物酔いの」 携行時 揺れに弱くなる。自身の足以外の手段で10分以上移動した後、1時間、行動判定に-1のペナルティ修正を受ける。",
      "「碧を厭う」 携行時 自然の中では落ち着かなくなる。自然環境(『Ⅰ』108頁)では行動判定に-1のペナルティ修正を受ける。",
      "「我慢できない」 携行時 セッション中に1日の始まりを迎えるたび、趣味や嗜好品などに「冒険者レベル×10」ガメルを出費しなければならない。趣味や嗜好品が消費できない環境であれば、翌日の朝まで最大HP、最大MPが「冒険者レベル」点減少する。",
      "「つきまとう」 携行時 この武具が気がつけば身の回りにある。この武具以外での命中力判定、魔法行使判定(武器)、回避力判定(鎧、盾)に-4のペナルティ修正を受ける。",
      "「のろまな」 携行時 戦闘開始処理の「戦闘準備」をいっさい行えなくなる。",
    ],
  ]
)
ABYSS_CURSE_CATEGORY_TABLE =
DiceTable::D66ParityTable.new(
  "アビスカース分類決定表",
  ["蛮族", "動物", "植物", "アンデッド", "魔法生物", "「蛮族」「動物」「植物」「アンデッド」「魔法生物」から任意"],
  ["魔動機", "幻獣", "妖精", "魔神", "人族", "「魔動機」「幻獣」「妖精」「魔神」「人族」から任意"]
)
ABYSS_CURSE_ATTR_TABLE =
DiceTable::D66ParityTable.new(
  "アビスカース属性決定表",
  ["", "水・氷", "", "", "", "純粋エネルギー"],
  ["断空", "衝撃", "", "病気", "呪い", "精神効果"]
)

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 SwordWorld2_0

#get_ability_by_dice, #get_fumble_table, #get_tangle_table, #growth, #growth_step, #initialize, #rollDice

Methods inherited from SwordWorld

#initialize, #result_2d6

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::GameSystem::SwordWorld2_0

Instance Method Details

#druid_dice(command, power_list) ⇒ Object



164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'lib/bcdice/game_system/SwordWorld2_5.rb', line 164

def druid_dice(command, power_list)
  dice_list = @randomizer.roll_barabara(2, 6)
  dice_total = dice_list.sum()
  offset =
    case dice_total
    when 2..6
      0
    when 7..9
      1
    when 10..12
      2
    end
  power = power_list[offset]
  total = power + command.modify_number
  sequence = [
    "(#{command.command.capitalize}#{Format.modifier(command.modify_number)})",
    "2D[#{dice_list.join(',')}]=#{dice_total}",
    "#{power}#{Format.modifier(command.modify_number)}",
    total
  ]

  return sequence.join("")
end

#eval_game_system_specific_command(command) ⇒ Object



141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/bcdice/game_system/SwordWorld2_5.rb', line 141

def eval_game_system_specific_command(command)
  case command
  when /^dru\[(\d+),(\d+),(\d+)\]/i
    power_list = Regexp.last_match.captures.map(&:to_i)
    druid_parser = Command::Parser.new(/dru\[\d+,\d+,\d+\]/i, round_type: BCDice::RoundType::CEIL)

    cmd = druid_parser.parse(command)
    unless cmd
      return nil
    end

    druid_dice(cmd, power_list)
  when 'ABT'
    get_abyss_curse_table
  else
    super(command)
  end
end

#get_abyss_curse_tableObject



188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
# File 'lib/bcdice/game_system/SwordWorld2_5.rb', line 188

def get_abyss_curse_table
  table_result = ABYSS_CURSE_TABLE.roll(@randomizer)
  additional =
    case table_result.value
    when 14  # 「差別の」における分類決定表
      ABYSS_CURSE_CATEGORY_TABLE.roll(@randomizer).to_s
    when 25  # 「過敏な」における属性決定表
      ABYSS_CURSE_ATTR_TABLE.roll(@randomizer).to_s
    end
  final_result = [
    table_result.to_s,
    additional,
  ].compact

  return final_result.join("\n")
end

#rating_parserObject



160
161
162
# File 'lib/bcdice/game_system/SwordWorld2_5.rb', line 160

def rating_parser
  return RatingParser.new(version: :v2_5)
end