1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-24 08:32:34 +02:00
vcmi/config/schemas/creature.json
2023-01-28 13:56:51 +02:00

312 lines
8.4 KiB
JSON

{
"type":"object",
"$schema": "http://json-schema.org/draft-04/schema",
"title" : "VCMI creature format",
"description": "Json format for defining new creatures in VCMI",
"required" : [ "faction" ],
"anyOf" : [
{
"disabled" : { "enum" : [ true ] }
},
{
"required" : [
"name", "cost", "level", "fightValue", "aiValue",
"attack", "defense", "hitPoints", "speed", "damage", "advMapAmount",
"graphics", "sound"
]
}
],
"additionalProperties" : false,
"properties":{
"name": {
"type":"object",
"additionalProperties" : false,
"description": "Translatable names for this creature",
"required" : [ "singular", "plural" ],
"properties":{
"singular": {
"type":"string",
"description": "Singular version"
},
"plural": {
"type":"string",
"description": "Plural version"
}
}
},
"abilityText" : {
"type" : "string",
"description" : "Text version of creature abilities. Used only with original creature window"
},
"index" : {
"type" : "number",
"description" : "Private field to break things, do not use."
},
"extraNames" : {
"type" : "array",
"items" : { "type" : "string" },
"description" : "Private field to break things, do not use."
},
"faction": {
"type":"string",
"description": "Faction this creature belongs to. Examples: castle, rampart"
},
"cost": {
"type":"object",
"additionalProperties" : false,
"description": "Cost to recruit this creature",
"properties":{
"wood": { "type":"number"},
"mercury": { "type":"number"},
"ore": { "type":"number"},
"sulfur": { "type":"number"},
"crystal": { "type":"number"},
"gems": { "type":"number"},
"gold": { "type":"number"}
}
},
"special": {
"type":"boolean",
"description": "Marks this object as special and not available by default"
},
"disabled": {
"type":"boolean",
"description": "Object is competely disabled and may not be even loaded in-game"
},
"level": { "type":"number"},
"fightValue": {
"type":"number",
"description": " \"value\" of creature, used to determine for example army strength"
},
"aiValue": {
"type":"number",
"description": "Describes how valuable this creature is to AI. Usually similar to fightValue"
},
"growth": {
"type":"number",
"description": "Basic growth of this creature in town or in external dwellings"
},
"horde": {
"type":"number",
"description": "Bonus growth of this creature from built horde"
},
"attack": { "type":"number" },
"defense": { "type":"number" },
"hitPoints": { "type":"number" },
"speed": { "type":"number" },
"shots": { "type":"number" },
"damage": {
"type":"object",
"additionalProperties" : false,
"properties":{
"max": { "type":"number" },
"min": { "type":"number" }
}
},
"spellPoints": {
"type":"number",
"description": "Spell points this creature has (usually equal to number of casts)"
},
"advMapAmount": {
"type":"object",
"additionalProperties" : false,
"description" : "Initial size of random stacks on adventure map",
"properties":{
"min": { "type":"number" },
"max": { "type":"number" }
}
},
"upgrades": {
"type":"array",
"description": "List of creatures to which this one can be upgraded",
"items": { "type":"string" }
},
"doubleWide": {
"type":"boolean",
"description": "If set, creature will be two tiles wide on battlefield"
},
"hasDoubleWeek": {
"type":"boolean",
"description": "creature may receive \"week of\" events"
},
"abilities": {
"description": "Creature abilities described using Bonus system",
"type":"object",
"additionalProperties": {
"$ref" : "bonus.json"
}
},
"stackExperience": {
"type":"array",
"description": "Stack experience, using bonus system",
"items":{
"type":"object",
"additionalProperties" : false,
"required" : [ "bonus", "values" ],
"description": "0",
"properties":{
"bonus": {"$ref" : "bonus.json" },
"values": {
"type":"array",
"minItems" : 10,
"maxItems" : 10,
"description": "Strength of the bonus",
"anyOf" : [
{ "items": { "type" : "number" } },
{ "items": { "type" : "boolean" } }
]
}
}
}
},
"graphics": {
"type":"object",
"additionalProperties" : false,
"description": "Describes how this creature looks like during battles",
"required" : [
"animationTime", "animation", "timeBetweenFidgets"
],
"properties":{
"animationTime": {
"type":"object",
"additionalProperties" : false,
"required" : [ "attack", "walk", "idle" ],
"description": "Length of several animations",
"properties":{
"attack": {
"type":"number",
"description": "attack"
},
"idle": {
"type":"number",
"description": "idle"
},
"walk": {
"type":"number",
"description": "walk"
}
}
},
"iconLarge": {
"type":"string",
"description": "Large icon for this creature, used for example in town screen",
"format" : "imageFile"
},
"iconSmall": {
"type":"string",
"description": "Small icon for this creature, used for example in exchange screen",
"format" : "imageFile"
},
"map": {
"type":"string",
"description": ".def file with animation of this creature on adventure map",
"format" : "defFile"
},
"animation": {
"type":"string",
"description": ".def file with animation of this creature in battles",
"format" : "defFile"
},
"missile": {
"type":"object",
"additionalProperties" : false,
"required" : [ "frameAngles", "offset", "attackClimaxFrame" ],
"description": "Missile description for archers",
"properties":{
"projectile": {
"type":"string",
"description": "Path to projectile animation",
"format" : "defFile"
},
"ray": {
"type":"array",
"description": "Colors of ray projectile animation",
"minItems" : 1,
"items": {
"type":"object",
"required" : [ "start", "end" ],
"properties":{
"start": {
"type":"array",
"minItems" : 4,
"maxItems" : 4,
"items": {
"minimum" : 0,
"maximum" : 255,
"type":"number"
}
},
"end": {
"type":"array",
"minItems" : 4,
"maxItems" : 4,
"items": {
"minimum" : 0,
"maximum" : 255,
"type":"number"
}
}
}
}
},
"frameAngles": {
"type":"array",
"description": "Angles of missile images, should go from 90 to -90",
"minItems" : 1,
"items": {
"minimum" : -90,
"maximum" : 90,
"type":"number"
}
},
"offset": {
"type":"object",
"additionalProperties" : false,
"required" : [ "lowerX", "lowerY", "middleX", "middleY", "upperX", "upperY" ],
"description": "Position where projectile image appears during shooting in specific direction",
"properties":{
"lowerX": { "type":"number" },
"lowerY": { "type":"number" },
"middleX": { "type":"number" },
"middleY": { "type":"number" },
"upperX": { "type":"number" },
"upperY": { "type":"number" }
}
},
"attackClimaxFrame": {
"type":"number",
"description": "Frame from attack animation during which creature deals damage"
}
}
},
"timeBetweenFidgets": {
"type":"number",
"description": "How often creature will play idling animation"
},
"troopCountLocationOffset": {
"type":"number",
"description": "Position of troop count label?"
}
}
},
"sound": {
"type":"object",
"additionalProperties" : false,
"description": "Various sound files associated with this creature",
"properties":{
"attack": { "type":"string", "format" : "soundFile" },
"defend": { "type":"string", "format" : "soundFile" },
"killed": { "type":"string", "format" : "soundFile" },
"startMoving": { "type":"string", "format" : "soundFile" },
"endMoving": { "type":"string", "format" : "soundFile" },
"move": { "type":"string", "format" : "soundFile" },
"shoot": { "type":"string", "format" : "soundFile" },
"wince": { "type":"string", "format" : "soundFile" }
}
}
}
}