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.
Entities
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.
Collections
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
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.
Basic Attributes
The basic attributes of a collection definition are:
id
: String, the same IDlabel
: String, this is run through Babel for translation/localizationitemname
: 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 arraysdefault
: Boolean - Is this granted to the character by default? Not sure this works or is needed anymorestatic
: 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 typedefault_action
: Testname (if present, this is the action for the item when it is executed
Value Attributes
'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 belowcalc
: A calculation, and only used ifvalue
= "calculation".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 itemrank_calculation
: With ranks, return the value of the rank's calc$fieldname
: Return the value of the field in the collection item (similar toraw
)
Ranked Items
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 Values
The 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 dictionariesraw
: Give me the value of the field, no parsinglookup_value
: For enumerations, give me the value from the options
Fields
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 readablelabel
: String, the label of the field, run through the dictionary lookup (human readable)type
: Enumeration, values:string
,meta
,int
default
: Variable, what to use if no valuecatalog
: Enumerationvalue
: Enumerationvalues
: Dictionary, only present ifvalue
is "enumeration"
Tests
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
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 eachactor
and eachtarget
targeted
: Boolean (needs a target attribute)isattack
: Boolean (is an attack) [poorly implemented]eachactor
: Enumeration, see beloweachtarget
: Enumeration, see belowtest
: Which test [see above] to execute inside this actionmessage
: 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 eachactor
and eachtarget
can be:
map_entity
: "Living" tokens on the map, both player and storytellermap_corpse
: "Dead" tokens on the mapmap_player
: Player-controlled tokens on the mapplayer
: Every player-controlled entitymap_npc
: Every storyteller-controlled entity on the map [UNIMPLEMENTED]
Special Actions
These are special actions, and handled by the system.
"special" : "view_character_sheet"
view_character_sheet
: Pop open the featheredit_permissions
: Open the edit perms dialog for an entityclear_map_tokens
: Clear all tokens from the current mapstart_combat
: Start the combat sequenceend_combat
: End the combat sequencetake_control
: Take operational control of an entityremove_from_map
: Remove an entity token from the map