Traits

Adding certain tags to an entity applies extra behaviour to that entity. These are traits.

Carryable

An entities with the carryable tag can be picked up and moved around by the player. They can be manipulated with the following verbs get, drop, put

item: ball
name: bouncy ball
description: A small rubber super bouncy ball
tags: [carryable]

Containers

An entity with the container tag is considered a container. By default a container support putting items inside it, but can also be configured to allow items to be on top of it.

Containers may be carryable, openable, and transparent

An openable container must first be opened before items can be placed in, or retrieved from the container. A contents of a transparent container will always be visible, even if the container is closed.

item: backpack
name: backpack
description: An old tattered canvas backpack.
tags: [carryable, container]

Relative Location

The relativeLocation field defines how items are placed within the container. A shelf might have items placed on it, whereas a chest would have items placed in it. This is defined using the relativeLocation property. Supported values are in and on. Containers use in by default.

(Tip: YAML treats on as a boolean value, so be sure to put the value inside quotation marks)

Closable/Openable containers

Containers can also be given the closable/openable traits. If a container is closed, then items can not be added to or removed.

item: table
name: table
description: A large wooden table.
relativeLocation: "on"
tags: [container]

Carryable

Items tagged with carryable or carried can be picked up, dropped and put in containers. They have get, drop, and put verbs.

If an item is tagged with carried then it starts off in the player's inventory.

examples

item: ball
description: A small ball
location: northRoom
tags: 
  - carryable

Wearable

Items tagged with wearable or worn are items that can be worn. The have the wear and remove verbs.

If an item is tagged with worn then it starts off being worn by the player.

item: cloak
tags: ["carryable", "wearable"],
location : "northRoom",

Openable/Closable

Items tagged with openable/closable implicitly have open and close verbs, and an is_open property.

openable indicates that the item is closed. closable indicates the item start open.

item: greenDoor
location: northRoom
description: The green door
tags:  ["openable"],
before: 
  examine(this): 
    if: "this.is_open",
    then: "print('The door is open')",
    else: "print('The door is closed')"

Lockable/Locked

Items with the lockable tag can be locked. lockable items gain the lock and unlock verbs. They are also have is_locked, and key properties.

The key property can by used to specify an item that can be used to unlock this item.

If lockable is combined with openable then the item cannot be opened until it is unlocked.

item: "door"
location: northRoom
description: The green door
key: brass_key
tags: 
  - openable
  - lockable
  - locked
before:
    examine(this): 
        if: this.is_open
        then: print('The door is open')
        else: print('The door is closed')
---
item: brass_key
location: northRoom,
verbs: 
  - unlock.with
  - lock.with
tags: 
  - carryable

Pushable

Items tagged with pushable can be pushed. They are given the push verb. Pushable items can be pushed into adjacent rooms without being picked up.

item: box
location: northRoom
tags: 
  - pushable

Light Sources

Items with the lightSource tag are considered light sources.

item: torch,
tags: 
  - carryable
  - lightSource

Hidden

An item with the hidden tag cannot be seen.

The reveal function can be used to unhide it.

item: diamond
location: rubbishHeap
tags: 
  - carryable, 
  - hidden
---
item: rubbishHeap
description: A pile of stinking rubbish
location : northRoom
after:
  examine(this): 
    if: hasTag(diamond,'hidden')
    then: 
      - reveal(diamond)
      - print('You find a diamond')

visibleWhenDark

Items tagged with visibleWhenDark can be seen in the dark.

room: northRoom
description: >
  A small square room
tags:
  - start
  - dark
---
item: stickers
description: >
  glow in the dark stickers
location: northRoom
tags: 
  - carryable
  - visibleWhenDark

NPC

Items tagged with npc have and implicit onMove function added to them. This automatically prints a message when the npc item moves between locations.