Class: BCDice::GameSystem::NinjaSlayer

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

Defined Under Namespace

Classes: AT, EL, EV

Constant Summary collapse

ID =

ゲームシステムの識別子

'NinjaSlayer'
NAME =

ゲームシステム名

'ニンジャスレイヤーTRPG'
SORT_KEY =

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

'にんしやすれいやあRPG'
HELP_MESSAGE =

ダイスボットの使い方

<<~MESSAGETEXT
  ・通常判定 NJ
   NJx[y] or NJx@y or NJx
   x=判定ダイス y=難易度 省略時はNORMAL(4)
   例:NJ4@H 難易度HARD、判定ダイス4で判定
  ・回避判定 EV
   EVx[y]/z or EVx@y/z or EVx/z or EVx[y] or EVx@y or EVx
   x=判定ダイス y=難易度 z=攻撃側の成功数(省略可) 難易度を省略時はNORMAL(4)
   攻撃側の成功数を指定した場合、カウンターカラテ発生時には表示
   例:EV5/3 難易度NORMAL(省略時)、判定ダイス5、攻撃側の成功数3で判定
  ・近接攻撃 AT
   ATx[y] or ATx@y or ATx
   x=判定ダイス y=難易度 省略時はNORMAL(4) サツバツ!発生時には表示
   例:AT6[H] 難易度HARD,判定ダイス5で近接攻撃の判定
  ・サツバツ判定 SB
  ・電子戦 EL
   ELx[y] or ELx@y or ELx
   x=判定ダイス y=難易度 省略時はNORMAL(4)
   例:EL6[H] 難易度HARD,判定ダイス5で電子戦の判定

  ・難易度
   KIDS=K,EASY=E,NORMAL=N,HARD=H,ULTRA HARD=UH 数字にも対応
MESSAGETEXT
DIFFICULTY_VALUE_RE =

難易度の値の正規表現

/UH|[2-6KENH]/i.freeze
DIFFICULTY_RE =

難易度の正規表現

/\[(#{DIFFICULTY_VALUE_RE})\]|@(#{DIFFICULTY_VALUE_RE})/io.freeze
NJ_RE =

通常判定の正規表現

/\A(S)?NJ(\d+)#{DIFFICULTY_RE}?\z/io.freeze
EV_RE =

回避判定の正規表現

%r{\AEV(\d+)#{DIFFICULTY_RE}?(?:/(\d+))?\z}io.freeze
AT_RE =

近接攻撃の正規表現

/\AAT(\d+)#{DIFFICULTY_RE}?\z/io.freeze
EL_RE =

電子戦の正規表現

/\AEL(\d+)#{DIFFICULTY_RE}?\z/io.freeze
DIFFICULTY_SYMBOL_TO_INTEGER =

難易度の文字表現から整数値への対応

{
  'K' => 2,
  'E' => 3,
  'N' => 4,
  'H' => 5,
  'UH' => 6
}.freeze

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

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

Methods included from Translate

#translate

Constructor Details

#initialize(command) ⇒ NinjaSlayer

Returns a new instance of NinjaSlayer.



43
44
45
46
47
48
# File 'lib/bcdice/game_system/NinjaSlayer.rb', line 43

def initialize(command)
  super(command)

  @default_cmp_op = :>=
  @default_target_number = 4
end

Instance Method Details

#change_text(str) ⇒ Object



80
81
82
83
84
85
86
# File 'lib/bcdice/game_system/NinjaSlayer.rb', line 80

def change_text(str)
  m = NJ_RE.match(str)
  return str unless m

  b_roll = bRollCommand(m[2], integerValueOfDifficulty(m[3] || m[4]))
  return "#{m[1]}#{b_roll}"
end

#eval_game_system_specific_command(command) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/bcdice/game_system/NinjaSlayer.rb', line 88

def eval_game_system_specific_command(command)
  debug('eval_game_system_specific_command begin string', command)

  if (table = TABLES[command])
    return table.roll(randomizer)
  end

  case node = parse(command)
  when EV
    return executeEV(node)
  when AT
    return executeAT(node)
  when EL
    return executeEL(node)
  else
    return nil
  end
end