{
	"type" : "object",
	"$schema" : "http://json-schema.org/draft-04/schema",
	"title" : "VCMI terrain format",
	"description" : "Format used to define new terrains in VCMI",
	"required" : [ "text", "moveCost", "minimapUnblocked", "minimapBlocked", "music", "tiles", "type", "horseSound", "horseSoundPenalty", "shortIdentifier", "battleFields" ],
	"additionalProperties" : false,
	"properties" : {
		"text" :
		{
			"type" : "string",
			"description" : "Human-readable name of this terrain"
		},
		"shortIdentifier" :
		{
			"type" : "string",
			"description" : "Two-letters unique indentifier for this terrain. Used for map format"
		},
		"type" :
		{
			"type" : "array",
			"description" : "Type of this terrain. Can be land, water, subterranean or rock",
			"items" :
			{
				"enum" : ["WATER", "SUB", "ROCK", "SURFACE"],
				"type" : "string"
			}
		},
		"moveCost" :
		{
			"type" : "number",
			"description" : "How many movement points needed to move hero"
		},
		"tiles" :
		{
			"type" : "string",
			"description" : "Name of file with graphicks",
			"format" : "animationFile"
		},
		"rockTerrain" :
		{
			"type" : "string",
			"description" : "The name of rock type terrain which will be used as borders in the underground"
		},
		"river" :
		{
			"type" : "string",
			"description" : "River type which should be used for that terrain"
		},
		"paletteAnimation" : {
			"type" : "array",
			"description" : "If defined, terrain will be animated using palette color cycling effect",
			"items" :
			{
				"type" : "object",
				"additionalProperties" : false,
				"properties" : {
					"start" : {
						"type" : "number"
					},
					"length" : {
						"type" : "number"
					}
				}
			}
		},
		"battleFields" :
		{
			"type" : "array",
			"description" : "List of battleFields that can be used on this terrain",
			"items" :
			{
				"type" : "string"
			}
		},
		"minimapUnblocked" :
		{
			"type" : "array",
			"description" : "Color of terrain on minimap without unpassable objects. RGB triplet, 0-255 range",
			"minItems" : 3,
			"maxItems" : 3,
			"items" :
			{
				"type" : "number"
			}
		},
		"minimapBlocked" :
		{
			"type" : "array",
			"description" : "Color of terrain on minimap with unpassable objects. RGB triplet, 0-255 range",
			"minItems" : 3,
			"maxItems" : 3,
			"items" :
			{
				"type" : "number"
			}
		},
		"music" :
		{
			"description" : "Music filenames to play on this terrain on adventure map",
			"type" : "array",
			"minItems" : 1,
			"items" : {
				"type" : "string",
				"format" : "musicFile"
			}
		},
		"sounds" :
		{
			"type" : "object",
			"description" : "List of sounds for this terrain",
			"additionalProperties" : false,
			"properties" :
			{
				"ambient" : 
				{
					"type" : "array",
					"description" : "List of ambient sounds for this terrain",
					"items" :
					{
						"type" : "string",
						"format" : "soundFile"
					}
				}
			}
		},
		"horseSound" :
		{
			"type" : "string",
			"description" : "Hero movement sound for this terrain, version for moving on tiles with road",
			"format" : "soundFile"
		},
		"horseSoundPenalty" :
		{
			"type" : "string",
			"description" : "Hero movement sound for this terrain, version for moving on tiles without road",
			"format" : "soundFile"
		},
		"prohibitTransitions" :
		{
			"type" : "array",
			"description" : "List or terrain names, which is prohibited to make transition from/to",
			"items" :
			{
				"type" : "string"
			}
		},
		"transitionRequired" :
		{
			"type" : "boolean",
			"description" : "If sand/dirt transition required from/to other terrains"
		},
		"terrainViewPatterns" :
		{
			"type" : "string",
			"description" : "Represents layout of tile orientations in terrain tiles file"
		},
		"index" :
		{
			"type" : "number",
			"description" : "Internal, do not use"
		}
	}
}
