Module: Multiattack

Included in:
Natural20::Npc, Natural20::PlayerCharacter
Defined in:
lib/natural_20/concerns/multiattack.rb

Overview

typed: false

Instance Method Summary collapse

Instance Method Details

#clear_multiattack!(battle) ⇒ Object

Parameters:



32
33
34
35
# File 'lib/natural_20/concerns/multiattack.rb', line 32

def clear_multiattack!(battle)
  entity_state = battle.entity_state_for(self)
  entity_state[:multiattack] = {}
end

#multi_attack_actions(session, battle) ⇒ Array

Get available multiattack actions

Parameters:

Returns:

  • (Array)


11
12
# File 'lib/natural_20/concerns/multiattack.rb', line 11

def multi_attack_actions(session, battle)
end

#multiattack?(battle, npc_action) ⇒ Boolean

Parameters:

Returns:

  • (Boolean)


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/natural_20/concerns/multiattack.rb', line 39

def multiattack?(battle, npc_action)
  return false unless npc_action
  return false unless class_feature?("multiattack")

  entity_state = battle.entity_state_for(self)

  return false unless entity_state[:multiattack]
  return false unless npc_action[:multiattack_group]

  entity_state[:multiattack].each do |_group, attacks|
    return true if attacks.include?(npc_action[:name])
  end

  false
end

#reset_turn!(battle) ⇒ Object

Parameters:



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/natural_20/concerns/multiattack.rb', line 15

def reset_turn!(battle)
  entity_state = super battle

  return entity_state unless class_feature?("multiattack")

  multiattack_groups = {}
  @properties[:actions].select { |a| a[:multiattack_group] }.each do |a|
    multiattack_groups[a[:multiattack_group]] ||= []
    multiattack_groups[a[:multiattack_group]] << a[:name]
  end

  entity_state[:multiattack] = multiattack_groups

  entity_state
end

#setup_attributesObject



3
4
5
# File 'lib/natural_20/concerns/multiattack.rb', line 3

def setup_attributes
  super
end