mirror of
https://github.com/vcmi/vcmi.git
synced 2025-08-13 19:54:17 +02:00
Merge pull request #2171 from krs0/feature/schema_updates
Rearranging Schemas
This commit is contained in:
@@ -3,8 +3,7 @@
|
|||||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||||
"title" : "VCMI artifact format",
|
"title" : "VCMI artifact format",
|
||||||
"description" : "Format used to define new artifacts in VCMI",
|
"description" : "Format used to define new artifacts in VCMI",
|
||||||
"required" : [ "class", "text", "type", "value" ],
|
"required" : [ "type", "class", "value", "text" ],
|
||||||
|
|
||||||
"definitions" : {
|
"definitions" : {
|
||||||
"growingBonusList" : {
|
"growingBonusList" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
@@ -20,28 +19,61 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"bonuses": {
|
"warMachine" :
|
||||||
|
{
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Creature id to use on battle field. If set, this artifact is war machine"
|
||||||
|
},
|
||||||
|
"type" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"description": "Bonuses provided by this artifact using bonus system",
|
"description" : "Type of this artifact - creature, hero or commander",
|
||||||
"items": { "$ref" : "bonus.json" }
|
"items" : {
|
||||||
|
"type" : "string",
|
||||||
|
"enum" : [ "HERO", "CREATURE", "COMMANDER" ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"slot" : {
|
||||||
|
"description" : "Slot to which this artifact can be put, if applicable",
|
||||||
|
"oneOf" : [
|
||||||
|
{
|
||||||
|
"type" : "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type" : "array",
|
||||||
|
"minItems" : 1,
|
||||||
|
"additionalItems" : { "type" : "string" }
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"class" : {
|
"class" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"enum" : [ "SPECIAL", "TREASURE", "MINOR", "MAJOR", "RELIC" ],
|
"enum" : [ "SPECIAL", "TREASURE", "MINOR", "MAJOR", "RELIC" ],
|
||||||
"description" : "Artifact class, treasure, minor, major or relic"
|
"description" : "Artifact class, treasure, minor, major or relic"
|
||||||
},
|
},
|
||||||
"index" : {
|
"value" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "Private field to break things, do not use."
|
"description" : "Cost of this artifact, in gold"
|
||||||
},
|
},
|
||||||
"components" : {
|
"components" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"description" : "Optional, list of components for combinational artifacts",
|
"description" : "Optional, list of components for combinational artifacts",
|
||||||
"items" : { "type" : "string" }
|
"items" : { "type" : "string" }
|
||||||
},
|
},
|
||||||
|
"bonuses" : {
|
||||||
|
"type" : "array",
|
||||||
|
"description" : "Bonuses provided by this artifact using bonus system",
|
||||||
|
"items" : { "$ref" : "bonus.json" }
|
||||||
|
},
|
||||||
|
"growing" : {
|
||||||
|
"type" : "object",
|
||||||
|
"additionalProperties" : false,
|
||||||
|
"properties" : {
|
||||||
|
"bonusesPerLevel" : { "$ref" : "#/definitions/growingBonusList"},
|
||||||
|
"thresholdBonuses" : { "$ref" : "#/definitions/growingBonusList"}
|
||||||
|
}
|
||||||
|
},
|
||||||
"graphics" : {
|
"graphics" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
@@ -65,33 +97,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"growing" : {
|
|
||||||
"type" : "object",
|
|
||||||
"additionalProperties" : false,
|
|
||||||
"properties" : {
|
|
||||||
"bonusesPerLevel" : { "$ref" : "#/definitions/growingBonusList"},
|
|
||||||
"thresholdBonuses" : { "$ref" : "#/definitions/growingBonusList"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"slot": {
|
|
||||||
"description": "Slot to which this artifact can be put, if applicable",
|
|
||||||
"oneOf" : [
|
|
||||||
{
|
|
||||||
"type":"string"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type" : "array",
|
|
||||||
"minItems" : 1,
|
|
||||||
"additionalItems" : { "type" : "string" }
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"text" : {
|
"text" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"description" : "Texts associated with artifact",
|
"description" : "Texts associated with artifact",
|
||||||
"required" : [ "description", "event", "name" ],
|
"required" : [ "description", "event", "name" ],
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
"name" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Name of the artifact"
|
||||||
|
},
|
||||||
"description" : {
|
"description" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Long description of this artifact"
|
"description" : "Long description of this artifact"
|
||||||
@@ -99,30 +114,12 @@
|
|||||||
"event" : {
|
"event" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Text that visible on picking this artifact on map"
|
"description" : "Text that visible on picking this artifact on map"
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Name of the artifact"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": {
|
"index" : {
|
||||||
"type":"array",
|
|
||||||
"description": "Type of this artifact - creature, hero or commander",
|
|
||||||
"items": {
|
|
||||||
"type":"string",
|
|
||||||
"enum" : [ "HERO", "CREATURE", "COMMANDER" ]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"value": {
|
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description": "Cost of this artifact, in gold"
|
"description" : "Private field to break things, do not use."
|
||||||
},
|
}
|
||||||
"warMachine":
|
|
||||||
{
|
|
||||||
"type":"string",
|
|
||||||
"description": "Creature id to use on battle field. If set, this artifact is war machine"
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,27 +4,26 @@
|
|||||||
"title" : "VCMI battlefield format",
|
"title" : "VCMI battlefield format",
|
||||||
"description" : "Format used to define new battlefields in VCMI",
|
"description" : "Format used to define new battlefields in VCMI",
|
||||||
"required" : [ "graphics" ],
|
"required" : [ "graphics" ],
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
"name" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Name of the battleground"
|
||||||
|
},
|
||||||
|
"isSpecial" : {
|
||||||
|
"type" : "boolean",
|
||||||
|
"description" : "Shows if this battleground has own obstacles"
|
||||||
|
},
|
||||||
"bonuses": {
|
"bonuses": {
|
||||||
"type":"array",
|
"type":"array",
|
||||||
"description": "Bonuses provided by this battleground using bonus system",
|
"description": "Bonuses provided by this battleground using bonus system",
|
||||||
"items": { "$ref" : "bonus.json" }
|
"items": { "$ref" : "bonus.json" }
|
||||||
},
|
},
|
||||||
"name": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Name of the battleground"
|
|
||||||
},
|
|
||||||
"graphics" : {
|
"graphics" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"format" : "imageFile",
|
"format" : "imageFile",
|
||||||
"description" : "BMP battleground resource"
|
"description" : "BMP battleground resource"
|
||||||
},
|
},
|
||||||
"isSpecial": {
|
|
||||||
"type":"boolean",
|
|
||||||
"description": "Shows if this battleground has own obstacles"
|
|
||||||
},
|
|
||||||
"impassableHexes" : {
|
"impassableHexes" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"description" : "Battle hexes always impassable for this type of battlefield (ship to ship for instance)",
|
"description" : "Battle hexes always impassable for this type of battlefield (ship to ship for instance)",
|
||||||
|
@@ -4,7 +4,6 @@
|
|||||||
"title" : "VCMI bonus system format",
|
"title" : "VCMI bonus system format",
|
||||||
"description" : "Subsection of several formats, used to add generic bonuses to objects",
|
"description" : "Subsection of several formats, used to add generic bonuses to objects",
|
||||||
"required" : ["type"],
|
"required" : ["type"],
|
||||||
|
|
||||||
"definitions" :
|
"definitions" :
|
||||||
{
|
{
|
||||||
"nestedLimiter" : {
|
"nestedLimiter" : {
|
||||||
@@ -38,43 +37,30 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"addInfo": {
|
"type" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "type"
|
||||||
|
},
|
||||||
|
"subtype" : {
|
||||||
"anyOf" : [
|
"anyOf" : [
|
||||||
{ "type" : "string" },
|
|
||||||
{ "type" : "number" },
|
|
||||||
{
|
|
||||||
"type" : "array",
|
|
||||||
"items" : {
|
|
||||||
"anyof" : [
|
|
||||||
{ "type" : "string" },
|
{ "type" : "string" },
|
||||||
{ "type" : "number" }
|
{ "type" : "number" }
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"description": "addInfo"
|
"description" : "subtype"
|
||||||
},
|
},
|
||||||
"description": {
|
"sourceID" : {
|
||||||
|
"type" : "number",
|
||||||
|
"description" : "sourceID"
|
||||||
|
},
|
||||||
|
"sourceType" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description": "description"
|
"description" : "sourceType"
|
||||||
},
|
},
|
||||||
"duration": {
|
"targetSourceType" : {
|
||||||
"anyOf" : [
|
|
||||||
{ "type": "string"},
|
|
||||||
{ "type": "array", "items": {"type": "string"} }
|
|
||||||
],
|
|
||||||
"description": "duration"
|
|
||||||
},
|
|
||||||
"effectRange": {
|
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description": "effectRange"
|
"description" : "targetSourceType"
|
||||||
},
|
|
||||||
"limiters" : {
|
|
||||||
"$ref" : "#/definitions/nestedLimiter",
|
|
||||||
"description" : "limiter"
|
|
||||||
},
|
},
|
||||||
"propagator" : {
|
"propagator" : {
|
||||||
"description" : "propagator",
|
"description" : "propagator",
|
||||||
@@ -139,36 +125,13 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"sourceID": {
|
"limiters" : {
|
||||||
"type":"number",
|
"$ref" : "#/definitions/nestedLimiter",
|
||||||
"description": "sourceID"
|
"description" : "limiter"
|
||||||
},
|
},
|
||||||
"sourceType": {
|
"effectRange" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description": "sourceType"
|
"description" : "effectRange"
|
||||||
},
|
|
||||||
"targetSourceType": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "targetSourceType"
|
|
||||||
},
|
|
||||||
"stacking" : {
|
|
||||||
"type" : "string",
|
|
||||||
"description" : "stacking"
|
|
||||||
},
|
|
||||||
"subtype": {
|
|
||||||
"anyOf" : [
|
|
||||||
{ "type" : "string" },
|
|
||||||
{ "type" : "number" }
|
|
||||||
],
|
|
||||||
"description": "subtype"
|
|
||||||
},
|
|
||||||
"turns": {
|
|
||||||
"type":"number",
|
|
||||||
"description": "turns"
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "type"
|
|
||||||
},
|
},
|
||||||
"val" : {
|
"val" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
@@ -177,6 +140,41 @@
|
|||||||
"valueType" : {
|
"valueType" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "valueType"
|
"description" : "valueType"
|
||||||
|
},
|
||||||
|
"addInfo" : {
|
||||||
|
"anyOf" : [
|
||||||
|
{ "type" : "string" },
|
||||||
|
{ "type" : "number" },
|
||||||
|
{
|
||||||
|
"type" : "array",
|
||||||
|
"items" : {
|
||||||
|
"anyof" : [
|
||||||
|
{ "type" : "string" },
|
||||||
|
{ "type" : "number" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description" : "addInfo"
|
||||||
|
},
|
||||||
|
"duration" : {
|
||||||
|
"anyOf" : [
|
||||||
|
{ "type" : "string"},
|
||||||
|
{ "type" : "array", "items" : {"type" : "string"} }
|
||||||
|
],
|
||||||
|
"description" : "duration"
|
||||||
|
},
|
||||||
|
"turns" : {
|
||||||
|
"type" : "number",
|
||||||
|
"description" : "turns"
|
||||||
|
},
|
||||||
|
"stacking" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "stacking"
|
||||||
|
},
|
||||||
|
"description" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "description"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -10,15 +10,21 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"required" : [
|
"required" : [
|
||||||
"name", "cost", "level", "fightValue", "aiValue",
|
"name", "level", "cost", "speed", "hitPoints", "attack", "defense", "damage",
|
||||||
"attack", "defense", "hitPoints", "speed", "damage", "advMapAmount",
|
"fightValue", "aiValue", "advMapAmount", "graphics", "sound"
|
||||||
"graphics", "sound"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
"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"
|
||||||
|
},
|
||||||
"name" : {
|
"name" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
@@ -35,46 +41,51 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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" : {
|
"faction" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Faction this creature belongs to. Examples: castle, rampart"
|
"description" : "Faction this creature belongs to. Examples: castle, rampart"
|
||||||
},
|
},
|
||||||
|
"level" : { "type" : "number"},
|
||||||
|
"upgrades" : {
|
||||||
|
"type" : "array",
|
||||||
|
"description" : "List of creatures to which this one can be upgraded",
|
||||||
|
"items" : { "type" : "string" }
|
||||||
|
},
|
||||||
"cost" : {
|
"cost" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"description" : "Cost to recruit this creature",
|
"description" : "Cost to recruit this creature",
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
"gold" : { "type" : "number"},
|
||||||
"wood" : { "type" : "number"},
|
"wood" : { "type" : "number"},
|
||||||
"mercury": { "type":"number"},
|
|
||||||
"ore" : { "type" : "number"},
|
"ore" : { "type" : "number"},
|
||||||
|
"mercury" : { "type" : "number"},
|
||||||
"sulfur" : { "type" : "number"},
|
"sulfur" : { "type" : "number"},
|
||||||
"crystal" : { "type" : "number"},
|
"crystal" : { "type" : "number"},
|
||||||
"gems": { "type":"number"},
|
"gems" : { "type" : "number"}
|
||||||
"gold": { "type":"number"}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"special": {
|
"speed" : { "type" : "number" },
|
||||||
"type":"boolean",
|
"hitPoints" : { "type" : "number" },
|
||||||
"description": "Marks this object as special and not available by default"
|
"attack" : { "type" : "number" },
|
||||||
|
"defense" : { "type" : "number" },
|
||||||
|
"damage" : {
|
||||||
|
"type" : "object",
|
||||||
|
"additionalProperties" : false,
|
||||||
|
"properties" : {
|
||||||
|
"max" : { "type" : "number" },
|
||||||
|
"min" : { "type" : "number" }
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"disabled": {
|
"shots" : { "type" : "number" },
|
||||||
"type":"boolean",
|
"spellPoints" : {
|
||||||
"description": "Object is competely disabled and may not be even loaded in-game"
|
"type" : "number",
|
||||||
|
"description" : "Spell points this creature has (usually equal to number of casts)"
|
||||||
|
},
|
||||||
|
"doubleWide" : {
|
||||||
|
"type" : "boolean",
|
||||||
|
"description" : "If set, creature will be two tiles wide on battlefield"
|
||||||
},
|
},
|
||||||
"level": { "type":"number"},
|
|
||||||
"fightValue" : {
|
"fightValue" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : " \"value\" of creature, used to determine for example army strength"
|
"description" : " \"value\" of creature, used to determine for example army strength"
|
||||||
@@ -91,24 +102,6 @@
|
|||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "Bonus growth of this creature from built horde"
|
"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" : {
|
"advMapAmount" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
@@ -118,15 +111,6 @@
|
|||||||
"max" : { "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" : {
|
"hasDoubleWeek" : {
|
||||||
"type" : "boolean",
|
"type" : "boolean",
|
||||||
"description" : "creature may receive \"week of\" events"
|
"description" : "creature may receive \"week of\" events"
|
||||||
@@ -138,37 +122,38 @@
|
|||||||
"$ref" : "bonus.json"
|
"$ref" : "bonus.json"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stackExperience": {
|
"abilityText" : {
|
||||||
"type":"array",
|
"type" : "string",
|
||||||
"description": "Stack experience, using bonus system",
|
"description" : "Text version of creature abilities. Used only with original creature window"
|
||||||
"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" : {
|
"graphics" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"description" : "Describes how this creature looks like during battles",
|
"description" : "Describes how this creature looks like during battles",
|
||||||
"required" : [
|
"required" : [
|
||||||
"animationTime", "animation", "timeBetweenFidgets"
|
"animation", "animationTime", "timeBetweenFidgets"
|
||||||
],
|
],
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
"animation" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : ".def file with animation of this creature in battles",
|
||||||
|
"format" : "defFile"
|
||||||
|
},
|
||||||
|
"map" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : ".def file with animation of this creature on adventure map",
|
||||||
|
"format" : "defFile"
|
||||||
|
},
|
||||||
|
"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"
|
||||||
|
},
|
||||||
"animationTime" : {
|
"animationTime" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
@@ -189,27 +174,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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" : {
|
"missile" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
@@ -306,6 +270,38 @@
|
|||||||
"shoot" : { "type" : "string", "format" : "soundFile" },
|
"shoot" : { "type" : "string", "format" : "soundFile" },
|
||||||
"wince" : { "type" : "string", "format" : "soundFile" }
|
"wince" : { "type" : "string", "format" : "soundFile" }
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"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" } }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -26,31 +26,33 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||||
"title" : "VCMI faction format",
|
"title" : "VCMI faction format",
|
||||||
"description" : "Json format for defining new faction (aka towns) in VCMI",
|
"description" : "Json format for defining new faction (aka towns) in VCMI",
|
||||||
"required" : [ "name", "alignment", "creatureBackground", "nativeTerrain" ],
|
"required" : [ "name", "alignment", "nativeTerrain", "creatureBackground" ],
|
||||||
"dependencies" : {
|
"dependencies" : {
|
||||||
"town" : [ "puzzleMap" ]
|
"town" : [ "puzzleMap" ]
|
||||||
},
|
},
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"name" : {
|
"name" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Translatable name of town"
|
"description" : "Translatable name of town"
|
||||||
},
|
},
|
||||||
"index" : {
|
|
||||||
"type" : "number",
|
|
||||||
"description" : "Private field to break things, do not use."
|
|
||||||
},
|
|
||||||
"alignment" : {
|
"alignment" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"enum" : [ "good", "neutral", "evil" ],
|
"enum" : [ "good", "neutral", "evil" ],
|
||||||
"description" : "Town alignment, good, neutral or evil"
|
"description" : "Town alignment, good, neutral or evil"
|
||||||
},
|
},
|
||||||
|
"nativeTerrain" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Native terrain for creatures. Creatures fighting on native terrain receive several bonuses"
|
||||||
|
},
|
||||||
|
"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" : {
|
"creatureBackground" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
@@ -69,13 +71,163 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nativeTerrain": {
|
"town" : {
|
||||||
"type":"string",
|
"type" : "object",
|
||||||
"description": "Native terrain for creatures. Creatures fighting on native terrain receive several bonuses"
|
"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" }
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"preferUndergroundPlacement": {
|
"hallSlots" : {
|
||||||
"type":"boolean",
|
"type" : "array",
|
||||||
"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."
|
"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" : {
|
"puzzleMap" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
@@ -104,164 +256,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"town": {
|
"index" : {
|
||||||
"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":{
|
|
||||||
"mapObject" : {
|
|
||||||
"properties" : {
|
|
||||||
"filters" : {
|
|
||||||
"type" : "object",
|
|
||||||
"additionalProperties" : { "type" : "array" }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"guildSpells" : {
|
|
||||||
"type" : "object",
|
|
||||||
"description" : "Spells available in mage guild. Value indicates chance for this spell to appear",
|
|
||||||
"additionalProperties" : {
|
|
||||||
"type" : "number"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"defaultTavern" : {
|
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "Default chance for hero to appear in tavern, used only when value vas not set in tavern field",
|
"description" : "Private field to break things, do not use."
|
||||||
"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
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tavernVideo" : {
|
|
||||||
"type" : "string",
|
|
||||||
"description" : "Video for tavern window",
|
|
||||||
"format" : "videoFile"
|
|
||||||
},
|
|
||||||
"names" : {
|
|
||||||
"type" : "array",
|
|
||||||
"description" : "Names for towns on adventure map",
|
|
||||||
"minItems" : 1,
|
|
||||||
"items" : { "type" : "string" }
|
|
||||||
},
|
|
||||||
"buildingsIcons": {
|
|
||||||
"type" : "string",
|
|
||||||
"description": "Path to .def file with building icons",
|
|
||||||
"format" : "animationFile"
|
|
||||||
},
|
|
||||||
"buildings": {
|
|
||||||
"type" : "object",
|
|
||||||
"additionalProperties" : {
|
|
||||||
"$ref" : "townBuilding.json"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"creatures": {
|
|
||||||
"type":"array",
|
|
||||||
"minItems" : 7,
|
|
||||||
"maxItems" : 7,
|
|
||||||
"description" : "List of creatures available for recruitment on each level",
|
|
||||||
"items": {
|
|
||||||
"type":"array",
|
|
||||||
"items" : { "type" : "string" }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"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"
|
|
||||||
},
|
|
||||||
"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" }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"horde": {
|
|
||||||
"type":"array",
|
|
||||||
"maxItems" : 2,
|
|
||||||
"description": "Levels of creatures that have hordes in town",
|
|
||||||
"items": { "type":"number" }
|
|
||||||
},
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mageGuild": {
|
|
||||||
"type":"number",
|
|
||||||
"description": "Maximal level of mage guild"
|
|
||||||
},
|
|
||||||
"moatAbility": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Identifier of ability to use as town moat during siege"
|
|
||||||
},
|
|
||||||
"musicTheme": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Path to town music theme",
|
|
||||||
"format" : "musicFile"
|
|
||||||
},
|
|
||||||
"siege": {
|
|
||||||
"$ref" : "townSiege.json"
|
|
||||||
},
|
|
||||||
"structures": {
|
|
||||||
"type" : "object",
|
|
||||||
"additionalProperties" : {
|
|
||||||
"$ref" : "townStructure.json"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"townBackground": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Background for town screen",
|
|
||||||
"format" : "imageFile"
|
|
||||||
},
|
|
||||||
"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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -3,8 +3,7 @@
|
|||||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||||
"title" : "VCMI hero format",
|
"title" : "VCMI hero format",
|
||||||
"description" : "Format used to define new heroes in VCMI",
|
"description" : "Format used to define new heroes in VCMI",
|
||||||
"required": [ "army", "class", "skills", "texts" ],
|
"required" : [ "class", "army", "skills", "texts" ],
|
||||||
|
|
||||||
"oneOf" : [
|
"oneOf" : [
|
||||||
{
|
{
|
||||||
"required" : [ "images" ]
|
"required" : [ "images" ]
|
||||||
@@ -13,40 +12,8 @@
|
|||||||
"required" : [ "index" ]
|
"required" : [ "index" ]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"army": {
|
|
||||||
"type":"array",
|
|
||||||
"description": "Initial hero army when recruited in tavern",
|
|
||||||
"minItems" : 1,
|
|
||||||
"maxItems" : 3,
|
|
||||||
"items": {
|
|
||||||
"type":"object",
|
|
||||||
"additionalProperties" : false,
|
|
||||||
"required" : [ "creature", "min", "max" ],
|
|
||||||
"properties":{
|
|
||||||
"creature": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "creature"
|
|
||||||
},
|
|
||||||
"max": {
|
|
||||||
"type":"number",
|
|
||||||
"description": "max",
|
|
||||||
"minimum" : 1
|
|
||||||
},
|
|
||||||
"min": {
|
|
||||||
"type":"number",
|
|
||||||
"description": "min",
|
|
||||||
"minimum" : 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"index" : {
|
|
||||||
"type" : "number",
|
|
||||||
"description" : "Private field to break things, do not use."
|
|
||||||
},
|
|
||||||
"special" : {
|
"special" : {
|
||||||
"type" : "boolean",
|
"type" : "boolean",
|
||||||
"description" : "Marks this object as special and not available by default"
|
"description" : "Marks this object as special and not available by default"
|
||||||
@@ -92,6 +59,33 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"army" : {
|
||||||
|
"type" : "array",
|
||||||
|
"description" : "Initial hero army when recruited in tavern",
|
||||||
|
"minItems" : 1,
|
||||||
|
"maxItems" : 3,
|
||||||
|
"items" : {
|
||||||
|
"type" : "object",
|
||||||
|
"additionalProperties" : false,
|
||||||
|
"required" : [ "creature", "min", "max" ],
|
||||||
|
"properties" : {
|
||||||
|
"creature" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "creature"
|
||||||
|
},
|
||||||
|
"max" : {
|
||||||
|
"type" : "number",
|
||||||
|
"description" : "max",
|
||||||
|
"minimum" : 1
|
||||||
|
},
|
||||||
|
"min" : {
|
||||||
|
"type" : "number",
|
||||||
|
"description" : "min",
|
||||||
|
"minimum" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"skills" : {
|
"skills" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"description" : "List of skills initially known by hero",
|
"description" : "List of skills initially known by hero",
|
||||||
@@ -142,30 +136,30 @@
|
|||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"description" : "All translatable texts related to hero",
|
"description" : "All translatable texts related to hero",
|
||||||
"required" : [ "biography", "name", "specialty" ],
|
"required" : [ "name", "biography", "specialty" ],
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"biography": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Hero biography"
|
|
||||||
},
|
|
||||||
"name" : {
|
"name" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Hero name"
|
"description" : "Hero name"
|
||||||
},
|
},
|
||||||
|
"biography" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Hero biography"
|
||||||
|
},
|
||||||
"specialty" : {
|
"specialty" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"description" : "Hero specialty information",
|
"description" : "Hero specialty information",
|
||||||
"required" : [ "description", "name", "tooltip" ],
|
"required" : [ "name", "description", "tooltip" ],
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"description": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Description visible when hovering over specialty icon"
|
|
||||||
},
|
|
||||||
"name" : {
|
"name" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Name of the specialty"
|
"description" : "Name of the specialty"
|
||||||
},
|
},
|
||||||
|
"description" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Description visible when hovering over specialty icon"
|
||||||
|
},
|
||||||
"tooltip" : {
|
"tooltip" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Tooltip visible on clicking icon."
|
"description" : "Tooltip visible on clicking icon."
|
||||||
@@ -173,6 +167,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"index" : {
|
||||||
|
"type" : "number",
|
||||||
|
"description" : "Private field to break things, do not use."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,13 +4,29 @@
|
|||||||
"title" : "VCMI hero class format",
|
"title" : "VCMI hero class format",
|
||||||
"description" : "Format used to define classes of heroes in VCMI",
|
"description" : "Format used to define classes of heroes in VCMI",
|
||||||
"required" : [
|
"required" : [
|
||||||
"animation", "faction", "highLevelChance", "lowLevelChance",
|
"name", "faction", "affinity", "commander", "animation", "mapObject",
|
||||||
"name", "primarySkills", "secondarySkills", "tavern", "defaultTavern",
|
"primarySkills", "secondarySkills", "lowLevelChance", "highLevelChance",
|
||||||
"affinity", "commander", "mapObject"
|
"defaultTavern", "tavern"
|
||||||
],
|
],
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
"name" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Translatable name of hero class"
|
||||||
|
},
|
||||||
|
"faction" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Faction this hero class belongs to"
|
||||||
|
},
|
||||||
|
"affinity" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Affinity of hero class, might or magic",
|
||||||
|
"enum" : [ "might", "magic"]
|
||||||
|
},
|
||||||
|
"commander" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Identifier of creature that is used as commander by heroes"
|
||||||
|
},
|
||||||
"animation" : {
|
"animation" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
@@ -45,41 +61,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"index" : {
|
|
||||||
"type" : "number",
|
|
||||||
"description" : "Private field to break things, do not use."
|
|
||||||
},
|
|
||||||
"faction": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Faction this hero class belongs to"
|
|
||||||
},
|
|
||||||
"affinity" : {
|
|
||||||
"type" : "string",
|
|
||||||
"description" : "Affinity of hero class, might or magic",
|
|
||||||
"enum" : [ "might", "magic"]
|
|
||||||
},
|
|
||||||
"commander": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Identifier of creature that is used as commander by heroes"
|
|
||||||
},
|
|
||||||
"highLevelChance": {
|
|
||||||
"type":"object",
|
|
||||||
"description": "Chance to get specific primary skill on level-up, applicable for levels starting from 10",
|
|
||||||
"additionalProperties":{
|
|
||||||
"type":"number"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lowLevelChance": {
|
|
||||||
"type":"object",
|
|
||||||
"description": "Chance to get specific primary skill on level-up, applicable for levels less than 10",
|
|
||||||
"additionalProperties":{
|
|
||||||
"type":"number"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"name": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Translatable name of hero class"
|
|
||||||
},
|
|
||||||
"primarySkills" : {
|
"primarySkills" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"description" : "Initial primary skills of heroes",
|
"description" : "Initial primary skills of heroes",
|
||||||
@@ -94,12 +75,25 @@
|
|||||||
"type" : "number"
|
"type" : "number"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"lowLevelChance" : {
|
||||||
|
"type" : "object",
|
||||||
|
"description" : "Chance to get specific primary skill on level-up, applicable for levels less than 10",
|
||||||
|
"additionalProperties" : {
|
||||||
|
"type" : "number"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"highLevelChance" : {
|
||||||
|
"type" : "object",
|
||||||
|
"description" : "Chance to get specific primary skill on level-up, applicable for levels starting from 10",
|
||||||
|
"additionalProperties" : {
|
||||||
|
"type" : "number"
|
||||||
|
}
|
||||||
|
},
|
||||||
"defaultTavern" : {
|
"defaultTavern" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "Default chance for hero to appear in tavern, used only when value vas not set in tavern field",
|
"description" : "Default chance for hero to appear in tavern, used only when value vas not set in tavern field",
|
||||||
"minimum" : 0
|
"minimum" : 0
|
||||||
},
|
},
|
||||||
|
|
||||||
"tavern" : {
|
"tavern" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"description" : "Chance for this hero to appear in tavern of this factions. Reversed version of field \"tavern\" from town format",
|
"description" : "Chance for this hero to appear in tavern of this factions. Reversed version of field \"tavern\" from town format",
|
||||||
@@ -107,6 +101,10 @@
|
|||||||
"type" : "number",
|
"type" : "number",
|
||||||
"minimum" : 0
|
"minimum" : 0
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"index" : {
|
||||||
|
"type" : "number",
|
||||||
|
"description" : "Private field to break things, do not use."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -3,42 +3,35 @@
|
|||||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||||
"title" : "VCMI map header format",
|
"title" : "VCMI map header format",
|
||||||
"description" : "Part of map in json format, defines core settings of the map",
|
"description" : "Part of map in json format, defines core settings of the map",
|
||||||
"required": [ "defeatIconIndex", "defeatString", "victoryIconIndex", "victoryString" ],
|
"required" : [ "victoryIconIndex", "victoryString", "defeatIconIndex", "defeatString" ],
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"defeatIconIndex": {
|
|
||||||
"type":"number"
|
|
||||||
},
|
|
||||||
"defeatString": {
|
|
||||||
"type":"string"
|
|
||||||
},
|
|
||||||
"victoryIconIndex" : {
|
"victoryIconIndex" : {
|
||||||
"type" : "number"
|
"type" : "number"
|
||||||
},
|
},
|
||||||
"victoryString" : {
|
"victoryString" : {
|
||||||
"type" : "string"
|
"type" : "string"
|
||||||
},
|
},
|
||||||
|
"defeatIconIndex" : {
|
||||||
|
"type" : "number"
|
||||||
|
},
|
||||||
|
"defeatString" : {
|
||||||
|
"type" : "string"
|
||||||
|
},
|
||||||
"triggeredEvents" : {
|
"triggeredEvents" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
|
|
||||||
"additionalProperties" : {
|
"additionalProperties" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : "false",
|
"additionalProperties" : false,
|
||||||
|
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"required" : [ "condition", "message", "effect" ],
|
"required" : [ "condition", "message", "effect" ],
|
||||||
|
|
||||||
"condition" : { "type" : "array" },
|
"condition" : { "type" : "array" },
|
||||||
|
|
||||||
"description" : { "type" : "string" },
|
"description" : { "type" : "string" },
|
||||||
"message" : { "type" : "string" },
|
"message" : { "type" : "string" },
|
||||||
"effect" : {
|
"effect" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
|
|
||||||
"required" : [ "type", "messageToSend" ],
|
"required" : [ "type", "messageToSend" ],
|
||||||
|
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"type" : { "type" : "string" },
|
"type" : { "type" : "string" },
|
||||||
"messageToSend" : { "type" : "string" }
|
"messageToSend" : { "type" : "string" }
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||||
"title" : "VCMI mod file format",
|
"title" : "VCMI mod file format",
|
||||||
"description" : "Format used to define main mod file (mod.json) in VCMI",
|
"description" : "Format used to define main mod file (mod.json) in VCMI",
|
||||||
"required" : [ "name", "description", "version", "author", "contact", "modType" ],
|
"required" : [ "name", "description", "modType", "version", "author", "contact" ],
|
||||||
"definitions" : {
|
"definitions" : {
|
||||||
"localizable" : {
|
"localizable" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
@@ -22,6 +22,14 @@
|
|||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Author of the mod. Can be nickname, real name or name of team"
|
"description" : "Author of the mod. Can be nickname, real name or name of team"
|
||||||
},
|
},
|
||||||
|
"changelog" : {
|
||||||
|
"type" : "object",
|
||||||
|
"description" : "List of changes/new features in each version",
|
||||||
|
"additionalProperties" : {
|
||||||
|
"type" : "array",
|
||||||
|
"items" : { "type" : "string" }
|
||||||
|
}
|
||||||
|
},
|
||||||
"skipValidation" : {
|
"skipValidation" : {
|
||||||
"type" : "boolean",
|
"type" : "boolean",
|
||||||
"description" : "If set to true, vcmi will skip validation of current translation json files"
|
"description" : "If set to true, vcmi will skip validation of current translation json files"
|
||||||
@@ -30,14 +38,6 @@
|
|||||||
"type" : "array",
|
"type" : "array",
|
||||||
"description" : "List of files with translations for this language",
|
"description" : "List of files with translations for this language",
|
||||||
"items" : { "type" : "string", "format" : "textFile" }
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
},
|
|
||||||
"changelog" : {
|
|
||||||
"type":"object",
|
|
||||||
"description": "List of changes/new features in each version",
|
|
||||||
"additionalProperties" : {
|
|
||||||
"type" : "array",
|
|
||||||
"items" : { "type":"string" }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -53,52 +53,38 @@
|
|||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "More lengthy description of mod. No hard limit"
|
"description" : "More lengthy description of mod. No hard limit"
|
||||||
},
|
},
|
||||||
|
|
||||||
"modType" : {
|
"modType" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"enum" : [ "Translation", "Town", "Test", "Templates", "Spells", "Music", "Sounds", "Skills", "Other", "Objects", "Mechanics", "Interface", "Heroes", "Graphical", "Expansion", "Creatures", "Artifacts", "AI" ],
|
"enum" : [ "Translation", "Town", "Test", "Templates", "Spells", "Music", "Sounds", "Skills", "Other", "Objects", "Mechanics", "Interface", "Heroes", "Graphical", "Expansion", "Creatures", "Artifacts", "AI" ],
|
||||||
"description" : "Type of mod, e.g. Town, Artifacts, Graphical."
|
"description" : "Type of mod, e.g. Town, Artifacts, Graphical."
|
||||||
},
|
},
|
||||||
|
|
||||||
"version" : {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Current mod version, up to 3 numbers, dot-separated. Format: A.B.C"
|
|
||||||
},
|
|
||||||
|
|
||||||
"author" : {
|
"author" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Author of the mod. Can be nickname, real name or name of team"
|
"description" : "Author of the mod. Can be nickname, real name or name of team"
|
||||||
},
|
},
|
||||||
|
|
||||||
"licenseName" : {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Name of the license, recommended is Creative Commons Attribution-ShareAlike"
|
|
||||||
},
|
|
||||||
|
|
||||||
"licenseURL" : {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Url to license text, e.g. http://creativecommons.org/licenses/by-sa/4.0/deed"
|
|
||||||
},
|
|
||||||
|
|
||||||
"contact" : {
|
"contact" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Home page of mod or link to forum thread"
|
"description" : "Home page of mod or link to forum thread"
|
||||||
},
|
},
|
||||||
|
"licenseName" : {
|
||||||
"language" : {
|
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description": "Base language of the mod, before applying localizations. By default vcmi assumes English",
|
"description" : "Name of the license, recommended is Creative Commons Attribution-ShareAlike"
|
||||||
"enum" : [ "chinese", "english", "korean", "german", "polish", "russian", "spanish", "ukrainian" ],
|
|
||||||
},
|
},
|
||||||
"depends": {
|
"licenseURL" : {
|
||||||
"type":"array",
|
"type" : "string",
|
||||||
"description": "List of mods that are required to run this one",
|
"description" : "Url to license text, e.g. http://creativecommons.org/licenses/by-sa/4.0/deed"
|
||||||
"items": { "type":"string" }
|
|
||||||
},
|
},
|
||||||
"conflicts": {
|
"version" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Current mod version, up to 3 numbers, dot-separated. Format: A.B.C"
|
||||||
|
},
|
||||||
|
"changelog" : {
|
||||||
|
"type" : "object",
|
||||||
|
"description" : "List of changes/new features in each version",
|
||||||
|
"additionalProperties" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"description": "List of mods that can't be enabled in the same time as this one",
|
|
||||||
"items" : { "type" : "string" }
|
"items" : { "type" : "string" }
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"compatibility" : {
|
"compatibility" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
@@ -117,11 +103,58 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"depends" : {
|
||||||
|
"type" : "array",
|
||||||
|
"description" : "List of mods that are required to run this one",
|
||||||
|
"items" : { "type" : "string" }
|
||||||
|
},
|
||||||
|
"conflicts" : {
|
||||||
|
"type" : "array",
|
||||||
|
"description" : "List of mods that can't be enabled in the same time as this one",
|
||||||
|
"items" : { "type" : "string" }
|
||||||
|
},
|
||||||
"keepDisabled" : {
|
"keepDisabled" : {
|
||||||
"type" : "boolean",
|
"type" : "boolean",
|
||||||
"description" : "If set to true, mod will not be enabled automatically on install"
|
"description" : "If set to true, mod will not be enabled automatically on install"
|
||||||
},
|
},
|
||||||
|
"settings" : {
|
||||||
|
"type" : "object",
|
||||||
|
"description" : "List of changed game settings by mod",
|
||||||
|
"additionalProperties" : {
|
||||||
|
"type" : "object",
|
||||||
|
"properties" : {
|
||||||
|
"type" : "object"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"filesystem" : {
|
||||||
|
"type" : "object",
|
||||||
|
"description" : "Optional, description on how files are organized in your mod. In most cases you do not need to use this field",
|
||||||
|
"additionalProperties" : {
|
||||||
|
"type" : "array",
|
||||||
|
"description" : "list of data sources attached to this mount point",
|
||||||
|
"items" : {
|
||||||
|
"type" : "object",
|
||||||
|
"additionalProperties" : false,
|
||||||
|
"properties" : {
|
||||||
|
"path" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Path to data source"
|
||||||
|
},
|
||||||
|
"type" : {
|
||||||
|
"type" : "string",
|
||||||
|
"enum" : [ "dir", "lod", "snd", "vid", "map", "zip" ],
|
||||||
|
"description" : "Type of data source"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"language" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Base language of the mod, before applying localizations. By default vcmi assumes English",
|
||||||
|
"enum" : [ "chinese", "english", "korean", "german", "polish", "russian", "spanish", "ukrainian" ]
|
||||||
|
},
|
||||||
"chinese" : {
|
"chinese" : {
|
||||||
"$ref" : "#/definitions/localizable"
|
"$ref" : "#/definitions/localizable"
|
||||||
},
|
},
|
||||||
@@ -151,22 +184,6 @@
|
|||||||
"description" : "List of files with translations for this language",
|
"description" : "List of files with translations for this language",
|
||||||
"items" : { "type" : "string", "format" : "textFile" }
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
},
|
},
|
||||||
"artifacts": {
|
|
||||||
"type":"array",
|
|
||||||
"description": "List of configuration files for artifacts",
|
|
||||||
"items": { "type":"string", "format" : "textFile" }
|
|
||||||
},
|
|
||||||
"bonuses":{
|
|
||||||
"type":"array",
|
|
||||||
"description": "List of configuration files for bonuses",
|
|
||||||
"items": { "type":"string", "format" : "textFile" }
|
|
||||||
|
|
||||||
},
|
|
||||||
"creatures": {
|
|
||||||
"type":"array",
|
|
||||||
"description": "List of configuration files for creatures",
|
|
||||||
"items": { "type":"string", "format" : "textFile" }
|
|
||||||
},
|
|
||||||
"factions" : {
|
"factions" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"description" : "List of configuration files for towns/factions",
|
"description" : "List of configuration files for towns/factions",
|
||||||
@@ -182,14 +199,19 @@
|
|||||||
"description" : "List of configuration files for heroes",
|
"description" : "List of configuration files for heroes",
|
||||||
"items" : { "type" : "string", "format" : "textFile" }
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
},
|
},
|
||||||
"objects": {
|
"skills" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"description": "List of configuration files for objects",
|
"description" : "List of configuration files for skills",
|
||||||
"items" : { "type" : "string", "format" : "textFile" }
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
},
|
},
|
||||||
"scripts": {
|
"creatures" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"description": "List of configuration files for scripts",
|
"description" : "List of configuration files for creatures",
|
||||||
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
|
},
|
||||||
|
"artifacts" : {
|
||||||
|
"type" : "array",
|
||||||
|
"description" : "List of configuration files for artifacts",
|
||||||
"items" : { "type" : "string", "format" : "textFile" }
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
},
|
},
|
||||||
"spells" : {
|
"spells" : {
|
||||||
@@ -197,26 +219,14 @@
|
|||||||
"description" : "List of configuration files for spells",
|
"description" : "List of configuration files for spells",
|
||||||
"items" : { "type" : "string", "format" : "textFile" }
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
},
|
},
|
||||||
"skills": {
|
"objects" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"description": "List of configuration files for skills",
|
"description" : "List of configuration files for objects",
|
||||||
"items" : { "type" : "string", "format" : "textFile" }
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
},
|
},
|
||||||
"templates":{
|
"bonuses" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"description": "List of configuration files for RMG templates",
|
"description" : "List of configuration files for bonuses",
|
||||||
"items": { "type":"string", "format" : "textFile" }
|
|
||||||
|
|
||||||
},
|
|
||||||
"battlefields":{
|
|
||||||
"type":"array",
|
|
||||||
"description": "List of configuration files for battlefields",
|
|
||||||
"items": { "type":"string", "format" : "textFile" }
|
|
||||||
|
|
||||||
},
|
|
||||||
"obstacles":{
|
|
||||||
"type":"array",
|
|
||||||
"description": "List of configuration files for obstacles",
|
|
||||||
"items" : { "type" : "string", "format" : "textFile" }
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
},
|
},
|
||||||
"terrains" : {
|
"terrains" : {
|
||||||
@@ -234,49 +244,25 @@
|
|||||||
"description" : "List of configuration files for rivers",
|
"description" : "List of configuration files for rivers",
|
||||||
"items" : { "type" : "string", "format" : "textFile" }
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
},
|
},
|
||||||
|
"battlefields" : {
|
||||||
"changelog" : {
|
|
||||||
"type":"object",
|
|
||||||
"description": "List of changes/new features in each version",
|
|
||||||
"additionalProperties" : {
|
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"items" : { "type":"string" }
|
"description" : "List of configuration files for battlefields",
|
||||||
}
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
},
|
},
|
||||||
|
"obstacles" : {
|
||||||
"settings" : {
|
|
||||||
"type":"object",
|
|
||||||
"description": "List of changed game settings by mod",
|
|
||||||
"additionalProperties" : {
|
|
||||||
"type" : "object",
|
|
||||||
"properties" : {
|
|
||||||
"type" : "object"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"filesystem": {
|
|
||||||
"type":"object",
|
|
||||||
"description": "Optional, description on how files are organized in your mod. In most cases you do not need to use this field",
|
|
||||||
"additionalProperties":{
|
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"description" : "list of data sources attached to this mount point",
|
"description" : "List of configuration files for obstacles",
|
||||||
"items": {
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
"type":"object",
|
|
||||||
"additionalProperties" : false,
|
|
||||||
"properties":{
|
|
||||||
"path": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Path to data source"
|
|
||||||
},
|
},
|
||||||
"type": {
|
"templates" : {
|
||||||
"type" : "string",
|
"type" : "array",
|
||||||
"enum" : [ "dir", "lod", "snd", "vid", "map", "zip" ],
|
"description" : "List of configuration files for RMG templates",
|
||||||
"description" : "Type of data source"
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
}
|
},
|
||||||
}
|
"scripts" : {
|
||||||
}
|
"type" : "array",
|
||||||
}
|
"description" : "List of configuration files for scripts",
|
||||||
|
"items" : { "type" : "string", "format" : "textFile" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -3,10 +3,13 @@
|
|||||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||||
"title" : "VCMI map object format",
|
"title" : "VCMI map object format",
|
||||||
"description" : "Description of map object class",
|
"description" : "Description of map object class",
|
||||||
"required": [ "handler", "name" ],
|
"required" : [ "name", "handler" ],
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
|
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
"name" : {
|
||||||
|
"type" : "string"
|
||||||
|
},
|
||||||
"index" : {
|
"index" : {
|
||||||
"type" : "number"
|
"type" : "number"
|
||||||
},
|
},
|
||||||
@@ -19,9 +22,6 @@
|
|||||||
"base" : {
|
"base" : {
|
||||||
"type" : "object"
|
"type" : "object"
|
||||||
},
|
},
|
||||||
"name": {
|
|
||||||
"type":"string"
|
|
||||||
},
|
|
||||||
"types" : {
|
"types" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : {
|
"additionalProperties" : {
|
||||||
|
@@ -4,7 +4,6 @@
|
|||||||
"title" : "VCMI map object template format",
|
"title" : "VCMI map object template format",
|
||||||
"description" : "Description of map object tempate that describes appearence of object instance",
|
"description" : "Description of map object tempate that describes appearence of object instance",
|
||||||
"required" : [ "animation", "mask" ],
|
"required" : [ "animation", "mask" ],
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"animation" : {
|
"animation" : {
|
||||||
@@ -24,16 +23,10 @@
|
|||||||
"maxItems" : 3,
|
"maxItems" : 3,
|
||||||
"items" : {
|
"items" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"maxLength" : 3,
|
"minLength" : 3,
|
||||||
"minLength" : 3
|
"maxLength" : 3
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"allowedTerrains" : {
|
|
||||||
"type":"array",
|
|
||||||
"items": { "type": "string" },
|
|
||||||
"description": "List of terrain on which this object can be placed"
|
|
||||||
},
|
|
||||||
"mask" : {
|
"mask" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"items" : { "type" : "string" },
|
"items" : { "type" : "string" },
|
||||||
@@ -42,6 +35,11 @@
|
|||||||
"zIndex" : {
|
"zIndex" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "Defines order in which objects on same tile will be blit."
|
"description" : "Defines order in which objects on same tile will be blit."
|
||||||
|
},
|
||||||
|
"allowedTerrains" : {
|
||||||
|
"type" : "array",
|
||||||
|
"items" : { "type" : "string" },
|
||||||
|
"description" : "List of terrain on which this object can be placed"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -5,7 +5,6 @@
|
|||||||
"description" : "Description of map object type, used only as sub-schema of object",
|
"description" : "Description of map object type, used only as sub-schema of object",
|
||||||
"required" : [ ],
|
"required" : [ ],
|
||||||
"additionalProperties" : true, // may have type-dependant properties
|
"additionalProperties" : true, // may have type-dependant properties
|
||||||
|
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"index" : {
|
"index" : {
|
||||||
"type" : "number"
|
"type" : "number"
|
||||||
@@ -13,6 +12,15 @@
|
|||||||
"aiValue" : {
|
"aiValue" : {
|
||||||
"type" : "number"
|
"type" : "number"
|
||||||
},
|
},
|
||||||
|
"base" : {
|
||||||
|
"type" : "object"
|
||||||
|
},
|
||||||
|
"templates" : {
|
||||||
|
"type" : "object",
|
||||||
|
"additionalProperties" : {
|
||||||
|
"$ref" : "objectTemplate.json"
|
||||||
|
}
|
||||||
|
},
|
||||||
"sounds" : {
|
"sounds" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
@@ -43,16 +51,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
|
|
||||||
"base": {
|
|
||||||
"type" : "object"
|
|
||||||
},
|
|
||||||
"templates": {
|
|
||||||
"type":"object",
|
|
||||||
"additionalProperties": {
|
|
||||||
"$ref" : "objectTemplate.json"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,7 +4,6 @@
|
|||||||
"title" : "VCMI obstacle format",
|
"title" : "VCMI obstacle format",
|
||||||
"description" : "Format used to define new obstacles in VCMI",
|
"description" : "Format used to define new obstacles in VCMI",
|
||||||
"required" : [ "animation" ],
|
"required" : [ "animation" ],
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"allowedTerrains" : {
|
"allowedTerrains" : {
|
||||||
@@ -17,6 +16,10 @@
|
|||||||
"description" : "Obstacles can be placed on specified specified battlefields",
|
"description" : "Obstacles can be placed on specified specified battlefields",
|
||||||
"items" : { "type" : "string" }
|
"items" : { "type" : "string" }
|
||||||
},
|
},
|
||||||
|
"absolute" : {
|
||||||
|
"type" : "boolean",
|
||||||
|
"description" : "Should be used absolute or relative coordinates for obstacle. There is possible only one absolute obstacle"
|
||||||
|
},
|
||||||
"width" : {
|
"width" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "Width ob obstacle"
|
"description" : "Width ob obstacle"
|
||||||
@@ -41,10 +44,6 @@
|
|||||||
"unknown" : {
|
"unknown" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "Unknown field"
|
"description" : "Unknown field"
|
||||||
},
|
|
||||||
"absolute": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "Should be used absolute or relative coordinates for obstacle. There is possible only one absolute obstacle"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -3,25 +3,19 @@
|
|||||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||||
"title" : "VCMI river format",
|
"title" : "VCMI river format",
|
||||||
"description" : "Format used to define new rivers in VCMI",
|
"description" : "Format used to define new rivers in VCMI",
|
||||||
"required" : [ "text", "shortIdentifier", "tilesFilename", "delta" ],
|
"required" : [ "shortIdentifier", "text", "tilesFilename", "delta" ],
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"index" :
|
"shortIdentifier" :
|
||||||
{
|
{
|
||||||
"type": "number",
|
"type" : "string",
|
||||||
"description": "Internal, do not use"
|
"description" : "Two-letters unique indentifier for this road. Used in map format"
|
||||||
},
|
},
|
||||||
"text" :
|
"text" :
|
||||||
{
|
{
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Human-readable name of the river"
|
"description" : "Human-readable name of the river"
|
||||||
},
|
},
|
||||||
"shortIdentifier":
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"description": "Two-letters unique indentifier for this road. Used in map format"
|
|
||||||
},
|
|
||||||
"tilesFilename" :
|
"tilesFilename" :
|
||||||
{
|
{
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
@@ -32,6 +26,11 @@
|
|||||||
{
|
{
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Name of file with river delta graphics"
|
"description" : "Name of file with river delta graphics"
|
||||||
|
},
|
||||||
|
"index" :
|
||||||
|
{
|
||||||
|
"type" : "number",
|
||||||
|
"description" : "Internal, do not use"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -3,25 +3,19 @@
|
|||||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||||
"title" : "VCMI road format",
|
"title" : "VCMI road format",
|
||||||
"description" : "Format used to define new roads in VCMI",
|
"description" : "Format used to define new roads in VCMI",
|
||||||
"required" : [ "text", "shortIdentifier", "tilesFilename", "moveCost" ],
|
"required" : [ "shortIdentifier", "text", "tilesFilename", "moveCost" ],
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"index" :
|
"shortIdentifier" :
|
||||||
{
|
{
|
||||||
"type": "number",
|
"type" : "string",
|
||||||
"description": "Internal, do not use"
|
"description" : "Two-letters unique indentifier for this road. Used in map format"
|
||||||
},
|
},
|
||||||
"text" :
|
"text" :
|
||||||
{
|
{
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Human-readable name of the road"
|
"description" : "Human-readable name of the road"
|
||||||
},
|
},
|
||||||
"shortIdentifier":
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"description": "Two-letters unique indentifier for this road. Used in map format"
|
|
||||||
},
|
|
||||||
"tilesFilename" :
|
"tilesFilename" :
|
||||||
{
|
{
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
@@ -32,6 +26,11 @@
|
|||||||
{
|
{
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "How many movement points needed to move hero"
|
"description" : "How many movement points needed to move hero"
|
||||||
|
},
|
||||||
|
"index" :
|
||||||
|
{
|
||||||
|
"type" : "number",
|
||||||
|
"description" : "Internal, do not use"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,13 +1,9 @@
|
|||||||
{
|
{
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||||
|
|
||||||
"title" : "VCMI script format",
|
"title" : "VCMI script format",
|
||||||
"description" : "Format used to configure script environment",
|
"description" : "Format used to configure script environment",
|
||||||
|
|
||||||
|
|
||||||
"required" : ["source"],
|
"required" : ["source"],
|
||||||
|
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"source" : {
|
"source" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
|
@@ -1,18 +1,18 @@
|
|||||||
{
|
{
|
||||||
|
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||||
|
|
||||||
"title" : "VCMI skill format",
|
"title" : "VCMI skill format",
|
||||||
"description" : "Format used to replace bonuses provided by secondary skills in VCMI",
|
"description" : "Format used to replace bonuses provided by secondary skills in VCMI",
|
||||||
|
|
||||||
"definitions" : {
|
"definitions" : {
|
||||||
|
|
||||||
"skillBonus" : {
|
"skillBonus" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"description" : "Set of bonuses provided by skill at given level",
|
"description" : "Set of bonuses provided by skill at given level",
|
||||||
"required" : ["description", "effects"],
|
"required" : ["description", "effects"],
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
"description" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "localizable description"
|
||||||
|
},
|
||||||
"images" : {
|
"images" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"description" : "skill icons of varying size",
|
"description" : "skill icons of varying size",
|
||||||
@@ -34,10 +34,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"description" : {
|
|
||||||
"type" : "string",
|
|
||||||
"description" : "localizable description"
|
|
||||||
},
|
|
||||||
"effects" : {
|
"effects" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : {
|
"additionalProperties" : {
|
||||||
@@ -46,20 +42,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
"required" : ["name", "basic", "advanced", "expert"],
|
"required" : ["name", "basic", "advanced", "expert"],
|
||||||
|
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"index" : {
|
|
||||||
"type": "number",
|
|
||||||
"description": "numeric id of skill, required for existing skills"
|
|
||||||
},
|
|
||||||
"name" : {
|
"name" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "localizable skill name"
|
"description" : "localizable skill name"
|
||||||
},
|
},
|
||||||
|
"index" : {
|
||||||
|
"type" : "number",
|
||||||
|
"description" : "numeric id of skill, required for existing skills"
|
||||||
|
},
|
||||||
"obligatoryMajor" : {
|
"obligatoryMajor" : {
|
||||||
"type" : "boolean",
|
"type" : "boolean",
|
||||||
"description" : "This skill is major obligatory (like H3 Wisdom)"
|
"description" : "This skill is major obligatory (like H3 Wisdom)"
|
||||||
|
@@ -1,12 +1,8 @@
|
|||||||
{
|
{
|
||||||
|
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||||
|
|
||||||
"title" : "VCMI spell format",
|
"title" : "VCMI spell format",
|
||||||
"description" : "Format used to define new spells in VCMI",
|
"description" : "Format used to define new spells in VCMI",
|
||||||
|
|
||||||
|
|
||||||
"definitions" : {
|
"definitions" : {
|
||||||
"animationQueue" : {
|
"animationQueue" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
@@ -44,8 +40,8 @@
|
|||||||
"items" : {
|
"items" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"minimumAngle": {"type":"number", "minimum" : 0},
|
"defName" : {"type" : "string", "format" : "defFile"},
|
||||||
"defName": {"type":"string", "format": "defFile"}
|
"minimumAngle" : {"type" : "number", "minimum" : 0}
|
||||||
},
|
},
|
||||||
"additionalProperties" : false
|
"additionalProperties" : false
|
||||||
}
|
}
|
||||||
@@ -60,7 +56,7 @@
|
|||||||
},
|
},
|
||||||
"levelInfo" : {
|
"levelInfo" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"required":["range","description","cost","power","aiValue","range"],
|
"required" :["range", "description", "cost", "power", "aiValue"],
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
@@ -75,14 +71,13 @@
|
|||||||
"power" : {
|
"power" : {
|
||||||
"type" : "number"
|
"type" : "number"
|
||||||
},
|
},
|
||||||
"aiValue":{
|
|
||||||
"type": "number"
|
|
||||||
},
|
|
||||||
|
|
||||||
"range" : {
|
"range" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "spell range description in SRSL"
|
"description" : "spell range description in SRSL"
|
||||||
},
|
},
|
||||||
|
"aiValue" : {
|
||||||
|
"type" : "number"
|
||||||
|
},
|
||||||
"effects" : {
|
"effects" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"description" : "Timed effects (updated by prolongation)",
|
"description" : "Timed effects (updated by prolongation)",
|
||||||
@@ -125,46 +120,37 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"texts" : {
|
"texts" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
|
|
||||||
|
|
||||||
"additionalProperties" : false
|
"additionalProperties" : false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"required" : ["type", "name", "school", "level", "power","gainChance","flags","levels"],
|
"required" : ["type", "name", "school", "level", "power","gainChance","flags","levels"],
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
|
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"index" : {
|
"index" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "numeric id of spell required only for original spells, prohibited for new spells"
|
"description" : "numeric id of spell required only for original spells, prohibited for new spells"
|
||||||
},
|
},
|
||||||
|
"name" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Localizable name"
|
||||||
|
},
|
||||||
"type" : {
|
"type" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"enum" : ["adventure", "combat", "ability"],
|
"enum" : ["adventure", "combat", "ability"],
|
||||||
"description" : "Spell type"
|
"description" : "Spell type"
|
||||||
},
|
},
|
||||||
"name":{
|
|
||||||
"type": "string",
|
|
||||||
"description": "Localizable name"
|
|
||||||
|
|
||||||
},
|
|
||||||
"school" : {
|
"school" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"description" : "Spell schools",
|
"description" : "Spell schools",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
|
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
|
||||||
"air" : {"type" : "boolean"},
|
"air" : {"type" : "boolean"},
|
||||||
"fire" : {"type" : "boolean"},
|
"fire" : {"type" : "boolean"},
|
||||||
"earth" : {"type" : "boolean"},
|
"earth" : {"type" : "boolean"},
|
||||||
"water" : {"type" : "boolean"}
|
"water" : {"type" : "boolean"}
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
"level" : {
|
"level" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
@@ -172,18 +158,15 @@
|
|||||||
"minimum" : 0,
|
"minimum" : 0,
|
||||||
"maximum" : 5
|
"maximum" : 5
|
||||||
},
|
},
|
||||||
|
|
||||||
"power" : {
|
"power" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "Base power"
|
"description" : "Base power"
|
||||||
},
|
},
|
||||||
|
|
||||||
"defaultGainChance" : {
|
"defaultGainChance" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "Gain chance by default for all factions"
|
"description" : "Gain chance by default for all factions"
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
"gainChance" : {
|
"gainChance" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"description" : "Chance in % to gain for faction. NOTE: this field is merged with faction config",
|
"description" : "Chance in % to gain for faction. NOTE: this field is merged with faction config",
|
||||||
@@ -261,26 +244,10 @@
|
|||||||
"additionalProperties" : true
|
"additionalProperties" : true
|
||||||
},
|
},
|
||||||
"animation" : {"$ref" : "#/definitions/animation"},
|
"animation" : {"$ref" : "#/definitions/animation"},
|
||||||
|
|
||||||
"graphics" : {
|
"graphics" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"iconImmune":{
|
|
||||||
"type": "string",
|
|
||||||
"description": "Resourse path of icon for SPELL_IMMUNITY bonus (relative to DATA or SPRITES)",
|
|
||||||
"format" : "imageFile"
|
|
||||||
},
|
|
||||||
"iconScenarioBonus":{
|
|
||||||
"type": "string",
|
|
||||||
"description": "Resourse path of icon for scenario bonus" ,
|
|
||||||
"format" : "imageFile"
|
|
||||||
},
|
|
||||||
"iconEffect":{
|
|
||||||
"type": "string",
|
|
||||||
"description": "Resourse path of icon for spell effects during battle" ,
|
|
||||||
"format" : "imageFile"
|
|
||||||
},
|
|
||||||
"iconBook" : {
|
"iconBook" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Resourse path of icon for spellbook" ,
|
"description" : "Resourse path of icon for spellbook" ,
|
||||||
@@ -290,11 +257,24 @@
|
|||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Resourse path of icon for spell scrolls",
|
"description" : "Resourse path of icon for spell scrolls",
|
||||||
"format" : "imageFile"
|
"format" : "imageFile"
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
"iconEffect" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Resourse path of icon for spell effects during battle" ,
|
||||||
|
"format" : "imageFile"
|
||||||
|
},
|
||||||
|
"iconImmune" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Resourse path of icon for SPELL_IMMUNITY bonus (relative to DATA or SPRITES)",
|
||||||
|
"format" : "imageFile"
|
||||||
|
},
|
||||||
|
"iconScenarioBonus" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Resourse path of icon for scenario bonus" ,
|
||||||
|
"format" : "imageFile"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"sounds" : {
|
"sounds" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
@@ -305,12 +285,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"levels" : {
|
"levels" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"required" : ["none", "basic", "advanced", "expert"],
|
"required" : ["none", "basic", "advanced", "expert"],
|
||||||
|
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"base" : {
|
"base" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
|
@@ -1,12 +1,8 @@
|
|||||||
{
|
{
|
||||||
|
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"$schema": "",
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||||
|
|
||||||
"title" : "VCMI random map template format",
|
"title" : "VCMI random map template format",
|
||||||
"description" : "Format used to define random map templates in VCMI",
|
"description" : "Format used to define random map templates in VCMI",
|
||||||
|
|
||||||
|
|
||||||
"definitions" :
|
"definitions" :
|
||||||
{
|
{
|
||||||
"zone" : {
|
"zone" : {
|
||||||
@@ -35,14 +31,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type" : {
|
"type" : {
|
||||||
"enum": ["playerStart", "cpuStart", "treasure", "junction"],
|
"type" : "string",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"type":"string"
|
"enum" : ["playerStart", "cpuStart", "treasure", "junction"]
|
||||||
},
|
},
|
||||||
"size" : {
|
"size" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"minimum" : 1,
|
"minimum" : 1,
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false
|
||||||
},
|
},
|
||||||
"connection" :
|
"connection" :
|
||||||
{
|
{
|
||||||
@@ -68,9 +64,10 @@
|
|||||||
"type" : "string"
|
"type" : "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"properties" :
|
"properties" :
|
||||||
{
|
{
|
||||||
|
"required" : ["zones", "connections"],
|
||||||
|
"additionalProperties" : false,
|
||||||
"zones" : {
|
"zones" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : {"$ref" : "#/definitions/zone" }
|
"additionalProperties" : {"$ref" : "#/definitions/zone" }
|
||||||
@@ -82,8 +79,6 @@
|
|||||||
"allowedWaterContent" : {
|
"allowedWaterContent" : {
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
"items" : {"$ref" : "#/definitions/waterContent"}
|
"items" : {"$ref" : "#/definitions/waterContent"}
|
||||||
},
|
}
|
||||||
"required" : ["zones", "connections"],
|
|
||||||
"additionalProperties" : false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,24 +4,58 @@
|
|||||||
"title" : "VCMI terrain format",
|
"title" : "VCMI terrain format",
|
||||||
"description" : "Format used to define new terrains in VCMI",
|
"description" : "Format used to define new terrains in VCMI",
|
||||||
"required" : [ "text", "moveCost", "minimapUnblocked", "minimapBlocked", "music", "tiles", "type", "horseSound", "horseSoundPenalty", "shortIdentifier", "battleFields" ],
|
"required" : [ "text", "moveCost", "minimapUnblocked", "minimapBlocked", "music", "tiles", "type", "horseSound", "horseSoundPenalty", "shortIdentifier", "battleFields" ],
|
||||||
|
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"index" :
|
|
||||||
{
|
|
||||||
"type": "number",
|
|
||||||
"description": "Internal, do not use"
|
|
||||||
},
|
|
||||||
"text" :
|
"text" :
|
||||||
{
|
{
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Human-readable name of this terrain"
|
"description" : "Human-readable name of this terrain"
|
||||||
},
|
},
|
||||||
|
"shortIdentifier" :
|
||||||
|
{
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Two-letters unique indentifier for this terrain. Used for map format"
|
||||||
|
},
|
||||||
|
"type" :
|
||||||
|
{
|
||||||
|
"type" : "array",
|
||||||
|
"description" : "Type of this terrain. Can be land, water, subterranean or rock",
|
||||||
|
"items" :
|
||||||
|
{
|
||||||
|
"enum" : ["LAND", "WATER", "SUB", "ROCK", "SURFACE"],
|
||||||
|
"type" : "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
"moveCost" :
|
"moveCost" :
|
||||||
{
|
{
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "How many movement points needed to move hero"
|
"description" : "How many movement points needed to move hero"
|
||||||
},
|
},
|
||||||
|
"tiles" :
|
||||||
|
{
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Name of file with graphicks",
|
||||||
|
"format" : "defFile"
|
||||||
|
},
|
||||||
|
"rockTerrain" :
|
||||||
|
{
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "The name of rock type terrain which will be used as borders in the underground"
|
||||||
|
},
|
||||||
|
"river" :
|
||||||
|
{
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "River type which should be used for that terrain"
|
||||||
|
},
|
||||||
|
"battleFields" :
|
||||||
|
{
|
||||||
|
"type" : "array",
|
||||||
|
"description" : "array of battleFields for this terrain",
|
||||||
|
"items" :
|
||||||
|
{
|
||||||
|
"type" : "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
"minimapUnblocked" :
|
"minimapUnblocked" :
|
||||||
{
|
{
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
@@ -50,58 +84,6 @@
|
|||||||
"description" : "Music filename to play on this terrain on adventure map",
|
"description" : "Music filename to play on this terrain on adventure map",
|
||||||
"format" : "musicFile"
|
"format" : "musicFile"
|
||||||
},
|
},
|
||||||
"tiles":
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"description": "Name of file with graphicks",
|
|
||||||
"format": "defFile"
|
|
||||||
},
|
|
||||||
"type":
|
|
||||||
{
|
|
||||||
"type": "array",
|
|
||||||
"description": "Type of this terrain. Can be land, water, subterranean or rock",
|
|
||||||
"items":
|
|
||||||
{
|
|
||||||
"enum": ["LAND", "WATER", "SUB", "ROCK", "SURFACE"],
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rockTerrain":
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"description": "The name of rock type terrain which will be used as borders in the underground"
|
|
||||||
},
|
|
||||||
"river":
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"description": "River type which should be used for that terrain"
|
|
||||||
},
|
|
||||||
"horseSound":
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"description": "Hero movement sound for this terrain, version for moving on tiles with road",
|
|
||||||
"format": "soundFile"
|
|
||||||
},
|
|
||||||
"horseSoundPenalty":
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"description": "Hero movement sound for this terrain, version for moving on tiles without road",
|
|
||||||
"format": "soundFile"
|
|
||||||
},
|
|
||||||
"shortIdentifier":
|
|
||||||
{
|
|
||||||
"type": "string",
|
|
||||||
"description": "Two-letters unique indentifier for this terrain. Used for map format"
|
|
||||||
},
|
|
||||||
"battleFields":
|
|
||||||
{
|
|
||||||
"type": "array",
|
|
||||||
"description": "array of battleFields for this terrain",
|
|
||||||
"items":
|
|
||||||
{
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sounds" :
|
"sounds" :
|
||||||
{
|
{
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
@@ -121,6 +103,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"horseSound" :
|
||||||
|
{
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Hero movement sound for this terrain, version for moving on tiles with road",
|
||||||
|
"format" : "soundFile"
|
||||||
|
},
|
||||||
|
"horseSoundPenalty" :
|
||||||
|
{
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Hero movement sound for this terrain, version for moving on tiles without road",
|
||||||
|
"format" : "soundFile"
|
||||||
|
},
|
||||||
"prohibitTransitions" :
|
"prohibitTransitions" :
|
||||||
{
|
{
|
||||||
"type" : "array",
|
"type" : "array",
|
||||||
@@ -139,6 +133,11 @@
|
|||||||
{
|
{
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Can be normal, dirt, water, rock"
|
"description" : "Can be normal, dirt, water, rock"
|
||||||
|
},
|
||||||
|
"index" :
|
||||||
|
{
|
||||||
|
"type" : "number",
|
||||||
|
"description" : "Internal, do not use"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -4,7 +4,6 @@
|
|||||||
"$schema" : "http://json-schema.org/draft-04/schema",
|
"$schema" : "http://json-schema.org/draft-04/schema",
|
||||||
"title" : "VCMI town building format",
|
"title" : "VCMI town building format",
|
||||||
"description" : "Format used to define town buildings in VCMI",
|
"description" : "Format used to define town buildings in VCMI",
|
||||||
|
|
||||||
"definitions" :
|
"definitions" :
|
||||||
{
|
{
|
||||||
"buildingRequirement" : {
|
"buildingRequirement" : {
|
||||||
@@ -22,34 +21,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"properties" : {
|
"properties" : {
|
||||||
"id" : {
|
"id" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "Numeric identifier of this building"
|
"description" : "Numeric identifier of this building"
|
||||||
},
|
},
|
||||||
"type": {
|
|
||||||
"type":"string",
|
|
||||||
"description" : "Subtype for some special buildings"
|
|
||||||
},
|
|
||||||
"height": {
|
|
||||||
"type":"string",
|
|
||||||
"enum" : [ "skyship", "high", "average", "low"],
|
|
||||||
"description" : "Height for lookout towers and some grails"
|
|
||||||
},
|
|
||||||
"mode": {
|
|
||||||
"type":"string",
|
|
||||||
"enum" : [ "normal", "auto", "special", "grail" ],
|
|
||||||
"description" : "Mode in which this building will be built"
|
|
||||||
},
|
|
||||||
"requires": {
|
|
||||||
"$ref" : "#/definitions/buildingRequirement",
|
|
||||||
"description" : "List of town buildings that must be built before this one"
|
|
||||||
},
|
|
||||||
"upgrades": {
|
|
||||||
"description" : "If this building is upgrade, identifier of base building",
|
|
||||||
"type":"string"
|
|
||||||
},
|
|
||||||
"name" : {
|
"name" : {
|
||||||
"description" : "Name of this building",
|
"description" : "Name of this building",
|
||||||
"type" : "string"
|
"type" : "string"
|
||||||
@@ -58,18 +34,40 @@
|
|||||||
"description" : "Full decsription of this building",
|
"description" : "Full decsription of this building",
|
||||||
"type" : "string"
|
"type" : "string"
|
||||||
},
|
},
|
||||||
|
"type" : {
|
||||||
|
"type" : "string",
|
||||||
|
"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" : "If this building is upgrade, identifier of base building",
|
||||||
|
"type" : "string"
|
||||||
|
},
|
||||||
"cost" : {
|
"cost" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"description" : "Cost to build this building",
|
"description" : "Cost to build this building",
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
"gold" : { "type" : "number"},
|
||||||
"wood" : { "type" : "number"},
|
"wood" : { "type" : "number"},
|
||||||
"mercury": { "type":"number"},
|
|
||||||
"ore" : { "type" : "number"},
|
"ore" : { "type" : "number"},
|
||||||
|
"mercury" : { "type" : "number"},
|
||||||
"sulfur" : { "type" : "number"},
|
"sulfur" : { "type" : "number"},
|
||||||
"crystal" : { "type" : "number"},
|
"crystal" : { "type" : "number"},
|
||||||
"gems": { "type":"number"},
|
"gems" : { "type" : "number"}
|
||||||
"gold": { "type":"number"}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"produce" : {
|
"produce" : {
|
||||||
@@ -77,13 +75,13 @@
|
|||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"description" : "Resources this building produce each day",
|
"description" : "Resources this building produce each day",
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
"gold" : { "type" : "number"},
|
||||||
"wood" : { "type" : "number"},
|
"wood" : { "type" : "number"},
|
||||||
"mercury": { "type":"number"},
|
|
||||||
"ore" : { "type" : "number"},
|
"ore" : { "type" : "number"},
|
||||||
|
"mercury" : { "type" : "number"},
|
||||||
"sulfur" : { "type" : "number"},
|
"sulfur" : { "type" : "number"},
|
||||||
"crystal" : { "type" : "number"},
|
"crystal" : { "type" : "number"},
|
||||||
"gems": { "type":"number"},
|
"gems" : { "type" : "number"}
|
||||||
"gold": { "type":"number"}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"overrides" : {
|
"overrides" : {
|
||||||
|
@@ -5,11 +5,9 @@
|
|||||||
"title" : "VCMI siege screen format",
|
"title" : "VCMI siege screen format",
|
||||||
"description" : "Format used to define town siege screen in VCMI",
|
"description" : "Format used to define town siege screen in VCMI",
|
||||||
"required" : [
|
"required" : [
|
||||||
"gate", "imagePrefix", "moat", "shooter",
|
"shooter", "towerIconLarge", "towerIconSmall", "imagePrefix",
|
||||||
"towerIconLarge", "towerIconSmall",
|
"static", "towers", "walls", "gate", "moat"
|
||||||
"static", "towers", "walls"
|
|
||||||
],
|
],
|
||||||
|
|
||||||
"definitions" :
|
"definitions" :
|
||||||
{
|
{
|
||||||
"point" : {
|
"point" : {
|
||||||
@@ -26,6 +24,10 @@
|
|||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"required" : [ "battlement", "creature", "tower" ],
|
"required" : [ "battlement", "creature", "tower" ],
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
"tower" : {
|
||||||
|
"description" : "Location of main segment of tower",
|
||||||
|
"$ref" : "#/definitions/point"
|
||||||
|
},
|
||||||
"battlement" : {
|
"battlement" : {
|
||||||
"description" : "Location of battlement, part of tower that covers shooter",
|
"description" : "Location of battlement, part of tower that covers shooter",
|
||||||
"$ref" : "#/definitions/point"
|
"$ref" : "#/definitions/point"
|
||||||
@@ -33,16 +35,81 @@
|
|||||||
"creature" : {
|
"creature" : {
|
||||||
"description" : "Location of shooter in tower",
|
"description" : "Location of shooter in tower",
|
||||||
"$ref" : "#/definitions/point"
|
"$ref" : "#/definitions/point"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"tower": {
|
"properties" : {
|
||||||
"description" : "Location of main segment of tower",
|
"shooter" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Identifier of creature that will be used as tower shooter"
|
||||||
|
},
|
||||||
|
"towerIconSmall" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Small icon for tower, used in battle queue",
|
||||||
|
"format" : "imageFile"
|
||||||
|
},
|
||||||
|
"towerIconLarge" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Large icon for tower, used in battle queue",
|
||||||
|
"format" : "imageFile"
|
||||||
|
},
|
||||||
|
"imagePrefix" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : "Prefix to all images related to siege screen"
|
||||||
|
},
|
||||||
|
"static" : {
|
||||||
|
"type" : "object",
|
||||||
|
"additionalProperties" : false,
|
||||||
|
"description" : "Static sections of walls",
|
||||||
|
"properties" : {
|
||||||
|
"background" : {
|
||||||
|
"description" : "Very top section of the wall located above hero",
|
||||||
|
"$ref" : "#/definitions/point"
|
||||||
|
},
|
||||||
|
"top" : {
|
||||||
|
"description" : "Top section located between destructible sections",
|
||||||
|
"$ref" : "#/definitions/point"
|
||||||
|
},
|
||||||
|
"bottom" : {
|
||||||
|
"description" : "Bottom section located between destructible sections",
|
||||||
"$ref" : "#/definitions/point"
|
"$ref" : "#/definitions/point"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"towers" : {
|
||||||
|
"type" : "object",
|
||||||
|
"additionalProperties" : false,
|
||||||
|
"description" : "Decription of towers",
|
||||||
|
"properties" : {
|
||||||
|
"top" : { "$ref" : "#/definitions/tower", "description" : "Top tower" },
|
||||||
|
"keep" : { "$ref" : "#/definitions/tower", "description" : "Central keep" },
|
||||||
|
"bottom" : { "$ref" : "#/definitions/tower", "description" : "Bottom tower" }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"walls" : {
|
||||||
|
"type" : "object",
|
||||||
|
"additionalProperties" : false,
|
||||||
|
"description" : "Destructible sections of the walls",
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
"upper" : {
|
||||||
|
"description" : "Topmost section located near top tower",
|
||||||
|
"$ref" : "#/definitions/point"
|
||||||
|
},
|
||||||
|
"upperMid" : {
|
||||||
|
"description" : "Second from top section located near gates",
|
||||||
|
"$ref" : "#/definitions/point"
|
||||||
|
},
|
||||||
|
"bottomMid" : {
|
||||||
|
"description" : "Second from bottom section located near gates",
|
||||||
|
"$ref" : "#/definitions/point"
|
||||||
|
},
|
||||||
|
"bottom" : {
|
||||||
|
"description" : "Bottommost section located near bottom tower",
|
||||||
|
"$ref" : "#/definitions/point"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"gate" : {
|
"gate" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
@@ -58,10 +125,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"imagePrefix": {
|
|
||||||
"type":"string",
|
|
||||||
"description" : "Prefix to all images related to siege screen"
|
|
||||||
},
|
|
||||||
"moat" : {
|
"moat" : {
|
||||||
"type" : "object",
|
"type" : "object",
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
@@ -76,72 +139,6 @@
|
|||||||
"$ref" : "#/definitions/point"
|
"$ref" : "#/definitions/point"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"shooter": {
|
|
||||||
"type":"string",
|
|
||||||
"description" : "Identifier of creature that will be used as tower shooter"
|
|
||||||
},
|
|
||||||
"towerIconSmall": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Small icon for tower, used in battle queue",
|
|
||||||
"format" : "imageFile"
|
|
||||||
},
|
|
||||||
"towerIconLarge": {
|
|
||||||
"type":"string",
|
|
||||||
"description": "Large icon for tower, used in battle queue",
|
|
||||||
"format" : "imageFile"
|
|
||||||
},
|
|
||||||
"static": {
|
|
||||||
"type":"object",
|
|
||||||
"additionalProperties" : false,
|
|
||||||
"description" : "Static sections of walls",
|
|
||||||
"properties":{
|
|
||||||
"background": {
|
|
||||||
"description" : "Very top section of the wall located above hero",
|
|
||||||
"$ref" : "#/definitions/point"
|
|
||||||
},
|
|
||||||
"bottom": {
|
|
||||||
"description" : "Bottom section located between destructible sections",
|
|
||||||
"$ref" : "#/definitions/point"
|
|
||||||
},
|
|
||||||
"top": {
|
|
||||||
"description" : "Top section located between destructible sections",
|
|
||||||
"$ref" : "#/definitions/point"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"towers": {
|
|
||||||
"type":"object",
|
|
||||||
"additionalProperties" : false,
|
|
||||||
"description" : "Decription of towers",
|
|
||||||
"properties":{
|
|
||||||
"bottom": { "$ref" : "#/definitions/tower", "description" : "Bottom tower" },
|
|
||||||
"keep": { "$ref" : "#/definitions/tower", "description" : "Central keep" },
|
|
||||||
"top": { "$ref" : "#/definitions/tower", "description" : "Top tower" }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"walls": {
|
|
||||||
"type":"object",
|
|
||||||
"additionalProperties" : false,
|
|
||||||
"description" : "Destructible sections of the walls",
|
|
||||||
"properties":{
|
|
||||||
"bottomMid": {
|
|
||||||
"description" : "Second from bottom section located near gates",
|
|
||||||
"$ref" : "#/definitions/point"
|
|
||||||
},
|
|
||||||
"bottom": {
|
|
||||||
"description" : "Bottommost section located near bottom tower",
|
|
||||||
"$ref" : "#/definitions/point"
|
|
||||||
},
|
|
||||||
"upperMid": {
|
|
||||||
"description" : "Second from top section located near gates",
|
|
||||||
"$ref" : "#/definitions/point"
|
|
||||||
},
|
|
||||||
"upper": {
|
|
||||||
"description" : "Topmost section located near top tower",
|
|
||||||
"$ref" : "#/definitions/point"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -6,6 +6,14 @@
|
|||||||
"required" : [ "animation", "x", "y"],
|
"required" : [ "animation", "x", "y"],
|
||||||
"additionalProperties" : false,
|
"additionalProperties" : false,
|
||||||
"properties" : {
|
"properties" : {
|
||||||
|
"builds" : {
|
||||||
|
"type" : "string",
|
||||||
|
"description" : ""
|
||||||
|
},
|
||||||
|
"hidden" : {
|
||||||
|
"type" : "boolean",
|
||||||
|
"description" : "If upgrade, this building will replace parent animation but will not alter its behaviour"
|
||||||
|
},
|
||||||
"animation" : {
|
"animation" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
"description" : "Main animation file for this building",
|
"description" : "Main animation file for this building",
|
||||||
@@ -21,14 +29,6 @@
|
|||||||
"description" : "Golden border around building, displayed when building is selected",
|
"description" : "Golden border around building, displayed when building is selected",
|
||||||
"format" : "imageFile"
|
"format" : "imageFile"
|
||||||
},
|
},
|
||||||
"builds": {
|
|
||||||
"type" : "string",
|
|
||||||
"description" : ""
|
|
||||||
},
|
|
||||||
"hidden": {
|
|
||||||
"type":"boolean",
|
|
||||||
"description" : "If upgrade, this building will replace parent animation but will not alter its behaviour"
|
|
||||||
},
|
|
||||||
"x" : {
|
"x" : {
|
||||||
"type" : "number",
|
"type" : "number",
|
||||||
"description" : "Position on screen"
|
"description" : "Position on screen"
|
||||||
|
Reference in New Issue
Block a user