{ "definitions" : { "townIcon" : { "type" : "object", "additionalProperties" : false, "required" : [ "small", "large" ], "properties" : { "small" : { "type" : "string", "format" : "imageFile" }, "large" : { "type" : "string", "format" : "imageFile" } } }, "townIconPair" : { "type":"object", "additionalProperties" : false, "required" : [ "normal", "built" ], "properties": { "built": { "$ref" : "#/definitions/townIcon", "description": "Icon used after player build something in town" }, "normal": { "$ref" : "#/definitions/townIcon", "description": "Icon used normally" } } } }, "type":"object", "$schema": "http://json-schema.org/draft-04/schema", "title" : "VCMI faction format", "description": "Json format for defining new faction (aka towns) in VCMI", "required" : [ "name", "alignment", "creatureBackground", "nativeTerrain" ], "dependencies" : { "town" : [ "puzzleMap" ] }, "additionalProperties" : false, "properties":{ "name" : { "type" : "string", "description" : "Translatable name of town" }, "index" : { "type" : "number", "description" : "Private field to break things, do not use." }, "alignment": { "type":"string", "enum" : [ "good", "neutral", "evil" ], "description": "Town alignment, good, neutral or evil" }, "creatureBackground": { "type":"object", "additionalProperties" : false, "required" : [ "120px", "130px" ], "description": "Backgrounds for creature info card", "properties":{ "120px": { "type":"string", "description": "Version that is 120 pixels in height", "format" : "imageFile" }, "130px": { "type":"string", "description": "Version that is 130 pixels in height", "format" : "imageFile" } } }, "nativeTerrain": { "type":"string", "description": "Native terrain for creatures. Creatures fighting on native terrain receive several bonuses" }, "preferUndergroundPlacement": { "type":"boolean", "description": "Random map generator places player/cpu-owned towns underground if true is specified and on the ground otherwise. Parameter is unused for maps without underground. False by default." }, "puzzleMap": { "type":"object", "additionalProperties" : false, "required" : [ "prefix", "pieces" ], "description": "Puzzle map from obelisks for this town. Must contain 48 pieces", "properties":{ "pieces": { "type":"array", "description": "Lits of pieces definitions", "minItems" : 48, "maxItems" : 48, "items": { "type":"object", "additionalProperties" : false, "properties":{ "index": { "type":"number", "description" : "Order in which images will be opened" }, "x": { "type":"number", "description" : "X coordinate on screen" }, "y": { "type":"number", "description" : "X coordinate on screen" } } } }, "prefix": { "type":"string", "description": "Prefix for image names, e.g. \"PUZCAS\" for name \"PUZCAS12.png\"" } } }, "town": { "type":"object", "additionalProperties" : false, "required" : [ "mapObject", "buildingsIcons", "buildings", "creatures", "guildWindow", "names", "hallBackground", "hallSlots", "horde", "mageGuild", "moatDamage", "defaultTavern", "tavernVideo", "guildBackground", "musicTheme", "siege", "structures", "townBackground", "warMachine" ], "description": "town", "properties":{ "mapObject" : { "properties" : { "filters" : { "type" : "object", "additionalProperties" : { "type" : "array" } } } }, "guildSpells" : { "type" : "object", "description" : "Spells available in mage guild. Value indicates chance for this spell to appear", "additionalProperties" : { "type" : "number" } }, "defaultTavern" : { "type" : "number", "description" : "Default chance for hero to appear in tavern, used only when value vas not set in tavern field", "minimum" : 0 }, "tavern" : { "type" : "object", "description" : "Hero classes available in tavern. Value indicates chance for hero of this class to appear", "additionalProperties" : { "type" : "number", "minimum" : 0 } }, "tavernVideo" : { "type" : "string", "description" : "Video for tavern window", "format" : "videoFile" }, "names" : { "type" : "array", "description" : "Names for towns on adventure map", "minItems" : 1, "items" : { "type" : "string" } }, "buildingsIcons": { "type" : "string", "description": "Path to .def file with building icons", "format" : "animationFile" }, "buildings": { "type" : "object", "additionalProperties" : { "$ref" : "townBuilding.json" } }, "creatures": { "type":"array", "minItems" : 7, "maxItems" : 7, "description" : "List of creatures available for recruitment on each level", "items": { "type":"array", "items" : { "type" : "string" } } }, "guildWindow": { "type":"string", "description": "Image with small view on town from mage guild" }, "guildBackground": { "type":"string", "description": "Image with background of mage guild", "format" : "imageFile" }, "hallBackground": { "type":"string", "description": "background image for town hall", "format" : "imageFile" }, "hallSlots": { "type":"array", "description": "Description of town hall", "minItems" : 5, "maxItems" : 5, "items": { "type":"array", "minItems" : 1, "maxItems" : 4, "items" : { "type" : "array", "description" : "List of buildings available in one slot", "items" : { "type" : "string" } } } }, "horde": { "type":"array", "maxItems" : 2, "description": "Levels of creatures that have hordes in town", "items": { "type":"number" } }, "icons": { "type":"object", "additionalProperties" : false, "description": "Town icons", "required" : [ "fort", "village" ], "properties":{ "fort": { "$ref" : "#/definitions/townIconPair", "description": "Icons for town with built fort" }, "village": { "$ref" : "#/definitions/townIconPair", "description": "Icons for town without fort" } } }, "mageGuild": { "type":"number", "description": "Maximal level of mage guild" }, "moatDamage": { "type":"number", "description": "Damage dealt to creature that entered town moat during siege" }, "moatHexes": { "type" : "array", "description" : "Numbers of battlefield hexes affected by moat during siege", "items" : { "type" : "number" } }, "musicTheme": { "type":"string", "description": "Path to town music theme", "format" : "musicFile" }, "siege": { "$ref" : "townSiege.json" }, "structures": { "type" : "object", "additionalProperties" : { "$ref" : "townStructure.json" } }, "townBackground": { "type":"string", "description": "Background for town screen", "format" : "imageFile" }, "primaryResource": { "type":"string", "description": "Primary resource for this town. Produced by Silo and offered as starting bonus" }, "warMachine": { "type":"string", "description": "Identifier of war machine produced by blacksmith in town" } } } } }