class BCDice::GameSystem::PersonaO

Constants

HELP_MESSAGE

ダイスボットの使い方

ID

ゲームシステムのの識別子

NAME

ゲームシステム名

SORT_KEY

ゲームシステム名の読みがな

Public Instance Methods

eval_game_system_specific_command(command) click to toggle source
# File lib/bcdice/game_system/PersonaO.rb, line 37
def eval_game_system_specific_command(command)
  roll_attack(command) || roll_damage(command)
end

Private Instance Methods

roll_attack(command) click to toggle source
# File lib/bcdice/game_system/PersonaO.rb, line 43
def roll_attack(command)
  m = /^PT(-?\d+)?(@(-?\d+))?$/i.match(command)
  unless m
    return nil
  end

  success_rate = m[1].to_i
  critical_border = m[3]&.to_i || 5

  dice_value = @randomizer.roll_once(100)
  result =
    if dice_value <= critical_border
      Result.critical("クリティカル")
    elsif dice_value <= success_rate
      Result.success("成功")
    else
      Result.failure("失敗")
    end

  result.text = "D100<=#{success_rate}@#{critical_border} > #{dice_value} > #{result.text}"
  return result
end
roll_damage(command) click to toggle source
# File lib/bcdice/game_system/PersonaO.rb, line 66
def roll_damage(command)
  m = /^(\d+)PD\+(-?\d+)%(-?\d+)-(\d+)$/i.match(command)
  unless m
    return nil
  end

  dice = m[1].to_i
  kotei = m[2].to_i
  hosei = m[3].to_i
  bougyo = m[4].to_i

  dice_list = @randomizer.roll_barabara(dice, 10)
  dice_sum = dice_list.sum

  dmg = dice_sum + (hosei * kotei / 100.0).to_i - bougyo

  return "#{dice}D10+#{kotei}*#{hosei}%-#{bougyo} > [#{dice_list.join(',')}]+#{kotei}*#{hosei}%-#{bougyo} > #{dmg} ダメージ!"
end