Class: LookAction

Inherits:
Natural20::Action show all
Defined in:
lib/natural_20/actions/look_action.rb

Instance Attribute Summary collapse

Attributes inherited from Natural20::Action

#action_type, #errors, #result, #session, #source

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Natural20::Action

#initialize, #label, #name, #to_s, #validate

Constructor Details

This class inherits a constructor from Natural20::Action

Instance Attribute Details

#ui_callbackObject

Returns the value of attribute ui_callback.



2
3
4
# File 'lib/natural_20/actions/look_action.rb', line 2

def ui_callback
  @ui_callback
end

Class Method Details

.apply!(battle, item) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/natural_20/actions/look_action.rb', line 49

def self.apply!(battle, item)
  case (item[:type])
  when :look
    battle.entity_state_for(item[:source])[:active_perception] = item[:die_roll].result
    battle.entity_state_for(item[:source])[:active_perception_disadvantage] = item[:die_roll_disadvantage].result
    Natural20::EventManager.received_event({
                                             source: item[:source],
                                             perception_roll: item[:die_roll],
                                             event: :perception
                                           })
    item[:ui_callback]&.target_ui(item[:source], perception: item[:die_roll].result, look_mode: true)
  end
end

.build(session, source) ⇒ Object



28
29
30
31
# File 'lib/natural_20/actions/look_action.rb', line 28

def self.build(session, source)
  action = LookAction.new(session, source, :look)
  action.build_map
end

.can?(entity, battle, options = {}) ⇒ Boolean

Parameters:

Returns:

  • (Boolean)


6
7
8
# File 'lib/natural_20/actions/look_action.rb', line 6

def self.can?(entity, battle, options = {})
  battle.nil? || !battle.ongoing? || battle.entity_state_for(entity)[:active_perception].zero?
end

Instance Method Details

#build_mapObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/natural_20/actions/look_action.rb', line 10

def build_map
  OpenStruct.new({
                   param: [
                     {
                       type: :look,
                       num: 1
                     }
                   ],
                   next: lambda { |callback|
                     self.ui_callback = callback
                     OpenStruct.new({
                                      param: nil,
                                      next: -> { self }
                                    })
                   }
                 })
end

#resolve(_session, _map, opts = {}) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/natural_20/actions/look_action.rb', line 33

def resolve(_session, _map, opts = {})
  perception_check = @source.perception_check!(opts[:battle])
  perception_check_2 = @source.perception_check!(opts[:battle])

  perception_check_disadvantage = [perception_check, perception_check_2].min
  @result = [{
    source: @source,
    type: :look,
    die_roll: perception_check,
    die_roll_disadvantage: perception_check_disadvantage,
    battle: opts[:battle],
    ui_callback: ui_callback
  }]
  self
end