{ "$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 } } }