This is the core rules engine that defines a lot of things. It has many sections, each with their own dictionary of values, and each section may have separate documentation.
This game supports these types of player (or NPC) characters and this is what they look like. The default is usually just "character" but think also "ground_vehicle", "air_vehicle", "voidship", etc. If two entities can't use the same character sheet, they should be different sheets.
This defines complex objects that are used by the game, such as a "spell" or "weapon". These are things that characters may have 0 or more of, and the thing they have can be pulled from a list.
Collection Identifiers (collectionId) is important. They must be unique and simple. When a module or catalog is imported, it may include additional entries for the collection. Sometimes you may have to say "use these items as this type of collection" which will force the Game engine to see the data as that type of object.
Collections define a bunch of things, they are the meat of content in many ways. They are used in many ways. Collections are defined at the engine level (so that it knows what to do with them), and later they are also referenced in the Character definition as well.
Collection definitions have many possible keys. They describe both how a thing, such a a Skill or Weapon, looks and behaves inside the Game, as well as how its Catalog windows and Flyouts can behave. Some Games may say "this collection contains only these items, and cannot be modified" (like with a skill tree).
Not all collections have all traits, and some traits are exclusionary to each other. We shall discuss them in sections.
The basic attributes of a collection definition are:
id: String, the same ID
label: String, this is run through Babel for translation/localization
itemname: String, run through Babel, this is the single unit name of the item ("skill" vs. "skills").
type: "complex_object" - you only ever want this, but it's important, there's vestigial stuff about arrays
default: Boolean - Is this granted to the character by default? Not sure this works or is needed anymore
static: Boolean - If true, this Catalog does not have child elements and is a definition only (like "armor points")
testable: Boolean - Can you test this item?
targetable: Boolean - Can you target this item? [UNIMPLEMENTED]
defaultvalue: Variable; depends on the data type
default_action: Testname (if present, this is the action for the item when it is executed
'When I ask for the value of this item, what are you sending me?' This can have several meanings depending on the Game. For a Skill, we could be returning the total value of it, or the ranks, or the dice to be rolled - it depends.
value: Enumeration, described below
calc: A calculation, and only used if
ranked: Boolean, only present if item is ranked (ranked only)
ranks: A dictionary of values that show how the value can change based on the rank (ranked only)
The values that can given to the
value field are:
raw: Just the raw value of the collection item. Do no processing or lookup (reads "value" field).
calculation: Take the value of "calc" and run it against this item
rank_calculation: With ranks, return the value of the rank's calc
$fieldname: Return the value of the field in the collection item (similar to
For ranked items, we have an addition sub-dictionary that can describe different effects at different ranks. This field,
ranks, is only used if both
ranked is true the value of
value is "rank_calculation".
Catalog and Gamespace Behaviors
additem: Boolean (if false, the catalog won't allow you to add items from it)
canfavorite: Boolean (Can these items be favorited?)
singular: Boolean (If true, the same catalog items cannot be added twice. This is for things like 'skills'.)
catalog field describes what to show in this field when viewing the catalog.
catalog: Enumeration, see below
Values for the
catalog field can be:
value: Give me the value of the field, parsed through the language dictionaries
raw: Give me the value of the field, no parsing
lookup_value: For enumerations, give me the value from the options
The collection definition's
fields dictionary describes the Collection Item and what it looks like. Some fields (such as
description) exist whether you define them or not.
Each field in an item can have the following attributes:
name: String, the name of the field, machine readable
label: String, the label of the field, run through the dictionary lookup (human readable)
type: Enumeration, values:
default: Variable, what to use if no value
values: Dictionary, only present if
These are really atomic parts of interactivity. Before you think "why not balkanize these," a lot of these actions are system-dependent - for instance, not every game has "initiative".
Actions are passed actors and targets by context. These then execute the test, or have it executed on them, etc. They are not defined here but are passed as arguments.
- You cannot have both
targeted: Boolean (needs a target attribute)
isattack: Boolean (is an attack) [poorly implemented]
eachactor: Enumeration, see below
eachtarget: Enumeration, see below
test: Which test [see above] to execute inside this action
message: message_key (Use this message in the Table Log)
prefertoolmessage: Boolean (If there is a tool and the tool has a message, let it override)
special: Special_action_name (use a special action, see below)
metrics: Dictionary (additional metrics to include when displaying)
The values for
eachtarget can be:
map_entity: "Living" tokens on the map, both player and storyteller
map_corpse: "Dead" tokens on the map
map_player: Player-controlled tokens on the map
player: Every player-controlled entity
map_npc: Every storyteller-controlled entity on the map [UNIMPLEMENTED]
These are special actions, and handled by the system.
"special" : "view_character_sheet"
view_character_sheet: Pop open the feather
edit_permissions: Open the edit perms dialog for an entity
clear_map_tokens: Clear all tokens from the current map
start_combat: Start the combat sequence
end_combat: End the combat sequence
take_control: Take operational control of an entity
remove_from_map: Remove an entity token from the map