HERITAGE statements¶
action¶
Syntax:
action(name):
succeed:
Example:
action(open_door):
succeed: You open the door
fail: You don't have a key
require_inventory: key
action allows the developer to create specific commands that are not tied to a specific item and can always be executed (this specific example is better used as an on_open substatement on a door item).
name is the command the user will type. If it is more than one word, it should be seperated by an underscore.
action supports the following substatements:
succeed: statement to print when the action succeeds
fail: statement to print when the action fails
require_location: locationnumber(X.Y.Z.) followed by a comma-seperated list of items that should be in that location
require_here: comma-seperated list of items that should be on the player's current location
require_inventory: comma-seperated list of items that should be in the player's inventory
equals: check if variable is equal to value (variable, value)
less_than: check if variable is less than a certain value (variable, value)
more_than: check if variable is more than a certain value (variable, value)
lose: comma-seperated list of items in inventory to disappear
gain: comma-seperated list of items to be added to the inventory
drop: comma-seperated list of items to be moved from the inventory to the current room
exit¶
Syntax:
exit(id):
Example:
exit(1):
fail: The door is locked
require_inventory: key
exit allows the developer to create special exits. These are exits that do not use a standard direction (north, east, south, west, northeast, southeast, northwest, southwest, up and down) or exits on a standard direction that have special requirements. id is an unique number. The same id should not be re-used for multiple exits.
exit supports the following substatements:
succeed: statement to print when the action succeeds
fail: statement to print when the action fails
require_location: locationnumber(X.Y.Z.) followed by a comma-seperated list of items that should be in that location
require_here: comma-seperated list of items that should be on the player's current location
require_inventory: comma-seperated list of items that should be in the player's inventory
equals: check if variable is equal to value (variable, value)
less_than: check if variable is less than a certain value (variable, value)
more_than: check if variable is more than a certain value (variable, value)
lose: comma-seperated list of items in inventory to disappear
gain: comma-seperated list of items to be added to the inventory
drop: comma-seperated list of items to be moved from the inventory to the current room
new_location: X.Y.Z value of the room this exit should take you to
info¶
Syntax:
info():
title:
author:
license:
Example:
info():
title: Your game name
author: Your name
license: Your preferred license
info allows the developer to store game-specific information such as title, author or license.
The title, author and license fields are required. The developer may add as many additional fields as they want, but it is up to the HERITAGE implementation if these are shown and how these are shown.
import¶
Syntax:
import(filename)
Example:
import(items)
import allows the developer to import other HERITAGE files in the current directory or a subdirectory. This is mostly to ease organising game data, but can also be used to import “libraries” adding a set of standard items. Do note that the statements in the imported file are inserted on the location the import statement is. If you want to overwrite imported items, make sure to do so AFTER the import statement.
For security and privacy reasons, only files in the current directory or a subdirectory may be imported.
item¶
Syntax:
item(name.instance):
Example:
item(dark_coat.2):
on_examine: This is a dark coat.
name is the name of the item to create, instance is an name-unique number. itemname is required, and multi-word items should have the words separated by an underscore. instance is not required, unless you want to have multiple items with the same name; item(dark_coat) is valid syntax. An item and instance combination should only be defined once.
on_handler fields define what to do when an user types a command. In the example, the text “This is a dark coat” would be printed if the player types “look at dark coat”.
room¶
Syntax:
room(x.y.z):
Example:
room(0.0.0):
first_enter: This text is returned the first time someone enters this room
description: Description text, shown on entering the room or looking
items: pen, computer.2
exits: portal.3, east
room allows the user to create a room on a 3 dimensional grid. The player always starts at the room with X, Y and Z positions 0 (room(0.0.0)).
Each x.y.z combination should only be defined once.
room accepts the following substatements:
first_enter: The text to print upon entering this room for the first time
description: Text shown upon entering the room (also first time if first_enter is not defined) or looking
items: comma-seperated list of items in the room
exits: comma-seperated list of exits in the room
var¶
Syntax:
var(name, value)
Example:
var(points, 0)
var initializes a variable with the given value. This can be either an integer (0, 2, 14, etc.), the name of another variable that has been defined before, or a string (do note to use “double quotes”).