Class: BCDice::GameSystem::TokumeiTenkousei
- Defined in:
- lib/bcdice/game_system/TokumeiTenkousei.rb
Constant Summary collapse
- ID =
ゲームシステムの識別子
'TokumeiTenkousei'
- NAME =
ゲームシステム名
'特命転攻生'
- SORT_KEY =
ゲームシステム名の読みがな
'とくめいてんこうせい'
- HELP_MESSAGE =
ダイスボットの使い方
<<~HELP ・判定 (xD6+y>=n) ゾロ目での自動振り足し 1の出目に応じてEPPの獲得量を表示 目標値 "?" には未対応 HELP
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
-
#epp(count_one) ⇒ String?
エキストラパワーポイント獲得.
- #eval_game_system_specific_command(command) ⇒ Object
-
#initialize(command) ⇒ TokumeiTenkousei
constructor
A new instance of TokumeiTenkousei.
- #interim_expr(cmd, dice_total) ⇒ Object
-
#same_all_dice?(dice_list) ⇒ Boolean
出目が全て同じか.
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) ⇒ TokumeiTenkousei
Returns a new instance of TokumeiTenkousei.
23 24 25 26 27 |
# File 'lib/bcdice/game_system/TokumeiTenkousei.rb', line 23 def initialize(command) super(command) @sort_add_dice = true end |
Instance Method Details
#epp(count_one) ⇒ String?
エキストラパワーポイント獲得
89 90 91 92 93 |
# File 'lib/bcdice/game_system/TokumeiTenkousei.rb', line 89 def epp(count_one) if count_one > 0 "#{count_one * 5}EPP獲得" end end |
#eval_game_system_specific_command(command) ⇒ 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 |
# File 'lib/bcdice/game_system/TokumeiTenkousei.rb', line 31 def eval_game_system_specific_command(command) parser = Command::Parser.new(/\d+D6/, round_type: round_type) cmd = parser.parse(command) unless cmd return nil end times = cmd.command.to_i dice_list = @randomizer.(times, 6).sort @dice_list = [dice_list] while same_all_dice?(dice_list) dice_list = @randomizer.(times, 6).sort @dice_list.push(dice_list) end dice_list_flatten = @dice_list.flatten dice_total = dice_list_flatten.sum() count_one = dice_list_flatten.count(1) total = dice_total + cmd.modify_number result = if cmd.cmp_op total.send(cmd.cmp_op, cmd.target_number) ? "成功" : "失敗" end sequence = [ "(#{cmd})", interim_expr(cmd, dice_total), total.to_s, result, epp(count_one) ].compact return sequence.join(" > ") end |
#interim_expr(cmd, dice_total) ⇒ Object
74 75 76 77 78 79 80 81 82 83 |
# File 'lib/bcdice/game_system/TokumeiTenkousei.rb', line 74 def interim_expr(cmd, dice_total) if @dice_list.flatten.size == 1 && cmd.modify_number == 0 return nil end dice_list = @dice_list.map { |ds| "[#{ds.join(',')}]" }.join("") modifier = Format.modifier(cmd.modify_number) return [dice_total.to_s, dice_list, modifier].join("") end |
#same_all_dice?(dice_list) ⇒ Boolean
出目が全て同じか
70 71 72 |
# File 'lib/bcdice/game_system/TokumeiTenkousei.rb', line 70 def same_all_dice?(dice_list) dice_list.size > 1 && dice_list.uniq.size == 1 end |