Difference between revisions of "Creature Format"
From VCMI Project Wiki
(changed damage, advMapAmount syntax) |
(added json schema) |
||
| Line 3: | Line 3: | ||
todo: | todo: | ||
* remove deprecated attributes once implemented in town config | * remove deprecated attributes once implemented in town config | ||
| − | |||
* creature experience | * creature experience | ||
| + | * abilities exact syntax | ||
Creature abilities use [[Bonus Format]]. | Creature abilities use [[Bonus Format]]. | ||
| + | |||
| + | Json schema (see http://json-schema.org/) | ||
| + | <pre> | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : false, | ||
| + | "properties" : | ||
| + | { | ||
| + | "name" : | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : false, | ||
| + | "properties" : | ||
| + | { | ||
| + | "singular" : | ||
| + | { | ||
| + | "type" : "string" | ||
| + | }, | ||
| + | "plural" : | ||
| + | { | ||
| + | "type" : "string" | ||
| + | } | ||
| + | } | ||
| + | }, | ||
| + | "level" : | ||
| + | { | ||
| + | "type" : "integer" | ||
| + | }, | ||
| + | "faction" : | ||
| + | { | ||
| + | "type" : "string" | ||
| + | }, | ||
| + | "cost" : | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 0 | ||
| + | } | ||
| + | }, | ||
| + | "fightValue" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 0 | ||
| + | }, | ||
| + | "aiValue" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 0 | ||
| + | }, | ||
| + | "growth" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 1 | ||
| + | }, | ||
| + | "hitPoints" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 1 | ||
| + | }, | ||
| + | "speed" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 0 | ||
| + | }, | ||
| + | "attack" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 0 | ||
| + | }, | ||
| + | "defence" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 0 | ||
| + | }, | ||
| + | "shots" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 0, | ||
| + | "default" : 0 | ||
| + | }, | ||
| + | "spellPoints" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 0, | ||
| + | "default" : 0 | ||
| + | }, | ||
| + | "doubleWide" : | ||
| + | { | ||
| + | "type" : "boolean", | ||
| + | "default" : false | ||
| + | }, | ||
| + | "damage" : | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : false, | ||
| + | "properties" : | ||
| + | { | ||
| + | "min" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 0 | ||
| + | }, | ||
| + | "max" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 0 | ||
| + | } | ||
| + | } | ||
| + | }, | ||
| + | "advMapAmount" : | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : false, | ||
| + | "properties" : | ||
| + | { | ||
| + | "min" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 0 | ||
| + | }, | ||
| + | "max" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "minimum" : 0 | ||
| + | } | ||
| + | } | ||
| + | }, | ||
| + | "upgrades" : | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : | ||
| + | { | ||
| + | "type" : "boolean" | ||
| + | } | ||
| + | }, | ||
| + | "graphics" : | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : false, | ||
| + | "properties" : | ||
| + | { | ||
| + | "animation" : | ||
| + | { | ||
| + | "type" : "string" | ||
| + | }, | ||
| + | "timeBetweenFidgets" : | ||
| + | { | ||
| + | "type" : "number", | ||
| + | "default" : 1.0 | ||
| + | }, | ||
| + | "troopCountLocationOffset" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "default" : 0 | ||
| + | }, | ||
| + | "animationTime" : | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : false, | ||
| + | "properties" : | ||
| + | { | ||
| + | "walk" : | ||
| + | { | ||
| + | "type" : "number", | ||
| + | "default" : 1.0 | ||
| + | }, | ||
| + | "attack" : | ||
| + | { | ||
| + | "type" : "number", | ||
| + | "default" : 1.0 | ||
| + | }, | ||
| + | "flight" : | ||
| + | { | ||
| + | "type" : "number", | ||
| + | "default" : 1.0 | ||
| + | } | ||
| + | } | ||
| + | }, | ||
| + | "background" : | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : false, | ||
| + | "properties" : | ||
| + | { | ||
| + | "120" : | ||
| + | { | ||
| + | "type" : "string", | ||
| + | "default" : "" | ||
| + | }, | ||
| + | "130" : | ||
| + | { | ||
| + | "type" : "string", | ||
| + | "default" : "" | ||
| + | } | ||
| + | } | ||
| + | }, | ||
| + | "missile" : | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : false, | ||
| + | "properties" : | ||
| + | { | ||
| + | "animation" : | ||
| + | { | ||
| + | "type" : "string", | ||
| + | "default" : "" | ||
| + | }, | ||
| + | "spinning" : | ||
| + | { | ||
| + | "type" : "boolean", | ||
| + | "default" : false | ||
| + | }, | ||
| + | "offset" : | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : false, | ||
| + | "properties" : | ||
| + | { | ||
| + | "upperX" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "default" : 0 | ||
| + | }, | ||
| + | "upperY" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "default" : 0 | ||
| + | }, | ||
| + | "middleX" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "default" : 0 | ||
| + | }, | ||
| + | "middleY" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "default" : 0 | ||
| + | }, | ||
| + | "lowerX" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "default" : 0 | ||
| + | }, | ||
| + | "lowerY" : | ||
| + | { | ||
| + | "type" : "integer", | ||
| + | "default" : 0 | ||
| + | } | ||
| + | } | ||
| + | }, | ||
| + | "frameAngles" : | ||
| + | { | ||
| + | "type" : "array", | ||
| + | "additionalItems" : false, | ||
| + | "items" : | ||
| + | { | ||
| + | "type" : "number" | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | }, | ||
| + | "sound" : | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : false, | ||
| + | "properties" : | ||
| + | { | ||
| + | "attack" : | ||
| + | { | ||
| + | "type" : "string", | ||
| + | "default" : "" | ||
| + | }, | ||
| + | "defend" : | ||
| + | { | ||
| + | "type" : "string", | ||
| + | "default" : "" | ||
| + | }, | ||
| + | "killed" : | ||
| + | { | ||
| + | "type" : "string", | ||
| + | "default" : "" | ||
| + | }, | ||
| + | "move" : | ||
| + | { | ||
| + | "type" : "string", | ||
| + | "default" : "" | ||
| + | }, | ||
| + | "moveStart" : | ||
| + | { | ||
| + | "type" : "string", | ||
| + | "default" : "" | ||
| + | }, | ||
| + | "moveEnd" : | ||
| + | { | ||
| + | "type" : "string", | ||
| + | "default" : "" | ||
| + | }, | ||
| + | "shoot" : | ||
| + | { | ||
| + | "type" : "string", | ||
| + | "default" : "" | ||
| + | }, | ||
| + | "wince" : | ||
| + | { | ||
| + | "type" : "string", | ||
| + | "default" : "" | ||
| + | } | ||
| + | } | ||
| + | }, | ||
| + | "abilities" : | ||
| + | { | ||
| + | "type" : ["object", "null"], | ||
| + | "additionalProperties" : | ||
| + | { | ||
| + | "type" : "object", | ||
| + | "additionalProperties" : false, | ||
| + | "properties" : | ||
| + | { | ||
| + | "type" : | ||
| + | { | ||
| + | "type" : "string" | ||
| + | }, | ||
| + | "subtype" : | ||
| + | { | ||
| + | "type" : "integer" | ||
| + | }, | ||
| + | "value" : | ||
| + | { | ||
| + | "type" : "integer" | ||
| + | }, | ||
| + | "valueType" : | ||
| + | { | ||
| + | "type" : "string" | ||
| + | }, | ||
| + | "addInfo" : | ||
| + | { | ||
| + | "type" : "integer" | ||
| + | }, | ||
| + | "effectRange" : | ||
| + | { | ||
| + | "type" : "integer" | ||
| + | }, | ||
| + | "description" : | ||
| + | { | ||
| + | "type" : "string", | ||
| + | "default" : "" | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
long version (83 lines): | long version (83 lines): | ||
Revision as of 16:18, 27 August 2012
This is only a proposal and not official information by the VCMI team. See thread http://forum.vcmi.eu/viewtopic.php?t=533.
todo:
- remove deprecated attributes once implemented in town config
- creature experience
- abilities exact syntax
Creature abilities use Bonus Format.
Json schema (see http://json-schema.org/)
{
"type" : "object",
"additionalProperties" :
{
"type" : "object",
"additionalProperties" : false,
"properties" :
{
"name" :
{
"type" : "object",
"additionalProperties" : false,
"properties" :
{
"singular" :
{
"type" : "string"
},
"plural" :
{
"type" : "string"
}
}
},
"level" :
{
"type" : "integer"
},
"faction" :
{
"type" : "string"
},
"cost" :
{
"type" : "object",
"additionalProperties" :
{
"type" : "integer",
"minimum" : 0
}
},
"fightValue" :
{
"type" : "integer",
"minimum" : 0
},
"aiValue" :
{
"type" : "integer",
"minimum" : 0
},
"growth" :
{
"type" : "integer",
"minimum" : 1
},
"hitPoints" :
{
"type" : "integer",
"minimum" : 1
},
"speed" :
{
"type" : "integer",
"minimum" : 0
},
"attack" :
{
"type" : "integer",
"minimum" : 0
},
"defence" :
{
"type" : "integer",
"minimum" : 0
},
"shots" :
{
"type" : "integer",
"minimum" : 0,
"default" : 0
},
"spellPoints" :
{
"type" : "integer",
"minimum" : 0,
"default" : 0
},
"doubleWide" :
{
"type" : "boolean",
"default" : false
},
"damage" :
{
"type" : "object",
"additionalProperties" : false,
"properties" :
{
"min" :
{
"type" : "integer",
"minimum" : 0
},
"max" :
{
"type" : "integer",
"minimum" : 0
}
}
},
"advMapAmount" :
{
"type" : "object",
"additionalProperties" : false,
"properties" :
{
"min" :
{
"type" : "integer",
"minimum" : 0
},
"max" :
{
"type" : "integer",
"minimum" : 0
}
}
},
"upgrades" :
{
"type" : "object",
"additionalProperties" :
{
"type" : "boolean"
}
},
"graphics" :
{
"type" : "object",
"additionalProperties" : false,
"properties" :
{
"animation" :
{
"type" : "string"
},
"timeBetweenFidgets" :
{
"type" : "number",
"default" : 1.0
},
"troopCountLocationOffset" :
{
"type" : "integer",
"default" : 0
},
"animationTime" :
{
"type" : "object",
"additionalProperties" : false,
"properties" :
{
"walk" :
{
"type" : "number",
"default" : 1.0
},
"attack" :
{
"type" : "number",
"default" : 1.0
},
"flight" :
{
"type" : "number",
"default" : 1.0
}
}
},
"background" :
{
"type" : "object",
"additionalProperties" : false,
"properties" :
{
"120" :
{
"type" : "string",
"default" : ""
},
"130" :
{
"type" : "string",
"default" : ""
}
}
},
"missile" :
{
"type" : "object",
"additionalProperties" : false,
"properties" :
{
"animation" :
{
"type" : "string",
"default" : ""
},
"spinning" :
{
"type" : "boolean",
"default" : false
},
"offset" :
{
"type" : "object",
"additionalProperties" : false,
"properties" :
{
"upperX" :
{
"type" : "integer",
"default" : 0
},
"upperY" :
{
"type" : "integer",
"default" : 0
},
"middleX" :
{
"type" : "integer",
"default" : 0
},
"middleY" :
{
"type" : "integer",
"default" : 0
},
"lowerX" :
{
"type" : "integer",
"default" : 0
},
"lowerY" :
{
"type" : "integer",
"default" : 0
}
}
},
"frameAngles" :
{
"type" : "array",
"additionalItems" : false,
"items" :
{
"type" : "number"
}
}
}
}
}
},
"sound" :
{
"type" : "object",
"additionalProperties" : false,
"properties" :
{
"attack" :
{
"type" : "string",
"default" : ""
},
"defend" :
{
"type" : "string",
"default" : ""
},
"killed" :
{
"type" : "string",
"default" : ""
},
"move" :
{
"type" : "string",
"default" : ""
},
"moveStart" :
{
"type" : "string",
"default" : ""
},
"moveEnd" :
{
"type" : "string",
"default" : ""
},
"shoot" :
{
"type" : "string",
"default" : ""
},
"wince" :
{
"type" : "string",
"default" : ""
}
}
},
"abilities" :
{
"type" : ["object", "null"],
"additionalProperties" :
{
"type" : "object",
"additionalProperties" : false,
"properties" :
{
"type" :
{
"type" : "string"
},
"subtype" :
{
"type" : "integer"
},
"value" :
{
"type" : "integer"
},
"valueType" :
{
"type" : "string"
},
"addInfo" :
{
"type" : "integer"
},
"effectRange" :
{
"type" : "integer"
},
"description" :
{
"type" : "string",
"default" : ""
}
}
}
}
}
}
}
long version (83 lines):
{
"" : // name (for configs), should be camel case version of interface name. Examples: Pikeman, RoyalGriffin
{
// mandatory
"name" :
{
"singular" : "",
"plural" : ""
},
"level" : 0,
"faction" : "", // config name of faction. Examples: Castle, Rampart
"cost" : // cost, zero values can be omitted. Keys are the ids of the resources
{
"Wood" : 0,
"Mercury" : 0,
"Ore" : 0,
"Sulfur" : 0,
"Crystal" : 0,
"Gems" : 0,
"Gold" : 0
},
"fightValue" : 0,
"aiValue" : 0,
"growth" : 0,
"hitPoints" : 0,
"speed" : 0,
"attack" : 0,
"defence" : 0,
"damage" :
{
"min" : 0,
"max" : 0
},
"advMapAmount" :
{
"min" : 0,
"max" : 0
},
"graphics" :
{
"animation" : "" // name of def file
},
// optional
"upgrades" : {}, // keys are ids of creatures that this can be upgraded to. Values are true or false
"doubleWide" : false,
"shots" : 0,
"spellPoints" : 0,
"abilities" :
{
},
"graphics" :
{
"timeBetweenFidgets" : 1.00,
"troopCountLocationOffset" : 0,
"attackClimaxFrame" : 0,
"animationTime" :
{
"walk" : 1.00,
"attack" : 1.00,
"flight" : 1.00
},
"background" :
{
"120" : "", // if empty, uses faction background
"130" : "" // if empty, uses faction background
},
"missile" :
{
"animation" : "", // name of def file for missile
"spinning" : false,
"offset" :
{
"upperX" : 0,
"upperY" : 0,
"middleX" : 0,
"middleY" : 0,
"lowerX" : 0,
"lowerY" : 0
},
"frameAngles" : []
}
},
"sound" : // names of sound files
{
"attack": "",
"defend": "",
"killed": "",
"move": "",
"shoot" : "",
"wince": "",
"moveStart" : "",
"moveEnd" : ""
},
// deprecated, move to town config
"hordeGrowth" : 0, // growth bonus from horde building
"turretShooter" : false // if used in turret
},
// more creatures
}
pikeman long (39 lines):
{
"Pikeman" :
{
"name" :
{
"singular" : "Pikeman",
"plural" : "Pikemen"
},
"level" : 1,
"faction" : "Castle",
"upgrades" :
{
"Halberdier" : true
},
"cost" :
{
"Gold" : 60
},
"fightValue" : 100,
"aiValue" : 80,
"growth" : 14,
"hitPoints" : 10,
"speed" : 4,
"attack" : 4,
"defence" : 5,
"damage" :
{
"min" : 1,
"max" : 3
},
"advMapAmount" :
{
"min" : 20,
"max" : 50
},
"abilities" : // this is subject to change
{
"CHARGE_IMMUNITY" : {}
},
"graphics" :
{
"animation" : "CPKMAN.DEF",
"animationTime" :
{
"walk" : 1.15
}
},
"sound" :
{
"attack": "PIKEATTK.wav",
"defend": "PIKEDFND.wav",
"killed": "PIKEKILL.wav",
"move": "PIKEMOVE.wav",
"wince": "PIKEWNCE.wav"
}
}
}
