{
	"type" : "object",
	"additionalProperties" : false,
	"$schema" : "http://json-schema.org/draft-04/schema",
	"title" : "VCMI town building format",
	"description" : "Format used to define town buildings in VCMI",
	"definitions" :
	{
		"buildingRequirement" : {
			"type" : "array",
			"items" : [
				{
					"description" : "First item that indicates type of following expression",
					"type" : "string"
				}
			],
			"additionalItems" :
			{
				"description" : "Following items that contain expression elements",
				"$ref" : "#/definitions/buildingRequirement"				
			}
		} 
	},
	"properties" : {
		"id" : {
			"type" : "number",
			"description" : "Numeric identifier of this building"
		},
		"name" : {
			"description" : "Localizable name of this building",
			"type" : "string"
		},
		"description" : {
			"description" : "Localizable decsription of this building",
			"type" : "string"
		},
		"type" : {
			"type" : "string",
			"description" : "Subtype for some special buildings"
		},
		"mode" : {
			"type" : "string",
			"enum" : [ "normal", "auto", "special", "grail" ],
			"description" : "Mode in which this building will be built"
		},
		"height" : {
			"type" : "string",
			"enum" : [ "skyship", "high", "average", "low"],
			"description" : "Height for lookout towers and some grails"
		},
		"requires" : {
			"$ref" : "#/definitions/buildingRequirement",
			"description" : "List of town buildings that must be built before this one"
		},
		"upgrades" : {
			"description" : "Optional, indicates that this building upgrades another base building",
			"type" : "string"
		},
		"cost" : {
			"type" : "object",
			"additionalProperties" : false,
			"description" : "Resources needed to build building",
			"properties" : {
				"gold" :    { "type" : "number"},
				"wood" :    { "type" : "number"},
				"ore" :     { "type" : "number"},
				"mercury" : { "type" : "number"},
				"sulfur" :  { "type" : "number"},
				"crystal" : { "type" : "number"},
				"gems" :    { "type" : "number"}
			}
		},
		"produce" : {
			"type" : "object",
			"additionalProperties" : false,
			"description" : "Resources produced each day by this building",
			"properties" : {
				"gold" :    { "type" : "number"},
				"wood" :    { "type" : "number"},
				"ore" :     { "type" : "number"},
				"mercury" : { "type" : "number"},
				"sulfur" :  { "type" : "number"},
				"crystal" : { "type" : "number"},
				"gems" :    { "type" : "number"}
			}
		},
		"overrides" : {
			"type" : "array",
			"items" : [
				{
					"description" : "The buildings which bonuses should be overridden with bonuses of the current building",
					"type" : "string"
				}
			]
		},
		"bonuses" : {
			"type" : "array",
			"description" : "Bonuses, provided by this special building on build using bonus system",
			"items" : { "$ref" : "bonus.json" }
		},
		"onVisitBonuses" : {
			"type" : "array",
			"description" : "Bonuses, provided by this special building on hero visit and applied to the visiting hero",
			"items" : { "$ref" : "bonus.json" }
		}
	}
}
