mirror of
https://github.com/vcmi/vcmi.git
synced 2024-11-30 08:57:00 +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)
421 lines
6.6 KiB
JSON
421 lines
6.6 KiB
JSON
{
|
|
"gremlin" :
|
|
{
|
|
"index": 28,
|
|
"level": 1,
|
|
"extraNames": [ "apprenticeGremlin" ],
|
|
"faction": "tower",
|
|
"upgrades": ["masterGremlin"],
|
|
"hasDoubleWeek": true,
|
|
"graphics" :
|
|
{
|
|
"animation": "CGREMA.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "AGRMATTK.wav",
|
|
"defend": "AGRMDFND.wav",
|
|
"killed": "AGRMKILL.wav",
|
|
"move": "AGRMMOVE.wav",
|
|
"shoot": "AGRMSHOT.wav",
|
|
"wince": "AGRMWNCE.wav"
|
|
}
|
|
},
|
|
"masterGremlin" :
|
|
{
|
|
"index": 29,
|
|
"level": 1,
|
|
"faction": "tower",
|
|
"graphics" :
|
|
{
|
|
"animation": "CGREMM.DEF",
|
|
"missile" :
|
|
{
|
|
"projectile": "CPRGRE.DEF"
|
|
}
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "MGRMATTK.wav",
|
|
"defend": "MGRMDFND.wav",
|
|
"killed": "MGRMKILL.wav",
|
|
"move": "MGRMMOVE.wav",
|
|
"shoot": "MGRMSHOT.wav",
|
|
"wince": "MGRMWNCE.wav"
|
|
}
|
|
},
|
|
"stoneGargoyle" :
|
|
{
|
|
"index": 30,
|
|
"level": 2,
|
|
"faction": "tower",
|
|
"abilities":
|
|
{
|
|
"nonliving" :
|
|
{
|
|
"type" : "NON_LIVING"
|
|
}
|
|
},
|
|
"upgrades": ["obsidianGargoyle"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CGARGO.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "SGRGATTK.wav",
|
|
"defend": "SGRGDFND.wav",
|
|
"killed": "SGRGKILL.wav",
|
|
"move": "SGRGMOVE.wav",
|
|
"wince": "SGRGWNCE.wav"
|
|
}
|
|
},
|
|
"obsidianGargoyle" :
|
|
{
|
|
"index": 31,
|
|
"level": 2,
|
|
"faction": "tower",
|
|
"abilities":
|
|
{
|
|
"nonliving" :
|
|
{
|
|
"type" : "NON_LIVING"
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "COGARG.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "OGRGATTK.wav",
|
|
"defend": "OGRGDFND.wav",
|
|
"killed": "OGRGKILL.wav",
|
|
"move": "OGRGMOVE.wav",
|
|
"wince": "OGRGWNCE.wav"
|
|
}
|
|
},
|
|
"ironGolem" : //FIXME correct ID is stoneGolem, unchangeable due to HOTRAITS.TXT
|
|
{
|
|
"index": 32,
|
|
"level": 3,
|
|
"faction": "tower",
|
|
"abilities":
|
|
{
|
|
"magicResistance" :
|
|
{
|
|
"type" : "SPELL_DAMAGE_REDUCTION",
|
|
"subtype" : -1,
|
|
"val" : 50
|
|
},
|
|
"nonliving" :
|
|
{
|
|
"type" : "NON_LIVING"
|
|
}
|
|
},
|
|
"upgrades": ["stoneGolem"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CSGOLE.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "SGLMATTK.wav",
|
|
"defend": "SGLMDFND.wav",
|
|
"killed": "SGLMKILL.wav",
|
|
"move": "SGLMMOVE.wav",
|
|
"wince": "SGLMWNCE.wav"
|
|
}
|
|
},
|
|
"stoneGolem" : //FIXME correct ID is ironGolem, unchangeable due to HOTRAITS.TXT
|
|
{
|
|
"index": 33,
|
|
"level": 3,
|
|
"faction": "tower",
|
|
"abilities" :
|
|
{
|
|
"magicResistance" :
|
|
{
|
|
"type" : "SPELL_DAMAGE_REDUCTION",
|
|
"subtype" : -1,
|
|
"val" : 75
|
|
},
|
|
"nonliving" :
|
|
{
|
|
"type" : "NON_LIVING"
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CIGOLE.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "IGLMATTK.wav",
|
|
"defend": "IGLMDFND.wav",
|
|
"killed": "IGLMKILL.wav",
|
|
"move": "IGLMMOVE.wav",
|
|
"wince": "IGLMWNCE.wav"
|
|
}
|
|
},
|
|
"mage" :
|
|
{
|
|
"index": 34,
|
|
"level": 4,
|
|
"faction": "tower",
|
|
"abilities":
|
|
{
|
|
"reduceSpellCost" :
|
|
{
|
|
"type" : "CHANGES_SPELL_COST_FOR_ALLY",
|
|
"val" : 2
|
|
}
|
|
},
|
|
"upgrades": ["archMage"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CMAGE.DEF",
|
|
"missile" :
|
|
{
|
|
"projectile": "PMAGEX.DEF"
|
|
}
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "MAGEATTK.wav",
|
|
"defend": "MAGEDFND.wav",
|
|
"killed": "MAGEKILL.wav",
|
|
"move": "MAGEMOVE.wav",
|
|
"shoot": "MAGESHOT.wav",
|
|
"wince": "MAGEWNCE.wav"
|
|
}
|
|
},
|
|
"archMage" :
|
|
{
|
|
"index": 35,
|
|
"level": 4,
|
|
"faction": "tower",
|
|
"abilities":
|
|
{
|
|
"reduceSpellCost" :
|
|
{
|
|
"type" : "CHANGES_SPELL_COST_FOR_ALLY",
|
|
"val" : 2
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CAMAGE.DEF",
|
|
"missile" :
|
|
{
|
|
"projectile": "PMAGEX.DEF"
|
|
}
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "AMAGATTK.wav",
|
|
"defend": "AMAGDFND.wav",
|
|
"killed": "AMAGKILL.wav",
|
|
"move": "AMAGMOVE.wav",
|
|
"shoot": "AMAGSHOT.wav",
|
|
"wince": "AMAGWNCE.wav"
|
|
}
|
|
},
|
|
"genie" :
|
|
{
|
|
"index": 36,
|
|
"level": 5,
|
|
"faction": "tower",
|
|
"abilities":
|
|
{
|
|
"hateAngels" :
|
|
{
|
|
"type" : "HATE",
|
|
"subtype" : "creature.efreet",
|
|
"val" : 50
|
|
},
|
|
"hateArchAngels" :
|
|
{
|
|
"type" : "HATE",
|
|
"subtype" : "creature.efreetSultan",
|
|
"val" : 50
|
|
}
|
|
},
|
|
"upgrades": ["masterGenie"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CGENIE.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "GENIATTK.wav",
|
|
"defend": "GENIDFND.wav",
|
|
"killed": "GENIKILL.wav",
|
|
"move": "GENIMOVE.wav",
|
|
"wince": "GENIWNCE.wav"
|
|
}
|
|
},
|
|
"masterGenie" :
|
|
{
|
|
"index": 37,
|
|
"level": 5,
|
|
"faction": "tower",
|
|
"abilities":
|
|
{
|
|
"hateAngels" :
|
|
{
|
|
"type" : "HATE",
|
|
"subtype" : "creature.efreet",
|
|
"val" : 50
|
|
},
|
|
"hateArchAngels" :
|
|
{
|
|
"type" : "HATE",
|
|
"subtype" : "creature.efreetSultan",
|
|
"val" : 50
|
|
},
|
|
"spellsLength" :
|
|
{
|
|
"type" : "CREATURE_ENCHANT_POWER",
|
|
"val" : 5
|
|
},
|
|
"randomSpellcaster" :
|
|
{
|
|
"type" : "RANDOM_SPELLCASTER",
|
|
"val" : 2
|
|
},
|
|
"casts" :
|
|
{
|
|
"type" : "CASTS",
|
|
"val" : 3
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CSULTA.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "CALFATTK.wav",
|
|
"defend": "CALFDFND.wav",
|
|
"killed": "CALFKILL.wav",
|
|
"move": "CALFMOVE.wav",
|
|
"shoot": "CALFSHOT.wav",
|
|
"wince": "CALFWNCE.wav"
|
|
}
|
|
},
|
|
"naga" :
|
|
{
|
|
"index": 38,
|
|
"level": 6,
|
|
"faction": "tower",
|
|
"abilities" :
|
|
{
|
|
"noRetaliation" :
|
|
{
|
|
"type" : "BLOCKS_RETALIATION"
|
|
}
|
|
},
|
|
"upgrades": ["nagaQueen"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CNAGA.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "NSENATTK.wav",
|
|
"defend": "NSENDFND.wav",
|
|
"killed": "NSENKILL.wav",
|
|
"move": "NSENMOVE.wav",
|
|
"wince": "NSENWNCE.wav"
|
|
}
|
|
},
|
|
"nagaQueen" :
|
|
{
|
|
"index": 39,
|
|
"level": 6,
|
|
"faction": "tower",
|
|
"abilities" :
|
|
{
|
|
"noRetaliation" :
|
|
{
|
|
"type" : "BLOCKS_RETALIATION"
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CNAGAG.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "NGRDATTK.wav",
|
|
"defend": "NGRDDFND.wav",
|
|
"killed": "NGRDKILL.wav",
|
|
"move": "NGRDMOVE.wav",
|
|
"wince": "NGRDWNCE.wav"
|
|
}
|
|
},
|
|
"giant" :
|
|
{
|
|
"index": 40,
|
|
"level": 7,
|
|
"faction": "tower",
|
|
"abilities" :
|
|
{
|
|
"immuneToMind" :
|
|
{
|
|
"type" : "MIND_IMMUNITY"
|
|
}
|
|
},
|
|
"upgrades": ["titan"],
|
|
"graphics" :
|
|
{
|
|
"animation": "CLTITA.DEF"
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "LTITATTK.wav",
|
|
"defend": "LTITDFND.wav",
|
|
"killed": "LTITKILL.wav",
|
|
"move": "LTITMOVE.wav",
|
|
"wince": "LTITWNCE.wav"
|
|
}
|
|
},
|
|
"titan" :
|
|
{
|
|
"index": 41,
|
|
"level": 7,
|
|
"faction": "tower",
|
|
"abilities" :
|
|
{
|
|
"immuneToMind" :
|
|
{
|
|
"type" : "MIND_IMMUNITY"
|
|
},
|
|
"hateArchAngels" :
|
|
{
|
|
"type" : "HATE",
|
|
"subtype" : "creature.blackDragon",
|
|
"val" : 50
|
|
}
|
|
},
|
|
"graphics" :
|
|
{
|
|
"animation": "CGTITA.DEF",
|
|
"missile" :
|
|
{
|
|
"projectile": "CPRGTIX.DEF"
|
|
}
|
|
},
|
|
"sound" :
|
|
{
|
|
"attack": "GTITATTK.wav",
|
|
"defend": "GTITDFND.wav",
|
|
"killed": "GTITKILL.wav",
|
|
"move": "GTITMOVE.wav",
|
|
"shoot": "GTITSHOT.wav",
|
|
"wince": "GTITWNCE.wav"
|
|
}
|
|
}
|
|
}
|