1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-14 10:12:59 +02:00
vcmi/config/schemas/townBuilding.json

113 lines
3.5 KiB
JSON

{
"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", "artifactMerchant", "freelancersGuild", "magicUniversity", "castleGate", "creatureTransformer", "portalOfSummoning", "ballistaYard", "lookoutTower", "library", "brotherhoodOfSword", "fountainOfFortune", "spellPowerGarrisonBonus", "attackGarrisonBonus", "defenseGarrisonBonus", "escapeTunnel", "lighthouse", "treasury", "thievesGuild", "bank", "configurable" ],
"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"
},
"configuration" : {
"description" : "Configuration of building. Only used if 'type' is set to 'configurable'",
"$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"}
}
},
"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" }
}
}
}