class BCDice::GameSystem::ScreamHighSchool
Constants
- HELP_MESSAGE
ダイスボットの使い方
- ID
ゲームシステムの識別子
- NAME
ゲームシステム名
- SORT_KEY
ゲームシステム名の読みがな
Public Instance Methods
check_roll_sh(success_rate, critical_border, command_type)
click to toggle source
# File lib/bcdice/game_system/ScreamHighSchool.rb, line 70 def check_roll_sh(success_rate, critical_border, command_type) success_rate = 0 if success_rate < 0 fumble_border = (success_rate < 100 ? 96 : 99) dice_value = @randomizer.roll_once(100) result = get_check_result(dice_value, success_rate, critical_border, fumble_border) title, supplementary = get_supplementary(command_type, result.text) unless supplementary.empty? supplementary = "(#{supplementary})" end result.text = "#{title}判定 D100<=#{success_rate}@#{critical_border} > #{dice_value} > #{result.text}#{supplementary}" return result end
eval_game_system_specific_command(command)
click to toggle source
# File lib/bcdice/game_system/ScreamHighSchool.rb, line 45 def eval_game_system_specific_command(command) case command when /(EM|TR|FE)(-?\d+)(@(\d+))?/i command_type = Regexp.last_match(1).upcase success_rate = Regexp.last_match(2).to_i critical_border_text = Regexp.last_match(4) critical_border = get_critical_border(critical_border_text, success_rate) return check_roll_sh(success_rate, critical_border, command_type) when %r{(SH|SHS)(-?\d+)(/(\d+))?(@(\d+))?}i success_rate = Regexp.last_match(2).to_i repeat_count = (Regexp.last_match(4) || 1).to_i critical_border_text = Regexp.last_match(6) critical_border = get_critical_border(critical_border_text, success_rate) return check_roll_repeat_attack(success_rate, repeat_count, critical_border) when /^DC(SL|BL|IM|BR|RF|EL)(\d+)/i type = Regexp.last_match(1) damage_value = Regexp.last_match(2).to_i return look_up_damage_chart(type, damage_value) end return nil end
get_supplementary(command_type, result)
click to toggle source
# File lib/bcdice/game_system/ScreamHighSchool.rb, line 85 def get_supplementary(command_type, result) title = '' supplementary = '' case command_type when 'EM' title = '感情' case result when 'クリティカル' supplementary = '次に行う判定の成功率に+50%' when '成功' supplementary = '次に行う判定の成功率に+30%' when '失敗' supplementary = '次に行う判定の成功率に-20%、呪縛+1点' when 'ファンブル' supplementary = '次に行う判定の成功率に-50%、呪縛+1D5点' end when 'TR' title = '性格傾向' case result when '失敗' supplementary = '反対側の性格傾向で再判定する。あるいは、もしこれがその再判定の結果であればプレイヤーが性格傾向を選択する' when 'ファンブル' supplementary = '反対側の性格傾向に従い、呪縛+1D5点する。あるいは、もしこれが失敗後の再判定の結果だった場合、PCは混乱し行動を放棄するか逃げ出す。呪縛+2点' else supplementary = '判定した性格傾向に従う' end when 'FE' title = '恐怖' case result when '成功' supplementary = 'ショックを受け流した。恐怖判定効果表の成功側の値分、呪縛が上昇する' when '失敗' supplementary = 'ショックを受けた。恐怖判定効果表の失敗側の値分、呪縛が上昇する' when 'ファンブル' supplementary = '深いショックを受けた。恐怖判定効果表の失敗側の値分に加え、さらに1D5点分、呪縛が上昇する' else supplementary = '何もショックを受けなかった' end end return title, supplementary end