You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
NodeEditor/schema/data.schema.json

100 lines
2.9 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema",
"additionalProperties": {
"$ref": "#/definitions/map_node"
},
"propertyNames": {
"$ref": "#/definitions/node_name_regex"
},
"definitions": {
"node_name_regex": {
"type": "string",
"pattern": "[\\w]+"
},
"map_node": {
"properties": {
"x": {
"description": "The x coordinate.",
"type": "integer"
},
"y": {
"description": "The y coordinate.",
"type": "integer"
},
"name": {
"description": "Human-readable name.",
"type": "string"
},
"description": {
"description": "Description of node, if needed.",
"type": "string"
},
"qt_connections": {
"description": "List of connected nodes",
"additionalProperties": { "$ref": "#/definitions/qt_connection" },
"propertyNames": {
"$ref": "#/definitions/node_name_regex"
}
},
"walk_connections": {
"description": "List of connected nodes",
"additionalProperties": { "$ref": "#/definitions/walk_connection" },
"propertyNames": {
"$ref": "#/definitions/node_name_regex"
}
}
},
"required": ["x", "y", "name", "walk_connections"],
"additionalItems": false
},
"qt_connection": {
"$comment": "A quick-travel conenction between nodes that should be evaluated first.",
"properties": {
"mode": {
"description": "The mode of the fast travel method.",
"enum": ["mageisland", "seaskipper", "tunnels", "skyship", "elevator"]
},
"cost": {
"description": "The cost in emeralds of this route",
"type": "integer",
"minimum": 0
},
"unlock_lvl": {
"description": "The level this fast travel is unlocked at",
"type": "integer",
"minimum": 0,
"maximum": 110
}
},
"required": ["mode", "cost", "unlock_lvl"],
"additionalItems": false
},
"walk_connection": {
"$comment": "A walking connection between two nodes",
"properties": {
"distance": {
"description": "The better disnance between two nodes, not necisarily as the crow flies. Should be used in the a* calc for distance back.",
"type": "integer",
"minimum": 0
},
"weight": {
"description": "Weight value used to modulate the distance based on passability",
"type": "number",
"minimum": 0,
"default": 1
},
"terrain_level": {
"description": "The highest level of the terain this connection passes through",
"type": "integer",
"minimum": 0,
"maximum": 110
}
},
"required": ["distance", "weight", "terrain_level"],
"additionalItems": false
}
}
}