Gamefic::Commodities

A groupable Gamefic entity.

Commodities are grouped by default. When a commodity gets added to a parent that already contains a commodity with the same class and name, they get combined, i.e., the existing commodity's quantity is increased by the new commodity's quantity, and the other commodity is destroyed.

Players can specify quantities in commands, e.g., take 1 coin.

Installation

Add the library to your Gamefic project's Gemfile:

gem 'gamefic-commodities'

Run bundle install.

Add the requirement to your project's code (typically in main.rb):

require 'gamefic-commodities'

Include the module in your project's plot:

class Example < Gamefic::Plot
  include Gamefic::Standard
  include Gamefic::Commodities
end

Usage

The Commodity entity and related actions are automatically imported into Gamefic::Standard.

Example of adding a commodity:

class Example::Plot < Gamefic::Plot
  include Gamefic::Standard

  construct :room, Room,
            name: 'room'

  make_seed Commodity,
            name: 'coin',
            quantity: 2,
            parent: room

  introduction do |actor|
    actor.parent = room
  end
end

Example gameplay:

> look
You see 2 coins.
> take coin
You take 2 coins.
> drop 1 coin
You drop a coin.
> look
You see a coin.
> inventory
You're carrying a coin.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/castwide/gamefic-commodity.