class ItemLibrary::PitTrap

Represents a staple of DnD the concealed pit trap

Attributes

activated[RW]

Public Instance Methods

area_trigger_handler(entity, entity_pos, is_flying) click to toggle source
# File lib/natural_20/item_library/pit_trap.rb, line 8
def area_trigger_handler(entity, entity_pos, is_flying)
  result = []
  return nil if entity_pos != position
  return nil if is_flying

  unless activated
    damage = Natural20::DieRoll.roll(@properties[:damage_die])
    result = [
      {
        source: self,
        type: :state,
        params: {
          activated: true
        }
      },
      {
        source: self,
        target: entity,
        type: :damage,
        attack_name: @properties[:attack_name] || 'pit trap',
        damage_type: @properties[:damage_type] || 'piercing',
        damage: damage
      }
    ]
  end

  result
end
concealed?() click to toggle source
# File lib/natural_20/item_library/pit_trap.rb, line 55
def concealed?
  !activated
end
jump_required?() click to toggle source
# File lib/natural_20/item_library/pit_trap.rb, line 59
def jump_required?
  activated
end
label() click to toggle source
# File lib/natural_20/item_library/pit_trap.rb, line 41
def label
  return 'ground' unless activated

  @properties[:name].presence || 'pit trap'
end
passable?() click to toggle source
# File lib/natural_20/item_library/pit_trap.rb, line 47
def passable?
  true
end
placeable?() click to toggle source
# File lib/natural_20/item_library/pit_trap.rb, line 37
def placeable?
  !activated
end
token() click to toggle source
# File lib/natural_20/item_library/pit_trap.rb, line 51
def token
  ["\u02ac"]
end

Protected Instance Methods

setup_other_attributes() click to toggle source
# File lib/natural_20/item_library/pit_trap.rb, line 65
def setup_other_attributes
  @activated = false
end