Class: BCDice::GameSystem::BladeOfArcana
- Defined in:
- lib/bcdice/game_system/BladeOfArcana.rb
Constant Summary collapse
- ID =
ゲームシステムの識別子
'BladeOfArcana'
- NAME =
ゲームシステム名
'ブレイド・オブ・アルカナ'
- SORT_KEY =
ゲームシステム名の読みがな
'ふれいとおふあるかな'
- HELP_MESSAGE =
ダイスボットの使い方
<<~INFO_MESSAGE_TEXT ■行為判定 nA[m][Cx][Fy] n:ダイス数 m:判定値(省略時はクリティカル値と同じ) x:クリティカル値(省略時は1) y:ファンブル値(省略時は20) 注)[m]、[Cx]、[Fy]は省略可能。 例)3A12C4F15→3個振り12以下で成功。C値4、F値は15。 例)3A12→3個振り12以下で成功。C値1、F値は20。 ■各種表 (+:出目2~21に変更 -:出目0~19に変更) ●リインカーネイション 因縁表 CTR[+/-] 前世邂逅表 DJV[-] 悪徳シーン表 AKST[+/-] ●The 3rd(第三版) 因縁表 CT3[+/-] 注)[]内は省略可能。 例)CTR→因縁表(R版)を出目1~20でロールする。 例)CTR+→因縁表(R版)を出目2~21でロールする。 INFO_MESSAGE_TEXT
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
- #eval_game_system_specific_command(command) ⇒ Object
-
#initialize(command) ⇒ BladeOfArcana
constructor
A new instance of BladeOfArcana.
- #rollAct(counts, judgment = 0, critical = 0, fumble = 0) ⇒ Object
- #tableText(title, table, sign = '') ⇒ Object
Methods inherited from Base
#change_text, #check_result, command_pattern, #enable_debug, #enabled_d9?, #eval, eval, #grich_text, prefixes_pattern, register_prefix, register_prefix_from_super_class, #sort_add_dice?, #sort_barabara_dice?
Methods included from Translate
Constructor Details
#initialize(command) ⇒ BladeOfArcana
Returns a new instance of BladeOfArcana.
43 44 45 46 47 |
# File 'lib/bcdice/game_system/BladeOfArcana.rb', line 43 def initialize(command) super(command) @sort_add_dice = true end |
Instance Method Details
#eval_game_system_specific_command(command) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 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 136 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 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/bcdice/game_system/BladeOfArcana.rb', line 49 def eval_game_system_specific_command(command) case command.upcase when /^(\d+)A(\d*)([CF]?)(\d*)([CF]?)(\d*)$/ counts = Regexp.last_match(1).to_i judgment = Regexp.last_match(2).to_i option1 = Regexp.last_match(3) argument1 = Regexp.last_match(4) option2 = Regexp.last_match(5) argument2 = Regexp.last_match(6) return nil if (option1.empty? != argument1.empty?) || (option2.empty? != argument2.empty?) || (!option2.empty? && (option1 == option2)) if option1 == 'C' critical = argument1.to_i fumble = argument2.to_i else critical = argument2.to_i fumble = argument1.to_i end return rollAct(counts, judgment, critical, fumble) when /^CT3([+-]?)$/ sign = Regexp.last_match(1) title = '因縁表(The 3rd) 『BoA3』P292' table = [ "【他生】", "【師弟】", "【忘却】", "【兄姉】", "【貸し】", "【慕情】", "【主従】", "【強敵】", "【秘密】", "【恩人】", "【告発】", "【友人】", "【仇敵】", "【父母】", "【借り】", "【信頼】", "【幼子】", "【取引】", "【地縁】", "【同志】", "【不審】", "【自身】", ] return tableText(title, table, sign) when /^CTR([+-]?)$/ sign = Regexp.last_match(1) title = '因縁表(リインカーネイション) 『BAR』P51、299' table = [ "【他生】", "【師弟】", "【忘却】", "【兄姉】", "【貸し】", "【憧憬】", "【主従】", "【強敵】", "【秘密】", "【恩人】", "【取引】", "【友人】", "【怨敵】", "【後援】", "【借り】", "【信頼】", "【弟妹】", "【商売】", "【奇縁】", "【同志】", "【有為】", "【自身】", ] return tableText(title, table, sign) when /^DJV(-?)$/ sign = Regexp.last_match(1) title = '前世邂逅表(デジャブ) 『BAR』P235' table = [ "【鮮烈な風】\n風は懐かしい匂いを、香りを運んでくる。それは……。", "【薄暗い影】\nまるで時が止まってしまっているかのようだ。", "【操りの糸】\nそれはあなたを導く蜘蛛の糸。", "【天上の光】\n偉大なるものがもたらす、天上からの御しるし。", "【温もり】\n春のひなたのような温かさを感じる。", "【鋭いナイフ】\n鋭いナイフのような視線を感じる。これは……。", "【共鳴】\n同じ感覚を感じる、ふたりは通じ合っている。", "【城壁】\n厳しく高い城壁のように重く堅く厚い。", "【砕ける器】\n落ちれば砕ける。砕ければそれは器ではない。", "【陽炎】\n求めれば揺らいで消える。", "【終わりなき円環】\nそれはあなたを捉え巡る輪廻の輪。", "【天秤】\n揺れるバランス、揺れ続ける安定。", "【流れる水】\nひとつ所にとどまらず、姿を固めることはない", "【光る刃】\n鋭く光る刃のような、鋭いまなざし。", "【悪魔】\nあまりにも危険な魅力、それは悪魔的だった。", "【牙】\n獲物を引き裂く鋭く長い、牙。", "【輝く星】\n星は暗く小さい。だがそこに輝く。", "【冴え渡る月光】\n冷たさと安らかさが同居している。", "【照りつける太陽】\n暑い。", "【燃えさかる炎】\n炎はすべてを破壊し、すべてを滅ぼす。", "【世界】\nすべてはこの世界の中で起こり、終わる。", "【なし】", ] return tableText(title, table, sign) when /^AKST([+-]?)$/ sign = Regexp.last_match(1) title = '悪徳シーン表 『GoV』P16、164' table = [ "▼ウェントス/止まない風\n【行動】殺戮者の狂気に当てられたのか、通り魔的殺人者が現れる。切り裂かれた人々の悲鳴が響き渡る。", "▼エフェクトス/原初の力\n【行動】殺戮者の配下が無法を働く。店先で金品を要求したり、暴力を振るったりしている。", "▼クレアータ/傀儡人形の王\n【行動】殺戮者の配下が人々の行動を監視している。違反した者には即座に罰が与えられる。", "▼マーテル/生ける神\n【行動】殺戮者の配下が人々に殺戮者への信仰を告白し、忠誠を宣誓するように強要している。", "▼コロナ/簒奪者\n【行動】嘆き悲しんでいる者がいる。殺戮者によって、財産、地位、家族あるいは、恋人を奪い取られたという。", "▼フィニス/永遠の人\n【行動】怪物が人々を虐殺している。この地には人間が多すぎるのだという。それが彼らの主の決定だ。", "▼エルス/無私なる愛\n【行動】殺戮者の配下が略奪を働いている。どうやら、殺戮者に献上するものを争っているようだ。", "▼アダマス/万物の保護者\n【行動】反逆者と名指しされる。人々は君たちに接触しようとしない。情報を集めるにも苦労しそうだ。", "▼アルドール/終わりなき戦い\n【行動】ならず者の集団が人々を襲っている。力を示さなければ切り捨てられるのは彼らなのだ。", "▼ファンタスマ/謀略の渦\n【行動】人々は君を見るなり逃げ出した。どうやら恐ろしい殺人者だと思われているようだ。", "▼アクシス/真理の探究者\n【行動】殺戮者の配下の手によって、人々が連れ去られている。誰ひとりもどってこない。", "▼レクス/捕縛者\n【行動】殺戮者への恐怖に駆られた人々はその命令にしたがって徒党を組み、PCたちを捜索している。", "▼アクア/澱んだ水\n【行動】人々は獣のように生きている。言葉は通じない。有効なのは力、暴力だけだ。", "▼グラディウス/暗き死の刃\n【行動】殺戮者とその配下によって虐殺が行なわれている。見渡す限り、死者ばかりだ。", "▼アングルス/純白の恐怖\n【行動】遊びとして人間狩りが行なわれている。人々は逃げ惑い、殺戮者は愉悦に笑う。", "▼ディアボルス/悪魔の囁き\n【行動】殺戮者は少年少女を召し上げている。召し上げられた者たちは音信不通となってしまう。", "▼フルキフェル/裏切り者\n【行動】人々は猜疑の目で君を見る。嘘を吐くのが普通の場所で真実を見いだせるだろうか。", "▼ステラ/破滅への愛\n【行動】街や村落が破壊されている。焼け野原の中、人々は力なくうずくまる。ここには絶望だけがあった。", "▼ルナ/奪う者\n【行動】君たちの目の前に略奪が繰り返される。略奪のために略奪を行なう殺戮者の配下たち。", "▼デクストラ/邪悪な技\n【行動】殺戮者による非道な人体実験が繰り返されている。そのための実験材料が集められている。", "▼イグニス/根源たる炎\n【行動】街や集落、あるいは店舗や住宅が焼き討ちに合う。人々は互いに陥れ、磔刑が行なわれている。", "▼オービス/闇の鎖\n【行動】世界の完全なる破滅、人類の絶滅、無作為で広範囲な虐殺が行なわれる。", ] return tableText(title, table, sign) end return nil end |
#rollAct(counts, judgment = 0, critical = 0, fumble = 0) ⇒ Object
189 190 191 192 193 194 195 196 197 198 199 200 201 202 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 |
# File 'lib/bcdice/game_system/BladeOfArcana.rb', line 189 def rollAct(counts, judgment = 0, critical = 0, fumble = 0) if critical < 1 critical = 1 end if judgment <= 0 judgment = critical elsif critical > judgment critical = judgment end if fumble <= 0 fumble = 20 end if counts <= 0 counts = 1 fumble -= 5 end if fumble < 2 fumble = 2 elsif fumble > 20 fumble = 20 end dice_list = @randomizer.(counts, 20).sort value = dice_list.sum() string = dice_list.join(",") text = "(#{counts}A#{judgment}C#{critical}F#{fumble}) > #{string} > " unless counts == 1 value = string.split(",").map(&:to_i).min text += "#{value} > " end if value >= fumble text += 'ファンブル' elsif value <= critical text += 'クリティカル' elsif value > judgment text += '失敗' else text += '成功' end return text end |
#tableText(title, table, sign = '') ⇒ Object
235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 |
# File 'lib/bcdice/game_system/BladeOfArcana.rb', line 235 def tableText(title, table, sign = '') number = @randomizer.roll_once(20) index = number if sign == '+' index += 1 elsif sign == '-' index -= 1 end text = "#{title} > #{index}" unless sign.empty? text += "[#{number}#{sign}1]" end return text + ' > ' + table[index] end |