2013-04-02 20:06:43 +03:00
|
|
|
{
|
2023-05-19 20:14:01 +02:00
|
|
|
"type" : "object",
|
|
|
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
2013-04-02 20:06:43 +03:00
|
|
|
"title" : "VCMI hero format",
|
|
|
|
"description" : "Format used to define new heroes in VCMI",
|
2023-05-19 20:14:01 +02:00
|
|
|
"required" : [ "class", "army", "skills", "texts" ],
|
2013-04-22 22:51:22 +03:00
|
|
|
"oneOf" : [
|
|
|
|
{
|
|
|
|
"required" : [ "images" ]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"required" : [ "index" ]
|
|
|
|
}
|
|
|
|
],
|
2013-04-11 22:24:14 +03:00
|
|
|
"additionalProperties" : false,
|
2023-05-19 20:14:01 +02:00
|
|
|
"properties" : {
|
|
|
|
"special" : {
|
|
|
|
"type" : "boolean",
|
|
|
|
"description" : "Marks this object as special and not available by default"
|
2013-04-11 22:24:14 +03:00
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"class" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "Hero class, e.g. knight or battleMage"
|
2013-04-02 20:06:43 +03:00
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"female" : {
|
|
|
|
"type" : "boolean",
|
|
|
|
"description" : "This hero is female (changeable via editor)"
|
2013-04-02 20:06:43 +03:00
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"battleImage" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "Custom def used on battle",
|
2018-09-13 01:33:34 +02:00
|
|
|
"format" : "defFile"
|
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"images" : {
|
|
|
|
"type" : "object",
|
2013-04-11 22:24:14 +03:00
|
|
|
"additionalProperties" : false,
|
2023-05-19 20:14:01 +02:00
|
|
|
"description" : "images",
|
|
|
|
"required" : [ "large", "small", "specialtyLarge", "specialtySmall" ],
|
|
|
|
"properties" : {
|
|
|
|
"large" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "Large version of portrait for use in hero screen",
|
2013-10-26 22:33:34 +03:00
|
|
|
"format" : "imageFile"
|
2013-04-02 20:06:43 +03:00
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"small" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "Small version of portrait for use on adventure map",
|
2013-10-26 22:33:34 +03:00
|
|
|
"format" : "imageFile"
|
2013-04-02 20:06:43 +03:00
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"specialtyLarge" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "Large image of hero specilty, used in hero screen",
|
2013-10-26 22:33:34 +03:00
|
|
|
"format" : "imageFile"
|
2013-04-02 20:06:43 +03:00
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"specialtySmall" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "Small image of hero specialty for use in exchange screen",
|
2013-10-26 22:33:34 +03:00
|
|
|
"format" : "imageFile"
|
2013-04-02 20:06:43 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"army" : {
|
|
|
|
"type" : "array",
|
|
|
|
"description" : "Initial hero army when recruited in tavern",
|
2023-05-19 20:04:31 +02:00
|
|
|
"minItems" : 1,
|
|
|
|
"maxItems" : 3,
|
2023-05-19 20:14:01 +02:00
|
|
|
"items" : {
|
|
|
|
"type" : "object",
|
2023-05-19 20:04:31 +02:00
|
|
|
"additionalProperties" : false,
|
|
|
|
"required" : [ "creature", "min", "max" ],
|
2023-05-19 20:14:01 +02:00
|
|
|
"properties" : {
|
|
|
|
"creature" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "creature"
|
2023-05-19 20:04:31 +02:00
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"max" : {
|
|
|
|
"type" : "number",
|
|
|
|
"description" : "max",
|
2023-05-19 20:04:31 +02:00
|
|
|
"minimum" : 1
|
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"min" : {
|
|
|
|
"type" : "number",
|
|
|
|
"description" : "min",
|
2023-05-19 20:04:31 +02:00
|
|
|
"minimum" : 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"skills" : {
|
|
|
|
"type" : "array",
|
|
|
|
"description" : "List of skills initially known by hero",
|
2013-04-02 20:06:43 +03:00
|
|
|
"maxItems" : 8,
|
2023-05-19 20:14:01 +02:00
|
|
|
"items" : {
|
|
|
|
"type" : "object",
|
2013-04-11 22:24:14 +03:00
|
|
|
"additionalProperties" : false,
|
2013-04-02 20:06:43 +03:00
|
|
|
"required" : [ "level", "skill" ],
|
2023-05-19 20:14:01 +02:00
|
|
|
"properties" : {
|
|
|
|
"level" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "level",
|
2013-04-02 20:06:43 +03:00
|
|
|
"enum" : [ "basic", "advanced", "expert" ]
|
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"skill" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "skill"
|
2013-04-02 20:06:43 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"specialty" : {
|
2023-03-05 01:07:41 +02:00
|
|
|
"type" : "object",
|
2023-05-19 20:14:01 +02:00
|
|
|
"description" : "Description of hero specialty using bonus system",
|
2023-03-05 01:07:41 +02:00
|
|
|
"additionalProperties" : false,
|
|
|
|
"properties" : {
|
|
|
|
"base" : {
|
|
|
|
"type" : "object",
|
|
|
|
"description" : "Will be merged with all bonuses."
|
2017-09-14 00:45:54 +02:00
|
|
|
},
|
2023-03-05 01:07:41 +02:00
|
|
|
"bonuses" : {
|
2017-09-14 00:45:54 +02:00
|
|
|
"type" : "object",
|
2023-03-05 01:07:41 +02:00
|
|
|
"description" : "Set of bonuses",
|
|
|
|
"additionalProperties" : { "$ref" : "bonus.json" }
|
|
|
|
},
|
|
|
|
"creature" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "Name of base creature to grant standard specialty to."
|
2017-09-14 00:45:54 +02:00
|
|
|
}
|
2023-03-05 01:07:41 +02:00
|
|
|
}
|
2013-04-02 20:06:43 +03:00
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"spellbook" : {
|
|
|
|
"type" : "array",
|
|
|
|
"description" : "List of starting spells, if available. This entry (even empty) will also grant spellbook",
|
|
|
|
"items" : { "type" : "string" }
|
2013-04-02 20:06:43 +03:00
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"texts" : {
|
|
|
|
"type" : "object",
|
2013-04-11 22:24:14 +03:00
|
|
|
"additionalProperties" : false,
|
2023-05-19 20:14:01 +02:00
|
|
|
"description" : "All translatable texts related to hero",
|
2023-05-19 20:04:31 +02:00
|
|
|
"required" : [ "name", "biography", "specialty" ],
|
2023-05-19 20:14:01 +02:00
|
|
|
"properties" : {
|
|
|
|
"name" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "Hero name"
|
2013-04-02 20:06:43 +03:00
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"biography" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "Hero biography"
|
2023-05-19 20:04:31 +02:00
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"specialty" : {
|
|
|
|
"type" : "object",
|
2013-04-11 22:24:14 +03:00
|
|
|
"additionalProperties" : false,
|
2023-05-19 20:14:01 +02:00
|
|
|
"description" : "Hero specialty information",
|
2023-05-19 20:04:31 +02:00
|
|
|
"required" : [ "name", "description", "tooltip" ],
|
2023-05-19 20:14:01 +02:00
|
|
|
"properties" : {
|
|
|
|
"name" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "Name of the specialty"
|
2013-04-02 20:06:43 +03:00
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"description" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "Description visible when hovering over specialty icon"
|
2023-05-19 20:04:31 +02:00
|
|
|
},
|
2023-05-19 20:14:01 +02:00
|
|
|
"tooltip" : {
|
|
|
|
"type" : "string",
|
|
|
|
"description" : "Tooltip visible on clicking icon."
|
2013-04-02 20:06:43 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-05-19 20:04:31 +02:00
|
|
|
},
|
|
|
|
"index" : {
|
|
|
|
"type" : "number",
|
|
|
|
"description" : "Private field to break things, do not use."
|
2023-07-18 19:24:45 +02:00
|
|
|
},
|
|
|
|
"onlyOnWaterMap" : {
|
|
|
|
"type" : "boolean",
|
|
|
|
"description" : "It true, hero won't show up on a map with water"
|
|
|
|
},
|
|
|
|
"onlyOnMapWithoutWater" : {
|
|
|
|
"type" : "boolean",
|
|
|
|
"description" : "It true, hero will show up only if the map contains no water"
|
2013-04-02 20:06:43 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|