module Multiattack

typed: false

Public Instance Methods

clear_multiattack!(battle) click to toggle source

@param battle [Natural20::Battle]

# 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) click to toggle source

Get available multiattack actions @param session [Natural20::Session] @param battle [Natural20::Battle] @return [Array]

# File lib/natural_20/concerns/multiattack.rb, line 11
def multi_attack_actions(session, battle)
end
multiattack?(battle, npc_action) click to toggle source

@param battle [Natural20::Battle] @param npc_action [Hash]

# 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) click to toggle source

@param battle [Natural20::Battle]

Calls superclass method
# 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_attributes() click to toggle source
Calls superclass method
# File lib/natural_20/concerns/multiattack.rb, line 3
def setup_attributes
  super
end