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