{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "ContentPack", "type": "object", "properties": { "campaigns": { "default": [], "type": "array", "items": { "$ref": "#/definitions/CampaignDef" } }, "enemies": { "default": [], "type": "array", "items": { "$ref": "#/definitions/EnemyDef" } }, "items": { "default": [], "type": "array", "items": { "$ref": "#/definitions/ItemDef" } }, "missions": { "default": [], "type": "array", "items": { "$ref": "#/definitions/MissionDef" } }, "music": { "default": [], "type": "array", "items": { "$ref": "#/definitions/MusicDef" } }, "overrides": { "default": [], "type": "array", "items": { "type": "string" } }, "sounds": { "default": [], "type": "array", "items": { "$ref": "#/definitions/SoundDef" } }, "weapons": { "default": [], "type": "array", "items": { "$ref": "#/definitions/WeaponDef" } } }, "additionalProperties": false, "definitions": { "Art": { "type": "object", "required": [ "logical_height", "logical_width" ], "properties": { "asset": { "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "frames": { "default": 1, "type": "integer", "format": "uint32", "minimum": 0.0 }, "hd_png": { "default": null, "type": [ "string", "null" ] }, "logical_height": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "logical_width": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "nearest": { "default": false, "type": "boolean" }, "png": { "type": [ "string", "null" ] } }, "additionalProperties": false }, "CampaignDef": { "type": "object", "required": [ "id", "missions", "name" ], "properties": { "art": { "default": null, "anyOf": [ { "$ref": "#/definitions/Art" }, { "type": "null" } ] }, "id": { "type": "string" }, "missions": { "type": "array", "items": { "type": "string" } }, "name": { "type": "string" } }, "additionalProperties": false }, "EnemyDef": { "type": "object", "required": [ "id", "name" ], "properties": { "art": { "default": null, "anyOf": [ { "$ref": "#/definitions/Art" }, { "type": "null" } ] }, "boss": { "default": false, "type": "boolean" }, "cooldown": { "default": 10, "type": "integer", "format": "uint32", "minimum": 0.0 }, "drop": { "default": null, "type": [ "string", "null" ] }, "ground": { "default": false, "type": "boolean" }, "health": { "default": 100, "type": "integer", "format": "int32" }, "id": { "type": "string" }, "name": { "type": "string" }, "path": { "default": [], "type": "array", "items": { "type": "array", "items": { "type": "integer", "format": "int32" }, "maxItems": 2, "minItems": 2 } }, "repeat": { "default": false, "type": "boolean" }, "reward": { "default": 0, "type": "integer", "format": "uint32", "minimum": 0.0 }, "script": { "default": null, "type": [ "string", "null" ] }, "speed": { "default": 2, "type": "integer", "format": "int32" }, "weapon": { "default": null, "type": [ "string", "null" ] } }, "additionalProperties": false }, "ItemDef": { "type": "object", "required": [ "id", "name", "price" ], "properties": { "art": { "default": null, "anyOf": [ { "$ref": "#/definitions/Art" }, { "type": "null" } ] }, "consumable": { "default": false, "type": "boolean" }, "credits": { "default": 0, "type": "integer", "format": "uint32", "minimum": 0.0 }, "description": { "description": "Optional shop information, up to 4096 UTF-8 bytes.", "default": "", "type": "string" }, "id": { "type": "string" }, "initial_count": { "default": 1, "type": "integer", "format": "uint32", "minimum": 0.0 }, "legacy": { "default": null, "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "max_count": { "default": 1, "type": "integer", "format": "uint32", "minimum": 0.0 }, "name": { "type": "string" }, "price": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "script": { "default": null, "type": [ "string", "null" ] }, "shield": { "default": 0, "type": "integer", "format": "int32" }, "special": { "default": false, "type": "boolean" }, "weapon": { "default": null, "type": [ "string", "null" ] } }, "additionalProperties": false }, "MissionDef": { "type": "object", "required": [ "duration", "id", "name" ], "properties": { "art": { "default": null, "anyOf": [ { "$ref": "#/definitions/Art" }, { "type": "null" } ] }, "auto_complete": { "default": true, "type": "boolean" }, "columns": { "default": 0, "type": "integer", "format": "uint32", "minimum": 0.0 }, "duration": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "id": { "type": "string" }, "layout": { "default": [], "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 } }, "legacy_map": { "default": null, "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "music": { "default": null, "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "music_track": { "description": "Package music registry ID. Mutually exclusive with legacy `music`.", "default": null, "type": [ "string", "null" ] }, "name": { "type": "string" }, "next": { "default": null, "type": [ "string", "null" ] }, "script": { "default": null, "type": [ "string", "null" ] }, "spawns": { "default": [], "type": "array", "items": { "$ref": "#/definitions/SpawnDef" } }, "tiles": { "default": [], "type": "array", "items": { "$ref": "#/definitions/TileDef" } } }, "additionalProperties": false }, "MusicDef": { "type": "object", "required": [ "file", "id", "name" ], "properties": { "file": { "description": "Package-local checked MUS score, played through original GENMIDI FM.", "type": "string" }, "id": { "type": "string" }, "looping": { "default": true, "type": "boolean" }, "name": { "type": "string" } }, "additionalProperties": false }, "SoundDef": { "type": "object", "required": [ "file", "id", "name" ], "properties": { "file": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "pan": { "default": 127, "type": "integer", "format": "int32" }, "pitch": { "default": 128, "type": "integer", "format": "int32" }, "priority": { "default": 1, "type": "integer", "format": "uint32", "minimum": 0.0 }, "volume": { "default": 127, "type": "integer", "format": "int32" } }, "additionalProperties": false }, "SpawnDef": { "type": "object", "required": [ "enemy", "tick", "x", "y" ], "properties": { "difficulty": { "default": 0, "type": "integer", "format": "uint32", "minimum": 0.0 }, "enemy": { "type": "string" }, "tick": { "type": "integer", "format": "uint64", "minimum": 0.0 }, "x": { "type": "integer", "format": "int32" }, "y": { "type": "integer", "format": "int32" } }, "additionalProperties": false }, "Target": { "type": "string", "enum": [ "air", "ground", "all" ] }, "TileDef": { "type": "object", "required": [ "art" ], "properties": { "art": { "$ref": "#/definitions/Art" }, "destroyed": { "default": null, "anyOf": [ { "$ref": "#/definitions/Art" }, { "type": "null" } ] }, "health": { "default": 0, "type": "integer", "format": "int32" }, "reward": { "default": 0, "type": "integer", "format": "uint32", "minimum": 0.0 } }, "additionalProperties": false }, "WeaponBehavior": { "oneOf": [ { "type": "string", "enum": [ "straight", "homing", "beam", "spread", "bomb", "energy_grab" ] }, { "description": "Fire through on_fire only, without an automatic engine projectile.", "type": "string", "enum": [ "scripted" ] } ] }, "WeaponDef": { "type": "object", "required": [ "behavior", "cooldown", "damage", "id", "name", "speed", "target" ], "properties": { "art": { "default": null, "anyOf": [ { "$ref": "#/definitions/Art" }, { "type": "null" } ] }, "behavior": { "$ref": "#/definitions/WeaponBehavior" }, "cooldown": { "type": "integer", "format": "uint32", "minimum": 0.0 }, "damage": { "type": "integer", "format": "int32" }, "id": { "type": "string" }, "legacy": { "default": null, "type": [ "integer", "null" ], "format": "uint32", "minimum": 0.0 }, "name": { "type": "string" }, "offsets": { "default": [], "type": "array", "items": { "type": "array", "items": { "type": "integer", "format": "int32" }, "maxItems": 2, "minItems": 2 } }, "script": { "default": null, "type": [ "string", "null" ] }, "speed": { "type": "integer", "format": "int32" }, "target": { "$ref": "#/definitions/Target" } }, "additionalProperties": false } } }