Difference between revisions of "Object instance format"

From VCMI Project Wiki
Jump to: navigation, search
(OH3 objects)
(Hero)
 
(150 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
Part of [[Map format]]
 +
 
= Base formats =  
 
= Base formats =  
 
== Owner format ==
 
== Owner format ==
All ownable objects
+
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
All flaggable objects
 +
 
  
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
{
 
{
//mandatory
+
//optional, default neutral
 
"owner": "red"
 
"owner": "red"
 +
}
 +
</syntaxhighlight>
 +
 +
== Stack instance format ==
 +
* editor {{done}}
 +
* engine {{done}}
 +
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"amount" : 1,
 +
"type" : "skeleton",
 +
"level": 1, //optional, for random objects
 +
"upgraded": true  //optional, for random objects
 +
}
 +
</syntaxhighlight>
 +
 +
== Army format ==
 +
* editor {{done}}
 +
* engine {{done}}
 +
<syntaxhighlight lang="javascript">
 +
[
 +
  {< Stack instance format>},
 +
  {}
 +
  //...
 +
]
 +
</syntaxhighlight>
 +
 +
== Quest format ==
 +
* editor {{done}}
 +
* engine {{done}}
 +
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"artifacts" : [],
 +
"completedText" : "",
 +
"creatures" : [], //army format
 +
"firstVisitText" : "",
 +
"hero" : "",
 +
"heroLevel" : -1,
 +
"killTarget" : "monster_666",
 +
"missionType" : "KillCreature",//None, Level, PrimaryStat, KillHero, KillCreature, Artifact, Army, Resources, Hero, Player, Custom
 +
"nextVisitText" : "",
 +
"player" : "",
 +
"primarySkills" : {
 +
"attack" : 10,
 +
"defence" : 10,
 +
//"knowledge" : -1,
 +
//"spellpower" : -1
 +
},
 +
"resources" : {
 +
"crystal" : 0,
 +
"gems" : 0,
 +
"gold" : 0,
 +
"mercury" : 0,
 +
"mithril" : 0,
 +
"ore" : 0,
 +
"sulfur" : 0,
 +
"wood" : 0
 +
},
 +
"timeLimit" : 5,
 +
"custom_x" :{<Quest format v2>}
 +
}
 +
</syntaxhighlight>
 +
 +
== Quest format 2 ==
 +
''Proposed extension''
 +
 +
Logical condition based.
 +
 +
* editor {{todo}}
 +
* engine {{todo}}
 +
<syntaxhighlight lang="javascript">
 +
{
 +
//TODO:
 +
}
 +
</syntaxhighlight>
 +
 +
== Reward format ==
 +
''Proposed extension''
 +
 +
* editor {{done}}
 +
* engine {{todo}}
 +
** seer hut case {{done}}
 +
 +
identifier = [scope ":"] type ["." subtype]
 +
 +
Possible types
 +
* artifact
 +
* creature
 +
* resource
 +
* primarySkill
 +
* secondarySkill
 +
* spell
 +
* luck
 +
* morale
 +
* mana
 +
* movement
 +
 +
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"resource.gold" : 1000,
 +
"morale" : -1,
 +
"wog:creature.supremeArchangel" : 9999
 +
//...
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 13: Line 124:
  
 
== Abandoned mine  ==
 
== Abandoned mine  ==
{{todo}}
+
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"possibleResources" : [
 +
"crystal",
 +
"gems",
 +
"gold",
 +
"mercury",
 +
"ore",
 +
"sulfur"
 +
]
 +
}
 +
</syntaxhighlight>
  
 
== Artifact ==
 
== Artifact ==
{{todo}}
+
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"guardMessage" : "",
 +
"guards" : []//Army format
 +
}
 +
</syntaxhighlight>
  
 
== Creature generator ==
 
== Creature generator ==
{{todo}}
+
See owner format
  
 
== Garrison ==
 
== Garrison ==
{{todo}}
+
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"army" : [], //army format
 +
"owner" : "",
 +
"removableUnits" : true
 +
}
 +
</syntaxhighlight>
  
 
== Grail ==
 
== Grail ==
{{todo}}
+
* engine {{done}}
 +
* editor {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"radius" : 0
 +
}
 +
</syntaxhighlight>
  
 
== Hero ==
 
== Hero ==
 +
* also prison and random hero
 +
 +
* editor {{done}}
 +
* engine {{done}}
 +
 +
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"army" : <Army format>
 +
,
 +
"artifacts" : {
 +
"backpack" : [
 +
],
 +
"feet" : "",
 +
"head" : "",
 +
"leftHand" : "",
 +
"leftRing" : "",
 +
"mach1" : "",
 +
"mach2" : "",
 +
"mach3" : "",
 +
"mach4" : "",
 +
"misc1" : "",
 +
"misc2" : "",
 +
"misc3" : "",
 +
"misc4" : "",
 +
"misc5" : "",
 +
"neck" : "",
 +
"rightHand" : "",
 +
"rightRing" : "",
 +
"shoulders" : "",
 +
"spellbook" : "",
 +
"torso" : ""
 +
},
 +
"biography" : "",
 +
"experience" : 0,
 +
 +
//any type for prison, must match object subtype for hero, not used for random hero
 +
"type" : "galthran",
 +
"name" : "My hero",
 +
 +
//optional default - patrol disabled. 0 - stand still, > 0 - patrol radius it tiles
 +
"patrolRadius" : 5,
 +
 +
//optional, icon index (from "Portraits[Large|Small].json" ) or another hero id, default from "type"
 +
"portrait" : "izra",
 +
 +
//TODO: custom portaits
 +
 +
//optional default inherited from configuration
 +
"primarySkills" : {
 +
"attack" : 0,
 +
"defence" : 2,
 +
"knowledge" : 0,
 +
"spellpower" : 3
 +
},
 +
 +
"secondarySkills" : {
 +
"leadership" : "basic"//, "advanced", "expert"
 +
//...
 +
},
 +
 +
//optional, default if not set
 +
"female" : true,//false
 +
"spellBook" : [
 +
"fortune"
 +
//...
 +
],
 +
"tightFormation" : false
 +
}
 +
</syntaxhighlight>
 +
 +
== Hero placeholder ==
 
{{todo}}
 
{{todo}}
  
 
== Event ==
 
== Event ==
{{todo}}
+
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"aIActivable" : false,
 +
"artifacts" : [
 +
"swordOfHellfire"
 +
],
 +
"availableFor" : [
 +
"red",
 +
"blue",
 +
"tan",
 +
"green",
 +
"orange",
 +
"purple",
 +
"teal",
 +
"pink"
 +
],
 +
"creatures" : [
 +
{
 +
"amount" : 1,
 +
"&type" : "phoenix"
 +
}
 +
],
 +
"experience" : 1,
 +
"guardMessage" : "...",
 +
"guards" : [],//army format
 +
"humanActivable" : true,
 +
"luck" : -1,
 +
"mana" : -1,
 +
"morale" : -1,
 +
"primarySkills" : {
 +
"attack" : 1,
 +
"defence" : 1,
 +
"knowledge" : 1,
 +
"spellpower" : 1
 +
},
 +
"removeAfterVisit" : true,
 +
"resources" : {
 +
"crystal" : -1,
 +
"gems" : -1,
 +
"gold" : -1,
 +
"mercury" : -1,
 +
"mithril" : 0,
 +
"ore" : -1,
 +
"sulfur" : -1,
 +
"wood" : -1
 +
},
 +
"secondarySkills" : {
 +
"fireMagic" : 1
 +
},
 +
"spells" : [
 +
"protectFire"
 +
],
 +
"reward_x" : {}//reward format
 +
 
 +
}
 +
</syntaxhighlight>
 +
 
 +
== Lighthouse ==
 +
See owner format
 +
 
 +
* editor {{done}}
 +
* engine {{done}}
  
 
== Mine==
 
== Mine==
{{todo}}
+
 
 +
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"army" : [], //army format
 +
"owner" : ""
 +
}
 +
</syntaxhighlight>
  
 
== Monster ==
 
== Monster ==
* since 1.0
+
* editor {{done}}
* editor support {{done}}
+
* engine {{done}}
* engine support {{todo}}
 
  
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
{
 
{
 
//mandatory
 
//mandatory
"character" : 2,
+
"character" : "compliant",// friendly, aggressive, hostile, savage
  
//required if randomCount is false
+
//default random
"count" : 19,
+
"amount" : 19,
 
 
 
//optional, default false
 
//optional, default false
Line 54: Line 347:
 
//optional, default false
 
//optional, default false
 
"neverFlees" : false,
 
"neverFlees" : false,
 
//optional, default false
 
"randomCount" : false,
 
  
 
//optional, artifact id
 
//optional, artifact id
Line 75: Line 365:
 
"sulfur" : 0,
 
"sulfur" : 0,
 
"wood" : 0
 
"wood" : 0
}
+
},
 +
"reward_x" : {}//reward format
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Ocean bottle ==
+
== Sign/Ocean bottle ==
{{todo}}
+
 
 +
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"text": "Hello world!!!1111"
 +
}
 +
</syntaxhighlight>
  
 
== Pandoras box ==
 
== Pandoras box ==
{{todo}}
+
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"artifacts" : [
 +
"powerOfTheDragonFather"
 +
],
 +
"creatures" : [], //army format
 +
"experience" : 1000000,
 +
"guardMessage" : "Prepare to fight...",
 +
"guards" : [], //army format
 +
"luck" : 2,
 +
"mana" : 100,
 +
"morale" : 2,
 +
"primarySkills" : {
 +
"attack" : 1,
 +
"defence" : 1,
 +
"knowledge" : 1,
 +
"spellpower" : 1
 +
},
 +
"resources" : {
 +
"crystal" : -1,
 +
"gems" : -1,
 +
"gold" : -1,
 +
"mercury" : -1,
 +
"mithril" : 0,
 +
"ore" : -1,
 +
"sulfur" : -1,
 +
"wood" : -1
 +
},
 +
"secondarySkills" : {
 +
"logistics" : "basic"//, "advanced", "expert"
 +
},
 +
"spells" : [
 +
"townPortal"
 +
],
 +
"reward_x" : {}//reward format
 +
 
 +
}
 +
</syntaxhighlight>
  
 
== Quest guard ==
 
== Quest guard ==
{{todo}}
+
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"quest" : {} //quest format
 +
}
 +
</syntaxhighlight>
  
 
== Random dwelling ==
 
== Random dwelling ==
{{todo}}
+
* editor {{done}}
 +
* engine {{done}}
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"allowedFactions" :{<logical id condition>},
 +
"maxLevel" : 7,
 +
"minLevel" : 1,
 +
"sameAsTown" : "town_42"
 +
}
 +
</syntaxhighlight>
  
 
== Resource ==
 
== Resource ==
{{todo}}
+
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"amount" : 99999,
 +
"guardMessage" : "",
 +
"guards" : [] //army format
 +
}
 +
</syntaxhighlight>
  
 
== Scholar ==
 
== Scholar ==
{{todo}}
+
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"rewardPrimSkill" : "",
 +
"rewardSkill" : "wisdom",
 +
"rewardSpell" : "",
 +
"reward_x" : {}//reward format
 +
}
 +
</syntaxhighlight>
  
 
== Seer hut ==
 
== Seer hut ==
{{todo}}
+
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"quest" : {}, //quest format
 +
"reward" : {}//reward format
 +
}
 +
</syntaxhighlight>
  
 
== Shipyard ==
 
== Shipyard ==
{{todo}}
+
See owner format
 +
 
 +
* editor {{done}}
 +
* engine {{done}}
  
 
== Shrine of magic ==
 
== Shrine of magic ==
{{todo}}
+
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
//optional, random spell if not set
 +
"spell" : ""
 +
}
 +
</syntaxhighlight>
  
 
== Spell scroll ==
 
== Spell scroll ==
{{todo}}
+
* engine {{done}}
 +
* editor {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
"guardMessage" : "",
 +
"guards" : [], //army format
 +
"spell" : "magicArrow"
 +
}
 +
</syntaxhighlight>
  
 
== Town ==
 
== Town ==
{{todo}}
+
* engine {{done}}
 +
* editor {{done}}
 +
 
 +
* castle events {{todo}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
"army" : [], //army format
 +
"tightFormation" : false
 +
 
 +
"name" : "",
 +
"buildings" : {<Logical Id Condition>}
 +
"spells" : {<Logical Id Condition>}
 +
 
 +
"events" : nil, //TODO
 +
 
 +
}
 +
</syntaxhighlight>
  
 
== Witch hut ==
 
== Witch hut ==
{{todo}}
+
* editor {{done}}
 +
* engine {{done}}
 +
 
 +
<syntaxhighlight lang="javascript">
 +
{
 +
"allowedSkills" : {<Logical Id Condition>}
 +
}
 +
</syntaxhighlight>

Latest revision as of 20:26, 24 December 2016

Part of Map format

Base formats

Owner format

  • editor [Done]
  • engine [Done]

All flaggable objects


{
	//optional, default neutral
	"owner": "red"
}

Stack instance format

  • editor [Done]
  • engine [Done]
{
	"amount" : 1, 
	"type" : "skeleton",
	"level": 1, //optional, for random objects
	"upgraded": true  //optional, for random objects
}

Army format

  • editor [Done]
  • engine [Done]
[
  {< Stack instance format>}, 
  {}
  //...
]

Quest format

  • editor [Done]
  • engine [Done]
{
	"artifacts" : [],
	"completedText" : "",
	"creatures" : [], //army format
	"firstVisitText" : "",
	"hero" : "",
	"heroLevel" : -1,
	"killTarget" : "monster_666",
	"missionType" : "KillCreature",//None, Level, PrimaryStat, KillHero, KillCreature, Artifact, Army, Resources, Hero, Player, Custom
	"nextVisitText" : "",
	"player" : "",
	"primarySkills" : {
		"attack" : 10,
		"defence" : 10,
		//"knowledge" : -1,
		//"spellpower" : -1
	},
	"resources" : {
		"crystal" : 0,
		"gems" : 0,
		"gold" : 0,
		"mercury" : 0,
		"mithril" : 0,
		"ore" : 0,
		"sulfur" : 0,
		"wood" : 0
	},
	"timeLimit" : 5,
	"custom_x" :{<Quest format v2>}
}

Quest format 2

Proposed extension

Logical condition based.

  • editor [Todo]
  • engine [Todo]
{
//TODO:
}

Reward format

Proposed extension

  • editor [Done]
  • engine [Todo]
    • seer hut case [Done]

identifier = [scope ":"] type ["." subtype]

Possible types

  • artifact
  • creature
  • resource
  • primarySkill
  • secondarySkill
  • spell
  • luck
  • morale
  • mana
  • movement


{
	"resource.gold" : 1000,
 	"morale" : -1,
 	"wog:creature.supremeArchangel" : 9999
//...
}

OH3 objects

Abandoned mine

  • editor [Done]
  • engine [Done]
{
	"possibleResources" : [
		"crystal",
		"gems",
		"gold",
		"mercury",
		"ore",
		"sulfur"
	]
}

Artifact

  • editor [Done]
  • engine [Done]
{
	"guardMessage" : "",
	"guards" : []//Army format	
}

Creature generator

See owner format

Garrison

  • editor [Done]
  • engine [Done]
{
	"army" : [], //army format
	"owner" : "",
	"removableUnits" : true
}

Grail

  • engine [Done]
  • editor [Done]
{
	"radius" : 0
}

Hero

  • also prison and random hero
  • editor [Done]
  • engine [Done]


{
	"army" : <Army format>
	,
	"artifacts" : {
		"backpack" : [
		],
		"feet" : "",
		"head" : "",
		"leftHand" : "",
		"leftRing" : "",
		"mach1" : "",
		"mach2" : "",
		"mach3" : "",
		"mach4" : "",
		"misc1" : "",
		"misc2" : "",
		"misc3" : "",
		"misc4" : "",
		"misc5" : "",
		"neck" : "",
		"rightHand" : "",
		"rightRing" : "",
		"shoulders" : "",
		"spellbook" : "",
		"torso" : ""
	},
	"biography" : "",
	"experience" : 0,
	
	//any type for prison, must match object subtype for hero, not used for random hero
	"type" : "galthran",
	"name" : "My hero",

	//optional default - patrol disabled. 0 - stand still, > 0 - patrol radius it tiles
	"patrolRadius" : 5,
			
	//optional, icon index (from "Portraits[Large|Small].json" ) or another hero id, default from "type"
	"portrait" : "izra", 

	//TODO: custom portaits
			
	//optional default inherited from configuration
	"primarySkills" : {
		"attack" : 0,
		"defence" : 2,
		"knowledge" : 0,
		"spellpower" : 3
	},
			
	"secondarySkills" : {
		"leadership" : "basic"//, "advanced", "expert"
		//...
	},

	//optional, default if not set
	"female" : true,//false
	"spellBook" : [
		"fortune"
		//...
	],
	"tightFormation" : false
}

Hero placeholder

[Todo]

Event

  • editor [Done]
  • engine [Done]
{
	"aIActivable" : false,
	"artifacts" : [
		"swordOfHellfire"
	],
	"availableFor" : [
		"red",
		"blue",
		"tan",
		"green",
		"orange",
		"purple",
		"teal",
		"pink"
	],
	"creatures" : [
		{
			"amount" : 1,
			"&type" : "phoenix"
		}
	],
	"experience" : 1,
	"guardMessage" : "...",
	"guards" : [],//army format
	"humanActivable" : true,
	"luck" : -1,
	"mana" : -1,
	"morale" : -1,
	"primarySkills" : {
		"attack" : 1,
		"defence" : 1,
		"knowledge" : 1,
		"spellpower" : 1
	},
	"removeAfterVisit" : true,
	"resources" : {
		"crystal" : -1,
		"gems" : -1,
		"gold" : -1,
		"mercury" : -1,
		"mithril" : 0,
		"ore" : -1,
		"sulfur" : -1,
		"wood" : -1
	},
	"secondarySkills" : {
		"fireMagic" : 1
	},
	"spells" : [
		"protectFire"
	],
	"reward_x" : {}//reward format

}

Lighthouse

See owner format

  • editor [Done]
  • engine [Done]

Mine

  • editor [Done]
  • engine [Done]
{
	"army" : [], //army format
	"owner" : ""
}

Monster

  • editor [Done]
  • engine [Done]
{
	//mandatory
	"character" : "compliant",// friendly, aggressive, hostile, savage

	//default random
	"amount" : 19,
	
	//optional, default false
	"noGrowing" : true

	//optional, default false
	"neverFlees" : false,

	//optional, artifact id
	"rewardArtifact" : "",

	//optional,
	"rewardMessage" : "",

	//all fields optional
	"rewardResources" : {
	
		"crystal" : 0,
		"gems" : 0,
		"gold" : 0,
		"mercury" : 0,
		"mithril" : 0,
		"ore" : 0,
		"sulfur" : 0,
		"wood" : 0
	},
	"reward_x" : {}//reward format
}

Sign/Ocean bottle

  • editor [Done]
  • engine [Done]
{
	"text": "Hello world!!!1111"
}

Pandoras box

  • editor [Done]
  • engine [Done]
{
	"artifacts" : [
		"powerOfTheDragonFather"
	],
	"creatures" : [], //army format
	"experience" : 1000000,
	"guardMessage" : "Prepare to fight...",
	"guards" : [], //army format
	"luck" : 2,
	"mana" : 100,
	"morale" : 2,
	"primarySkills" : {
		"attack" : 1,
		"defence" : 1,
		"knowledge" : 1,
		"spellpower" : 1
	},
	"resources" : {
		"crystal" : -1,
		"gems" : -1,
		"gold" : -1,
		"mercury" : -1,
		"mithril" : 0,
		"ore" : -1,
		"sulfur" : -1,
		"wood" : -1
	},
	"secondarySkills" : {
		"logistics" : "basic"//, "advanced", "expert"
	},
	"spells" : [
		"townPortal"
	],
	"reward_x" : {}//reward format

}

Quest guard

  • editor [Done]
  • engine [Done]
{
	"quest" : {} //quest format
}

Random dwelling

  • editor [Done]
  • engine [Done]
{
	"allowedFactions" :{<logical id condition>},
	"maxLevel" : 7,
	"minLevel" : 1,
	"sameAsTown" : "town_42"
}

Resource

  • editor [Done]
  • engine [Done]
{
	"amount" : 99999,
	"guardMessage" : "",
	"guards" : [] //army format
}

Scholar

  • editor [Done]
  • engine [Done]
{
	"rewardPrimSkill" : "",
	"rewardSkill" : "wisdom",
	"rewardSpell" : "",
	"reward_x" : {}//reward format
}

Seer hut

  • editor [Done]
  • engine [Done]
{
	"quest" : {}, //quest format
	"reward" : {}//reward format
}

Shipyard

See owner format

  • editor [Done]
  • engine [Done]

Shrine of magic

  • editor [Done]
  • engine [Done]
{
	//optional, random spell if not set
	"spell" : ""
}

Spell scroll

  • engine [Done]
  • editor [Done]
	"guardMessage" : "",
	"guards" : [], //army format
	"spell" : "magicArrow"
}

Town

  • engine [Done]
  • editor [Done]
  • castle events [Todo]
	"army" : [], //army format
	"tightFormation" : false

	"name" : "", 
	"buildings" : {<Logical Id Condition>}
	"spells" : {<Logical Id Condition>}

	"events" : nil, //TODO

}

Witch hut

  • editor [Done]
  • engine [Done]
{
	"allowedSkills" : {<Logical Id Condition>}
}