Class: BCDice::GameSystem::TherapieSein

Inherits:
Base
  • Object
show all
Defined in:
lib/bcdice/game_system/TherapieSein.rb

Constant Summary collapse

ID =

ゲームシステムの識別子

'TherapieSein'
NAME =

ゲームシステム名

'セラフィザイン'
SORT_KEY =

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

'せらふいさいん'
HELP_MESSAGE =

ダイスボットの使い方

<<~MESSAGETEXT
  ・一般判定:TS[n][±m][@t]  []内のコマンドは省略可能。クリティカル無。
  ・戦闘判定:OP[n][±m][@t]  []内のコマンドは省略可能。クリティカル有。

  「n」で能力値修正などを指定。
  「±m」で達成値への修正値を追加指定。+5+1-3のように、複数指定も可能です。
  「@t」で目標値を指定。省略時は達成値のみ表示、指定時は判定の正否を追加表示。

  【書式例】
  ・TS → ダイスの合計値を達成値として表示。
  ・TS4 → ダイス合計+4を達成値表示。
  ・TS4-1 → ダイス合計+4-1(計+3)を達成値表示。
  ・TS2+1@10 → ダイス合計+2+1(計+3)の達成値と、判定の成否を表示。
  ・OP4+3+1 → ダイス合計+4+3+1(計+8)を達成値&クリティカル表示。
  ・OP3@12 → ダイス合計+3の達成値&クリティカル、判定の成否を表示。
MESSAGETEXT

Instance Attribute Summary

Attributes inherited from Base

#d66_sort_type, #default_cmp_op, #default_target_number, #randomizer, #reroll_dice_reroll_threshold, #round_type, #sides_implicit_d, #upper_dice_reroll_threshold

Instance Method Summary collapse

Methods inherited from Base

#change_text, #check_result, command_pattern, #enable_debug, #enabled_d9?, #eval, eval, #grich_text, #initialize, prefixes_pattern, register_prefix, register_prefix_from_super_class, #sort_add_dice?, #sort_barabara_dice?

Methods included from Translate

#translate

Constructor Details

This class inherits a constructor from BCDice::Base

Instance Method Details

#checkRoll(hasCritical, modify, target) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/bcdice/game_system/TherapieSein.rb', line 55

def checkRoll(hasCritical, modify, target)
  dice_list = @randomizer.roll_barabara(2, 6)
  dice = dice_list.sum()
  diceText = dice_list.join(",")
  successValue = dice + modify

  modifyText = getValueText(modify)
  targetText = (target == 0 ? '' : ">=#{target}")

  result = "(2D6#{modifyText}#{targetText})"
  result += "#{dice}(#{diceText})#{modifyText}"

  if hasCritical && (dice == 12)
    result += " > クリティカル!"
    return result
  end

  result += "#{successValue}#{targetText}"

  return result if target == 0

  if successValue >= target
    result += " > 【成功】"
  else
    result += " > 【失敗】"
  end

  return result
end

#eval_game_system_specific_command(command) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/bcdice/game_system/TherapieSein.rb', line 35

def eval_game_system_specific_command(command)
  output =
    case command.upcase

    when /(TS|OP)(\d+)?(([+-]\d+)*)(@(\d+))?$/i
      hasCritical = (Regexp.last_match(1) == "OP")
      target = (Regexp.last_match(6) || 0).to_i
      modify = (Regexp.last_match(2) || 0).to_i
      modifyAddString = Regexp.last_match(3)

      modify_list = modifyAddString.scan(/[+-]\d+/) # 修正値を分割して配列へ
      modify_list.each { |i| modify += i.to_i }

      checkRoll(hasCritical, modify, target)

    end

  return output
end

#getValueText(value) ⇒ Object



85
86
87
88
89
90
# File 'lib/bcdice/game_system/TherapieSein.rb', line 85

def getValueText(value)
  return "" if value == 0
  return value.to_s if value < 0

  return "\+#{value}"
end