Class: BCDice::GameSystem::Amadeus
- Defined in:
- lib/bcdice/game_system/Amadeus.rb
Direct Known Subclasses
Constant Summary collapse
- ID =
ゲームシステムの識別子
'Amadeus'
- NAME =
ゲームシステム名
'アマデウス'
- SORT_KEY =
ゲームシステム名の読みがな
'あまてうす'
- HELP_MESSAGE =
ダイスボットの使い方
<<~INFO_MESSAGE_TEXT ・判定(Rx±y@z>=t) 能力値のダイスごとに成功・失敗の判定を行います。 x:能力ランク(S,A~D) y:修正値(省略可) z:スペシャル最低値(省略:6) t:目標値(省略:4) 例) RA RB-1 RC>=5 RD+2 RS-1@5>=6 出力書式は (達成値)_(判定結果)[(出目)(対応するインガ)] C,Dランクでは対応するインガは出力されません。 出力例) 2_ファンブル![1黒] / 3_失敗[3青] ・各種表 境遇表 ECT/関係表 RT/親心表 PRT/戦場表 BST/休憩表 BT/ ファンブル表 FT/致命傷表 FWT/戦果表 BRT/ランダムアイテム表 RIT/ 損傷表 WT/悪夢表 NMT/目標表 TGT/制約表 CST/ ランダムギフト表 RGT/決戦戦果表 FBT/ 店内雰囲気表 SAT/特殊メニュー表 SMT ・試練表(~VT) ギリシャ神群 GCVT/ヤマト神群 YCVT/エジプト神群 ECVT/ クトゥルフ神群 CCVT/北欧神群 NCVT/中華神群 CHVT/ ラストクロニクル神群 LCVT/ケルト神群 KCVT/ダンジョン DGVT/日常 DAVT ・挑戦テーマ表(~CT) 武勇 PRCT/技術 TCCT/頭脳 INCT/霊力 PSCT/愛 LVCT/日常 DACT INFO_MESSAGE_TEXT
- CHECK_DICE_COUNT =
{"S" => 4, "A" => 3, "B" => 2, "C" => 1, "D" => 2}.freeze
- TABLES =
translate_tables(:ja_jp)
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
Class Method Summary collapse
Instance Method Summary collapse
- #amadeusDice(command) ⇒ Object
- #check_success(total_n, dice_n, signOfInequality, diff, special_n) ⇒ Object
- #eval_game_system_specific_command(command) ⇒ Object
-
#initialize(command) ⇒ Amadeus
constructor
A new instance of Amadeus.
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) ⇒ Amadeus
40 41 42 43 44 45 46 |
# File 'lib/bcdice/game_system/Amadeus.rb', line 40 def initialize(command) super(command) @sort_add_dice = true @enabled_d66 = true @d66_sort_type = D66SortType::ASC end |
Class Method Details
.translate_tables(locale) ⇒ Object
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 |
# File 'lib/bcdice/game_system/Amadeus.rb', line 118 def self.translate_tables(locale) { "ECT" => DiceTable::Table.from_i18n("Amadeus.table.ECT", locale), "BST" => DiceTable::Table.from_i18n("Amadeus.table.BST", locale), "RT" => DiceTable::Table.from_i18n("Amadeus.table.RT", locale), "PRT" => DiceTable::Table.from_i18n("Amadeus.table.PRT", locale), "FT" => DiceTable::Table.from_i18n("Amadeus.table.FT", locale), "BT" => DiceTable::D66Table.from_i18n("Amadeus.table.BT", locale), "FWT" => DiceTable::Table.from_i18n("Amadeus.table.FWT", locale), "BRT" => DiceTable::Table.from_i18n("Amadeus.table.BRT", locale), "RIT" => DiceTable::Table.from_i18n("Amadeus.table.RIT", locale), "WT" => DiceTable::Table.from_i18n("Amadeus.table.WT", locale), "NMT" => DiceTable::Table.from_i18n("Amadeus.table.NMT", locale), "TGT" => DiceTable::Table.from_i18n("Amadeus.table.TGT", locale), "CST" => DiceTable::Table.from_i18n("Amadeus.table.CST", locale), "GCVT" => DiceTable::Table.from_i18n("Amadeus.table.GCVT", locale), "YCVT" => DiceTable::Table.from_i18n("Amadeus.table.YCVT", locale), "ECVT" => DiceTable::Table.from_i18n("Amadeus.table.ECVT", locale), "CCVT" => DiceTable::Table.from_i18n("Amadeus.table.CCVT", locale), "NCVT" => DiceTable::Table.from_i18n("Amadeus.table.NCVT", locale), "DGVT" => DiceTable::Table.from_i18n("Amadeus.table.DGVT", locale), "DAVT" => DiceTable::Table.from_i18n("Amadeus.table.DAVT", locale), "PRCT" => DiceTable::Table.from_i18n("Amadeus.table.PRCT", locale), "TCCT" => DiceTable::Table.from_i18n("Amadeus.table.TCCT", locale), "INCT" => DiceTable::Table.from_i18n("Amadeus.table.INCT", locale), "PSCT" => DiceTable::Table.from_i18n("Amadeus.table.PSCT", locale), "LVCT" => DiceTable::Table.from_i18n("Amadeus.table.LVCT", locale), "DACT" => DiceTable::Table.from_i18n("Amadeus.table.DACT", locale), "RGT" => DiceTable::Table.from_i18n("Amadeus.table.RGT", locale), "FBT" => DiceTable::Table.from_i18n("Amadeus.table.FBT", locale), "CHVT" => DiceTable::Table.from_i18n("Amadeus.table.CHVT", locale), "LCVT" => DiceTable::Table.from_i18n("Amadeus.table.LCVT", locale), "KCVT" => DiceTable::Table.from_i18n("Amadeus.table.KCVT", locale), "SAT" => DiceTable::D66Table.from_i18n("Amadeus.table.SAT", locale), "SMT" => DiceTable::D66Table.from_i18n("Amadeus.table.SMT", locale), } end |
Instance Method Details
#amadeusDice(command) ⇒ Object
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 |
# File 'lib/bcdice/game_system/Amadeus.rb', line 55 def amadeusDice(command) return nil unless /^(R([A-DS])([+\-\d]*))(@(\d))?((>(=)?)([+\-\d]*))?(@(\d))?$/i =~ command commandText = Regexp.last_match(1) skillRank = Regexp.last_match(2) modifyText = Regexp.last_match(3) signOfInequality = (Regexp.last_match(7).nil? ? ">=" : Regexp.last_match(7)) targetText = (Regexp.last_match(9).nil? ? "4" : Regexp.last_match(9)) if nil | Regexp.last_match(5) specialNum = Regexp.last_match(5).to_i elsif nil | Regexp.last_match(11) specialNum = Regexp.last_match(11).to_i else specialNum = 6 end diceCount = CHECK_DICE_COUNT[skillRank] modify = ArithmeticEvaluator.eval(modifyText) target = ArithmeticEvaluator.eval(targetText) diceList = @randomizer.(diceCount, 6) diceText = diceList.join(",") specialText = (specialNum == 6 ? "" : "@#{specialNum}") = "(#{commandText}#{specialText}#{signOfInequality}#{targetText}) > [#{diceText}]#{modifyText} > " diceList = [diceList.min] if skillRank == "D" is_loop = false diceList.each do |dice| if is_loop += " / " elsif diceList.length > 1 is_loop = true end achieve = dice + modify result = check_success(achieve, dice, signOfInequality, target, specialNum) if is_loop inga_table = translate("Amadeus.inga_table") inga = inga_table[dice - 1] += "#{achieve}_#{result}[#{dice}#{inga}]" else += "#{achieve}_#{result}[#{dice}]" end end return end |
#check_success(total_n, dice_n, signOfInequality, diff, special_n) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/bcdice/game_system/Amadeus.rb', line 102 def check_success(total_n, dice_n, signOfInequality, diff, special_n) return translate("Amadeus.fumble") if dice_n == 1 return translate("Amadeus.special") if dice_n >= special_n cmp_op = Normalize.comparison_operator(signOfInequality) target_num = diff.to_i if total_n.send(cmp_op, target_num) translate("success") else translate("failure") end end |
#eval_game_system_specific_command(command) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/bcdice/game_system/Amadeus.rb', line 48 def eval_game_system_specific_command(command) text = amadeusDice(command) return text unless text.nil? return roll_tables(command, self.class::TABLES) end |