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