mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-20 20:23:03 +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)
397 lines
6.2 KiB
JSON
397 lines
6.2 KiB
JSON
{
|
|
"centaur" :
|
|
{
|
|
"index": 14,
|
|
"level": 1,
|
|
"faction": "rampart",
|
|
"upgrades": ["centaurCaptain"],
|
|
"hasDoubleWeek": true,
|
|
"graphics" :
|
|
{
|
|
"missile" : null,
|
|
"animation": "CCENTR.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "CNTRATTK.wav",
|
|
"defend": "CNTRDFND.wav",
|
|
"killed": "CNTRKILL.wav",
|
|
"move": "CNTRMOVE.wav",
|
|
"shoot": "CNTRSHOT.wav",
|
|
"wince": "CNTRWNCE.wav"
|
|
}
|
|
},
|
|
"centaurCaptain" :
|
|
{
|
|
"index": 15,
|
|
"level": 1,
|
|
"faction": "rampart",
|
|
"graphics" :
|
|
{
|
|
"missile" : null,
|
|
"animation": "CECENT.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "ECNTATTK.wav",
|
|
"defend": "ECNTDFND.wav",
|
|
"killed": "ECNTKILL.wav",
|
|
"move": "ECNTMOVE.wav",
|
|
"wince": "ECNTWNCE.wav"
|
|
}
|
|
},
|
|
"dwarf" :
|
|
{
|
|
"index": 16,
|
|
"level": 2,
|
|
"faction": "rampart",
|
|
"abilities":
|
|
{
|
|
"magicResistance" :
|
|
{
|
|
"type" : "MAGIC_RESISTANCE",
|
|
"val" : 20
|
|
}
|
|
},
|
|
"upgrades": ["battleDwarf"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CDWARF.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "DWRFATTK.wav",
|
|
"defend": "DWRFDFND.wav",
|
|
"killed": "DWRFKILL.wav",
|
|
"move": "DWRFMOVE.wav",
|
|
"wince": "DWRFWNCE.wav"
|
|
}
|
|
},
|
|
"battleDwarf" :
|
|
{
|
|
"index": 17,
|
|
"level": 2,
|
|
"faction": "rampart",
|
|
"abilities":
|
|
{
|
|
"magicResistance" :
|
|
{
|
|
"type" : "MAGIC_RESISTANCE",
|
|
"val" : 40
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CBDWAR.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "BDRFATTK.wav",
|
|
"defend": "BDRFDFND.wav",
|
|
"killed": "BDRFKILL.wav",
|
|
"move": "BDRFMOVE.wav",
|
|
"wince": "BDRFWNCE.wav"
|
|
}
|
|
},
|
|
"woodElf" :
|
|
{
|
|
"index": 18,
|
|
"level": 3,
|
|
"faction": "rampart",
|
|
"upgrades": ["grandElf"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CELF.DEF",
|
|
"missile" :
|
|
{
|
|
"projectile": "PELFX.DEF"
|
|
}
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "WELFATTK.wav",
|
|
"defend": "WELFDFND.wav",
|
|
"killed": "WELFKILL.wav",
|
|
"move": "WELFMOVE.wav",
|
|
"shoot": "WELFSHOT.wav",
|
|
"wince": "WELFWNCE.wav"
|
|
}
|
|
},
|
|
"grandElf" :
|
|
{
|
|
"index": 19,
|
|
"level": 3,
|
|
"faction": "rampart",
|
|
"abilities":
|
|
{
|
|
"doubleShot" :
|
|
{
|
|
"type": "ADDITIONAL_ATTACK",
|
|
"val" : 1,
|
|
"effectRange": "ONLY_DISTANCE_FIGHT"
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CGRELF.DEF",
|
|
"missile" :
|
|
{
|
|
"projectile": "PELFX.DEF"
|
|
}
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "GELFATTK.wav",
|
|
"defend": "GELFDFND.wav",
|
|
"killed": "GELFKILL.wav",
|
|
"move": "GELFMOVE.wav",
|
|
"shoot": "GELFSHOT.wav",
|
|
"wince": "GELFWNCE.wav"
|
|
}
|
|
},
|
|
"pegasus" :
|
|
{
|
|
"index": 20,
|
|
"level": 4,
|
|
"faction": "rampart",
|
|
"abilities":
|
|
{
|
|
"increaseManaCost" :
|
|
{
|
|
"type" : "CHANGES_SPELL_COST_FOR_ENEMY",
|
|
"val" : 2
|
|
}
|
|
},
|
|
"upgrades": ["silverPegasus"],
|
|
"hasDoubleWeek": true,
|
|
"graphics" :
|
|
{
|
|
"animation": "CPEGAS.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "PEGAATTK.wav",
|
|
"defend": "PEGADFND.wav",
|
|
"killed": "PEGAKILL.wav",
|
|
"move": "PEGAMOVE.wav",
|
|
"wince": "PEGAWNCE.wav"
|
|
}
|
|
},
|
|
"silverPegasus" :
|
|
{
|
|
"index": 21,
|
|
"level": 4,
|
|
"faction": "rampart",
|
|
"abilities":
|
|
{
|
|
"increaseManaCost" :
|
|
{
|
|
"type" : "CHANGES_SPELL_COST_FOR_ENEMY",
|
|
"val" : 2
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CAPEGS.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "APEGATTK.wav",
|
|
"defend": "APEGDFND.wav",
|
|
"killed": "APEGKILL.wav",
|
|
"move": "APEGMOVE.wav",
|
|
"wince": "APEGWNCE.wav"
|
|
}
|
|
},
|
|
"dendroidGuard" :
|
|
{
|
|
"index": 22,
|
|
"level": 5,
|
|
"faction": "rampart",
|
|
"abilities":
|
|
{
|
|
"binds" :
|
|
{
|
|
"type" : "SPELL_AFTER_ATTACK",
|
|
"subtype" : "spell.bind",
|
|
"val" : 100
|
|
}
|
|
},
|
|
"upgrades": ["dendroidSoldier"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CTREE.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "TREEATTK.wav",
|
|
"defend": "TREEDFND.wav",
|
|
"killed": "TREEKILL.wav",
|
|
"move": "TREEMOVE.wav",
|
|
"wince": "TREEWNCE.wav"
|
|
}
|
|
},
|
|
"dendroidSoldier" :
|
|
{
|
|
"index": 23,
|
|
"level": 5,
|
|
"faction": "rampart",
|
|
"abilities":
|
|
{
|
|
"binds" :
|
|
{
|
|
"type" : "SPELL_AFTER_ATTACK",
|
|
"subtype" : "spell.bind",
|
|
"val" : 100
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CBTREE.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "BTREATTK.wav",
|
|
"defend": "BTREDFND.wav",
|
|
"killed": "BTREKILL.wav",
|
|
"move": "BTREMOVE.wav",
|
|
"wince": "BTREWNCE.wav"
|
|
}
|
|
},
|
|
"unicorn" :
|
|
{
|
|
"index": 24,
|
|
"level": 6,
|
|
"faction": "rampart",
|
|
"abilities":
|
|
{
|
|
"spellResistAura" :
|
|
{
|
|
"type" : "SPELL_RESISTANCE_AURA",
|
|
"val" : 20
|
|
},
|
|
"blinds" :
|
|
{
|
|
"type" : "SPELL_AFTER_ATTACK",
|
|
"subtype" : "spell.blind",
|
|
"val" : 20
|
|
}
|
|
},
|
|
"upgrades": ["warUnicorn"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CUNICO.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "UNICATTK.wav",
|
|
"defend": "UNICDFND.wav",
|
|
"killed": "UNICKILL.wav",
|
|
"move": "UNICMOVE.wav",
|
|
"wince": "UNICWNCE.wav"
|
|
}
|
|
},
|
|
"warUnicorn" :
|
|
{
|
|
"index": 25,
|
|
"level": 6,
|
|
"faction": "rampart",
|
|
"abilities":
|
|
{
|
|
"spellResistAura" :
|
|
{
|
|
"type" : "SPELL_RESISTANCE_AURA",
|
|
"val" : 20
|
|
},
|
|
"blinds" :
|
|
{
|
|
"type" : "SPELL_AFTER_ATTACK",
|
|
"subtype" : "spell.blind",
|
|
"val" : 20
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CWUNIC.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "WUNCATTK.wav",
|
|
"defend": "WUNCDFND.wav",
|
|
"killed": "WUNCKILL.wav",
|
|
"move": "WUNCMOVE.wav",
|
|
"shoot": "WUNCSHOT.wav",
|
|
"wince": "WUNCWNCE.wav"
|
|
}
|
|
},
|
|
"greenDragon" :
|
|
{
|
|
"index": 26,
|
|
"level": 7,
|
|
"faction": "rampart",
|
|
"abilities":
|
|
{
|
|
"dragon" :
|
|
{
|
|
"type" : "DRAGON_NATURE"
|
|
},
|
|
"fireBreath" :
|
|
{
|
|
"type" : "TWO_HEX_ATTACK_BREATH"
|
|
},
|
|
"spellImmunity" :
|
|
{
|
|
"type" : "LEVEL_SPELL_IMMUNITY",
|
|
"val" : 3
|
|
}
|
|
},
|
|
"upgrades": ["goldDragon"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CGDRAG.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "GRDRATTK.wav",
|
|
"defend": "GRDRDFND.wav",
|
|
"killed": "GRDRKILL.wav",
|
|
"move": "GRDRMOVE.wav",
|
|
"wince": "GRDRWNCE.wav"
|
|
}
|
|
},
|
|
"goldDragon" :
|
|
{
|
|
"index": 27,
|
|
"level": 7,
|
|
"faction": "rampart",
|
|
"abilities":
|
|
{
|
|
"dragon" :
|
|
{
|
|
"type" : "DRAGON_NATURE"
|
|
},
|
|
"fireBreath" :
|
|
{
|
|
"type" : "TWO_HEX_ATTACK_BREATH"
|
|
},
|
|
"spellImmunity" :
|
|
{
|
|
"type" : "LEVEL_SPELL_IMMUNITY",
|
|
"val" : 4
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CDDRAG.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "GODRATTK.wav",
|
|
"defend": "GODRDFND.wav",
|
|
"killed": "GODRKILL.wav",
|
|
"move": "GODRMOVE.wav",
|
|
"wince": "GODRWNCE.wav"
|
|
}
|
|
}
|
|
}
|