{
	"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" ],
	"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"
		},
		"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" : "vcmi:townBuilding"
					}
				},
				"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"
				},
				"musicTheme": {
					"type":"string",
					"description": "Path to town music theme",
					"format" : "musicFile"
				},
				"siege": {
					"$ref" : "vcmi:townSiege"
				},
				"structures": {
					"type" : "object",
					"additionalProperties" : {
						"$ref" : "vcmi:townStructure"
					}
				},
				"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"
				}
			}
		}
	}
}
