Skip to content

Ruleset

ID: Ruleset

A ruleset of all the things that can be used in the game

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"id": "Ruleset",
"examples": [
{
"_type": "ruleset",
"_meta": {
"rulesetUrl": "https://dh-forge.com/schema.json",
"rulesetVersion": "0.2.0",
"minVersion": "0.0.1",
"dateCreated": "2025-05-30T12:00:00.000Z",
"dateUpdated": "2025-05-30T12:00:00.000Z"
},
"item/armor": {},
"item/weapon": {},
"item/thing": {},
"role/class": {},
"role/subclass": {},
"heritage/ancestry": {},
"heritage/community": {}
}
],
"type": "object",
"properties": {
"$schema": {
"type": "string",
"format": "uri"
},
"_type": {
"const": "ruleset"
},
"_meta": {
"type": "object",
"properties": {
"rulesetVersion": {
"$ref": "#/$defs/SchemaVersion"
},
"dateCreated": {
"type": "string",
"format": "date-time",
"pattern": "^((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))T([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(\\.\\d+)?(Z)$"
},
"dateUpdated": {
"type": "string",
"format": "date-time",
"pattern": "^((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))T([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(\\.\\d+)?(Z)$"
},
"rulesetUrl": {
"$ref": "#/$defs/RulesetUrl"
},
"minVersion": {
"$ref": "#/$defs/SchemaVersion"
}
},
"required": [
"rulesetVersion",
"dateCreated",
"dateUpdated",
"rulesetUrl",
"minVersion"
],
"additionalProperties": false
},
"item/armor": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/Armor"
}
},
"item/thing": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/Thing"
}
},
"item/weapon": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/Weapon"
}
},
"role/class": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/Class"
}
},
"role/subclass": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/Subclass"
}
},
"heritage/ancestry": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/Ancestry"
}
},
"heritage/community": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"$ref": "#/$defs/Community"
}
}
},
"required": [
"_type",
"_meta",
"item/armor",
"item/thing",
"item/weapon",
"role/class",
"role/subclass",
"heritage/ancestry",
"heritage/community"
],
"additionalProperties": false,
"$defs": {
"SchemaVersion": {
"id": "SchemaVersion",
"title": "Schema Version",
"description": "A version number",
"examples": [
"0.0.0"
],
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+$"
},
"RulesetUrl": {
"id": "RulesetUrl",
"title": "Ruleset URL",
"description": "The URL of the ruleset",
"examples": [
"https://docs.dh-forge.com/schema/0.0.0/ruleset.json",
"https://docs.dh-forge.com/schema/1.0.0/ruleset.json"
],
"type": "string",
"format": "uri"
},
"Armor": {
"id": "Armor",
"title": "Armor",
"description": "A set of armor that can be equipped by a character",
"type": "object",
"properties": {
"_type": {
"default": "inventoryArmor",
"const": "inventoryArmor"
},
"name": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"baseThresholds": {
"$ref": "#/$defs/DamageThresholds"
},
"baseScore": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"features": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
}
},
"required": [
"_type",
"name",
"description",
"baseThresholds",
"baseScore",
"features"
],
"additionalProperties": false
},
"DamageThresholds": {
"id": "DamageThresholds",
"title": "Damage Thresholds",
"description": "The damage thresholds of a character",
"type": "object",
"properties": {
"_type": {
"default": "damageThresholds",
"const": "damageThresholds"
},
"major": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"severe": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
},
"required": [
"_type",
"major",
"severe"
],
"additionalProperties": false
},
"Thing": {
"id": "Thing",
"title": "Thing",
"description": "A thing that can be added to a character's inventory",
"type": "object",
"properties": {
"_type": {
"default": "inventoryThing",
"const": "inventoryThing"
},
"name": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"_type",
"name",
"description"
],
"additionalProperties": false
},
"Weapon": {
"id": "Weapon",
"title": "Weapon",
"description": "A weapon that can be equipped by a character",
"type": "object",
"properties": {
"_type": {
"default": "inventoryWeapon",
"const": "inventoryWeapon"
},
"name": {
"type": "string"
},
"trait": {
"$ref": "#/$defs/TraitName"
},
"range": {
"$ref": "#/$defs/Range"
},
"damageDice": {
"$ref": "#/$defs/DiceType"
},
"damageType": {
"$ref": "#/$defs/DamageType"
},
"features": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"burden": {
"anyOf": [
{
"const": "One-Handed"
},
{
"const": "Two-Handed"
}
]
}
},
"required": [
"_type",
"name",
"trait",
"range",
"damageDice",
"damageType",
"features",
"burden"
],
"additionalProperties": false
},
"TraitName": {
"id": "TraitName",
"title": "Trait Name",
"description": "The name of a character trait",
"examples": [
"Agility",
"Strength",
"Finesse",
"Instinct",
"Presence",
"Knowledge"
],
"anyOf": [
{
"const": "Agility"
},
{
"const": "Strength"
},
{
"const": "Finesse"
},
{
"const": "Instinct"
},
{
"const": "Presence"
},
{
"const": "Knowledge"
}
]
},
"Range": {
"id": "Range",
"title": "Range",
"description": "The range of a weapon or ability",
"examples": [
"Melee",
"Very Close",
"Close",
"Far",
"Very Far"
],
"anyOf": [
{
"const": "Melee"
},
{
"const": "Very Close"
},
{
"const": "Close"
},
{
"const": "Far"
},
{
"const": "Very Far"
}
]
},
"DiceType": {
"id": "DiceType",
"title": "Dice Type",
"description": "The type of dice to roll",
"examples": [
"d4",
"d6",
"d8",
"d10",
"d12",
"d20"
],
"anyOf": [
{
"const": "d4"
},
{
"const": "d6"
},
{
"const": "d8"
},
{
"const": "d10"
},
{
"const": "d12"
},
{
"const": "d20"
}
]
},
"DamageType": {
"id": "DamageType",
"title": "Damage Type",
"description": "The type of damage a weapon or ability deals",
"examples": [
"Physical",
"Magical"
],
"anyOf": [
{
"const": "Physical"
},
{
"const": "Magical"
}
]
},
"Class": {
"id": "Class",
"title": "Class",
"description": "A class of a character",
"type": "object",
"properties": {
"_type": {
"const": "class"
},
"name": {
"type": "string"
},
"domain": {
"$ref": "#/$defs/ReferenceDomain"
},
"initialEvasion": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"initialHitPoints": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"initialInventory": {
"type": "array",
"items": {
"anyOf": [
{
"$ref": "#/$defs/Thing"
},
{
"$ref": "#/$defs/Weapon"
},
{
"$ref": "#/$defs/Armor"
}
]
}
},
"features": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"name",
"description"
],
"additionalProperties": false
}
},
"hopeFeature": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"name",
"description"
],
"additionalProperties": false
},
"subclasses": {
"type": "array",
"items": {
"$ref": "#/$defs/ReferenceSubclass"
}
}
},
"required": [
"_type",
"name",
"domain",
"initialEvasion",
"initialHitPoints",
"initialInventory",
"features",
"hopeFeature",
"subclasses"
],
"additionalProperties": false
},
"ReferenceDomain": {
"id": "ReferenceDomain",
"title": "Reference to a Domain",
"type": "object",
"properties": {
"_type": {
"const": "reference"
},
"_key": {
"const": "role/domain"
},
"value": {
"type": "string"
}
},
"required": [
"_type",
"_key",
"value"
],
"additionalProperties": false
},
"ReferenceSubclass": {
"id": "ReferenceSubclass",
"title": "Reference to a Subclass",
"type": "object",
"properties": {
"_type": {
"const": "reference"
},
"_key": {
"const": "role/subclass"
},
"value": {
"type": "string"
}
},
"required": [
"_type",
"_key",
"value"
],
"additionalProperties": false
},
"Subclass": {
"id": "Subclass",
"title": "Subclass",
"description": "A subclass of a class",
"type": "object",
"properties": {
"_type": {
"const": "subclass"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"spellTrait": {
"default": null,
"anyOf": [
{
"$ref": "#/$defs/TraitName"
},
{
"type": "null"
}
]
},
"foundationFeatures": {
"type": "array",
"items": {
"$ref": "#/$defs/Feature"
}
},
"specializationFeatures": {
"type": "array",
"items": {
"$ref": "#/$defs/Feature"
}
},
"masteryFeatures": {
"type": "array",
"items": {
"$ref": "#/$defs/Feature"
}
}
},
"required": [
"_type",
"name",
"description",
"spellTrait",
"foundationFeatures",
"specializationFeatures",
"masteryFeatures"
],
"additionalProperties": false
},
"Feature": {
"id": "Feature",
"title": "Feature",
"description": "A feature for a character to use",
"type": "object",
"properties": {
"_type": {
"const": "feature"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"notes": {
"default": null,
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"modifiers": {
"default": null,
"type": "null"
}
},
"required": [
"_type",
"name",
"description",
"notes",
"modifiers"
],
"additionalProperties": false
},
"Ancestry": {
"id": "Ancestry",
"title": "Ancestry",
"description": "The ancestry of a character",
"type": "object",
"properties": {
"_type": {
"const": "ancestry"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"primaryFeature": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"name",
"description"
],
"additionalProperties": false
},
"secondaryFeature": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"name",
"description"
],
"additionalProperties": false
}
},
"required": [
"_type",
"name",
"primaryFeature",
"secondaryFeature"
],
"additionalProperties": false
},
"Community": {
"id": "Community",
"title": "Community",
"description": "A community that shaped a characters backstory",
"type": "object",
"properties": {
"_type": {
"const": "community"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"feature": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"name",
"description"
],
"additionalProperties": false
}
},
"required": [
"_type",
"name",
"feature"
],
"additionalProperties": false
}
}
}