mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-24 22:14:36 +02:00
- H3 creatures use subset of mod creature format (todo - unify code)
- creatures configs moved into confg/creatures files, similar to factions. - creatures ID's use same camelCase format as the rest of the game
This commit is contained in:
parent
406d43dc27
commit
8824f5e2d5
@ -145,6 +145,7 @@ bool isCloser(const EnemyInfo & ei1, const EnemyInfo & ei2, const ReachabilityIn
|
||||
}
|
||||
|
||||
//FIXME: unused function
|
||||
/*
|
||||
static bool willSecondHexBlockMoreEnemyShooters(const BattleHex &h1, const BattleHex &h2)
|
||||
{
|
||||
int shooters[2] = {0}; //count of shooters on hexes
|
||||
@ -157,6 +158,7 @@ static bool willSecondHexBlockMoreEnemyShooters(const BattleHex &h1, const Battl
|
||||
|
||||
return shooters[0] < shooters[1];
|
||||
}
|
||||
*/
|
||||
|
||||
template <typename Container, typename Pred>
|
||||
auto sum(const Container & c, Pred p) -> decltype(p(*boost::begin(c)))
|
||||
|
@ -17,7 +17,7 @@ option(DISABLE_ERM "Disable compilation of ERM scripting module" ON)
|
||||
|
||||
if (APPLE)
|
||||
# Default location for thirdparty libs
|
||||
set(CMAKE_INCLUDE_PATH "../include")
|
||||
set(CMAKE_INCLUDE_PATH "../include ${CMAKE_OSX_SYSROOT}/usr/include")
|
||||
set(CMAKE_LIBRARY_PATH "../lib")
|
||||
set(CMAKE_FRAMEWORK_PATH "../Frameworks")
|
||||
set(BOOST_ROOT "../")
|
||||
|
@ -1,19 +1,5 @@
|
||||
|
||||
{
|
||||
//Map faction - commander creature
|
||||
//Using "attacking creature" from WoG - whatever it means
|
||||
"factionCreatures":
|
||||
[
|
||||
{"faction": 0, "id": 174},
|
||||
{"faction": 1, "id": 175},
|
||||
{"faction": 2, "id": 176},
|
||||
{"faction": 3, "id": 177},
|
||||
{"faction": 4, "id": 178},
|
||||
{"faction": 5, "id": 179},
|
||||
{"faction": 6, "id": 180},
|
||||
{"faction": 7, "id": 181},
|
||||
{"faction": 8, "id": 182}
|
||||
],
|
||||
//Commander receives these bonuses on level-up
|
||||
"bonusPerLevel":
|
||||
[
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
297
config/creatures/castle.json
Normal file
297
config/creatures/castle.json
Normal file
@ -0,0 +1,297 @@
|
||||
{
|
||||
"pikeman" :
|
||||
{
|
||||
"id": 0,
|
||||
"level": 1,
|
||||
"faction": "castle",
|
||||
"upgrades": ["halberdier"],
|
||||
"abilities": [ [ "CHARGE_IMMUNITY", 0, 0, 0 ] ], //pikeman immunity to Champion charge bonus
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CPKMAN.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "PIKEATTK.wav",
|
||||
"defend": "PIKEDFND.wav",
|
||||
"killed": "PIKEKILL.wav",
|
||||
"move": "PIKEMOVE.wav",
|
||||
"wince": "PIKEWNCE.wav"
|
||||
}
|
||||
},
|
||||
"halberdier" :
|
||||
{
|
||||
"id": 1,
|
||||
"level": 1,
|
||||
"faction": "castle",
|
||||
"abilities": [ [ "CHARGE_IMMUNITY", 0, 0, 0 ] ], //halberdier immunity to Champion charge bonus
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CHALBD.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "HALBATTK.wav",
|
||||
"defend": "HALBDFND.wav",
|
||||
"killed": "HALBKILL.wav",
|
||||
"move": "HALBMOVE.wav",
|
||||
"wince": "HALBWNCE.wav"
|
||||
}
|
||||
},
|
||||
"archer" :
|
||||
{
|
||||
"id": 2,
|
||||
"level": 2,
|
||||
"extraNames": [ "lightCrossbowman" ],
|
||||
"faction": "castle",
|
||||
"upgrades": ["marksman"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CLCBOW.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLCBOWX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "LCRSATTK.wav",
|
||||
"defend": "LCRSDFND.wav",
|
||||
"killed": "LCRSKILL.wav",
|
||||
"move": "LCRSMOVE.wav",
|
||||
"shoot": "LCRSSHOT.wav",
|
||||
"wince": "LCRSWNCE.wav"
|
||||
}
|
||||
},
|
||||
"marksman" :
|
||||
{
|
||||
"id": 3,
|
||||
"level": 2,
|
||||
"faction": "castle",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CHCBOW.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLCBOWX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "HCRSATTK.wav",
|
||||
"defend": "HCRSDFND.wav",
|
||||
"killed": "HCRSKILL.wav",
|
||||
"move": "HCRSMOVE.wav",
|
||||
"shoot": "HCRSSHOT.wav",
|
||||
"wince": "HCRSWNCE.wav"
|
||||
}
|
||||
},
|
||||
"griffin" :
|
||||
{
|
||||
"id": 4,
|
||||
"level": 3,
|
||||
"faction": "castle",
|
||||
"abilities": [ [ "ADDITIONAL_RETALIATION", 1, 0, 0 ] ], //griffins retaliate twice
|
||||
"upgrades": ["royalGriffin"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CGRIFF.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "GRIFATTK.wav",
|
||||
"defend": "GRIFDFND.wav",
|
||||
"killed": "GRIFKILL.wav",
|
||||
"move": "GRIFMOVE.wav",
|
||||
"wince": "GRIFWNCE.wav"
|
||||
}
|
||||
},
|
||||
"royalGriffin" :
|
||||
{
|
||||
"id": 5,
|
||||
"level": 3,
|
||||
"faction": "castle",
|
||||
"abilities": [ [ "UNLIMITED_RETALIATIONS", 0, 0, 0 ] ], //royal griffins retaliate always
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CRGRIF.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "RGRFATTK.wav",
|
||||
"defend": "RGRFDFND.wav",
|
||||
"killed": "RGRFKILL.wav",
|
||||
"move": "RGRFMOVE.wav",
|
||||
"wince": "RGRFWNCE.wav"
|
||||
}
|
||||
},
|
||||
"swordsman" :
|
||||
{
|
||||
"id": 6,
|
||||
"level": 4,
|
||||
"faction": "castle",
|
||||
"upgrades": ["crusader"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CSWORD.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "SWRDATTK.wav",
|
||||
"defend": "SWRDDFND.wav",
|
||||
"killed": "SWRDKILL.wav",
|
||||
"move": "SWRDMOVE.wav",
|
||||
"wince": "SWRDWNCE.wav"
|
||||
}
|
||||
},
|
||||
"crusader" :
|
||||
{
|
||||
"id": 7,
|
||||
"level": 4,
|
||||
"faction": "castle",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CCRUSD.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "CRUSATTK.wav",
|
||||
"defend": "CRUSDFND.wav",
|
||||
"killed": "CRUSKILL.wav",
|
||||
"move": "CRUSMOVE.wav",
|
||||
"wince": "CRUSWNCE.wav"
|
||||
}
|
||||
},
|
||||
"monk" :
|
||||
{
|
||||
"id": 8,
|
||||
"level": 5,
|
||||
"faction": "castle",
|
||||
"upgrades": ["zealot"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CMONKK.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "CPRZEAX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "MONKATTK.wav",
|
||||
"defend": "MONKDFND.wav",
|
||||
"killed": "MONKKILL.wav",
|
||||
"move": "MONKMOVE.wav",
|
||||
"shoot": "MONKSHOT.wav",
|
||||
"wince": "MONKWNCE.wav"
|
||||
}
|
||||
},
|
||||
"zealot" :
|
||||
{
|
||||
"id": 9,
|
||||
"level": 5,
|
||||
"faction": "castle",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CZEALT.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "CPRZEAX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ZELTATTK.wav",
|
||||
"defend": "ZELTDFND.wav",
|
||||
"killed": "ZELTKILL.wav",
|
||||
"move": "ZELTMOVE.wav",
|
||||
"shoot": "ZELTSHOT.wav",
|
||||
"wince": "ZELTWNCE.wav"
|
||||
}
|
||||
},
|
||||
"cavalier" :
|
||||
{
|
||||
"id": 10,
|
||||
"level": 6,
|
||||
"faction": "castle",
|
||||
"upgrades": ["champion"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CCAVLR.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "CAVAATTK.wav",
|
||||
"defend": "CAVADFND.wav",
|
||||
"killed": "CAVAKILL.wav",
|
||||
"move": "CAVAMOVE.wav",
|
||||
"wince": "CAVAWNCE.wav"
|
||||
}
|
||||
},
|
||||
"champion" :
|
||||
{
|
||||
"id": 11,
|
||||
"level": 6,
|
||||
"faction": "castle",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CCHAMP.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "CHMPATTK.wav",
|
||||
"defend": "CHMPDFND.wav",
|
||||
"killed": "CHMPKILL.wav",
|
||||
"move": "CHMPMOVE.wav",
|
||||
"wince": "CHMPWNCE.wav"
|
||||
}
|
||||
},
|
||||
"angel" :
|
||||
{
|
||||
"id": 12,
|
||||
"level": 7,
|
||||
"faction": "castle",
|
||||
"abilities": [ [ "HATE", 50, 55, 0 ], //angels hate archdevils
|
||||
[ "HATE", 50, 54, 0 ] ], //angels hate devils
|
||||
"upgrades": ["archangel"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CANGEL.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ANGLATTK.wav",
|
||||
"defend": "ANGLDFND.wav",
|
||||
"killed": "ANGLKILL.wav",
|
||||
"move": "ANGLMOVE.wav",
|
||||
"wince": "ANGLWNCE.wav"
|
||||
}
|
||||
},
|
||||
"archangel" :
|
||||
{
|
||||
"id": 13,
|
||||
"level": 7,
|
||||
"faction": "castle",
|
||||
"abilities": [ [ "SPECIFIC_SPELL_POWER", 100, 38, 0 ], // 100 hp per Archangel
|
||||
[ "SPELLCASTER", 0, 38, 0 ], //archangels cast resurrection
|
||||
[ "HATE", 50, 55, 0 ], //archangels hate arch
|
||||
[ "HATE", 50, 54, 0 ] , //archangels hate devils
|
||||
[ "CASTS", 1, 0, 0]],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CRANGL.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "AAGLATTK.wav",
|
||||
"defend": "AAGLDFND.wav",
|
||||
"killed": "AAGLKILL.wav",
|
||||
"move": "AAGLMOVE.wav",
|
||||
"wince": "AAGLWNCE.wav"
|
||||
}
|
||||
}
|
||||
}
|
336
config/creatures/conflux.json
Normal file
336
config/creatures/conflux.json
Normal file
@ -0,0 +1,336 @@
|
||||
{
|
||||
"airElemental" :
|
||||
{
|
||||
"id": 112,
|
||||
"level": 2,
|
||||
"extraNames": [ "airElementals" ],
|
||||
"faction": "conflux",
|
||||
"abilities": [ [ "SPELL_IMMUNITY", 0, 61, 0 ], //air elementals are immune to mind spells (forgetfulness) //earth elementals are non-living
|
||||
[ "SPELL_IMMUNITY", 0, 60, 0 ], //air elementals are immune to mind spells (hypnotize)
|
||||
[ "SPELL_IMMUNITY", 0, 59, 0 ], //air elementals are immune to mind spells (berserk)
|
||||
[ "SPELL_IMMUNITY", 0, 50, 0 ], //air elementals are immune to mind spells (sorrow)
|
||||
[ "SPELL_IMMUNITY", 0, 23, 0 ], //air elementals are immune to meteor shower
|
||||
[ "NON_LIVING", 0, 0, 0 ],
|
||||
[ "MORE_DAMAGE_FROM_SPELL", 100, 19, 0 ], //air elementals are vulnerable to chain lightning
|
||||
[ "MORE_DAMAGE_FROM_SPELL", 100, 17, 0 ] ], //air elementals are vulnerable to lightning bolt //air elementals are non-living
|
||||
"upgrades": ["stormElemental"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CAELEM.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "AELMATTK.wav",
|
||||
"defend": "AELMDFND.wav",
|
||||
"killed": "AELMKILL.wav",
|
||||
"move": "AELMMOVE.wav",
|
||||
"wince": "AELMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"earthElemental" :
|
||||
{
|
||||
"id": 113,
|
||||
"level": 5,
|
||||
"faction": "conflux",
|
||||
"abilities": [ [ "SPELL_IMMUNITY", 0, 61, 0 ], //earth elementals are immune to mind spells (forgetfulness)
|
||||
[ "SPELL_IMMUNITY", 0, 60, 0 ], //earth elementals are immune to mind spells (hypnotize)
|
||||
[ "SPELL_IMMUNITY", 0, 59, 0 ], //earth elementals are immune to mind spells (berserk)
|
||||
[ "SPELL_IMMUNITY", 0, 50, 0 ], //earth elementals are immune to mind spells (sorrow)
|
||||
[ "SPELL_IMMUNITY", 0, 19, 0 ], //earth elementals are immune to chain lightning
|
||||
[ "SPELL_IMMUNITY", 0, 17, 0 ], //earth elementals are immune to lightning bolt
|
||||
[ "NON_LIVING", 0, 0, 0 ],
|
||||
[ "MORE_DAMAGE_FROM_SPELL", 100, 23, 0 ] ], //earth elementals are vulnerable to meteor shower
|
||||
"upgrades": ["magmaElemental"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CEELEM.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "EELMATTK.wav",
|
||||
"defend": "EELMDFND.wav",
|
||||
"killed": "EELMKILL.wav",
|
||||
"move": "EELMMOVE.wav",
|
||||
"wince": "EELMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"fireElemental" :
|
||||
{
|
||||
"id": 114,
|
||||
"level": 4,
|
||||
"faction": "conflux",
|
||||
"abilities": [ [ "SPELL_IMMUNITY", 0, 61, 0 ], //fire elementals are immune to mind spells (forgetfulness)
|
||||
[ "SPELL_IMMUNITY", 0, 60, 0 ], //fire elementals are immune to mind spells (hypnotize) //water elemental should be treated as double-wide
|
||||
[ "SPELL_IMMUNITY", 0, 59, 0 ], //fire elementals are immune to mind spells (berserk)
|
||||
[ "SPELL_IMMUNITY", 0, 50, 0 ], //fire elementals are immune to mind spells (sorrow)
|
||||
[ "NON_LIVING", 0, 0, 0 ], //fire elementals are non-living
|
||||
[ "MORE_DAMAGE_FROM_SPELL", 100, 20, 0 ], //fire elementals are vulnerable to frost ring
|
||||
[ "MORE_DAMAGE_FROM_SPELL", 100, 16, 0 ], //fire elementals are vulnerable to ice bolt
|
||||
[ "FIRE_IMMUNITY", 0, 0, 0 ] ], //fire elementals are immune to fire spells
|
||||
"upgrades": ["energyElemental"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CFELEM.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "FELMATTK.wav",
|
||||
"defend": "FELMDFND.wav",
|
||||
"killed": "FELMKILL.wav",
|
||||
"move": "FELMMOVE.wav",
|
||||
"wince": "FELMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"waterElemental" :
|
||||
{
|
||||
"id": 115,
|
||||
"level": 3,
|
||||
"extraNames": [ "waterElementals" ],
|
||||
"faction": "conflux",
|
||||
"abilities": [ [ "SPELL_IMMUNITY", 0, 61, 0 ], //water elementals are immune to mind spells (forgetfulness)
|
||||
[ "SPELL_IMMUNITY", 0, 60, 0 ], //water elementals are immune to mind spells (hypnotize)
|
||||
[ "SPELL_IMMUNITY", 0, 59, 0 ], //water elementals are immune to mind spells (berserk)
|
||||
[ "SPELL_IMMUNITY", 0, 50, 0 ], //water elementals are immune to mind spells (sorrow)
|
||||
[ "SPELL_IMMUNITY", 0, 20, 0 ], //water elementals are immune to frost ring
|
||||
[ "SPELL_IMMUNITY", 0, 16, 0 ], //water elementals are immune to ice bolt
|
||||
[ "NON_LIVING", 0, 0, 0 ], //water elementals are non-living
|
||||
[ "MORE_DAMAGE_FROM_SPELL", 100, 29, 0 ], //water elementals are vulnerable to fire shield
|
||||
[ "MORE_DAMAGE_FROM_SPELL", 100, 22, 0 ], //water elementals are vulnerable to inferno
|
||||
[ "MORE_DAMAGE_FROM_SPELL", 100, 21, 0 ], //water elementals are vulnerable to fireball
|
||||
[ "MORE_DAMAGE_FROM_SPELL", 100, 13, 0 ], //water elementals are vulnerable to fire wall
|
||||
[ "DOUBLE_WIDE", 0, 0, 0 ] ],
|
||||
"upgrades": ["iceElemental"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CWELEM.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "WELMATTK.wav",
|
||||
"defend": "WELMDFND.wav",
|
||||
"killed": "WELMKILL.wav",
|
||||
"move": "WELMMOVE.wav",
|
||||
"wince": "WELMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"pixie" :
|
||||
{
|
||||
"id": 118,
|
||||
"level": 1,
|
||||
"extraNames": [ "pixies" ],
|
||||
"faction": "conflux",
|
||||
"upgrades": ["sprite"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CPIXIE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "PIXIATTK.wav",
|
||||
"defend": "PIXIDFND.wav",
|
||||
"killed": "PIXIKILL.wav",
|
||||
"move": "PIXIMOVE.wav",
|
||||
"wince": "PIXIWNCE.wav"
|
||||
}
|
||||
},
|
||||
"sprite" :
|
||||
{
|
||||
"id": 119,
|
||||
"level": 1,
|
||||
"faction": "conflux",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CSPRITE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "SPRTATTK.wav",
|
||||
"defend": "SPRTDFND.wav",
|
||||
"killed": "SPRTKILL.wav",
|
||||
"move": "SPRTMOVE.wav",
|
||||
"wince": "SPRTWNCE.wav"
|
||||
}
|
||||
},
|
||||
"psychicElemental" :
|
||||
{
|
||||
"id": 120,
|
||||
"level": 6,
|
||||
"faction": "conflux",
|
||||
"abilities": [ [ "NON_LIVING", 0, 0, 0 ] ], //magic elementals shouldn't get morale
|
||||
"ability_remove": [ "DOUBLE_WIDE" ],
|
||||
"upgrades": ["magicElemental"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CPSYEL.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "PSYCATTK.wav",
|
||||
"defend": "PSYCDFND.wav",
|
||||
"killed": "PSYCKILL.wav",
|
||||
"move": "PSYCMOVE.wav",
|
||||
"wince": "PSYCWNCE.wav"
|
||||
}
|
||||
},
|
||||
"magicElemental" :
|
||||
{
|
||||
"id": 121,
|
||||
"level": 6,
|
||||
"faction": "conflux",
|
||||
"abilities": [ [ "NON_LIVING", 0, 0, 0 ], //ice elementals shouldn't get morale
|
||||
[ "LEVEL_SPELL_IMMUNITY", 5, 0, 0 ] ], //magic elementals are immune to all spells
|
||||
"ability_remove": [ "DOUBLE_WIDE" ],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CMAGEL.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "MGELATTK.wav",
|
||||
"defend": "MGELDFND.wav",
|
||||
"killed": "MGELKILL.wav",
|
||||
"move": "MGELMOVE.wav",
|
||||
"wince": "MGELWNCE.wav"
|
||||
}
|
||||
},
|
||||
"iceElemental" :
|
||||
{
|
||||
"id": 123,
|
||||
"level": 3,
|
||||
"faction": "conflux",
|
||||
"abilities": [ [ "NON_LIVING", 0, 0, 0 ],
|
||||
[ "DOUBLE_WIDE", 0, 0, 0 ], //ice elemental should be treated as double-wide
|
||||
[ "CREATURE_ENCHANT_POWER", 6, 0, 0 ],
|
||||
[ "CASTS", 3, 0, 0 ],
|
||||
[ "SPELLCASTER", 2, 32, 0 ]],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CICEE.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PICEE.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ICELATTK.wav",
|
||||
"defend": "ICELDFND.wav",
|
||||
"killed": "ICELKILL.wav",
|
||||
"move": "ICELMOVE.wav",
|
||||
"shoot": "ICELSHOT.wav",
|
||||
"wince": "ICELWNCE.wav"
|
||||
}
|
||||
},
|
||||
"magmaElemental" :
|
||||
{
|
||||
"id": 125,
|
||||
"level": 5,
|
||||
"faction": "conflux",
|
||||
"abilities": [ [ "NON_LIVING", 0, 0, 0 ], //magma elementals shouldn't get morale
|
||||
[ "CREATURE_ENCHANT_POWER", 6, 0, 0 ],
|
||||
[ "CASTS", 3, 0, 0 ],
|
||||
[ "SPELLCASTER", 2, 33, 0 ]],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CSTONE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "MAGMATTK.wav",
|
||||
"defend": "MAGMDFND.wav",
|
||||
"killed": "MAGMKILL.wav",
|
||||
"move": "MAGMMOVE.wav",
|
||||
"wince": "MAGMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"stormElemental" :
|
||||
{
|
||||
"id": 127,
|
||||
"level": 2,
|
||||
"faction": "conflux",
|
||||
"abilities": [ [ "NON_LIVING", 0, 0, 0 ], //storm elementals shouldn't get morale
|
||||
[ "CREATURE_ENCHANT_POWER", 6, 0, 0 ],
|
||||
[ "CASTS", 3, 0, 0 ],
|
||||
[ "SPELLCASTER", 2, 30, 0 ]],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CSTORM.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "CPRGTIX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "STORATTK.wav",
|
||||
"defend": "STORDFND.wav",
|
||||
"killed": "STORKILL.wav",
|
||||
"move": "STORMOVE.wav",
|
||||
"shoot": "STORSHOT.wav",
|
||||
"wince": "STORWNCE.wav"
|
||||
}
|
||||
},
|
||||
"energyElemental" :
|
||||
{
|
||||
"id": 129,
|
||||
"level": 4,
|
||||
"faction": "conflux",
|
||||
"abilities": [ [ "NON_LIVING", 0, 0, 0 ] , //energy elementals shouldn't get morale //Crystal Dragons do not fly
|
||||
[ "CREATURE_ENCHANT_POWER", 6, 0, 0 ],
|
||||
[ "CASTS", 3, 0, 0 ],
|
||||
[ "SPELLCASTER", 2, 31, 0 ]],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CNRG.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ENERATTK.wav",
|
||||
"defend": "ENERDFND.wav",
|
||||
"killed": "ENERKILL.wav",
|
||||
"move": "ENERMOVE.wav",
|
||||
"wince": "ENERWNCE.wav"
|
||||
}
|
||||
},
|
||||
"firebird" :
|
||||
{
|
||||
"id": 130,
|
||||
"level": 7,
|
||||
"faction": "conflux",
|
||||
"upgrades": ["phoenix"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CFBIRD.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "FIRBATTK.wav",
|
||||
"defend": "FIRBDFND.wav",
|
||||
"killed": "FIRBKILL.wav",
|
||||
"move": "FIRBMOVE.wav",
|
||||
"wince": "FIRBWNCE.wav"
|
||||
}
|
||||
},
|
||||
"phoenix" :
|
||||
{
|
||||
"id": 131,
|
||||
"level": 7,
|
||||
"faction": "conflux",
|
||||
"abilities": [ [ "CASTS", 1, 0, 0 ], //Phoenix rebirths once
|
||||
[ "REBIRTH", 20, 0, 0 ] ], //20% of stack is resurrected
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CPHX.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "PHOEATTK.wav",
|
||||
"defend": "PHOEDFND.wav",
|
||||
"killed": "PHOEKILL.wav",
|
||||
"move": "PHOEMOVE.wav",
|
||||
"wince": "PHOEWNCE.wav"
|
||||
}
|
||||
}
|
||||
}
|
310
config/creatures/dungeon.json
Normal file
310
config/creatures/dungeon.json
Normal file
@ -0,0 +1,310 @@
|
||||
{
|
||||
"troglodyte" :
|
||||
{
|
||||
"id": 70,
|
||||
"level": 1,
|
||||
"faction": "dungeon",
|
||||
"abilities": [ [ "SPELL_IMMUNITY", 0, 62, 0 ] ], //troglodytes are immune to blind
|
||||
"upgrades": ["infernalTroglodyte"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CTROGL.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "TROGATTK.wav",
|
||||
"defend": "TROGDFND.wav",
|
||||
"killed": "TROGKILL.wav",
|
||||
"move": "TROGMOVE.wav",
|
||||
"wince": "TROGWNCE.wav"
|
||||
}
|
||||
},
|
||||
"infernalTroglodyte" :
|
||||
{
|
||||
"id": 71,
|
||||
"level": 1,
|
||||
"faction": "dungeon",
|
||||
"abilities": [ [ "SPELL_IMMUNITY", 0, 62, 0 ] ], //infernal troglodytes are immune to blind
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CITROG.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ITRGATTK.wav",
|
||||
"defend": "ITRGDFND.wav",
|
||||
"killed": "ITRGKILL.wav",
|
||||
"move": "ITRGMOVE.wav",
|
||||
"wince": "ITRGWNCE.wav"
|
||||
}
|
||||
},
|
||||
"harpy" :
|
||||
{
|
||||
"id": 72,
|
||||
"level": 2,
|
||||
"faction": "dungeon",
|
||||
"abilities": [ [ "RETURN_AFTER_STRIKE", 0, 0, 0 ] ], //Harpies return after attack
|
||||
"upgrades": ["harpyHag"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CHARPY.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "HARPATTK.wav",
|
||||
"defend": "HARPDFND.wav",
|
||||
"killed": "HARPKILL.wav",
|
||||
"move": "HARPMOVE.wav",
|
||||
"shoot": "silence",
|
||||
"wince": "HARPWNCE.wav"
|
||||
}
|
||||
},
|
||||
"harpyHag" :
|
||||
{
|
||||
"id": 73,
|
||||
"level": 2,
|
||||
"faction": "dungeon",
|
||||
"abilities": [ [ "RETURN_AFTER_STRIKE", 0, 0, 0 ], //Harpy Hags return after attack
|
||||
[ "BLOCKS_RETALIATION", 0, 0, 0 ] ], //Harpy Hags
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CHARPH.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "HHAGATTK.wav",
|
||||
"defend": "HHAGDFND.wav",
|
||||
"killed": "HHAGKILL.wav",
|
||||
"move": "HHAGMOVE.wav",
|
||||
"shoot": "HHAGSHOT.wav",
|
||||
"wince": "HHAGWNCE.wav"
|
||||
}
|
||||
},
|
||||
"beholder" :
|
||||
{
|
||||
"id": 74,
|
||||
"level": 3,
|
||||
"faction": "dungeon",
|
||||
"upgrades": ["evilEye"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CBEHOL.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "SMBALX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "BHDRATTK.wav",
|
||||
"defend": "BHDRDFND.wav",
|
||||
"killed": "BHDRKILL.wav",
|
||||
"move": "BHDRMOVE.wav",
|
||||
"shoot": "BHDRSHOT.wav",
|
||||
"wince": "BHDRWNCE.wav",
|
||||
"ext1": "BHDRDETH.wav"
|
||||
}
|
||||
},
|
||||
"evilEye" :
|
||||
{
|
||||
"id": 75,
|
||||
"level": 3,
|
||||
"faction": "dungeon",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CEVEYE.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "SMBALX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "EVLIATTK.wav",
|
||||
"defend": "EVLIDFND.wav",
|
||||
"killed": "EVLIKILL.wav",
|
||||
"move": "EVLIMOVE.wav",
|
||||
"shoot": "EVLISHOT.wav",
|
||||
"wince": "EVLIWNCE.wav",
|
||||
"ext1": "EVLIDETH.wav"
|
||||
}
|
||||
},
|
||||
"medusa" :
|
||||
{
|
||||
"id": 76,
|
||||
"level": 4,
|
||||
"faction": "dungeon",
|
||||
"abilities": [ [ "SPELL_AFTER_ATTACK", 20, 70, 2000 ] ], //medusas //minotaurs
|
||||
"upgrades": ["medusaQueen"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CMEDUS.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PMEDUSX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "MEDUATTK.wav",
|
||||
"defend": "MEDUDFND.wav",
|
||||
"killed": "MEDUKILL.wav",
|
||||
"move": "MEDUMOVE.wav",
|
||||
"shoot": "MEDUSHOT.wav",
|
||||
"wince": "MEDUWNCE.wav"
|
||||
}
|
||||
},
|
||||
"medusaQueen" :
|
||||
{
|
||||
"id": 77,
|
||||
"level": 4,
|
||||
"faction": "dungeon",
|
||||
"abilities": [ [ "SPELL_AFTER_ATTACK", 20, 70, 2000 ] ], //medusa queens //minotaur kings
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CMEDUQ.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PMEDUSX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "MEDQATTK.wav",
|
||||
"defend": "MEDQDFND.wav",
|
||||
"killed": "MEDQKILL.wav",
|
||||
"move": "MEDQMOVE.wav",
|
||||
"shoot": "MEDQSHOT.wav",
|
||||
"wince": "MEDQWNCE.wav"
|
||||
}
|
||||
},
|
||||
"minotaur" :
|
||||
{
|
||||
"id": 78,
|
||||
"level": 5,
|
||||
"faction": "dungeon",
|
||||
"abilities": [ [ "SELF_MORALE", 0, 0, 0 ] ],
|
||||
"upgrades": ["minotaurKing"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CMINOT.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "MINOATTK.wav",
|
||||
"defend": "MINODFND.wav",
|
||||
"killed": "MINOKILL.wav",
|
||||
"move": "MINOMOVE.wav",
|
||||
"wince": "MINOWNCE.wav"
|
||||
}
|
||||
},
|
||||
"minotaurKing" :
|
||||
{
|
||||
"id": 79,
|
||||
"level": 5,
|
||||
"faction": "dungeon",
|
||||
"abilities": [ [ "SELF_MORALE", 0, 0, 0 ] ],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CMINOK.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "MINKATTK.wav",
|
||||
"defend": "MINKDFND.wav",
|
||||
"killed": "MINKKILL.wav",
|
||||
"move": "MINKMOVE.wav",
|
||||
"shoot": "MINKSHOT.wav",
|
||||
"wince": "MINKWNCE.wav"
|
||||
}
|
||||
},
|
||||
"manticore" :
|
||||
{
|
||||
"id": 80,
|
||||
"level": 6,
|
||||
"faction": "dungeon",
|
||||
"upgrades": ["scorpicore"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CMCORE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "MANTATTK.wav",
|
||||
"defend": "MANTDFND.wav",
|
||||
"killed": "MANTKILL.wav",
|
||||
"move": "MANTMOVE.wav",
|
||||
"shoot": "MANTSHOT.wav",
|
||||
"wince": "MANTWNCE.wav"
|
||||
}
|
||||
},
|
||||
"scorpicore" :
|
||||
{
|
||||
"id": 81,
|
||||
"level": 6,
|
||||
"faction": "dungeon",
|
||||
"abilities": [ [ "SPELL_AFTER_ATTACK", 20, 74, 0 ] ], //scorpicore
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CCMCOR.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "SCRPATTK.wav",
|
||||
"defend": "SCRPDFND.wav",
|
||||
"killed": "SCRPKILL.wav",
|
||||
"move": "SCRPMOVE.wav",
|
||||
"shoot": "SCRPSHOT.wav",
|
||||
"wince": "SCRPWNCE.wav"
|
||||
}
|
||||
},
|
||||
"redDragon" :
|
||||
{
|
||||
"id": 82,
|
||||
"level": 7,
|
||||
"faction": "dungeon",
|
||||
"abilities": [ [ "DRAGON_NATURE", 0, 0, 0 ], //red dragon is a dragon
|
||||
[ "TWO_HEX_ATTACK_BREATH", 0, 0, 0 ], //Red Dragon has breath attack
|
||||
[ "LEVEL_SPELL_IMMUNITY", 3, 0, 0 ] ], //red dragon's spell immunity
|
||||
"upgrades": ["blackDragon"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CRDRGN.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "RDDRATTK.wav",
|
||||
"defend": "RDDRDFND.wav",
|
||||
"killed": "RDDRKILL.wav",
|
||||
"move": "RDDRMOVE.wav",
|
||||
"wince": "RDDRWNCE.wav"
|
||||
}
|
||||
},
|
||||
"blackDragon" :
|
||||
{
|
||||
"id": 83,
|
||||
"level": 7,
|
||||
"faction": "dungeon",
|
||||
"abilities": [ [ "DRAGON_NATURE", 0, 0, 0 ], //black dragon is a dragon
|
||||
[ "TWO_HEX_ATTACK_BREATH", 0, 0, 0 ], //Black Dragon has breath attack
|
||||
[ "HATE", 50, 41, 0 ], //Hate Titans
|
||||
[ "HATE", 50, 40, 0 ], //Hate Giants
|
||||
[ "LEVEL_SPELL_IMMUNITY", 5, 0, 0 ] ], //black dragon's spell immunity
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CBDRGN.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "BKDRATTK.wav",
|
||||
"defend": "BKDRDFND.wav",
|
||||
"killed": "BKDRKILL.wav",
|
||||
"move": "BKDRMOVE.wav",
|
||||
"wince": "BKDRWNCE.wav"
|
||||
}
|
||||
}
|
||||
}
|
287
config/creatures/fortress.json
Normal file
287
config/creatures/fortress.json
Normal file
@ -0,0 +1,287 @@
|
||||
{
|
||||
"gnoll" :
|
||||
{
|
||||
"id": 98,
|
||||
"level": 1,
|
||||
"faction": "fortress",
|
||||
"upgrades": ["gnollMarauder"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CGNOLL.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "GNOLATTK.wav",
|
||||
"defend": "GNOLDFND.wav",
|
||||
"killed": "GNOLKILL.wav",
|
||||
"move": "GNOLMOVE.wav",
|
||||
"wince": "GNOLWNCE.wav"
|
||||
}
|
||||
},
|
||||
"gnollMarauder" :
|
||||
{
|
||||
"id": 99,
|
||||
"level": 1,
|
||||
"faction": "fortress",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CGNOLM.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "GNLMATTK.wav",
|
||||
"defend": "GNLMDFND.wav",
|
||||
"killed": "GNLMKILL.wav",
|
||||
"move": "GNLMMOVE.wav",
|
||||
"wince": "GNLMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"lizardman" :
|
||||
{
|
||||
"id": 100,
|
||||
"level": 2,
|
||||
"extraNames": [ "primitiveLizardman", ],
|
||||
"faction": "fortress",
|
||||
"upgrades": ["lizardWarrior"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CPLIZA.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PPLIZAX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "PLIZATTK.wav",
|
||||
"defend": "PLIZDFND.wav",
|
||||
"killed": "PLIZKILL.wav",
|
||||
"move": "PLIZMOVE.wav",
|
||||
"shoot": "PLIZSHOT.wav",
|
||||
"wince": "PLIZWNCE.wav"
|
||||
}
|
||||
},
|
||||
"lizardWarrior" :
|
||||
{
|
||||
"id": 101,
|
||||
"level": 2,
|
||||
"faction": "fortress",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CALIZA.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PPLIZAX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ALIZATTK.wav",
|
||||
"defend": "ALIZDFND.wav",
|
||||
"killed": "ALIZKILL.wav",
|
||||
"move": "ALIZMOVE.wav",
|
||||
"shoot": "ALIZSHOT.wav",
|
||||
"wince": "ALIZWNCE.wav"
|
||||
}
|
||||
},
|
||||
"gorgon" :
|
||||
{
|
||||
"id": 102,
|
||||
"level": 5,
|
||||
"faction": "fortress",
|
||||
"upgrades": ["mightyGorgon"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CCGORG.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "CGORATTK.wav",
|
||||
"defend": "CGORDFND.wav",
|
||||
"killed": "CGORKILL.wav",
|
||||
"move": "CGORMOVE.wav",
|
||||
"wince": "CGORWNCE.wav"
|
||||
}
|
||||
},
|
||||
"mightyGorgon" :
|
||||
{
|
||||
"id": 103,
|
||||
"level": 5,
|
||||
"faction": "fortress",
|
||||
"abilities": [ [ "DEATH_STARE", 10, 0, 0 ] ], //mighty gorgons
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CBGOG.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "BGORATTK.wav",
|
||||
"defend": "BGORDFND.wav",
|
||||
"killed": "BGORKILL.wav",
|
||||
"move": "BGORMOVE.wav",
|
||||
"wince": "BGORWNCE.wav"
|
||||
}
|
||||
},
|
||||
"serpentFly" :
|
||||
{
|
||||
"id": 104,
|
||||
"level": 3,
|
||||
"extraNames": [ "dragonFly" ],
|
||||
"faction": "fortress",
|
||||
"abilities": [ [ "SPELL_AFTER_ATTACK", 100, 78, 0 ] ], //serpent fly
|
||||
"upgrades": ["fireDragonFly"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CDRFLY.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "DFLYATTK.wav",
|
||||
"defend": "DFLYDFND.wav",
|
||||
"killed": "DFLYKILL.wav",
|
||||
"move": "DFLYMOVE.wav",
|
||||
"wince": "DFLYWNCE.wav"
|
||||
}
|
||||
},
|
||||
"fireDragonFly" : // dragonFly is correct in-game, incorrect in HOTRAITS
|
||||
{
|
||||
"id": 105,
|
||||
"level": 3,
|
||||
"faction": "fortress",
|
||||
"abilities": [ [ "SPELL_AFTER_ATTACK", 100, 78, 0 ], //dragon fly
|
||||
[ "SPELL_AFTER_ATTACK", 100, 45, 0 ] ], //mighty gorgons
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CDRFIR.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "FDFLATTK.wav",
|
||||
"defend": "FDFLDFND.wav",
|
||||
"killed": "FDFLKILL.wav",
|
||||
"move": "FDFLMOVE.wav",
|
||||
"shoot": "FDFLSHOT.wav",
|
||||
"wince": "FDFLWNCE.wav"
|
||||
}
|
||||
},
|
||||
"basilisk" :
|
||||
{
|
||||
"id": 106,
|
||||
"level": 4,
|
||||
"faction": "fortress",
|
||||
"abilities": [ [ "SPELL_AFTER_ATTACK", 20, 70, 0 ] ], //basilisks
|
||||
"upgrades": ["greaterBasilisk"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CBASIL.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "BASLATTK.wav",
|
||||
"defend": "BASLDFND.wav",
|
||||
"killed": "BASLKILL.wav",
|
||||
"move": "BASLMOVE.wav",
|
||||
"wince": "BASLWNCE.wav"
|
||||
}
|
||||
},
|
||||
"greaterBasilisk" :
|
||||
{
|
||||
"id": 107,
|
||||
"level": 4,
|
||||
"faction": "fortress",
|
||||
"abilities": [ [ "SPELL_AFTER_ATTACK", 20, 70, 0 ] ], //greater basilisks
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CGBASI.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "GBASATTK.wav",
|
||||
"defend": "GBASDFND.wav",
|
||||
"killed": "GBASKILL.wav",
|
||||
"move": "GBASMOVE.wav",
|
||||
"wince": "GBASWNCE.wav"
|
||||
}
|
||||
},
|
||||
"wyvern" :
|
||||
{
|
||||
"id": 108,
|
||||
"level": 6,
|
||||
"faction": "fortress",
|
||||
"upgrades": ["wyvernMonarch"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CWYVER.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "WYVNATTK.wav",
|
||||
"defend": "WYVNDFND.wav",
|
||||
"killed": "WYVNKILL.wav",
|
||||
"move": "WYVNMOVE.wav",
|
||||
"wince": "WYVNWNCE.wav"
|
||||
}
|
||||
},
|
||||
"wyvernMonarch" :
|
||||
{
|
||||
"id": 109,
|
||||
"level": 6,
|
||||
"faction": "fortress",
|
||||
"abilities": [ [ "SPELL_AFTER_ATTACK", 20, 71, 0 ] ], //Wyvern Monarch
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CWYVMN.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "WYVMATTK.wav",
|
||||
"defend": "WYVMDFND.wav",
|
||||
"killed": "WYVMKILL.wav",
|
||||
"move": "WYVMMOVE.wav",
|
||||
"wince": "WYVMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"hydra" :
|
||||
{
|
||||
"id": 110,
|
||||
"level": 7,
|
||||
"faction": "fortress",
|
||||
"abilities": [ [ "BLOCKS_RETALIATION", 0, 0, 0 ], //hydras
|
||||
[ "ATTACKS_ALL_ADJACENT", 0, 0, 0 ] ], //hydras
|
||||
"upgrades": ["chaosHydra"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CHYDRA.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "HYDRATTK.wav",
|
||||
"defend": "HYDRDFND.wav",
|
||||
"killed": "HYDRKILL.wav",
|
||||
"move": "HYDRMOVE.wav",
|
||||
"wince": "HYDRWNCE.wav"
|
||||
}
|
||||
},
|
||||
"chaosHydra" :
|
||||
{
|
||||
"id": 111,
|
||||
"level": 7,
|
||||
"faction": "fortress",
|
||||
"abilities": [ [ "BLOCKS_RETALIATION", 0, 0, 0 ], //chaos hydras
|
||||
[ "ATTACKS_ALL_ADJACENT", 0, 0, 0 ] ], //chaos hydras
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CCHYDR.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "CHYDATTK.wav",
|
||||
"defend": "CHYDDFND.wav",
|
||||
"killed": "CHYDKILL.wav",
|
||||
"move": "CHYDMOVE.wav",
|
||||
"wince": "CHYDWNCE.wav"
|
||||
}
|
||||
}
|
||||
}
|
309
config/creatures/inferno.json
Normal file
309
config/creatures/inferno.json
Normal file
@ -0,0 +1,309 @@
|
||||
{
|
||||
"imp" :
|
||||
{
|
||||
"id": 42,
|
||||
"level": 1,
|
||||
"faction": "inferno",
|
||||
"upgrades": ["familiar"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CIMP.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "IMPPATTK.wav",
|
||||
"defend": "IMPPDFND.wav",
|
||||
"killed": "IMPPKILL.wav",
|
||||
"move": "IMPPMOVE.wav",
|
||||
"wince": "IMPPWNCE.wav"
|
||||
}
|
||||
},
|
||||
"familiar" :
|
||||
{
|
||||
"id": 43,
|
||||
"level": 1,
|
||||
"faction": "inferno",
|
||||
"abilities": [ [ "MANA_CHANNELING", 20, 0, 0 ] ], //familiars
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CFAMIL.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "FMLRATTK.wav",
|
||||
"defend": "FMLRDFND.wav",
|
||||
"killed": "FMLRKILL.wav",
|
||||
"move": "FMLRMOVE.wav",
|
||||
"wince": "FMLRWNCE.wav"
|
||||
}
|
||||
},
|
||||
"gog" :
|
||||
{
|
||||
"id": 44,
|
||||
"level": 2,
|
||||
"faction": "inferno",
|
||||
"upgrades": ["magog"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CGOG.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "CPRGOGX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "GOGGATTK.wav",
|
||||
"defend": "GOGGDFND.wav",
|
||||
"killed": "GOGGKILL.wav",
|
||||
"move": "GOGGMOVE.wav",
|
||||
"shoot": "GOGGSHOT.wav",
|
||||
"wince": "GOGGWNCE.wav",
|
||||
"ext1": "GOGFLAME.wav"
|
||||
}
|
||||
},
|
||||
"magog" :
|
||||
{
|
||||
"id": 45,
|
||||
"level": 2,
|
||||
"faction": "inferno",
|
||||
"abilities": [ [ "SPELL_LIKE_ATTACK", 0, 21, 0 ] ], //magogs fire with fireballs
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CMAGOG.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "CPRGOGX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "MGOGATTK.wav",
|
||||
"defend": "MGOGDFND.wav",
|
||||
"killed": "MGOGKILL.wav",
|
||||
"move": "MGOGMOVE.wav",
|
||||
"shoot": "MGOGSHOT.wav",
|
||||
"wince": "MGOGWNCE.wav",
|
||||
"ext1": "GOGFLAME.wav"
|
||||
}
|
||||
},
|
||||
"hellHound" :
|
||||
{
|
||||
"id": 46,
|
||||
"level": 3,
|
||||
"faction": "inferno",
|
||||
"upgrades": ["cerberus"],
|
||||
"ability_remove": [ "FLYING" ], //hell hound doesn't fly
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CHHOUN.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "HHNDATTK.wav",
|
||||
"defend": "HHNDDFND.wav",
|
||||
"killed": "HHNDKILL.wav",
|
||||
"move": "HHNDMOVE.wav",
|
||||
"wince": "HHNDWNCE.wav"
|
||||
}
|
||||
},
|
||||
"cerberus" :
|
||||
{
|
||||
"id": 47,
|
||||
"level": 3,
|
||||
"faction": "inferno",
|
||||
"abilities": [ [ "THREE_HEADED_ATTACK", 0, 0, 0 ],
|
||||
[ "BLOCKS_RETALIATION", 0, 0, 0 ] ],
|
||||
"ability_remove": [ "FLYING" ], //cerberus doesn't fly
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CCERBU.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "CERBATTK.wav",
|
||||
"defend": "CERBDFND.wav",
|
||||
"killed": "CERBKILL.wav",
|
||||
"move": "CERBMOVE.wav",
|
||||
"wince": "CERBWNCE.wav"
|
||||
}
|
||||
},
|
||||
"demon" :
|
||||
{
|
||||
"id": 48,
|
||||
"level": 4,
|
||||
"faction": "inferno",
|
||||
"upgrades": ["hornedDemon"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "COHDEM.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "SHDMATTK.wav",
|
||||
"defend": "SHDMDFND.wav",
|
||||
"killed": "SHDMKILL.wav",
|
||||
"move": "SHDMMOVE.wav",
|
||||
"wince": "SHDMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"hornedDemon" :
|
||||
{
|
||||
"id": 49,
|
||||
"level": 4,
|
||||
"faction": "inferno",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CTHDEM.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "DHDMATTK.wav",
|
||||
"defend": "DHDMDFND.wav",
|
||||
"killed": "DHDMKILL.wav",
|
||||
"move": "DHDMMOVE.wav",
|
||||
"wince": "DHDMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"pitFiend" :
|
||||
{
|
||||
"id": 50,
|
||||
"level": 5,
|
||||
"faction": "inferno",
|
||||
"upgrades": ["pitLord"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CPFIEN.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "PFNDATTK.wav",
|
||||
"defend": "PFNDDFND.wav",
|
||||
"killed": "PFNDKILL.wav",
|
||||
"move": "PFNDMOVE.wav",
|
||||
"wince": "PFNDWNCE.wav"
|
||||
}
|
||||
},
|
||||
"pitLord" :
|
||||
{
|
||||
"id": 51,
|
||||
"level": 5,
|
||||
"faction": "inferno",
|
||||
"abilities": [ [ "DAEMON_SUMMONING", 50, 48, 0 ],
|
||||
[ "CASTS", 1, 0, 0] ], //pit lord
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CPFOE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "PFOEATTK.wav",
|
||||
"defend": "PFOEDFND.wav",
|
||||
"killed": "PFOEKILL.wav",
|
||||
"move": "PFOEMOVE.wav",
|
||||
"wince": "PFOEWNCE.wav"
|
||||
}
|
||||
},
|
||||
"efreet" :
|
||||
{
|
||||
"id": 52,
|
||||
"level": 6,
|
||||
"faction": "inferno",
|
||||
"abilities": [ [ "HATE", 50, 37, 0 ],
|
||||
[ "HATE", 50, 36, 0 ],
|
||||
[ "FLYING", 0, 0, 0 ], //efreeti hate master genies
|
||||
[ "FIRE_IMMUNITY", 0, 0, 0 ] ], //efreeti hate genies
|
||||
"upgrades": ["efreetSultan"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CEFREE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "EFRTATTK.wav",
|
||||
"defend": "EFRTDFND.wav",
|
||||
"killed": "EFRTKILL.wav",
|
||||
"move": "EFRTMOVE.wav",
|
||||
"wince": "EFRTWNCE.wav"
|
||||
}
|
||||
},
|
||||
"efreetSultan" :
|
||||
{
|
||||
"id": 53,
|
||||
"level": 6,
|
||||
"faction": "inferno",
|
||||
"abilities": [ [ "HATE", 50, 37, 0 ],
|
||||
[ "HATE", 50, 36, 0 ],
|
||||
[ "FLYING", 0, 0, 0 ], //efreet sultans hate master genies
|
||||
[ "FIRE_SHIELD", 0, 36, 0 ], //efreet sultans hate genies
|
||||
[ "FIRE_IMMUNITY", 0, 0, 0 ] ], //efreet sultan //Efreet Sultan
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CEFRES.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ESULATTK.wav",
|
||||
"defend": "ESULDFND.wav",
|
||||
"killed": "ESULKILL.wav",
|
||||
"move": "ESULMOVE.wav",
|
||||
"shoot": "ESULSHOT.wav",
|
||||
"wince": "ESULWNCE.wav"
|
||||
}
|
||||
},
|
||||
"devil" :
|
||||
{
|
||||
"id": 54,
|
||||
"level": 7,
|
||||
"faction": "inferno",
|
||||
"ability_remove": [ "FLYING" ], //use teleport instead
|
||||
"abilities": [ [ "HATE", 50, 13, 0 ],
|
||||
[ "FLYING", 0, 1, 0], //teleport
|
||||
[ "HATE", 50, 12, 0 ],
|
||||
[ "ENEMY_LUCK_DECREASING", 1, 0, 0 ], //devils //devils hate archangles
|
||||
[ "BLOCKS_RETALIATION", 0, 0, 0 ] ], //devils //devils hate angels
|
||||
"upgrades": ["archDevil"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CDEVIL.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "DEVLATTK.wav",
|
||||
"defend": "DEVLDFND.wav",
|
||||
"killed": "DEVLKILL.wav",
|
||||
"move": "DEVLMOVE.wav",
|
||||
"wince": "DEVLWNCE.wav",
|
||||
"ext1": "DEVLEXT1.wav",
|
||||
"ext2": "DEVLEXT2.wav"
|
||||
}
|
||||
},
|
||||
"archDevil" :
|
||||
{
|
||||
"id": 55,
|
||||
"level": 7,
|
||||
"faction": "inferno",
|
||||
"ability_remove": [ "FLYING" ], //use teleport instead
|
||||
"abilities": [ [ "HATE", 50, 13, 0 ],
|
||||
[ "HATE", 50, 12, 0 ],
|
||||
[ "FLYING", 0, 1, 0],
|
||||
[ "ENEMY_LUCK_DECREASING", 1, 0, 0 ], //archdevils //archdevils hate archangles
|
||||
[ "BLOCKS_RETALIATION", 0, 0, 0 ] ], //archdevils //archdevils hate angels
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CADEVL.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ADVLATTK.wav",
|
||||
"defend": "ADVLDFND.wav",
|
||||
"killed": "ADVLKILL.wav",
|
||||
"move": "ADVLMOVE.wav",
|
||||
"wince": "ADVLWNCE.wav",
|
||||
"startMoving": "ADVLEXT1.wav",
|
||||
"stopMoving": "ADVLEXT2.wav"
|
||||
}
|
||||
}
|
||||
}
|
294
config/creatures/necropolis.json
Normal file
294
config/creatures/necropolis.json
Normal file
@ -0,0 +1,294 @@
|
||||
{
|
||||
"skeleton" :
|
||||
{
|
||||
"id": 56,
|
||||
"level": 1,
|
||||
"faction": "necropolis",
|
||||
"upgrades": ["skeletonWarrior"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CSKELE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "SKELATTK.wav",
|
||||
"defend": "SKELDFND.wav",
|
||||
"killed": "SKELKILL.wav",
|
||||
"move": "SKELMOVE.wav",
|
||||
"wince": "SKELWNCE.wav"
|
||||
}
|
||||
},
|
||||
"skeletonWarrior" :
|
||||
{
|
||||
"id": 57,
|
||||
"level": 1,
|
||||
"faction": "necropolis",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CWSKEL.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "SKLWATTK.wav",
|
||||
"defend": "SKLWDFND.wav",
|
||||
"killed": "SKLWKILL.wav",
|
||||
"move": "SKLWMOVE.wav",
|
||||
"wince": "SKLWWNCE.wav"
|
||||
}
|
||||
},
|
||||
"walkingDead" :
|
||||
{
|
||||
"id": 58,
|
||||
"level": 2,
|
||||
"extraNames": [ "zombie" ], //FIXME: zombie is a name of upgrade but not in HOTRAITS
|
||||
"faction" : "necropolis",
|
||||
"upgrades": ["zombieLord"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CZOMBI.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ZOMBATTK.wav",
|
||||
"defend": "ZOMBDFND.wav",
|
||||
"killed": "ZOMBKILL.wav",
|
||||
"move": "ZOMBMOVE.wav",
|
||||
"wince": "ZOMBWNCE.wav"
|
||||
}
|
||||
},
|
||||
"zombieLord" : //FIXME: zombie is a correct in-name but not in HOTRAITS.TXT
|
||||
{
|
||||
"id": 59,
|
||||
"level": 2,
|
||||
"faction": "necropolis",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CZOMLO.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ZMBLATTK.wav",
|
||||
"defend": "ZMBLDFND.wav",
|
||||
"killed": "ZMBLKILL.wav",
|
||||
"move": "ZMBLMOVE.wav",
|
||||
"wince": "ZMBLWNCE.wav"
|
||||
}
|
||||
},
|
||||
"wight" :
|
||||
{
|
||||
"id": 60,
|
||||
"level": 3,
|
||||
"faction": "necropolis",
|
||||
"abilities": [ [ "FULL_HP_REGENERATION", 0, 1, 0 ] ], //wight
|
||||
"upgrades": ["wraith"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CWIGHT.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "WGHTATTK.wav",
|
||||
"defend": "WGHTDFND.wav",
|
||||
"killed": "WGHTKILL.wav",
|
||||
"move": "WGHTMOVE.wav",
|
||||
"wince": "WGHTWNCE.wav"
|
||||
}
|
||||
},
|
||||
"wraith" :
|
||||
{
|
||||
"id": 61,
|
||||
"level": 3,
|
||||
"faction": "necropolis",
|
||||
"abilities": [ [ "FULL_HP_REGENERATION", 0, 1, 0 ], //wraith
|
||||
[ "MANA_DRAIN", 2, 0, 0 ] ],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CWRAIT.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "WRTHATTK.wav",
|
||||
"defend": "WRTHDFND.wav",
|
||||
"killed": "WRTHKILL.wav",
|
||||
"move": "WRTHMOVE.wav",
|
||||
"wince": "WRTHWNCE.wav"
|
||||
}
|
||||
},
|
||||
"vampire" :
|
||||
{
|
||||
"id": 62,
|
||||
"level": 4,
|
||||
"faction": "necropolis",
|
||||
"abilities": [ [ "BLOCKS_RETALIATION", 0, 0, 0 ] ], //vampires //vampire lords
|
||||
"upgrades": ["vampireLord"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CVAMP.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "VAMPATTK.wav",
|
||||
"defend": "VAMPDFND.wav",
|
||||
"killed": "VAMPKILL.wav",
|
||||
"move": "VAMPMOVE.wav",
|
||||
"wince": "VAMPWNCE.wav",
|
||||
"startMoving": "VAMPEXT1.wav",
|
||||
"stopMoving": "VAMPEXT2.wav"
|
||||
}
|
||||
},
|
||||
"vampireLord" :
|
||||
{
|
||||
"id": 63,
|
||||
"level": 4,
|
||||
"faction": "necropolis",
|
||||
"abilities": [ [ "LIFE_DRAIN", 0, 0, 0 ],
|
||||
[ "BLOCKS_RETALIATION", 0, 0, 0 ] ], //vampire lords
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CNOSFE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "NOSFATTK.wav",
|
||||
"defend": "NOSFDFND.wav",
|
||||
"killed": "NOSFKILL.wav",
|
||||
"move": "NOSFMOVE.wav",
|
||||
"shoot": "NOSFSHOT.wav",
|
||||
"wince": "NOSFWNCE.wav",
|
||||
"ext1": "NOSFEXT1.wav",
|
||||
"ext2": "NOSFEXT2.wav"
|
||||
}
|
||||
},
|
||||
"lich" :
|
||||
{
|
||||
"id": 64,
|
||||
"level": 5,
|
||||
"faction": "necropolis",
|
||||
"abilities": [ [ "SPELL_LIKE_ATTACK", 0, 76, 0 ] ], //liches
|
||||
"upgrades": ["powerLich"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CLICH.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLICH.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "LICHATTK.wav",
|
||||
"defend": "LICHDFND.wav",
|
||||
"killed": "LICHKILL.wav",
|
||||
"move": "LICHMOVE.wav",
|
||||
"shoot": "LICHSHOT.wav",
|
||||
"wince": "LICHWNCE.wav",
|
||||
"ext1": "LICHATK2.wav"
|
||||
}
|
||||
},
|
||||
"powerLich" :
|
||||
{
|
||||
"id": 65,
|
||||
"level": 5,
|
||||
"faction": "necropolis",
|
||||
"abilities": [ [ "SPELL_LIKE_ATTACK", 0, 76, 0 ] ], //power liches
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CPLICH.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLICH.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "PLCHATTK.wav",
|
||||
"defend": "PLCHDFND.wav",
|
||||
"killed": "PLCHKILL.wav",
|
||||
"move": "PLCHMOVE.wav",
|
||||
"shoot": "PLCHSHOT.wav",
|
||||
"wince": "PLCHWNCE.wav"
|
||||
}
|
||||
},
|
||||
"blackKnight" :
|
||||
{
|
||||
"id": 66,
|
||||
"level": 6,
|
||||
"faction": "necropolis",
|
||||
"abilities": [ [ "SPELL_AFTER_ATTACK", 20, 42, 0 ] ], //black knights
|
||||
"upgrades": ["dreadKnight"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CBKNIG.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "BKNTATTK.wav",
|
||||
"defend": "BKNTDFND.wav",
|
||||
"killed": "BKNTKILL.wav",
|
||||
"move": "BKNTMOVE.wav",
|
||||
"wince": "BKNTWNCE.wav"
|
||||
}
|
||||
},
|
||||
"dreadKnight" :
|
||||
{
|
||||
"id": 67,
|
||||
"level": 6,
|
||||
"faction": "necropolis",
|
||||
"abilities": [ [ "SPELL_AFTER_ATTACK", 20, 42, 0 ], //dread knights
|
||||
[ "DOUBLE_DAMAGE_CHANCE", 20, 0, 0 ] ], //vampire lords
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CBLORD.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "BLRDATTK.wav",
|
||||
"defend": "BLRDDFND.wav",
|
||||
"killed": "BLRDKILL.wav",
|
||||
"move": "BLRDMOVE.wav",
|
||||
"wince": "BLRDWNCE.wav"
|
||||
}
|
||||
},
|
||||
"boneDragon" :
|
||||
{
|
||||
"id": 68,
|
||||
"level": 7,
|
||||
"faction": "necropolis",
|
||||
"abilities": [ [ "DRAGON_NATURE", 0, 0, 0 ] ], //bone dragon is a dragon
|
||||
"upgrades": ["ghostDragon"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CNDRGN.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "BODRATTK.wav",
|
||||
"defend": "BODRDFND.wav",
|
||||
"killed": "BODRKILL.wav",
|
||||
"move": "BODRMOVE.wav",
|
||||
"wince": "BODRWNCE.wav"
|
||||
}
|
||||
},
|
||||
"ghostDragon" :
|
||||
{
|
||||
"id": 69,
|
||||
"level": 7,
|
||||
"faction": "necropolis",
|
||||
"abilities": [ [ "DRAGON_NATURE", 0, 0, 0 ], //ghost dragon is a dragon
|
||||
[ "SPELL_AFTER_ATTACK", 20, 75, 0 ] ], //ghost dragon
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CHDRGN.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "GHDRATTK.wav",
|
||||
"defend": "GHDRDFND.wav",
|
||||
"killed": "GHDRKILL.wav",
|
||||
"move": "GHDRMOVE.wav",
|
||||
"wince": "GHDRWNCE.wav"
|
||||
}
|
||||
}
|
||||
}
|
333
config/creatures/neutral.json
Normal file
333
config/creatures/neutral.json
Normal file
@ -0,0 +1,333 @@
|
||||
// Neutral creatures as in SoD
|
||||
{
|
||||
"goldGolem" :
|
||||
{
|
||||
"id": 116,
|
||||
"level": 4,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "SPELL_DAMAGE_REDUCTION", 85, -1, 0 ], //gold golems reduce dmg from spells
|
||||
[ "NON_LIVING", 0, 0, 0 ] ], //diamond golems are non-living
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CGGOLE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "GGLMATTK.wav",
|
||||
"defend": "GGLMDFND.wav",
|
||||
"killed": "GGLMKILL.wav",
|
||||
"move": "GGLMMOVE.wav",
|
||||
"wince": "GGLMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"diamondGolem" :
|
||||
{
|
||||
"id": 117,
|
||||
"level": 5,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "SPELL_DAMAGE_REDUCTION", 95, -1, 0 ], //diamond golems reduce dmg from spells
|
||||
[ "NON_LIVING", 0, 0, 0 ] ], //psychic elementals shouldn't get morale
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CDGOLE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "DGLMATTK.wav",
|
||||
"defend": "DGLMDFND.wav",
|
||||
"killed": "DGLMKILL.wav",
|
||||
"move": "DGLMMOVE.wav",
|
||||
"wince": "DGLMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"azureDragon" :
|
||||
{
|
||||
"id": 132,
|
||||
"level": 10,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "DRAGON_NATURE", 0, 0, 0 ],
|
||||
[ "TWO_HEX_ATTACK_BREATH", 0, 0, 0 ], //azure dragon's breath
|
||||
[ "FEARLESS", 0, 0, 0 ], //azure dragon is immune to fear
|
||||
[ "LEVEL_SPELL_IMMUNITY", 3, 0, 0 ], //immunity spell levels 1-3
|
||||
[ "FEAR", 0, 0, 0]], //azure dragon is a dragon
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CADRGN.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "AZURATTK.wav",
|
||||
"defend": "AZURDFND.wav",
|
||||
"killed": "AZURKILL.wav",
|
||||
"move": "AZURMOVE.wav",
|
||||
"wince": "AZURWNCE.wav"
|
||||
}
|
||||
},
|
||||
"crystalDragon" :
|
||||
{
|
||||
"id": 133,
|
||||
"level": 10,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "DRAGON_NATURE", 0, 0, 0 ] ], //crystal dragon is a dragon
|
||||
"ability_remove": [ "FLYING" ],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CCDRGN.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "CRYSATTK.wav",
|
||||
"defend": "CRYSDFND.wav",
|
||||
"killed": "CRYSKILL.wav",
|
||||
"move": "CRYSMOVE.wav",
|
||||
"wince": "CRYSWNCE.wav"
|
||||
}
|
||||
},
|
||||
"fairieDragon" :
|
||||
{
|
||||
"id": 134,
|
||||
"level": 8,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "DRAGON_NATURE", 0, 0, 0 ], //faerie dragon is a dragon
|
||||
[ "CASTS", 5, 0, 0 ],
|
||||
[ "CREATURE_SPELL_POWER", 500, 0, 0], //5 spell power per dragon
|
||||
[ "SPELLCASTER", 2, 15, 10 ], //magic arrow
|
||||
[ "SPELLCASTER", 2, 16, 22 ], //ice bolt
|
||||
[ "SPELLCASTER", 2, 17, 22 ], //thunderbolt
|
||||
[ "SPELLCASTER", 2, 19, 5 ], //chain lightning
|
||||
[ "SPELLCASTER", 2, 20, 10 ], //frost ring
|
||||
[ "SPELLCASTER", 2, 21, 21 ], //fireball
|
||||
[ "SPELLCASTER", 2, 22, 5 ], //inferno
|
||||
[ "SPELLCASTER", 2, 23, 5 ]], //meteor shower
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CFDRGN.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "FAERATTK.wav",
|
||||
"defend": "FAERDFND.wav",
|
||||
"killed": "FAERKILL.wav",
|
||||
"move": "FAERMOVE.wav",
|
||||
"shoot": "FAERSHOT.wav",
|
||||
"wince": "FAERWNCE.wav"
|
||||
}
|
||||
},
|
||||
"rustDragon" :
|
||||
{
|
||||
"id": 135,
|
||||
"level": 10,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "SPELL_AFTER_ATTACK", 100, 80, 0 ], //always reduce defense
|
||||
[ "ACID_BREATH", 25, 0, 20 ], //20% chance to do 25 damage
|
||||
[ "DRAGON_NATURE", 0, 0, 0 ] ], //rust dragon is a dragon
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CRSDGN.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "RUSTATTK.wav",
|
||||
"defend": "RUSTDFND.wav",
|
||||
"killed": "RUSTKILL.wav",
|
||||
"move": "RUSTMOVE.wav",
|
||||
"wince": "RUSTWNCE.wav"
|
||||
}
|
||||
},
|
||||
"enchanter" :
|
||||
{
|
||||
"id": 136,
|
||||
"level": 6,
|
||||
"extraNames": [ "enchanters" ],
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "NO_WALL_PENALTY", 0, 0, 0 ],
|
||||
[ "ENCHANTER", 3, 28, 3], //air shield
|
||||
[ "ENCHANTER", 3, 41, 3], //bless
|
||||
[ "ENCHANTER", 3, 45, 3], //wealness
|
||||
[ "ENCHANTER", 3, 46, 3], //stone skin
|
||||
[ "ENCHANTER", 3, 53, 3], //slow
|
||||
[ "ENCHANTER", 3, 54, 3], //haster
|
||||
[ "CASTS", 5, 0, 0]], //Enchanter
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CENCH.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "SMBALX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ENCHATTK.wav",
|
||||
"defend": "ENCHDFND.wav",
|
||||
"killed": "ENCHKILL.wav",
|
||||
"move": "ENCHMOVE.wav",
|
||||
"shoot": "ENCHSHOT.wav",
|
||||
"wince": "ENCHWNCE.wav"
|
||||
}
|
||||
},
|
||||
"sharpshooter" :
|
||||
{
|
||||
"id": 137,
|
||||
"level": 4,
|
||||
"extraNames": [ "sharpshooters" ],
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "NO_WALL_PENALTY", 0, 0, 0 ],
|
||||
[ "NO_DISTANCE_PENALTY", 0, 0, 0 ] ], //Sharpshooter
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CSHARP.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PELFX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "HCRSATTK.wav",
|
||||
"defend": "HCRSDFND.wav",
|
||||
"killed": "HCRSKILL.wav",
|
||||
"move": "HCRSMOVE.wav",
|
||||
"shoot": "HCRSSHOT.wav",
|
||||
"wince": "HCRSWNCE.wav"
|
||||
}
|
||||
},
|
||||
"halfling" :
|
||||
{
|
||||
"id": 138,
|
||||
"level": 1,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CHALF.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PHALF.DEF",
|
||||
"spinning": true
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "HALFATTK.wav",
|
||||
"defend": "HALFDFND.wav",
|
||||
"killed": "HALFKILL.wav",
|
||||
"move": "HALFMOVE.wav",
|
||||
"shoot": "HALFSHOT.wav",
|
||||
"wince": "HALFWNCE.wav"
|
||||
}
|
||||
},
|
||||
"peasant" :
|
||||
{
|
||||
"id": 139,
|
||||
"level": 1,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CPEAS.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "PSNTATTK.wav",
|
||||
"defend": "PSNTDFND.wav",
|
||||
"killed": "PSNTKILL.wav",
|
||||
"move": "PSNTMOVE.wav",
|
||||
"wince": "PSNTWNCE.wav"
|
||||
}
|
||||
},
|
||||
"boar" :
|
||||
{
|
||||
"id": 140,
|
||||
"level": 2,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "DOUBLE_WIDE", 0, 0, 0 ] ], //boar should be treated as double-wide
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CBOAR.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "BOARATTK.wav",
|
||||
"defend": "BOARDFND.wav",
|
||||
"killed": "BOARKILL.wav",
|
||||
"move": "BOARMOVE.wav",
|
||||
"wince": "BOARWNCE.wav"
|
||||
}
|
||||
},
|
||||
"mummy" :
|
||||
{
|
||||
"id": 141,
|
||||
"level": 3,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "UNDEAD", 0, 0, 0 ] ],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CMUMMY.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "MUMYATTK.wav",
|
||||
"defend": "MUMYDFND.wav",
|
||||
"killed": "MUMYKILL.wav",
|
||||
"move": "MUMYMOVE.wav",
|
||||
"wince": "MUMYWNCE.wav"
|
||||
}
|
||||
},
|
||||
"nomad" :
|
||||
{
|
||||
"id": 142,
|
||||
"level": 3,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "DOUBLE_WIDE", 0, 0, 0 ] ], //nomads should be treated as double-wide
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CNOMAD.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "NMADATTK.wav",
|
||||
"defend": "NMADDFND.wav",
|
||||
"killed": "NMADKILL.wav",
|
||||
"move": "NMADMOVE.wav",
|
||||
"wince": "NMADWNCE.wav"
|
||||
}
|
||||
},
|
||||
"rogue" :
|
||||
{
|
||||
"id": 143,
|
||||
"level": 2,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CROGUE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ROGUATTK.wav",
|
||||
"defend": "ROGUDFND.wav",
|
||||
"killed": "ROGUKILL.wav",
|
||||
"move": "ROGUMOVE.wav",
|
||||
"wince": "ROGUWNCE.wav"
|
||||
}
|
||||
},
|
||||
"troll" :
|
||||
{
|
||||
"id": 144,
|
||||
"level": 5,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "FULL_HP_REGENERATION", 0, 0, 0 ] ], //troll
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CTROLL.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "TRLLATTK.wav",
|
||||
"defend": "TRLLDFND.wav",
|
||||
"killed": "TRLLKILL.wav",
|
||||
"move": "TRLLMOVE.wav",
|
||||
"wince": "TRLLWNCE.wav"
|
||||
}
|
||||
}
|
||||
}
|
291
config/creatures/rampart.json
Normal file
291
config/creatures/rampart.json
Normal file
@ -0,0 +1,291 @@
|
||||
{
|
||||
"centaur" :
|
||||
{
|
||||
"id": 14,
|
||||
"level": 1,
|
||||
"faction": "rampart",
|
||||
"upgrades": ["centaurCaptain"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CCENTR.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "CNTRATTK.wav",
|
||||
"defend": "CNTRDFND.wav",
|
||||
"killed": "CNTRKILL.wav",
|
||||
"move": "CNTRMOVE.wav",
|
||||
"shoot": "CNTRSHOT.wav",
|
||||
"wince": "CNTRWNCE.wav"
|
||||
}
|
||||
},
|
||||
"centaurCaptain" :
|
||||
{
|
||||
"id": 15,
|
||||
"level": 1,
|
||||
"faction": "rampart",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CECENT.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ECNTATTK.wav",
|
||||
"defend": "ECNTDFND.wav",
|
||||
"killed": "ECNTKILL.wav",
|
||||
"move": "ECNTMOVE.wav",
|
||||
"wince": "ECNTWNCE.wav"
|
||||
}
|
||||
},
|
||||
"dwarf" :
|
||||
{
|
||||
"id": 16,
|
||||
"level": 2,
|
||||
"faction": "rampart",
|
||||
"abilities": [ [ "MAGIC_RESISTANCE", 20, 0, 0 ] ], //dwarf's magic resistance 20%
|
||||
"upgrades": ["battleDwarf"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CDWARF.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "DWRFATTK.wav",
|
||||
"defend": "DWRFDFND.wav",
|
||||
"killed": "DWRFKILL.wav",
|
||||
"move": "DWRFMOVE.wav",
|
||||
"wince": "DWRFWNCE.wav"
|
||||
}
|
||||
},
|
||||
"battleDwarf" :
|
||||
{
|
||||
"id": 17,
|
||||
"level": 2,
|
||||
"faction": "rampart",
|
||||
"abilities": [ [ "MAGIC_RESISTANCE", 40, 0, 0 ] ], //battle dwarf's magic resistance 40%
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CBDWAR.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "BDRFATTK.wav",
|
||||
"defend": "BDRFDFND.wav",
|
||||
"killed": "BDRFKILL.wav",
|
||||
"move": "BDRFMOVE.wav",
|
||||
"wince": "BDRFWNCE.wav"
|
||||
}
|
||||
},
|
||||
"woodElf" :
|
||||
{
|
||||
"id": 18,
|
||||
"level": 3,
|
||||
"faction": "rampart",
|
||||
"upgrades": ["grandElf"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CELF.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PELFX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "WELFATTK.wav",
|
||||
"defend": "WELFDFND.wav",
|
||||
"killed": "WELFKILL.wav",
|
||||
"move": "WELFMOVE.wav",
|
||||
"shoot": "WELFSHOT.wav",
|
||||
"wince": "WELFWNCE.wav"
|
||||
}
|
||||
},
|
||||
"grandElf" :
|
||||
{
|
||||
"id": 19,
|
||||
"level": 3,
|
||||
"faction": "rampart",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CGRELF.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PELFX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "GELFATTK.wav",
|
||||
"defend": "GELFDFND.wav",
|
||||
"killed": "GELFKILL.wav",
|
||||
"move": "GELFMOVE.wav",
|
||||
"shoot": "GELFSHOT.wav",
|
||||
"wince": "GELFWNCE.wav"
|
||||
}
|
||||
},
|
||||
"pegasus" :
|
||||
{
|
||||
"id": 20,
|
||||
"level": 4,
|
||||
"faction": "rampart",
|
||||
"abilities": [ [ "CHANGES_SPELL_COST_FOR_ENEMY", 2, 0, 0 ] ], //pegasus makes spell cost higher for enemy mage
|
||||
"upgrades": ["silverPegasus"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CPEGAS.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "PEGAATTK.wav",
|
||||
"defend": "PEGADFND.wav",
|
||||
"killed": "PEGAKILL.wav",
|
||||
"move": "PEGAMOVE.wav",
|
||||
"wince": "PEGAWNCE.wav"
|
||||
}
|
||||
},
|
||||
"silverPegasus" :
|
||||
{
|
||||
"id": 21,
|
||||
"level": 4,
|
||||
"faction": "rampart",
|
||||
"abilities": [ [ "CHANGES_SPELL_COST_FOR_ENEMY", 2, 0, 0 ] ], //silver pegasus makes spell cost higher for enemy mage
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CAPEGS.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "APEGATTK.wav",
|
||||
"defend": "APEGDFND.wav",
|
||||
"killed": "APEGKILL.wav",
|
||||
"move": "APEGMOVE.wav",
|
||||
"wince": "APEGWNCE.wav"
|
||||
}
|
||||
},
|
||||
"dendroidGuard" :
|
||||
{
|
||||
"id": 22,
|
||||
"level": 5,
|
||||
"faction": "rampart",
|
||||
"abilities": [ [ "SPELL_AFTER_ATTACK", 100, 72, 0 ] ], //dendroids cast bind
|
||||
"upgrades": ["dendroidSoldier"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CTREE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "TREEATTK.wav",
|
||||
"defend": "TREEDFND.wav",
|
||||
"killed": "TREEKILL.wav",
|
||||
"move": "TREEMOVE.wav",
|
||||
"wince": "TREEWNCE.wav"
|
||||
}
|
||||
},
|
||||
"dendroidSoldier" :
|
||||
{
|
||||
"id": 23,
|
||||
"level": 5,
|
||||
"faction": "rampart",
|
||||
"abilities": [ [ "SPELL_AFTER_ATTACK", 100, 72, 0 ] ], //dendroid guards cast bind
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CBTREE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "BTREATTK.wav",
|
||||
"defend": "BTREDFND.wav",
|
||||
"killed": "BTREKILL.wav",
|
||||
"move": "BTREMOVE.wav",
|
||||
"wince": "BTREWNCE.wav"
|
||||
}
|
||||
},
|
||||
"unicorn" :
|
||||
{
|
||||
"id": 24,
|
||||
"level": 6,
|
||||
"faction": "rampart",
|
||||
"abilities": [ [ "SPELL_RESISTANCE_AURA", 0, 55, 0 ], //unicorn
|
||||
[ "SPELL_AFTER_ATTACK", 20, 62, 0 ] ], //unicorns cast blind with 20% probability
|
||||
"upgrades": ["warUnicorn"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CUNICO.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "UNICATTK.wav",
|
||||
"defend": "UNICDFND.wav",
|
||||
"killed": "UNICKILL.wav",
|
||||
"move": "UNICMOVE.wav",
|
||||
"wince": "UNICWNCE.wav"
|
||||
}
|
||||
},
|
||||
"warUnicorn" :
|
||||
{
|
||||
"id": 25,
|
||||
"level": 6,
|
||||
"faction": "rampart",
|
||||
"abilities": [ [ "SPELL_RESISTANCE_AURA", 20, 55, 0 ], //war unicorn
|
||||
[ "SPELL_AFTER_ATTACK", 20, 62, 0 ] ], //war unicorns cast blind with 20% probability
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CWUNIC.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "WUNCATTK.wav",
|
||||
"defend": "WUNCDFND.wav",
|
||||
"killed": "WUNCKILL.wav",
|
||||
"move": "WUNCMOVE.wav",
|
||||
"shoot": "WUNCSHOT.wav",
|
||||
"wince": "WUNCWNCE.wav"
|
||||
}
|
||||
},
|
||||
"greenDragon" :
|
||||
{
|
||||
"id": 26,
|
||||
"level": 7,
|
||||
"faction": "rampart",
|
||||
"abilities": [ [ "DRAGON_NATURE", 0, 0, 0 ], //green dragon is a dragon
|
||||
[ "TWO_HEX_ATTACK_BREATH", 0, 0, 0 ], //green dragon's breath
|
||||
[ "LEVEL_SPELL_IMMUNITY", 3, 0, 0 ] ], //green dragon's spell immunity
|
||||
"upgrades": ["goldDragon"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CGDRAG.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "GRDRATTK.wav",
|
||||
"defend": "GRDRDFND.wav",
|
||||
"killed": "GRDRKILL.wav",
|
||||
"move": "GRDRMOVE.wav",
|
||||
"wince": "GRDRWNCE.wav"
|
||||
}
|
||||
},
|
||||
"goldDragon" :
|
||||
{
|
||||
"id": 27,
|
||||
"level": 7,
|
||||
"faction": "rampart",
|
||||
"abilities": [ [ "DRAGON_NATURE", 0, 0, 0 ], //gold dragon is a dragon
|
||||
[ "TWO_HEX_ATTACK_BREATH", 0, 0, 0 ], //gold dragon's breath
|
||||
[ "LEVEL_SPELL_IMMUNITY", 4, 0, 0 ] ], //gold dragon's spell immunity
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CDDRAG.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "GODRATTK.wav",
|
||||
"defend": "GODRDFND.wav",
|
||||
"killed": "GODRKILL.wav",
|
||||
"move": "GODRMOVE.wav",
|
||||
"wince": "GODRWNCE.wav"
|
||||
}
|
||||
}
|
||||
}
|
122
config/creatures/special.json
Normal file
122
config/creatures/special.json
Normal file
@ -0,0 +1,122 @@
|
||||
{
|
||||
// Several unused in H3 creatures
|
||||
// TODO: better way to disable them
|
||||
"unused122" :
|
||||
{
|
||||
"faction": "neutral",
|
||||
"special" : true,
|
||||
"id" : 122
|
||||
},
|
||||
"unused124" :
|
||||
{
|
||||
"faction": "neutral",
|
||||
"special" : true,
|
||||
"id" : 124
|
||||
},
|
||||
"unused126" :
|
||||
{
|
||||
"faction": "neutral",
|
||||
"special" : true,
|
||||
"id" : 126
|
||||
},
|
||||
"unused128" :
|
||||
{
|
||||
"faction": "neutral",
|
||||
"special" : true,
|
||||
"id" : 128
|
||||
},
|
||||
|
||||
"catapult" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 145,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "SMCATA.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "SMCATX.DEF",
|
||||
"spinning": true
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"killed": "CATAKILL.wav",
|
||||
"shoot": "CATASHOT.wav",
|
||||
"wince": "CATAWNCE.wav"
|
||||
}
|
||||
},
|
||||
"ballista" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 146,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "SMBAL.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "SMBALX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"killed": "BALLKILL.wav",
|
||||
"shoot": "BALLSHOT.wav",
|
||||
"wince": "BALLWNCE.wav"
|
||||
}
|
||||
},
|
||||
"firstAidTent" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 147,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "HEALER", 0, 0, 0 ] ],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "SMTENT.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"killed": "FAIDKILL.wav",
|
||||
"wince": "FAIDWNCE.wav"
|
||||
}
|
||||
},
|
||||
"ammoCart" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 148,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "NOT_ACTIVE", 0, 0, 0 ] ],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "SMCART.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"killed": "CARTKILL.wav",
|
||||
"wince": "CARTWNCE.wav"
|
||||
}
|
||||
},
|
||||
"arrowTower" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 149,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "SHOOTER", 0, 0, 0 ] ],
|
||||
"graphics" :
|
||||
{
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "SMBALX.DEF", //workaround for crash
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
295
config/creatures/stronghold.json
Normal file
295
config/creatures/stronghold.json
Normal file
@ -0,0 +1,295 @@
|
||||
{
|
||||
"goblin" :
|
||||
{
|
||||
"id": 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" :
|
||||
{
|
||||
"id": 85,
|
||||
"level": 1,
|
||||
"faction": "stronghold",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CHGOBL.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "HGOBATTK.wav",
|
||||
"defend": "HGOBDFND.wav",
|
||||
"killed": "HGOBKILL.wav",
|
||||
"move": "HGOBMOVE.wav",
|
||||
"wince": "HGOBWNCE.wav"
|
||||
}
|
||||
},
|
||||
"goblinWolfRider" :
|
||||
{
|
||||
"id": 86,
|
||||
"level": 2,
|
||||
"faction": "stronghold",
|
||||
"upgrades": ["hobgoblinWolfRider"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CBWLFR.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "GWRDATTK.wav",
|
||||
"defend": "GWRDDFND.wav",
|
||||
"killed": "GWRDKILL.wav",
|
||||
"move": "GWRDMOVE.wav",
|
||||
"wince": "GWRDWNCE.wav"
|
||||
}
|
||||
},
|
||||
"hobgoblinWolfRider" :
|
||||
{
|
||||
"id": 87,
|
||||
"level": 2,
|
||||
"faction": "stronghold",
|
||||
"abilities": [ [ "ADDITIONAL_ATTACK", 1, 0, 0 ] ], //wolf raider
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CUWLFR.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "HGWRATTK.wav",
|
||||
"defend": "HGWRDFND.wav",
|
||||
"killed": "HGWRKILL.wav",
|
||||
"move": "HGWRMOVE.wav",
|
||||
"wince": "HGWRWNCE.wav"
|
||||
}
|
||||
},
|
||||
"orc" :
|
||||
{
|
||||
"id": 88,
|
||||
"level": 3,
|
||||
"faction": "stronghold",
|
||||
"upgrades": ["orcChieftain"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CORC.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PORCHX.DEF",
|
||||
"spinning": true
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "OORCATTK.wav",
|
||||
"defend": "OORCDFND.wav",
|
||||
"killed": "OORCKILL.wav",
|
||||
"move": "OORCMOVE.wav",
|
||||
"shoot": "OORCSHOT.wav",
|
||||
"wince": "OORCWNCE.wav"
|
||||
}
|
||||
},
|
||||
"orcChieftain" :
|
||||
{
|
||||
"id": 89,
|
||||
"level": 3,
|
||||
"faction": "stronghold",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CORCCH.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PORCHX.DEF",
|
||||
"spinning": true
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "ORCCATTK.wav",
|
||||
"defend": "ORCCDFND.wav",
|
||||
"killed": "ORCCKILL.wav",
|
||||
"move": "ORCCMOVE.wav",
|
||||
"shoot": "ORCCSHOT.wav",
|
||||
"wince": "ORCCWNCE.wav"
|
||||
}
|
||||
},
|
||||
"ogre" :
|
||||
{
|
||||
"id": 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" :
|
||||
{
|
||||
"id": 91,
|
||||
"level": 4,
|
||||
"faction": "stronghold",
|
||||
"abilities": [ [ "SPELLCASTER", 2, 43, 0 ],
|
||||
[ "CASTS", 3, 0, 0],
|
||||
[ "CREATURE_ENCHANT_POWER", 3, 0, 0]], //ogre magi cast bloodlust
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "COGMAG.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "OGRMATTK.wav",
|
||||
"defend": "OGRMDFND.wav",
|
||||
"killed": "OGRMKILL.wav",
|
||||
"move": "OGRMMOVE.wav",
|
||||
"shoot": "OGRMSHOT.wav",
|
||||
"wince": "OGRMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"roc" :
|
||||
{
|
||||
"id": 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" :
|
||||
{
|
||||
"id": 93,
|
||||
"level": 5,
|
||||
"faction": "stronghold",
|
||||
"abilities": [ [ "SPECIFIC_SPELL_POWER", 10, 77, 0 ], //10 damage per unit
|
||||
[ "SPELL_AFTER_ATTACK", 20, 77, 0 ] ], //thunderbirds
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CTBIRD.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "TBRDATTK.wav",
|
||||
"defend": "TBRDDFND.wav",
|
||||
"killed": "TBRDKILL.wav",
|
||||
"move": "TBRDMOVE.wav",
|
||||
"wince": "TBRDWNCE.wav"
|
||||
}
|
||||
},
|
||||
"cyclop" :
|
||||
{
|
||||
"id": 94,
|
||||
"level": 6,
|
||||
"faction": "stronghold",
|
||||
"upgrades": ["cyclopKing"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CCYCLR.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PCYCLBX.DEF",
|
||||
"spinning": true
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "CCYCATTK.wav",
|
||||
"defend": "CCYCDFND.wav",
|
||||
"killed": "CCYCKILL.wav",
|
||||
"move": "CCYCMOVE.wav",
|
||||
"shoot": "CCYCSHOT.wav",
|
||||
"wince": "CCYCWNCE.wav"
|
||||
}
|
||||
},
|
||||
"cyclopKing" :
|
||||
{
|
||||
"id": 95,
|
||||
"level": 6,
|
||||
"faction": "stronghold",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CCYCLLOR.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PCYCLBX.DEF",
|
||||
"spinning": true
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "CYCLATTK.wav",
|
||||
"defend": "CYCLDFND.wav",
|
||||
"killed": "CYCLKILL.wav",
|
||||
"move": "CYCLMOVE.wav",
|
||||
"shoot": "CYCLSHOT.wav",
|
||||
"wince": "CYCLWNCE.wav"
|
||||
}
|
||||
},
|
||||
"behemoth" :
|
||||
{
|
||||
"id": 96,
|
||||
"level": 7,
|
||||
"faction": "stronghold",
|
||||
"abilities": [ [ "ENEMY_DEFENCE_REDUCTION", 40, 0, 0 ] ], //behemots
|
||||
"upgrades": ["ancientBehemoth"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CYBEHE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "YBMHATTK.wav",
|
||||
"defend": "YBMHDFND.wav",
|
||||
"killed": "YBMHKILL.wav",
|
||||
"move": "YBMHMOVE.wav",
|
||||
"wince": "YBMHWNCE.wav"
|
||||
}
|
||||
},
|
||||
"ancientBehemoth" :
|
||||
{
|
||||
"id": 97,
|
||||
"level": 7,
|
||||
"faction": "stronghold",
|
||||
"abilities": [ [ "ENEMY_DEFENCE_REDUCTION", 80, 0, 0 ] ], //ancient behemots
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CABEHE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "BMTHATTK.wav",
|
||||
"defend": "BMTHDFND.wav",
|
||||
"killed": "BMTHKILL.wav",
|
||||
"move": "BMTHMOVE.wav",
|
||||
"wince": "BMTHWNCE.wav"
|
||||
}
|
||||
}
|
||||
}
|
308
config/creatures/tower.json
Normal file
308
config/creatures/tower.json
Normal file
@ -0,0 +1,308 @@
|
||||
{
|
||||
"gremlin" :
|
||||
{
|
||||
"id": 28,
|
||||
"level": 1,
|
||||
"extraNames": [ "apprenticeGremlin" ],
|
||||
"faction": "tower",
|
||||
"upgrades": ["masterGremlin"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CGREMA.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "AGRMATTK.wav",
|
||||
"defend": "AGRMDFND.wav",
|
||||
"killed": "AGRMKILL.wav",
|
||||
"move": "AGRMMOVE.wav",
|
||||
"shoot": "AGRMSHOT.wav",
|
||||
"wince": "AGRMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"masterGremlin" :
|
||||
{
|
||||
"id": 29,
|
||||
"level": 1,
|
||||
"faction": "tower",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CGREMM.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "CPRGRE.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "MGRMATTK.wav",
|
||||
"defend": "MGRMDFND.wav",
|
||||
"killed": "MGRMKILL.wav",
|
||||
"move": "MGRMMOVE.wav",
|
||||
"shoot": "MGRMSHOT.wav",
|
||||
"wince": "MGRMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"stoneGargoyle" :
|
||||
{
|
||||
"id": 30,
|
||||
"level": 2,
|
||||
"faction": "tower",
|
||||
"abilities": [ [ "NON_LIVING", 0, 0, 0 ] ], //stone gargoyles are 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" :
|
||||
{
|
||||
"id": 31,
|
||||
"level": 2,
|
||||
"faction": "tower",
|
||||
"abilities": [ [ "NON_LIVING", 0, 0, 0 ] ], //obsidian gargoyles are 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
|
||||
{
|
||||
"id": 32,
|
||||
"level": 3,
|
||||
"faction": "tower",
|
||||
"abilities": [ [ "SPELL_DAMAGE_REDUCTION", 50, -1, 0 ], //stone golems reduce dmg from spells
|
||||
[ "NON_LIVING", 0, 0, 0 ] ], //stone golems are 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
|
||||
{
|
||||
"id": 33,
|
||||
"level": 3,
|
||||
"faction": "tower",
|
||||
"abilities": [ [ "SPELL_DAMAGE_REDUCTION", 75, -1, 0 ], //iron golems reduce dmg from spells
|
||||
[ "NON_LIVING", 0, 0, 0 ] ], //iron golems are non-living
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CIGOLE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "IGLMATTK.wav",
|
||||
"defend": "IGLMDFND.wav",
|
||||
"killed": "IGLMKILL.wav",
|
||||
"move": "IGLMMOVE.wav",
|
||||
"wince": "IGLMWNCE.wav"
|
||||
}
|
||||
},
|
||||
"mage" :
|
||||
{
|
||||
"id": 34,
|
||||
"level": 4,
|
||||
"faction": "tower",
|
||||
"abilities": [ [ "CHANGES_SPELL_COST_FOR_ALLY", 2, 0, 0 ] ], //mages reduce spell cost
|
||||
"upgrades": ["archMage"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CMAGE.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PMAGEX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "MAGEATTK.wav",
|
||||
"defend": "MAGEDFND.wav",
|
||||
"killed": "MAGEKILL.wav",
|
||||
"move": "MAGEMOVE.wav",
|
||||
"shoot": "MAGESHOT.wav",
|
||||
"wince": "MAGEWNCE.wav"
|
||||
}
|
||||
},
|
||||
"archMage" :
|
||||
{
|
||||
"id": 35,
|
||||
"level": 4,
|
||||
"faction": "tower",
|
||||
"abilities": [ [ "CHANGES_SPELL_COST_FOR_ALLY", 2, 0, 0 ]], //archmages reduce spell cost
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CAMAGE.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PMAGEX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "AMAGATTK.wav",
|
||||
"defend": "AMAGDFND.wav",
|
||||
"killed": "AMAGKILL.wav",
|
||||
"move": "AMAGMOVE.wav",
|
||||
"shoot": "AMAGSHOT.wav",
|
||||
"wince": "AMAGWNCE.wav"
|
||||
}
|
||||
},
|
||||
"genie" :
|
||||
{
|
||||
"id": 36,
|
||||
"level": 5,
|
||||
"faction": "tower",
|
||||
"abilities": [ [ "HATE", 50, 53, 0 ], //master genies hate efreets
|
||||
[ "HATE", 50, 52, 0 ] ], //genies hate efreet sultans
|
||||
"upgrades": ["masterGenie"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CGENIE.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "GENIATTK.wav",
|
||||
"defend": "GENIDFND.wav",
|
||||
"killed": "GENIKILL.wav",
|
||||
"move": "GENIMOVE.wav",
|
||||
"wince": "GENIWNCE.wav"
|
||||
}
|
||||
},
|
||||
"masterGenie" :
|
||||
{
|
||||
"id": 37,
|
||||
"level": 5,
|
||||
"faction": "tower",
|
||||
"abilities": [ [ "CREATURE_ENCHANT_POWER", 5, 0, 0 ], //spells last 5 turns
|
||||
[ "RANDOM_SPELLCASTER", 2, 0, 0 ], //master genies cast spells on advanced level
|
||||
[ "CASTS", 3, 0, 0],
|
||||
[ "HATE", 50, 53, 0 ],
|
||||
[ "HATE", 50, 52, 0 ] ], //master genies hate efreet sultans
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CSULTA.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "CALFATTK.wav",
|
||||
"defend": "CALFDFND.wav",
|
||||
"killed": "CALFKILL.wav",
|
||||
"move": "CALFMOVE.wav",
|
||||
"shoot": "CALFSHOT.wav",
|
||||
"wince": "CALFWNCE.wav"
|
||||
}
|
||||
},
|
||||
"naga" :
|
||||
{
|
||||
"id": 38,
|
||||
"level": 6,
|
||||
"faction": "tower",
|
||||
"abilities": [ [ "BLOCKS_RETALIATION", 0, 0, 0 ] ], //nagas block retaliation
|
||||
"upgrades": ["nagaQueen"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CNAGA.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "NSENATTK.wav",
|
||||
"defend": "NSENDFND.wav",
|
||||
"killed": "NSENKILL.wav",
|
||||
"move": "NSENMOVE.wav",
|
||||
"wince": "NSENWNCE.wav"
|
||||
}
|
||||
},
|
||||
"nagaQueen" :
|
||||
{
|
||||
"id": 39,
|
||||
"level": 6,
|
||||
"faction": "tower",
|
||||
"abilities": [ [ "BLOCKS_RETALIATION", 0, 0, 0 ] ], //naga queens block retaliation
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CNAGAG.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "NGRDATTK.wav",
|
||||
"defend": "NGRDDFND.wav",
|
||||
"killed": "NGRDKILL.wav",
|
||||
"move": "NGRDMOVE.wav",
|
||||
"wince": "NGRDWNCE.wav"
|
||||
}
|
||||
},
|
||||
"giant" :
|
||||
{
|
||||
"id": 40,
|
||||
"level": 7,
|
||||
"faction": "tower",
|
||||
"abilities": [ ["MIND_IMMUNITY", 0, 0, 0] ], //giants are immune to mind spells
|
||||
"upgrades": ["titan"],
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CLTITA.DEF"
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "LTITATTK.wav",
|
||||
"defend": "LTITDFND.wav",
|
||||
"killed": "LTITKILL.wav",
|
||||
"move": "LTITMOVE.wav",
|
||||
"wince": "LTITWNCE.wav"
|
||||
}
|
||||
},
|
||||
"titan" :
|
||||
{
|
||||
"id": 41,
|
||||
"level": 7,
|
||||
"faction": "tower",
|
||||
"abilities": [ ["MIND_IMMUNITY", 0, 0, 0], //Titans are immune to mind spells
|
||||
[ "HATE", 50, 83, 0 ] ], //titans hate black dragons
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "CGTITA.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "CPRGTIX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
},
|
||||
"sound" :
|
||||
{
|
||||
"attack": "GTITATTK.wav",
|
||||
"defend": "GTITDFND.wav",
|
||||
"killed": "GTITKILL.wav",
|
||||
"move": "GTITMOVE.wav",
|
||||
"shoot": "GTITSHOT.wav",
|
||||
"wince": "GTITWNCE.wav"
|
||||
}
|
||||
}
|
||||
}
|
729
config/creatures/wog.json
Normal file
729
config/creatures/wog.json
Normal file
@ -0,0 +1,729 @@
|
||||
{
|
||||
"supremeArchangel" :
|
||||
{
|
||||
"id": 150,
|
||||
"level": 0,
|
||||
"faction": "castle",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM150Z.DEF"
|
||||
}
|
||||
},
|
||||
"diamondDragon" :
|
||||
{
|
||||
"id": 151,
|
||||
"level": 8,
|
||||
"faction": "rampart",
|
||||
"abilities": [ [ "DRAGON_NATURE", 0, 0, 0 ] ], //diamond dragon is a dragon //psychic elemental
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM151Z.DEF"
|
||||
}
|
||||
},
|
||||
"lordofThunder" :
|
||||
{
|
||||
"id": 152,
|
||||
"level": 8,
|
||||
"faction": "tower",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM152Z.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "CPRGTIX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"hellBaron" :
|
||||
{
|
||||
"id": 153,
|
||||
"level": 8,
|
||||
"faction": "inferno",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM153Z.DEF"
|
||||
}
|
||||
},
|
||||
"bloodDragon" :
|
||||
{
|
||||
"id": 154,
|
||||
"level": 8,
|
||||
"faction": "necropolis",
|
||||
"abilities": [ [ "DRAGON_NATURE", 0, 0, 0 ] ], //blood dragon is a dragon //magic elemental
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM154Z.DEF"
|
||||
}
|
||||
},
|
||||
"darknessDragon" :
|
||||
{
|
||||
"id": 155,
|
||||
"level": 8,
|
||||
"faction": "dungeon",
|
||||
"abilities": [ [ "DRAGON_NATURE", 0, 0, 0 ] ], //darkness dragon is a dragon
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM155Z.DEF"
|
||||
}
|
||||
},
|
||||
"ghostBehemoth" :
|
||||
{
|
||||
"id": 156,
|
||||
"level": 8,
|
||||
"faction": "stronghold",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM156Z.DEF"
|
||||
}
|
||||
},
|
||||
"hellHydra" :
|
||||
{
|
||||
"id": 157,
|
||||
"level": 8,
|
||||
"faction": "fortress",
|
||||
"ability_remove": [ "SHOOTER" ], //Hell Hydra certainly does not shoot
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM157Z.DEF"
|
||||
}
|
||||
},
|
||||
"sacredPhoenix" :
|
||||
{
|
||||
"id": 158,
|
||||
"level": 8,
|
||||
"faction": "conflux",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM158Z.DEF"
|
||||
}
|
||||
},
|
||||
"ghost" :
|
||||
{
|
||||
"id": 159,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM159G.DEF"
|
||||
}
|
||||
},
|
||||
"godWar" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 160,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM160G.DEF"
|
||||
}
|
||||
},
|
||||
"godPeace" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 161,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM161G.DEF"
|
||||
}
|
||||
},
|
||||
"godMana" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 162,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM162G.DEF"
|
||||
}
|
||||
},
|
||||
"godLore" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 163,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM163G.DEF"
|
||||
}
|
||||
},
|
||||
"minotaurKing2" :// WTF is this? Same ID as Minotaur King from Dungeon
|
||||
{
|
||||
"id": 164,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM164GD.DEF"
|
||||
}
|
||||
},
|
||||
"mineralElemental" :
|
||||
{
|
||||
"id": 165,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM165GD.DEF"
|
||||
}
|
||||
},
|
||||
"electricityElemental" :
|
||||
{
|
||||
"id": 166,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM166GD.DEF"
|
||||
}
|
||||
},
|
||||
"ancientBasilisk" :
|
||||
{
|
||||
"id": 167,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM167GD.DEF"
|
||||
}
|
||||
},
|
||||
"gorynych" :
|
||||
{
|
||||
"id": 168,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "FLYING", 0, 0, 0 ] ], //Gorynyches fly
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM168DG.DEF"
|
||||
}
|
||||
},
|
||||
"warZealot" :
|
||||
{
|
||||
"id": 169,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM169ZL.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "CPRZEAX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"myriad" :
|
||||
{
|
||||
"id": 170,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM170SW.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLCBOWX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"medusaMatriarch" :
|
||||
{
|
||||
"id": 171,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM171SR.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLCBOWX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"nightmare" :
|
||||
{
|
||||
"id": 172,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM172N.DEF"
|
||||
}
|
||||
},
|
||||
"santaGremlin" :
|
||||
{
|
||||
"id": 173,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM173M.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "CPRGRE.DEF",
|
||||
"spinning": true
|
||||
}
|
||||
},
|
||||
},
|
||||
"paladin1" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 174,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "MAGIC_RESISTANCE", 5, 0, 0 ],
|
||||
[ "CASTS", 1, 0, 0 ] ,
|
||||
[ "CREATURE_ENCHANT_POWER", 1, 0, 0 ] ,
|
||||
[ "SPELLCASTER", 3, 37, 0 ] ], //expert cure
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM174NPC.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLCBOWX.DEF"
|
||||
}
|
||||
},
|
||||
"sounds" :
|
||||
{
|
||||
"attack": "CRUSATTK.wav",
|
||||
"defend": "CRUSDFND.wav",
|
||||
"killed": "CRUSKILL.wav",
|
||||
"move": "CRUSMOVE.wav",
|
||||
"wince": "CRUSWNCE.wav"
|
||||
}
|
||||
},
|
||||
"hierophant1" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 175,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "MAGIC_RESISTANCE", 5, 0, 0 ],
|
||||
[ "CASTS", 1, 0, 0 ] ,
|
||||
[ "CREATURE_ENCHANT_POWER", 1, 0, 0 ] ,
|
||||
[ "SPELLCASTER", 3, 27, 0 ] ], //expert shield
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM175NPC.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "CPRZEAX.DEF"
|
||||
}
|
||||
},
|
||||
"sounds" :
|
||||
{
|
||||
"attack": "MONKATTK.wav",
|
||||
"defend": "MONKDFND.wav",
|
||||
"killed": "MONKKILL.wav",
|
||||
"move": "MONKMOVE.wav",
|
||||
"shoot": "MONKSHOT.wav",
|
||||
"wince": "MONKWNCE.wav"
|
||||
}
|
||||
},
|
||||
"templeGuardian1" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 176,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "MAGIC_RESISTANCE", 5, 0, 0 ],
|
||||
[ "CASTS", 1, 0, 0 ] ,
|
||||
[ "CREATURE_ENCHANT_POWER", 1, 0, 0 ] ,
|
||||
[ "SPELLCASTER", 3, 44, 0 ] ], //expert precision
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM176NPC.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLCBOWX.DEF"
|
||||
}
|
||||
},
|
||||
"sounds" :
|
||||
{
|
||||
"attack": "LICHATTK.wav",
|
||||
"defend": "LICHDFND.wav",
|
||||
"killed": "LICHKILL.wav",
|
||||
"move": "LICHMOVE.wav",
|
||||
"shoot": "LICHSHOT.wav",
|
||||
"wince": "LICHWNCE.wav",
|
||||
"ext1": "LICHATK2.wav"
|
||||
}
|
||||
},
|
||||
"succubus1" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 177,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "MAGIC_RESISTANCE", 5, 0, 0 ],
|
||||
[ "CASTS", 1, 0, 0 ] ,
|
||||
[ "CREATURE_ENCHANT_POWER", 1, 0, 0 ] ,
|
||||
[ "SPELLCASTER", 3, 29, 0 ] ], //expert fire shield
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM177NPC.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLCBOWX.DEF"
|
||||
}
|
||||
},
|
||||
"sounds" :
|
||||
{
|
||||
"attack": "SGRGATTK.wav",
|
||||
"defend": "SGRGDFND.wav",
|
||||
"killed": "SGRGKILL.wav",
|
||||
"move": "SGRGMOVE.wav",
|
||||
"wince": "SGRGWNCE.wav"
|
||||
}
|
||||
},
|
||||
"soulEater1" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 178,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "MAGIC_RESISTANCE", 5, 0, 0 ],
|
||||
[ "CASTS", 1, 0, 0 ] ,
|
||||
[ "CREATURE_ENCHANT_POWER", 1, 0, 0 ] ,
|
||||
[ "SPELLCASTER", 3, 39, 0 ] ], //expert animate dead
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM178NPC.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLCBOWX.DEF"
|
||||
}
|
||||
},
|
||||
"sounds" :
|
||||
{
|
||||
"attack": "GNOLATTK.wav",
|
||||
"defend": "GNOLDFND.wav",
|
||||
"killed": "GNOLKILL.wav",
|
||||
"move": "GNOLMOVE.wav",
|
||||
"wince": "GNOLWNCE.wav"
|
||||
}
|
||||
},
|
||||
"brute1" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 179,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "MAGIC_RESISTANCE", 5, 0, 0 ],
|
||||
[ "CASTS", 1, 0, 0 ] ,
|
||||
[ "CREATURE_ENCHANT_POWER", 1, 0, 0 ] ,
|
||||
[ "SPELLCASTER", 3, 46, 0 ] ], //expert stone skin
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM179NPC.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLCBOWX.DEF"
|
||||
}
|
||||
},
|
||||
"sounds" :
|
||||
{
|
||||
"attack": "PFOEATTK.wav",
|
||||
"defend": "PFOEDFND.wav",
|
||||
"killed": "PFOEKILL.wav",
|
||||
"move": "PFOEMOVE.wav",
|
||||
"wince": "PFOEWNCE.wav"
|
||||
}
|
||||
},
|
||||
"ogreLeader1" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 180,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "MAGIC_RESISTANCE", 5, 0, 0 ],
|
||||
[ "CASTS", 1, 0, 0 ] ,
|
||||
[ "CREATURE_ENCHANT_POWER", 1, 0, 0 ] ,
|
||||
[ "SPELLCASTER", 3, 37, 0 ] ], //expert cure
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM180NPC.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLCBOWX.DEF"
|
||||
}
|
||||
},
|
||||
"sounds" :
|
||||
{
|
||||
"attack": "TRLLATTK.wav",
|
||||
"defend": "TRLLDFND.wav",
|
||||
"killed": "TRLLKILL.wav",
|
||||
"move": "TRLLMOVE.wav",
|
||||
"wince": "TRLLWNCE.wav"
|
||||
}
|
||||
},
|
||||
"shaman1" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 181,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "MAGIC_RESISTANCE", 5, 0, 0 ],
|
||||
[ "CASTS", 1, 0, 0 ] ,
|
||||
[ "CREATURE_ENCHANT_POWER", 1, 0, 0 ] ,
|
||||
[ "SPELLCASTER", 3, 53, 0 ] ], //expert haste
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM181NPC.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLCBOWX.DEF"
|
||||
}
|
||||
},
|
||||
"sounds" :
|
||||
{
|
||||
"attack": "AMAGATTK.wav",
|
||||
"defend": "AMAGDFND.wav",
|
||||
"killed": "AMAGKILL.wav",
|
||||
"move": "AMAGMOVE.wav",
|
||||
"shoot": "AMAGSHOT.wav",
|
||||
"wince": "AMAGWNCE.wav"
|
||||
}
|
||||
},
|
||||
"astralSpirit1" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 182,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"abilities": [ [ "MAGIC_RESISTANCE", 5, 0, 0 ],
|
||||
[ "CASTS", 1, 0, 0 ] ,
|
||||
[ "CREATURE_ENCHANT_POWER", 1, 0, 0 ] ,
|
||||
[ "SPELLCASTER", 3, 58, 0 ] ], //expert counterstrike
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM182NPC.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PLCBOWX.DEF"
|
||||
}
|
||||
},
|
||||
"sounds" :
|
||||
{
|
||||
"attack": "GENIATTK.wav",
|
||||
"defend": "GENIDFND.wav",
|
||||
"killed": "GENIKILL.wav",
|
||||
"move": "GENIMOVE.wav",
|
||||
"wince": "GENIWNCE.wav"
|
||||
}
|
||||
},
|
||||
"paladin2" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 183,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM174NPC.DEF"
|
||||
}
|
||||
},
|
||||
"hierophant2" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 184,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM175NPC.DEF"
|
||||
}
|
||||
},
|
||||
"templeGuardian2" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 185,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM176NPC.DEF"
|
||||
}
|
||||
},
|
||||
"succubus2" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 186,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM177NPC.DEF"
|
||||
}
|
||||
},
|
||||
"soulEater2" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 187,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM178NPC.DEF"
|
||||
}
|
||||
},
|
||||
"brute2" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 188,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM179NPC.DEF"
|
||||
}
|
||||
},
|
||||
"ogreLeader2" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 189,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM180NPC.DEF"
|
||||
}
|
||||
},
|
||||
"shaman2" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 190,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM181NPC.DEF"
|
||||
}
|
||||
},
|
||||
"astralSpirit2" :
|
||||
{
|
||||
"special" : true,
|
||||
"id": 191,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM182NPC.DEF"
|
||||
}
|
||||
},
|
||||
"sylvanCentaur" :
|
||||
{
|
||||
"id": 192,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM192Z.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "PELFX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"sorceresses" :
|
||||
{
|
||||
"id": 193,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM193Z.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "CPRZEAX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"werewolf" :
|
||||
{
|
||||
"id": 194,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM194Z.DEF"
|
||||
}
|
||||
},
|
||||
"hellSteed" :
|
||||
{
|
||||
"id": 195,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM195Z.DEF"
|
||||
}
|
||||
},
|
||||
"dracolich" :
|
||||
{
|
||||
"id": 196,
|
||||
"level": 0,
|
||||
"faction": "neutral",
|
||||
"graphics" :
|
||||
{
|
||||
"animation": "ZM196Z.DEF",
|
||||
"missile" :
|
||||
{
|
||||
"projectile": "SMBALX.DEF",
|
||||
"spinning": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// For future reference. Creatures from WoG and their sound prefixes.
|
||||
//aagl ZM150Z.def SupremeArchangel
|
||||
//godr ZM151Z.def DiamondDragon
|
||||
//gtit ZM152Z.def LordofThunder
|
||||
//advl ZM153Z.def HellBaron
|
||||
//ghdr ZM154Z.def BloodDragon
|
||||
//bkdr ZM155Z.def DarknessDragon
|
||||
//bmth ZM156Z.def GhostBehemoth
|
||||
//chyd ZM157Z.def HellHydra
|
||||
//phoe ZM158Z.def SacredPhoenix
|
||||
//wrth ZM159G.def Ghost
|
||||
//aagl ZM160G.def God1War
|
||||
//aagl ZM161G.def God2Peace
|
||||
//aagl ZM162G.def God3Mana
|
||||
//aagl ZM163G.def God4Lore
|
||||
//sglm ZM164GD.def MinotaurKing
|
||||
//sglm ZM165GD.def MineralElemental
|
||||
//sglm ZM166GD.def ElectricityElemental
|
||||
//sglm ZM167GD.def AncientBasilisk
|
||||
//bkdr ZM168DG.def Gorynych
|
||||
//zelt ZM169ZL.def WarZealot
|
||||
//hcrs ZM170SW.def Myriad
|
||||
//hcrs ZM171SR.def MedusaMatriarch
|
||||
//bgor ZM172N.def Nightmare
|
||||
//aagl ZM173M.def SantaGremlin
|
||||
|
||||
//crus ZM174NPC.def Paladin2
|
||||
//monk ZM175NPC.def Hierophant2
|
||||
//lich ZM176NPC.def TempleGuardian2
|
||||
//sgrg ZM177NPC.def Succubus2
|
||||
//gnol ZM178NPC.def SoulEater2
|
||||
///pfoe ZM179NPC.def Brute2
|
||||
//trll ZM180NPC.def OgreLeader2
|
||||
//amag ZM181NPC.def Shaman2
|
||||
//geni ZM182NPC.def AstralSpirit2
|
||||
|
||||
//ecnt ZM192Z.def SylvanCentaur
|
||||
//monk ZM193Z.def Sorceress
|
||||
//monk ZM194Z.def Werewolf
|
||||
//bgor ZM195Z.def HellSteed
|
||||
//ghdr ZM196Z.def Dracolich
|
@ -4,7 +4,7 @@
|
||||
"index" : 0,
|
||||
"nativeTerrain": "grass",
|
||||
"alignment" : "good",
|
||||
"commander" : "Paladin1",
|
||||
"commander" : "paladin1",
|
||||
"creatureBackground" :
|
||||
{
|
||||
"120px" : "TPCASCAS",
|
||||
@ -137,17 +137,17 @@
|
||||
],
|
||||
"creatures" :
|
||||
[
|
||||
["Pikeman", "Halberdier"],
|
||||
["Archer", "HeavyCrossbowman"],
|
||||
["Griffin", "RoyalGriffin"],
|
||||
["Swordsman", "Crusader"],
|
||||
["Monk", "Zealot"],
|
||||
["Cavalier", "Champion"],
|
||||
["Angel", "Archangel"]
|
||||
["pikeman", "halberdier"],
|
||||
["archer", "marksman"],
|
||||
["griffin", "royalGriffin"],
|
||||
["swordsman", "crusader"],
|
||||
["monk", "zealot"],
|
||||
["cavalier", "champion"],
|
||||
["angel", "archangel"]
|
||||
],
|
||||
"horde" : [ 2, -1 ],
|
||||
"mageGuild" : 4,
|
||||
"warMachine" : "Ballista",
|
||||
"warMachine" : "ballista",
|
||||
|
||||
"buildings" :
|
||||
[
|
||||
@ -196,7 +196,7 @@
|
||||
|
||||
"siege" :
|
||||
{
|
||||
"shooter" : "Archer",
|
||||
"shooter" : "archer",
|
||||
"imagePrefix" : "SGCS",
|
||||
"gate" :
|
||||
{
|
||||
|
@ -4,7 +4,7 @@
|
||||
"index" : 8,
|
||||
"nativeTerrain": "grass",
|
||||
"alignment" : "neutral",
|
||||
"commander" : "AstralSpirit1",
|
||||
"commander" : "astralSpirit1",
|
||||
"creatureBackground" :
|
||||
{
|
||||
"120px" : "TPCASELE",
|
||||
@ -139,18 +139,18 @@
|
||||
],
|
||||
"creatures" :
|
||||
[
|
||||
["Pixie", "Sprite"],
|
||||
["AirElemental", "StormElemental"],
|
||||
["WaterElemental", "IceElemental"],
|
||||
["FireElemental", "ElectricityElemental"],
|
||||
["EarthElemental", "StoneElemental"],
|
||||
["PsiElemental", "MagicElemental"],
|
||||
["Firebird", "Pheonix"]
|
||||
["pixie", "sprite"],
|
||||
["airElemental", "stormElemental"],
|
||||
["waterElemental", "iceElemental"],
|
||||
["fireElemental", "energyElemental"],
|
||||
["earthElemental", "magmaElemental"],
|
||||
["psychicElemental", "magicElemental"],
|
||||
["firebird", "phoenix"]
|
||||
],
|
||||
"horde" : [ 0, -1 ],
|
||||
"mageGuild" : 5,
|
||||
"primaryResource" : "mercury",
|
||||
"warMachine" : "Ballista",
|
||||
"warMachine" : "ballista",
|
||||
|
||||
"buildings" :
|
||||
[
|
||||
@ -198,7 +198,7 @@
|
||||
|
||||
"siege" :
|
||||
{
|
||||
"shooter" : "StormElemental",
|
||||
"shooter" : "stormElemental",
|
||||
"imagePrefix" : "SGEL",
|
||||
"gate" :
|
||||
{
|
||||
|
@ -4,7 +4,7 @@
|
||||
"index" : 5,
|
||||
"nativeTerrain": "subterra",
|
||||
"alignment" : "evil",
|
||||
"commander" : "Brute1",
|
||||
"commander" : "brute1",
|
||||
"creatureBackground" :
|
||||
{
|
||||
"120px" : "TPCASDUN",
|
||||
@ -134,18 +134,18 @@
|
||||
],
|
||||
"creatures" :
|
||||
[
|
||||
["Troglodyte", "InfernalTroglodyte"],
|
||||
["Harpy", "HarpyHag"],
|
||||
["Beholder", "EvilEye"],
|
||||
["Medusa", "MedusaQueen"],
|
||||
["Minotaur", "MinotaurKing"],
|
||||
["Manticore", "Scorpicore"],
|
||||
["RedDragon", "BlackDragon"]
|
||||
["troglodyte", "infernalTroglodyte"],
|
||||
["harpy", "harpyHag"],
|
||||
["beholder", "evilEye"],
|
||||
["medusa", "medusaQueen"],
|
||||
["minotaur", "minotaurKing"],
|
||||
["manticore", "scorpicore"],
|
||||
["redDragon", "blackDragon"]
|
||||
],
|
||||
"horde" : [ 0, -1 ],
|
||||
"mageGuild" : 5,
|
||||
"primaryResource" : "sulfur",
|
||||
"warMachine" : "Ballista",
|
||||
"warMachine" : "ballista",
|
||||
|
||||
"buildings" :
|
||||
[
|
||||
@ -193,7 +193,7 @@
|
||||
|
||||
"siege" :
|
||||
{
|
||||
"shooter" : "Beholder",
|
||||
"shooter" : "beholder",
|
||||
"imagePrefix" : "SGDN",
|
||||
"gate" :
|
||||
{
|
||||
|
@ -4,7 +4,7 @@
|
||||
"index" : 7,
|
||||
"nativeTerrain": "swamp",
|
||||
"alignment" : "neutral",
|
||||
"commander" : "Shaman1",
|
||||
"commander" : "shaman1",
|
||||
"creatureBackground" :
|
||||
{
|
||||
"120px" : "TPCASFOR",
|
||||
@ -135,17 +135,17 @@
|
||||
],
|
||||
"creatures" :
|
||||
[
|
||||
["Gnoll", "GnollMarauder"],
|
||||
["PrimitiveLizardman", "AdvancedLizardman"],
|
||||
["Dragonflies", "FireDragonFly"],
|
||||
["Basilisk", "GreaterBasilisk"],
|
||||
["CopperGorgon", "BronzeGorgon"],
|
||||
["Wyvern", "WyvernMonarch"],
|
||||
["Hydra", "ChaosHydra"]
|
||||
["gnoll", "gnollMarauder"],
|
||||
["lizardman", "lizardWarrior"],
|
||||
["serpentFly", "fireDragonFly"],
|
||||
["basilisk", "greaterBasilisk"],
|
||||
["gorgon", "mightyGorgon"],
|
||||
["wyvern", "wyvernMonarch"],
|
||||
["hydra", "chaosHydra"]
|
||||
],
|
||||
"horde" : [ 0, -1 ],
|
||||
"mageGuild" : 3,
|
||||
"warMachine" : "FirstAidTent",
|
||||
"warMachine" : "firstAidTent",
|
||||
|
||||
"buildings" :
|
||||
[
|
||||
@ -194,7 +194,7 @@
|
||||
|
||||
"siege" :
|
||||
{
|
||||
"shooter" : "PrimitiveLizardman",
|
||||
"shooter" : "lizardman",
|
||||
"imagePrefix" : "SGFR",
|
||||
"gate" :
|
||||
{
|
||||
|
@ -4,7 +4,7 @@
|
||||
"index" : 3,
|
||||
"nativeTerrain": "lava",
|
||||
"alignment" : "evil",
|
||||
"commander" : "Succubus1",
|
||||
"commander" : "succubus1",
|
||||
"creatureBackground" :
|
||||
{
|
||||
"120px" : "TPCASINF",
|
||||
@ -135,18 +135,18 @@
|
||||
],
|
||||
"creatures" :
|
||||
[
|
||||
["Imp", "Familiar"],
|
||||
["Gog", "Magog"],
|
||||
["HellHound", "Cerberus"],
|
||||
["Single-HornedDemon", "Dual-HornedDemon"],
|
||||
["PitFiend", "PitFoe"],
|
||||
["Efreet", "EfreetSultan"],
|
||||
["Devil", "ArchDevil"]
|
||||
["imp", "familiar"],
|
||||
["gog", "magog"],
|
||||
["hellHound", "cerberus"],
|
||||
["demon", "hornedDemon"],
|
||||
["pitFiend", "pitLord"],
|
||||
["efreet", "efreetSultan"],
|
||||
["devil", "archDevil"]
|
||||
],
|
||||
"horde" : [ 0, 2 ],
|
||||
"mageGuild" : 5,
|
||||
"primaryResource" : "mercury",
|
||||
"warMachine" : "Ballista",
|
||||
"warMachine" : "ballista",
|
||||
|
||||
"buildings" :
|
||||
[
|
||||
@ -196,7 +196,7 @@
|
||||
|
||||
"siege" :
|
||||
{
|
||||
"shooter" : "Gog",
|
||||
"shooter" : "gog",
|
||||
"imagePrefix" : "SGIN",
|
||||
"gate" :
|
||||
{
|
||||
|
@ -4,7 +4,7 @@
|
||||
"index" : 4,
|
||||
"nativeTerrain": "dirt",
|
||||
"alignment" : "evil",
|
||||
"commander" : "SoulEater1",
|
||||
"commander" : "soulEater1",
|
||||
"creatureBackground" :
|
||||
{
|
||||
"120px" : "TPCASNEC",
|
||||
@ -139,17 +139,17 @@
|
||||
],
|
||||
"creatures" :
|
||||
[
|
||||
["Skeleton", "SkeletonWarrior"],
|
||||
["Zombie", "ZombieLord"],
|
||||
["Wight", "Wraith"],
|
||||
["Vampire", "Nosferatu"],
|
||||
["Lich", "PowerLich"],
|
||||
["BlackKnight", "BlackLord"],
|
||||
["BoneDragon", "GhostDragon"]
|
||||
["skeleton", "skeletonWarrior"],
|
||||
["walkingDead", "zombieLord"],
|
||||
["wight", "wraith"],
|
||||
["vampire", "vampireLord"],
|
||||
["lich", "powerLich"],
|
||||
["blackKnight", "dreadKnight"],
|
||||
["boneDragon", "ghostDragon"]
|
||||
],
|
||||
"horde" : [ 0, -1 ],
|
||||
"mageGuild" : 5,
|
||||
"warMachine" : "FirstAidTent",
|
||||
"warMachine" : "firstAidTent",
|
||||
|
||||
"buildings" :
|
||||
[
|
||||
@ -198,7 +198,7 @@
|
||||
|
||||
"siege" :
|
||||
{
|
||||
"shooter" : "Lich",
|
||||
"shooter" : "lich",
|
||||
"imagePrefix" : "SGNC",
|
||||
"gate" :
|
||||
{
|
||||
|
@ -8,6 +8,6 @@
|
||||
"120px" : "TPCASNEU",
|
||||
"130px" : "CRBKGNEU"
|
||||
},
|
||||
"commander" : "Enchanter" //just in case
|
||||
"commander" : "enchanter" //just in case
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
"index" : 1,
|
||||
"nativeTerrain": "grass",
|
||||
"alignment" : "good",
|
||||
"commander" : "Hierophant1",
|
||||
"commander" : "hierophant1",
|
||||
"creatureBackground" :
|
||||
{
|
||||
"120px" : "TPCASRAM",
|
||||
@ -140,18 +140,18 @@
|
||||
],
|
||||
"creatures" :
|
||||
[
|
||||
["Centaur", "EliteCentaur"],
|
||||
["Dwarf", "BattleDwarf"],
|
||||
["WoodElf", "GrandElf"],
|
||||
["Pegasus", "SilverPegasus"],
|
||||
["Treefolk", "BriarTreefolk"],
|
||||
["Unicorn", "WarUnicorn"],
|
||||
["GreenDragon", "GoldDragon"]
|
||||
["centaur", "centaurCaptain"],
|
||||
["dwarf", "battleDwarf"],
|
||||
["woodElf", "grandElf"],
|
||||
["pegasus", "silverPegasus"],
|
||||
["dendroidGuard", "dendroidSoldier"],
|
||||
["unicorn", "warUnicorn"],
|
||||
["greenDragon", "goldDragon"]
|
||||
],
|
||||
"horde" : [ 1, 4 ],
|
||||
"mageGuild" : 5,
|
||||
"primaryResource" : "crystal",
|
||||
"warMachine" : "FirstAidTent",
|
||||
"warMachine" : "firstAidTent",
|
||||
|
||||
"buildings" :
|
||||
[
|
||||
@ -201,7 +201,7 @@
|
||||
|
||||
"siege" :
|
||||
{
|
||||
"shooter" : "WoodElf",
|
||||
"shooter" : "woodElf",
|
||||
"imagePrefix" : "SGRM",
|
||||
"gate" :
|
||||
{
|
||||
|
@ -4,7 +4,7 @@
|
||||
"index" : 6,
|
||||
"nativeTerrain": "rough",
|
||||
"alignment" : "neutral",
|
||||
"commander" : "OgreLeader1",
|
||||
"commander" : "ogreLeader1",
|
||||
"creatureBackground" :
|
||||
{
|
||||
"120px" : "TPCASSTR",
|
||||
@ -133,17 +133,17 @@
|
||||
],
|
||||
"creatures" :
|
||||
[
|
||||
["Goblin", "Hobgoblin"],
|
||||
["GoblinWolfRider", "HobgoblinWolfRider"],
|
||||
["Orc", "OrcChieftain"],
|
||||
["Ogre", "OgreMage"],
|
||||
["Roc", "Thunderbird"],
|
||||
["Cyclops", "CyclopsLord"],
|
||||
["YoungBehemoth", "AncientBehemoth"]
|
||||
["goblin", "hobgoblin"],
|
||||
["goblinWolfRider", "hobgoblinWolfRider"],
|
||||
["orc", "orcChieftain"],
|
||||
["ogre", "ogreMage"],
|
||||
["roc", "thunderbird"],
|
||||
["cyclop", "cyclopKing"],
|
||||
["behemoth", "ancientBehemoth"]
|
||||
],
|
||||
"horde" : [ 0, -1 ],
|
||||
"mageGuild" : 3,
|
||||
"warMachine" : "AmmoCart",
|
||||
"warMachine" : "ammoCart",
|
||||
|
||||
"buildings" :
|
||||
[
|
||||
@ -191,7 +191,7 @@
|
||||
|
||||
"siege" :
|
||||
{
|
||||
"shooter" : "Orc",
|
||||
"shooter" : "orc",
|
||||
"imagePrefix" : "SGST",
|
||||
"gate" :
|
||||
{
|
||||
|
@ -4,7 +4,7 @@
|
||||
"index" : 2,
|
||||
"nativeTerrain" : "snow",
|
||||
"alignment" : "good",
|
||||
"commander" : "TempleGuardian1",
|
||||
"commander" : "templeGuardian1",
|
||||
"creatureBackground" :
|
||||
{
|
||||
"120px" : "TPCASTOW",
|
||||
@ -135,18 +135,18 @@
|
||||
],
|
||||
"creatures" :
|
||||
[
|
||||
["ApprenticeGremlin", "MasterGremlin"],
|
||||
["StoneGargoyle", "ObsidianGargoyle"],
|
||||
["IronGolem", "StoneGolem"],
|
||||
["Mage", "ArchMage"],
|
||||
["Genie", "Caliph"],
|
||||
["NagaSentinel", "NagaGuardian"],
|
||||
["LesserTitan", "GreaterTitan"]
|
||||
["gremlin", "masterGremlin"],
|
||||
["stoneGargoyle", "obsidianGargoyle"],
|
||||
["ironGolem", "stoneGolem"],
|
||||
["mage", "archMage"],
|
||||
["genie", "masterGenie"],
|
||||
["naga", "nagaQueen"],
|
||||
["giant", "titan"]
|
||||
],
|
||||
"horde" : [ 1, -1 ],
|
||||
"primaryResource" : "gems",
|
||||
"mageGuild" : 5,
|
||||
"warMachine" : "AmmoCart",
|
||||
"warMachine" : "ammoCart",
|
||||
|
||||
"buildings" :
|
||||
[
|
||||
@ -194,7 +194,7 @@
|
||||
|
||||
"siege" :
|
||||
{
|
||||
"shooter" : "Mage",
|
||||
"shooter" : "mage",
|
||||
"imagePrefix" : "SGTW",
|
||||
"gate" :
|
||||
{
|
||||
|
@ -11,5 +11,24 @@
|
||||
"config/factions/fortress.json",
|
||||
"config/factions/conflux.json",
|
||||
"config/factions/neutral.json"
|
||||
],
|
||||
|
||||
"creatures" :
|
||||
[
|
||||
"config/creatures/castle.json",
|
||||
"config/creatures/rampart.json",
|
||||
"config/creatures/tower.json",
|
||||
|
||||
"config/creatures/necropolis.json",
|
||||
"config/creatures/inferno.json",
|
||||
"config/creatures/dungeon.json",
|
||||
|
||||
"config/creatures/stronghold.json",
|
||||
"config/creatures/fortress.json",
|
||||
"config/creatures/conflux.json",
|
||||
|
||||
"config/creatures/neutral.json",
|
||||
"config/creatures/special.json",
|
||||
"config/creatures/wog.json"
|
||||
]
|
||||
}
|
||||
|
@ -310,11 +310,14 @@ void CCreatureHandler::loadCreatures()
|
||||
while (parser.endLine());
|
||||
|
||||
// loading creatures properties
|
||||
tlog5 << "\t\tReading config/creatures.json" << std::endl;
|
||||
const JsonNode config(ResourceID("config/creatures.json"));
|
||||
tlog5 << "\t\tReading creatures json configs" << std::endl;
|
||||
|
||||
BOOST_FOREACH(const JsonNode &creature, config["creatures"].Vector())
|
||||
const JsonNode gameConf(ResourceID("config/gameConfig.json"));
|
||||
const JsonNode config(JsonUtils::assembleFromFiles(gameConf["creatures"].convertTo<std::vector<std::string> >()));
|
||||
|
||||
BOOST_FOREACH(auto & node, config.Struct())
|
||||
{
|
||||
const JsonNode &creature = node.second;
|
||||
int creatureID = creature["id"].Float();
|
||||
const JsonNode *value;
|
||||
|
||||
@ -355,7 +358,7 @@ void CCreatureHandler::loadCreatures()
|
||||
}
|
||||
}
|
||||
|
||||
value = &creature["ability_add"];
|
||||
value = &creature["abilities"];
|
||||
if (!value->isNull()) {
|
||||
BOOST_FOREACH(const JsonNode &ability, value->Vector())
|
||||
{
|
||||
@ -363,23 +366,37 @@ void CCreatureHandler::loadCreatures()
|
||||
}
|
||||
}
|
||||
|
||||
c->nameRef = creature["name"].Vector().at(0).String();
|
||||
c->special = creature["special"].Bool();
|
||||
if ( c->special )
|
||||
notUsedMonsters.insert(c->idNumber);
|
||||
|
||||
/* A creature can have several names. */
|
||||
BOOST_FOREACH(const JsonNode &name, creature["name"].Vector())
|
||||
const JsonNode & sounds = creature["sound"];
|
||||
|
||||
#define GET_SOUND_VALUE(value_name) c->sounds.value_name = sounds[#value_name].String()
|
||||
GET_SOUND_VALUE(attack);
|
||||
GET_SOUND_VALUE(defend);
|
||||
GET_SOUND_VALUE(killed);
|
||||
GET_SOUND_VALUE(move);
|
||||
GET_SOUND_VALUE(shoot);
|
||||
GET_SOUND_VALUE(wince);
|
||||
GET_SOUND_VALUE(ext1);
|
||||
GET_SOUND_VALUE(ext2);
|
||||
GET_SOUND_VALUE(startMoving);
|
||||
GET_SOUND_VALUE(endMoving);
|
||||
#undef GET_SOUND_VALUE
|
||||
|
||||
// Main reference name, e.g. royalGriffin
|
||||
c->nameRef = node.first;
|
||||
VLC->modh->identifiers.registerObject("creature." + node.first, c->idNumber);
|
||||
|
||||
// Alternative names, if any
|
||||
BOOST_FOREACH(const JsonNode &name, creature["extraNames"].Vector())
|
||||
{
|
||||
VLC->modh->identifiers.registerObject(std::string("creature.") + name.String(), c->idNumber);
|
||||
VLC->modh->identifiers.registerObject("creature." + name.String(), c->idNumber);
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_FOREACH(const JsonNode &creature, config["unused_creatures"].Vector())
|
||||
{
|
||||
notUsedMonsters += creature.Float();
|
||||
}
|
||||
|
||||
loadAnimationInfo();
|
||||
loadSoundsInfo();
|
||||
|
||||
|
||||
//reading creature ability names
|
||||
const JsonNode config2(ResourceID("config/bonusnames.json"));
|
||||
@ -574,41 +591,6 @@ void CCreatureHandler::loadUnitAnimInfo(CCreature & unit, CLegacyConfigParser &
|
||||
parser.endLine();
|
||||
}
|
||||
|
||||
void CCreatureHandler::loadCreatureSounds(JsonNode node, si32 creaID) // passing node by value to get clearer binding code
|
||||
{
|
||||
/* This is a bit ugly. Maybe we should use an array for
|
||||
* sound ids instead of separate variables and define
|
||||
* attack/defend/killed/... as indexes. */
|
||||
#define GET_SOUND_VALUE(value_name) do { creatures[creaID]->sounds.value_name = node[#value_name].String(); } while(0)
|
||||
GET_SOUND_VALUE(attack);
|
||||
GET_SOUND_VALUE(defend);
|
||||
GET_SOUND_VALUE(killed);
|
||||
GET_SOUND_VALUE(move);
|
||||
GET_SOUND_VALUE(shoot);
|
||||
GET_SOUND_VALUE(wince);
|
||||
GET_SOUND_VALUE(ext1);
|
||||
GET_SOUND_VALUE(ext2);
|
||||
GET_SOUND_VALUE(startMoving);
|
||||
GET_SOUND_VALUE(endMoving);
|
||||
#undef GET_SOUND_VALUE
|
||||
}
|
||||
|
||||
void CCreatureHandler::loadSoundsInfo()
|
||||
{
|
||||
tlog5 << "\t\tReading config/cr_sounds.json" << std::endl;
|
||||
const JsonNode config(ResourceID("config/cr_sounds.json"));
|
||||
|
||||
if (!config["creature_sounds"].isNull())
|
||||
{
|
||||
|
||||
BOOST_FOREACH(const JsonNode &node, config["creature_sounds"].Vector())
|
||||
{
|
||||
VLC->modh->identifiers.requestIdentifier(std::string("creature.") + node["name"].String(),
|
||||
boost::bind(&CCreatureHandler::loadCreatureSounds, this, node, _1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CCreatureHandler::load(const JsonNode & node)
|
||||
{
|
||||
BOOST_FOREACH(auto & entry, node.Struct())
|
||||
|
@ -32,7 +32,6 @@ public:
|
||||
//damage, hp. etc are handled by Bonuses
|
||||
ui32 fightValue, AIValue, growth, hordeGrowth;
|
||||
ui32 ammMin, ammMax;
|
||||
ui8 level; // 0 - unknown
|
||||
std::string abilityText; //description of abilities
|
||||
std::string abilityRefs; //references to abilities, in text format
|
||||
std::string animDefName;
|
||||
@ -40,7 +39,9 @@ public:
|
||||
si32 idNumber;
|
||||
si32 iconIndex; // index of icon in files like twcrport
|
||||
TFaction faction; //-1 = neutral
|
||||
ui8 level; // 0 - unknown
|
||||
ui8 doubleWide;
|
||||
ui8 special; // Creature is not available normally (war machines, commanders, etc
|
||||
|
||||
///animation info
|
||||
double timeBetweenFidgets, walkAnimationTime, attackAnimationTime, flightAnimationDistance;
|
||||
@ -157,9 +158,6 @@ public:
|
||||
void loadAnimationInfo();
|
||||
/// read one line from cranim.txt
|
||||
void loadUnitAnimInfo(CCreature & unit, CLegacyConfigParser &parser);
|
||||
/// load cr_sounds.json config
|
||||
void loadCreatureSounds(JsonNode node, si32 creaID);
|
||||
void loadSoundsInfo();
|
||||
/// parse crexpbon.txt file from H3
|
||||
void loadStackExp(Bonus & b, BonusList & bl, CLegacyConfigParser &parser);
|
||||
/// help function for parsing CREXPBON.txt
|
||||
|
@ -381,6 +381,7 @@ void CHeroHandler::loadHeroes()
|
||||
|
||||
std::string refName = parser.readString();
|
||||
boost::algorithm::replace_all(refName, " ", ""); //remove spaces
|
||||
refName[0] = std::tolower(refName[0]); // to camelCase
|
||||
VLC->modh->identifiers.requestIdentifier(std::string("creature.") + refName, [=](si32 creature)
|
||||
{
|
||||
hero->initialArmy[x].creature = creature;
|
||||
|
@ -21,19 +21,30 @@
|
||||
*
|
||||
*/
|
||||
|
||||
class CArtHandler;
|
||||
class CHeroHandler;
|
||||
class CCreatureHandler;
|
||||
class CSpellHandler;
|
||||
class CBuildingHandler;
|
||||
class CObjectHandler;
|
||||
class CDefObjInfoHandler;
|
||||
class CTownHandler;
|
||||
class CGeneralTextHandler;
|
||||
class ResourceLocator;
|
||||
void CIdentifierStorage::checkIdentifier(std::string & ID)
|
||||
{
|
||||
if (boost::algorithm::ends_with(ID, "."))
|
||||
tlog0 << "BIG WARNING: identifier " << ID << " seems to be broken!\n";
|
||||
else
|
||||
{
|
||||
size_t pos = 0;
|
||||
do
|
||||
{
|
||||
if (std::tolower(ID[pos]) != ID[pos] ) //Not in camelCase
|
||||
{
|
||||
tlog0 << "Warning: identifier " << ID << " is not in camelCase!\n";
|
||||
ID[pos] = std::tolower(ID[pos]);// Try to fix the ID
|
||||
}
|
||||
pos = ID.find('.', pos);
|
||||
}
|
||||
while(pos++ != std::string::npos);
|
||||
}
|
||||
}
|
||||
|
||||
void CIdentifierStorage::requestIdentifier(std::string name, const boost::function<void(si32)> & callback)
|
||||
{
|
||||
checkIdentifier(name);
|
||||
|
||||
auto iter = registeredObjects.find(name);
|
||||
|
||||
if (iter != registeredObjects.end())
|
||||
@ -44,6 +55,8 @@ void CIdentifierStorage::requestIdentifier(std::string name, const boost::functi
|
||||
|
||||
void CIdentifierStorage::registerObject(std::string name, si32 identifier)
|
||||
{
|
||||
checkIdentifier(name);
|
||||
|
||||
// do not allow to register same object twice
|
||||
assert(registeredObjects.find(name) == registeredObjects.end());
|
||||
|
||||
|
@ -26,6 +26,8 @@ class CIdentifierStorage
|
||||
std::map<std::string, si32 > registeredObjects;
|
||||
std::map<std::string, std::vector<boost::function<void(si32)> > > missingObjects;
|
||||
|
||||
//Check if identifier can be valid (camelCase, point as separator)
|
||||
void checkIdentifier(std::string & ID);
|
||||
public:
|
||||
/// request identifier for specific object name. If ID is not yet resolved callback will be queued
|
||||
/// and will be called later
|
||||
|
@ -520,7 +520,7 @@ void CTownHandler::load(const JsonNode &source)
|
||||
[=](si32 commanderID)
|
||||
{
|
||||
factions[id].commander = commanderID;
|
||||
}); //TODO: resolve string id
|
||||
});
|
||||
|
||||
faction.creatureBg120 = node.second["creatureBackground"]["120px"].String();
|
||||
faction.creatureBg130 = node.second["creatureBackground"]["130px"].String();
|
||||
|
@ -176,7 +176,6 @@ public:
|
||||
ui8 nativeTerrain;
|
||||
ui8 alignment; // uses EAlignment enum
|
||||
|
||||
//std::string commanderClass;
|
||||
TCreature commander;
|
||||
|
||||
std::string creatureBg120;
|
||||
|
Loading…
Reference in New Issue
Block a user