class BCDice::GameSystem::BladeOfArcana
Constants
- HELP_MESSAGE
ダイスボットの使い方
- ID
ゲームシステムの識別子
- NAME
ゲームシステム名
- SORT_KEY
ゲームシステム名の読みがな
Public Class Methods
new(command)
click to toggle source
Calls superclass method
BCDice::Base::new
# File lib/bcdice/game_system/BladeOfArcana.rb, line 43 def initialize(command) super(command) @sort_add_dice = true end
Public Instance Methods
eval_game_system_specific_command(command)
click to toggle source
# 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)
click to toggle source
# 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.roll_barabara(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 = '')
click to toggle source
# 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