Difference between revisions of "Object instance format"
From VCMI Project Wiki
(→Hero) |
(→Hero) |
||
(86 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | Part of [[Map format]] | ||
+ | |||
= Base formats = | = Base formats = | ||
== Owner format == | == Owner format == | ||
− | All | + | * editor {{done}} |
+ | * engine {{done}} | ||
+ | |||
+ | All flaggable objects | ||
+ | |||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 11: | Line 17: | ||
== Stack instance format == | == Stack instance format == | ||
+ | * editor {{done}} | ||
+ | * engine {{done}} | ||
+ | |||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
{ | { | ||
− | "amount" : 1, | + | "amount" : 1, |
"type" : "skeleton", | "type" : "skeleton", | ||
+ | "level": 1, //optional, for random objects | ||
+ | "upgraded": true //optional, for random objects | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Army format == | == Army format == | ||
+ | * editor {{done}} | ||
+ | * engine {{done}} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
[ | [ | ||
Line 28: | Line 41: | ||
== Quest format == | == Quest format == | ||
+ | * editor {{done}} | ||
+ | * engine {{done}} | ||
+ | |||
<syntaxhighlight lang="javascript"> | <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 71: | Line 124: | ||
== Abandoned mine == | == Abandoned mine == | ||
− | |||
* editor {{done}} | * editor {{done}} | ||
+ | * engine {{done}} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 88: | Line 141: | ||
== Artifact == | == Artifact == | ||
− | |||
* editor {{done}} | * editor {{done}} | ||
+ | * engine {{done}} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 102: | Line 155: | ||
== Garrison == | == Garrison == | ||
− | |||
* editor {{done}} | * editor {{done}} | ||
+ | * engine {{done}} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 114: | Line 167: | ||
== Grail == | == Grail == | ||
+ | * engine {{done}} | ||
* editor {{done}} | * editor {{done}} | ||
− | + | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
{ | { | ||
Line 125: | Line 179: | ||
* also prison and random hero | * also prison and random hero | ||
− | {{ | + | * editor {{done}} |
+ | * engine {{done}} | ||
Line 165: | Line 220: | ||
"patrolRadius" : 5, | "patrolRadius" : 5, | ||
− | //optional hero id | + | //optional, icon index (from "Portraits[Large|Small].json" ) or another hero id, default from "type" |
− | "portrait" : "", | + | "portrait" : "izra", |
+ | |||
+ | //TODO: custom portaits | ||
//optional default inherited from configuration | //optional default inherited from configuration | ||
Line 177: | Line 234: | ||
"secondarySkills" : { | "secondarySkills" : { | ||
− | "leadership" : | + | "leadership" : "basic"//, "advanced", "expert" |
//... | //... | ||
}, | }, | ||
Line 196: | Line 253: | ||
== Event == | == Event == | ||
* editor {{done}} | * editor {{done}} | ||
− | * engine {{ | + | * engine {{done}} |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 216: | Line 273: | ||
"creatures" : [ | "creatures" : [ | ||
{ | { | ||
− | " | + | "amount" : 1, |
− | " | + | "&type" : "phoenix" |
− | |||
} | } | ||
], | ], | ||
Line 250: | Line 306: | ||
"spells" : [ | "spells" : [ | ||
"protectFire" | "protectFire" | ||
− | ] | + | ], |
+ | "reward_x" : {}//reward format | ||
} | } | ||
Line 257: | Line 314: | ||
== Lighthouse == | == Lighthouse == | ||
See owner format | See owner format | ||
+ | |||
+ | * editor {{done}} | ||
+ | * engine {{done}} | ||
== Mine== | == Mine== | ||
− | |||
− | {{ | + | * editor {{done}} |
+ | * engine {{done}} | ||
+ | |||
+ | <syntaxhighlight lang="javascript"> | ||
+ | { | ||
+ | "army" : [], //army format | ||
+ | "owner" : "" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
== Monster == | == Monster == | ||
− | * editor | + | * editor {{done}} |
− | * engine | + | * engine {{done}} |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
{ | { | ||
//mandatory | //mandatory | ||
− | "character" : | + | "character" : "compliant",// friendly, aggressive, hostile, savage |
− | // | + | //default random |
− | " | + | "amount" : 19, |
//optional, default false | //optional, default false | ||
Line 298: | Line 365: | ||
"sulfur" : 0, | "sulfur" : 0, | ||
"wood" : 0 | "wood" : 0 | ||
− | } | + | }, |
+ | "reward_x" : {}//reward format | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | == Ocean bottle == | + | == Sign/Ocean bottle == |
* editor {{done}} | * editor {{done}} | ||
− | * engine {{ | + | * engine {{done}} |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 315: | Line 383: | ||
== Pandoras box == | == Pandoras box == | ||
* editor {{done}} | * editor {{done}} | ||
− | * engine {{ | + | * engine {{done}} |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 322: | Line 390: | ||
"powerOfTheDragonFather" | "powerOfTheDragonFather" | ||
], | ], | ||
− | "creatures" : [ | + | "creatures" : [], //army format |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
"experience" : 1000000, | "experience" : 1000000, | ||
"guardMessage" : "Prepare to fight...", | "guardMessage" : "Prepare to fight...", | ||
Line 355: | Line 414: | ||
}, | }, | ||
"secondarySkills" : { | "secondarySkills" : { | ||
− | "logistics" : | + | "logistics" : "basic"//, "advanced", "expert" |
}, | }, | ||
"spells" : [ | "spells" : [ | ||
"townPortal" | "townPortal" | ||
− | ] | + | ], |
+ | "reward_x" : {}//reward format | ||
} | } | ||
Line 365: | Line 425: | ||
== Quest guard == | == Quest guard == | ||
− | {{ | + | * editor {{done}} |
+ | * engine {{done}} | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 375: | Line 436: | ||
== Random dwelling == | == Random dwelling == | ||
* editor {{done}} | * editor {{done}} | ||
− | * engine {{ | + | * engine {{done}} |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
{ | { | ||
− | "allowedFactions" : | + | "allowedFactions" :{<logical id condition>}, |
− | + | "maxLevel" : 7, | |
− | + | "minLevel" : 1, | |
− | + | "sameAsTown" : "town_42" | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | "maxLevel" : | ||
− | "minLevel" : | ||
− | "sameAsTown | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Resource == | == Resource == | ||
− | |||
* editor {{done}} | * editor {{done}} | ||
− | + | * engine {{done}} | |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 418: | Line 460: | ||
== Scholar == | == Scholar == | ||
* editor {{done}} | * editor {{done}} | ||
− | * engine {{ | + | * engine {{done}} |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 425: | Line 467: | ||
"rewardSkill" : "wisdom", | "rewardSkill" : "wisdom", | ||
"rewardSpell" : "", | "rewardSpell" : "", | ||
+ | "reward_x" : {}//reward format | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Seer hut == | == Seer hut == | ||
− | * editor {{ | + | * editor {{done}} |
− | * engine {{ | + | * engine {{done}} |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
{ | { | ||
"quest" : {}, //quest format | "quest" : {}, //quest format | ||
− | "reward" : | + | "reward" : {}//reward format |
− | |||
− | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 443: | Line 484: | ||
== Shipyard == | == Shipyard == | ||
See owner format | See owner format | ||
+ | |||
+ | * editor {{done}} | ||
+ | * engine {{done}} | ||
== Shrine of magic == | == Shrine of magic == | ||
− | * | + | * editor {{done}} |
− | * | + | * engine {{done}} |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 456: | Line 500: | ||
== Spell scroll == | == Spell scroll == | ||
− | * engine {{ | + | * engine {{done}} |
* editor {{done}} | * editor {{done}} | ||
Line 467: | Line 511: | ||
== 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 == | ||
* editor {{done}} | * editor {{done}} | ||
− | * engine {{ | + | * engine {{done}} |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
{ | { | ||
− | "allowedSkills" : | + | "allowedSkills" : {<Logical Id Condition>} |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 20:26, 24 December 2016
Part of Map format
Contents
- 1 Base formats
- 2 OH3 objects
- 2.1 Abandoned mine
- 2.2 Artifact
- 2.3 Creature generator
- 2.4 Garrison
- 2.5 Grail
- 2.6 Hero
- 2.7 Hero placeholder
- 2.8 Event
- 2.9 Lighthouse
- 2.10 Mine
- 2.11 Monster
- 2.12 Sign/Ocean bottle
- 2.13 Pandoras box
- 2.14 Quest guard
- 2.15 Random dwelling
- 2.16 Resource
- 2.17 Scholar
- 2.18 Seer hut
- 2.19 Shipyard
- 2.20 Shrine of magic
- 2.21 Spell scroll
- 2.22 Town
- 2.23 Witch hut
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>}
}