class BCDice::GameSystem::VampireTheMasquerade5th

Constants

DICE_POOL_INDEX
DIFFICULTY_INDEX
HELP_MESSAGE

ダイスボットの使い方

HUNGER_DICE_INDEX
ID

ゲームシステムの識別子

NAME

ゲームシステム名

NOT_CHECK_SUCCESS

難易度に指定可能な特殊値

SORT_KEY

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

Public Instance Methods

eval_game_system_specific_command(command) click to toggle source
# File lib/bcdice/game_system/VampireTheMasquerade5th.rb, line 46
def eval_game_system_specific_command(command)
  m = /\A(\d+)?(VMF)(\d+)(\+(\d+))?/.match(command)
  unless m
    return ''
  end

  dice_pool = m[DICE_POOL_INDEX].to_i
  dice_text, success_dice, ten_dice, = make_dice_roll(dice_pool)
  result_text = "(#{dice_pool}D10"

  hunger_dice_pool = m[HUNGER_DICE_INDEX]&.to_i
  if hunger_dice_pool
    hunger_dice_text, hunger_success_dice, hunger_ten_dice, hunger_botch_dice = make_dice_roll(hunger_dice_pool)

    ten_dice += hunger_ten_dice
    success_dice += hunger_success_dice

    result_text = "#{result_text}+#{hunger_dice_pool}D10) > [#{dice_text}]+[#{hunger_dice_text}] "
  else
    hunger_ten_dice = 0
    hunger_botch_dice = 0
    result_text = "#{result_text}) > [#{dice_text}] "
  end

  success_dice += get_critical_success(ten_dice)

  difficulty = m[DIFFICULTY_INDEX] ? m[DIFFICULTY_INDEX].to_i : NOT_CHECK_SUCCESS

  result_text = "#{result_text} 成功数=#{success_dice}"

  if difficulty > 0
    if success_dice >= difficulty
      judgment_result = get_success_result(ten_dice >= 2, hunger_ten_dice)
    else
      judgment_result = get_fail_result(hunger_botch_dice)
    end
    result_text = "#{result_text} 難易度=#{difficulty}#{judgment_result}"
  elsif difficulty < 0
    if success_dice == 0
      judgment_result = get_fail_result(hunger_botch_dice)
    else
      judgment_result = ""
    end
    result_text = "#{result_text}#{judgment_result}"
  end

  return result_text
end
get_critical_success(ten_dice) click to toggle source
# File lib/bcdice/game_system/VampireTheMasquerade5th.rb, line 95
def get_critical_success(ten_dice)
  # 10の目が2個毎に追加2成功
  return ((ten_dice / 2) * 2)
end
get_fail_result(hunger_botch_dice) click to toggle source
# File lib/bcdice/game_system/VampireTheMasquerade5th.rb, line 122
def get_fail_result(hunger_botch_dice)
  judgment_result = ":判定失敗!"
  if hunger_botch_dice > 0
    return "#{judgment_result} [Bestial Failure]"
  end

  return judgment_result
end
get_success_result(is_critical, hunger_ten_dice) click to toggle source
# File lib/bcdice/game_system/VampireTheMasquerade5th.rb, line 111
def get_success_result(is_critical, hunger_ten_dice)
  judgment_result = ":判定成功!"
  if hunger_ten_dice > 0 && is_critical
    return "#{judgment_result} [Messy Critical]"
  elsif is_critical
    return "#{judgment_result} [Critical Win]"
  end

  return judgment_result
end
make_dice_roll(dice_pool) click to toggle source
# File lib/bcdice/game_system/VampireTheMasquerade5th.rb, line 100
def make_dice_roll(dice_pool)
  dice_list = @randomizer.roll_barabara(dice_pool, 10)

  dice_text = dice_list.join(',')
  success_dice = dice_list.count { |x| x >= 6 }
  ten_dice = dice_list.count(10)
  botch_dice = dice_list.count(1)

  return dice_text, success_dice, ten_dice, botch_dice
end