1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-30 08:57:00 +02:00
vcmi/config/schemas/faction.json
2023-06-20 19:37:27 +03:00

270 lines
7.6 KiB
JSON

{
"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", "nativeTerrain", "creatureBackground" ],
"dependencies" : {
"town" : [ "puzzleMap", "boat" ]
},
"additionalProperties" : false,
"properties" : {
"name" : {
"type" : "string",
"description" : "Translatable name of town"
},
"alignment" : {
"type" : "string",
"enum" : [ "good", "neutral", "evil" ],
"description" : "Town alignment, good, neutral or evil"
},
"nativeTerrain" : {
"type" : "string",
"description" : "Native terrain for creatures. Creatures fighting on native terrain receive several bonuses"
},
"boat" : {
"type" : "string",
"description" : "Identifier of boat type that is produced by shipyard in town, if any"
},
"preferUndergroundPlacement" : {
"type" : "boolean",
"description" : "Random map generator places player/cpu-owned towns underground if true is specified and on the ground otherwise. Parameter is unused for maps without underground. False by default."
},
"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"
}
}
},
"town" : {
"type" : "object",
"additionalProperties" : false,
"required" : [
"mapObject", "buildingsIcons", "buildings", "creatures", "guildWindow", "names",
"hallBackground", "hallSlots", "horde", "mageGuild", "moatAbility", "defaultTavern", "tavernVideo", "guildBackground", "musicTheme", "siege", "structures", "townBackground", "warMachine"
],
"description" : "town",
"properties" : {
"creatures" : {
"type" : "array",
"minItems" : 7,
"maxItems" : 7,
"description" : "List of creatures available for recruitment on each level",
"items" : {
"type" : "array",
"items" : { "type" : "string" }
}
},
"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" }
}
}
},
"buildings" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "townBuilding.json"
}
},
"mageGuild" : {
"type" : "number",
"description" : "Maximal level of mage guild"
},
"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"
},
"horde" : {
"type" : "array",
"maxItems" : 2,
"description" : "Levels of creatures that have hordes in town",
"items" : { "type" : "number" }
},
"moatAbility" : {
"type" : "string",
"description" : "Identifier of ability to use as town moat during siege"
},
"siege" : {
"$ref" : "townSiege.json"
},
"musicTheme" : {
"type" : "string",
"description" : "Path to town music theme",
"format" : "musicFile"
},
"tavernVideo" : {
"type" : "string",
"description" : "Video for tavern window",
"format" : "videoFile"
},
"townBackground" : {
"type" : "string",
"description" : "Background for town screen",
"format" : "imageFile"
},
"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"
},
"buildingsIcons" : {
"type" : "string",
"description" : "Path to .def file with building icons",
"format" : "animationFile"
},
"mapObject" : {
"properties" : {
"filters" : {
"type" : "object",
"additionalProperties" : { "type" : "array" }
}
}
},
"structures" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "townStructure.json"
}
},
"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"
}
}
},
"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
}
},
"guildSpells" : {
"type" : "object",
"description" : "Spells available in mage guild. Value indicates chance for this spell to appear",
"additionalProperties" : {
"type" : "number"
}
},
"names" : {
"type" : "array",
"description" : "Names for towns on adventure map",
"minItems" : 1,
"items" : { "type" : "string" }
}
}
},
"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\""
}
}
},
"index" : {
"type" : "number",
"description" : "Private field to break things, do not use."
}
}
}