class BCDice::GameSystem::Raisondetre
Constants
- HELP_MESSAGE
ダイスボットの使い方
- ID
ゲームシステムの識別子
- NAME
ゲームシステム名
- SORT_KEY
ゲームシステム名の読みがな
Public Class Methods
new(command)
click to toggle source
Calls superclass method
BCDice::Base::new
# File lib/bcdice/game_system/Raisondetre.rb, line 36 def initialize(command) super(command) @sort_add_dice = true # ダイスのソート有 end
Public Instance Methods
checkDamage(diceCount, armor)
click to toggle source
# File lib/bcdice/game_system/Raisondetre.rb, line 127 def checkDamage(diceCount, armor) if diceCount <= 0 correction = 1 + diceCount * -1 rollCount = 1 else correction = 0 rollCount = diceCount end dice_list = @randomizer.roll_barabara(rollCount, 10).sort diceText = dice_list.join(",") diceArray = dice_list.map { |x| x == 10 ? 0 : x }.sort criticalCount = diceArray.count(0) diceArray.map! { |i| i - correction } diceText2 = diceArray.join(",") result = "#{rollCount}D10" result += "-#{correction}" if correction > 0 result += " > [#{diceText}] > [#{diceText2}]" if armor > 0 resultArray = [] success = 0 diceArray.each do |i| if i >= armor resultArray.push(i) success += 1 else resultArray.push("×") end end resultText = resultArray.join(',') result += " > [#{resultText}]>=#{armor} 有効数:#{success}" end result += " 0=#{criticalCount}個" return result end
checkRoll(diceCount, choiceCount, target)
click to toggle source
# File lib/bcdice/game_system/Raisondetre.rb, line 72 def checkRoll(diceCount, choiceCount, target) if diceCount <= 0 correction = 1 + diceCount * -1 rollCount = 1 else correction = 0 rollCount = diceCount end diceArray = @randomizer.roll_barabara(rollCount, 10).sort diceText = diceArray.join(',') diceArray.map! { |x| x == 10 ? 0 : x } diceArray.map! { |i| i - correction } diceText2 = diceArray.sort.join(',') funbleArray = diceArray.select { |i| i <= 1 } isFunble = (funbleArray.size >= rollCount) dice = 0 success = 0 unless isFunble criticalCount = diceArray.count(0) critical = criticalCount * 10 choiceArray = diceArray.reverse choiceArray.delete(0) choiceArray = choiceArray.slice(0..(choiceCount - 1)) choiceText = choiceArray.join(',') dice = choiceArray.inject(:+) success = dice + critical end result = "#{rollCount}D10" result += "-#{correction}" if correction > 0 result += " > [#{diceText}] > [#{diceText2}] > " if isFunble result += "達成値:0 (Funble)" else result += "#{dice}[#{choiceText}]" result += "+#{critical}" if critical > 0 result += "=達成値:#{success}" result += " (#{criticalCount}Critical)" if critical > 0 end if target > 0 result += ">=#{target} " result += "【成功】" if success >= target result += "【失敗】" if success < target end return result end
eval_game_system_specific_command(command)
click to toggle source
# File lib/bcdice/game_system/Raisondetre.rb, line 46 def eval_game_system_specific_command(command) if command =~ /(-)?(\d+)?RD(\d+)?(@(\d+))?$/i diceCount = (Regexp.last_match(2) || 1).to_i diceCount *= -1 unless Regexp.last_match(1).nil? choiceCount = (Regexp.last_match(3) || 1).to_i target = (Regexp.last_match(5) || 0).to_i return checkRoll(diceCount, choiceCount, target) elsif command =~ /(-)?(\d+)?DD([1-9])?([+\-]\d+)?$/i diceCount = (Regexp.last_match(2) || 1).to_i diceCount *= -1 unless Regexp.last_match(1).nil? armor = (Regexp.last_match(3) || 0).to_i if armor > 0 armor += (Regexp.last_match(4) || 0).to_i armor = 1 if armor < 1 armor = 9 if armor > 9 end return checkDamage(diceCount, armor) end return nil end