Class: LookAction
Instance Attribute Summary collapse
#action_type, #errors, #result, #session, #source
Class Method Summary
collapse
Instance Method Summary
collapse
#initialize, #label, #name, #to_s, #validate
Instance Attribute Details
#ui_callback ⇒ Object
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
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_map ⇒ Object
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
|