Class: BCDice::GameSystem::NeonUnderRealm
- Defined in:
- lib/bcdice/game_system/NeonUnderRealm.rb
Constant Summary collapse
- ID =
"NeonUnderRealm"- NAME =
"光都暗域〈ネオン・アンダーレルム〉"- SORT_KEY =
"ねおんあんたあれるむ"- HELP_MESSAGE =
<<~TEXT ・判定(D10の出目が「目標値以下」を成功として数える) [M]NU[N][±K][@L][±K'] M:判定ダイス数(省略不可)。「10+5+3-2」のような加減算を許可 N:目標値(1~10)。省略時は 5 K, K':達成値への補正。両方指定された場合はKを採用し、K'は無視される。(省略可) L:気合の閾値(0~5)。省略時は 0(気合は常に0扱い) ※Nが1~10の範囲外、またはLが0~5の範囲外の場合はコマンドとして処理しません(出力しません) ※達成値 = max(0, 素の成功数 + K) ※効果値 = ダイス数 - 素の成功数 ※素の成功数が0なら判定は失敗(達成値が補正で1以上でも失敗扱い) ※成功は表示しません。素の成功数0または達成値0のときのみ「失敗」を表示します。 例) 4NU 4NU7+2 10+5+3-2NU5-1@2 TEXT
- DEFAULT_THRESHOLD =
5- MIN_THRESHOLD =
1- MAX_THRESHOLD =
10- DEFAULT_KIAI_THRESHOLD =
0- MIN_KIAI_THRESHOLD =
0- MAX_KIAI_THRESHOLD =
5- DEFAULT_MODIFIER =
0
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(command) ⇒ Object
[M]NU±[K]@[L]
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 |
# File 'lib/bcdice/game_system/NeonUnderRealm.rb', line 42 def eval_game_system_specific_command(command) m_expr, n_str, k_str, l_str = parse_command(command) return nil unless m_expr dice_count = eval_dice_count(m_expr) return nil unless dice_count && dice_count >= 1 threshold = n_str&.to_i || DEFAULT_THRESHOLD return nil unless (MIN_THRESHOLD..MAX_THRESHOLD).cover?(threshold) modifier = k_str&.to_i || DEFAULT_MODIFIER kiai_threshold = l_str&.to_i || DEFAULT_KIAI_THRESHOLD return nil unless (MIN_KIAI_THRESHOLD..MAX_KIAI_THRESHOLD).cover?(kiai_threshold) dice_list = @randomizer.(dice_count, 10).sort raw_success = dice_list.count { |x| x <= threshold } achieved = raw_success + modifier achieved = 0 if achieved < 0 effect = dice_count - raw_success kiai = kiai_threshold > 0 ? dice_list.count { |x| x <= kiai_threshold } : 0 expr_text = build_expr_text(dice_count, threshold, modifier, kiai_threshold, dice_list) result_text_parts = [ "達成値:#{achieved}(成功数:#{raw_success})", "効果値:#{effect}", "気合:#{kiai}", ] # 素成功0なら失敗。または達成値0なら失敗。成功表示は不要。失敗表示はこのケースのみ。 result_text_parts << "失敗" if raw_success == 0 || achieved == 0 text = [ "(#{command.upcase})", expr_text, result_text_parts.join(" / "), ].join(" > ") result = Result.new(text) # 成功条件:達成値>=1 かつ 素成功>=1 is_success = (achieved >= 1) && (raw_success >= 1) result.success = is_success result.failure = !is_success result end |