class LookAction
Attributes
ui_callback[RW]
Public Class Methods
apply!(battle, item)
click to toggle source
# 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)
click to toggle source
# 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 = {})
click to toggle source
@param entity [Natural20::Entity] @param battle [Natural20::Battle]
# 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
Public Instance Methods
build_map()
click to toggle source
# 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 = {})
click to toggle source
# 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