{
	"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 description of this building",
			"type" : "string"
		},
		"type" : {
			"type" : "string",
			"enum" : [ "mysticPond", "castleGate", "portalOfSummoning", "library", "escapeTunnel", "treasury", "bank" ],
			"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"
		},
		"upgradeReplacesBonuses" : {
			"description" : "If set to true, this building will replace all bonuses from base building, leaving only bonuses defined by this building",
			"type" : "boolean"
		},
		"configuration" : {
			"description" : "Optional, configuration of building that can be activated by visiting hero",
			"$ref" : "rewardable.json"
		},
		"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"}
			}
		},
		"warMachine" : {
			"type" : "string",
			"description" : "Artifact ID of a war machine that can be purchased in this building, if any"
		},
		"bonuses" : {
			"type" : "array",
			"description" : "Bonuses that are provided by this building in any town where this building has been built. Only affects town itself (including siege), to propagate effect to player or team please use bonus propagators",
			"items" : { "$ref" : "bonus.json" }
		},
		"marketModes" : {
			"type" : "array",
			"items" : {
				"type" : "string",
				"enum" : [ "resource-resource", "resource-player", "creature-resource", "resource-artifact", "artifact-resource", "artifact-experience", "creature-experience", "creature-undead", "resource-skill"],
			},
			"description" : "List of modes available in this market"
		}
	}
}
