1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-22 22:13:35 +02:00
vcmi/docs/modders/Entities_Format/Hero_Class_Format.md
Ivan Savenko 879aaba980 Use json instead of json5 for syntax highlight in docs
Looks like website only recognizes javascript & json, and is not aware
of jsonc or json5.

Will result in small regression on Github web view - comments will show
up as red (since comments are not part of json format), but syntax
highlight would work both on website and on Github.

Alternative is using javascript for syntax highlight, however syntax
highlighter for json looks better on both website and Github (since it
uses separate highlighting for json keys, separate from strings in
values)
2024-12-04 16:50:01 +00:00

2.6 KiB

Hero Class Format

Required data

In order to make functional hero class you also need:

  • Adventure animation (1 def file)
  • Battle animation, male and female version (2 def files)

Format

// Unique identifier of hero class, camelCase
"myClassName" :
{
	// Various hero animations
	"animation"
	{
		"battle" : 
		{
			// Battle animation for female heroes
			"female" : "myMod/battle/heroFemale",

			// Battle animation for male heroes, can be same as female
			"male"   : "myMod/battle/heroMale"
		}
	},

	// Description of map object representing this hero class.
	"mapObject" : {
		// Optional, hero ID-base filter, using same rules as building requirements
		"filters" : {
			"mutare" : [ "anyOf", [ "mutare" ], [ "mutareDrake" ]]
		},

		// List of templates used for this object, normally - only one is needed. See map template format for details
		"templates" : {
			"normal" : { "animation" : "AH00_.def" }
		}
	},

	// Translatable name of hero class
	"name" : "My hero class",

	// Identifier of faction this class belongs to
	"faction" : "myFaction",

	// Identifier of creature that should be used as commander for this hero class
	// Can be a regular creature that has shooting animation
	"commander" : "mage",

	// Affinity of this class, might or magic
	"affinity" : "might",

	// Initial primary skills of heroes
	"primarySkills" :
	{
		"attack"     : 2,
		"defence"    : 0,
		"spellpower" : 1,
		"knowledge"  : 2
	},

	// Chance to get specific primary skill on level-up, applicable for levels less than 10
	"lowLevelChance" :
	{
		"attack"     : 15,
		"defence"    : 10,
		"spellpower" : 50,
		"knowledge"  : 25
	},

	// Chance to get specific primary skill on level-up, applicable for levels starting from 10
	"highLevelChance" :
	{
		"attack"     : 25,
		"defence"    : 5,
		"spellpower" : 45,
		"knowledge"  : 25
	},

	// Chance to get specific secondary skill on level-up
	// All missing skills are considered to be banned, including universities
	"secondarySkills" :
	{
		"pathfinding"  : 3.
		"archery"      : 6.
		 ...
		"resistance"   : 5,
		"firstAid"     : 4
	},

	// Chance for a this hero class to appear in a town, creates pair with same field in town format 
	// Used for situations where chance was not set in "tavern" field, chance will be determined as:
	// square root( town tavern chance * hero class tavern chance )
	"defaultTavern" : 5,

	// Chance for this hero to appear in tavern of this factions.
	// Reversed version of field "tavern" from town format
	// If faction-class pair is not listed in any of them
	// chance set to 0 and the class won't appear in tavern of this town
	"tavern" :
	{
		"castle"     : 4,
		 ...
		"conflux"    : 6
	}
}