mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-28 23:06:24 +02:00
c6cc6e6301
- loading of all objects (including H3 objects) will be directed by mod handlers - common base for all handlers accessible from mod system (IHanderBase) - json format changes: use struct with string ID's instead of vector - fixed some gcc/clang errors and warnings - fixed several cases of memory leaks and invalid memory access (mostly related to usage of bonus system and/or identifiers resolution) Note that right now loading is much slower than before due to excessive json validation (or not fast enough validator)
344 lines
5.5 KiB
JSON
344 lines
5.5 KiB
JSON
{
|
|
"goblin" :
|
|
{
|
|
"index": 84,
|
|
"level": 1,
|
|
"extraNames": [ "goblins" ],
|
|
"faction": "stronghold",
|
|
"upgrades": ["hobgoblin"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CGOBLI.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "GBLNATTK.wav",
|
|
"defend": "GBLNDFND.wav",
|
|
"killed": "GBLNKILL.wav",
|
|
"move": "GBLNMOVE.wav",
|
|
"wince": "GBLNWNCE.wav"
|
|
}
|
|
},
|
|
"hobgoblin" :
|
|
{
|
|
"index": 85,
|
|
"level": 1,
|
|
"faction": "stronghold",
|
|
"hasDoubleWeek": true,
|
|
"graphics" :
|
|
{
|
|
"animation": "CHGOBL.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "HGOBATTK.wav",
|
|
"defend": "HGOBDFND.wav",
|
|
"killed": "HGOBKILL.wav",
|
|
"move": "HGOBMOVE.wav",
|
|
"wince": "HGOBWNCE.wav"
|
|
}
|
|
},
|
|
"goblinWolfRider" :
|
|
{
|
|
"index": 86,
|
|
"level": 2,
|
|
"faction": "stronghold",
|
|
"upgrades": ["hobgoblinWolfRider"],
|
|
"hasDoubleWeek": true,
|
|
"graphics" :
|
|
{
|
|
"animation": "CBWLFR.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "GWRDATTK.wav",
|
|
"defend": "GWRDDFND.wav",
|
|
"killed": "GWRDKILL.wav",
|
|
"move": "GWRDMOVE.wav",
|
|
"wince": "GWRDWNCE.wav"
|
|
}
|
|
},
|
|
"hobgoblinWolfRider" :
|
|
{
|
|
"index": 87,
|
|
"level": 2,
|
|
"faction": "stronghold",
|
|
"abilities":
|
|
{
|
|
"extraAttack" :
|
|
{
|
|
"type" : "ADDITIONAL_ATTACK",
|
|
"val" : 1
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CUWLFR.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "HGWRATTK.wav",
|
|
"defend": "HGWRDFND.wav",
|
|
"killed": "HGWRKILL.wav",
|
|
"move": "HGWRMOVE.wav",
|
|
"wince": "HGWRWNCE.wav"
|
|
}
|
|
},
|
|
"orc" :
|
|
{
|
|
"index": 88,
|
|
"level": 3,
|
|
"faction": "stronghold",
|
|
"upgrades": ["orcChieftain"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CORC.DEF",
|
|
"missile" :
|
|
{
|
|
"projectile": "PORCHX.DEF"
|
|
}
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "OORCATTK.wav",
|
|
"defend": "OORCDFND.wav",
|
|
"killed": "OORCKILL.wav",
|
|
"move": "OORCMOVE.wav",
|
|
"shoot": "OORCSHOT.wav",
|
|
"wince": "OORCWNCE.wav"
|
|
}
|
|
},
|
|
"orcChieftain" :
|
|
{
|
|
"index": 89,
|
|
"level": 3,
|
|
"faction": "stronghold",
|
|
"graphics" :
|
|
{
|
|
"animation": "CORCCH.DEF",
|
|
"missile" :
|
|
{
|
|
"projectile": "PORCHX.DEF"
|
|
}
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "ORCCATTK.wav",
|
|
"defend": "ORCCDFND.wav",
|
|
"killed": "ORCCKILL.wav",
|
|
"move": "ORCCMOVE.wav",
|
|
"shoot": "ORCCSHOT.wav",
|
|
"wince": "ORCCWNCE.wav"
|
|
}
|
|
},
|
|
"ogre" :
|
|
{
|
|
"index": 90,
|
|
"level": 4,
|
|
"faction": "stronghold",
|
|
"upgrades": ["ogreMage"],
|
|
"graphics" :
|
|
{
|
|
"animation": "COGRE.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "OGREATTK.wav",
|
|
"defend": "OGREDFND.wav",
|
|
"killed": "OGREKILL.wav",
|
|
"move": "OGREMOVE.wav",
|
|
"wince": "OGREWNCE.wav"
|
|
}
|
|
},
|
|
"ogreMage" :
|
|
{
|
|
"index": 91,
|
|
"level": 4,
|
|
"faction": "stronghold",
|
|
"abilities":
|
|
{
|
|
"castsBloodlust" :
|
|
{
|
|
"type" : "SPELLCASTER",
|
|
"subtype" : "spell.bloodlust",
|
|
"val" : 2
|
|
},
|
|
"castsCount" :
|
|
{
|
|
"type" : "CASTS",
|
|
"val" : 3
|
|
},
|
|
"castLength" :
|
|
{
|
|
"type" : "CREATURE_ENCHANT_POWER",
|
|
"val" : 3
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "COGMAG.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "OGRMATTK.wav",
|
|
"defend": "OGRMDFND.wav",
|
|
"killed": "OGRMKILL.wav",
|
|
"move": "OGRMMOVE.wav",
|
|
"shoot": "OGRMSHOT.wav",
|
|
"wince": "OGRMWNCE.wav"
|
|
}
|
|
},
|
|
"roc" :
|
|
{
|
|
"index": 92,
|
|
"level": 5,
|
|
"faction": "stronghold",
|
|
"upgrades": ["thunderbird"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CROC.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "ROCCATTK.wav",
|
|
"defend": "ROCCDFND.wav",
|
|
"killed": "ROCCKILL.wav",
|
|
"move": "ROCCMOVE.wav",
|
|
"wince": "ROCCWNCE.wav"
|
|
}
|
|
},
|
|
"thunderbird" :
|
|
{
|
|
"index": 93,
|
|
"level": 5,
|
|
"faction": "stronghold",
|
|
"abilities":
|
|
{
|
|
"thunderStrength" :
|
|
{
|
|
"type" : "SPECIFIC_SPELL_POWER",
|
|
"subtype" : "spell.thunderbolt",
|
|
"val" : 10
|
|
},
|
|
"thunderOnAttack" :
|
|
{
|
|
"type" : "SPELL_AFTER_ATTACK",
|
|
"subtype" : "spell.thunderbolt",
|
|
"val" : 20
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CTBIRD.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "TBRDATTK.wav",
|
|
"defend": "TBRDDFND.wav",
|
|
"killed": "TBRDKILL.wav",
|
|
"move": "TBRDMOVE.wav",
|
|
"wince": "TBRDWNCE.wav"
|
|
}
|
|
},
|
|
"cyclop" :
|
|
{
|
|
"index": 94,
|
|
"level": 6,
|
|
"faction": "stronghold",
|
|
"upgrades": ["cyclopKing"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CCYCLR.DEF",
|
|
"missile" :
|
|
{
|
|
"projectile": "PCYCLBX.DEF"
|
|
}
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "CCYCATTK.wav",
|
|
"defend": "CCYCDFND.wav",
|
|
"killed": "CCYCKILL.wav",
|
|
"move": "CCYCMOVE.wav",
|
|
"shoot": "CCYCSHOT.wav",
|
|
"wince": "CCYCWNCE.wav"
|
|
}
|
|
},
|
|
"cyclopKing" :
|
|
{
|
|
"index": 95,
|
|
"level": 6,
|
|
"faction": "stronghold",
|
|
"graphics" :
|
|
{
|
|
"animation": "CCYCLLOR.DEF",
|
|
"missile" :
|
|
{
|
|
"projectile": "PCYCLBX.DEF"
|
|
}
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "CYCLATTK.wav",
|
|
"defend": "CYCLDFND.wav",
|
|
"killed": "CYCLKILL.wav",
|
|
"move": "CYCLMOVE.wav",
|
|
"shoot": "CYCLSHOT.wav",
|
|
"wince": "CYCLWNCE.wav"
|
|
}
|
|
},
|
|
"behemoth" :
|
|
{
|
|
"index": 96,
|
|
"level": 7,
|
|
"faction": "stronghold",
|
|
"abilities":
|
|
{
|
|
"reduceDefence" :
|
|
{
|
|
"type" : "ENEMY_DEFENCE_REDUCTION",
|
|
"val" : 40
|
|
}
|
|
},
|
|
"upgrades": ["ancientBehemoth"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CYBEHE.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "YBMHATTK.wav",
|
|
"defend": "YBMHDFND.wav",
|
|
"killed": "YBMHKILL.wav",
|
|
"move": "YBMHMOVE.wav",
|
|
"wince": "YBMHWNCE.wav"
|
|
}
|
|
},
|
|
"ancientBehemoth" :
|
|
{
|
|
"index": 97,
|
|
"level": 7,
|
|
"faction": "stronghold",
|
|
"abilities":
|
|
{
|
|
"reduceDefence" :
|
|
{
|
|
"type" : "ENEMY_DEFENCE_REDUCTION",
|
|
"val" : 80
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CABEHE.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "BMTHATTK.wav",
|
|
"defend": "BMTHDFND.wav",
|
|
"killed": "BMTHKILL.wav",
|
|
"move": "BMTHMOVE.wav",
|
|
"wince": "BMTHWNCE.wav"
|
|
}
|
|
}
|
|
}
|