Difference between revisions of "Creature Format"

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

Latest revision as of 16:24, 16 July 2024

Logo256.png    Page moved to VCMI-Homepage