Class: BCDice::GameSystem::ArsMagica
- Defined in:
- lib/bcdice/game_system/ArsMagica.rb
Constant Summary collapse
- ID =
ゲームシステムの識別子
'ArsMagica'
- NAME =
ゲームシステム名
'アルスマギカ'
- SORT_KEY =
ゲームシステム名の読みがな
'あるすまきか'
- HELP_MESSAGE =
ダイスボットの使い方
<<~INFO_MESSAGE_TEXT ・ストレスダイス (ArSx+y) "ArS(ボッチダイス)+(修正)"です。判定にも使えます。Rコマンド(1R10+y[m])に読替をします。 ボッチダイスと修正は省略可能です。(ボッチダイスを省略すると1として扱います) botchダイスの0の数が2以上の時は、数えて表示します。 (注意!) botchの判断が発生したときには、そのダイスを含めてロールした全てのダイスを[]の中に並べて表示します。 例) (1R10[5]) > 0[0,1,8,0,8,1] > Botch! 最初の0が判断基準で、その右側5つがボッチダイスです。1*2,8*2,0*1なので1botchという訳です。 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
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
Constructor Details
This class inherits a constructor from BCDice::Base
Instance Method Details
#eval_game_system_specific_command(string) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 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 |
# File 'lib/bcdice/game_system/ArsMagica.rb', line 31 def eval_game_system_specific_command(string) unless parse_ars(string) || parse_1r10(string) return nil end diff = @target_numner || 0 botch = @botch bonus = @modify_number crit_mul = 1 total = 0 cmp_op = @cmp_op die = @randomizer.roll_once(10) - 1 output = "(#{expr()}) > " if die == 0 # botch? count0 = 0 dice_n = [] botch.times do |_i| botch_die = @randomizer.roll_once(10) - 1 count0 += 1 if botch_die == 0 dice_n.push(botch_die) end output += "0[#{die},#{dice_n.join(',')}]" if count0 != 0 if count0 > 1 output += " > #{count0}Botch!" else output += " > Botch!" end # Botchの時には目標値を使った判定はしない cmp_op = nil else if bonus > 0 output += "+#{bonus} > #{bonus}" elsif bonus < 0 output += "#{bonus} > #{bonus}" else output += " > 0" end total = bonus end elsif die == 1 # Crit crit_dice = "" while die == 1 crit_mul *= 2 die = @randomizer.roll_once(10) crit_dice += "#{die}," end total = die * crit_mul crit_dice = crit_dice.sub(/,$/, '') output += total.to_s output += "[1,#{crit_dice}]" total += bonus if bonus > 0 output += "+#{bonus} > #{total}" elsif bonus < 0 output += "#{bonus} > #{total}" end else total = die + bonus if bonus > 0 output += "#{die}+#{bonus} > #{total}" elsif bonus < 0 output += "#{die}#{bonus} > #{total}" else output += total.to_s end end if cmp_op == :>= output += (total >= diff ? " > 成功" : " > 失敗") end return output.to_s end |