Sha256: 094ac341137d454f8d79fa33fec4f39dacb735a8104dac8316d2d6733e1520ad

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module Gamefic
  module Standard
    module Actions
      module Open
        extend Gamefic::Scriptable

        respond :open, available do |actor, thing|
          actor.tell "You can't open #{the thing}."
        end

        respond :open, available(Openable) do |actor, thing|
          if thing.open?
            actor.tell "#{The thing} is already open."
          else
            actor.tell "You open #{the thing}."
            thing.open = true
          end
        end

        respond :open, available(Lockable) do |actor, thing|
          if thing.locked?
            actor.tell "#{The thing} is locked."
          else
            actor.proceed
          end
        end

        respond :open, available(Lockable, proc(&:has_lock_key?)), available do |actor, thing, key|
          actor.execute :unlock, thing, key
          actor.execute :open, thing if thing.unlocked?
        end

        interpret 'open :thing with :key', 'open :thing :key'
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gamefic-standard-3.3.0 lib/gamefic-standard/actions/open.rb