Class: PfrpgCore::SneakAttackMacro

Inherits:
Macro
  • Object
show all
Defined in:
lib/pfrpg_core/macros/sneak_attack_macro.rb

Instance Attribute Summary

Attributes inherited from Macro

#character

Instance Method Summary collapse

Methods inherited from Macro

#as_json, find_available, macro_subclasses, #slug

Constructor Details

#initialize(character) ⇒ SneakAttackMacro



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/pfrpg_core/macros/sneak_attack_macro.rb', line 4

def initialize(character)
  super

  sneak_attack_features = character.class_features.select do |feature|
    feature.name.downcase.start_with? 'sneak a'
  end

  @sneak_attack_level = sneak_attack_features.map do |feature|
    /Sneak Attack \((\d+)d6\)/.match(feature.name)[1].to_i
  end.max || 0
end

Instance Method Details

#applies_to?(weapon) ⇒ Boolean



24
25
26
# File 'lib/pfrpg_core/macros/sneak_attack_macro.rb', line 24

def applies_to?(weapon)
  true
end

#available?Boolean



20
21
22
# File 'lib/pfrpg_core/macros/sneak_attack_macro.rb', line 20

def available?
  @sneak_attack_level.nonzero?
end

#infoObject



28
29
30
# File 'lib/pfrpg_core/macros/sneak_attack_macro.rb', line 28

def info
  { sneakAttackLevel: @sneak_attack_level }
end

#nameObject



16
17
18
# File 'lib/pfrpg_core/macros/sneak_attack_macro.rb', line 16

def name
  "Sneak Attack (level #{@sneak_attack_level})"
end