diff --git a/.gitignore b/.gitignore index d655823e..7d82ec90 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ index.bin +.vs +.idea +__pycache__ *.zip *.pak -data* \ No newline at end of file +data* +./Frax \ No newline at end of file diff --git a/Characters/Creatures/Dwarves/AlternativeUpgrade/T4_BattleRager/T4_BattleRager-arena.xdb b/Characters/Creatures/Dwarves/AlternativeUpgrade/T4_BattleRager/T4_BattleRager-arena.xdb new file mode 100644 index 00000000..3ab88ded --- /dev/null +++ b/Characters/Creatures/Dwarves/AlternativeUpgrade/T4_BattleRager/T4_BattleRager-arena.xdb @@ -0,0 +1,52 @@ + + + + + attack00 + + + + specability + + + + death + + + + happy + + + + hit + + + + idle00 + + + + idle01 + + + + move + + + + spneutral + + + + sporator + + + + stir00 + + + + + + Global + diff --git a/Characters/Creatures/Empire/Archangel-arena-attack01.xdb b/Characters/Creatures/Empire/Archangel-arena-attack01.xdb new file mode 100644 index 00000000..fb965cb8 --- /dev/null +++ b/Characters/Creatures/Empire/Archangel-arena-attack01.xdb @@ -0,0 +1,16 @@ + + + + 45E987D3-437B-4AC2-9B0F-2A7DDFDA9282 + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/Characters/Creatures/Empire/Archangel-arena-idle00.xdb b/Characters/Creatures/Empire/Archangel-arena-idle00.xdb new file mode 100644 index 00000000..d5ce4d47 --- /dev/null +++ b/Characters/Creatures/Empire/Archangel-arena-idle00.xdb @@ -0,0 +1,16 @@ + + + + 08661F87-C2E9-44BD-A80A-64B7E816AD07 + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/Characters/Creatures/Empire/Archangel-arena-stir00.xdb b/Characters/Creatures/Empire/Archangel-arena-stir00.xdb new file mode 100644 index 00000000..d7609e86 --- /dev/null +++ b/Characters/Creatures/Empire/Archangel-arena-stir00.xdb @@ -0,0 +1,16 @@ + + + + A9B31A35-5FF4-4EE7-BDEB-742C3DF38F01 + + Global + 0 + 0 + + 0 + 0.7 + + + 250 + + diff --git a/Characters/Creatures/Empire/Archangel-arena-stir01.xdb b/Characters/Creatures/Empire/Archangel-arena-stir01.xdb new file mode 100644 index 00000000..716f19e0 --- /dev/null +++ b/Characters/Creatures/Empire/Archangel-arena-stir01.xdb @@ -0,0 +1,16 @@ + + + + A9B31A35-5FF4-4EE7-BDEB-742C3DF38F01 + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/Characters/Creatures/Necropolis/Death/Archangel-arena-death.xdb b/Characters/Creatures/Necropolis/Death/Archangel-arena-death.xdb new file mode 100644 index 00000000..3afa70d3 --- /dev/null +++ b/Characters/Creatures/Necropolis/Death/Archangel-arena-death.xdb @@ -0,0 +1,16 @@ + + + + D070BC8B-7B5C-4EED-994D-131928C9272C + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/Characters/Creatures/Renegades/Cleric-arena.xdb b/Characters/Creatures/Renegades/Cleric-arena.xdb new file mode 100644 index 00000000..92c7c647 --- /dev/null +++ b/Characters/Creatures/Renegades/Cleric-arena.xdb @@ -0,0 +1,48 @@ + + + + + attack00 + + + + attack01 + + + + cast + + + + death + + + + hit + + + + idle00 + + + + move + + + + rangeattack + + + + specability + + + + happy + + + + + + Global + diff --git a/Characters/Creatures/Renegades/Cleric_LOD-adv.xdb b/Characters/Creatures/Renegades/Cleric_LOD-adv.xdb new file mode 100644 index 00000000..e86df5df --- /dev/null +++ b/Characters/Creatures/Renegades/Cleric_LOD-adv.xdb @@ -0,0 +1,40 @@ + + + + + attack00 + + + + cast + + + + death + + + + hit + + + + idle00 + + + + move + + + + rangeattack + + + + specability + + + + + + Global + diff --git a/Characters/Creatures/Renegades/Marksman-arena.xdb b/Characters/Creatures/Renegades/Marksman-arena.xdb new file mode 100644 index 00000000..042bd4b0 --- /dev/null +++ b/Characters/Creatures/Renegades/Marksman-arena.xdb @@ -0,0 +1,52 @@ + + + + + specability + + + + attack00 + + + + attack01 + + + + death + + + + happy + + + + hit + + + + idle00 + + + + move + + + + rangeattack + + + + rangeattack_wall + + + + stir00 + + + + + + Global + diff --git a/Characters/Creatures/Renegades/Marksman_LOD-adv.xdb b/Characters/Creatures/Renegades/Marksman_LOD-adv.xdb new file mode 100644 index 00000000..fa866d15 --- /dev/null +++ b/Characters/Creatures/Renegades/Marksman_LOD-adv.xdb @@ -0,0 +1,52 @@ + + + + + specability + + + + attack00 + + + + attack01 + + + + death + + + + happy + + + + hit + + + + idle00 + + + + move + + + + rangeattack + + + + rangeattack_wall + + + + stir00 + + + + + + Global + diff --git a/Characters/Creatures/Renegades/RoyalGriffin-arena.xdb b/Characters/Creatures/Renegades/RoyalGriffin-arena.xdb new file mode 100644 index 00000000..f0524de2 --- /dev/null +++ b/Characters/Creatures/Renegades/RoyalGriffin-arena.xdb @@ -0,0 +1,52 @@ + + + + + specability + + + + attack00 + + + + attack01 + + + + death + + + + happy + + + + hit + + + + idle00 + + + + move + + + + specability1 + + + + specability2 + + + + stir00 + + + + + + Global + diff --git a/Characters/Creatures/Renegades/RoyalGriffin_LOD-adv.xdb b/Characters/Creatures/Renegades/RoyalGriffin_LOD-adv.xdb new file mode 100644 index 00000000..c2453a39 --- /dev/null +++ b/Characters/Creatures/Renegades/RoyalGriffin_LOD-adv.xdb @@ -0,0 +1,52 @@ + + + + + specability + + + + attack00 + + + + attack01 + + + + death + + + + happy + + + + hit + + + + idle00 + + + + move + + + + specability1 + + + + specability2 + + + + stir00 + + + + + + Global + diff --git a/GameMechanics/Creature/Creatures/Academy/3rd/CombatMage.xdb b/GameMechanics/Creature/Creatures/Academy/3rd/CombatMage.xdb new file mode 100644 index 00000000..c3f6147c --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/3rd/CombatMage.xdb @@ -0,0 +1,60 @@ + + + 25 + 25 + 7 + 8 + 8 + 4 + 10 + false + 63 + + + SPELL_EMPOWERED_MAGIC_ARROW + MASTERY_EXPERT + + + SPELL_MASS_DEFLECT_ARROWS + MASTERY_EXPERT + + + 19 + 0 + 0 + 75 + 642 + 10 + 4 + false + CREATURE_UNKNOWN + TOWN_ACADEMY + + ELEMENT_FIRE + ELEMENT_EARTH + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 375 + + true + + 1 + + + + -1 + CREATURE_MAGI + + + ABILITY_NO_RANGE_PENALTY + ABILITY_MAGIC_ATTACK + ABILITY_ELDRITCH_AURA + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/3rd/DjinnVizier.xdb b/GameMechanics/Creature/Creatures/Academy/3rd/DjinnVizier.xdb new file mode 100644 index 00000000..87e3ae31 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/3rd/DjinnVizier.xdb @@ -0,0 +1,52 @@ + + + 30 + 30 + 0 + 14 + 24 + 8 + 12 + true + 75 + + 0 + 99 + 0 + 142 + 1096 + 10 + 5 + false + CREATURE_UNKNOWN + TOWN_ACADEMY + + ELEMENT_AIR + ELEMENT_FIRE + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + 0 + true + + 2 + + + + 0 + CREATURE_GENIE + + + ABILITY_LUCK_GAMBLER + ABILITY_MAGIC_PROOF_75 + + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/3rd/GremlinSaboteur.xdb b/GameMechanics/Creature/Creatures/Academy/3rd/GremlinSaboteur.xdb new file mode 100644 index 00000000..b00c82ab --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/3rd/GremlinSaboteur.xdb @@ -0,0 +1,50 @@ + + + 10 + 10 + 9 + 1 + 2 + 5 + 12 + false + 12 + + 0 + 0 + 0 + 12 + 105 + 10 + 1 + false + CREATURE_UNKNOWN + TOWN_ACADEMY + + ELEMENT_AIR + ELEMENT_WATER + + 20 + + 0 + 0 + 0 + 0 + 0 + 0 + 60 + + 0 + true + + 1 + + + + -2 + CREATURE_GREMLIN + + + ABILITY_SABOTAGE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/3rd/MarbleGargoyle.xdb b/GameMechanics/Creature/Creatures/Academy/3rd/MarbleGargoyle.xdb new file mode 100644 index 00000000..0e60892f --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/3rd/MarbleGargoyle.xdb @@ -0,0 +1,55 @@ + + + 15 + 15 + 0 + 1 + 2 + 7 + 11 + true + 37 + + 0 + 0 + 0 + 20 + 180 + 10 + 2 + false + CREATURE_UNKNOWN + TOWN_ACADEMY + + ELEMENT_EARTH + ELEMENT_AIR + + 14 + + 0 + 0 + 0 + 0 + 0 + 0 + 101 + + true + + 1 + + + + 0 + CREATURE_STONE_GARGOYLE + + + ABILITY_ELEMENTAL + ABILITY_ENRAGED + ABILITY_AURA_OF_LIGHTNING_VULNERABILITY + ABILITY_AURA_OF_FIRE_VULNERABILITY + ABILITY_AURA_OF_ICE_VULNERABILITY + ABILITY_AURA_OF_EARTH_VULNERABILITY + ABILITY_MAGIC_PROOF_50 + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/3rd/ObsidianGolem.xdb b/GameMechanics/Creature/Creatures/Academy/3rd/ObsidianGolem.xdb new file mode 100644 index 00000000..1ad28154 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/3rd/ObsidianGolem.xdb @@ -0,0 +1,51 @@ + + + 20 + 20 + 0 + 5 + 7 + 5 + 9 + false + 37 + + 0 + 0 + 0 + 36 + 355 + 10 + 3 + false + CREATURE_UNKNOWN + TOWN_ACADEMY + + ELEMENT_EARTH + ELEMENT_WATER + + 9 + + 0 + 0 + 0 + 0 + 0 + 0 + 181 + + true + + 1 + + + + 0 + CREATURE_IRON_GOLEM + + + ABILITY_MECHANICAL + ABILITY_ENCHANTED_OBSIDIAN + ABILITY_DESTRUCTION_MAGIC_MAGNETISM + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/3rd/RakshasaKshatri.xdb b/GameMechanics/Creature/Creatures/Academy/3rd/RakshasaKshatri.xdb new file mode 100644 index 00000000..124500f9 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/3rd/RakshasaKshatri.xdb @@ -0,0 +1,50 @@ + + + 35 + 35 + 0 + 24 + 32 + 6 + 8 + false + 247 + + 0 + 0 + 0 + 241 + 2581 + 10 + 6 + false + CREATURE_UNKNOWN + TOWN_ACADEMY + + ELEMENT_WATER + ELEMENT_FIRE + + 2 + + 0 + 0 + 1 + 0 + 0 + 0 + 1204 + + true + + 2 + + + + 0 + CREATURE_RAKSHASA + + + ABILITY_WHIRLWIND + ABILITY_DASH + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/3rd/StormLord.xdb b/GameMechanics/Creature/Creatures/Academy/3rd/StormLord.xdb new file mode 100644 index 00000000..cee82fbf --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/3rd/StormLord.xdb @@ -0,0 +1,52 @@ + + + 40 + 40 + 7 + 50 + 70 + 6 + 10 + false + 360 + + 0 + 1 + 0 + 540 + 6095 + 10 + 7 + false + CREATURE_UNKNOWN + TOWN_ACADEMY + + ELEMENT_AIR + ELEMENT_WATER + + 1 + + 0 + 0 + 0 + 0 + 0 + 2 + 2700 + + true + + 2 + + + + -2 + CREATURE_GIANT + + + ABILITY_IMMUNITY_TO_MIND_CONTROL + ABILITY_CALL_STORM + ABILITY_LIGHTNING_BREATH + ABILITY_NO_MELEE_PENALTY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Arch_Magi.xdb b/GameMechanics/Creature/Creatures/Academy/Arch_Magi.xdb new file mode 100644 index 00000000..424a7a8e --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Arch_Magi.xdb @@ -0,0 +1,64 @@ + + + 25 + 25 + 7 + 8 + 8 + 4 + 11 + false + 60 + + + SPELL_ANTI_MAGIC + MASTERY_EXPERT + + + SPELL_SUMMON_ELEMENTALS + MASTERY_EXPERT + + + SPELL_MAGIC_FIST + MASTERY_EXPERT + + + 20 + 0 + 0 + 75 + 643 + 15 + 4 + true + CREATURE_MAGI + TOWN_ACADEMY + + ELEMENT_FIRE + ELEMENT_EARTH + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 375 + + true + + 1 + + + + -1 + CREATURE_MAGI + + + ABILITY_NO_RANGE_PENALTY + ABILITY_MAGIC_ATTACK + ABILITY_ENERGY_CHANNEL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Genie.xdb b/GameMechanics/Creature/Creatures/Academy/Genie.xdb new file mode 100644 index 00000000..022c6356 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Genie.xdb @@ -0,0 +1,54 @@ + + + 30 + 30 + 0 + 12 + 14 + 8 + 14 + true + 75 + + 0 + 99 + 0 + 119 + 839 + 10 + 5 + false + CREATURE_MASTER_GENIE + TOWN_ACADEMY + + ELEMENT_AIR + ELEMENT_NONE + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 593 + + 0 + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_MASTER_GENIE + CREATURE_DJINN_VIZIER + + + ABILITY_RANDOM_CASTER + ABILITY_MAGIC_PROOF_25 + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Giant.xdb b/GameMechanics/Creature/Creatures/Academy/Giant.xdb new file mode 100644 index 00000000..bfc52648 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Giant.xdb @@ -0,0 +1,52 @@ + + + 40 + 40 + 0 + 40 + 70 + 6 + 9 + false + 330 + + 0 + 0 + 0 + 450 + 4822 + 10 + 7 + false + CREATURE_TITAN + TOWN_ACADEMY + + ELEMENT_AIR + ELEMENT_NONE + + 1 + + 0 + 0 + 0 + 0 + 0 + 1 + 2250 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_TITAN + CREATURE_STORM_LORD + + + ABILITY_IMMUNITY_TO_MIND_CONTROL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Gremlin.xdb b/GameMechanics/Creature/Creatures/Academy/Gremlin.xdb new file mode 100644 index 00000000..3af188c4 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Gremlin.xdb @@ -0,0 +1,50 @@ + + + 10 + 10 + 7 + 1 + 2 + 4 + 8 + false + 10 + + 0 + 0 + 0 + 10 + 63 + 10 + 1 + false + CREATURE_MASTER_GREMLIN + TOWN_ACADEMY + + ELEMENT_AIR + ELEMENT_NONE + + 20 + + 0 + 0 + 0 + 0 + 0 + 0 + 50 + + true + + 1 + + + + -2 + CREATURE_UNKNOWN + + CREATURE_MASTER_GREMLIN + CREATURE_GREMLIN_SABOTEUR + + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Iron_Golem.xdb b/GameMechanics/Creature/Creatures/Academy/Iron_Golem.xdb new file mode 100644 index 00000000..64aaa4d5 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Iron_Golem.xdb @@ -0,0 +1,54 @@ + + + 20 + 20 + 0 + 3 + 5 + 5 + 8 + false + 37 + + 0 + 0 + 0 + 30 + 243 + 10 + 3 + false + CREATURE_STEEL_GOLEM + TOWN_ACADEMY + + ELEMENT_EARTH + ELEMENT_NONE + + 9 + + 0 + 0 + 0 + 0 + 0 + 0 + 151 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_STEEL_GOLEM + CREATURE_OBSIDIAN_GOLEM + + + ABILITY_MECHANICAL + ABILITY_MAGIC_PROOF_50 + ABILITY_IMMUNITY_TO_SLOW + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Magi.xdb b/GameMechanics/Creature/Creatures/Academy/Magi.xdb new file mode 100644 index 00000000..a27fd801 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Magi.xdb @@ -0,0 +1,58 @@ + + + 25 + 25 + 7 + 8 + 8 + 4 + 10 + false + 36 + + + SPELL_MAGIC_FIST + MASTERY_EXPERT + + + 18 + 0 + 0 + 62 + 498 + 15 + 4 + false + CREATURE_ARCH_MAGI + TOWN_ACADEMY + + ELEMENT_FIRE + ELEMENT_NONE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 312 + + true + + 1 + + + + -1 + CREATURE_UNKNOWN + + CREATURE_ARCH_MAGI + CREATURE_COMBAT_MAGE + + + ABILITY_NO_RANGE_PENALTY + ABILITY_MAGIC_ATTACK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Master_Genie.xdb b/GameMechanics/Creature/Creatures/Academy/Master_Genie.xdb new file mode 100644 index 00000000..387eb3bf --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Master_Genie.xdb @@ -0,0 +1,52 @@ + + + 30 + 30 + 0 + 14 + 20 + 9 + 15 + true + 90 + + 0 + 99 + 0 + 142 + 1126 + 10 + 5 + true + CREATURE_GENIE + TOWN_ACADEMY + + ELEMENT_AIR + ELEMENT_FIRE + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + 0 + true + + 2 + + + + 0 + CREATURE_GENIE + + + ABILITY_RANDOM_CASTER_BLESS + ABILITY_MAGIC_PROOF_75 + ABILITY_IMMUNITY_TO_CURSE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Master_Gremlin.xdb b/GameMechanics/Creature/Creatures/Academy/Master_Gremlin.xdb new file mode 100644 index 00000000..0b852785 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Master_Gremlin.xdb @@ -0,0 +1,50 @@ + + + 10 + 10 + 9 + 1 + 2 + 5 + 11 + false + 12 + + 0 + 1 + 0 + 12 + 105 + 10 + 1 + true + CREATURE_GREMLIN + TOWN_ACADEMY + + ELEMENT_AIR + ELEMENT_WATER + + 20 + + 0 + 0 + 0 + 0 + 0 + 0 + 60 + + 0 + true + + 1 + + + + -2 + CREATURE_GREMLIN + + + ABILITY_REPAIR + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Obsidian_Gargoyle.xdb b/GameMechanics/Creature/Creatures/Academy/Obsidian_Gargoyle.xdb new file mode 100644 index 00000000..738945cc --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Obsidian_Gargoyle.xdb @@ -0,0 +1,54 @@ + + + 15 + 15 + 0 + 1 + 2 + 7 + 11 + true + 37 + + 0 + 0 + 0 + 20 + 178 + 10 + 2 + true + CREATURE_STONE_GARGOYLE + TOWN_ACADEMY + + ELEMENT_EARTH + ELEMENT_AIR + + 14 + + 0 + 0 + 0 + 0 + 0 + 0 + 101 + + true + + 1 + + + + 0 + CREATURE_STONE_GARGOYLE + + + ABILITY_ELEMENTAL + ABILITY_ENRAGED + ABILITY_IMMUNITY_TO_AIR + ABILITY_IMMUNITY_TO_FIRE + ABILITY_IMMUNITY_TO_WATER + ABILITY_IMMUNITY_TO_EARTH + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Rakshasa.xdb b/GameMechanics/Creature/Creatures/Academy/Rakshasa.xdb new file mode 100644 index 00000000..49894728 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Rakshasa.xdb @@ -0,0 +1,52 @@ + + + 35 + 35 + 0 + 18 + 26 + 6 + 9 + false + 225 + + 0 + 0 + 0 + 201 + 2108 + 10 + 6 + false + CREATURE_RAKSHASA_RUKH + TOWN_ACADEMY + + ELEMENT_WATER + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 0 + 0 + 0 + 1003 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_RAKSHASA_RUKH + CREATURE_RAKSHASA_KSHATRI + + + ABILITY_NO_ENEMY_RETALIATION + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Rakshasa_Rukh.xdb b/GameMechanics/Creature/Creatures/Academy/Rakshasa_Rukh.xdb new file mode 100644 index 00000000..86d9f023 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Rakshasa_Rukh.xdb @@ -0,0 +1,49 @@ + + + 35 + 35 + 0 + 22 + 30 + 6 + 12 + false + 262 + + 0 + 0 + 0 + 241 + 2535 + 10 + 6 + true + CREATURE_RAKSHASA + TOWN_ACADEMY + + ELEMENT_WATER + ELEMENT_FIRE + + 2 + + 0 + 0 + 1 + 0 + 0 + 0 + 1204 + + true + + 2 + + + + 0 + CREATURE_RAKSHASA + + + ABILITY_NO_ENEMY_RETALIATION + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Steel_Golem.xdb b/GameMechanics/Creature/Creatures/Academy/Steel_Golem.xdb new file mode 100644 index 00000000..344c0a96 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Steel_Golem.xdb @@ -0,0 +1,52 @@ + + + 20 + 20 + 0 + 5 + 7 + 5 + 8 + false + 45 + + 0 + 0 + 0 + 36 + 357 + 10 + 3 + true + CREATURE_IRON_GOLEM + TOWN_ACADEMY + + ELEMENT_EARTH + ELEMENT_WATER + + 9 + + 0 + 0 + 0 + 0 + 0 + 0 + 181 + + true + + 1 + + + + 0 + CREATURE_IRON_GOLEM + + + ABILITY_MECHANICAL + ABILITY_MAGIC_PROOF_75 + ABILITY_IMMUNITY_TO_SLOW + ABILITY_UNLIMITED_RETALIATION + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Stone_Gargoyle.xdb b/GameMechanics/Creature/Creatures/Academy/Stone_Gargoyle.xdb new file mode 100644 index 00000000..592ae3a3 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Stone_Gargoyle.xdb @@ -0,0 +1,54 @@ + + + 15 + 15 + 0 + 1 + 1 + 6 + 9 + true + 30 + + 0 + 0 + 0 + 17 + 113 + 10 + 2 + false + CREATURE_OBSIDIAN_GARGOYLE + TOWN_ACADEMY + + ELEMENT_EARTH + ELEMENT_NONE + + 14 + + 0 + 0 + 0 + 0 + 0 + 0 + 84 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_MARBLE_GARGOYLE + + + ABILITY_ELEMENTAL + ABILITY_ENRAGED + ABILITY_IMMUNITY_TO_AIR + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Academy/Titan.xdb b/GameMechanics/Creature/Creatures/Academy/Titan.xdb new file mode 100644 index 00000000..5b0657ca --- /dev/null +++ b/GameMechanics/Creature/Creatures/Academy/Titan.xdb @@ -0,0 +1,51 @@ + + + 40 + 40 + 0 + 20 + 35 + 6 + 10 + false + 397 + + 0 + 0 + 0 + 540 + 6095 + 10 + 7 + true + CREATURE_GIANT + TOWN_ACADEMY + + ELEMENT_AIR + ELEMENT_WATER + + 1 + + 0 + 0 + 0 + 0 + 0 + 2 + 2700 + + true + + 2 + + + + 0 + CREATURE_GIANT + + + ABILITY_IMMUNITY_TO_MIND_CONTROL + ABILITY_CALL_LIGHTNING + ABILITY_STORMSTRIKE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/3rd/AcidicHydra.xdb b/GameMechanics/Creature/Creatures/Dungeon/3rd/AcidicHydra.xdb new file mode 100644 index 00000000..0f2e133c --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/3rd/AcidicHydra.xdb @@ -0,0 +1,52 @@ + + + 30 + 30 + 0 + 10 + 13 + 5 + 9 + false + 225 + + 0 + 0 + 0 + 142 + 1333 + 10 + 5 + false + CREATURE_UNKNOWN + TOWN_DUNGEON + + ELEMENT_WATER + ELEMENT_AIR + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + true + + 2 + + + + 0 + CREATURE_HYDRA + + + ABILITY_SIX_HEADED_ATTACK + ABILITY_NO_ENEMY_RETALIATION + ABILITY_TAUNT + ABILITY_ACID_BLOOD + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/3rd/BlackRider.xdb b/GameMechanics/Creature/Creatures/Dungeon/3rd/BlackRider.xdb new file mode 100644 index 00000000..9527d907 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/3rd/BlackRider.xdb @@ -0,0 +1,50 @@ + + + 25 + 25 + 0 + 3 + 6 + 8 + 12 + false + 112 + + 0 + 0 + 0 + 94 + 833 + 10 + 4 + false + CREATURE_UNKNOWN + TOWN_DUNGEON + + ELEMENT_EARTH + ELEMENT_FIRE + + 4 + + 0 + 0 + 0 + 0 + 0 + 0 + 469 + + true + + 2 + + + + 0 + CREATURE_RIDER + + + ABILITY_LIZARD_BITE + ABILITY_RIDE_BY_ATTACK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/3rd/BloodWitch2.xdb b/GameMechanics/Creature/Creatures/Dungeon/3rd/BloodWitch2.xdb new file mode 100644 index 00000000..e15d02ea --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/3rd/BloodWitch2.xdb @@ -0,0 +1,51 @@ + + + 15 + 15 + 0 + 5 + 10 + 99 + 10 + false + 40 + + 0 + 0 + 0 + 47 + 490 + 10 + 2 + false + CREATURE_UNKNOWN + TOWN_DUNGEON + + ELEMENT_AIR + ELEMENT_EARTH + + 6 + + 0 + 0 + 0 + 0 + 0 + 0 + 235 + + true + + 1 + + + + 0 + CREATURE_WITCH + + + ABILITY_STRIKE_AND_RETURN + ABILITY_NO_ENEMY_RETALIATION + ABILITY_MAGIC_PROOF_50 + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/3rd/MinotaurCaptain.xdb b/GameMechanics/Creature/Creatures/Dungeon/3rd/MinotaurCaptain.xdb new file mode 100644 index 00000000..301277da --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/3rd/MinotaurCaptain.xdb @@ -0,0 +1,49 @@ + + + 20 + 20 + 0 + 4 + 7 + 7 + 10 + false + 75 + + 0 + 0 + 0 + 54 + 488 + 10 + 3 + false + CREATURE_UNKNOWN + TOWN_DUNGEON + + ELEMENT_FIRE + ELEMENT_WATER + + 6 + + 0 + 0 + 0 + 0 + 0 + 0 + 272 + + true + + 1 + + + + 0 + CREATURE_MINOTAUR + + + ABILITY_AURA_OF_BRAVERY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/3rd/RedDragon.xdb b/GameMechanics/Creature/Creatures/Dungeon/3rd/RedDragon.xdb new file mode 100644 index 00000000..7a5b2aec --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/3rd/RedDragon.xdb @@ -0,0 +1,51 @@ + + + 40 + 40 + 0 + 45 + 60 + 8 + 11 + true + 435 + + 0 + 0 + 0 + 540 + 6440 + 10 + 7 + false + CREATURE_UNKNOWN + TOWN_DUNGEON + + ELEMENT_FIRE + ELEMENT_AIR + + 1 + + 0 + 0 + 0 + 0 + 2 + 0 + 2700 + + true + + 2 + + + + 0 + CREATURE_DEEP_DRAGON + + + ABILITY_IMMUNITY_TO_MIND_CONTROL + ABILITY_FIRE_BREATH + ABILITY_INCINERATE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/3rd/ShadowMistress.xdb b/GameMechanics/Creature/Creatures/Dungeon/3rd/ShadowMistress.xdb new file mode 100644 index 00000000..8b13d271 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/3rd/ShadowMistress.xdb @@ -0,0 +1,64 @@ + + + 35 + 35 + 0 + 20 + 30 + 6 + 11 + false + 187 + + + SPELL_MASS_SLOW + MASTERY_EXPERT + + + SPELL_PHANTOM + MASTERY_BASIC + + + SPELL_VAMPIRISM + MASTERY_BASIC + + + 15 + 1 + 0 + 241 + 2542 + 10 + 6 + false + CREATURE_UNKNOWN + TOWN_DUNGEON + + ELEMENT_EARTH + ELEMENT_AIR + + 2 + + 0 + 0 + 0 + 1 + 0 + 0 + 1204 + + true + + 1 + + + + 0 + CREATURE_MATRON + + + ABILITY_NO_ENEMY_RETALIATION + ABILITY_HEXING_ATTACK + ABILITY_INVISIBILITY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/3rd/Stalker.xdb b/GameMechanics/Creature/Creatures/Dungeon/3rd/Stalker.xdb new file mode 100644 index 00000000..2dd18db4 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/3rd/Stalker.xdb @@ -0,0 +1,51 @@ + + + 10 + 10 + 0 + 4 + 7 + 6 + 12 + false + 18 + + 0 + 1 + 0 + 34 + 290 + 10 + 1 + false + CREATURE_UNKNOWN + TOWN_DUNGEON + + ELEMENT_WATER + ELEMENT_EARTH + + 7 + + 0 + 0 + 0 + 0 + 0 + 0 + 171 + + true + + 1 + + + + 0 + CREATURE_SCOUT + + + ABILITY_NO_ENEMY_RETALIATION + ABILITY_INVISIBILITY + ABILITY_INCORPOREAL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/AcidBlood.xdb b/GameMechanics/Creature/Creatures/Dungeon/AcidBlood.xdb new file mode 100644 index 00000000..8a7a3169 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/AcidBlood.xdb @@ -0,0 +1,261 @@ + + + + + + + 0 + 1 + + + 0 + 2 + + + 0 + 3 + + + 0 + 4 + + + 68 + + + + + -1 + 1 + + + -1 + 2 + + + -1 + 3 + + + -1 + 4 + + + 112 + + + + + 0 + -2 + + + 0 + -3 + + + 0 + -4 + + + 0 + -5 + + + 292 + + + + + -1 + -2 + + + -1 + -3 + + + -1 + -4 + + + -1 + -5 + + + 248 + + + + + 1 + 0 + + + 2 + 0 + + + 3 + 0 + + + 4 + 0 + + + 22 + + + + + 1 + -1 + + + 2 + -1 + + + 3 + -1 + + + 4 + -1 + + + 338 + + + + + -2 + 0 + + + -3 + 0 + + + -4 + 0 + + + -5 + 0 + + + 158 + + + + + -2 + -1 + + + -3 + -1 + + + -4 + -1 + + + -5 + -1 + + + 202 + + + + + 1 + 1 + + + 2 + 2 + + + 3 + 3 + + + 4 + 4 + + + 45 + + + + + -2 + -2 + + + -3 + -3 + + + -4 + -4 + + + -5 + -5 + + + 225 + + + + + 1 + -2 + + + 2 + -3 + + + 3 + -4 + + + 4 + -5 + + + 315 + + + + + -2 + 1 + + + -3 + 2 + + + -4 + 3 + + + -5 + 4 + + + 135 + + + false + 100 + 100 + true + diff --git a/GameMechanics/Creature/Creatures/Dungeon/Assassin.xdb b/GameMechanics/Creature/Creatures/Dungeon/Assassin.xdb new file mode 100644 index 00000000..3222a344 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Assassin.xdb @@ -0,0 +1,50 @@ + + + 10 + 10 + 9 + 3 + 5 + 5 + 12 + false + 33 + + 0 + 0 + 0 + 34 + 295 + 10 + 1 + true + CREATURE_SCOUT + TOWN_DUNGEON + + ELEMENT_WATER + ELEMENT_EARTH + + 7 + + 0 + 0 + 0 + 0 + 0 + 0 + 171 + + true + + 1 + + + + -2 + CREATURE_SCOUT + + + ABILITY_NO_MELEE_PENALTY + ABILITY_POISONOUS_ATTACK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/Black_Dragon.xdb b/GameMechanics/Creature/Creatures/Dungeon/Black_Dragon.xdb new file mode 100644 index 00000000..50e4b8f3 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Black_Dragon.xdb @@ -0,0 +1,50 @@ + + + 40 + 40 + 0 + 45 + 70 + 9 + 10 + true + 450 + + 0 + 0 + 0 + 540 + 6443 + 10 + 7 + true + CREATURE_DEEP_DRAGON + TOWN_DUNGEON + + ELEMENT_FIRE + ELEMENT_AIR + + 1 + + 0 + 0 + 0 + 0 + 2 + 0 + 2700 + + true + + 2 + + + + 0 + CREATURE_DEEP_DRAGON + + + ABILITY_ENCHANTED_OBSIDIAN + ABILITY_FIRE_BREATH + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/Blood_Witch.xdb b/GameMechanics/Creature/Creatures/Dungeon/Blood_Witch.xdb new file mode 100644 index 00000000..c8008b9a --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Blood_Witch.xdb @@ -0,0 +1,52 @@ + + + 15 + 15 + 0 + 4 + 8 + 9 + 16 + false + 45 + + 0 + 0 + 0 + 47 + 484 + 10 + 2 + true + CREATURE_WITCH + TOWN_DUNGEON + + ELEMENT_AIR + ELEMENT_EARTH + + 6 + + 0 + 0 + 0 + 0 + 0 + 0 + 235 + + true + + 1 + + + + 0 + CREATURE_WITCH + + + ABILITY_STRIKE_AND_RETURN + ABILITY_NO_ENEMY_RETALIATION + ABILITY_IMMUNITY_TO_CURSE + ABILITY_AGILITY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/Chaos_Hydra.xdb b/GameMechanics/Creature/Creatures/Dungeon/Chaos_Hydra.xdb new file mode 100644 index 00000000..00741887 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Chaos_Hydra.xdb @@ -0,0 +1,115 @@ + + + 30 + 30 + 0 + 10 + 15 + 5 + 10 + false + 232 + + 0 + 0 + 0 + 142 + 1324 + 10 + 5 + true + CREATURE_HYDRA + TOWN_DUNGEON + + ELEMENT_WATER + ELEMENT_AIR + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + true + + 2 + + + + + + + 1 + 1 + + + 1 + 0 + + + 1 + -1 + + + 1 + -2 + + + 0 + -2 + + + -1 + -2 + + + -2 + -2 + + + -2 + -1 + + + -2 + 0 + + + -2 + 1 + + + -1 + 1 + + + 0 + 1 + + + 0 + + + true + 1 + 1 + false + + + + + 0 + CREATURE_HYDRA + + + ABILITY_SIX_HEADED_ATTACK + ABILITY_NO_ENEMY_RETALIATION + ABILITY_IMMUNITY_TO_SLOW + ABILITY_REGENERATION + ABILITY_BRAVERY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/Deep_Dragon.xdb b/GameMechanics/Creature/Creatures/Dungeon/Deep_Dragon.xdb new file mode 100644 index 00000000..41339888 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Deep_Dragon.xdb @@ -0,0 +1,52 @@ + + + 40 + 40 + 0 + 45 + 60 + 8 + 10 + true + 397 + + 0 + 0 + 0 + 450 + 5234 + 10 + 7 + false + CREATURE_BLACK_DRAGON + TOWN_DUNGEON + + ELEMENT_FIRE + ELEMENT_NONE + + 1 + + 0 + 0 + 0 + 0 + 1 + 0 + 2250 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_BLACK_DRAGON + CREATURE_RED_DRAGON + + + ABILITY_FIRE_BREATH + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/Hydra.xdb b/GameMechanics/Creature/Creatures/Dungeon/Hydra.xdb new file mode 100644 index 00000000..d8f55179 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Hydra.xdb @@ -0,0 +1,411 @@ + + + 30 + 30 + 0 + 9 + 14 + 5 + 8 + false + 150 + + 0 + 0 + 0 + 119 + 968 + 10 + 5 + false + CREATURE_CHAOS_HYDRA + TOWN_DUNGEON + + ELEMENT_WATER + ELEMENT_NONE + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 593 + + true + + 2 + + + + + + + 0 + 1 + + + 1 + 1 + + + 1 + 0 + + + 1 + -1 + + + 1 + -2 + + + 0 + -2 + + + 0 + + + + + 1 + 1 + + + 1 + 0 + + + 1 + -1 + + + 1 + -2 + + + 0 + -2 + + + -1 + -2 + + + 330 + + + + + 1 + 0 + + + 1 + -1 + + + 1 + -2 + + + 0 + -2 + + + -1 + -2 + + + -2 + -2 + + + 300 + + + + + 1 + -1 + + + 1 + -2 + + + 0 + -2 + + + -1 + -2 + + + -2 + -2 + + + -2 + -1 + + + 270 + + + + + 1 + -2 + + + 0 + -2 + + + -1 + -2 + + + -2 + -2 + + + -2 + -1 + + + -2 + 0 + + + 240 + + + + + 0 + -2 + + + -1 + -2 + + + -2 + -2 + + + -2 + -1 + + + -2 + 0 + + + -2 + 1 + + + 210 + + + + + -1 + -2 + + + -2 + -2 + + + -2 + -1 + + + -2 + 0 + + + -2 + 1 + + + -1 + 1 + + + 180 + + + + + -2 + -2 + + + -2 + -1 + + + -2 + 0 + + + -2 + 1 + + + -1 + 1 + + + 0 + 1 + + + 150 + + + + + -2 + -1 + + + -2 + 0 + + + -2 + 1 + + + -1 + 1 + + + 0 + 1 + + + 1 + 1 + + + 120 + + + + + -2 + 0 + + + -2 + 1 + + + -1 + 1 + + + 0 + 1 + + + 1 + 1 + + + 1 + 0 + + + 90 + + + + + -2 + 1 + + + -1 + 1 + + + 0 + 1 + + + 1 + 1 + + + 1 + 0 + + + 1 + -1 + + + 60 + + + + + -1 + 1 + + + 0 + 1 + + + 1 + 1 + + + 1 + 0 + + + 1 + -1 + + + 1 + -2 + + + 30 + + + false + 1 + 1 + false + + + + + 0 + CREATURE_UNKNOWN + + CREATURE_CHAOS_HYDRA + CREATURE_ACIDIC_HYDRA + + + ABILITY_WHIRLWIND + ABILITY_NO_ENEMY_RETALIATION + ABILITY_TAUNT + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/Matriarch.xdb b/GameMechanics/Creature/Creatures/Dungeon/Matriarch.xdb new file mode 100644 index 00000000..8e1a5b33 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Matriarch.xdb @@ -0,0 +1,63 @@ + + + 35 + 35 + 7 + 17 + 27 + 4 + 10 + false + 165 + + + SPELL_MASS_HASTE + MASTERY_EXPERT + + + SPELL_DISPEL + MASTERY_EXPERT + + + SPELL_HASTE + MASTERY_EXPERT + + + 15 + 0 + 0 + 241 + 2537 + 15 + 6 + true + CREATURE_MATRON + TOWN_DUNGEON + + ELEMENT_EARTH + ELEMENT_AIR + + 2 + + 0 + 0 + 0 + 1 + 0 + 0 + 1204 + + true + + 1 + + + + -2 + CREATURE_MATRON + + + ABILITY_NO_ENEMY_RETALIATION + ABILITY_CURSING_ATTACK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/Matron.xdb b/GameMechanics/Creature/Creatures/Dungeon/Matron.xdb new file mode 100644 index 00000000..23826bd0 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Matron.xdb @@ -0,0 +1,66 @@ + + + 35 + 35 + 7 + 17 + 24 + 4 + 10 + false + 150 + + + SPELL_SLOW + MASTERY_EXPERT + + + SPELL_DISRUPTING_RAY + MASTERY_ADVANCED + + + SPELL_BLOODLUST + MASTERY_ADVANCED + + + 15 + 0 + 0 + 201 + 2193 + 15 + 6 + false + CREATURE_MATRIARCH + TOWN_DUNGEON + + ELEMENT_EARTH + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 0 + 0 + 0 + 1003 + + true + + 1 + + + + -2 + CREATURE_UNKNOWN + + CREATURE_MATRIARCH + CREATURE_SHADOW_MISTRESS + + + ABILITY_NO_ENEMY_RETALIATION + ABILITY_CURSING_ATTACK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/Minotaur.xdb b/GameMechanics/Creature/Creatures/Dungeon/Minotaur.xdb new file mode 100644 index 00000000..a4b427c3 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Minotaur.xdb @@ -0,0 +1,51 @@ + + + 20 + 20 + 0 + 4 + 6 + 5 + 9 + false + 50 + + 0 + 0 + 0 + 45 + 342 + 10 + 3 + false + CREATURE_MINOTAUR_KING + TOWN_DUNGEON + + ELEMENT_FIRE + ELEMENT_NONE + + 6 + + 0 + 0 + 0 + 0 + 0 + 0 + 227 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_MINOTAUR_KING + CREATURE_MINOTAUR_CAPTAIN + + + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/Minotaur_King.xdb b/GameMechanics/Creature/Creatures/Dungeon/Minotaur_King.xdb new file mode 100644 index 00000000..b17bf0ad --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Minotaur_King.xdb @@ -0,0 +1,49 @@ + + + 20 + 20 + 0 + 4 + 6 + 6 + 10 + false + 63 + + 0 + 0 + 0 + 54 + 474 + 10 + 3 + true + CREATURE_MINOTAUR + TOWN_DUNGEON + + ELEMENT_FIRE + ELEMENT_WATER + + 6 + + 0 + 0 + 0 + 0 + 0 + 0 + 272 + + true + + 1 + + + + 0 + CREATURE_MINOTAUR + + + ABILITY_CLEAVE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/Ravager.xdb b/GameMechanics/Creature/Creatures/Dungeon/Ravager.xdb new file mode 100644 index 00000000..aa66d9f8 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Ravager.xdb @@ -0,0 +1,50 @@ + + + 25 + 25 + 0 + 7 + 14 + 9 + 11 + false + 105 + + 0 + 0 + 0 + 94 + 812 + 10 + 4 + true + CREATURE_RIDER + TOWN_DUNGEON + + ELEMENT_EARTH + ELEMENT_FIRE + + 4 + + 0 + 0 + 0 + 0 + 0 + 0 + 469 + + true + + 2 + + + + 0 + CREATURE_RIDER + + + ABILITY_LIZARD_BITE + ABILITY_RIDER_CHARGE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/Rider.xdb b/GameMechanics/Creature/Creatures/Dungeon/Rider.xdb new file mode 100644 index 00000000..d51583b5 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Rider.xdb @@ -0,0 +1,52 @@ + + + 25 + 25 + 0 + 7 + 12 + 7 + 11 + false + 75 + + 0 + 0 + 0 + 78 + 598 + 10 + 4 + false + CREATURE_RAVAGER + TOWN_DUNGEON + + ELEMENT_EARTH + ELEMENT_NONE + + 4 + + 0 + 0 + 0 + 0 + 0 + 0 + 391 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_RAVAGER + CREATURE_BLACK_RIDER + + + ABILITY_RIDER_CHARGE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/Scout.xdb b/GameMechanics/Creature/Creatures/Dungeon/Scout.xdb new file mode 100644 index 00000000..915b2ea3 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Scout.xdb @@ -0,0 +1,51 @@ + + + 10 + 10 + 7 + 3 + 5 + 5 + 10 + false + 26 + + 0 + 0 + 0 + 29 + 180 + 10 + 1 + false + CREATURE_ASSASSIN + TOWN_DUNGEON + + ELEMENT_WATER + ELEMENT_NONE + + 7 + + 0 + 0 + 0 + 0 + 0 + 0 + 143 + + true + + 1 + + + + -2 + CREATURE_UNKNOWN + + CREATURE_ASSASSIN + CREATURE_STALKER + + + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dungeon/Witch.xdb b/GameMechanics/Creature/Creatures/Dungeon/Witch.xdb new file mode 100644 index 00000000..bfd90932 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dungeon/Witch.xdb @@ -0,0 +1,53 @@ + + + 15 + 15 + 0 + 5 + 7 + 9 + 14 + false + 30 + + 0 + 0 + 0 + 39 + 333 + 10 + 2 + false + CREATURE_BLOOD_WITCH + TOWN_DUNGEON + + ELEMENT_AIR + ELEMENT_NONE + + 6 + + 0 + 0 + 0 + 0 + 0 + 0 + 196 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_BLOOD_WITCH + CREATURE_BLOOD_WITCH_2 + + + ABILITY_STRIKE_AND_RETURN + ABILITY_NO_ENEMY_RETALIATION + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/3rd/BattleRager.xdb b/GameMechanics/Creature/Creatures/Dwarf/3rd/BattleRager.xdb new file mode 100644 index 00000000..8318f402 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/3rd/BattleRager.xdb @@ -0,0 +1,52 @@ + + + 25 + 25 + 0 + 3 + 7 + 5 + 13 + false + 60 + + 0 + 0 + 0 + 63 + 420 + 10 + 4 + false + CREATURE_UNKNOWN + TOWN_FORTRESS + + ELEMENT_EARTH + ELEMENT_NONE + + 6 + + 0 + 0 + 0 + 0 + 0 + 0 + 312 + + 0 + true + + 1 + + + + 0 + CREATURE_BROWLER + + + ABILITY_IMMUNITY_TO_MIND_CONTROL + ABILITY_ANTI_GIANT + ABILITY_LIZARD_BITE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/3rd/FlameKeeper.xdb b/GameMechanics/Creature/Creatures/Dwarf/3rd/FlameKeeper.xdb new file mode 100644 index 00000000..be04b132 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/3rd/FlameKeeper.xdb @@ -0,0 +1,60 @@ + + + 30 + 30 + 6 + 17 + 20 + 4 + 10 + false + 120 + + + SPELL_FIREWALL + MASTERY_EXPERT + + + SPELL_MASS_BLOODLUST + MASTERY_EXPERT + + + 15 + 0 + 0 + 142 + 1329 + 10 + 5 + false + CREATURE_UNKNOWN + TOWN_FORTRESS + + ELEMENT_FIRE + ELEMENT_NONE + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + 0 + true + + 1 + + + + -2 + CREATURE_RUNE_MAGE + + + ABILITY_FIRE_PROOF_50 + ABILITY_MARK_OF_FIRE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/3rd/Harpooner.xdb b/GameMechanics/Creature/Creatures/Dwarf/3rd/Harpooner.xdb new file mode 100644 index 00000000..74423091 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/3rd/Harpooner.xdb @@ -0,0 +1,51 @@ + + + 15 + 15 + 9 + 1 + 3 + 4 + 15 + false + 18 + + 0 + 0 + 0 + 20 + 171 + 10 + 2 + false + CREATURE_UNKNOWN + TOWN_FORTRESS + + ELEMENT_AIR + ELEMENT_NONE + + 14 + + 0 + 0 + 0 + 0 + 0 + 0 + 101 + + 0 + true + + 1 + + + + -2 + CREATURE_AXE_FIGHTER + + + ABILITY_HARPOON_STRIKE + ABILITY_ARMORED + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/3rd/LavaDragon.xdb b/GameMechanics/Creature/Creatures/Dwarf/3rd/LavaDragon.xdb new file mode 100644 index 00000000..d30a2299 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/3rd/LavaDragon.xdb @@ -0,0 +1,52 @@ + + + 40 + 40 + 0 + 35 + 55 + 6 + 10 + false + 480 + + 0 + 0 + 0 + 540 + 6070 + 10 + 7 + false + CREATURE_UNKNOWN + TOWN_FORTRESS + + ELEMENT_FIRE + ELEMENT_NONE + + 1 + + 0 + 0 + 0 + 0 + 2 + 0 + 2700 + + 0 + true + + 2 + + + + 0 + CREATURE_FIRE_DRAGON + + + ABILITY_ELEMENTAL + ABILITY_IMMUNITY_TO_FIRE + ABILITY_LIQUID_FLAME_BREATH + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/3rd/StoneDefender.xdb b/GameMechanics/Creature/Creatures/Dwarf/3rd/StoneDefender.xdb new file mode 100644 index 00000000..83799e02 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/3rd/StoneDefender.xdb @@ -0,0 +1,54 @@ + + + 10 + 10 + 0 + 1 + 2 + 5 + 9 + false + 27 + + 0 + 0 + 0 + 15 + 113 + 10 + 1 + false + CREATURE_UNKNOWN + TOWN_FORTRESS + + ELEMENT_EARTH + ELEMENT_NONE + + 16 + + 0 + 0 + 0 + 0 + 0 + 0 + 75 + + 0 + true + + 1 + + + + 0 + CREATURE_DEFENDER + + + ABILITY_ENRAGED + ABILITY_LARGE_SHIELD + ABILITY_ARMORED + ABILITY_HOLD_GROUND + ABILITY_PREPARED_POSITION + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/3rd/ThunderThane.xdb b/GameMechanics/Creature/Creatures/Dwarf/3rd/ThunderThane.xdb new file mode 100644 index 00000000..e7c5577b --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/3rd/ThunderThane.xdb @@ -0,0 +1,52 @@ + + + 35 + 35 + 0 + 9 + 13 + 9 + 10 + true + 270 + + 0 + 2 + 0 + 241 + 2437 + 10 + 6 + false + CREATURE_UNKNOWN + TOWN_FORTRESS + + ELEMENT_AIR + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 1 + 0 + 0 + 1204 + + 0 + true + + 2 + + + + 0 + CREATURE_THANE + + + ABILITY_IMMUNITY_TO_AIR + ABILITY_STORMSTRIKE + ABILITY_STORMBOLT + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/3rd/WhiteBearRider.xdb b/GameMechanics/Creature/Creatures/Dwarf/3rd/WhiteBearRider.xdb new file mode 100644 index 00000000..e71b1445 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/3rd/WhiteBearRider.xdb @@ -0,0 +1,52 @@ + + + 20 + 20 + 0 + 5 + 6 + 6 + 11 + false + 66 + + 0 + 0 + 0 + 47 + 436 + 10 + 3 + false + CREATURE_UNKNOWN + TOWN_FORTRESS + + ELEMENT_WATER + ELEMENT_NONE + + 7 + + 0 + 0 + 0 + 0 + 0 + 0 + 233 + + 0 + true + + 2 + + + + 0 + CREATURE_BEAR_RIDER + + + ABILITY_ENRAGED + ABILITY_ARMORED + ABILITY_BEAR_ROAR + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Axe_Fighter.xdb b/GameMechanics/Creature/Creatures/Dwarf/Axe_Fighter.xdb new file mode 100644 index 00000000..46df28c2 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Axe_Fighter.xdb @@ -0,0 +1,52 @@ + + + 15 + 15 + 6 + 1 + 2 + 4 + 9 + false + 18 + + 0 + 0 + 0 + 17 + 115 + 10 + 2 + false + CREATURE_AXE_THROWER + TOWN_FORTRESS + + ELEMENT_AIR + ELEMENT_NONE + + 14 + + 0 + 0 + 0 + 0 + 0 + 0 + 84 + + true + + 1 + + + + -2 + CREATURE_UNKNOWN + + CREATURE_AXE_THROWER + CREATURE_HARPOONER + + + ABILITY_WOUND + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Axe_Thrower.xdb b/GameMechanics/Creature/Creatures/Dwarf/Axe_Thrower.xdb new file mode 100644 index 00000000..1867a032 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Axe_Thrower.xdb @@ -0,0 +1,50 @@ + + + 15 + 15 + 7 + 2 + 3 + 4 + 10 + false + 22 + + 0 + 0 + 0 + 20 + 171 + 10 + 2 + true + CREATURE_AXE_FIGHTER + TOWN_FORTRESS + + ELEMENT_AIR + ELEMENT_NONE + + 14 + + 0 + 0 + 0 + 0 + 0 + 0 + 101 + + true + + 1 + + + + -2 + CREATURE_AXE_FIGHTER + + + ABILITY_WOUND + ABILITY_NO_MELEE_PENALTY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Bear_Raider.xdb b/GameMechanics/Creature/Creatures/Dwarf/Bear_Raider.xdb new file mode 100644 index 00000000..5d0007d1 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Bear_Raider.xdb @@ -0,0 +1,52 @@ + + + 20 + 20 + 0 + 4 + 5 + 6 + 10 + false + 48 + + 0 + 0 + 0 + 39 + 318 + 10 + 3 + false + CREATURE_BLACKBEAR_RIDER + TOWN_FORTRESS + + ELEMENT_WATER + ELEMENT_NONE + + 7 + + 0 + 0 + 0 + 0 + 0 + 0 + 194 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_BLACKBEAR_RIDER + CREATURE_WHITE_BEAR_RIDER + + + ABILITY_ENRAGED + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Berserker.xdb b/GameMechanics/Creature/Creatures/Dwarf/Berserker.xdb new file mode 100644 index 00000000..22ade8c9 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Berserker.xdb @@ -0,0 +1,51 @@ + + + 25 + 25 + 0 + 2 + 4 + 6 + 12 + false + 48 + + 0 + 0 + 0 + 63 + 420 + 10 + 4 + true + CREATURE_BROWLER + TOWN_FORTRESS + + ELEMENT_EARTH + ELEMENT_NONE + + 6 + + 0 + 0 + 0 + 0 + 0 + 0 + 312 + + true + + 1 + + + + 0 + CREATURE_BROWLER + + + ABILITY_IMMUNITY_TO_MIND_CONTROL + ABILITY_BERSERKER_RAGE + ABILITY_DOUBLE_ATTACK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Blackbear_Raider.xdb b/GameMechanics/Creature/Creatures/Dwarf/Blackbear_Raider.xdb new file mode 100644 index 00000000..f9a10a6e --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Blackbear_Raider.xdb @@ -0,0 +1,50 @@ + + + 20 + 20 + 0 + 4 + 7 + 7 + 11 + false + 57 + + 0 + 0 + 0 + 47 + 436 + 10 + 3 + true + CREATURE_BEAR_RIDER + TOWN_FORTRESS + + ELEMENT_WATER + ELEMENT_NONE + + 7 + + 0 + 0 + 0 + 0 + 0 + 0 + 233 + + true + + 2 + + + + 0 + CREATURE_BEAR_RIDER + + + ABILITY_ENRAGED + ABILITY_PAW_STRIKE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Brawler.xdb b/GameMechanics/Creature/Creatures/Dwarf/Brawler.xdb new file mode 100644 index 00000000..40ef80a3 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Brawler.xdb @@ -0,0 +1,52 @@ + + + 25 + 25 + 0 + 3 + 7 + 6 + 12 + false + 37 + + 0 + 0 + 0 + 52 + 304 + 10 + 4 + false + CREATURE_BERSERKER + TOWN_FORTRESS + + ELEMENT_EARTH + ELEMENT_NONE + + 6 + + 0 + 0 + 0 + 0 + 0 + 0 + 260 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_BERSERKER + CREATURE_BATTLE_RAGER + + + ABILITY_IMMUNITY_TO_MIND_CONTROL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Defender.xdb b/GameMechanics/Creature/Creatures/Dwarf/Defender.xdb new file mode 100644 index 00000000..3a53dd48 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Defender.xdb @@ -0,0 +1,54 @@ + + + 10 + 10 + 0 + 1 + 1 + 5 + 9 + false + 15 + + 0 + 0 + 0 + 12 + 70 + 10 + 1 + false + CREATURE_STOUT_DEFENDER + TOWN_FORTRESS + + ELEMENT_EARTH + ELEMENT_NONE + + 16 + + 0 + 0 + 0 + 0 + 0 + 0 + 62 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_STOUT_DEFENDER + CREATURE_STONE_DEFENDER + + + ABILITY_ENRAGED + ABILITY_LARGE_SHIELD + ABILITY_ARMORED + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Fire_Dragon.xdb b/GameMechanics/Creature/Creatures/Dwarf/Fire_Dragon.xdb new file mode 100644 index 00000000..5d31690f --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Fire_Dragon.xdb @@ -0,0 +1,55 @@ + + + 40 + 40 + 0 + 35 + 50 + 6 + 9 + false + 435 + + 0 + 0 + 0 + 450 + 4883 + 10 + 7 + false + CREATURE_MAGMA_DRAGON + TOWN_FORTRESS + + ELEMENT_FIRE + ELEMENT_NONE + + 1 + + 0 + 0 + 0 + 0 + 1 + 0 + 2250 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_MAGMA_DRAGON + CREATURE_LAVA_DRAGON + + + ABILITY_ELEMENTAL + ABILITY_IMMUNITY_TO_FIRE + ABILITY_FIRE_BREATH + ABILITY_FIRE_SHIELD + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Flame_Mage.xdb b/GameMechanics/Creature/Creatures/Dwarf/Flame_Mage.xdb new file mode 100644 index 00000000..5d64daae --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Flame_Mage.xdb @@ -0,0 +1,60 @@ + + + 30 + 30 + 7 + 13 + 18 + 4 + 10 + false + 112 + + + SPELL_FIREBALL + MASTERY_EXPERT + + + SPELL_MASS_DISPEL + MASTERY_EXPERT + + + 15 + 0 + 0 + 142 + 1308 + 15 + 5 + true + CREATURE_RUNE_MAGE + TOWN_FORTRESS + + ELEMENT_FIRE + ELEMENT_NONE + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + true + + 1 + + + + -2 + CREATURE_RUNE_MAGE + + + ABILITY_FIRE_PROOF_50 + ABILITY_MARK_OF_FIRE + ABILITY_CROSS_ATTACK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Magma_Dragon.xdb b/GameMechanics/Creature/Creatures/Dwarf/Magma_Dragon.xdb new file mode 100644 index 00000000..2e4fdb48 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Magma_Dragon.xdb @@ -0,0 +1,52 @@ + + + 40 + 40 + 0 + 40 + 50 + 5 + 9 + false + 525 + + 0 + 0 + 0 + 540 + 6100 + 10 + 7 + true + CREATURE_FIRE_DRAGON + TOWN_FORTRESS + + ELEMENT_FIRE + ELEMENT_NONE + + 1 + + 0 + 0 + 0 + 0 + 2 + 0 + 2700 + + true + + 2 + + + + 0 + CREATURE_FIRE_DRAGON + + + ABILITY_ELEMENTAL + ABILITY_IMMUNITY_TO_FIRE + ABILITY_FIRE_BREATH + ABILITY_MAGMA_SHIELD + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Rune_Mage.xdb b/GameMechanics/Creature/Creatures/Dwarf/Rune_Mage.xdb new file mode 100644 index 00000000..38167938 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Rune_Mage.xdb @@ -0,0 +1,62 @@ + + + 30 + 30 + 6 + 12 + 15 + 4 + 8 + false + 112 + + + SPELL_DEFLECT_ARROWS + MASTERY_BASIC + + + SPELL_BLESS + MASTERY_BASIC + + + 15 + 0 + 0 + 119 + 932 + 15 + 5 + false + CREATURE_FLAME_MAGE + TOWN_FORTRESS + + ELEMENT_FIRE + ELEMENT_NONE + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 593 + + true + + 1 + + + + -2 + CREATURE_UNKNOWN + + CREATURE_FLAME_MAGE + CREATURE_FLAME_KEEPER + + + ABILITY_FIRE_PROOF_50 + ABILITY_MARK_OF_FIRE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Stout_Defender.xdb b/GameMechanics/Creature/Creatures/Dwarf/Stout_Defender.xdb new file mode 100644 index 00000000..ea0e55ce --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Stout_Defender.xdb @@ -0,0 +1,52 @@ + + + 10 + 10 + 0 + 1 + 2 + 5 + 9 + false + 22 + + 0 + 0 + 0 + 15 + 115 + 10 + 1 + true + CREATURE_DEFENDER + TOWN_FORTRESS + + ELEMENT_EARTH + ELEMENT_NONE + + 16 + + 0 + 0 + 0 + 0 + 0 + 0 + 75 + + true + + 1 + + + + 0 + CREATURE_DEFENDER + + + ABILITY_ENRAGED + ABILITY_LARGE_SHIELD + ABILITY_ARMORED + ABILITY_SHIELD_WALL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Thane.xdb b/GameMechanics/Creature/Creatures/Dwarf/Thane.xdb new file mode 100644 index 00000000..20196bb1 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Thane.xdb @@ -0,0 +1,52 @@ + + + 35 + 35 + 0 + 8 + 12 + 8 + 11 + true + 210 + + 0 + 0 + 0 + 201 + 2109 + 10 + 6 + false + CREATURE_WARLORD + TOWN_FORTRESS + + ELEMENT_AIR + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 0 + 0 + 0 + 1003 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_WARLORD + CREATURE_THUNDER_THANE + + + ABILITY_STORMSTRIKE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Dwarf/Warlord.xdb b/GameMechanics/Creature/Creatures/Dwarf/Warlord.xdb new file mode 100644 index 00000000..78dd2d93 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Dwarf/Warlord.xdb @@ -0,0 +1,52 @@ + + + 35 + 35 + 0 + 21 + 26 + 8 + 11 + true + 247 + + 0 + 2 + 0 + 241 + 2477 + 10 + 6 + true + CREATURE_THANE + TOWN_FORTRESS + + ELEMENT_AIR + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 1 + 0 + 0 + 1204 + + 0 + true + + 2 + + + + 0 + CREATURE_THANE + + + ABILITY_FIRE_PROOF_50 + ABILITY_FLAMEWAVE + ABILITY_FLAMESTRIKE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Angel.xdb b/GameMechanics/Creature/Creatures/Haven/Angel.xdb new file mode 100644 index 00000000..7c543c00 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Angel.xdb @@ -0,0 +1,50 @@ + + + 40 + 40 + 0 + 44 + 44 + 7 + 11 + true + 360 + + 0 + 0 + 0 + 450 + 4866 + 10 + 7 + false + CREATURE_ARCHANGEL + TOWN_HEAVEN + + ELEMENT_WATER + ELEMENT_NONE + + 1 + + 0 + 0 + 0 + 1 + 0 + 0 + 2250 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_ARCHANGEL + CREATURE_SERAPH + + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Archangel.xdb b/GameMechanics/Creature/Creatures/Haven/Archangel.xdb new file mode 100644 index 00000000..ca8f0119 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Archangel.xdb @@ -0,0 +1,50 @@ + + + 40 + 40 + 0 + 50 + 50 + 8 + 11 + true + 435 + + 0 + 2 + 0 + 540 + 6153 + 10 + 7 + true + CREATURE_ANGEL + TOWN_HEAVEN + + ELEMENT_WATER + ELEMENT_AIR + + 1 + + 0 + 0 + 0 + 2 + 0 + 0 + 2700 + + true + + 2 + + + + 0 + CREATURE_ANGEL + + + ABILITY_RESURRECT_ALLIES + ABILITY_BOND_OF_LIGHT + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Archer.xdb b/GameMechanics/Creature/Creatures/Haven/Archer.xdb new file mode 100644 index 00000000..9f3ffbc5 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Archer.xdb @@ -0,0 +1,63 @@ + + + 15 + 15 + 6 + 2 + 4 + 4 + 9 + false + 15 + + 0 + 0 + 0 + 20 + 140 + 10 + 2 + false + CREATURE_MARKSMAN + TOWN_HEAVEN + + ELEMENT_FIRE + ELEMENT_NONE + + 12 + + 0 + 0 + 0 + 0 + 0 + 0 + 98 + + 0 + true + + 1 + + + + first + + + + + + -2 + CREATURE_UNKNOWN + + CREATURE_MARKSMAN + CREATURE_LONGBOWMAN + + + ABILITY_SCATTER_SHOT + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Cavalier.xdb b/GameMechanics/Creature/Creatures/Haven/Cavalier.xdb new file mode 100644 index 00000000..a455081f --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Cavalier.xdb @@ -0,0 +1,52 @@ + + + 35 + 35 + 0 + 20 + 30 + 8 + 11 + false + 165 + + 0 + 0 + 0 + 201 + 2185 + 10 + 6 + false + CREATURE_PALADIN + TOWN_HEAVEN + + ELEMENT_FIRE + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 0 + 0 + 0 + 1003 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_PALADIN + CREATURE_CHAMPION + + + ABILITY_JOUSTING + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Cleric.xdb b/GameMechanics/Creature/Creatures/Haven/Cleric.xdb new file mode 100644 index 00000000..a0554c38 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Cleric.xdb @@ -0,0 +1,71 @@ + + + 30 + 30 + 7 + 15 + 19 + 5 + 10 + false + 150 + + + SPELL_DISPEL + MASTERY_EXPERT + + + SPELL_HASTE + MASTERY_EXPERT + + + SPELL_BLESS + MASTERY_EXPERT + + + SPELL_MASS_STONESKIN + MASTERY_EXPERT + + + SPELL_ABILITY_LAY_HANDS + MASTERY_EXPERT + + + 15 + 0 + 0 + 142 + 1520 + 15 + 5 + true + CREATURE_PRIEST + TOWN_HEAVEN + + ELEMENT_WATER + ELEMENT_WATER + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + true + + 1 + + + + -2 + CREATURE_PRIEST + + + ABILITY_RANGE_PENALTY + ABILITY_NO_MELEE_PENALTY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Footman.xdb b/GameMechanics/Creature/Creatures/Haven/Footman.xdb new file mode 100644 index 00000000..e55746c7 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Footman.xdb @@ -0,0 +1,54 @@ + + + 20 + 20 + 0 + 2 + 4 + 5 + 8 + false + 30 + + 0 + 0 + 0 + 27 + 201 + 10 + 3 + false + CREATURE_SWORDSMAN + TOWN_HEAVEN + + ELEMENT_EARTH + ELEMENT_NONE + + 10 + + 0 + 0 + 0 + 0 + 0 + 0 + 136 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_SWORDSMAN + CREATURE_VINDICATOR + + + ABILITY_ENRAGED + ABILITY_LARGE_SHIELD + ABILITY_BASH + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Griffin.xdb b/GameMechanics/Creature/Creatures/Haven/Griffin.xdb new file mode 100644 index 00000000..31de5422 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Griffin.xdb @@ -0,0 +1,53 @@ + + + 25 + 25 + 0 + 6 + 10 + 6 + 15 + true + 60 + + 0 + 0 + 0 + 62 + 524 + 10 + 4 + false + CREATURE_ROYAL_GRIFFIN + TOWN_HEAVEN + + ELEMENT_AIR + ELEMENT_NONE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 312 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_ROYAL_GRIFFIN + CREATURE_BATTLE_GRIFFIN + + + ABILITY_UNLIMITED_RETALIATION + ABILITY_IMMUNITY_TO_BLIND + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Marksman.xdb b/GameMechanics/Creature/Creatures/Haven/Marksman.xdb new file mode 100644 index 00000000..e5f42d4b --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Marksman.xdb @@ -0,0 +1,49 @@ + + + 15 + 15 + 6 + 4 + 8 + 4 + 9 + false + 19 + + 0 + 0 + 0 + 23 + 199 + 10 + 2 + true + CREATURE_ARCHER + TOWN_HEAVEN + + ELEMENT_FIRE + ELEMENT_AIR + + 12 + + 0 + 0 + 0 + 0 + 0 + 0 + 117 + + true + + 1 + + + + -2 + CREATURE_ARCHER + + + ABILITY_SCATTER_SHOT + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Militiaman.xdb b/GameMechanics/Creature/Creatures/Haven/Militiaman.xdb new file mode 100644 index 00000000..70e019d4 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Militiaman.xdb @@ -0,0 +1,51 @@ + + + 10 + 10 + 0 + 1 + 2 + 5 + 8 + false + 16 + + 0 + 0 + 0 + 11 + 72 + 10 + 1 + true + CREATURE_PEASANT + TOWN_HEAVEN + + ELEMENT_EARTH + ELEMENT_AIR + + 22 + + 0 + 0 + 0 + 0 + 0 + 0 + 55 + + 0 + true + + 1 + + + + 0 + CREATURE_PEASANT + + + ABILITY_TAXPAYER + ABILITY_BASH + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Paladin.xdb b/GameMechanics/Creature/Creatures/Haven/Paladin.xdb new file mode 100644 index 00000000..6b7dc272 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Paladin.xdb @@ -0,0 +1,51 @@ + + + 35 + 35 + 0 + 20 + 30 + 9 + 12 + false + 210 + + 0 + 0 + 0 + 241 + 2520 + 10 + 6 + true + CREATURE_CAVALIER + TOWN_HEAVEN + + ELEMENT_FIRE + ELEMENT_EARTH + + 2 + + 0 + 0 + 0 + 0 + 0 + 1 + 1204 + + true + + 2 + + + + 0 + CREATURE_CAVALIER + + + ABILITY_JOUSTING + ABILITY_PRESENCE_OF_COMMANDER + ABILITY_STRIKE_AND_RETURN + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Peasant.xdb b/GameMechanics/Creature/Creatures/Haven/Peasant.xdb new file mode 100644 index 00000000..174639d4 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Peasant.xdb @@ -0,0 +1,52 @@ + + + 10 + 10 + 0 + 1 + 1 + 5 + 8 + false + 9 + + 0 + 0 + 0 + 9 + 48 + 10 + 1 + false + CREATURE_MILITIAMAN + TOWN_HEAVEN + + ELEMENT_EARTH + ELEMENT_NONE + + 22 + + 0 + 0 + 0 + 0 + 0 + 0 + 45 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_MILITIAMAN + CREATURE_LANDLORD + + + ABILITY_TAXPAYER + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Priest.xdb b/GameMechanics/Creature/Creatures/Haven/Priest.xdb new file mode 100644 index 00000000..5baf62d8 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Priest.xdb @@ -0,0 +1,53 @@ + + + 30 + 30 + 7 + 15 + 19 + 5 + 10 + false + 105 + + 0 + 0 + 0 + 119 + 1086 + 10 + 5 + false + CREATURE_CLERIC + TOWN_HEAVEN + + ELEMENT_WATER + ELEMENT_NONE + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 593 + + true + + 1 + + + + -2 + CREATURE_UNKNOWN + + CREATURE_CLERIC + CREATURE_ZEALOT + + + ABILITY_RANGE_PENALTY + ABILITY_NO_MELEE_PENALTY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Renegates/BattleGriffin.xdb b/GameMechanics/Creature/Creatures/Haven/Renegates/BattleGriffin.xdb new file mode 100644 index 00000000..d0c1cece --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Renegates/BattleGriffin.xdb @@ -0,0 +1,54 @@ + + + 25 + 25 + 0 + 6 + 12 + 6 + 11 + true + 97 + + 0 + 3 + 0 + 75 + 711 + 10 + 4 + true + CREATURE_UNKNOWN + TOWN_HEAVEN + + ELEMENT_AIR + ELEMENT_NONE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 375 + + 0 + true + + 2 + + + + 0 + CREATURE_GRIFFIN + + + ABILITY_UNLIMITED_RETALIATION + ABILITY_IMMUNITY_TO_BLIND + ABILITY_TAUNT + ABILITY_PACK_DIVE + ABILITY_FIERCE_RETALIATION + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Renegates/Champion.xdb b/GameMechanics/Creature/Creatures/Haven/Renegates/Champion.xdb new file mode 100644 index 00000000..550f093d --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Renegates/Champion.xdb @@ -0,0 +1,51 @@ + + + 35 + 35 + 0 + 20 + 32 + 8 + 12 + false + 210 + + 0 + 0 + 0 + 241 + 2520 + 10 + 6 + true + CREATURE_UNKNOWN + TOWN_HEAVEN + + ELEMENT_FIRE + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 0 + 0 + 1 + 1204 + + true + + 2 + + + + 0 + CREATURE_CAVALIER + + + ABILITY_JOUSTING + ABILITY_ACID_BREATH + ABILITY_IMMUNITY_TO_BERSERK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Renegates/Landlord.xdb b/GameMechanics/Creature/Creatures/Haven/Renegates/Landlord.xdb new file mode 100644 index 00000000..8f2fbe39 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Renegates/Landlord.xdb @@ -0,0 +1,51 @@ + + + 10 + 10 + 0 + 1 + 2 + 5 + 9 + false + 13 + + 0 + 0 + 0 + 11 + 72 + 10 + 1 + true + CREATURE_UNKNOWN + TOWN_HEAVEN + + ELEMENT_EARTH + ELEMENT_NONE + + 22 + + 0 + 0 + 0 + 0 + 0 + 0 + 55 + + 0 + true + + 1 + + + + 0 + CREATURE_PEASANT + + + ABILITY_TAXPAYER + ABILITY_BRUTALITY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Renegates/Longbowman.xdb b/GameMechanics/Creature/Creatures/Haven/Renegates/Longbowman.xdb new file mode 100644 index 00000000..bffe3b3d --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Renegates/Longbowman.xdb @@ -0,0 +1,49 @@ + + + 15 + 15 + 6 + 2 + 8 + 4 + 9 + false + 19 + + 0 + 0 + 0 + 23 + 203 + 10 + 2 + true + CREATURE_UNKNOWN + TOWN_HEAVEN + + ELEMENT_FIRE + ELEMENT_NONE + + 12 + + 0 + 0 + 0 + 0 + 0 + 0 + 117 + + true + + 1 + + + + -2 + CREATURE_ARCHER + + + ABILITY_PRECISE_SHOT + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Renegates/Seraph.xdb b/GameMechanics/Creature/Creatures/Haven/Renegates/Seraph.xdb new file mode 100644 index 00000000..cb75e2a6 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Renegates/Seraph.xdb @@ -0,0 +1,57 @@ + + + 40 + 40 + 0 + 30 + 70 + 9 + 11 + true + 412 + + + SPELL_REGENERATION + MASTERY_EXPERT + + + SPELL_DIVINE_VENGEANCE + MASTERY_EXPERT + + + 30 + 0 + 0 + 540 + 6143 + 10 + 7 + true + CREATURE_UNKNOWN + TOWN_HEAVEN + + ELEMENT_WATER + ELEMENT_NONE + + 1 + + 0 + 0 + 0 + 2 + 0 + 0 + 2700 + + 0 + true + + 2 + + + + 0 + CREATURE_ANGEL + + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Renegates/Vindicator.xdb b/GameMechanics/Creature/Creatures/Haven/Renegates/Vindicator.xdb new file mode 100644 index 00000000..4aed16b4 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Renegates/Vindicator.xdb @@ -0,0 +1,52 @@ + + + 20 + 20 + 0 + 3 + 4 + 5 + 9 + false + 45 + + 0 + 0 + 0 + 33 + 299 + 10 + 3 + true + CREATURE_UNKNOWN + TOWN_HEAVEN + + ELEMENT_EARTH + ELEMENT_NONE + + 10 + + 0 + 0 + 0 + 0 + 0 + 0 + 163 + + 0 + true + + 1 + + + + 0 + CREATURE_FOOTMAN + + + ABILITY_ENRAGED + ABILITY_LARGE_SHIELD + ABILITY_CLEAVE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Renegates/Zealot.xdb b/GameMechanics/Creature/Creatures/Haven/Renegates/Zealot.xdb new file mode 100644 index 00000000..959c1849 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Renegates/Zealot.xdb @@ -0,0 +1,64 @@ + + + 30 + 30 + 7 + 15 + 19 + 5 + 10 + false + 150 + + + SPELL_SLOW + MASTERY_EXPERT + + + SPELL_BLOODLUST + MASTERY_EXPERT + + + SPELL_MASS_WEAKNESS + MASTERY_EXPERT + + + 15 + 0 + 0 + 142 + 1523 + 15 + 5 + true + CREATURE_UNKNOWN + TOWN_HEAVEN + + ELEMENT_WATER + ELEMENT_NONE + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + true + + 1 + + + + -2 + CREATURE_PRIEST + + + ABILITY_RANGE_PENALTY + ABILITY_NO_MELEE_PENALTY + ABILITY_PURGER + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Royal_Griffin.xdb b/GameMechanics/Creature/Creatures/Haven/Royal_Griffin.xdb new file mode 100644 index 00000000..d917925a --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Royal_Griffin.xdb @@ -0,0 +1,51 @@ + + + 25 + 25 + 0 + 6 + 14 + 7 + 15 + true + 67 + + 0 + 0 + 0 + 75 + 716 + 10 + 4 + true + CREATURE_GRIFFIN + TOWN_HEAVEN + + ELEMENT_AIR + ELEMENT_FIRE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 375 + + true + + 2 + + + + 0 + CREATURE_GRIFFIN + + + ABILITY_UNLIMITED_RETALIATION + ABILITY_IMMUNITY_TO_BLIND + ABILITY_BATTLE_DIVE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Haven/Swordsman.xdb b/GameMechanics/Creature/Creatures/Haven/Swordsman.xdb new file mode 100644 index 00000000..768b6c22 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Haven/Swordsman.xdb @@ -0,0 +1,52 @@ + + + 20 + 20 + 0 + 2 + 5 + 4 + 8 + false + 54 + + 0 + 0 + 0 + 33 + 298 + 10 + 3 + true + CREATURE_FOOTMAN + TOWN_HEAVEN + + ELEMENT_EARTH + ELEMENT_FIRE + + 10 + + 0 + 0 + 0 + 0 + 0 + 0 + 163 + + true + + 1 + + + + 0 + CREATURE_FOOTMAN + + + ABILITY_ENRAGED + ABILITY_LARGE_SHIELD + ABILITY_SHIELD_OTHER + ABILITY_BASH + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/3rd/ArchDemon.xdb b/GameMechanics/Creature/Creatures/Inferno/3rd/ArchDemon.xdb new file mode 100644 index 00000000..2481ed93 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/3rd/ArchDemon.xdb @@ -0,0 +1,50 @@ + + + 40 + 40 + 0 + 33 + 66 + 8 + 11 + true + 450 + + 0 + 0 + 1 + 540 + 6060 + 10 + 7 + false + CREATURE_UNKNOWN + TOWN_INFERNO + + ELEMENT_FIRE + ELEMENT_EARTH + + 1 + + 0 + 0 + 2 + 0 + 0 + 0 + 2700 + + true + + 2 + + + + 0 + CREATURE_DEVIL + + + ABILITY_DEMONIC + ABILITY_SUMMON_OTHER + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/3rd/FirebreatherHound.xdb b/GameMechanics/Creature/Creatures/Inferno/3rd/FirebreatherHound.xdb new file mode 100644 index 00000000..493fd977 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/3rd/FirebreatherHound.xdb @@ -0,0 +1,51 @@ + + + 20 + 20 + 0 + 2 + 3 + 7 + 9 + false + 30 + + 0 + 1 + 1 + 41 + 368 + 10 + 3 + false + CREATURE_UNKNOWN + TOWN_INFERNO + + ELEMENT_EARTH + ELEMENT_WATER + + 8 + + 0 + 0 + 0 + 0 + 0 + 0 + 204 + + true + + 1 + + + + 0 + CREATURE_HELL_HOUND + + + ABILITY_DEMONIC + ABILITY_SPRAY_ATTACK + ABILITY_HOWL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/3rd/Hellmare.xdb b/GameMechanics/Creature/Creatures/Inferno/3rd/Hellmare.xdb new file mode 100644 index 00000000..00468e9a --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/3rd/Hellmare.xdb @@ -0,0 +1,52 @@ + + + 30 + 30 + 0 + 11 + 16 + 9 + 16 + false + 120 + + 0 + 0 + 1 + 142 + 1434 + 10 + 5 + false + CREATURE_UNKNOWN + TOWN_INFERNO + + ELEMENT_WATER + ELEMENT_EARTH + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + true + + 2 + + + + 0 + CREATURE_NIGHTMARE + + + ABILITY_DEMONIC + ABILITY_FEAR + ABILITY_FRIGHT_AURA + ABILITY_IMMUNITY_TO_BLIND + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/3rd/HornedLeaper.xdb b/GameMechanics/Creature/Creatures/Inferno/3rd/HornedLeaper.xdb new file mode 100644 index 00000000..c3dc109c --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/3rd/HornedLeaper.xdb @@ -0,0 +1,52 @@ + + + 15 + 15 + 0 + 1 + 4 + 4 + 8 + false + 27 + + 0 + 0 + 1 + 19 + 149 + 10 + 2 + false + CREATURE_UNKNOWN + TOWN_INFERNO + + ELEMENT_FIRE + ELEMENT_EARTH + + 15 + + 0 + 0 + 0 + 0 + 0 + 0 + 94 + + 0 + true + + 1 + + + + 0 + CREATURE_DEMON + + + ABILITY_DEMONIC + ABILITY_ENRAGED + ABILITY_LEAP + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/3rd/PitSpawn.xdb b/GameMechanics/Creature/Creatures/Inferno/3rd/PitSpawn.xdb new file mode 100644 index 00000000..d20dfed0 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/3rd/PitSpawn.xdb @@ -0,0 +1,57 @@ + + + 35 + 35 + 0 + 13 + 31 + 6 + 9 + false + 264 + + + SPELL_MASS_DISRUPTING_RAY + MASTERY_BASIC + + + 35 + 0 + 1 + 241 + 2448 + 10 + 6 + false + CREATURE_UNKNOWN + TOWN_INFERNO + + ELEMENT_EARTH + ELEMENT_WATER + + 2 + + 0 + 0 + 0 + 0 + 1 + 0 + 1204 + + 0 + true + + 2 + + + + 0 + CREATURE_PIT_FIEND + + + ABILITY_DEMONIC + ABILITY_AXE_OF_SLAUGHTER + ABILITY_MAGIC_PROOF_50 + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/3rd/Quasit.xdb b/GameMechanics/Creature/Creatures/Inferno/3rd/Quasit.xdb new file mode 100644 index 00000000..158635e1 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/3rd/Quasit.xdb @@ -0,0 +1,51 @@ + + + 10 + 10 + 0 + 1 + 2 + 5 + 11 + false + 18 + + 0 + 2 + 1 + 14 + 124 + 10 + 1 + false + CREATURE_UNKNOWN + TOWN_INFERNO + + ELEMENT_AIR + ELEMENT_WATER + + 17 + + 0 + 0 + 0 + 0 + 0 + 0 + 71 + + true + + 1 + + + + 0 + CREATURE_FAMILIAR + + + ABILITY_DEMONIC + ABILITY_MANA_STEALER + ABILITY_AURA_OF_MAGIC_RESISTANCE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/3rd/SuccubusSeducer.xdb b/GameMechanics/Creature/Creatures/Inferno/3rd/SuccubusSeducer.xdb new file mode 100644 index 00000000..0e255998 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/3rd/SuccubusSeducer.xdb @@ -0,0 +1,53 @@ + + + 25 + 25 + 6 + 7 + 13 + 4 + 9 + false + 60 + + 0 + 1 + 1 + 75 + 680 + 10 + 4 + false + CREATURE_UNKNOWN + TOWN_INFERNO + + ELEMENT_AIR + ELEMENT_FIRE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 375 + + true + + 1 + + + + -2 + CREATURE_SUCCUBUS + + + ABILITY_DEMONIC + ABILITY_RANGED_RETALIATE + ABILITY_ELVES_DOUBLE_SHOT + ABILITY_IMMUNITY_TO_MIND_CONTROL + ABILITY_SEDUCE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/ArchDevil_.xdb b/GameMechanics/Creature/Creatures/Inferno/ArchDevil_.xdb new file mode 100644 index 00000000..be58e3a5 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/ArchDevil_.xdb @@ -0,0 +1,52 @@ + + + 40 + 40 + 0 + 33 + 66 + 8 + 9 + true + 525 + + 0 + 1 + 1 + 540 + 6066 + 10 + 7 + true + CREATURE_DEVIL + TOWN_INFERNO + + ELEMENT_FIRE + ELEMENT_EARTH + + 1 + + 0 + 0 + 2 + 0 + 0 + 0 + 2700 + + true + + 2 + + + + 0 + CREATURE_DEVIL + + + ABILITY_DEMONIC + ABILITY_BALOR_SUMMONIG + ABILITY_UNLIMITED_RETALIATION + ABILITY_FIRE_SHIELD + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/Balor.xdb b/GameMechanics/Creature/Creatures/Inferno/Balor.xdb new file mode 100644 index 00000000..1c34d3dd --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/Balor.xdb @@ -0,0 +1,51 @@ + + + 35 + 35 + 0 + 15 + 30 + 5 + 11 + false + 249 + + 0 + 2 + 1 + 241 + 2445 + 15 + 6 + true + CREATURE_PIT_FIEND + TOWN_INFERNO + + ELEMENT_EARTH + ELEMENT_WATER + + 2 + + 0 + 0 + 0 + 0 + 1 + 0 + 1204 + + true + + 2 + + + + 0 + CREATURE_PIT_FIEND + + + ABILITY_DEMONIC + ABILITY_VORPAL_SWORD + ABILITY_FLAMESTRIKE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/Cerberius.xdb b/GameMechanics/Creature/Creatures/Inferno/Cerberius.xdb new file mode 100644 index 00000000..38616757 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/Cerberius.xdb @@ -0,0 +1,197 @@ + + + 20 + 20 + 0 + 2 + 4 + 8 + 13 + false + 33 + + 0 + 0 + 1 + 41 + 370 + 10 + 3 + true + CREATURE_HELL_HOUND + TOWN_INFERNO + + ELEMENT_EARTH + ELEMENT_WATER + + 8 + + 0 + 0 + 0 + 0 + 0 + 0 + 204 + + true + + 1 + + + + + + + 1 + -1 + + + 1 + 0 + + + 1 + 1 + + + 0 + + + + + 1 + 0 + + + 1 + 1 + + + 0 + 1 + + + 45 + + + + + 1 + 1 + + + 0 + 1 + + + -1 + 1 + + + 90 + + + + + 0 + 1 + + + -1 + 1 + + + -1 + 0 + + + 135 + + + + + -1 + 1 + + + -1 + 0 + + + -1 + -1 + + + 180 + + + + + -1 + 0 + + + -1 + -1 + + + 0 + -1 + + + 225 + + + + + -1 + -1 + + + 0 + -1 + + + 1 + -1 + + + 270 + + + + + 0 + -1 + + + 1 + -1 + + + 1 + 0 + + + 315 + + + false + 1 + 1 + false + + + + + 0 + CREATURE_HELL_HOUND + + + ABILITY_DEMONIC + ABILITY_PACK_HUNTER + ABILITY_THREE_HEADED_ATTACK + ABILITY_NO_ENEMY_RETALIATION + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/Demon.xdb b/GameMechanics/Creature/Creatures/Inferno/Demon.xdb new file mode 100644 index 00000000..bc2d6971 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/Demon.xdb @@ -0,0 +1,53 @@ + + + 15 + 15 + 0 + 1 + 3 + 5 + 9 + false + 24 + + 0 + 0 + 1 + 16 + 106 + 10 + 2 + false + CREATURE_HORNED_DEMON + TOWN_INFERNO + + ELEMENT_FIRE + ELEMENT_NONE + + 15 + + 0 + 0 + 0 + 0 + 0 + 0 + 78 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_HORNED_DEMON + CREATURE_HORNED_LEAPER + + + ABILITY_DEMONIC + ABILITY_ENRAGED + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/Devil.xdb b/GameMechanics/Creature/Creatures/Inferno/Devil.xdb new file mode 100644 index 00000000..eb502a63 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/Devil.xdb @@ -0,0 +1,52 @@ + + + 40 + 40 + 0 + 36 + 66 + 8 + 11 + true + 339 + + 0 + 0 + 1 + 450 + 4868 + 10 + 7 + false + CREATURE_ARCHDEVIL + TOWN_INFERNO + + ELEMENT_FIRE + ELEMENT_NONE + + 1 + + 0 + 0 + 1 + 0 + 0 + 0 + 2250 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_ARCHDEVIL + CREATURE_ARCH_DEMON + + + ABILITY_DEMONIC + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/Familiar.xdb b/GameMechanics/Creature/Creatures/Inferno/Familiar.xdb new file mode 100644 index 00000000..a80e338b --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/Familiar.xdb @@ -0,0 +1,63 @@ + + + 10 + 10 + 0 + 1 + 2 + 5 + 12 + false + 10 + + 0 + 10 + 1 + 12 + 78 + 10 + 1 + false + CREATURE_IMP + TOWN_INFERNO + + ELEMENT_AIR + ELEMENT_NONE + + 17 + + 0 + 0 + 0 + 0 + 0 + 0 + 59 + + true + + 1 + + + + first + + + + + + 0 + CREATURE_UNKNOWN + + CREATURE_IMP + CREATURE_QUASIT + + + ABILITY_DEMONIC + ABILITY_MANA_DESTROYER + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/FirebreatherHound.xdb b/GameMechanics/Creature/Creatures/Inferno/FirebreatherHound.xdb new file mode 100644 index 00000000..e885edc7 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/FirebreatherHound.xdb @@ -0,0 +1,241 @@ + + + + + + + 1 + -1 + + + 1 + 0 + + + 1 + 1 + + + 2 + -2 + + + 2 + 0 + + + 2 + 2 + + + 0 + + + + + 1 + 0 + + + 1 + 1 + + + 0 + 1 + + + 2 + 0 + + + 2 + 2 + + + 0 + 2 + + + 45 + + + + + 1 + 1 + + + 0 + 1 + + + -1 + 1 + + + 2 + 2 + + + 0 + 2 + + + -2 + 2 + + + 90 + + + + + 0 + 1 + + + -1 + 1 + + + -1 + 0 + + + 0 + 2 + + + -2 + 2 + + + -2 + 0 + + + 135 + + + + + -1 + 1 + + + -1 + 0 + + + -1 + -1 + + + -2 + 2 + + + -2 + 0 + + + -2 + -2 + + + 180 + + + + + -1 + 0 + + + -1 + -1 + + + 0 + -1 + + + -2 + 0 + + + -2 + -2 + + + 0 + -2 + + + 225 + + + + + -1 + -1 + + + 0 + -1 + + + 1 + -1 + + + -2 + -2 + + + 0 + -2 + + + 2 + -2 + + + 270 + + + + + 0 + -1 + + + 1 + -1 + + + 1 + 0 + + + 0 + -2 + + + 2 + -2 + + + 2 + 0 + + + 315 + + + false + 1 + 0.75 + false + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/FrightfulNightmare.xdb b/GameMechanics/Creature/Creatures/Inferno/FrightfulNightmare.xdb new file mode 100644 index 00000000..b82e27e1 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/FrightfulNightmare.xdb @@ -0,0 +1,52 @@ + + + 30 + 30 + 0 + 10 + 16 + 8 + 12 + false + 150 + + 0 + 0 + 1 + 142 + 1415 + 10 + 5 + true + CREATURE_NIGHTMARE + TOWN_INFERNO + + ELEMENT_WATER + ELEMENT_EARTH + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + true + + 2 + + + + 0 + CREATURE_NIGHTMARE + + + ABILITY_DEMONIC + ABILITY_FEAR + ABILITY_SEARING_AURA + ABILITY_IMMUNITY_TO_BLIND + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/HellHound.xdb b/GameMechanics/Creature/Creatures/Inferno/HellHound.xdb new file mode 100644 index 00000000..25a117fc --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/HellHound.xdb @@ -0,0 +1,53 @@ + + + 20 + 20 + 0 + 3 + 4 + 7 + 13 + false + 33 + + 0 + 0 + 1 + 34 + 259 + 10 + 3 + false + CREATURE_CERBERI + TOWN_INFERNO + + ELEMENT_EARTH + ELEMENT_NONE + + 8 + + 0 + 0 + 0 + 0 + 0 + 0 + 170 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_CERBERI + CREATURE_FIREBREATHER_HOUND + + + ABILITY_DEMONIC + ABILITY_PACK_HUNTER + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/HornedDemon.xdb b/GameMechanics/Creature/Creatures/Inferno/HornedDemon.xdb new file mode 100644 index 00000000..1aacf613 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/HornedDemon.xdb @@ -0,0 +1,52 @@ + + + 15 + 15 + 0 + 2 + 3 + 5 + 10 + false + 28 + + 0 + 3 + 1 + 19 + 150 + 15 + 2 + true + CREATURE_DEMON + TOWN_INFERNO + + ELEMENT_FIRE + ELEMENT_EARTH + + 15 + + 0 + 0 + 0 + 0 + 0 + 0 + 94 + + true + + 1 + + + + 0 + CREATURE_DEMON + + + ABILITY_DEMONIC + ABILITY_ENRAGED + ABILITY_EXPLOSION + ABILITY_AVENGING_FLAME + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/Imp.xdb b/GameMechanics/Creature/Creatures/Inferno/Imp.xdb new file mode 100644 index 00000000..15a8ab48 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/Imp.xdb @@ -0,0 +1,61 @@ + + + 10 + 10 + 0 + 1 + 4 + 6 + 13 + false + 12 + + 0 + 1 + 1 + 14 + 127 + 10 + 1 + true + CREATURE_FAMILIAR + TOWN_INFERNO + + ELEMENT_AIR + ELEMENT_WATER + + 17 + + 0 + 0 + 0 + 0 + 0 + 0 + 71 + + true + + 1 + + + + first + + + + + + 0 + CREATURE_FAMILIAR + + + ABILITY_DEMONIC + ABILITY_SYPHON_MANA + ABILITY_INVISIBILITY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/InfernalSuccubus.xdb b/GameMechanics/Creature/Creatures/Inferno/InfernalSuccubus.xdb new file mode 100644 index 00000000..ee997c5e --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/InfernalSuccubus.xdb @@ -0,0 +1,52 @@ + + + 25 + 25 + 7 + 7 + 13 + 4 + 10 + false + 57 + + 0 + 0 + 1 + 75 + 694 + 10 + 4 + true + CREATURE_SUCCUBUS + TOWN_INFERNO + + ELEMENT_AIR + ELEMENT_FIRE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 375 + + true + + 1 + + + + -2 + CREATURE_SUCCUBUS + + + ABILITY_DEMONIC + ABILITY_RANGED_RETALIATE + ABILITY_CHAIN_SHOT + ABILITY_IMMUNITY_TO_MIND_CONTROL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/Nightmare.xdb b/GameMechanics/Creature/Creatures/Inferno/Nightmare.xdb new file mode 100644 index 00000000..9ac4264f --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/Nightmare.xdb @@ -0,0 +1,53 @@ + + + 30 + 30 + 0 + 8 + 16 + 8 + 14 + false + 114 + + 0 + 0 + 1 + 119 + 1069 + 10 + 5 + false + CREATURE_FRIGHTFUL_NIGHTMARE + TOWN_INFERNO + + ELEMENT_WATER + ELEMENT_NONE + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 593 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_FRIGHTFUL_NIGHTMARE + CREATURE_HELLMARE + + + ABILITY_DEMONIC + ABILITY_FEAR + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/PitFiend.xdb b/GameMechanics/Creature/Creatures/Inferno/PitFiend.xdb new file mode 100644 index 00000000..58b7d8bb --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/PitFiend.xdb @@ -0,0 +1,57 @@ + + + 35 + 35 + 0 + 13 + 26 + 5 + 8 + false + 204 + + + SPELL_FIREBALL + MASTERY_ADVANCED + + + 33 + 0 + 1 + 201 + 2102 + 15 + 6 + false + CREATURE_BALOR + TOWN_INFERNO + + ELEMENT_EARTH + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 0 + 0 + 0 + 1003 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_BALOR + CREATURE_PIT_SPAWN + + + ABILITY_DEMONIC + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Inferno/Succubus.xdb b/GameMechanics/Creature/Creatures/Inferno/Succubus.xdb new file mode 100644 index 00000000..ad2fa611 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Inferno/Succubus.xdb @@ -0,0 +1,53 @@ + + + 25 + 25 + 7 + 6 + 13 + 4 + 10 + false + 39 + + 0 + 0 + 1 + 62 + 511 + 10 + 4 + false + CREATURE_INFERNAL_SUCCUBUS + TOWN_INFERNO + + ELEMENT_AIR + ELEMENT_NONE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 312 + + true + + 1 + + + + -2 + CREATURE_UNKNOWN + + CREATURE_INFERNAL_SUCCUBUS + CREATURE_SUCCUBUS_SEDUCER + + + ABILITY_DEMONIC + ABILITY_RANGED_RETALIATE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/3rd/Banshee.xdb b/GameMechanics/Creature/Creatures/Necropolis/3rd/Banshee.xdb new file mode 100644 index 00000000..cc1469c6 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/3rd/Banshee.xdb @@ -0,0 +1,55 @@ + + + 35 + 35 + 0 + 22 + 27 + 7 + 11 + false + 210 + + + SPELL_ABILITY_DEATH_WAIL + MASTERY_ADVANCED + + + 0 + 0 + 0 + 241 + 2218 + 10 + 6 + false + CREATURE_UNKNOWN + TOWN_NECROMANCY + + ELEMENT_WATER + ELEMENT_FIRE + + 2 + + 0 + 0 + 1 + 0 + 0 + 0 + 1204 + + true + + 2 + + + + 0 + CREATURE_WIGHT + + + ABILITY_UNDEAD + ABILITY_DEATH_WAIL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/3rd/DiseaseZombie.xdb b/GameMechanics/Creature/Creatures/Necropolis/3rd/DiseaseZombie.xdb new file mode 100644 index 00000000..d85ee93d --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/3rd/DiseaseZombie.xdb @@ -0,0 +1,52 @@ + + + 15 + 15 + 0 + 2 + 3 + 4 + 8 + false + 37 + + 0 + 0 + 0 + 18 + 135 + 10 + 2 + false + CREATURE_UNKNOWN + TOWN_NECROMANCY + + ELEMENT_EARTH + ELEMENT_FIRE + + 16 + + 0 + 0 + 0 + 0 + 0 + 0 + 88 + + true + + 1 + + + + 0 + CREATURE_WALKING_DEAD + + + ABILITY_UNDEAD + ABILITY_ENRAGED + ABILITY_UNLIMITED_RETALIATION + ABILITY_WEAKENING_AURA + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/3rd/HorrorDragon.xdb b/GameMechanics/Creature/Creatures/Necropolis/3rd/HorrorDragon.xdb new file mode 100644 index 00000000..d615392e --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/3rd/HorrorDragon.xdb @@ -0,0 +1,51 @@ + + + 40 + 40 + 0 + 27 + 40 + 8 + 12 + true + 140 + + 0 + 0 + 0 + 540 + 3618 + 10 + 7 + false + CREATURE_UNKNOWN + TOWN_NECROMANCY + + ELEMENT_AIR + ELEMENT_WATER + + 1 + + 0 + 0 + 0 + 0 + 0 + 1 + 2700 + + true + + 2 + + + + 0 + CREATURE_BONE_DRAGON + + + ABILITY_UNDEAD + ABILITY_SORROW_STRIKE + ABILITY_INCORPOREAL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/3rd/LichMaster.xdb b/GameMechanics/Creature/Creatures/Necropolis/3rd/LichMaster.xdb new file mode 100644 index 00000000..5e0caa0c --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/3rd/LichMaster.xdb @@ -0,0 +1,59 @@ + + + 30 + 30 + 7 + 17 + 21 + 4 + 9 + false + 105 + + + SPELL_MASS_PLAGUE + MASTERY_EXPERT + + + SPELL_ANIMATE_DEAD + MASTERY_ADVANCED + + + 15 + 0 + 0 + 142 + 1339 + 10 + 5 + false + CREATURE_UNKNOWN + TOWN_NECROMANCY + + ELEMENT_FIRE + ELEMENT_EARTH + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + true + + 2 + + + + -2 + CREATURE_LICH + + + ABILITY_UNDEAD + ABILITY_FEAR + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/3rd/Nosferatu.xdb b/GameMechanics/Creature/Creatures/Necropolis/3rd/Nosferatu.xdb new file mode 100644 index 00000000..31434074 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/3rd/Nosferatu.xdb @@ -0,0 +1,52 @@ + + + 25 + 25 + 0 + 6 + 12 + 7 + 11 + true + 75 + + 0 + 0 + 0 + 75 + 720 + 10 + 4 + false + CREATURE_UNKNOWN + TOWN_NECROMANCY + + ELEMENT_AIR + ELEMENT_EARTH + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 375 + + 0 + true + + 1 + + + + 0 + CREATURE_VAMPIRE + + + ABILITY_UNDEAD + ABILITY_SLEEPING_STRIKE + ABILITY_LIFE_DRAIN + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/3rd/Poltergeist.xdb b/GameMechanics/Creature/Creatures/Necropolis/3rd/Poltergeist.xdb new file mode 100644 index 00000000..16525183 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/3rd/Poltergeist.xdb @@ -0,0 +1,56 @@ + + + 20 + 20 + 0 + 4 + 6 + 6 + 9 + true + 15 + + + SPELL_ABILITY_AMMO_STEAL + MASTERY_EXPERT + + + 0 + 2 + 0 + 36 + 321 + 10 + 3 + false + CREATURE_UNKNOWN + TOWN_NECROMANCY + + ELEMENT_WATER + ELEMENT_AIR + + 9 + + 0 + 0 + 0 + 0 + 0 + 0 + 181 + + true + + 1 + + + + 0 + CREATURE_MANES + + + ABILITY_UNDEAD + ABILITY_INCORPOREAL + ABILITY_AMMO_STEAL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/3rd/SkeletonWarrior.xdb b/GameMechanics/Creature/Creatures/Necropolis/3rd/SkeletonWarrior.xdb new file mode 100644 index 00000000..b17a94e2 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/3rd/SkeletonWarrior.xdb @@ -0,0 +1,54 @@ + + + 10 + 10 + 0 + 1 + 2 + 7 + 10 + false + 15 + + 0 + 0 + 0 + 12 + 76 + 10 + 1 + false + CREATURE_UNKNOWN + TOWN_NECROMANCY + + ELEMENT_EARTH + ELEMENT_FIRE + + 20 + + 0 + 0 + 0 + 0 + 0 + 0 + 60 + + true + + 1 + + + + 0 + CREATURE_SKELETON + + + ABILITY_UNDEAD + ABILITY_MAGIC_PROOF_25 + ABILITY_LARGE_SHIELD + ABILITY_SHIELD_OTHER + ABILITY_BASH + ABILITY_WOUND + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Bone_Dragon.xdb b/GameMechanics/Creature/Creatures/Necropolis/Bone_Dragon.xdb new file mode 100644 index 00000000..f85abc82 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Bone_Dragon.xdb @@ -0,0 +1,52 @@ + + + 40 + 40 + 0 + 27 + 37 + 7 + 11 + true + 285 + + 0 + 0 + 0 + 450 + 2694 + 10 + 7 + false + CREATURE_SHADOW_DRAGON + TOWN_NECROMANCY + + ELEMENT_AIR + ELEMENT_NONE + + 1 + + 0 + 0 + 0 + 0 + 0 + 1 + 2250 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_SHADOW_DRAGON + CREATURE_HORROR_DRAGON + + + ABILITY_UNDEAD + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Demilich.xdb b/GameMechanics/Creature/Creatures/Necropolis/Demilich.xdb new file mode 100644 index 00000000..2678ee6b --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Demilich.xdb @@ -0,0 +1,60 @@ + + + 30 + 30 + 7 + 12 + 17 + 4 + 10 + false + 105 + + + SPELL_SORROW + MASTERY_ADVANCED + + + SPELL_MASS_FORGETFULNESS + MASTERY_ADVANCED + + + 19 + 0 + 0 + 142 + 1339 + 15 + 5 + true + CREATURE_LICH + TOWN_NECROMANCY + + ELEMENT_FIRE + ELEMENT_EARTH + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + true + + 2 + + + + -2 + CREATURE_LICH + + + ABILITY_UNDEAD + ABILITY_DEATH_CLOUD + ABILITY_VENOM + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Ghosts.xdb b/GameMechanics/Creature/Creatures/Necropolis/Ghosts.xdb new file mode 100644 index 00000000..2b48a008 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Ghosts.xdb @@ -0,0 +1,51 @@ + + + 20 + 20 + 0 + 4 + 6 + 5 + 10 + true + 15 + + 0 + 0 + 0 + 36 + 321 + 10 + 3 + true + CREATURE_MANES + TOWN_NECROMANCY + + ELEMENT_WATER + ELEMENT_AIR + + 9 + + 0 + 0 + 0 + 0 + 0 + 0 + 181 + + true + + 1 + + + + 0 + CREATURE_MANES + + + ABILITY_UNDEAD + ABILITY_INCORPOREAL + ABILITY_MANA_DRAIN + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Lich.xdb b/GameMechanics/Creature/Creatures/Necropolis/Lich.xdb new file mode 100644 index 00000000..feef3803 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Lich.xdb @@ -0,0 +1,54 @@ + + + 30 + 30 + 7 + 10 + 14 + 4 + 10 + false + 97 + + 0 + 0 + 0 + 119 + 1166 + 10 + 5 + false + CREATURE_DEMILICH + TOWN_NECROMANCY + + ELEMENT_FIRE + ELEMENT_NONE + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 593 + + true + + 2 + + + + -2 + CREATURE_UNKNOWN + + CREATURE_DEMILICH + CREATURE_LICH_MASTER + + + ABILITY_UNDEAD + ABILITY_DEATH_CLOUD + ABILITY_VENOM + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Manes.xdb b/GameMechanics/Creature/Creatures/Necropolis/Manes.xdb new file mode 100644 index 00000000..ad999785 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Manes.xdb @@ -0,0 +1,53 @@ + + + 20 + 20 + 0 + 2 + 4 + 6 + 9 + true + 15 + + 0 + 0 + 0 + 30 + 277 + 10 + 3 + false + CREATURE_GHOST + TOWN_NECROMANCY + + ELEMENT_WATER + ELEMENT_NONE + + 9 + + 0 + 0 + 0 + 0 + 0 + 0 + 151 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_GHOST + CREATURE_POLTERGEIST + + + ABILITY_UNDEAD + ABILITY_INCORPOREAL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Shadow_Dragon.xdb b/GameMechanics/Creature/Creatures/Necropolis/Shadow_Dragon.xdb new file mode 100644 index 00000000..27da8f67 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Shadow_Dragon.xdb @@ -0,0 +1,51 @@ + + + 40 + 40 + 0 + 30 + 37 + 8 + 11 + true + 300 + + 0 + 0 + 0 + 540 + 3618 + 10 + 7 + true + CREATURE_BONE_DRAGON + TOWN_NECROMANCY + + ELEMENT_AIR + ELEMENT_WATER + + 1 + + 0 + 0 + 0 + 0 + 0 + 1 + 2700 + + true + + 2 + + + + 0 + CREATURE_BONE_DRAGON + + + ABILITY_UNDEAD + ABILITY_CURSING_ATTACK + ABILITY_HORROR_OF_THE_DEATH + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Skeleton.xdb b/GameMechanics/Creature/Creatures/Necropolis/Skeleton.xdb new file mode 100644 index 00000000..e903ed9f --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Skeleton.xdb @@ -0,0 +1,52 @@ + + + 10 + 10 + 0 + 1 + 2 + 5 + 10 + false + 7 + + 0 + 0 + 0 + 10 + 62 + 10 + 1 + false + CREATURE_SKELETON_ARCHER + TOWN_NECROMANCY + + ELEMENT_EARTH + ELEMENT_NONE + + 20 + + 0 + 0 + 0 + 0 + 0 + 0 + 50 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_SKELETON_ARCHER + CREATURE_SKELETON_WARRIOR + + + ABILITY_UNDEAD + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Skeleton_Archer.xdb b/GameMechanics/Creature/Creatures/Necropolis/Skeleton_Archer.xdb new file mode 100644 index 00000000..b811dccf --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Skeleton_Archer.xdb @@ -0,0 +1,50 @@ + + + 10 + 10 + 7 + 1 + 2 + 4 + 10 + false + 10 + + 0 + 0 + 0 + 12 + 76 + 10 + 1 + true + CREATURE_SKELETON + TOWN_NECROMANCY + + ELEMENT_EARTH + ELEMENT_FIRE + + 20 + + 0 + 0 + 0 + 0 + 0 + 0 + 60 + + true + + 1 + + + + -2 + CREATURE_SKELETON + + + ABILITY_UNDEAD + ABILITY_MAGIC_PROOF_25 + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Vampire.xdb b/GameMechanics/Creature/Creatures/Necropolis/Vampire.xdb new file mode 100644 index 00000000..1b5476ed --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Vampire.xdb @@ -0,0 +1,54 @@ + + + 25 + 25 + 0 + 6 + 8 + 6 + 11 + false + 60 + + 0 + 0 + 0 + 62 + 612 + 10 + 4 + false + CREATURE_VAMPIRE_LORD + TOWN_NECROMANCY + + ELEMENT_AIR + ELEMENT_NONE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 312 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_VAMPIRE_LORD + CREATURE_NOSFERATU + + + ABILITY_UNDEAD + ABILITY_NO_ENEMY_RETALIATION + ABILITY_LIFE_DRAIN + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Vampire_Lord.xdb b/GameMechanics/Creature/Creatures/Necropolis/Vampire_Lord.xdb new file mode 100644 index 00000000..1d9d4fb4 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Vampire_Lord.xdb @@ -0,0 +1,51 @@ + + + 25 + 25 + 0 + 7 + 11 + 8 + 11 + true + 67 + + 0 + 0 + 0 + 75 + 720 + 10 + 4 + true + CREATURE_VAMPIRE + TOWN_NECROMANCY + + ELEMENT_AIR + ELEMENT_EARTH + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 375 + + true + + 1 + + + + 0 + CREATURE_VAMPIRE + + + ABILITY_UNDEAD + ABILITY_NO_ENEMY_RETALIATION + ABILITY_LIFE_DRAIN + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Walking_Dead.xdb b/GameMechanics/Creature/Creatures/Necropolis/Walking_Dead.xdb new file mode 100644 index 00000000..332f4ad3 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Walking_Dead.xdb @@ -0,0 +1,54 @@ + + + 15 + 15 + 0 + 1 + 2 + 5 + 7 + false + 33 + + 0 + 0 + 0 + 16 + 115 + 10 + 2 + false + CREATURE_ZOMBIE + TOWN_NECROMANCY + + ELEMENT_EARTH + ELEMENT_NONE + + 15 + + 0 + 0 + 0 + 0 + 0 + 0 + 78 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_ZOMBIE + CREATURE_DISEASE_ZOMBIE + + + ABILITY_UNDEAD + ABILITY_TAUNT + ABILITY_ENRAGED + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Wight.xdb b/GameMechanics/Creature/Creatures/Necropolis/Wight.xdb new file mode 100644 index 00000000..f46b20c2 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Wight.xdb @@ -0,0 +1,52 @@ + + + 35 + 35 + 0 + 22 + 27 + 6 + 11 + false + 180 + + 0 + 0 + 0 + 201 + 1984 + 10 + 6 + false + CREATURE_WRAITH + TOWN_NECROMANCY + + ELEMENT_WATER + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 0 + 0 + 0 + 1003 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_WRAITH + CREATURE_BANSHEE + + + ABILITY_UNDEAD + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Wraith.xdb b/GameMechanics/Creature/Creatures/Necropolis/Wraith.xdb new file mode 100644 index 00000000..b05183cc --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Wraith.xdb @@ -0,0 +1,51 @@ + + + 35 + 35 + 0 + 25 + 30 + 6 + 12 + false + 187 + + 0 + 0 + 0 + 241 + 2218 + 10 + 6 + true + CREATURE_WIGHT + TOWN_NECROMANCY + + ELEMENT_WATER + ELEMENT_FIRE + + 2 + + 0 + 0 + 1 + 0 + 0 + 0 + 1204 + + true + + 2 + + + + 0 + CREATURE_WIGHT + + + ABILITY_UNDEAD + ABILITY_HARM_TOUCH + ABILITY_VORPAL_SWORD + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Necropolis/Zombie.xdb b/GameMechanics/Creature/Creatures/Necropolis/Zombie.xdb new file mode 100644 index 00000000..4e3d8908 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Necropolis/Zombie.xdb @@ -0,0 +1,52 @@ + + + 15 + 15 + 0 + 2 + 3 + 5 + 8 + false + 33 + + 0 + 0 + 0 + 18 + 135 + 10 + 2 + true + CREATURE_WALKING_DEAD + TOWN_NECROMANCY + + ELEMENT_EARTH + ELEMENT_FIRE + + 16 + + 0 + 0 + 0 + 0 + 0 + 0 + 88 + + true + + 1 + + + + 0 + CREATURE_WALKING_DEAD + + + ABILITY_UNDEAD + ABILITY_ENRAGED + ABILITY_TAUNT + ABILITY_WEAKENING_STRIKE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Neutrals/Air_Elemental.xdb b/GameMechanics/Creature/Creatures/Neutrals/Air_Elemental.xdb new file mode 100644 index 00000000..d24a39ad --- /dev/null +++ b/GameMechanics/Creature/Creatures/Neutrals/Air_Elemental.xdb @@ -0,0 +1,52 @@ + + + 10 + 10 + 0 + 1 + 1 + 7 + 15 + true + 10 + + 0 + 0 + 0 + 10 + 130 + 10 + 1 + true + CREATURE_UNKNOWN + TOWN_NO_TYPE + + ELEMENT_AIR + ELEMENT_NONE + + 20 + + 0 + 0 + 0 + 0 + 0 + 0 + 50 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + + ABILITY_ELEMENTAL + ABILITY_IMMUNITY_TO_AIR + ABILITY_NO_ENEMY_RETALIATION + ABILITY_INCORPOREAL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Neutrals/Black_Knight.xdb b/GameMechanics/Creature/Creatures/Neutrals/Black_Knight.xdb new file mode 100644 index 00000000..b10779b4 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Neutrals/Black_Knight.xdb @@ -0,0 +1,53 @@ + + + 40 + 40 + 0 + 35 + 55 + 7 + 12 + true + 400 + + 0 + 0 + 0 + 450 + 8888 + 10 + 7 + true + CREATURE_UNKNOWN + TOWN_NO_TYPE + + ELEMENT_AIR + ELEMENT_WATER + + 1 + + 0 + 0 + 2 + 0 + 0 + 0 + 2250 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + + ABILITY_UNDEAD + ABILITY_ENCHANTED_OBSIDIAN + ABILITY_WEAKENING_STRIKE + ABILITY_LIFE_DRAIN + ABILITY_FRIGHTFUL_PRESENCE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Neutrals/Death_Knight.xdb b/GameMechanics/Creature/Creatures/Neutrals/Death_Knight.xdb new file mode 100644 index 00000000..f3f73205 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Neutrals/Death_Knight.xdb @@ -0,0 +1,51 @@ + + + 35 + 35 + 0 + 19 + 29 + 8 + 10 + false + 210 + + 0 + 0 + 0 + 201 + 2460 + 10 + 6 + true + CREATURE_UNKNOWN + TOWN_NO_TYPE + + ELEMENT_EARTH + ELEMENT_NONE + + 2 + + 0 + 0 + 1 + 0 + 0 + 0 + 1003 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + + ABILITY_UNDEAD + ABILITY_FRIGHT_AURA + ABILITY_AXE_OF_SLAUGHTER + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Neutrals/Earth_Elemental.xdb b/GameMechanics/Creature/Creatures/Neutrals/Earth_Elemental.xdb new file mode 100644 index 00000000..9cbaf2bd --- /dev/null +++ b/GameMechanics/Creature/Creatures/Neutrals/Earth_Elemental.xdb @@ -0,0 +1,52 @@ + + + 10 + 10 + 0 + 1 + 3 + 5 + 8 + false + 15 + + 0 + 0 + 0 + 10 + 130 + 10 + 1 + true + CREATURE_UNKNOWN + TOWN_NO_TYPE + + ELEMENT_EARTH + ELEMENT_NONE + + 20 + + 0 + 0 + 0 + 0 + 0 + 0 + 50 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + + ABILITY_ELEMENTAL + ABILITY_IMMUNITY_TO_EARTH + ABILITY_UNLIMITED_RETALIATION + ABILITY_AURA_OF_MAGIC_RESISTANCE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Neutrals/Fire_Elemental.xdb b/GameMechanics/Creature/Creatures/Neutrals/Fire_Elemental.xdb new file mode 100644 index 00000000..d6d2afd1 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Neutrals/Fire_Elemental.xdb @@ -0,0 +1,52 @@ + + + 15 + 15 + 9 + 1 + 2 + 5 + 11 + false + 10 + + 0 + 0 + 0 + 12 + 130 + 10 + 2 + true + CREATURE_UNKNOWN + TOWN_NO_TYPE + + ELEMENT_FIRE + ELEMENT_NONE + + 20 + + 0 + 0 + 0 + 0 + 0 + 0 + 59 + + true + + 1 + + + + -2 + CREATURE_UNKNOWN + + + ABILITY_ELEMENTAL + ABILITY_IMMUNITY_TO_FIRE + ABILITY_FIRE_SHIELD + ABILITY_MAGIC_ATTACK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Neutrals/Manticore.xdb b/GameMechanics/Creature/Creatures/Neutrals/Manticore.xdb new file mode 100644 index 00000000..f56af665 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Neutrals/Manticore.xdb @@ -0,0 +1,50 @@ + + + 35 + 35 + 0 + 22 + 32 + 7 + 9 + true + 262 + + 0 + 0 + 0 + 201 + 2300 + 10 + 6 + true + CREATURE_UNKNOWN + TOWN_NO_TYPE + + ELEMENT_AIR + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 1 + 0 + 0 + 1003 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + + ABILITY_POISONOUS_ATTACK + ABILITY_ACID_BLOOD + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Neutrals/Mummy.xdb b/GameMechanics/Creature/Creatures/Neutrals/Mummy.xdb new file mode 100644 index 00000000..400f8c33 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Neutrals/Mummy.xdb @@ -0,0 +1,63 @@ + + + 30 + 30 + 0 + 12 + 20 + 5 + 12 + false + 90 + + + SPELL_FORGETFULNESS + MASTERY_EXPERT + + + SPELL_PLAGUE + MASTERY_EXPERT + + + SPELL_MASS_FORGETFULNESS + MASTERY_EXPERT + + + 15 + 0 + 0 + 119 + 1142 + 15 + 5 + true + CREATURE_UNKNOWN + TOWN_NO_TYPE + + ELEMENT_EARTH + ELEMENT_NONE + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 593 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + + ABILITY_UNDEAD + ABILITY_LIFE_DRAIN + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Neutrals/Phoenix.xdb b/GameMechanics/Creature/Creatures/Neutrals/Phoenix.xdb new file mode 100644 index 00000000..37a50e7a --- /dev/null +++ b/GameMechanics/Creature/Creatures/Neutrals/Phoenix.xdb @@ -0,0 +1,58 @@ + + + 40 + 40 + 0 + 35 + 65 + 9 + 15 + true + 400 + + + SPELL_ENCOURAGE + MASTERY_EXPERT + + + 0 + 1 + 0 + 450 + 8888 + 10 + 7 + true + CREATURE_UNKNOWN + TOWN_NO_TYPE + + ELEMENT_FIRE + ELEMENT_NONE + + 1 + + 0 + 0 + 0 + 0 + 0 + 0 + 2250 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + + ABILITY_ELEMENTAL + ABILITY_DESTRUCTION_MAGIC_MAGNETISM + ABILITY_ENCHANTED_OBSIDIAN + ABILITY_FIRE_SHIELD + ABILITY_REBIRTH + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Neutrals/SnowApe.xdb b/GameMechanics/Creature/Creatures/Neutrals/SnowApe.xdb new file mode 100644 index 00000000..c3903cb4 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Neutrals/SnowApe.xdb @@ -0,0 +1,79 @@ + + + 40 + 40 + 0 + 40 + 70 + 9 + 12 + true + 400 + + + SPELL_MASS_DISPEL + MASTERY_EXPERT + + + SPELL_MASS_BLESS + MASTERY_EXPERT + + + SPELL_MASS_HASTE + MASTERY_EXPERT + + + SPELL_PRAYER + MASTERY_EXPERT + + + SPELL_ENCOURAGE + MASTERY_EXPERT + + + SPELL_ABILITY_RESURRECT_ALLIES + MASTERY_EXPERT + + + 50 + 2 + 0 + 450 + 8888 + 10 + 7 + true + CREATURE_UNKNOWN + TOWN_NO_TYPE + + ELEMENT_WATER + ELEMENT_NONE + + 1 + + 0 + 0 + 0 + 3 + 0 + 0 + 2250 + + 0 + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + + ABILITY_ENCHANTED_OBSIDIAN + ABILITY_PRESENCE_OF_COMMANDER + ABILITY_AURA_OF_MAGIC_RESISTANCE + ABILITY_ACID_BREATH + ABILITY_LARGE_SHIELD + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Neutrals/Water_Elemental.xdb b/GameMechanics/Creature/Creatures/Neutrals/Water_Elemental.xdb new file mode 100644 index 00000000..c866910e --- /dev/null +++ b/GameMechanics/Creature/Creatures/Neutrals/Water_Elemental.xdb @@ -0,0 +1,57 @@ + + + 15 + 15 + 0 + 1 + 3 + 6 + 10 + false + 12 + + + SPELL_FROST_RING + MASTERY_EXPERT + + + 15 + 0 + 0 + 12 + 130 + 50 + 2 + true + CREATURE_UNKNOWN + TOWN_NO_TYPE + + ELEMENT_WATER + ELEMENT_NONE + + 20 + + 0 + 0 + 0 + 0 + 0 + 0 + 59 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + + ABILITY_ELEMENTAL + ABILITY_IMMUNITY_TO_WATER + ABILITY_AURA_OF_ICE_VULNERABILITY + ABILITY_HEXING_ATTACK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Neutrals/Wolf.xdb b/GameMechanics/Creature/Creatures/Neutrals/Wolf.xdb new file mode 100644 index 00000000..a0e877c4 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Neutrals/Wolf.xdb @@ -0,0 +1,50 @@ + + + 20 + 20 + 0 + 3 + 5 + 6 + 12 + false + 37 + + 0 + 1 + 0 + 45 + 425 + 10 + 3 + true + CREATURE_UNKNOWN + TOWN_NO_TYPE + + ELEMENT_EARTH + ELEMENT_NONE + + 6 + + 0 + 0 + 0 + 0 + 0 + 0 + 227 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + + ABILITY_PACK_HUNTER + ABILITY_HOWL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/None.xdb b/GameMechanics/Creature/Creatures/None.xdb new file mode 100644 index 00000000..c6066a10 --- /dev/null +++ b/GameMechanics/Creature/Creatures/None.xdb @@ -0,0 +1,47 @@ + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + false + 0 + + 0 + 0 + 0 + 0 + 0 + 7 + 1 + false + CREATURE_UNKNOWN + TOWN_HEAVEN + + ELEMENT_NONE + ELEMENT_NONE + + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + + 1 + + + + 0 + CREATURE_UNKNOWN + + + diff --git a/GameMechanics/Creature/Creatures/Orcs/3rd/CentaurMaradeur.xdb b/GameMechanics/Creature/Creatures/Orcs/3rd/CentaurMaradeur.xdb new file mode 100644 index 00000000..8085ca53 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/3rd/CentaurMaradeur.xdb @@ -0,0 +1,51 @@ + + + 15 + 15 + 7 + 3 + 5 + 6 + 10 + false + 22 + + 0 + 0 + 0 + 20 + 181 + 10 + 2 + false + CREATURE_UNKNOWN + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 14 + + 0 + 0 + 0 + 0 + 0 + 0 + 101 + + true + + 2 + + + + -2 + CREATURE_CENTAUR + + + ABILITY_DEMON_RAGED + ABILITY_RANGED_RETALIATE + ABILITY_HOLD_GROUND + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/3rd/CyclopBloodeyed.xdb b/GameMechanics/Creature/Creatures/Orcs/3rd/CyclopBloodeyed.xdb new file mode 100644 index 00000000..6264bc03 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/3rd/CyclopBloodeyed.xdb @@ -0,0 +1,53 @@ + + + 40 + 40 + 0 + 35 + 55 + 5 + 10 + false + 412 + + 0 + 0 + 0 + 540 + 5937 + 10 + 7 + false + CREATURE_UNKNOWN + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 1 + + 0 + 0 + 2 + 0 + 0 + 0 + 2700 + + 0 + true + + 2 + + + + -2 + CREATURE_CYCLOP + + + ABILITY_DEMON_RAGED + ABILITY_SWALLOW_GOBLIN + ABILITY_GOBLIN_THROWER + ABILITY_EVIL_EYE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/3rd/GoblinDefiler.xdb b/GameMechanics/Creature/Creatures/Orcs/3rd/GoblinDefiler.xdb new file mode 100644 index 00000000..0d738a0f --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/3rd/GoblinDefiler.xdb @@ -0,0 +1,56 @@ + + + 10 + 10 + 0 + 1 + 2 + 5 + 10 + false + 13 + + + SPELL_ANTI_MAGIC + MASTERY_EXPERT + + + 26 + 0 + 0 + 10 + 66 + 10 + 1 + false + CREATURE_UNKNOWN + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 25 + + 0 + 0 + 0 + 0 + 0 + 0 + 48 + + true + + 1 + + + + 0 + CREATURE_GOBLIN + + + ABILITY_DEMON_RAGED + ABILITY_COWARDICE + ABILITY_IMMUNITY_TO_MIND_CONTROL + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/3rd/OrcWarmonger.xdb b/GameMechanics/Creature/Creatures/Orcs/3rd/OrcWarmonger.xdb new file mode 100644 index 00000000..9dcefc3b --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/3rd/OrcWarmonger.xdb @@ -0,0 +1,53 @@ + + + 20 + 20 + 0 + 3 + 5 + 5 + 9 + false + 42 + + 0 + 0 + 0 + 30 + 265 + 10 + 3 + false + CREATURE_UNKNOWN + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 11 + + 0 + 0 + 0 + 0 + 0 + 0 + 148 + + true + + 1 + + + + 0 + CREATURE_ORC_WARRIOR + + + ABILITY_DEMON_RAGED + ABILITY_ENRAGED + ABILITY_FIERCE_RETALIATION + ABILITY_LARGE_SHIELD + ABILITY_SHIELD_OTHER + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/3rd/OrcchiefChieftain.xdb b/GameMechanics/Creature/Creatures/Orcs/3rd/OrcchiefChieftain.xdb new file mode 100644 index 00000000..736d0701 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/3rd/OrcchiefChieftain.xdb @@ -0,0 +1,52 @@ + + + 30 + 30 + 0 + 10 + 13 + 6 + 11 + false + 90 + + 0 + 0 + 0 + 85 + 920 + 10 + 5 + false + CREATURE_UNKNOWN + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 427 + + true + + 1 + + + + 0 + CREATURE_ORCCHIEF_BUTCHER + + + ABILITY_DEMON_RAGED + ABILITY_ORDER_OF_THE_CHIEF + ABILITY_PRESENCE_OF_COMMANDER + ABILITY_BRAVERY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/3rd/ShamanHag.xdb b/GameMechanics/Creature/Creatures/Orcs/3rd/ShamanHag.xdb new file mode 100644 index 00000000..23a890e7 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/3rd/ShamanHag.xdb @@ -0,0 +1,65 @@ + + + 25 + 25 + 0 + 7 + 9 + 5 + 12 + false + 67 + + + SPELL_METEOR_SHOWER + MASTERY_EXPERT + + + SPELL_SLOW + MASTERY_EXPERT + + + SPELL_DISRUPTING_RAY + MASTERY_EXPERT + + + 15 + 0 + 0 + 75 + 692 + 10 + 4 + false + CREATURE_UNKNOWN + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 375 + + true + + 1 + + + + 0 + CREATURE_SHAMAN + + + ABILITY_DEMON_RAGED + ABILITY_SACRIFICE_GOBLIN + ABILITY_HEXING_ATTACK + ABILITY_FAST_ATTACK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/3rd/WyvernPaokai.xdb b/GameMechanics/Creature/Creatures/Orcs/3rd/WyvernPaokai.xdb new file mode 100644 index 00000000..f7aaae43 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/3rd/WyvernPaokai.xdb @@ -0,0 +1,52 @@ + + + 35 + 35 + 0 + 20 + 25 + 8 + 10 + true + 225 + + 0 + 0 + 0 + 241 + 2572 + 10 + 6 + false + CREATURE_UNKNOWN + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 0 + 1 + 0 + 1204 + + 0 + true + + 2 + + + + 0 + CREATURE_WYVERN + + + ABILITY_SCAVENGER + ABILITY_LIGHTNING_BREATH + ABILITY_IMMUNITY_TO_BLIND + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/Centaur1.xdb b/GameMechanics/Creature/Creatures/Orcs/Centaur1.xdb new file mode 100644 index 00000000..37ac31cb --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/Centaur1.xdb @@ -0,0 +1,53 @@ + + + 15 + 15 + 7 + 2 + 4 + 5 + 10 + false + 18 + + 0 + 0 + 0 + 17 + 121 + 10 + 2 + false + CREATURE_CENTAUR_NOMAD + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 14 + + 0 + 0 + 0 + 0 + 0 + 0 + 84 + + true + + 2 + + + + -2 + CREATURE_UNKNOWN + + CREATURE_CENTAUR_NOMAD + CREATURE_CENTAUR_MARADEUR + + + ABILITY_DEMON_RAGED + ABILITY_MANEURE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/Centaur2.xdb b/GameMechanics/Creature/Creatures/Orcs/Centaur2.xdb new file mode 100644 index 00000000..e077a55d --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/Centaur2.xdb @@ -0,0 +1,50 @@ + + + 15 + 15 + 9 + 3 + 5 + 5 + 11 + false + 22 + + 0 + 0 + 0 + 20 + 174 + 10 + 2 + true + CREATURE_CENTAUR + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 14 + + 0 + 0 + 0 + 0 + 0 + 0 + 101 + + true + + 2 + + + + -2 + CREATURE_CENTAUR + + + ABILITY_DEMON_RAGED + ABILITY_MANEURE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/Cyclop1.xdb b/GameMechanics/Creature/Creatures/Orcs/Cyclop1.xdb new file mode 100644 index 00000000..6d700bd4 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/Cyclop1.xdb @@ -0,0 +1,54 @@ + + + 40 + 40 + 0 + 40 + 60 + 6 + 9 + false + 360 + + 0 + 0 + 0 + 450 + 4790 + 10 + 7 + false + CREATURE_CYCLOP_UNTAMED + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 1 + + 0 + 0 + 1 + 0 + 0 + 0 + 2250 + + 0 + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_CYCLOP_UNTAMED + CREATURE_CYCLOP_BLOODEYED + + + ABILITY_DEMON_RAGED + ABILITY_SWALLOW_GOBLIN + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/Cyclop2.xdb b/GameMechanics/Creature/Creatures/Orcs/Cyclop2.xdb new file mode 100644 index 00000000..c272d48d --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/Cyclop2.xdb @@ -0,0 +1,53 @@ + + + 40 + 40 + 0 + 40 + 60 + 6 + 10 + false + 375 + + 0 + 0 + 0 + 540 + 5937 + 10 + 7 + false + CREATURE_CYCLOP + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 1 + + 0 + 0 + 2 + 0 + 0 + 0 + 2700 + + 0 + true + + 2 + + + + -2 + CREATURE_CYCLOP + + + ABILITY_DEMON_RAGED + ABILITY_SWALLOW_GOBLIN + ABILITY_GOBLIN_THROWER + ABILITY_CRUSHING_BLOW + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/Goblin1.xdb b/GameMechanics/Creature/Creatures/Orcs/Goblin1.xdb new file mode 100644 index 00000000..3607fc04 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/Goblin1.xdb @@ -0,0 +1,53 @@ + + + 10 + 10 + 0 + 1 + 1 + 5 + 10 + false + 7 + + 0 + 0 + 0 + 8 + 42 + 10 + 1 + false + CREATURE_GOBLIN_TRAPPER + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 25 + + 0 + 0 + 0 + 0 + 0 + 0 + 40 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_GOBLIN_TRAPPER + CREATURE_GOBLIN_DEFILER + + + ABILITY_DEMON_RAGED + ABILITY_COWARDICE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/Goblin2.xdb b/GameMechanics/Creature/Creatures/Orcs/Goblin2.xdb new file mode 100644 index 00000000..cb029888 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/Goblin2.xdb @@ -0,0 +1,51 @@ + + + 10 + 10 + 0 + 1 + 2 + 6 + 10 + false + 12 + + 0 + 0 + 0 + 10 + 69 + 10 + 1 + true + CREATURE_GOBLIN + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 25 + + 0 + 0 + 0 + 0 + 0 + 0 + 48 + + true + + 1 + + + + 0 + CREATURE_GOBLIN + + + ABILITY_DEMON_RAGED + ABILITY_COWARDICE + ABILITY_SET_SNARES + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/Orc1.xdb b/GameMechanics/Creature/Creatures/Orcs/Orc1.xdb new file mode 100644 index 00000000..0b526d48 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/Orc1.xdb @@ -0,0 +1,53 @@ + + + 20 + 20 + 0 + 2 + 5 + 6 + 10 + false + 27 + + 0 + 0 + 0 + 25 + 190 + 10 + 3 + false + CREATURE_ORC_SLAYER + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 11 + + 0 + 0 + 0 + 0 + 0 + 0 + 124 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_ORC_SLAYER + CREATURE_ORC_WARMONGER + + + ABILITY_DEMON_RAGED + ABILITY_ENRAGED + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/Orc2.xdb b/GameMechanics/Creature/Creatures/Orcs/Orc2.xdb new file mode 100644 index 00000000..e2a1b907 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/Orc2.xdb @@ -0,0 +1,51 @@ + + + 20 + 20 + 0 + 3 + 5 + 6 + 10 + false + 30 + + 0 + 0 + 0 + 30 + 264 + 10 + 3 + true + CREATURE_ORC_WARRIOR + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 11 + + 0 + 0 + 0 + 0 + 0 + 0 + 148 + + true + + 1 + + + + 0 + CREATURE_ORC_WARRIOR + + + ABILITY_DEMON_RAGED + ABILITY_ENRAGED + ABILITY_BRUTALITY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/OrcChief1.xdb b/GameMechanics/Creature/Creatures/Orcs/OrcChief1.xdb new file mode 100644 index 00000000..619cc643 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/OrcChief1.xdb @@ -0,0 +1,53 @@ + + + 30 + 30 + 0 + 7 + 10 + 6 + 11 + false + 67 + + 0 + 0 + 0 + 71 + 695 + 10 + 5 + false + CREATURE_ORCCHIEF_EXECUTIONER + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 356 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_ORCCHIEF_EXECUTIONER + CREATURE_ORCCHIEF_CHIEFTAIN + + + ABILITY_DEMON_RAGED + ABILITY_DOUBLE_ATTACK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/OrcChief2.xdb b/GameMechanics/Creature/Creatures/Orcs/OrcChief2.xdb new file mode 100644 index 00000000..d44a5694 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/OrcChief2.xdb @@ -0,0 +1,51 @@ + + + 30 + 30 + 0 + 8 + 12 + 7 + 11 + false + 75 + + 0 + 0 + 0 + 85 + 876 + 10 + 5 + true + CREATURE_ORCCHIEF_BUTCHER + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 427 + + true + + 1 + + + + 0 + CREATURE_ORCCHIEF_BUTCHER + + + ABILITY_DEMON_RAGED + ABILITY_CLEAVE + ABILITY_FRIGHT_AURA + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/Shaman1.xdb b/GameMechanics/Creature/Creatures/Orcs/Shaman1.xdb new file mode 100644 index 00000000..d7adc0b9 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/Shaman1.xdb @@ -0,0 +1,62 @@ + + + 25 + 25 + 0 + 6 + 9 + 6 + 11 + false + 60 + + + SPELL_SLOW + MASTERY_ADVANCED + + + SPELL_HASTE + MASTERY_ADVANCED + + + 15 + 0 + 0 + 62 + 492 + 10 + 4 + false + CREATURE_SHAMAN_WITCH + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 312 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_SHAMAN_WITCH + CREATURE_SHAMAN_HAG + + + ABILITY_DEMON_RAGED + ABILITY_SACRIFICE_GOBLIN + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/Shaman2.xdb b/GameMechanics/Creature/Creatures/Orcs/Shaman2.xdb new file mode 100644 index 00000000..d82cc24d --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/Shaman2.xdb @@ -0,0 +1,65 @@ + + + 25 + 25 + 0 + 7 + 9 + 5 + 12 + false + 67 + + + SPELL_CHAIN_LIGHTNING + MASTERY_EXPERT + + + SPELL_HASTE + MASTERY_EXPERT + + + SPELL_BLOODLUST + MASTERY_EXPERT + + + 25 + 0 + 0 + 75 + 680 + 10 + 4 + true + CREATURE_SHAMAN + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 5 + + 0 + 0 + 0 + 0 + 0 + 0 + 375 + + true + + 1 + + + + 0 + CREATURE_SHAMAN + + + ABILITY_DEMON_RAGED + ABILITY_SACRIFICE_GOBLIN + ABILITY_HEXING_ATTACK + ABILITY_PURGER + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/Wyvern1.xdb b/GameMechanics/Creature/Creatures/Orcs/Wyvern1.xdb new file mode 100644 index 00000000..c559eeab --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/Wyvern1.xdb @@ -0,0 +1,52 @@ + + + 35 + 35 + 0 + 20 + 25 + 7 + 10 + true + 187 + + 0 + 0 + 0 + 201 + 2208 + 10 + 6 + false + CREATURE_WYVERN_POISONOUS + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 0 + 0 + 0 + 1003 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_WYVERN_POISONOUS + CREATURE_WYVERN_PAOKAI + + + ABILITY_REGENERATION + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Orcs/Wyvern2.xdb b/GameMechanics/Creature/Creatures/Orcs/Wyvern2.xdb new file mode 100644 index 00000000..102beeb8 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Orcs/Wyvern2.xdb @@ -0,0 +1,51 @@ + + + 35 + 35 + 0 + 20 + 27 + 8 + 10 + true + 210 + + 0 + 0 + 0 + 241 + 2571 + 10 + 6 + true + CREATURE_WYVERN + TOWN_STRONGHOLD + + ELEMENT_EARTH + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 0 + 1 + 0 + 1204 + + true + + 2 + + + + 0 + CREATURE_WYVERN + + + ABILITY_REGENERATION + ABILITY_VENOM + ABILITY_IMMUNITY_TO_BERSERK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/3rd/AngerTreant.xdb b/GameMechanics/Creature/Creatures/Preserve/3rd/AngerTreant.xdb new file mode 100644 index 00000000..4c2664a4 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/3rd/AngerTreant.xdb @@ -0,0 +1,53 @@ + + + 35 + 35 + 0 + 12 + 18 + 6 + 7 + false + 315 + + 0 + 1 + 0 + 241 + 2332 + 10 + 6 + false + CREATURE_UNKNOWN + TOWN_PRESERVE + + ELEMENT_EARTH + ELEMENT_WATER + + 2 + + 0 + 0 + 0 + 0 + 0 + 1 + 1204 + + 0 + true + + 2 + + + + 0 + CREATURE_TREANT + + + ABILITY_ENRAGED + ABILITY_ENTANGLING_ROOTS + ABILITY_RAGE_OF_THE_FOREST + ABILITY_IMMUNITY_TO_SLOW + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/3rd/BladeSinger.xdb b/GameMechanics/Creature/Creatures/Preserve/3rd/BladeSinger.xdb new file mode 100644 index 00000000..83396ee9 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/3rd/BladeSinger.xdb @@ -0,0 +1,50 @@ + + + 15 + 15 + 0 + 4 + 6 + 6 + 13 + false + 30 + + 0 + 0 + 0 + 31 + 308 + 10 + 2 + false + CREATURE_UNKNOWN + TOWN_PRESERVE + + ELEMENT_FIRE + ELEMENT_AIR + + 9 + + 0 + 0 + 0 + 0 + 0 + 0 + 156 + + true + + 1 + + + + 0 + CREATURE_BLADE_JUGGLER + + + ABILITY_AGILITY + ABILITY_BRUTALITY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/3rd/Dryad.xdb b/GameMechanics/Creature/Creatures/Preserve/3rd/Dryad.xdb new file mode 100644 index 00000000..98f7c931 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/3rd/Dryad.xdb @@ -0,0 +1,51 @@ + + + 10 + 10 + 0 + 2 + 3 + 7 + 13 + true + 13 + + 0 + 0 + 0 + 20 + 164 + 10 + 1 + false + CREATURE_UNKNOWN + TOWN_PRESERVE + + ELEMENT_AIR + ELEMENT_WATER + + 12 + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + true + + 1 + + + + 0 + CREATURE_PIXIE + + + ABILITY_NO_ENEMY_RETALIATION + ABILITY_SPRAY_ATTACK + ABILITY_SYPHON_MANA + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/3rd/HighDruid.xdb b/GameMechanics/Creature/Creatures/Preserve/3rd/HighDruid.xdb new file mode 100644 index 00000000..4b209e4c --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/3rd/HighDruid.xdb @@ -0,0 +1,58 @@ + + + 25 + 25 + 10 + 12 + 15 + 5 + 9 + false + 63 + + + SPELL_STONE_SPIKES + MASTERY_EXPERT + + + SPELL_HASTE + MASTERY_EXPERT + + + 15 + 0 + 0 + 94 + 862 + 10 + 4 + false + CREATURE_UNKNOWN + TOWN_PRESERVE + + ELEMENT_WATER + ELEMENT_AIR + + 4 + + 0 + 0 + 0 + 0 + 0 + 0 + 469 + + true + + 1 + + + + -2 + CREATURE_DRUID + + + ABILITY_POWER_FEED + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/3rd/RainbowDragon.xdb b/GameMechanics/Creature/Creatures/Preserve/3rd/RainbowDragon.xdb new file mode 100644 index 00000000..638d1b76 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/3rd/RainbowDragon.xdb @@ -0,0 +1,50 @@ + + + 40 + 40 + 0 + 35 + 60 + 8 + 12 + true + 427 + + 0 + 0 + 0 + 540 + 6025 + 10 + 7 + false + CREATURE_UNKNOWN + TOWN_PRESERVE + + ELEMENT_EARTH + ELEMENT_FIRE + + 1 + + 0 + 0 + 0 + 2 + 0 + 0 + 2700 + + true + + 2 + + + + 0 + CREATURE_GREEN_DRAGON + + + ABILITY_IMMUNITY_TO_WATER + ABILITY_RAINBOW_BREATH + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/3rd/SharpShooter.xdb b/GameMechanics/Creature/Creatures/Preserve/3rd/SharpShooter.xdb new file mode 100644 index 00000000..ea99fbac --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/3rd/SharpShooter.xdb @@ -0,0 +1,50 @@ + + + 20 + 20 + 9 + 7 + 8 + 5 + 10 + false + 30 + + 0 + 0 + 0 + 47 + 437 + 10 + 3 + false + CREATURE_UNKNOWN + TOWN_PRESERVE + + ELEMENT_AIR + ELEMENT_WATER + + 7 + + 0 + 0 + 0 + 0 + 0 + 0 + 233 + + true + + 1 + + + + -1 + CREATURE_WOOD_ELF + + + ABILITY_NO_RANGE_PENALTY + ABILITY_PIERCING_ARROW + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/3rd/WhiteUnicorn.xdb b/GameMechanics/Creature/Creatures/Preserve/3rd/WhiteUnicorn.xdb new file mode 100644 index 00000000..63926f0f --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/3rd/WhiteUnicorn.xdb @@ -0,0 +1,51 @@ + + + 30 + 30 + 0 + 11 + 22 + 7 + 11 + false + 135 + + 0 + 0 + 0 + 142 + 1457 + 10 + 5 + false + CREATURE_UNKNOWN + TOWN_PRESERVE + + ELEMENT_FIRE + ELEMENT_EARTH + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + true + + 2 + + + + 0 + CREATURE_UNICORN + + + ABILITY_BOND_OF_LIGHT + ABILITY_BLINDING_ATTACK + ABILITY_JOUSTING + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/Blade_Juggler.xdb b/GameMechanics/Creature/Creatures/Preserve/Blade_Juggler.xdb new file mode 100644 index 00000000..33fdde20 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/Blade_Juggler.xdb @@ -0,0 +1,50 @@ + + + 15 + 15 + 0 + 2 + 5 + 6 + 11 + false + 24 + + 0 + 0 + 0 + 26 + 191 + 10 + 2 + false + CREATURE_WAR_DANCER + TOWN_PRESERVE + + ELEMENT_FIRE + ELEMENT_NONE + + 9 + + 0 + 0 + 0 + 0 + 0 + 0 + 130 + + true + + 1 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_WAR_DANCER + CREATURE_BLADE_SINGER + + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/Druid.xdb b/GameMechanics/Creature/Creatures/Preserve/Druid.xdb new file mode 100644 index 00000000..9027fffe --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/Druid.xdb @@ -0,0 +1,59 @@ + + + 25 + 25 + 7 + 7 + 12 + 5 + 10 + false + 63 + + + SPELL_LIGHTNING_BOLT + MASTERY_BASIC + + + SPELL_STONESKIN + MASTERY_ADVANCED + + + 19 + 0 + 0 + 78 + 635 + 15 + 4 + false + CREATURE_DRUID_ELDER + TOWN_PRESERVE + + ELEMENT_WATER + ELEMENT_NONE + + 4 + + 0 + 0 + 0 + 0 + 0 + 0 + 391 + + true + + 1 + + + + -2 + CREATURE_UNKNOWN + + CREATURE_DRUID_ELDER + CREATURE_HIGH_DRUID + + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/Druid_Elder.xdb b/GameMechanics/Creature/Creatures/Preserve/Druid_Elder.xdb new file mode 100644 index 00000000..3e4272a3 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/Druid_Elder.xdb @@ -0,0 +1,62 @@ + + + 25 + 25 + 10 + 10 + 15 + 4 + 10 + false + 60 + + + SPELL_LIGHTNING_BOLT + MASTERY_EXPERT + + + SPELL_ANTI_MAGIC + MASTERY_EXPERT + + + SPELL_BLOODLUST + MASTERY_EXPERT + + + 19 + 0 + 0 + 94 + 846 + 15 + 4 + true + CREATURE_DRUID + TOWN_PRESERVE + + ELEMENT_WATER + ELEMENT_AIR + + 4 + + 0 + 0 + 0 + 0 + 0 + 0 + 469 + + true + + 1 + + + + -2 + CREATURE_DRUID + + + ABILITY_MANA_FEED + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/Gold_Dragon.xdb b/GameMechanics/Creature/Creatures/Preserve/Gold_Dragon.xdb new file mode 100644 index 00000000..2931988d --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/Gold_Dragon.xdb @@ -0,0 +1,216 @@ + + + 40 + 40 + 0 + 35 + 60 + 9 + 13 + true + 397 + + 0 + 0 + 0 + 540 + 6028 + 10 + 7 + true + CREATURE_GREEN_DRAGON + TOWN_PRESERVE + + ELEMENT_EARTH + ELEMENT_FIRE + + 1 + + 0 + 0 + 0 + 2 + 0 + 0 + 2700 + + 0 + true + + 2 + + + + + + + 1 + 0 + + + 2 + 0 + + + 0 + + + + + 1 + 1 + + + 2 + 2 + + + 0 + + + + + 0 + 1 + + + 0 + 2 + + + 0 + + + + + -1 + 1 + + + -1 + 2 + + + 0 + + + + + -2 + 1 + + + -3 + 2 + + + 0 + + + + + -2 + 0 + + + -3 + 0 + + + 0 + + + + + -2 + -1 + + + -3 + -1 + + + 0 + + + + + -2 + -2 + + + -3 + -3 + + + 0 + + + + + -1 + -2 + + + -1 + -3 + + + 0 + + + + + 0 + -2 + + + 0 + -3 + + + 0 + + + + + 1 + -2 + + + 2 + -3 + + + 0 + + + + + 1 + -1 + + + 2 + -1 + + + 0 + + + true + 1 + 1 + true + + + + + 0 + CREATURE_GREEN_DRAGON + + + ABILITY_IMMUNITY_TO_EARTH + ABILITY_FIRE_BREATH + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/Grand_Elf.xdb b/GameMechanics/Creature/Creatures/Preserve/Grand_Elf.xdb new file mode 100644 index 00000000..3a659e0e --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/Grand_Elf.xdb @@ -0,0 +1,50 @@ + + + 20 + 20 + 15 + 5 + 7 + 5 + 11 + false + 25 + + 0 + 0 + 0 + 47 + 433 + 10 + 3 + true + CREATURE_WOOD_ELF + TOWN_PRESERVE + + ELEMENT_AIR + ELEMENT_WATER + + 7 + + 0 + 0 + 0 + 0 + 0 + 0 + 233 + + true + + 1 + + + + -2 + CREATURE_WOOD_ELF + + + ABILITY_ELVES_DOUBLE_SHOT + ABILITY_WARDING_ARROWS + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/Green_Dragon.xdb b/GameMechanics/Creature/Creatures/Preserve/Green_Dragon.xdb new file mode 100644 index 00000000..af9e00a0 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/Green_Dragon.xdb @@ -0,0 +1,217 @@ + + + 40 + 40 + 0 + 30 + 55 + 9 + 12 + true + 375 + + 0 + 0 + 0 + 450 + 4942 + 10 + 7 + false + CREATURE_GOLD_DRAGON + TOWN_PRESERVE + + ELEMENT_EARTH + ELEMENT_NONE + + 1 + + 0 + 0 + 0 + 1 + 0 + 0 + 2250 + + true + + 2 + + + + + + + 1 + 0 + + + 2 + 0 + + + 0 + + + + + 1 + 1 + + + 2 + 2 + + + 0 + + + + + 0 + 1 + + + 0 + 2 + + + 0 + + + + + -1 + 1 + + + -1 + 2 + + + 0 + + + + + -2 + 1 + + + -3 + 2 + + + 0 + + + + + -2 + 0 + + + -3 + 0 + + + 0 + + + + + -2 + -1 + + + -3 + -1 + + + 0 + + + + + -2 + -2 + + + -3 + -3 + + + 0 + + + + + -1 + -2 + + + -1 + -3 + + + 0 + + + + + 0 + -2 + + + 0 + -3 + + + 0 + + + + + 1 + -2 + + + 2 + -3 + + + 0 + + + + + 1 + -1 + + + 2 + -1 + + + 0 + + + true + 1 + 1 + true + + + + + 0 + CREATURE_UNKNOWN + + CREATURE_GOLD_DRAGON + CREATURE_RAINBOW_DRAGON + + + ABILITY_FIRE_BREATH + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/Pixie.xdb b/GameMechanics/Creature/Creatures/Preserve/Pixie.xdb new file mode 100644 index 00000000..56678433 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/Pixie.xdb @@ -0,0 +1,198 @@ + + + 10 + 10 + 0 + 1 + 2 + 7 + 12 + true + 10 + + 0 + 0 + 0 + 17 + 100 + 10 + 1 + false + CREATURE_SPRITE + TOWN_PRESERVE + + ELEMENT_AIR + ELEMENT_NONE + + 12 + + 0 + 0 + 0 + 0 + 0 + 0 + 83 + + true + + 1 + + + + + + + 1 + -1 + + + 1 + 0 + + + 1 + 1 + + + 0 + + + + + 1 + 0 + + + 1 + 1 + + + 0 + 1 + + + 45 + + + + + 1 + 1 + + + 0 + 1 + + + -1 + 1 + + + 90 + + + + + 0 + 1 + + + -1 + 1 + + + -1 + 0 + + + 135 + + + + + -1 + 1 + + + -1 + 0 + + + -1 + -1 + + + 180 + + + + + -1 + 0 + + + -1 + -1 + + + 0 + -1 + + + 225 + + + + + -1 + -1 + + + 0 + -1 + + + 1 + -1 + + + 270 + + + + + 0 + -1 + + + 1 + -1 + + + 1 + 0 + + + 315 + + + false + 1 + 1 + false + + + + + 0 + CREATURE_UNKNOWN + + CREATURE_SPRITE + CREATURE_DRYAD + + + ABILITY_NO_ENEMY_RETALIATION + ABILITY_SPRAY_ATTACK + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/Sprite.xdb b/GameMechanics/Creature/Creatures/Preserve/Sprite.xdb new file mode 100644 index 00000000..2843f8ae --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/Sprite.xdb @@ -0,0 +1,201 @@ + + + 10 + 10 + 0 + 2 + 3 + 7 + 12 + true + 12 + + + SPELL_MASS_BLESS + MASTERY_EXPERT + + + 10 + 1 + 0 + 20 + 159 + 15 + 1 + true + CREATURE_PIXIE + TOWN_PRESERVE + + ELEMENT_AIR + ELEMENT_WATER + + 12 + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + true + + 1 + + + + + + + 1 + -1 + + + 1 + 0 + + + 1 + 1 + + + 0 + + + + + 1 + 0 + + + 1 + 1 + + + 0 + 1 + + + 45 + + + + + 1 + 1 + + + 0 + 1 + + + -1 + 1 + + + 90 + + + + + 0 + 1 + + + -1 + 1 + + + -1 + 0 + + + 135 + + + + + -1 + 1 + + + -1 + 0 + + + -1 + -1 + + + 180 + + + + + -1 + 0 + + + -1 + -1 + + + 0 + -1 + + + 225 + + + + + -1 + -1 + + + 0 + -1 + + + 1 + -1 + + + 270 + + + + + 0 + -1 + + + 1 + -1 + + + 1 + 0 + + + 315 + + + false + 1 + 1 + false + + + + + 0 + CREATURE_PIXIE + + + ABILITY_NO_ENEMY_RETALIATION + ABILITY_SPRAY_ATTACK + ABILITY_TREEANT_UNION + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/Treant.xdb b/GameMechanics/Creature/Creatures/Preserve/Treant.xdb new file mode 100644 index 00000000..19d8aa66 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/Treant.xdb @@ -0,0 +1,53 @@ + + + 35 + 35 + 0 + 10 + 18 + 6 + 7 + false + 300 + + 0 + 0 + 0 + 201 + 1917 + 10 + 6 + false + CREATURE_TREANT_GUARDIAN + TOWN_PRESERVE + + ELEMENT_EARTH + ELEMENT_NONE + + 2 + + 0 + 0 + 0 + 0 + 0 + 0 + 1003 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_TREANT_GUARDIAN + CREATURE_ANGER_TREANT + + + ABILITY_ENRAGED + ABILITY_ENTANGLING_ROOTS + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/Treant_Guardian.xdb b/GameMechanics/Creature/Creatures/Preserve/Treant_Guardian.xdb new file mode 100644 index 00000000..ef353a90 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/Treant_Guardian.xdb @@ -0,0 +1,52 @@ + + + 35 + 35 + 0 + 12 + 18 + 5 + 8 + false + 315 + + 0 + 0 + 0 + 241 + 2293 + 10 + 6 + true + CREATURE_TREANT + TOWN_PRESERVE + + ELEMENT_EARTH + ELEMENT_WATER + + 2 + + 0 + 0 + 0 + 0 + 0 + 1 + 1204 + + true + + 2 + + + + 0 + CREATURE_TREANT + + + ABILITY_ENRAGED + ABILITY_ENTANGLING_ROOTS + ABILITY_TAKE_ROOTS + ABILITY_BATTLE_FRENZY + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/Unicorn.xdb b/GameMechanics/Creature/Creatures/Preserve/Unicorn.xdb new file mode 100644 index 00000000..8eca5eb0 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/Unicorn.xdb @@ -0,0 +1,52 @@ + + + 30 + 30 + 0 + 10 + 20 + 8 + 12 + false + 112 + + 0 + 0 + 0 + 119 + 1072 + 10 + 5 + false + CREATURE_WAR_UNICORN + TOWN_PRESERVE + + ELEMENT_FIRE + ELEMENT_NONE + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 593 + + true + + 2 + + + + 0 + CREATURE_UNKNOWN + + CREATURE_WAR_UNICORN + CREATURE_WHITE_UNICORN + + + ABILITY_AURA_OF_MAGIC_RESISTANCE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/War_Dancer.xdb b/GameMechanics/Creature/Creatures/Preserve/War_Dancer.xdb new file mode 100644 index 00000000..2f218a27 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/War_Dancer.xdb @@ -0,0 +1,95 @@ + + + 15 + 15 + 0 + 3 + 6 + 7 + 13 + false + 27 + + 0 + 0 + 0 + 31 + 311 + 10 + 2 + true + CREATURE_BLADE_JUGGLER + TOWN_PRESERVE + + ELEMENT_FIRE + ELEMENT_AIR + + 9 + + 0 + 0 + 0 + 0 + 0 + 0 + 156 + + true + + 1 + + + + + + + 1 + 0 + + + 1 + 1 + + + 0 + 1 + + + -1 + 1 + + + -1 + 0 + + + -1 + -1 + + + 0 + -1 + + + 1 + -1 + + + 0 + + + true + 1 + 0.5 + false + + + + + 0 + CREATURE_BLADE_JUGGLER + + + ABILITY_WAR_DANCE + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/War_Unicorn.xdb b/GameMechanics/Creature/Creatures/Preserve/War_Unicorn.xdb new file mode 100644 index 00000000..b060fea4 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/War_Unicorn.xdb @@ -0,0 +1,51 @@ + + + 30 + 30 + 0 + 10 + 20 + 8 + 12 + false + 150 + + 0 + 0 + 0 + 142 + 1441 + 10 + 5 + true + CREATURE_UNICORN + TOWN_PRESERVE + + ELEMENT_FIRE + ELEMENT_EARTH + + 3 + + 0 + 0 + 0 + 0 + 0 + 0 + 711 + + true + + 2 + + + + 0 + CREATURE_UNICORN + + + ABILITY_AURA_OF_MAGIC_RESISTANCE + ABILITY_BLINDING_ATTACK + ABILITY_IMMUNITY_TO_BLIND + + \ No newline at end of file diff --git a/GameMechanics/Creature/Creatures/Preserve/Wood_Elf.xdb b/GameMechanics/Creature/Creatures/Preserve/Wood_Elf.xdb new file mode 100644 index 00000000..91459620 --- /dev/null +++ b/GameMechanics/Creature/Creatures/Preserve/Wood_Elf.xdb @@ -0,0 +1,52 @@ + + + 20 + 20 + 15 + 4 + 7 + 5 + 10 + false + 21 + + 0 + 0 + 0 + 39 + 309 + 10 + 3 + false + CREATURE_GRAND_ELF + TOWN_PRESERVE + + ELEMENT_AIR + ELEMENT_NONE + + 7 + + 0 + 0 + 0 + 0 + 0 + 0 + 194 + + true + + 1 + + + + -2 + CREATURE_UNKNOWN + + CREATURE_GRAND_ELF + CREATURE_SHARP_SHOOTER + + + ABILITY_ELVES_DOUBLE_SHOT + + \ No newline at end of file diff --git a/GameMechanics/RPGStats/AvatarOfDeath.xdb b/GameMechanics/RPGStats/AvatarOfDeath.xdb new file mode 100644 index 00000000..88789584 --- /dev/null +++ b/GameMechanics/RPGStats/AvatarOfDeath.xdb @@ -0,0 +1,70 @@ + + + CREATURE_BLACK_KNIGHT + 0 + 0 + 10 + 0 + 0 + 0 + 10 + 0 + 0 + 10 + 0 + 1 + 0 + 0 + 1 + 0 + 10 + 0 + 0.5 + 6 + 0 + 0 + + + + 0 + + ABILITY_UNDEAD + ABILITY_ENCHANTED_OBSIDIAN + ABILITY_NO_ENEMY_RETALIATION + ABILITY_INCORPOREAL + ABILITY_FRIGHT_AURA + ABILITY_WEAKENING_STRIKE + + + + 10 + + ABILITY_FRIGHTFUL_PRESENCE + + + + 20 + + ABILITY_HEXING_ATTACK + + + + 30 + + ABILITY_DOUBLE_ATTACK + + + + 40 + + ABILITY_VORPAL_SWORD + + + + 50 + + ABILITY_WEAKENING_AURA + + + + diff --git a/GameMechanics/RPGStats/ConjuredPhoenix.xdb b/GameMechanics/RPGStats/ConjuredPhoenix.xdb new file mode 100644 index 00000000..4dacb7a4 --- /dev/null +++ b/GameMechanics/RPGStats/ConjuredPhoenix.xdb @@ -0,0 +1,39 @@ + + + CREATURE_PHOENIX + 33 + 0 + 0 + 0 + 0 + 10 + 0 + 0 + 10 + 0 + 42 + 1 + 0 + 42 + 0 + 0 + 0 + 0 + 1 + 33 + 0 + 0 + + + + 0 + + ABILITY_ELEMENTAL + ABILITY_ENCHANTED_OBSIDIAN + ABILITY_NO_ENEMY_RETALIATION + ABILITY_INCORPOREAL + ABILITY_FRIGHTFUL_PRESENCE + + + + diff --git a/GameMechanics/RPGStats/DefaultStats.xdb b/GameMechanics/RPGStats/DefaultStats.xdb new file mode 100644 index 00000000..8b053a9f --- /dev/null +++ b/GameMechanics/RPGStats/DefaultStats.xdb @@ -0,0 +1,12000 @@ + + + 10 + 10 + 20000 + 100000 + 100 + + 3000 + 15 + 3 + 8 + 10 + 600 + 600 + 800 + 500 + 300 + 400 + 10 + + 2 + 3 + 0.3 + 0.05 + 2 + 0.002 + + + + 30 + 30 + 15 + 15 + 15 + 15 + 30000 + + + 20 + 20 + 10 + 10 + 10 + 10 + 20000 + + + 20 + 20 + 10 + 10 + 10 + 10 + 20000 + + + 10 + 10 + 5 + 5 + 5 + 5 + 10000 + + + + + 20 + 20 + 10 + 10 + 10 + 10 + 20001 + + + 20 + 20 + 10 + 10 + 10 + 10 + 20001 + + + 30 + 30 + 15 + 15 + 15 + 15 + 30001 + + + 30 + 30 + 15 + 15 + 15 + 15 + 30001 + + + 4 + + + 1.0 + 1.2 + 1.3 + 1.4 + + + 1 + 0.83 + 0.77 + 0.71 + + + 1.05 + 1.09 + 1.1 + 1.11 + + + + + 1 + 1.1 + 1.2 + 1.3 + + + 1 + 0.91 + 0.83 + 0.77 + + + 1.11 + 1.12 + 1.13 + 1.14 + + + + 6 + 12 + 1.2 + 250 + 1 + + + 2 + 2 + 10 + 2 + 2 + 2 + 10 + 1 + 10 + 4 + 1 + + + 12 + 8 + + + 8 + 6 + + CREATURE_DEFENDER + 5 + + 6 + 6 + 4 + 6 + + + + + SPELL_SUMMON_BOAT + + 0 + 0 + 1 + 1 + 1 + 1 + 500 + + 0 + + + SPELL_SUMMON_CREATURES + + 0 + 0 + 1 + 1 + 1 + 1 + 500 + + 10 + + + SPELL_DIMENSION_DOOR + + 5 + 5 + 2 + 2 + 2 + 2 + 1000 + + 20 + + + SPELL_TOWN_PORTAL + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 20 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 6000 + + 0.3 + 3 + 0.3 + + + 0.02 + 10 + 0.03 + 0 + 20 + 40 + 60 + + 2 + 1.5 + 1 + + false + + + 5 + 0.05 + 2.5 + 1.6 + 1 + + 1 + 1 + 2 + + + 1.5 + 20 + 2 + 0.8 + 5 + 20 + 0 + 0.05 + 0 + 0.05 + true + 100000 + 1.5 + + + 7 + 0.7 + 0.3 + 3 + 2 + 2 + 12 + 2 + 7 + 7 + 1.5 + 2.5 + 1 + 2 + false + 0 + + + 0.3 + 14 + 1.5 + 0.2 + 1.5 + 0.5 + 0.75 + 2 + 4 + 25 + CREATURE_TREANT + 5 + false + 3 + 2 + + + 5 + 2 + 4 + 1.5 + 0.1 + 10 + 10 + 20 + 0.02 + 0.4 + 10 + + + 2 + 3 + 10 + 2 + 80 + 120 + 0.08 + + 4 + 3 + 1.5 + 1 + 0 + + + 0.1 + 1 + 2 + 0.4 + 0.3 + 1.5 + 10 + 1.5 + 10 + 10 + 10 + + 6 + 1 + 20 + 0 + 0.2 + 2 + 0 + true + 50 + 5 + 5 + 15 + 2 + 0 + 0 + 6 + 2.5 + 15 + 1.2 + 0.5 + + + 0.5 + 4 + 10 + + + SPELL_SLOW + MASTERY_ADVANCED + + + SPELL_CURSE + MASTERY_ADVANCED + + + SPELL_WEAKNESS + MASTERY_ADVANCED + + + SPELL_SORROW + MASTERY_BASIC + + + SPELL_BLIND + MASTERY_BASIC + + + 0 + + + + 200 + 1000 + 2000 + 0 + 40 + 100 + 100 + 30 + 0 + 50 + 0 + 50 + 0 + 50 + 10 + 10 + 0 + 0 + -30 + 0 + -100 + 50 + -10 + -100 + 1 + 0 + -50 + 0 + -30 + -100 + -30 + -20 + 1.2 + 1000 + 0 + 150 + 150 + 10 + 25 + 50 + + 10 + 1 + 2 + + + + CREATURE_GOBLIN + + + DEMON_RAGE_BONUS_HEALTH + 4 + 0 + + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_WOUND + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_NO_ENEMY_RETALIATION + + + + DEMON_RAGE_BONUS_DISABLE_ABILITY + 0 + 0 + + + ABILITY_COWARDICE + + + + + + CREATURE_GOBLIN_TRAPPER + + + DEMON_RAGE_BONUS_HEALTH + 4 + 0 + + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_HEXING_ATTACK + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_NO_ENEMY_RETALIATION + + + + DEMON_RAGE_BONUS_DISABLE_ABILITY + 0 + 0 + + + ABILITY_COWARDICE + + + + + + CREATURE_GOBLIN_DEFILER + + + DEMON_RAGE_BONUS_HEALTH + 4 + 0 + + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_AURA_OF_MAGIC_RESISTANCE + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_NO_ENEMY_RETALIATION + + + + DEMON_RAGE_BONUS_DISABLE_ABILITY + 0 + 0 + + + ABILITY_COWARDICE + + + + + + CREATURE_CENTAUR + + + DEMON_RAGE_BONUS_ATTACK + 6 + 0 + + + + + + + DEMON_RAGE_BONUS_INITIATIVE + 2 + 0 + + + + + + + DEMON_RAGE_BONUS_ACCURACY + 1 + 0 + + + + + + + CREATURE_CENTAUR_NOMAD + + + DEMON_RAGE_BONUS_ATTACK + 6 + 0 + + + + + + + DEMON_RAGE_BONUS_INITIATIVE + 3 + 0 + + + + + + + DEMON_RAGE_BONUS_ACCURACY + 1 + 0 + + + + + + + CREATURE_CENTAUR_MARADEUR + + + DEMON_RAGE_BONUS_ATTACK + 6 + 0 + + + + + + + DEMON_RAGE_BONUS_INITIATIVE + 3 + 0 + + + + + + + DEMON_RAGE_BONUS_ACCURACY + 1 + 0 + + + + + + + CREATURE_ORC_WARRIOR + + + DEMON_RAGE_BONUS_SPEED + 1 + 0 + + + + + DEMON_RAGE_BONUS_HEALTH + 4 + 0 + + + + + + + DEMON_RAGE_BONUS_DAMAGE + 3 + 0 + + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_BASH + + + + + + CREATURE_ORC_SLAYER + + + DEMON_RAGE_BONUS_INITIATIVE + 1 + 0 + + + + + DEMON_RAGE_BONUS_HEALTH + 4 + 0 + + + + + + + DEMON_RAGE_BONUS_DAMAGE + 3 + 0 + + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_BASH + + + + + + CREATURE_ORC_WARMONGER + + + DEMON_RAGE_BONUS_INITIATIVE + 1 + 0 + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_UNLIMITED_RETALIATION + + + + + + DEMON_RAGE_BONUS_DAMAGE + 3 + 0 + + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_BASH + + + + + + CREATURE_SHAMAN + + + DEMON_RAGE_BONUS_INITIATIVE + 1 + 0 + + + + + DEMON_RAGE_BONUS_DEFENCE + 2 + 0 + + + + + + + DEMON_RAGE_BONUS_HEALTH + 16 + 0 + + + + + + + DEMON_RAGE_BONUS_DEFENCE + 10 + 0 + + + + + + + CREATURE_SHAMAN_WITCH + + + DEMON_RAGE_BONUS_SPELLPOWER_MULT + 0 + 1.2 + + + + + DEMON_RAGE_BONUS_INITIATIVE + 1 + 0 + + + + + + + DEMON_RAGE_BONUS_SPELLPOWER_MULT + 0 + 1.5 + + + + + DEMON_RAGE_BONUS_HEALTH + 24 + 0 + + + + + + + DEMON_RAGE_BONUS_SPELLPOWER_MULT + 0 + 3 + + + + + + + CREATURE_SHAMAN_HAG + + + DEMON_RAGE_BONUS_INITIATIVE + 2 + 0 + + + + + + + DEMON_RAGE_BONUS_SPELLPOWER_MULT + 0 + 1.5 + + + + + DEMON_RAGE_BONUS_HEALTH + 20 + 0 + + + + + + + DEMON_RAGE_BONUS_SPELLPOWER_MULT + 0 + 3 + + + + + + + CREATURE_ORCCHIEF_BUTCHER + + + DEMON_RAGE_BONUS_SPEED + 1 + 0 + + + + + DEMON_RAGE_BONUS_INITIATIVE + 1 + 0 + + + + + + + DEMON_RAGE_BONUS_HEALTH + 30 + 0 + + + + + + + DEMON_RAGE_BONUS_ATTACK + 8 + 0 + + + + + + + CREATURE_ORCCHIEF_EXECUTIONER + + + DEMON_RAGE_BONUS_SPEED + 1 + 0 + + + + + DEMON_RAGE_BONUS_INITIATIVE + 1 + 0 + + + + + + + DEMON_RAGE_BONUS_HEALTH + 30 + 0 + + + + + + + DEMON_RAGE_BONUS_ATTACK + 8 + 0 + + + + + + + CREATURE_ORCCHIEF_CHIEFTAIN + + + DEMON_RAGE_BONUS_SPEED + 1 + 0 + + + + + DEMON_RAGE_BONUS_INITIATIVE + 1 + 0 + + + + + + + DEMON_RAGE_BONUS_HEALTH + 30 + 0 + + + + + + + DEMON_RAGE_BONUS_ATTACK + 8 + 0 + + + + + + + CREATURE_CYCLOP + + + DEMON_RAGE_BONUS_DAMAGE + 5 + 0 + + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_FRIGHT_AURA + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_FEAR + ABILITY_FRIGHT_AURA + + + + + + CREATURE_CYCLOP_UNTAMED + + + DEMON_RAGE_BONUS_DAMAGE + 5 + 0 + + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_FRIGHT_AURA + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_FEAR + ABILITY_FRIGHT_AURA + + + + + + CREATURE_CYCLOP_BLOODEYED + + + DEMON_RAGE_BONUS_DAMAGE + 5 + 0 + + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_FRIGHT_AURA + + + + + + DEMON_RAGE_BONUS_ABILITY + 0 + 0 + + + ABILITY_FEAR + ABILITY_FRIGHT_AURA + + + + + + + 0 + 0 + 0 + 0 + 0 + + 2400 + + 3 + 6 + 4 + 2 + 1 + 10 + 2 + 3 + 3 + 1 + 30 + 1 + 2 + 0.2 + 10 + 2 + 1 + 1 + 60 + 0.5 + 2 + 3 + 2 + 10 + + + 0.3 + + 0.5 + 1.0 + + + + + + 3 + TT_DIRT + + 1.7 + 2.2 + + 0.2 + 0.4 + 0.6 + 2.0 + 7 + 20 + 2.2 + 0 + 0 + + 1 + 3 + 1 + + + 1 + 0.2 + 1.7 + 0.5 + 0.04 + + + + + 0.20 + 0.20 + 0.20 + 0.30 + + 0.3 + 1 + 1 + 0.07 + 1 + 0 + 0.2 + 0.75 + 0.05 + 0.007 + + + 0 + 20 + 2 + + 3 + 100 + + + + 0 + 10 + 0 + 5 + 10 + 5 + 300 + 2 + 100 + 300 + 12 + 20 + + + CREATURE_ACIDIC_HYDRA + CREATURE_LICH_MASTER + + + CREATURE_ANGEL + CREATURE_BONE_DRAGON + + + CREATURE_ANGER_TREANT + CREATURE_BANSHEE + + + CREATURE_ARCH_DEMON + CREATURE_HORROR_DRAGON + + + CREATURE_ARCH_MAGI + CREATURE_VAMPIRE_LORD + + + CREATURE_ARCHANGEL + CREATURE_SHADOW_DRAGON + + + CREATURE_ARCHDEVIL + CREATURE_SHADOW_DRAGON + + + CREATURE_ARCHER + CREATURE_WALKING_DEAD + + + CREATURE_ASSASSIN + CREATURE_SKELETON_ARCHER + + + CREATURE_AXE_FIGHTER + CREATURE_WALKING_DEAD + + + CREATURE_AXE_THROWER + CREATURE_ZOMBIE + + + CREATURE_BALOR + CREATURE_WRAITH + + + CREATURE_BATTLE_GRIFFIN + CREATURE_NOSFERATU + + + CREATURE_BATTLE_RAGER + CREATURE_NOSFERATU + + + CREATURE_BEAR_RIDER + CREATURE_MANES + + + CREATURE_BERSERKER + CREATURE_VAMPIRE_LORD + + + CREATURE_BLACK_DRAGON + CREATURE_SHADOW_DRAGON + + + CREATURE_BLACK_RIDER + CREATURE_NOSFERATU + + + CREATURE_BLACKBEAR_RIDER + CREATURE_GHOST + + + CREATURE_BLADE_JUGGLER + CREATURE_WALKING_DEAD + + + CREATURE_BLADE_SINGER + CREATURE_DISEASE_ZOMBIE + + + CREATURE_BLOOD_WITCH + CREATURE_ZOMBIE + + + CREATURE_BLOOD_WITCH_2 + CREATURE_DISEASE_ZOMBIE + + + CREATURE_BROWLER + CREATURE_VAMPIRE + + + CREATURE_CAVALIER + CREATURE_WIGHT + + + CREATURE_CENTAUR + CREATURE_WALKING_DEAD + + + CREATURE_CENTAUR_MARADEUR + CREATURE_DISEASE_ZOMBIE + + + CREATURE_CENTAUR_NOMAD + CREATURE_ZOMBIE + + + CREATURE_CERBERI + CREATURE_GHOST + + + CREATURE_CHAMPION + CREATURE_BANSHEE + + + CREATURE_CHAOS_HYDRA + CREATURE_DEMILICH + + + CREATURE_CLERIC + CREATURE_DEMILICH + + + CREATURE_COMBAT_MAGE + CREATURE_NOSFERATU + + + CREATURE_CYCLOP + CREATURE_BONE_DRAGON + + + CREATURE_CYCLOP_BLOODEYED + CREATURE_HORROR_DRAGON + + + CREATURE_CYCLOP_UNTAMED + CREATURE_SHADOW_DRAGON + + + CREATURE_DEEP_DRAGON + CREATURE_BONE_DRAGON + + + CREATURE_DEFENDER + CREATURE_SKELETON + + + CREATURE_DEMON + CREATURE_WALKING_DEAD + + + CREATURE_DEVIL + CREATURE_BONE_DRAGON + + + CREATURE_DJINN_VIZIER + CREATURE_LICH_MASTER + + + CREATURE_DRUID + CREATURE_VAMPIRE + + + CREATURE_DRUID_ELDER + CREATURE_VAMPIRE_LORD + + + CREATURE_DRYAD + CREATURE_SKELETON_WARRIOR + + + CREATURE_FAMILIAR + CREATURE_SKELETON + + + CREATURE_FIREBREATHER_HOUND + CREATURE_POLTERGEIST + + + CREATURE_FLAME_KEEPER + CREATURE_LICH_MASTER + + + CREATURE_FLAME_MAGE + CREATURE_DEMILICH + + + CREATURE_FOOTMAN + CREATURE_MANES + + + CREATURE_FRIGHTFUL_NIGHTMARE + CREATURE_DEMILICH + + + CREATURE_GENIE + CREATURE_LICH + + + CREATURE_GIANT + CREATURE_BONE_DRAGON + + + CREATURE_GOBLIN + CREATURE_SKELETON + + + CREATURE_GOBLIN_DEFILER + CREATURE_SKELETON_WARRIOR + + + CREATURE_GOBLIN_TRAPPER + CREATURE_SKELETON_ARCHER + + + CREATURE_GOLD_DRAGON + CREATURE_SHADOW_DRAGON + + + CREATURE_GRAND_ELF + CREATURE_GHOST + + + CREATURE_GREEN_DRAGON + CREATURE_BONE_DRAGON + + + CREATURE_GREMLIN + CREATURE_SKELETON + + + CREATURE_GREMLIN_SABOTEUR + CREATURE_SKELETON_WARRIOR + + + CREATURE_GRIFFIN + CREATURE_VAMPIRE + + + CREATURE_HARPOONER + CREATURE_DISEASE_ZOMBIE + + + CREATURE_HELL_HOUND + CREATURE_MANES + + + CREATURE_HELLMARE + CREATURE_LICH_MASTER + + + CREATURE_HIGH_DRUID + CREATURE_NOSFERATU + + + CREATURE_HORNED_DEMON + CREATURE_ZOMBIE + + + CREATURE_HORNED_LEAPER + CREATURE_DISEASE_ZOMBIE + + + CREATURE_HYDRA + CREATURE_LICH + + + CREATURE_IMP + CREATURE_SKELETON_ARCHER + + + CREATURE_INFERNAL_SUCCUBUS + CREATURE_VAMPIRE_LORD + + + CREATURE_LANDLORD + CREATURE_SKELETON_WARRIOR + + + CREATURE_LONGBOWMAN + CREATURE_DISEASE_ZOMBIE + + + CREATURE_MAGI + CREATURE_VAMPIRE + + + CREATURE_MANTICORE + CREATURE_WIGHT + + + CREATURE_MARKSMAN + CREATURE_ZOMBIE + + + CREATURE_MASTER_GENIE + CREATURE_DEMILICH + + + CREATURE_MASTER_GREMLIN + CREATURE_SKELETON_ARCHER + + + CREATURE_MATRIARCH + CREATURE_WRAITH + + + CREATURE_MATRON + CREATURE_WIGHT + + + CREATURE_MILITIAMAN + CREATURE_SKELETON_ARCHER + + + CREATURE_MINOTAUR + CREATURE_MANES + + + CREATURE_MINOTAUR_CAPTAIN + CREATURE_POLTERGEIST + + + CREATURE_MINOTAUR_KING + CREATURE_GHOST + + + CREATURE_NIGHTMARE + CREATURE_LICH + + + CREATURE_ORC_SLAYER + CREATURE_GHOST + + + CREATURE_ORC_WARMONGER + CREATURE_POLTERGEIST + + + CREATURE_ORC_WARRIOR + CREATURE_MANES + + + CREATURE_ORCCHIEF_BUTCHER + CREATURE_LICH + + + CREATURE_ORCCHIEF_CHIEFTAIN + CREATURE_LICH_MASTER + + + CREATURE_ORCCHIEF_EXECUTIONER + CREATURE_DEMILICH + + + CREATURE_PALADIN + CREATURE_WRAITH + + + CREATURE_PEASANT + CREATURE_SKELETON + + + CREATURE_PHOENIX + CREATURE_BONE_DRAGON + + + CREATURE_PIT_FIEND + CREATURE_WIGHT + + + CREATURE_PIT_SPAWN + CREATURE_BANSHEE + + + CREATURE_PIXIE + CREATURE_SKELETON + + + CREATURE_PRIEST + CREATURE_LICH + + + CREATURE_QUASIT + CREATURE_SKELETON_WARRIOR + + + CREATURE_RAINBOW_DRAGON + CREATURE_HORROR_DRAGON + + + CREATURE_RAKSHASA + CREATURE_WIGHT + + + CREATURE_RAKSHASA_KSHATRI + CREATURE_BANSHEE + + + CREATURE_RAKSHASA_RUKH + CREATURE_WRAITH + + + CREATURE_RAVAGER + CREATURE_VAMPIRE_LORD + + + CREATURE_RED_DRAGON + CREATURE_HORROR_DRAGON + + + CREATURE_RIDER + CREATURE_VAMPIRE + + + CREATURE_ROYAL_GRIFFIN + CREATURE_VAMPIRE_LORD + + + CREATURE_RUNE_MAGE + CREATURE_LICH + + + CREATURE_SCOUT + CREATURE_SKELETON + + + CREATURE_SERAPH + CREATURE_HORROR_DRAGON + + + CREATURE_SHADOW_MISTRESS + CREATURE_BANSHEE + + + CREATURE_SHAMAN + CREATURE_VAMPIRE + + + CREATURE_SHAMAN_HAG + CREATURE_NOSFERATU + + + CREATURE_SHAMAN_WITCH + CREATURE_VAMPIRE_LORD + + + CREATURE_SHARP_SHOOTER + CREATURE_POLTERGEIST + + + CREATURE_SPRITE + CREATURE_SKELETON_ARCHER + + + CREATURE_STALKER + CREATURE_SKELETON_WARRIOR + + + CREATURE_STONE_DEFENDER + CREATURE_SKELETON_WARRIOR + + + CREATURE_STORM_LORD + CREATURE_HORROR_DRAGON + + + CREATURE_STOUT_DEFENDER + CREATURE_SKELETON_ARCHER + + + CREATURE_SUCCUBUS + CREATURE_VAMPIRE + + + CREATURE_SUCCUBUS_SEDUCER + CREATURE_NOSFERATU + + + CREATURE_SWORDSMAN + CREATURE_GHOST + + + CREATURE_THANE + CREATURE_WIGHT + + + CREATURE_THUNDER_THANE + CREATURE_BANSHEE + + + CREATURE_THUNDERBIRD + CREATURE_SHADOW_DRAGON + + + CREATURE_TITAN + CREATURE_SHADOW_DRAGON + + + CREATURE_TREANT + CREATURE_WIGHT + + + CREATURE_TREANT_GUARDIAN + CREATURE_WRAITH + + + CREATURE_UNICORN + CREATURE_LICH + + + CREATURE_VINDICATOR + CREATURE_POLTERGEIST + + + CREATURE_WAR_DANCER + CREATURE_ZOMBIE + + + CREATURE_WAR_UNICORN + CREATURE_DEMILICH + + + CREATURE_WARLORD + CREATURE_WRAITH + + + CREATURE_WHITE_BEAR_RIDER + CREATURE_POLTERGEIST + + + CREATURE_WHITE_UNICORN + CREATURE_LICH_MASTER + + + CREATURE_WITCH + CREATURE_WALKING_DEAD + + + CREATURE_WOLF + CREATURE_VAMPIRE + + + CREATURE_WOOD_ELF + CREATURE_MANES + + + CREATURE_WYVERN + CREATURE_WIGHT + + + CREATURE_WYVERN_PAOKAI + CREATURE_BANSHEE + + + CREATURE_WYVERN_POISONOUS + CREATURE_WRAITH + + + CREATURE_ZEALOT + CREATURE_LICH_MASTER + + + + + 4 + + 10 + 2 + 0.10 + 2 + + + 0.07 + 0.1 + 120 + 12 + 0.3 + + + 20 + 1 + 20 + 0 + + + 15 + 20 + 0.3 + 4 + 0.2 + 0.1 + 1.65 + 0 + + + 5 + 50 + 1 + 0.4 + 10 + 1 + 10 + 10 + 0.1 + 0.5 + 2 + 0.5 + 0 + 2 + 0.1 + 0.2 + true + + + 1 + 400 + 0.15 + 0.15 + CREATURE_ORC_WARRIOR + 0 + 1 + 0 + 0.2 + 3 + 5 + 1 + 2 + + + 0 + 0 + 0 + 0 + 0 + + 0.25 + 0.5 + + + + 0 + 0 + 0 + 0 + 0 + + 0.25 + 0.5 + + + + 0 + 0 + 0 + 0 + 0 + + 0.25 + 0.5 + + 0 + 0 + 0.2 + + + + 1.3 + 1.0 + 0.7 + 0.5 + 0.3 + 0.2 + 0.1 + 0.0 + + + 13 + 10 + 7 + 5 + 3 + 2 + 1 + 0 + + + 0.75 + 1 + 1 + 0.1 + 0.1 + + 0.08 + 0.16 + 0.24 + 0.30 + + + 0.7 + 0.14 + 0.21 + 0.35 + + + + 4 + 12 + 2 + 4 + 2 + 8 + 32 + 6 + + + + 0.1 + 0.01 + 0.1 + 0.004 + 0 + 0.01 + 1 + + + 3 + 0 + 4 + 1 + 0.1 + 0.01 + 3 + 0.03 + 0.003 + + + 0.05 + 0.01 + 0 + 0.02 + 0 + 0.015 + + + 0 + 3 + 0 + 2 + 1 + + 0 + + + 1 + 0 + 0 + 1 + 12 + 0.05 + 0.5 + 0.1 + 0.0025 + + 0 + 1 + 0 + + + 0 + 1 + 0 + + + 0 + 6 + 2 + + + 0 + 3 + 1 + + + + 0 + 0.03 + 0.3 + 0.01 + 0.025 + 0.0025 + 0.1 + 0.01 + + + 99 + 5 + 1 + 0.05 + SPELL_RUNE_OF_MAGIC_CONTROL + 0.25 + 1 + 0.03 + SPELL_HASTE + 0.2 + 0.01 + 0.5 + 3 + 2 + + + 0.02 + 0.005 + 0.01 + 0.04 + + 0 + 1 + 4 + + + 1 + 10 + 1 + + + 1 + 1 + 1 + + 0.01 + + 2 + 3 + 0 + + + + + + 2 + 3100 + 33 + + + 0 + 0.3 + + 33 + 33 + 10 + + + 1 + 1 + 0 + + + + + + SPELL_WASP_SWARM + MASTERY_ADVANCED + + 8 + 10000 + + + 10 + 0.1 + + + 11 + 0.1 + + + 12 + 0.1 + + + 13 + 0.1 + + + + + 0 + 15 + + + 0 + 20 + + + 0 + 25 + + + 0 + 30 + + + 10 + 1 + + + + 1 + 0.75 + 0.75 + + + 0 + 12 + + + 0 + 14 + + + 0 + 19 + + + 0 + 24 + + + + + + + 160 + 4 + + + 120 + 4 + + + 140 + 4 + + + 160 + 4 + + + + + 30 + 30 + 30 + + 1 + 6 + 1 + + 4 + 20 + 0 + -0.01 + 25 + + 3 + 1 + 0 + + + 5 + 2 + 1 + + 0.7 + 0.5 + + + + 1.5 + 0.65 + 0.5 + 0.65 + + + + 10 + 2000 + 200 + 1000 + 12 + 200 + 500 + 3 + + 0 + 0.2 + + + + 1 + 1.5 + 0.6 + 0.8 + -0.1 + 0.4 + 1 + 1.2 + 2 + 0.7 + 0.8 + 2 + 0.6 + 0.7 + 2 + + + + + 5 + false + true + true + false + + + 5 + false + true + true + false + + + 5 + false + true + true + false + + + 5 + false + true + true + false + + 0.2 + 1.8 + 35000 + + 1000 + 1000 + 400 + 100 + 1 + 1 + 0 + + + 1000 + 1000 + 400 + 100 + 1 + 1 + 0 + + + 1000 + 500 + 100 + 200 + 1 + 1 + 0 + + + 0.55 + 0.35 + 0.2 + 1.3 + + + + + 2 + 0.75 + 0 + 0 + 700 + 32000 + 0.1 + 128000 + 2 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 14 + 3 + 60 + 1 + 2 + 3 + 4 + 4 + 15000 + 1.125 + 0.6 + 500000 + 1 + 30 + 1 + + + 2 + 0.5 + 0 + 0 + 700 + 32000 + 0.1 + 128000 + 2 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 14 + 3 + 60 + 1 + 2 + 3 + 4 + 4 + 15000 + 1.125 + 0.6 + 500000 + 1 + 30 + 1 + + + 2 + 0.33 + 0 + 0 + 700 + 32000 + 0.1 + 128000 + 2 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 14 + 3 + 60 + 1 + 2 + 3 + 4 + 4 + 15000 + 1.125 + 0.6 + 500000 + 1 + 30 + 1 + + + 2 + 0.25 + 0 + 0 + 700 + 32000 + 0.1 + 128000 + 2 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 14 + 3 + 60 + 1 + 2 + 3 + 4 + 4 + 15000 + 1.125 + 0.6 + 500000 + 1 + 30 + 1 + + 1.5 + 25 + 21 + 100 + 4 + 1000000 + 1000000 + 1 + 300 + 3000 + 2.7 + 0.5 + 0.25 + 1 + 5 + 10 + 2 + 0.1 + 0.1 + 0.1 + 0.5 + 1 + 1 + 1 + 1 + 0.1 + 0.0173 + 0.0122 + 0.0173 + 0.0833 + 250 + 0.1 + 500 + 1000 + 1000 + 300 + 300 + 300 + 300 + 50 + 10 + 100 + 50 + 3000 + 9000 + 12000 + 1000 + 1 + 250 + 50 + 9000 + 100 + 10000 + 100000 + 10000 + 2 + 2 + 2 + 400 + 100 + 2 + + CREATURE_SKELETON_ARCHER + CREATURE_SKELETON + CREATURE_LICH + CREATURE_MANES + CREATURE_VAMPIRE + CREATURE_WIGHT + CREATURE_BONE_DRAGON + + 4 + 100 + 500 + 500 + 10000 + 5000 + + + + + TOWN_NO_TYPE + + + + + TOWN_HEAVEN + + + + + TOWN_PRESERVE + + + + + TOWN_ACADEMY + + + + + TOWN_DUNGEON + + + + + TOWN_NECROMANCY + + + + + TOWN_INFERNO + + + + + TOWN_FORTRESS + + + + + TOWN_STRONGHOLD + + + + + + + + + 10 + + + CREATURE_SKELETON + CREATURE_SKELETON_ARCHER + 0 + 100 + 45 + 45 + 30 + 30 + + + CREATURE_SKELETON + CREATURE_SKELETON_ARCHER + 0 + 100 + 45 + 45 + 30 + 30 + + + CREATURE_WALKING_DEAD + CREATURE_ZOMBIE + 0 + 100 + 30 + 30 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_ZOMBIE + 0 + 100 + 30 + 30 + 20 + 20 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_SKELETON + CREATURE_SKELETON_WARRIOR + 0 + 100 + 45 + 45 + 30 + 30 + + + CREATURE_SKELETON + CREATURE_SKELETON_WARRIOR + 0 + 100 + 45 + 45 + 30 + 30 + + + CREATURE_WALKING_DEAD + CREATURE_DISEASE_ZOMBIE + 0 + 100 + 30 + 30 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_DISEASE_ZOMBIE + 0 + 100 + 30 + 30 + 20 + 20 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_SKELETON + CREATURE_SKELETON_WARRIOR + 100 + 0 + 45 + 45 + 30 + 30 + + + CREATURE_SKELETON + CREATURE_SKELETON_WARRIOR + 100 + 0 + 45 + 45 + 30 + 30 + + + CREATURE_WALKING_DEAD + CREATURE_DISEASE_ZOMBIE + 100 + 0 + 30 + 30 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_DISEASE_ZOMBIE + 100 + 0 + 30 + 30 + 20 + 20 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_SKELETON + CREATURE_SKELETON_ARCHER + 0 + 100 + 30 + 30 + 25 + 25 + + + CREATURE_SKELETON + CREATURE_SKELETON_ARCHER + 0 + 100 + 30 + 30 + 25 + 25 + + + CREATURE_WALKING_DEAD + CREATURE_ZOMBIE + 0 + 100 + 30 + 30 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_ZOMBIE + 0 + 100 + 30 + 30 + 20 + 20 + + + CREATURE_MANES + CREATURE_GHOST + 0 + 100 + 5 + 5 + 5 + 5 + + + CREATURE_MANES + CREATURE_GHOST + 0 + 100 + 5 + 5 + 5 + 5 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_SKELETON + CREATURE_SKELETON_ARCHER + 100 + 0 + 30 + 30 + 25 + 25 + + + CREATURE_SKELETON + CREATURE_SKELETON_ARCHER + 100 + 0 + 30 + 30 + 25 + 25 + + + CREATURE_WALKING_DEAD + CREATURE_ZOMBIE + 100 + 0 + 30 + 30 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_ZOMBIE + 100 + 0 + 30 + 30 + 20 + 20 + + + CREATURE_MANES + CREATURE_GHOST + 100 + 0 + 5 + 5 + 5 + 5 + + + CREATURE_MANES + CREATURE_GHOST + 100 + 0 + 5 + 5 + 5 + 5 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_SKELETON + CREATURE_SKELETON_WARRIOR + 0 + 100 + 30 + 30 + 25 + 25 + + + CREATURE_SKELETON + CREATURE_SKELETON_WARRIOR + 0 + 100 + 30 + 30 + 25 + 25 + + + CREATURE_WALKING_DEAD + CREATURE_DISEASE_ZOMBIE + 0 + 100 + 30 + 30 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_DISEASE_ZOMBIE + 0 + 100 + 30 + 30 + 20 + 20 + + + CREATURE_MANES + CREATURE_POLTERGEIST + 0 + 100 + 5 + 5 + 5 + 5 + + + CREATURE_MANES + CREATURE_POLTERGEIST + 0 + 100 + 5 + 5 + 5 + 5 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_SKELETON + CREATURE_SKELETON_ARCHER + 0 + 100 + 35 + 35 + 20 + 20 + + + CREATURE_SKELETON + CREATURE_SKELETON_ARCHER + 0 + 100 + 35 + 35 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_ZOMBIE + 0 + 100 + 25 + 25 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_ZOMBIE + 0 + 100 + 25 + 25 + 20 + 20 + + + CREATURE_MANES + CREATURE_GHOST + 0 + 100 + 20 + 20 + 12 + 14 + + + CREATURE_VAMPIRE + CREATURE_VAMPIRE_LORD + 0 + 100 + 10 + 10 + 6 + 6 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_SKELETON + CREATURE_SKELETON_ARCHER + 100 + 0 + 35 + 35 + 20 + 20 + + + CREATURE_SKELETON + CREATURE_SKELETON_ARCHER + 100 + 0 + 35 + 35 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_ZOMBIE + 100 + 0 + 25 + 25 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_ZOMBIE + 100 + 0 + 25 + 25 + 20 + 20 + + + CREATURE_MANES + CREATURE_GHOST + 100 + 0 + 20 + 20 + 12 + 14 + + + CREATURE_VAMPIRE + CREATURE_VAMPIRE_LORD + 100 + 0 + 10 + 10 + 6 + 6 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_SKELETON + CREATURE_SKELETON_WARRIOR + 0 + 100 + 35 + 35 + 20 + 20 + + + CREATURE_SKELETON + CREATURE_SKELETON_WARRIOR + 0 + 100 + 35 + 35 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_DISEASE_ZOMBIE + 0 + 100 + 25 + 25 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_DISEASE_ZOMBIE + 0 + 100 + 25 + 25 + 20 + 20 + + + CREATURE_MANES + CREATURE_POLTERGEIST + 0 + 100 + 20 + 20 + 12 + 14 + + + CREATURE_VAMPIRE + CREATURE_NOSFERATU + 0 + 100 + 10 + 10 + 6 + 6 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 5 + + + CREATURE_SKELETON + CREATURE_SKELETON_WARRIOR + 0 + 100 + 35 + 35 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_DISEASE_ZOMBIE + 0 + 100 + 25 + 25 + 20 + 20 + + + CREATURE_MANES + CREATURE_POLTERGEIST + 0 + 100 + 10 + 10 + 6 + 6 + + + CREATURE_VAMPIRE + CREATURE_NOSFERATU + 0 + 100 + 6 + 6 + 6 + 6 + + + CREATURE_VAMPIRE + CREATURE_NOSFERATU + 0 + 100 + 6 + 6 + 6 + 6 + + + CREATURE_LICH + CREATURE_LICH_MASTER + 0 + 100 + 5 + 5 + 5 + 5 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 5 + + + CREATURE_SKELETON + CREATURE_SKELETON_ARCHER + 0 + 100 + 35 + 35 + 20 + 20 + + + CREATURE_WALKING_DEAD + CREATURE_ZOMBIE + 0 + 100 + 25 + 25 + 20 + 20 + + + CREATURE_MANES + CREATURE_GHOST + 0 + 100 + 10 + 10 + 6 + 6 + + + CREATURE_VAMPIRE + CREATURE_VAMPIRE_LORD + 0 + 100 + 6 + 6 + 6 + 6 + + + CREATURE_VAMPIRE + CREATURE_VAMPIRE_LORD + 0 + 100 + 6 + 6 + 6 + 6 + + + CREATURE_LICH + CREATURE_DEMILICH + 0 + 100 + 5 + 5 + 5 + 5 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + -1 + 56 + 0 + 1 + 1 + + + + + 10 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 80 + 80 + 0 + 0 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 80 + 80 + 0 + 0 + + + CREATURE_STEEL_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_STEEL_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_MASTER_GENIE + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_STONE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 80 + 80 + 0 + 0 + + + CREATURE_STONE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 80 + 80 + 0 + 0 + + + CREATURE_IRON_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_IRON_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_GENIE + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 80 + 80 + 0 + 0 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 80 + 80 + 0 + 0 + + + CREATURE_OBSIDIAN_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_OBSIDIAN_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_DJINN_VIZIER + CREATURE_UNKNOWN + 100 + 0 + 20 + 0 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 80 + 80 + 0 + 0 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 80 + 80 + 0 + 0 + + + CREATURE_OBSIDIAN_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_OBSIDIAN_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_RAKSHASA_KSHATRI + CREATURE_UNKNOWN + 100 + 0 + 10 + 0 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_STONE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 80 + 80 + 0 + 0 + + + CREATURE_STONE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 80 + 80 + 0 + 0 + + + CREATURE_IRON_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_IRON_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_RAKSHASA + CREATURE_UNKNOWN + 100 + 0 + 10 + 0 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 80 + 80 + 0 + 0 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 80 + 80 + 0 + 0 + + + CREATURE_STEEL_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_STEEL_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_RAKSHASA_RUKH + CREATURE_UNKNOWN + 100 + 0 + 10 + 0 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_MUMMY + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_MUMMY + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_MANES + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_MANES + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_LICH + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 5 + + + CREATURE_MUMMY + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_MUMMY + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_GHOST + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_GHOST + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_DEMILICH + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 5 + + + CREATURE_MUMMY + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_MUMMY + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_POLTERGEIST + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_POLTERGEIST + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_LICH_MASTER + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_FIRE_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_FIRE_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_FIRE_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + CREATURE_PHOENIX + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_SKELETON + CREATURE_UNKNOWN + 100 + 0 + 666 + 666 + 0 + 0 + + + CREATURE_SKELETON + CREATURE_UNKNOWN + 100 + 0 + 666 + 666 + 0 + 0 + + + CREATURE_MANES + CREATURE_UNKNOWN + 100 + 0 + 66 + 66 + 0 + 0 + + + CREATURE_MANES + CREATURE_UNKNOWN + 100 + 0 + 66 + 66 + 0 + 0 + + + CREATURE_MUMMY + CREATURE_UNKNOWN + 100 + 0 + 6 + 6 + 0 + 0 + + + CREATURE_MUMMY + CREATURE_UNKNOWN + 100 + 0 + 6 + 6 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + -1 + 56 + 2 + 0 + 1 + + + + + 10 + + + CREATURE_MAGI + CREATURE_MAGI + 80 + 20 + 8 + 8 + 10 + 10 + + + CREATURE_MAGI + CREATURE_MAGI + 80 + 20 + 8 + 8 + 10 + 10 + + + CREATURE_STONE_GARGOYLE + CREATURE_OBSIDIAN_GARGOYLE + 100 + 0 + 25 + 25 + 20 + 20 + + + CREATURE_STONE_GARGOYLE + CREATURE_OBSIDIAN_GARGOYLE + 100 + 0 + 25 + 25 + 20 + 20 + + + CREATURE_GENIE + CREATURE_GENIE + 80 + 20 + 5 + 5 + 10 + 10 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_COMBAT_MAGE + CREATURE_COMBAT_MAGE + 80 + 20 + 8 + 8 + 10 + 10 + + + CREATURE_COMBAT_MAGE + CREATURE_COMBAT_MAGE + 80 + 20 + 8 + 8 + 10 + 10 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_OBSIDIAN_GARGOYLE + 100 + 0 + 25 + 25 + 20 + 20 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_OBSIDIAN_GARGOYLE + 100 + 0 + 25 + 25 + 20 + 20 + + + CREATURE_DJINN_VIZIER + CREATURE_DJINN_VIZIER + 80 + 20 + 5 + 5 + 10 + 10 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_ARCH_MAGI + CREATURE_ARCH_MAGI + 80 + 20 + 8 + 8 + 10 + 10 + + + CREATURE_ARCH_MAGI + CREATURE_ARCH_MAGI + 80 + 20 + 8 + 8 + 10 + 10 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_OBSIDIAN_GARGOYLE + 0 + 100 + 25 + 25 + 20 + 20 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_OBSIDIAN_GARGOYLE + 0 + 100 + 25 + 25 + 20 + 20 + + + CREATURE_MASTER_GENIE + CREATURE_MASTER_GENIE + 80 + 20 + 5 + 5 + 10 + 10 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_MAGI + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 15 + 15 + + + CREATURE_MAGI + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 15 + 15 + + + CREATURE_GENIE + CREATURE_GENIE + 20 + 80 + 15 + 15 + 10 + 10 + + + CREATURE_GENIE + CREATURE_GENIE + 20 + 80 + 15 + 15 + 10 + 10 + + + CREATURE_RAKSHASA + CREATURE_RAKSHASA + 20 + 80 + 10 + 10 + 6 + 6 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_ARCH_MAGI + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 15 + 15 + + + CREATURE_ARCH_MAGI + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 15 + 15 + + + CREATURE_MASTER_GENIE + CREATURE_MASTER_GENIE + 20 + 80 + 15 + 15 + 10 + 10 + + + CREATURE_MASTER_GENIE + CREATURE_MASTER_GENIE + 20 + 80 + 15 + 15 + 10 + 10 + + + CREATURE_RAKSHASA_RUKH + CREATURE_RAKSHASA_RUKH + 20 + 80 + 10 + 10 + 6 + 6 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_COMBAT_MAGE + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 15 + 15 + + + CREATURE_COMBAT_MAGE + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 15 + 15 + + + CREATURE_DJINN_VIZIER + CREATURE_DJINN_VIZIER + 20 + 80 + 15 + 15 + 10 + 10 + + + CREATURE_DJINN_VIZIER + CREATURE_DJINN_VIZIER + 20 + 80 + 15 + 15 + 10 + 10 + + + CREATURE_RAKSHASA_KSHATRI + CREATURE_RAKSHASA_KSHATRI + 20 + 80 + 10 + 10 + 6 + 6 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_MAGI + CREATURE_ARCH_MAGI + 100 + 0 + 20 + 20 + 12 + 12 + + + CREATURE_MAGI + CREATURE_ARCH_MAGI + 100 + 0 + 20 + 20 + 12 + 12 + + + CREATURE_RAKSHASA + CREATURE_PHOENIX + 100 + 0 + 5 + 5 + 3 + 3 + + + CREATURE_RAKSHASA + CREATURE_PHOENIX + 100 + 0 + 5 + 5 + 3 + 3 + + + CREATURE_GIANT + CREATURE_ARCH_MAGI + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_MAGI + CREATURE_ARCH_MAGI + 0 + 100 + 20 + 20 + 12 + 12 + + + CREATURE_MAGI + CREATURE_ARCH_MAGI + 0 + 100 + 20 + 20 + 12 + 12 + + + CREATURE_RAKSHASA_RUKH + CREATURE_PHOENIX + 100 + 0 + 5 + 5 + 3 + 3 + + + CREATURE_RAKSHASA_RUKH + CREATURE_PHOENIX + 100 + 0 + 5 + 5 + 3 + 3 + + + CREATURE_TITAN + CREATURE_ARCH_MAGI + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_MAGI + CREATURE_COMBAT_MAGE + 0 + 100 + 20 + 20 + 12 + 12 + + + CREATURE_MAGI + CREATURE_COMBAT_MAGE + 0 + 100 + 20 + 20 + 12 + 12 + + + CREATURE_RAKSHASA_KSHATRI + CREATURE_PHOENIX + 100 + 0 + 5 + 5 + 3 + 3 + + + CREATURE_RAKSHASA_KSHATRI + CREATURE_PHOENIX + 100 + 0 + 5 + 5 + 3 + 3 + + + CREATURE_STORM_LORD + CREATURE_ARCH_MAGI + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_MAGI + CREATURE_COMBAT_MAGE + 0 + 100 + 20 + 20 + 12 + 12 + + + CREATURE_MAGI + CREATURE_COMBAT_MAGE + 0 + 100 + 20 + 20 + 12 + 12 + + + CREATURE_RAKSHASA_KSHATRI + CREATURE_PHOENIX + 0 + 100 + 5 + 5 + 2 + 2 + + + CREATURE_RAKSHASA_KSHATRI + CREATURE_PHOENIX + 0 + 100 + 5 + 5 + 2 + 2 + + + CREATURE_STORM_LORD + CREATURE_ARCH_MAGI + 0 + 100 + 0 + 0 + 10 + 10 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + -1 + 56 + 0 + 0 + 2 + + + + + 10 + + + CREATURE_GREEN_DRAGON + CREATURE_GOLD_DRAGON + 100 + 0 + 10 + 10 + 7 + 7 + + + CREATURE_GREEN_DRAGON + CREATURE_GOLD_DRAGON + 100 + 0 + 10 + 10 + 7 + 7 + + + CREATURE_GREEN_DRAGON + CREATURE_GOLD_DRAGON + 0 + 100 + 9 + 9 + 8 + 8 + + + CREATURE_GREEN_DRAGON + CREATURE_RAINBOW_DRAGON + 0 + 100 + 9 + 9 + 8 + 8 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_DEEP_DRAGON + CREATURE_BLACK_DRAGON + 100 + 0 + 10 + 10 + 4 + 4 + + + CREATURE_DEEP_DRAGON + CREATURE_BLACK_DRAGON + 100 + 0 + 10 + 10 + 4 + 4 + + + CREATURE_DEEP_DRAGON + CREATURE_BLACK_DRAGON + 0 + 100 + 6 + 6 + 8 + 8 + + + CREATURE_DEEP_DRAGON + CREATURE_RED_DRAGON + 0 + 100 + 6 + 6 + 8 + 8 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_BONE_DRAGON + CREATURE_BLACK_DRAGON + 100 + 0 + 12 + 12 + 4 + 4 + + + CREATURE_BONE_DRAGON + CREATURE_BLACK_DRAGON + 100 + 0 + 12 + 12 + 4 + 4 + + + CREATURE_DEEP_DRAGON + CREATURE_SHADOW_DRAGON + 0 + 100 + 6 + 6 + 10 + 10 + + + CREATURE_DEEP_DRAGON + CREATURE_HORROR_DRAGON + 0 + 100 + 6 + 6 + 10 + 10 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_FIRE_DRAGON + CREATURE_BLACK_DRAGON + 100 + 0 + 10 + 10 + 4 + 4 + + + CREATURE_FIRE_DRAGON + CREATURE_BLACK_DRAGON + 100 + 0 + 10 + 10 + 4 + 4 + + + CREATURE_FIRE_DRAGON + CREATURE_MAGMA_DRAGON + 0 + 100 + 6 + 6 + 8 + 8 + + + CREATURE_DEEP_DRAGON + CREATURE_LAVA_DRAGON + 0 + 100 + 6 + 6 + 8 + 8 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_BLACK_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 6 + 6 + 0 + 0 + + + CREATURE_DEEP_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + CREATURE_SHADOW_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_HORROR_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_GREEN_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + CREATURE_GOLD_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 6 + 6 + 0 + 0 + + + CREATURE_RAINBOW_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 6 + 6 + 0 + 0 + + + CREATURE_RED_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 6 + 6 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 20 + + + CREATURE_RAINBOW_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + CREATURE_RED_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + CREATURE_GOLD_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + CREATURE_BLACK_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 20 + + + CREATURE_MAGMA_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + CREATURE_LAVA_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + CREATURE_BLACK_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + CREATURE_RED_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + -1 + 56 + 0 + 0 + 2 + + + + + 30 + + + CREATURE_FIRE_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_AIR_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_WATER_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_EARTH_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 30 + + + CREATURE_FIRE_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_AIR_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_WATER_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_EARTH_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 30 + + + CREATURE_FIRE_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_AIR_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_WATER_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_EARTH_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_FIRE_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 25 + 25 + 0 + 0 + + + CREATURE_AIR_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 25 + 25 + 0 + 0 + + + CREATURE_WATER_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 25 + 25 + 0 + 0 + + + CREATURE_EARTH_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 25 + 25 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + -1 + 56 + 0 + 0 + 2 + + + + + 10 + + + CREATURE_GHOST + CREATURE_MANES + 0 + 100 + 15 + 15 + 22 + 22 + + + CREATURE_SKELETON + CREATURE_WALKING_DEAD + 100 + 0 + 21 + 21 + 17 + 17 + + + CREATURE_SKELETON + CREATURE_WALKING_DEAD + 100 + 0 + 21 + 21 + 17 + 17 + + + CREATURE_SKELETON + CREATURE_WALKING_DEAD + 0 + 100 + 21 + 21 + 17 + 17 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_GHOST + CREATURE_MANES + 100 + 0 + 15 + 15 + 22 + 22 + + + CREATURE_SKELETON_ARCHER + CREATURE_WALKING_DEAD + 100 + 0 + 21 + 21 + 17 + 17 + + + CREATURE_SKELETON_ARCHER + CREATURE_WALKING_DEAD + 100 + 0 + 21 + 21 + 17 + 17 + + + CREATURE_SKELETON + CREATURE_ZOMBIE + 0 + 100 + 21 + 21 + 17 + 17 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_POLTERGEIST + CREATURE_MANES + 100 + 0 + 15 + 15 + 22 + 22 + + + CREATURE_SKELETON_WARRIOR + CREATURE_WALKING_DEAD + 100 + 0 + 21 + 21 + 17 + 17 + + + CREATURE_SKELETON_WARRIOR + CREATURE_WALKING_DEAD + 100 + 0 + 21 + 21 + 17 + 17 + + + CREATURE_SKELETON + CREATURE_DISEASE_ZOMBIE + 0 + 100 + 21 + 21 + 17 + 17 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_MANES + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_MANES + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_SKELETON + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_LICH + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_GHOST + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_GHOST + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_SKELETON_ARCHER + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_DEMILICH + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_POLTERGEIST + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_POLTERGEIST + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_SKELETON_WARRIOR + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_LICH_MASTER + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_GHOST + CREATURE_WALKING_DEAD + 0 + 100 + 25 + 25 + 75 + 75 + + + CREATURE_GHOST + CREATURE_WALKING_DEAD + 0 + 100 + 25 + 25 + 75 + 75 + + + CREATURE_SKELETON + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + CREATURE_SKELETON + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + CREATURE_WIGHT + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_GHOST + CREATURE_ZOMBIE + 0 + 100 + 25 + 25 + 75 + 75 + + + CREATURE_GHOST + CREATURE_ZOMBIE + 0 + 100 + 25 + 25 + 75 + 75 + + + CREATURE_SKELETON_ARCHER + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + CREATURE_SKELETON_ARCHER + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + CREATURE_WRAITH + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_GHOST + CREATURE_DISEASE_ZOMBIE + 0 + 100 + 25 + 25 + 75 + 75 + + + CREATURE_GHOST + CREATURE_DISEASE_ZOMBIE + 0 + 100 + 25 + 25 + 75 + 75 + + + CREATURE_SKELETON_WARRIOR + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + CREATURE_SKELETON_WARRIOR + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + CREATURE_BANSHEE + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_MANES + CREATURE_UNKNOWN + 100 + 0 + 75 + 75 + 0 + 0 + + + CREATURE_MANES + CREATURE_UNKNOWN + 100 + 0 + 75 + 75 + 0 + 0 + + + CREATURE_WIGHT + CREATURE_WRAITH + 100 + 0 + 10 + 10 + 2 + 2 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 56 + 0 + 1 + 1 + + + + + 10 + + + CREATURE_ARCHER + CREATURE_UNKNOWN + 1 + 0 + 38 + 38 + 0 + 0 + + + CREATURE_ARCHER + CREATURE_UNKNOWN + 1 + 0 + 38 + 38 + 0 + 0 + + + CREATURE_PEASANT + CREATURE_UNKNOWN + 1 + 0 + 75 + 75 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_SKELETON + CREATURE_UNKNOWN + 100 + 0 + 88 + 88 + 0 + 0 + + + CREATURE_SKELETON + CREATURE_UNKNOWN + 100 + 0 + 88 + 88 + 0 + 0 + + + CREATURE_BONE_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_POLTERGEIST + CREATURE_UNKNOWN + 100 + 0 + 44 + 44 + 0 + 0 + + + CREATURE_POLTERGEIST + CREATURE_UNKNOWN + 100 + 0 + 44 + 44 + 0 + 0 + + + CREATURE_HORROR_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 4 + 4 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_GHOST + CREATURE_UNKNOWN + 100 + 0 + 44 + 44 + 0 + 0 + + + CREATURE_GHOST + CREATURE_UNKNOWN + 100 + 0 + 44 + 44 + 0 + 0 + + + CREATURE_SHADOW_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 4 + 4 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_AIR_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 10 + 40 + 0 + 0 + + + CREATURE_WATER_ELEMENTAL + CREATURE_UNKNOWN + 100 + 0 + 10 + 0 + 0 + 0 + + + CREATURE_EARTH_ELEMENTAL + CREATURE_UNKNOWN + 1 + 0 + 10 + 0 + 0 + 0 + + + CREATURE_FIRE_ELEMENTAL + CREATURE_UNKNOWN + 1 + 0 + 10 + 0 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 20 + + + CREATURE_CHAOS_HYDRA + CREATURE_MATRIARCH + 0 + 100 + 8 + 8 + 2 + 2 + + + CREATURE_SCOUT + CREATURE_ASSASSIN + 0 + 100 + 40 + 40 + 30 + 30 + + + CREATURE_CHAOS_HYDRA + CREATURE_MATRON + 100 + 0 + 8 + 8 + 2 + 2 + + + CREATURE_SCOUT + CREATURE_ASSASSIN + 0 + 100 + 40 + 40 + 30 + 30 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 20 + + + CREATURE_HYDRA + CREATURE_MATRON + 0 + 100 + 6 + 6 + 2 + 2 + + + CREATURE_SCOUT + CREATURE_ASSASSIN + 100 + 0 + 40 + 40 + 30 + 30 + + + CREATURE_HYDRA + CREATURE_MATRON + 100 + 0 + 10 + 10 + 2 + 2 + + + CREATURE_SCOUT + CREATURE_ASSASSIN + 100 + 0 + 40 + 40 + 30 + 30 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_HYDRA + CREATURE_SHADOW_MISTRESS + 0 + 100 + 6 + 6 + 2 + 2 + + + CREATURE_SCOUT + CREATURE_STALKER + 0 + 100 + 40 + 40 + 30 + 30 + + + CREATURE_ACIDIC_HYDRA + CREATURE_STALKER + 100 + 0 + 8 + 8 + 2 + 2 + + + CREATURE_SCOUT + CREATURE_STALKER + 0 + 100 + 40 + 40 + 30 + 30 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 56 + 0 + 1 + 1 + + + + + 10 + + + CREATURE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 25 + 25 + 0 + 0 + + + CREATURE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 25 + 25 + 0 + 0 + + + CREATURE_AXE_FIGHTER + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_AXE_FIGHTER + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_BEAR_RIDER + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_STOUT_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 25 + 25 + 0 + 0 + + + CREATURE_STOUT_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 25 + 25 + 0 + 0 + + + CREATURE_AXE_THROWER + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_AXE_THROWER + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_BLACKBEAR_RIDER + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_STONE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 25 + 25 + 0 + 0 + + + CREATURE_STONE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 25 + 25 + 0 + 0 + + + CREATURE_HARPOONER + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_HARPOONER + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_WHITE_BEAR_RIDER + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 50 + 50 + 0 + 0 + + + CREATURE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 50 + 50 + 0 + 0 + + + CREATURE_AXE_FIGHTER + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_AXE_FIGHTER + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_BROWLER + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_STOUT_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 50 + 50 + 0 + 0 + + + CREATURE_STOUT_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 50 + 50 + 0 + 0 + + + CREATURE_AXE_THROWER + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_AXE_THROWER + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_BERZERKER + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_STONE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 50 + 50 + 0 + 0 + + + CREATURE_STONE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 50 + 50 + 0 + 0 + + + CREATURE_HARPOONER + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_HARPOONER + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_BATTLE_RAGER + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_STOUT_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 75 + 75 + 0 + 0 + + + CREATURE_STOUT_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 75 + 75 + 0 + 0 + + + CREATURE_AXE_THROWER + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_AXE_THROWER + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_WARLORD + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 75 + 75 + 0 + 0 + + + CREATURE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 75 + 75 + 0 + 0 + + + CREATURE_AXE_FIGHTER + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_AXE_FIGHTER + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_THANE + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_STONE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 75 + 75 + 0 + 0 + + + CREATURE_STONE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 75 + 75 + 0 + 0 + + + CREATURE_HARPOONER + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_HARPOONER + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_THUNDER_THANE + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_STONE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 75 + 75 + 0 + 0 + + + CREATURE_STONE_DEFENDER + CREATURE_UNKNOWN + 100 + 0 + 75 + 75 + 0 + 0 + + + CREATURE_HARPOONER + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_HARPOONER + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_FLAME_KEEPER + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 56 + 0 + 0 + 2 + + + + + 10 + + + CREATURE_WITCH + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_WITCH + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_MATRON + CREATURE_UNKNOWN + 100 + 0 + 2 + 2 + 0 + 0 + + + CREATURE_HYDRA + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_BLOOD_WITCH + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_BLOOD_WITCH + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_MATRIARCH + CREATURE_UNKNOWN + 100 + 0 + 2 + 2 + 0 + 0 + + + CREATURE_CHAOS_HYDRA + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_BLOOD_WITCH_2 + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_BLOOD_WITCH_2 + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_SHADOW_MISTRESS + CREATURE_UNKNOWN + 100 + 0 + 2 + 2 + 0 + 0 + + + CREATURE_ACIDIC_HYDRA + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_WITCH + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_WITCH + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_MATRON + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + CREATURE_MATRON + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + CREATURE_HYDRA + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_BLOOD_WITCH + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_BLOOD_WITCH + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_MATRIARCH + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + CREATURE_MATRIARCH + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + CREATURE_CHAOS_HYDRA + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_BLOOD_WITCH_2 + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_BLOOD_WITCH_2 + CREATURE_UNKNOWN + 100 + 0 + 40 + 40 + 0 + 0 + + + CREATURE_SHADOW_MISTRESS + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + CREATURE_SHADOW_MISTRESS + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + CREATURE_ACIDIC_HYDRA + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_BLOOD_WITCH_2 + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_BLOOD_WITCH_2 + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_SHADOW_MISTRESS + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_SHADOW_MISTRESS + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_RED_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 5500 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 5500 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_WITCH + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_WITCH + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_MATRON + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_MATRON + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_DEEP_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 5500 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 5500 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_BLOOD_WITCH + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_BLOOD_WITCH + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_MATRIARCH + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_MATRIARCH + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_BLACK_DRAGON + CREATURE_UNKNOWN + 100 + 0 + 5 + 5 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 5500 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 5500 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_BLOOD_WITCH + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_BLOOD_WITCH + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_MATRIARCH + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_MATRIARCH + CREATURE_UNKNOWN + 100 + 0 + 10 + 10 + 0 + 0 + + + CREATURE_CHAOS_HYDRA + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 56 + 0 + 0 + 2 + + + + + 10 + + + CREATURE_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_WOOD_ELF + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_WOOD_ELF + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_PIXIE + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_TREANT_GUARDIAN + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_TREANT_GUARDIAN + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_GRAND_ELF + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_GRAND_ELF + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_SPRITE + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_ANGER_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_ANGER_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_SHARP_SHOOTER + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_SHARP_SHOOTER + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_DRYAD + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_UNICORN + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_PIXIE + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + CREATURE_PIXIE + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_TREANT_GUARDIAN + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_TREANT_GUARDIAN + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_WAR_UNICORN + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_SPRITE + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + CREATURE_SPRITE + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_ANGER_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_ANGER_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_WHITE_UNICORN + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_DRYAD + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + CREATURE_DRYAD + CREATURE_UNKNOWN + 100 + 0 + 100 + 100 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_TREANT_GUARDIAN + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_TREANT_GUARDIAN + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_WAR_UNICORN + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_GRAND_ELF + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_DRUID_ELDER + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_UNICORN + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_WOOD_ELF + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_DRUID + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_ANGER_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_ANGER_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_WHITE_UNICORN + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_SHARP_SHOOTER + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_HIGH_DRUID + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_ANGER_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_ANGER_TREANT + CREATURE_UNKNOWN + 100 + 0 + 15 + 15 + 0 + 0 + + + CREATURE_WHITE_UNICORN + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_SHARP_SHOOTER + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_DRYAD + CREATURE_UNKNOWN + 100 + 0 + 200 + 200 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 56 + 0 + 0 + 2 + + + + + 10 + + + CREATURE_STONE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_STONE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_STONE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_STONE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_STONE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_IRON_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_IRON_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_STEEL_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_STEEL_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + CREATURE_OBSIDIAN_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_OBSIDIAN_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_STEEL_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_STONE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_STONE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_STONE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_IRON_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_OBSIDIAN_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 10 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_OBSIDIAN_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_MARBLE_GARGOYLE + CREATURE_UNKNOWN + 100 + 0 + 60 + 60 + 0 + 0 + + + CREATURE_OBSIDIAN_GOLEM + CREATURE_UNKNOWN + 100 + 0 + 30 + 30 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 56 + 0 + 0 + 2 + + + + + 20 + + + CREATURE_GIANT + CREATURE_TITAN + 50 + 50 + 12 + 12 + 8 + 8 + + + CREATURE_WATER_ELEMENTAL + CREATURE_WATER_ELEMENTAL + 100 + 0 + 50 + 50 + 40 + 40 + + + CREATURE_WATER_ELEMENTAL + CREATURE_WATER_ELEMENTAL + 100 + 0 + 50 + 50 + 40 + 40 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 20 + + + CREATURE_MANTICORE + CREATURE_UNKNOWN + 100 + 0 + 10 + 20 + 0 + 0 + + + CREATURE_ACIDIC_HYDRA + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_MINOTAUR_CAPTAIN + CREATURE_UNKNOWN + 100 + 0 + 50 + 50 + 0 + 0 + + + CREATURE_MINOTAUR_CAPTAIN + CREATURE_UNKNOWN + 100 + 0 + 50 + 50 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 20 + + + CREATURE_MANTICORE + CREATURE_UNKNOWN + 100 + 0 + 10 + 20 + 0 + 0 + + + CREATURE_CHAOS_HYDRA + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_MINOTAUR_KING + CREATURE_UNKNOWN + 100 + 0 + 50 + 50 + 0 + 0 + + + CREATURE_MINOTAUR_KING + CREATURE_UNKNOWN + 100 + 0 + 50 + 50 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 20 + + + CREATURE_MANTICORE + CREATURE_UNKNOWN + 100 + 0 + 10 + 20 + 0 + 0 + + + CREATURE_HYDRA + CREATURE_UNKNOWN + 100 + 0 + 20 + 20 + 0 + 0 + + + CREATURE_MINOTAUR + CREATURE_UNKNOWN + 100 + 0 + 50 + 50 + 0 + 0 + + + CREATURE_MINOTAUR + CREATURE_UNKNOWN + 100 + 0 + 50 + 50 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 20 + + + CREATURE_GIANT + CREATURE_UNKNOWN + 100 + 0 + 12 + 12 + 0 + 0 + + + CREATURE_STORM_LORD + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + CREATURE_TITAN + CREATURE_UNKNOWN + 100 + 0 + 8 + 8 + 0 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + -1 + 56 + 0 + 0 + 2 + + + + + 100 + + + CREATURE_GIANT + CREATURE_TITAN + 50 + 50 + 9 + 9 + 7 + 7 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 100 + + 0 + 0 + 0 + 0 + 1 + + + + -1 + 56 + 0 + 0 + 2 + + + + + BUILDING_MERCENARY_CAMP + + + HERO_ATTRIB_OFFENCE + 1 + + + + + BUILDING_STAR_AXIS + + + HERO_ATTRIB_SPELLPOWER + 1 + + + + + BUILDING_GARDEN_OF_REVELATION + + + HERO_ATTRIB_KNOWLEDGE + 1 + + + + + BUILDING_MARLETTO_TOWER + + + HERO_ATTRIB_DEFENCE + 1 + + + + + BUILDING_LIBRARY_OF_ENLIGHTENMENT + + + HERO_ATTRIB_KNOWLEDGE + 2 + + + HERO_ATTRIB_SPELLPOWER + 2 + + + + + + + BUILDING_ARENA + + HERO_ATTRIB_OFFENCE + 2 + + + + + + HERO_ATTRIB_DEFENCE + 2 + + + + + + + + + + + BUILDING_SCHOOL_OF_MAGIC + + HERO_ATTRIB_SPELLPOWER + 1 + + + + + + HERO_ATTRIB_KNOWLEDGE + 1 + + + + + + + + + + + BUILDING_WAR_ACADEMY + + HERO_ATTRIB_OFFENCE + 1 + + + + + + HERO_ATTRIB_DEFENCE + 1 + + + + + + + + + + + + + + ARTFSET_EFFECT_DRAGONISH + + + + + + + + + + + + + + + + + + + + + + + + + + + ARTFSET_EFFECT_DWARVEN + + + + + + + + + + + + HERO_CLASS_NONE + + + + HERO_CLASS_RUNEMAGE + + + + + + + + + + + + ARTFSET_EFFECT_LIONS + + + + + + + + + + + HERO_CLASS_NONE + + + + HERO_CLASS_KNIGHT + + + + + + + + + + + ARTFSET_EFFECT_MAGIS + + + ROBE_OF_MAGI + true + false + + + STAFF_OF_MAGI + true + false + + + CROWN_OF_MAGI + true + false + + + RING_OF_MAGI + true + false + + + + + + + + + + + + + + + ARTFSET_EFFECT_NECROMANCERS + + + + + + + + + + + + HERO_CLASS_NONE + + + + HERO_CLASS_NECROMANCER + + + + HERO_CLASS_NECROMANCER + + + + HERO_CLASS_NECROMANCER + + + + + + + + + + + + ARTFSET_EFFECT_EDUCATIONAL + + + + + + + + + + + + + + + ARTFSET_EFFECT_HUNTERS + + + + + + + + + + HERO_CLASS_NONE + + + + HERO_CLASS_RANGER + + + + + + + + + + ARTFSET_EFFECT_OGRES + + + + + + + + + + HERO_CLASS_NONE + + + + HERO_CLASS_BARBARIAN + + + + + + + + + + ARTFSET_EFFECT_RUNIC + + + + + + + + + + HERO_CLASS_NONE + + + + HERO_CLASS_WARLOCK + + + + + + + + + + ARTFSET_EFFECT_DEMONIC + + + + + + + + + + HERO_CLASS_NONE + + + + HERO_CLASS_DEMON_LORD + + + + + + + + + + + + + + + + 0.1 + + + 1 + 7 + 5 + 5 + 20 + 3 + 5 + 1 + 40 + 1 + 10 + 2 + 2 + 1 + 1 + 0 + 0 + 1 + 1 + 20 + 1 + 1 + 15 + 30 + 3 + 2 + 50 + 1 + 1 + 4 + 1 + + + 70 + 5 + true + + diff --git a/GameMechanics/RefTables/Artifacts.Frax.xdb b/GameMechanics/RefTables/Artifacts.Frax.xdb new file mode 100644 index 00000000..2e651c81 --- /dev/null +++ b/GameMechanics/RefTables/Artifacts.Frax.xdb @@ -0,0 +1,408 @@ + + + + + ANGEL_WINGS + + + + + ARTF_CLASS_RELIC + SHOULDERS + + 0 + 26000 + false + + 0 + 0 + 0 + 0 + 0 + 0 + + + true + -1 + + + + ARTIFACT_WISPERING_RING + + + + + ARTF_CLASS_RELIC + HEAD + + -6666 + 0 + false + + -1 + -1 + 0 + 0 + 0 + 0 + + + false + 0 + + + + ARTIFACT_HELM_OF_CHAOS + + + + + ARTF_CLASS_MINOR + FINGER + + 8000 + 3800 + true + + -3 + 3 + 0 + 3 + 0 + 0 + + + true + 0 + + + + ARTIFACT_CROWN_OF_LEADER + + + + + ARTF_CLASS_RELIC + HEAD + + 30000 + 8000 + true + + 0 + 0 + 0 + 0 + 1 + 0 + + + true + 0 + + + + + ARTIFACT_LIFE_01 + + + + + ARTF_CLASS_MINOR + FINGER + + 8000 + 4000 + true + + 0 + 0 + 1 + 0 + 0 + 0 + + + true + 0 + + + + ARTIFACT_LIFE_02 + + + + + ARTF_CLASS_MINOR + FINGER + + 12000 + 6000 + true + + 0 + 0 + 0 + 1 + 0 + 0 + + + true + 0 + + + + ARTIFACT_LIFE_03 + + + + + ARTF_CLASS_MINOR + NECK + + 12000 + 6000 + true + + 0 + 0 + 0 + 1 + 0 + 0 + + + true + 0 + + + + ARTIFACT_LIFE_04 + + + + + ARTF_CLASS_MAJOR + SHOULDERS + + 20000 + 10000 + true + + 0 + 1 + 1 + 0 + 0 + 0 + + + true + 0 + + + + ARTIFACT_MEDICAL01 + + + + + ARTF_CLASS_RELIC + SECONDARY + + 28000 + 9300 + true + + 0 + 2 + 0 + 0 + 0 + 0 + + + true + 0 + + + + ARTIFACT_MEDICAL02 + + + + + ARTF_CLASS_RELIC + PRIMARY + + 32000 + 11000 + true + + 0 + 0 + 0 + 2 + 0 + 0 + + + true + 0 + + + + ARTIFACT_MEDICAL03 + + + + + ARTF_CLASS_MINOR + MISCSLOT1 + + 0 + 0 + false + + 0 + 0 + 0 + 0 + 0 + 0 + + + true + 0 + + + + ARTIFACT_MEDICAL04 + + + + + ARTF_CLASS_MINOR + MISCSLOT1 + + 12000 + 4000 + true + + 0 + 0 + 0 + 0 + 0 + 0 + + + true + 0 + + + + ARTIFACT_GEAR_02 + + + + + ARTF_CLASS_MINOR + MISCSLOT1 + + 0 + 0 + false + + 0 + 0 + 0 + 0 + 0 + 0 + + + true + 0 + + + + + ARTIFACT_POTION01 + + + + + ARTF_CLASS_MINOR + MISCSLOT1 + + 5000 + 0 + false + + 0 + 0 + 0 + 0 + 0 + 0 + + + true + 0 + + + + ARTIFACT_POTION02 + + + + + ARTF_CLASS_MAJOR + MISCSLOT1 + + 7000 + 0 + false + + 0 + 0 + 0 + 0 + 0 + 0 + + + true + 0 + + + + ARTIFACT_POTION03 + + + + + ARTF_CLASS_RELIC + MISCSLOT1 + + 9000 + 0 + false + + 0 + 0 + 0 + 0 + 0 + 0 + + + true + 0 + + + + + diff --git a/GameMechanics/RefTables/CombatAbilities.xdb b/GameMechanics/RefTables/CombatAbilities.xdb new file mode 100644 index 00000000..4469e749 --- /dev/null +++ b/GameMechanics/RefTables/CombatAbilities.xdb @@ -0,0 +1,1668 @@ + + + + + ABILITY_NONE + + + + + SPELL_NONE + + + + ABILITY_SHOOTER + + + + + SPELL_NONE + + + + ABILITY_NO_MELEE_PENALTY + + + + + SPELL_NONE + + + + ABILITY_NO_RANGE_PENALTY + + + + + SPELL_NONE + + + + ABILITY_RANGE_PENALTY + + + + + SPELL_NONE + + + + ABILITY_NO_ENEMY_RETALIATION + + + + + SPELL_NONE + + + + ABILITY_UNLIMITED_RETALIATION + + + + + SPELL_NONE + + + + ABILITY_DOUBLE_ATTACK + + + + + SPELL_NONE + + + + ABILITY_DOUBLE_SHOT + + + + + SPELL_NONE + + + + ABILITY_MECHANICAL + + + + + SPELL_NONE + + + + ABILITY_UNDEAD + + + + + SPELL_NONE + + + + ABILITY_DEMONIC + + + + + SPELL_NONE + + + + ABILITY_ELEMENTAL + + + + + SPELL_NONE + + + + ABILITY_CURSING_ATTACK + + + + + + + SPELL_NONE + + + + ABILITY_FLESH_AND_BLOOD + + + + + SPELL_NONE + + + + ABILITY_ENRAGED + + + + + SPELL_NONE + + + + ABILITY_IMMUNITY_TO_BLIND + + + + + SPELL_NONE + + + + ABILITY_IMMUNITY_TO_MAGIC + + + + + SPELL_NONE + + + + ABILITY_IMMUNITY_TO_SLOW + + + + + SPELL_NONE + + + + ABILITY_IMMUNITY_TO_MIND_CONTROL + + + + + SPELL_NONE + + + + ABILITY_IMMUNITY_TO_AIR + + + + + SPELL_NONE + + + + ABILITY_IMMUNITY_TO_FIRE + + + + + SPELL_NONE + + + + ABILITY_IMMUNITY_TO_WATER + + + + + SPELL_NONE + + + + ABILITY_IMMUNITY_TO_EARTH + + + + + SPELL_NONE + + + + ABILITY_MAGIC_PROOF_50 + + + + + SPELL_NONE + + + + ABILITY_PRECISE_SHOT + + + + + SPELL_NONE + + + + ABILITY_LARGE_SHIELD + + + + + SPELL_NONE + + + + ABILITY_SHIELD_OTHER + + + + + SPELL_NONE + + + + ABILITY_JOUSTING + + + + + SPELL_NONE + + + + ABILITY_BASH + + + + + + + SPELL_NONE + + + + ABILITY_BATTLE_DIVE + + + + + SPELL_ABILITY_BATTLE_DIVE + + + + ABILITY_MANA_DESTROYER + + + + + SPELL_NONE + + + + ABILITY_MANA_STEALER + + + + + + + SPELL_ABILITY_DASH + + + + ABILITY_EXPLOSION + + + + + SPELL_ABILITY_EXPLOSION + + + + ABILITY_RANGED_RETALIATE + + + + + SPELL_NONE + + + + ABILITY_FEAR + + + + + SPELL_NONE + + + + ABILITY_FRIGHT_AURA + + + + + SPELL_NONE + + + + ABILITY_VORPAL_SWORD + + + + + + + SPELL_NONE + + + + ABILITY_CHAIN_SHOT + + + + + SPELL_NONE + + + + ABILITY_WEAKENING_STRIKE + + + + + + + SPELL_NONE + + + + ABILITY_INCORPOREAL + + + + + + + SPELL_NONE + + + + ABILITY_MANA_DRAIN + + + + + + + SPELL_NONE + + + + ABILITY_LIFE_DRAIN + + + + + + + SPELL_NONE + + + + ABILITY_DEATH_CLOUD + + + + + SPELL_NONE + + + + ABILITY_ELVES_DOUBLE_SHOT + + + + + SPELL_NONE + + + + ABILITY_WARDING_ARROWS + + + + + + + SPELL_NONE + + + + ABILITY_BLINDING_ATTACK + + + + + + + SPELL_NONE + + + + ABILITY_AURA_OF_MAGIC_RESISTANCE + + + + + SPELL_NONE + + + + ABILITY_TAKE_ROOTS + + + + + SPELL_NONE + + + + ABILITY_ENTANGLING_ROOTS + + + + + + + SPELL_NONE + + + + ABILITY_ACID_BREATH + + + + + SPELL_NONE + + + + ABILITY_MAGIC_ATTACK + + + + + SPELL_NONE + + + + ABILITY_ENERGY_CHANNEL + + + + + SPELL_NONE + + + + ABILITY_MAGIC_PROOF_75 + + + + + SPELL_NONE + + + + ABILITY_POISONOUS_ATTACK + + + + + + + SPELL_NONE + + + + ABILITY_STRIKE_AND_RETURN + + + + + SPELL_NONE + + + + ABILITY_BRAVERY + + + + + SPELL_NONE + + + + ABILITY_RIDER_CHARGE + + + + + SPELL_NONE + + + + ABILITY_LIZARD_BITE + + + + + SPELL_NONE + + + + ABILITY_SIX_HEADED_ATTACK + + + + + SPELL_NONE + + + + ABILITY_REGENERATION + + + + + SPELL_NONE + + + + ABILITY_WHIP_STRIKE + + + + + + + SPELL_NONE + + + + ABILITY_FIRE_SHIELD + + + + + + + SPELL_NONE + + + + ABILITY_DEADLY_STRIKE + + + + + + + SPELL_NONE + + + + ABILITY_REBIRTH + + + + + + + SPELL_NONE + + + + ABILITY_FRIGHTFUL_PRESENCE + + + + + SPELL_NONE + + + + ABILITY_CRYSTAL_SCALES + + + + + SPELL_NONE + + + + ABILITY_LARGE_CREATURE + + + + + SPELL_NONE + + + + ABILITY_FLYER + + + + + SPELL_NONE + + + + ABILITY_CASTER + + + + + SPELL_NONE + + + + ABILITY_TAXPAYER + + + + + SPELL_NONE + + + + ABILITY_SCATTER_SHOT + + + + + SPELL_ABILITY_SCATTER_SHOT + + + + ABILITY_RESURRECT_ALLIES + + + + + SPELL_ABILITY_RESURRECT_ALLIES + + + + ABILITY_BALOR_SUMMONIG + + + + + SPELL_ABILITY_SUMMON_BALOR + + + + ABILITY_SPRAY_ATTACK + + + + + SPELL_NONE + + + + ABILITY_MANA_FEED + + + + + SPELL_ABILITY_MANA_FEED + + + + ABILITY_FIRE_BREATH + + + + + SPELL_NONE + + + + ABILITY_HARM_TOUCH + + + + + SPELL_ABILITY_HARM_TOUCH + + + + ABILITY_WAR_DANCE + + + + + SPELL_NONE + + + + ABILITY_REPAIR + + + + + SPELL_ABILITY_REPAIR + + + + ABILITY_RANDOM_CASTER + + + + + SPELL_ABILITY_RANDOM_CAST_DARK + + + + ABILITY_DASH + + + + + SPELL_ABILITY_DASH + + + + ABILITY_CALL_LIGHTNING + + + + + SPELL_ABILITY_CALL_LIGHTNING + + + + ABILITY_LAY_HANDS + + + + + SPELL_ABILITY_LAY_HANDS + + + + ABILITY_THREE_HEADED_ATTACK + + + + + SPELL_NONE + + + + ABILITY_ARMORED + + + + + SPELL_NONE + + + + ABILITY_SHIELD_WALL + + + + + SPELL_NONE + + + + ABILITY_WOUND + + + + + + + SPELL_NONE + + + + ABILITY_PAW_STRIKE + + + + + + + SPELL_NONE + + + + ABILITY_BERSERKER_RAGE + + + + + SPELL_ABILITY_BERSERKER_RAGE + + + + ABILITY_STORMBOLT + + + + + + + SPELL_ABILITY_STORMBOLT + + + + ABILITY_STORMSTRIKE + + + + + + + SPELL_NONE + + + + ABILITY_MARK_OF_FIRE + + + + + + + SPELL_NONE + + + + ABILITY_CROSS_ATTACK + + + + + SPELL_NONE + + + + ABILITY_MAGMA_SHIELD + + + + + + + SPELL_NONE + + + + ABILITY_PACK_HUNTER + + + + + SPELL_NONE + + + + ABILITY_HOWL + + + + + + + SPELL_NONE + + + + ABILITY_AGILITY + + + + + SPELL_NONE + + + + ABILITY_HEXING_ATTACK + + + + + + + SPELL_NONE + + + + ABILITY_CLEAVE + + + + + + + SPELL_NONE + + + + ABILITY_BATTLE_FRENZY + + + + + SPELL_NONE + + + + ABILITY_PACK_DIVE + + + + + SPELL_ABILITY_PACK_DIVE + + + + ABILITY_CHAMPION_CHARGE + + + + + SPELL_NONE + + + + ABILITY_PURGER + + + + + + + SPELL_NONE + + + + ABILITY_BLADE_BARRIER + + + + + + + SPELL_NONE + + + + ABILITY_DEMON_RAGED + + + + + SPELL_NONE + + + + ABILITY_COWARDICE + + + + + + + SPELL_NONE + + + + ABILITY_TREACHERY + + + + + + + SPELL_NONE + + + + ABILITY_SET_SNARES + + + + + SPELL_ABILITY_SET_SNARES + + + + ABILITY_DEFILE_MAGIC + + + + + SPELL_ABILITY_DEFILE_MAGIC + + + + ABILITY_MANEURE + + + + + + + SPELL_NONE + + + + ABILITY_BRUTALITY + + + + + SPELL_NONE + + + + ABILITY_TAUNT + + + + + + + SPELL_NONE + + + + ABILITY_FIERCE_RETALIATION + + + + + SPELL_NONE + + + + ABILITY_SACRIFICE_GOBLIN + + + + + SPELL_ABILITY_SACRIFICE_GOBLIN + + + + ABILITY_FAST_ATTACK + + + + + SPELL_NONE + + + + ABILITY_PRESENCE_OF_COMMANDER + + + + + SPELL_NONE + + + + ABILITY_ORDER_OF_THE_CHIEF + + + + + SPELL_ABILITY_ORDER_OF_THE_CHIEF + + + + ABILITY_VENOM + + + + + + + SPELL_NONE + + + + ABILITY_SCAVENGER + + + + + SPELL_ABILITY_SCAVENGER + + + + ABILITY_LIGHTNING_BREATH + + + + + + + SPELL_NONE + + + + ABILITY_SWALLOW_GOBLIN + + + + + SPELL_ABILITY_SWALLOW_GOBLIN + + + + ABILITY_GOBLIN_THROWER + + + + + SPELL_NONE + + + + ABILITY_CRUSHING_BLOW + + + + + SPELL_NONE + + + + ABILITY_EVIL_EYE + + + + + + + SPELL_NONE + + + + ABILITY_RANDOM_CASTER_BLESS + + + + + SPELL_ABILITY_RANDOM_CAST_DARK_LIGHT + + + + ABILITY_SYPHON_MANA + + + + + + + SPELL_ABILITY_SYPHON_MANA + + + + ABILITY_SEARING_AURA + + + + + + + SPELL_NONE + + + + ABILITY_AXE_OF_SLAUGHTER + + + + + + + SPELL_NONE + + + + ABILITY_SUMMON_OTHER + + + + + SPELL_ABILITY_SUMMON_OTHER + + + + ABILITY_SEDUCE + + + + + SPELL_ABILITY_SEDUCE + + + + ABILITY_LEAP + + + + + SPELL_ABILITY_LEAP + + + + ABILITY_DEATH_WAIL + + + + + SPELL_NONE + + + + ABILITY_WEAKENING_AURA + + + + + SPELL_NONE + + + + ABILITY_AMMO_STEAL + + + + + SPELL_ABILITY_AMMO_STEAL + + + + ABILITY_SLEEPING_STRIKE + + + + + + + SPELL_NONE + + + + ABILITY_SORROW_STRIKE + + + + + + + SPELL_NONE + + + + ABILITY_HORROR_OF_THE_DEATH + + + + + SPELL_NONE + + + + ABILITY_PIERCING_ARROW + + + + + + + SPELL_NONE + + + + ABILITY_TREEANT_UNION + + + + + SPELL_ABILITY_TREEANT_UNION + + + + ABILITY_RAGE_OF_THE_FOREST + + + + + SPELL_ABILITY_RAGE_OF_THE_FOREST + + + + ABILITY_POWER_FEED + + + + + SPELL_ABILITY_POWER_FEED + + + + ABILITY_RAINBOW_BREATH + + + + + SPELL_NONE + + + + ABILITY_BOND_OF_LIGHT + + + + + SPELL_NONE + + + + ABILITY_WHIRLWIND + + + + + SPELL_NONE + + + + ABILITY_ELDRITCH_AURA + + + + + SPELL_NONE + + + + ABILITY_AURA_OF_FIRE_VULNERABILITY + + + + + SPELL_NONE + + + + ABILITY_AURA_OF_ICE_VULNERABILITY + + + + + SPELL_NONE + + + + ABILITY_AURA_OF_LIGHTNING_VULNERABILITY + + + + + SPELL_NONE + + + + ABILITY_AURA_OF_EARTH_VULNERABILITY + + + + + SPELL_NONE + + + + ABILITY_CALL_STORM + + + + + SPELL_ABILITY_CALL_STORM + + + + ABILITY_SABOTAGE + + + + + SPELL_ABILITY_SABOTAGE + + + + ABILITY_LUCK_GAMBLER + + + + + SPELL_ABILITY_LUCK_GAMBLER + + + + ABILITY_ENCHANTED_OBSIDIAN + + + + + SPELL_NONE + + + + ABILITY_ACID_BLOOD + + + + + + + SPELL_NONE + + + + ABILITY_AURA_OF_BRAVERY + + + + + SPELL_NONE + + + + ABILITY_INCINERATE + + + + + SPELL_ABILITY_INCINERATE + + + + ABILITY_INVISIBILITY + + + + + SPELL_ABILITY_INVISIBILITY + + + + ABILITY_RIDE_BY_ATTACK + + + + + + + SPELL_NONE + + + + ABILITY_ANTI_GIANT + + + + + SPELL_NONE + + + + ABILITY_AVENGING_FLAME + + + + + + + SPELL_NONE + + + + ABILITY_PREPARED_POSITION + + + + + SPELL_NONE + + + + ABILITY_BATTLE_RAGE + + + + + SPELL_NONE + + + + ABILITY_HARPOON_STRIKE + + + + + SPELL_ABILITY_HARPOON_STRIKE + + + + ABILITY_BEAR_ROAR + + + + + SPELL_NONE + + + + ABILITY_HOLD_GROUND + + + + + SPELL_NONE + + + + ABILITY_FLAMEWAVE + + + + + SPELL_NONE + + + + ABILITY_FLAMESTRIKE + + + + + + + SPELL_ABILITY_FLAMESTRIKE + + + + ABILITY_LIQUID_FLAME_BREATH + + + + + SPELL_NONE + + + + ABILITY_IMMUNITY_TO_CURSE + + + + + SPELL_NONE + + + + ABILITY_IMMUNITY_TO_BERSERK + + + + + SPELL_NONE + + + + ABILITY_IMMUNITY_TO_HYPNOTIZE + + + + + SPELL_NONE + + + + ABILITY_MAGIC_PROOF_25 + + + + + SPELL_NONE + + + + ABILITY_FIRE_PROOF_50 + + + + + SPELL_NONE + + + + ABILITY_DESTRUCTION_MAGIC_MAGNETISM + + + + + SPELL_NONE + + + + diff --git a/GameMechanics/RefTables/HeroClass.xdb b/GameMechanics/RefTables/HeroClass.xdb new file mode 100644 index 00000000..8ea4b6b8 --- /dev/null +++ b/GameMechanics/RefTables/HeroClass.xdb @@ -0,0 +1,1419 @@ + + + + + HERO_CLASS_NONE + + + + + 0 + 0 + 0 + 0 + + + + + + HERO_CLASS_KNIGHT + + + + + HERO_SKILL_LEADERSHIP + 10 + + + HERO_SKILL_DEFENCE + 10 + + + HERO_SKILL_TRAINING + 12 + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_OFFENCE + 12 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_DARK_MAGIC + 8 + + + + 45 + 35 + 10 + 10 + + + + + + HERO_CLASS_RANGERA + + + + + HERO_SKILL_LOGISTICS + 12 + + + HERO_SKILL_LUCK + 12 + + + HERO_SKILL_AVENGER + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LEADERSHIP + 8 + + + HERO_SKILL_TRAINING + 12 + + + HERO_SKILL_OFFENCE + 10 + + + HERO_SKILL_WAR_MACHINES + 8 + + + HERO_SKILL_LIGHT_MAGIC + 10 + + + + 45 + 30 + 10 + 15 + + + + + + HERO_CLASS_RANGER + + + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_DEFENCE + 12 + + + HERO_SKILL_LEADERSHIP + 12 + + + HERO_SKILL_TRAINING + 12 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_WAR_MACHINES + 10 + + + HERO_SKILL_LIGHT_MAGIC + 10 + + + + 35 + 40 + 10 + 15 + + + + + + HERO_CLASS_WIZARDA + + + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_SUMMONING_MAGIC + 10 + + + HERO_SKILL_ARTIFICIER + 12 + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_LIGHT_MAGIC + 10 + + + HERO_SKILL_INVOCATION + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 12 + + + HERO_SKILL_DARK_MAGIC + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_OFFENCE + 8 + + + + 5 + 15 + 40 + 40 + + + + + + HERO_CLASS_WIZARD + + + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_OFFENCE + 12 + + + HERO_SKILL_GATING + 10 + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LEADERSHIP + 10 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_DARK_MAGIC + 8 + + + HERO_SKILL_TRAINING + 12 + + + + 50 + 25 + 10 + 15 + + + + + + HERO_CLASS_DEMON_LORD + + + + + HERO_SKILL_LEARNING + 10 + + + HERO_SKILL_DARK_MAGIC + 12 + + + HERO_SKILL_TRAINING + 8 + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_LIGHT_MAGIC + 8 + + + HERO_SKILL_WAR_MACHINES + 10 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 8 + + + HERO_SKILL_GATING + 12 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_OFFENCE + 12 + + + + 35 + 15 + 30 + 20 + + + + + + HERO_CLASS_NECROMANCER + + + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_DEFENCE + 12 + + + HERO_SKILL_RUNELORE + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_OFFENCE + 10 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEADERSHIP + 10 + + + HERO_SKILL_LIGHT_MAGIC + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_TRAINING + 12 + + + + 35 + 40 + 15 + 10 + + + + + + HERO_CLASS_NECROMANCERA + + + + + HERO_SKILL_NECROMANCY + 24 + + + HERO_SKILL_LIGHT_MAGIC + 8 + + + HERO_SKILL_SUMMONING_MAGIC + 12 + + + HERO_SKILL_DARK_MAGIC + 10 + + + HERO_SKILL_DEFENCE + 10 + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_INVOCATION + 8 + + + HERO_SKILL_LUCK + 8 + + + + 15 + 25 + 35 + 25 + + + + + + HERO_CLASS_WARLOCK + + + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 12 + + + HERO_SKILL_INVOCATION + 12 + + + HERO_SKILL_SORCERY + 12 + + + HERO_SKILL_SUMMONING_MAGIC + 10 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_NECROMANCY + 8 + + + HERO_SKILL_LEARNING + 10 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_DARK_MAGIC + 8 + + + + 15 + 10 + 45 + 30 + + + + + + HERO_CLASS_WARLOCKB + + + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_NECROMANCY + 8 + + + HERO_SKILL_INVOCATION + 12 + + + HERO_SKILL_SORCERY + 12 + + + HERO_SKILL_SUMMONING_MAGIC + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 10 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_DARK_MAGIC + 10 + + + + 20 + 10 + 40 + 30 + + + + + + HERO_CLASS_SHAMAN + + + + + HERO_SKILL_OFFENCE + 12 + + + HERO_SKILL_INVOCATION + 8 + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_SUMMONING_MAGIC + 10 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LIGHT_MAGIC + 10 + + + + 20 + 20 + 30 + 30 + + + + + + HERO_CLASS_RUNEMAGE + + + + + HERO_SKILL_NECROMANCY + 10 + + + + + HERO_SKILL_DARK_MAGIC + 10 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_TRAINING + 12 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_OFFENCE + 12 + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_LEADERSHIP + 8 + + + HERO_SKILL_LUCK + 8 + + + + 40 + 35 + 5 + 20 + + + + + + HERO_CLASS_RUNEMAGEA + + + + + HERO_SKILL_WAR_MACHINES + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_RUNELORE + 12 + + + + HERO_SKILL_LEARNING + 10 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_SUMMONING_MAGIC + 10 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_DARK_MAGIC + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 8 + + + HERO_SKILL_LIGHT_MAGIC + 12 + + + + 30 + 20 + 30 + 20 + + + + + + HERO_CLASS_BARBARIAN + + + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_DEMONIC_RAGE + 12 + + + + HERO_SKILL_TRAINING + 12 + + + HERO_SKILL_OFFENCE + 10 + + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEADERSHIP + 10 + + + + HERO_SKILL_LOGISTICS + 8 + + + + + 50 + 35 + 0 + 15 + + + + + + HERO_CLASS_WARDEN + + + + + HERO_SKILL_LOGISTICS + 10 + + + HERO_SKILL_TRAINING + 12 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_WAR_MACHINES + 8 + + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 8 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_LEADERSHIP + 10 + + + HERO_SKILL_DARK_MAGIC + 10 + + + HERO_SKILL_AVENGER + 12 + + + + 35 + 25 + 15 + 25 + + + + + + HERO_CLASS_HERETIC + + + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_SUMMONING_MAGIC + 8 + + + HERO_SKILL_SORCERY + 12 + + + + HERO_SKILL_WAR_MACHINES + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 12 + + + HERO_SKILL_DARK_MAGIC + 12 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_INVOCATION + 10 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_OFFENCE + 10 + + + + 25 + 10 + 40 + 25 + + + + + + HERO_CLASS_REAVER + + + + + HERO_SKILL_NECROMANCY + 24 + + + HERO_SKILL_DARK_MAGIC + 12 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_SUMMONING_MAGIC + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 10 + + + HERO_SKILL_INVOCATION + 12 + + + HERO_SKILL_SORCERY + 10 + + + HERO_SKILL_LUCK + 8 + + + + + 10 + 15 + 50 + 25 + + + + + + HERO_CLASS_FLAMEKEEPERA + + + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 12 + + + HERO_SKILL_INVOCATION + 12 + + + HERO_SKILL_SORCERY + 12 + + + HERO_SKILL_SUMMONING_MAGIC + 10 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_RUNELORE + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LIGHT_MAGIC + 10 + + + + 10 + 15 + 45 + 30 + + + + + + HERO_CLASS_BEASTMASTER + + + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_OFFENCE + 12 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEADERSHIP + 12 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_TRAINING + 10 + + + HERO_SKILL_NECROMANCY + 10 + + + HERO_SKILL_DARK_MAGIC + 10 + + + + 40 + 30 + 10 + 20 + + + + + + HERO_CLASS_GUILDMASTER + + + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_TRAINING + 8 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_OFFENCE + 10 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEADERSHIP + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_ARTIFICIER + 10 + + + HERO_SKILL_DARK_MAGIC + 8 + + + HERO_SKILL_LIGHT_MAGIC + 12 + + + + 35 + 35 + 0 + 30 + + + + + + HERO_CLASS_SEER + + + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_OFFENCE + 10 + + + HERO_SKILL_LUCK + 12 + + + HERO_SKILL_WAR_MACHINES + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_INVOCATION + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 10 + + + HERO_SKILL_LIGHT_MAGIC + 8 + + + HERO_SKILL_NECROMANCY + 8 + + + HERO_SKILL_DARK_MAGIC + 12 + + + + 30 + 10 + 40 + 20 + + + + + + HERO_CLASS_ENCHANTER + + + + + HERO_SKILL_INVOCATION + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_LUCK + 12 + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_WAR_MACHINES + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 10 + + + HERO_SKILL_LIGHT_MAGIC + 10 + + + HERO_SKILL_SUMMONING_MAGIC + 12 + + + + + 10 + 20 + 40 + 30 + + + + + + HERO_CLASS_SORCERER + + + + + HERO_SKILL_GATING + 10 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_SORCERY + 12 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_INVOCATION + 12 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 12 + + + HERO_SKILL_NECROMANCY + 8 + + + HERO_SKILL_SUMMONING_MAGIC + 10 + + + HERO_SKILL_DARK_MAGIC + 8 + + + + 15 + 10 + 45 + 30 + + + + + + HERO_CLASS_ELEMENTALIST + + + + + HERO_SKILL_LEARNING + 10 + + + HERO_SKILL_SUMMONING_MAGIC + 12 + + + HERO_SKILL_ARTIFICIER + 8 + + + HERO_SKILL_SORCERY + 10 + + + + HERO_SKILL_INVOCATION + 12 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 12 + + + HERO_SKILL_DARK_MAGIC + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_OFFENCE + 8 + + + + 5 + 35 + 30 + 30 + + + + + + diff --git a/GameMechanics/RefTables/HeroClass.xdb.bak b/GameMechanics/RefTables/HeroClass.xdb.bak new file mode 100644 index 00000000..8ea4b6b8 --- /dev/null +++ b/GameMechanics/RefTables/HeroClass.xdb.bak @@ -0,0 +1,1419 @@ + + + + + HERO_CLASS_NONE + + + + + 0 + 0 + 0 + 0 + + + + + + HERO_CLASS_KNIGHT + + + + + HERO_SKILL_LEADERSHIP + 10 + + + HERO_SKILL_DEFENCE + 10 + + + HERO_SKILL_TRAINING + 12 + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_OFFENCE + 12 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_DARK_MAGIC + 8 + + + + 45 + 35 + 10 + 10 + + + + + + HERO_CLASS_RANGERA + + + + + HERO_SKILL_LOGISTICS + 12 + + + HERO_SKILL_LUCK + 12 + + + HERO_SKILL_AVENGER + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LEADERSHIP + 8 + + + HERO_SKILL_TRAINING + 12 + + + HERO_SKILL_OFFENCE + 10 + + + HERO_SKILL_WAR_MACHINES + 8 + + + HERO_SKILL_LIGHT_MAGIC + 10 + + + + 45 + 30 + 10 + 15 + + + + + + HERO_CLASS_RANGER + + + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_DEFENCE + 12 + + + HERO_SKILL_LEADERSHIP + 12 + + + HERO_SKILL_TRAINING + 12 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_WAR_MACHINES + 10 + + + HERO_SKILL_LIGHT_MAGIC + 10 + + + + 35 + 40 + 10 + 15 + + + + + + HERO_CLASS_WIZARDA + + + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_SUMMONING_MAGIC + 10 + + + HERO_SKILL_ARTIFICIER + 12 + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_LIGHT_MAGIC + 10 + + + HERO_SKILL_INVOCATION + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 12 + + + HERO_SKILL_DARK_MAGIC + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_OFFENCE + 8 + + + + 5 + 15 + 40 + 40 + + + + + + HERO_CLASS_WIZARD + + + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_OFFENCE + 12 + + + HERO_SKILL_GATING + 10 + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LEADERSHIP + 10 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_DARK_MAGIC + 8 + + + HERO_SKILL_TRAINING + 12 + + + + 50 + 25 + 10 + 15 + + + + + + HERO_CLASS_DEMON_LORD + + + + + HERO_SKILL_LEARNING + 10 + + + HERO_SKILL_DARK_MAGIC + 12 + + + HERO_SKILL_TRAINING + 8 + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_LIGHT_MAGIC + 8 + + + HERO_SKILL_WAR_MACHINES + 10 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 8 + + + HERO_SKILL_GATING + 12 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_OFFENCE + 12 + + + + 35 + 15 + 30 + 20 + + + + + + HERO_CLASS_NECROMANCER + + + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_DEFENCE + 12 + + + HERO_SKILL_RUNELORE + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_OFFENCE + 10 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEADERSHIP + 10 + + + HERO_SKILL_LIGHT_MAGIC + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_TRAINING + 12 + + + + 35 + 40 + 15 + 10 + + + + + + HERO_CLASS_NECROMANCERA + + + + + HERO_SKILL_NECROMANCY + 24 + + + HERO_SKILL_LIGHT_MAGIC + 8 + + + HERO_SKILL_SUMMONING_MAGIC + 12 + + + HERO_SKILL_DARK_MAGIC + 10 + + + HERO_SKILL_DEFENCE + 10 + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_INVOCATION + 8 + + + HERO_SKILL_LUCK + 8 + + + + 15 + 25 + 35 + 25 + + + + + + HERO_CLASS_WARLOCK + + + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 12 + + + HERO_SKILL_INVOCATION + 12 + + + HERO_SKILL_SORCERY + 12 + + + HERO_SKILL_SUMMONING_MAGIC + 10 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_NECROMANCY + 8 + + + HERO_SKILL_LEARNING + 10 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_DARK_MAGIC + 8 + + + + 15 + 10 + 45 + 30 + + + + + + HERO_CLASS_WARLOCKB + + + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_NECROMANCY + 8 + + + HERO_SKILL_INVOCATION + 12 + + + HERO_SKILL_SORCERY + 12 + + + HERO_SKILL_SUMMONING_MAGIC + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 10 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_DARK_MAGIC + 10 + + + + 20 + 10 + 40 + 30 + + + + + + HERO_CLASS_SHAMAN + + + + + HERO_SKILL_OFFENCE + 12 + + + HERO_SKILL_INVOCATION + 8 + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_SUMMONING_MAGIC + 10 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LIGHT_MAGIC + 10 + + + + 20 + 20 + 30 + 30 + + + + + + HERO_CLASS_RUNEMAGE + + + + + HERO_SKILL_NECROMANCY + 10 + + + + + HERO_SKILL_DARK_MAGIC + 10 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_TRAINING + 12 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_OFFENCE + 12 + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_LEADERSHIP + 8 + + + HERO_SKILL_LUCK + 8 + + + + 40 + 35 + 5 + 20 + + + + + + HERO_CLASS_RUNEMAGEA + + + + + HERO_SKILL_WAR_MACHINES + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_RUNELORE + 12 + + + + HERO_SKILL_LEARNING + 10 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_SUMMONING_MAGIC + 10 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_DARK_MAGIC + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 8 + + + HERO_SKILL_LIGHT_MAGIC + 12 + + + + 30 + 20 + 30 + 20 + + + + + + HERO_CLASS_BARBARIAN + + + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_DEMONIC_RAGE + 12 + + + + HERO_SKILL_TRAINING + 12 + + + HERO_SKILL_OFFENCE + 10 + + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEADERSHIP + 10 + + + + HERO_SKILL_LOGISTICS + 8 + + + + + 50 + 35 + 0 + 15 + + + + + + HERO_CLASS_WARDEN + + + + + HERO_SKILL_LOGISTICS + 10 + + + HERO_SKILL_TRAINING + 12 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_WAR_MACHINES + 8 + + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 8 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_LEADERSHIP + 10 + + + HERO_SKILL_DARK_MAGIC + 10 + + + HERO_SKILL_AVENGER + 12 + + + + 35 + 25 + 15 + 25 + + + + + + HERO_CLASS_HERETIC + + + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_SUMMONING_MAGIC + 8 + + + HERO_SKILL_SORCERY + 12 + + + + HERO_SKILL_WAR_MACHINES + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 12 + + + HERO_SKILL_DARK_MAGIC + 12 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_INVOCATION + 10 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_OFFENCE + 10 + + + + 25 + 10 + 40 + 25 + + + + + + HERO_CLASS_REAVER + + + + + HERO_SKILL_NECROMANCY + 24 + + + HERO_SKILL_DARK_MAGIC + 12 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_SUMMONING_MAGIC + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 10 + + + HERO_SKILL_INVOCATION + 12 + + + HERO_SKILL_SORCERY + 10 + + + HERO_SKILL_LUCK + 8 + + + + + 10 + 15 + 50 + 25 + + + + + + HERO_CLASS_FLAMEKEEPERA + + + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 12 + + + HERO_SKILL_INVOCATION + 12 + + + HERO_SKILL_SORCERY + 12 + + + HERO_SKILL_SUMMONING_MAGIC + 10 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_RUNELORE + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LIGHT_MAGIC + 10 + + + + 10 + 15 + 45 + 30 + + + + + + HERO_CLASS_BEASTMASTER + + + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_OFFENCE + 12 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEADERSHIP + 12 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_TRAINING + 10 + + + HERO_SKILL_NECROMANCY + 10 + + + HERO_SKILL_DARK_MAGIC + 10 + + + + 40 + 30 + 10 + 20 + + + + + + HERO_CLASS_GUILDMASTER + + + + + HERO_SKILL_WAR_MACHINES + 12 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_TRAINING + 8 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_OFFENCE + 10 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_LEADERSHIP + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_ARTIFICIER + 10 + + + HERO_SKILL_DARK_MAGIC + 8 + + + HERO_SKILL_LIGHT_MAGIC + 12 + + + + 35 + 35 + 0 + 30 + + + + + + HERO_CLASS_SEER + + + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_OFFENCE + 10 + + + HERO_SKILL_LUCK + 12 + + + HERO_SKILL_WAR_MACHINES + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_INVOCATION + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 10 + + + HERO_SKILL_LIGHT_MAGIC + 8 + + + HERO_SKILL_NECROMANCY + 8 + + + HERO_SKILL_DARK_MAGIC + 12 + + + + 30 + 10 + 40 + 20 + + + + + + HERO_CLASS_ENCHANTER + + + + + HERO_SKILL_INVOCATION + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LEARNING + 12 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_LUCK + 12 + + + HERO_SKILL_SORCERY + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_WAR_MACHINES + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 10 + + + HERO_SKILL_LIGHT_MAGIC + 10 + + + HERO_SKILL_SUMMONING_MAGIC + 12 + + + + + 10 + 20 + 40 + 30 + + + + + + HERO_CLASS_SORCERER + + + + + HERO_SKILL_GATING + 10 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_LEARNING + 8 + + + HERO_SKILL_OFFENCE + 8 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_SORCERY + 12 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_INVOCATION + 12 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 12 + + + HERO_SKILL_NECROMANCY + 8 + + + HERO_SKILL_SUMMONING_MAGIC + 10 + + + HERO_SKILL_DARK_MAGIC + 8 + + + + 15 + 10 + 45 + 30 + + + + + + HERO_CLASS_ELEMENTALIST + + + + + HERO_SKILL_LEARNING + 10 + + + HERO_SKILL_SUMMONING_MAGIC + 12 + + + HERO_SKILL_ARTIFICIER + 8 + + + HERO_SKILL_SORCERY + 10 + + + + HERO_SKILL_INVOCATION + 12 + + + HERO_SKILL_LUCK + 8 + + + HERO_SKILL_DESTRUCTIVE_MAGIC + 12 + + + HERO_SKILL_DARK_MAGIC + 8 + + + HERO_SKILL_LOGISTICS + 8 + + + HERO_SKILL_DEFENCE + 8 + + + HERO_SKILL_OFFENCE + 8 + + + + 5 + 35 + 30 + 30 + + + + + + diff --git a/GameMechanics/RefTables/RMGPresetTable.xdb b/GameMechanics/RefTables/RMGPresetTable.xdb new file mode 100644 index 00000000..67453698 --- /dev/null +++ b/GameMechanics/RefTables/RMGPresetTable.xdb @@ -0,0 +1,7071 @@ + + + + + RACE_SPECIAL + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + 0 + 2 + + + + 0 + 4 + + + + 0 + 0 + + + + + + 100 + + 100 + + 100 + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + + + 4 + 0 + + + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 10 + + + + 6 + 10 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 25 + + + + 6 + 25 + + + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + + + + + + + + + + + + 0.945098 + 0.321569 + 0.113725 + + + 20 + 7 + 3 + 3 + 10 + 10 + + + 0.984314 + 0.423529 + 0.156863 + + + 0.733333 + 0.196078 + 0.0431373 + + + 0.760784 + 0.294118 + 0.294118 + + + 0.815686 + 0.478431 + 0.317647 + + + + + + + RACE_RANDOM_TYPE + + false + + + + + + + + + 100 + + 100 + + 100 + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 0 + + + 20 + 7 + 3 + 3 + 10 + 10 + + + + + + RACE_NO_TYPE + + false + + + + + + + + + 100 + + 100 + + 100 + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 0 + + + + 1 + 1 + 0 + + + + 1 + 1 + 0 + + + + 1 + 1 + 0 + + + + + + 1 + 1 + 0 + + + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + + + 4 + 0 + + + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 10 + + + + 6 + 10 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 25 + + + + 6 + 25 + + + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + + + + + + + + + + + + 0 + 0 + 0 + + + 20 + 7 + 3 + 3 + 30 + 30 + + + 1 + 0.5 + 0.25 + + + 1 + 0.5 + 0 + + + 0.905882 + 0.639216 + 0.0117647 + + + 1 + 0.3 + 0 + + + + + + + RACE_HEAVEN + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + 0 + 2 + + + + 0 + 4 + + + + 0 + 0 + + + + + + 100 + + 100 + + 100 + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 6 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + + + 4 + 0 + + + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 10 + + + + 6 + 10 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 25 + + + + 6 + 25 + + + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + + + + + + + + + + + + 0.392157 + 0.733333 + 0.0156863 + + + 20 + 7 + 3 + 3 + 10 + 10 + + + + + + RACE_PRESERVE + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + 0 + 2 + + + + 0 + 4 + + + + 0 + 0 + + + + + + 100 + + 100 + + 100 + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + + + 4 + 0 + + + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 10 + + + + 6 + 10 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 25 + + + + 6 + 25 + + + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + + + + + + + + + + + + 0.235294 + 0.85098 + 0.215686 + + + 20 + 7 + 3 + 3 + 10 + 10 + + + + + + RACE_ACADEMY + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + 0 + 2 + + + + 0 + 4 + + + + 0 + 0 + + + + + + 100 + + 100 + + 100 + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 2 + 0 + + + + + + 4 + 0 + + + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 10 + + + + 6 + 10 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 25 + + + + 6 + 25 + + + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + + + + + + + + + + + + 0.976471 + 0.952941 + 0.12549 + + + 20 + 7 + 3 + 3 + 10 + 10 + + + + + + RACE_DUNGEON + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + 0 + 2 + + + + 0 + 4 + + + + 0 + 0 + + + + + + 100 + + 100 + + 100 + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + + + 4 + 0 + + + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 10 + + + + 6 + 10 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 25 + + + + 6 + 25 + + + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + + + + + + + + + + + + 0.733333 + 0.137255 + 0.988235 + + + 20 + 7 + 3 + 3 + 10 + 10 + + + 0.5 + 0.5 + 1 + + + 0.6 + 0.35 + 1 + + + 0 + 0.5 + 0.5 + + + 0 + 1 + 1 + + + 0.5 + 0.5 + 0.75 + + + 0 + 0.5 + 0.75 + + + + + + + RACE_NECROMANCY + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + 0 + 2 + + + + 0 + 4 + + + + 0 + 0 + + + + + + 100 + + 100 + + 100 + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + + + 4 + 0 + + + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 10 + + + + 6 + 10 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 25 + + + + 6 + 30 + + + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + + + + + + + + + + + + 0.560784 + 0.360784 + 0.439216 + + + 20 + 7 + 3 + 3 + 10 + 10 + + + + + + RACE_INFERNO + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + 0 + 2 + + + + 0 + 4 + + + + 0 + 0 + + + + + + 100 + + 100 + + 100 + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + + + 4 + 0 + + + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 10 + + + + 6 + 10 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 25 + + + + 6 + 25 + + + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + + + + + + + + + + + + 0.996078 + 0.0627451 + 0.0862745 + + + 20 + 7 + 3 + 3 + 10 + 10 + + + + + + RACE_DWARF + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + 0 + 2 + + + + 0 + 4 + + + + 0 + 0 + + + + + + 100 + + 100 + + 100 + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + + + 4 + 0 + + + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 10 + + + + 6 + 10 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 25 + + + + 6 + 30 + + + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + + + + + + + + + + + + 1 + 0.392157 + 0.101961 + + + 20 + 7 + 3 + 3 + 10 + 10 + + + + + + RACE_STRONGHOLD + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + 0 + 2 + + + + 0 + 4 + + + + 0 + 0 + + + + + + 100 + + 150 + + 100 + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 1 + 0 + + + + 2 + 0 + + + + 2 + 0 + + + + + + 4 + 0 + + + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + 8 + 0 + + + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 10 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 4 + 12 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 20 + + + + 6 + 10 + + + + 6 + 10 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 15 + + + + 6 + 25 + + + + 6 + 25 + + + + + + 2 + 0 + + + + 4 + 0 + + + + 4 + 0 + + + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + 6 + 0 + + + + + + + + + + + + + + + 0.788235 + 0.643137 + 0.203922 + + + 20 + 7 + 3 + 3 + 10 + 10 + + + + + + __RACE_COUNT + + false + + + + + + + + 0 + 0 + + + + 0 + 0 + + + + 0 + 0 + + + + 0 + 0 + + + + + + 100 + + 100 + + 100 + + 100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 0 + + + 20 + 7 + 3 + 3 + 10 + 10 + + + + + + diff --git a/GameMechanics/RefTables/Skills.xdb b/GameMechanics/RefTables/Skills.xdb new file mode 100644 index 00000000..5da34472 --- /dev/null +++ b/GameMechanics/RefTables/Skills.xdb @@ -0,0 +1,28677 @@ + + + + + HERO_SKILL_NONE + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LOGISTICS + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WAR_MACHINES + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + SPELL_SKILL_WAR_MACHINES1 + SPELL_SKILL_WAR_MACHINES2 + SPELL_SKILL_WAR_MACHINES3 + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LEARNING + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LEADERSHIP + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + SPELL_SKILL_LEADERSHIP1 + SPELL_SKILL_LEADERSHIP2 + SPELL_SKILL_LEADERSHIP3 + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LUCK + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + SPELL_SKILL_LUCK1 + SPELL_SKILL_LUCK2 + SPELL_SKILL_LUCK3 + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_OFFENCE + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + SPELL_SKILL_OFFENCE1 + SPELL_SKILL_OFFENCE2 + SPELL_SKILL_OFFENCE3 + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEFENCE + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + SPELL_SKILL_DEFENCE1 + SPELL_SKILL_DEFENCE2 + SPELL_SKILL_DEFENCE3 + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SORCERY + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DARK_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SUMMONING_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 10 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TRAINING + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_GATING + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_NECROMANCY + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_AVENGER + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ARTIFICIER + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_INVOCATION + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PATHFINDING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SCOUTING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_NAVIGATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + HERO_CLASS_KNIGHT + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_RANGER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_REAVER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_SEER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_PATHFINDING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FIRST_AID + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_FIRST_AID + + HERO_SKILL_WAR_MACHINES + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BALLISTA + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_BALLISTA + + HERO_SKILL_WAR_MACHINES + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CATAPULT + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_CATAPULT + + HERO_SKILL_WAR_MACHINES + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_COUNTERSPELL + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SCHOLAR + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_EAGLE_EYE + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DIPLOMACY + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ESTATES + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RECRUITMENT + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RESISTANCE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_RESISTANCE + + HERO_SKILL_LUCK + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LUCKY_STRIKE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_LUCKY_STRIKE + + HERO_SKILL_LUCK + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TACTICS + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_OFFENCE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ARCHERY + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_ARCHERY + + HERO_SKILL_OFFENCE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FRENZY + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_FRENZY + + HERO_SKILL_OFFENCE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PROTECTION + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_PROTECTION + + HERO_SKILL_DEFENCE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_EVASION + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_EVASION + + HERO_SKILL_DEFENCE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TOUGHNESS + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_TOUGHNESS + + HERO_SKILL_DEFENCE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WISDOM + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SORCERY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MYSTICISM + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + + + SPELL_DEMON_RAGE_LEVEL_2 + + HERO_SKILL_SORCERY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_WISDOM + + + + HERO_CLASS_RANGER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_HERETIC + + HERO_SKILL_WISDOM + + + + HERO_CLASS_RANGERA + + HERO_SKILL_WISDOM + + + + HERO_CLASS_WARDEN + + HERO_SKILL_WISDOM + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_SORCERER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_WISDOM + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_WISDOM + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_WISDOM + + + + HERO_CLASS_REAVER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_WISDOM + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_WISDOM + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_SEER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_WISDOM + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_WISDOM + + + + HERO_CLASS_WIZARD + + HERO_SKILL_WISDOM + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_WISDOM + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_WISDOM + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_WISDOM + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_WISDOM + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ARCANE_TRAINING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SORCERY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_ICE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + -1000 + -1000 + -1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ANCIENT_SMITHY + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_ANCIENT_SMITHY + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + -1000 + -1000 + -1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_CURSES + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_MIND + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_SICKNESS + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_BLESSING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_ABJURATION + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_WRATH + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_QUAKES + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_CREATURES + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_ANIMATION + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LAST_STAND + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_STUNNING_BLOW + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_TRAINING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_RANGER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_REAVER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_SEER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DEMONIC_STRIKE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BODYBUILDING + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_RUNE_OF_STUNNING + + HERO_SKILL_TRAINING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CONSUME_CORPSE + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEMONIC_FIRE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_DEMONIC_FIRE + + HERO_SKILL_GATING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEMONIC_STRIKE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_TRAINING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CORRUPT_SUMMONING + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEATH_SCREAM + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MULTISHOT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_RANGER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_HERETIC + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_RANGERA + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_WARDEN + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_SORCERER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_REAVER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_SEER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_WIZARD + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_SNIPE_DEAD + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SNIPE_DEAD + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_IMBUE_ARROW + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MAGIC_BOND + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SORCERY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MELT_ARTIFACT + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MAGIC_MIRROR + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_EMPOWERED_SPELLS + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DARK_RITUAL + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ELEMENTAL_VISION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + HERO_CLASS_WARLOCK + + HERO_SKILL_INVOCATION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ROAD_HOME + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_RANGER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_HERETIC + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_RANGERA + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_WARDEN + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_SORCERER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_REAVER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_SEER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_WIZARD + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_LORD_OF_UNDEAD + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TRIPLE_BALLISTA + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_WAR_MACHINES + + + HERO_CLASS_KNIGHT + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_RANGER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_HERETIC + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_SORCERER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_REAVER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_SEER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_WIZARD + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_RUNIC_MACHINES + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ENCOURAGE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_RANGER + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_SEER + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DIPLOMACY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RETRIBUTION + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_OFFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_RANGER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_REAVER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_SEER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_WILDFIRE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_HOLD_GROUND + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_RANGER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_REAVER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_SEER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_POWER_OF_STONE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_GUARDIAN_ANGEL + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_RANGER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_REAVER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_SEER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ETERNAL_LIGHT + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_STUDENT_AWARD + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_RANGER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_HERETIC + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_RANGERA + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_WARDEN + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_SORCERER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_REAVER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_SEER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_WIZARD + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_SCHOLAR + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_GRAIL_VISION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ESTATES + + + + HERO_CLASS_RANGER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ESTATES + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ESTATES + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ESTATES + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ESTATES + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ESTATES + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ESTATES + + + + HERO_CLASS_REAVER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ESTATES + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ESTATES + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_SEER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ESTATES + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ESTATES + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ESTATES + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ESTATES + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ESTATES + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ESTATES + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ESTATES + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CASTER_CERTIFICATE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_RANGER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_REAVER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_SEER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_FIRE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_RANGER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_REAVER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_SEER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ANCIENT_SMITHY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PARIAH + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_RANGER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_REAVER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_SEER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DARK_RITUAL + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ELEMENTAL_BALANCE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_RANGER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_REAVER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_SEER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FIRE_AFFINITY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_CHARGE + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_ANTI_MAGIC + SPELL_ANTI_MAGIC + SPELL_ANTI_MAGIC + + HERO_SKILL_TRAINING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_RANGER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_REAVER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_SEER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_HOLY_CHARGE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_QUICK_GATING + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_RANGER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_REAVER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_SEER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_GATING_MASTERY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_SECRETS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_MIND + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TRIPLE_CATAPULT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_WAR_MACHINES + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_RANGER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_REAVER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_SEER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CATAPULT + + + + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 0 + + + + HERO_SKILL_GATING_MASTERY + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CRITICAL_GATING + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_RANGER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_REAVER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_SEER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_QUICK_GATING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_HOLY_CHARGE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_TRAINING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEMONIC_RETALIATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_RANGER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_REAVER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_SEER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DEMONIC_FIRE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_EXPLODING_CORPSES + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_RANGER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_REAVER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_SEER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CONSUME_CORPSE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEMONIC_FLAME + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_RANGER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_REAVER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_SEER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WEAKENING_STRIKE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_CURSES + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FIRE_PROTECTION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_FIRE_PROTECTION + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_RANGER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_REAVER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_SEER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CORRUPT_LIGHT + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FIRE_AFFINITY + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_CREATURES + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_GATING + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEATH_TREAD + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + HERO_CLASS_KNIGHT + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_RANGER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_REAVER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_SEER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_SCOUTING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LAST_AID + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_WAR_MACHINES + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_RANGER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_REAVER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_SEER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FIRST_AID + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LORD_OF_UNDEAD + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_RANGER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_HERETIC + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_RANGERA + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_WARDEN + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_SORCERER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_REAVER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_SEER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_WIZARD + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_HERALD_OF_DEATH + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_REAVER + + HERO_SKILL_DIPLOMACY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEAD_LUCK + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LUCK + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_RANGER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_REAVER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_SEER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CHAOTIC_SPELLS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CHILLING_STEEL + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CHILLING_BONES + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_CHILLING_BONES + + HERO_SKILL_NECROMANCY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_RANGER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_REAVER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_SEER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CHILLING_STEEL + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SPELLPROOF_BONES + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_RANGER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_REAVER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_SEER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_PROTECTION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEADLY_COLD + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_ICE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SPIRIT_LINK + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_SICKNESS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TWILIGHT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_ABJURATION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_HAUNT_MINE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_FEAR + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DISGUISE_AND_RECKON + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + 0 + + + + HERO_SKILL_IMBUE_BALLISTA + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_RANGER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_REAVER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_SEER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_RANGER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_HERETIC + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_RANGERA + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_WARDEN + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_SORCERER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_REAVER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_SEER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_WIZARD + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_IMBUE_ARROW + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FOREST_GUARD_EMBLEM + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_RANGER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_REAVER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_SEER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FOREST_RAGE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ELVEN_LUCK + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LUCK + + + HERO_CLASS_KNIGHT + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_RANGER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_REAVER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_SEER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_LUCKY_STRIKE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FOREST_RAGE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_EMPATHY + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_RANGER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_REAVER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_SEER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ENCOURAGE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_INSIGHTS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SORCERY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_RANGER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_REAVER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_SEER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MAGIC_BOND + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SUN_FIRE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_RANGER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_REAVER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_SEER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SOIL_BURN + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_RANGER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_REAVER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_SEER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_WEAKENING_STRIKE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_STORM_WIND + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + + SPELL_DEFLECT_ARROWS + SPELL_DEFLECT_ARROWS + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_RANGER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_REAVER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_SEER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FIRE_PROTECTION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FOG_VEIL + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_RANGER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_REAVER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_SEER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CORRUPT_SUMMONING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_LUCK + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MARCH_OF_THE_MACHINES + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_RANGER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_REAVER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_SEER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ARTIFICIAL_GLORY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_REMOTE_CONTROL + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_RANGER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_REAVER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_SEER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ACADEMY_AWARD + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ACADEMY_AWARD + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_RANGER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_REAVER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_SEER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MELT_ARTIFACT + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ARTIFICIAL_GLORY + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SPOILS_OF_WAR + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_RANGER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_HERETIC + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_RANGERA + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_WARDEN + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_SORCERER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_REAVER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_SEER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_WIZARD + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_PATH_OF_WAR + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WILDFIRE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_OFFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_TACTICS + + + + HERO_CLASS_RANGER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_TACTICS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_TACTICS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_TACTICS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_TACTICS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_TACTICS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_TACTICS + + + + HERO_CLASS_REAVER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_TACTICS + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_TACTICS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_SEER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_TACTICS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_TACTICS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_TACTICS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_TACTICS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_TACTICS + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_TACTICS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_TACTICS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SEAL_OF_PROTECTION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_PRAYER + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_RANGER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_REAVER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_SEER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CORRUPT_DARK + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_INTELLIGENCE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_RANGER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_HERETIC + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_RANGERA + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_WARDEN + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_SORCERER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_REAVER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_SEER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_WIZARD + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_COUNTERSPELL + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MAGIC_CUSHION + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_PRAYER + SPELL_PRAYER + SPELL_PRAYER + + HERO_SKILL_SHATTER_DARK_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_RANGER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_REAVER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_SEER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_SEAL_OF_PROTECTION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SUPRESS_DARK + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SUPRESS_LIGHT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_RANGER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_REAVER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_SEER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MAGIC_MIRROR + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_UNSUMMON + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_ANIMATION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_WIZARDY + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TELEPORT_ASSAULT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_WRATH + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SHAKE_GROUND + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_QUAKES + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CORRUPT_LIGHT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_RANGER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_REAVER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_SEER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FINE_RUNE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FAST_AND_FURIOUS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + HERO_CLASS_KNIGHT + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_RANGER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_HERETIC + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_RANGERA + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_WARDEN + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_SORCERER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_REAVER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_SEER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_WIZARD + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_LAST_STAND + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LUCKY_SPELLS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LUCK + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_RANGER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_REAVER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_SEER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DEAD_LUCK + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_POWER_OF_HASTE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_OFFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_RANGER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_REAVER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_SEER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ARCHERY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_POWER_OF_STONE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_BLESS + + HERO_SKILL_DEFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_RANGER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_REAVER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_SEER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_TOUGHNESS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CHAOTIC_SPELLS + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LUCK + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SECRETS_OF_DESTRUCTION + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_DEMON_RAGE_LEVEL_1 + SPELL_DEMON_RAGE_LEVEL_1 + SPELL_DEMON_RAGE_LEVEL_1 + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PAYBACK + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SORCERY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_RANGER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_REAVER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_SEER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ARCANE_TRAINING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ELITE_CASTERS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SORCERY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_RANGER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_REAVER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_SEER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MYSTICISM + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + HERO_CLASS_KNIGHT + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_RANGER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_REAVER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_SEER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_EMPOWERED_SPELLS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_CHAINS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ELEMENTAL_VISION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RUNELORE + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_REFRESH_RUNE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_STRONG_RUNE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FINE_RUNE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_QUICKNESS_OF_MIND + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_RANGER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_REAVER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_SEER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_EAGLE_EYE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RUNIC_MACHINES + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_WAR_MACHINES + + + HERO_CLASS_KNIGHT + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_RANGER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_HERETIC + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_RANGERA + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_WARDEN + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_SORCERER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_REAVER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_SEER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_WIZARD + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_BALLISTA + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TAP_RUNES + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_RANGER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_REAVER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_SEER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DARK_REVELATION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RUNIC_ATTUNEMENT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_RANGER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_REAVER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_SEER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_REFRESH_RUNE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DWARVEN_LUCK + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_DWARVEN_LUCK + + HERO_SKILL_LUCK + + + HERO_CLASS_KNIGHT + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_RANGER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_REAVER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_SEER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_RESISTANCE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_OFFENSIVE_FORMATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_OFFENSIVE_FORMATION + + HERO_SKILL_OFFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FRENZY + + + + HERO_CLASS_RANGER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FRENZY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FRENZY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FRENZY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FRENZY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FRENZY + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FRENZY + + + + HERO_CLASS_REAVER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FRENZY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FRENZY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_SEER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FRENZY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FRENZY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FRENZY + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FRENZY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FRENZY + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FRENZY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FRENZY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEFENSIVE_FORMATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_DEFENSIVE_FORMATION + + HERO_SKILL_DEFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_EVASION + + + + HERO_CLASS_RANGER + + HERO_SKILL_EVASION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_EVASION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_EVASION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_EVASION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_EVASION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_EVASION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_EVASION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_EVASION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_EVASION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_EVASION + + + + HERO_CLASS_REAVER + + HERO_SKILL_EVASION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_EVASION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_EVASION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_EVASION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_EVASION + + + + HERO_CLASS_SEER + + HERO_SKILL_EVASION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_EVASION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_EVASION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_EVASION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_EVASION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_EVASION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_EVASION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_EVASION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DISTRACT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_RANGER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_REAVER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ELEMENTAL_VISION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_SEER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SET_AFIRE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_FIRE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SHRUG_DARKNESS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_RANGER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_REAVER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_SEER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DEATH_SCREAM + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ETERNAL_LIGHT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_BLESSING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RUNIC_ARMOR + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_RANGER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_REAVER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_SEER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_SUN_FIRE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_PROTECTION + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_ABSOLUTE_PROTECTION + + HERO_SKILL_RUNELORE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SNATCH + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + HERO_CLASS_KNIGHT + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_RANGER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_REAVER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_SEER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_NAVIGATION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MENTORING + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_RANGER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_HERETIC + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_RANGERA + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_WARDEN + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_SORCERER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_REAVER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_SEER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_WIZARD + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_STUDENT_AWARD + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PRAYER + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + HERO_CLASS_KNIGHT + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_RANGER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_HERETIC + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_RANGERA + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_WARDEN + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_SORCERER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_SEER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_WIZARD + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_RECRUITMENT + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + -1000 + -1000 + -1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PREPARATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_EFFECT_PREPARATION + + HERO_SKILL_TRAINING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_RANGER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_REAVER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_SEER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ABSOLUTE_CHARGE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_POWERFULL_BLOW + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_TRAINING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_RAGE + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_RANGER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_REAVER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_SEER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_BATTLE_ELATION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PATH_OF_WAR + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BATTLE_ELATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_RANGER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_REAVER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_SEER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LUCK_OF_THE_BARBARIAN + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_LUCK_OF_THE_BARBARIAN + + HERO_SKILL_RUNELORE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CRITICAL_STRIKE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_TRAINING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_RANGER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_HERETIC + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_RANGERA + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_WARDEN + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_SORCERER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_REAVER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_SEER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_WIZARD + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_POWERFULL_BLOW + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEFEND_US_ALL + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_RANGER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_HERETIC + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_RANGERA + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_WARDEN + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_SORCERER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_REAVER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_SEER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_WIZARD + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_GOBLIN_SUPPORT + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_GOBLIN_SUPPORT + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_LEARNING + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_POWER_OF_BLOOD + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_BARBARIAN_LEARNING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WARCRY_LEARNING + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_EFFECT_BATTLE_RAGE + SPELL_EFFECT_BATTLE_RAGE + SPELL_EFFECT_BATTLE_RAGE + + HERO_SKILL_BARBARIAN_LEARNING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_EXPERT_TRAINER + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_ABILITY_BEAR_ROAR + SPELL_ABILITY_BEAR_ROAR + SPELL_ABILITY_BEAR_ROAR + + HERO_SKILL_BARBARIAN_LEARNING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_VOICE + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_VOICE_TRAINING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_VOICE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MIGHTY_VOICE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_VOICE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_RANGER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_REAVER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_SEER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_VOICE_TRAINING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_VOICE_OF_RAGE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_VOICE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + + + SPELL_DEMON_RAGE_LEVEL_1 + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_RUNE_OF_CHARGE + SPELL_RUNE_OF_CHARGE + SPELL_RUNE_OF_CHARGE + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WEAKEN_DESTRUCTIVE + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_ABILITY_RAGE_OF_THE_FOREST + SPELL_ABILITY_RAGE_OF_THE_FOREST + SPELL_ABILITY_RAGE_OF_THE_FOREST + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DETAIN_DESTRUCTIVE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SHATTER_DARK_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + 0 + 0 + + + 0 + + + + HERO_SKILL_CORRUPT_DARK + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_RUNE_OF_ELEMENTAL_IMMUNITY + SPELL_RUNE_OF_ELEMENTAL_IMMUNITY + SPELL_RUNE_OF_ELEMENTAL_IMMUNITY + + HERO_SKILL_SHATTER_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WEAKEN_DARK + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_VAMPIRISM + SPELL_VAMPIRISM + SPELL_VAMPIRISM + + HERO_SKILL_SHATTER_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DETAIN_DARK + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DARK_REVELATION + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_RUNE_OF_ETHEREALNESS + SPELL_RUNE_OF_ETHEREALNESS + SPELL_RUNE_OF_ETHEREALNESS + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WEAKEN_LIGHT + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_DEMON_RAGE_LEVEL_3 + SPELL_DEMON_RAGE_LEVEL_3 + SPELL_DEMON_RAGE_LEVEL_3 + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DETAIN_LIGHT + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + + + + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RAISE_ARCHERS + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WEAKEN_SUMMONING + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_RUNE_OF_BERSERKING + SPELL_RUNE_OF_BERSERKING + SPELL_RUNE_OF_BERSERKING + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DETAIN_SUMMONING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEATH_TO_NONEXISTENT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_DEATH_TO_NONEXISTENT + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_RANGER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_REAVER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_SEER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FOG_VEIL + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_ANCIENT_SMITHY + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_SUN_FIRE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_WEAKENING_STRIKE + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_OFFENCE + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ARCHERY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_SOIL_BURN + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEFENCE + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_HOLD_GROUND + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_FOG_VEIL + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_NONE + SPELL_NONE + SPELL_NONE + + HERO_SKILL_BARBARIAN_LEARNING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_RANGER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_REAVER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_SEER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_WARCRY_LEARNING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_VOICE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_ELITE_CASTERS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_VOICE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_RANGER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_HERETIC + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_RANGERA + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_WARDEN + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_SORCERER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_REAVER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_SEER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_WIZARD + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_STORM_WIND + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_FIRE_PROTECTION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_FIRE_PROTECTION + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_SUN_FIRE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_DISTRACT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_VOICE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_RANGER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_REAVER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_SEER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MIGHTY_VOICE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_DARK_REVELATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_RUNE_OF_ETHEREALNESS + SPELL_RUNE_OF_ETHEREALNESS + SPELL_RUNE_OF_ETHEREALNESS + + HERO_SKILL_VOICE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_RANGER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_REAVER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_SEER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_VOICE_OF_RAGE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_MENTORING + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_BARBARIAN_LEARNING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_RANGER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_REAVER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_SEER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + diff --git a/GameMechanics/RefTables/Skills.xdb.bak b/GameMechanics/RefTables/Skills.xdb.bak new file mode 100644 index 00000000..868480a4 --- /dev/null +++ b/GameMechanics/RefTables/Skills.xdb.bak @@ -0,0 +1,28574 @@ + + + + + HERO_SKILL_NONE + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LOGISTICS + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WAR_MACHINES + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + SPELL_SKILL_WAR_MACHINES1 + SPELL_SKILL_WAR_MACHINES2 + SPELL_SKILL_WAR_MACHINES3 + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LEARNING + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LEADERSHIP + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + SPELL_SKILL_LEADERSHIP1 + SPELL_SKILL_LEADERSHIP2 + SPELL_SKILL_LEADERSHIP3 + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LUCK + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + SPELL_SKILL_LUCK1 + SPELL_SKILL_LUCK2 + SPELL_SKILL_LUCK3 + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_OFFENCE + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + SPELL_SKILL_OFFENCE1 + SPELL_SKILL_OFFENCE2 + SPELL_SKILL_OFFENCE3 + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEFENCE + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + SPELL_SKILL_DEFENCE1 + SPELL_SKILL_DEFENCE2 + SPELL_SKILL_DEFENCE3 + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SORCERY + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DARK_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SUMMONING_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 10 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TRAINING + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_GATING + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_NECROMANCY + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_AVENGER + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ARTIFICIER + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_INVOCATION + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PATHFINDING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SCOUTING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_NAVIGATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + HERO_CLASS_KNIGHT + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_RANGER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_REAVER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_SEER + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_PATHFINDING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_PATHFINDING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FIRST_AID + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_FIRST_AID + + HERO_SKILL_WAR_MACHINES + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BALLISTA + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_BALLISTA + + HERO_SKILL_WAR_MACHINES + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CATAPULT + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_CATAPULT + + HERO_SKILL_WAR_MACHINES + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_COUNTERSPELL + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SCHOLAR + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_EAGLE_EYE + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DIPLOMACY + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ESTATES + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RECRUITMENT + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RESISTANCE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_RESISTANCE + + HERO_SKILL_LUCK + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LUCKY_STRIKE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_LUCKY_STRIKE + + HERO_SKILL_LUCK + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TACTICS + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_OFFENCE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ARCHERY + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_ARCHERY + + HERO_SKILL_OFFENCE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FRENZY + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_FRENZY + + HERO_SKILL_OFFENCE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PROTECTION + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_PROTECTION + + HERO_SKILL_DEFENCE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_EVASION + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_EVASION + + HERO_SKILL_DEFENCE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TOUGHNESS + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_TOUGHNESS + + HERO_SKILL_DEFENCE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WISDOM + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SORCERY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MYSTICISM + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_DEMON_RAGE_LEVEL_1 + SPELL_DEMON_RAGE_LEVEL_1 + SPELL_DEMON_RAGE_LEVEL_1 + + HERO_SKILL_SORCERY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_WISDOM + + + + HERO_CLASS_RANGER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_HERETIC + + HERO_SKILL_WISDOM + + + + HERO_CLASS_RANGERA + + HERO_SKILL_WISDOM + + + + HERO_CLASS_WARDEN + + HERO_SKILL_WISDOM + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_SORCERER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_WISDOM + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_WISDOM + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_WISDOM + + + + HERO_CLASS_REAVER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_WISDOM + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_WISDOM + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_SEER + + HERO_SKILL_WISDOM + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_WISDOM + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_WISDOM + + + + HERO_CLASS_WIZARD + + HERO_SKILL_WISDOM + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_WISDOM + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_WISDOM + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_WISDOM + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_WISDOM + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ARCANE_TRAINING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SORCERY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_ICE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + -1000 + -1000 + -1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ANCIENT_SMITHY + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_ANCIENT_SMITHY + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + -1000 + -1000 + -1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_CURSES + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_MIND + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_SICKNESS + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_BLESSING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_ABJURATION + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_WRATH + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_QUAKES + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_CREATURES + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_ANIMATION + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_EXPERT_TRAINER + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_RUNE_OF_BERSERKING + + HERO_SKILL_TRAINING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LAST_STAND + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_STUNNING_BLOW + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_TRAINING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_RANGER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_REAVER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_SEER + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_DEMONIC_STRIKE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DEMONIC_STRIKE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CONSUME_CORPSE + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEMONIC_FIRE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_SKILL_DEMONIC_FIRE + + HERO_SKILL_GATING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEMONIC_STRIKE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_TRAINING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RAISE_ARCHERS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEATH_SCREAM + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MULTISHOT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_RANGER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_HERETIC + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_RANGERA + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_WARDEN + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_SORCERER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_REAVER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_SEER + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_WIZARD + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_SNIPE_DEAD + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_SNIPE_DEAD + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SNIPE_DEAD + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_IMBUE_ARROW + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MAGIC_BOND + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SORCERY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MELT_ARTIFACT + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MAGIC_MIRROR + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_EMPOWERED_SPELLS + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DARK_RITUAL + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ELEMENTAL_VISION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + HERO_CLASS_WARLOCK + + HERO_SKILL_EMPOWERED_SPELLS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ROAD_HOME + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_RANGER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_HERETIC + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_RANGERA + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_WARDEN + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_SORCERER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_REAVER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_SEER + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_WIZARD + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_LORD_OF_UNDEAD + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_LORD_OF_UNDEAD + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TRIPLE_BALLISTA + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_WAR_MACHINES + + + HERO_CLASS_KNIGHT + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_RANGER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_HERETIC + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_SORCERER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_REAVER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_SEER + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_WIZARD + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_RUNIC_MACHINES + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_RUNIC_MACHINES + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ENCOURAGE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_RANGER + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_SEER + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DIPLOMACY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RETRIBUTION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_OFFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_RANGER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_REAVER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_SEER + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_WILDFIRE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_WILDFIRE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_HOLD_GROUND + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_RANGER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_REAVER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_SEER + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_POWER_OF_STONE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_POWER_OF_STONE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_GUARDIAN_ANGEL + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_RANGER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_REAVER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_SEER + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ETERNAL_LIGHT + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ETERNAL_LIGHT + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_STUDENT_AWARD + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_RANGER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_HERETIC + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_RANGERA + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_WARDEN + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_SORCERER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_REAVER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_SEER + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_WIZARD + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_SCHOLAR + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_SCHOLAR + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_GRAIL_VISION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ESTATES + + + + HERO_CLASS_RANGER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ESTATES + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ESTATES + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ESTATES + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ESTATES + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ESTATES + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ESTATES + + + + HERO_CLASS_REAVER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ESTATES + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ESTATES + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_SEER + + HERO_SKILL_ESTATES + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ESTATES + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ESTATES + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ESTATES + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ESTATES + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ESTATES + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ESTATES + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ESTATES + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CASTER_CERTIFICATE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_RANGER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_REAVER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_SEER + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_FIRE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_RANGER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_REAVER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_SEER + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ANCIENT_SMITHY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ANCIENT_SMITHY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PARIAH + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_RANGER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_REAVER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_SEER + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_DARK_RITUAL + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DARK_RITUAL + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ELEMENTAL_BALANCE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_RANGER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_REAVER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_SEER + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FIRE_AFFINITY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FIRE_AFFINITY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_CHARGE + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_ANTI_MAGIC + SPELL_ANTI_MAGIC + SPELL_ANTI_MAGIC + + HERO_SKILL_TRAINING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_RANGER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_REAVER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_SEER + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_HOLY_CHARGE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_HOLY_CHARGE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_QUICK_GATING + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_RANGER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_REAVER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_SEER + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_GATING_MASTERY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_GATING_MASTERY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MASTER_OF_SECRETS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_MIND + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_MIND + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TRIPLE_CATAPULT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_WAR_MACHINES + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_RANGER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_REAVER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_SEER + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CATAPULT + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CATAPULT + + + + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 1000 + 10 + 1000 + + + 0 + + + + HERO_SKILL_GATING_MASTERY + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CRITICAL_GATING + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_RANGER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_REAVER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_SEER + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_QUICK_GATING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_QUICK_GATING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_HOLY_CHARGE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_TRAINING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEMONIC_RETALIATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_RANGER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_REAVER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_SEER + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_DEMONIC_FIRE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DEMONIC_FIRE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_EXPLODING_CORPSES + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_RANGER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_REAVER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_SEER + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CONSUME_CORPSE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CONSUME_CORPSE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEMONIC_FLAME + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_RANGER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_REAVER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_SEER + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FORTUNATE_ADVENTURER + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WEAKENING_STRIKE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_CURSES + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_CURSES + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FIRE_PROTECTION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_FIRE_PROTECTION + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_RANGER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_REAVER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_SEER + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CORRUPT_LIGHT + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CORRUPT_LIGHT + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FIRE_AFFINITY + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_CREATURES + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_CREATURES + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_GATING + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEATH_TREAD + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + HERO_CLASS_KNIGHT + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_RANGER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_REAVER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_SEER + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_SCOUTING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_SCOUTING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LAST_AID + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_WAR_MACHINES + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_RANGER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_REAVER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_SEER + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FIRST_AID + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FIRST_AID + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LORD_OF_UNDEAD + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_RANGER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_HERETIC + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_RANGERA + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_WARDEN + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_SORCERER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_REAVER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_SEER + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_WIZARD + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_HERALD_OF_DEATH + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DIPLOMACY + + + + HERO_CLASS_REAVER + + HERO_SKILL_DIPLOMACY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEAD_LUCK + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LUCK + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_RANGER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_REAVER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_SEER + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CHAOTIC_SPELLS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CHAOTIC_SPELLS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CHILLING_STEEL + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CHILLING_BONES + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_CHILLING_BONES + + HERO_SKILL_NECROMANCY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_RANGER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_REAVER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_SEER + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CHILLING_STEEL + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CHILLING_STEEL + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SPELLPROOF_BONES + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_RANGER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_REAVER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_SEER + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_PROTECTION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_PROTECTION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEADLY_COLD + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_ICE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_ICE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SPIRIT_LINK + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_SICKNESS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_SICKNESS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TWILIGHT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_ABJURATION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_ABJURATION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_HAUNT_MINE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_FEAR + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DISGUISE_AND_RECKON + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + -1000 + -1000 + -1000 + + + 0 + + + + HERO_SKILL_IMBUE_BALLISTA + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_RANGER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_REAVER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_SEER + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CUNNING_OF_THE_WOODS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_RANGER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_HERETIC + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_RANGERA + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_WARDEN + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_SORCERER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_REAVER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_SEER + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_WIZARD + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_IMBUE_ARROW + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_IMBUE_ARROW + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FOREST_GUARD_EMBLEM + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_RANGER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_REAVER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_SEER + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FOREST_RAGE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FOREST_RAGE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ELVEN_LUCK + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LUCK + + + HERO_CLASS_KNIGHT + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_RANGER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_REAVER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_SEER + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_LUCKY_STRIKE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_LUCKY_STRIKE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FOREST_RAGE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_EMPATHY + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_RANGER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_REAVER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_SEER + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ENCOURAGE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ENCOURAGE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_INSIGHTS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SORCERY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_RANGER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_REAVER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_SEER + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MAGIC_BOND + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MAGIC_BOND + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SUN_FIRE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_RANGER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_REAVER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_SEER + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SOIL_BURN + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_RANGER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_REAVER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_SEER + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_WEAKENING_STRIKE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_WEAKENING_STRIKE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_STORM_WIND + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_DEFLECT_ARROWS + SPELL_DEFLECT_ARROWS + SPELL_DEFLECT_ARROWS + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_RANGER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_REAVER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_SEER + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FIRE_PROTECTION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FIRE_PROTECTION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FOG_VEIL + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_RANGER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_REAVER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_SEER + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CORRUPT_SUMMONING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CORRUPT_SUMMONING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_LUCK + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_AVENGER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MARCH_OF_THE_MACHINES + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_RANGER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_REAVER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_SEER + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ARTIFICIAL_GLORY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ARTIFICIAL_GLORY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_REMOTE_CONTROL + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_RANGER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_REAVER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_SEER + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ACADEMY_AWARD + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ACADEMY_AWARD + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ACADEMY_AWARD + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_RANGER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_REAVER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_SEER + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MELT_ARTIFACT + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MELT_ARTIFACT + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ARTIFICIAL_GLORY + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SPOILS_OF_WAR + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_RANGER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_HERETIC + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_RANGERA + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_WARDEN + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_SORCERER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_REAVER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_SEER + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_WIZARD + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_PATH_OF_WAR + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_PATH_OF_WAR + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WILDFIRE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_OFFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_TACTICS + + + + HERO_CLASS_RANGER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_TACTICS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_TACTICS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_TACTICS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_TACTICS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_TACTICS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_TACTICS + + + + HERO_CLASS_REAVER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_TACTICS + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_TACTICS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_SEER + + HERO_SKILL_TACTICS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_TACTICS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_TACTICS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_TACTICS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_TACTICS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_TACTICS + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_TACTICS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_TACTICS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SEAL_OF_PROTECTION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_DARK_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_RANGER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_HERETIC + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_RANGERA + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_WARDEN + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_SORCERER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_REAVER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_SEER + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_WIZARD + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_CORRUPT_DARK + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_CORRUPT_DARK + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_INTELLIGENCE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_RANGER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_HERETIC + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_RANGERA + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_WARDEN + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_SORCERER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_REAVER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_SEER + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_WIZARD + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_COUNTERSPELL + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_COUNTERSPELL + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MAGIC_CUSHION + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_PRAYER + SPELL_PRAYER + SPELL_PRAYER + + HERO_SKILL_SHATTER_DARK_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_RANGER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_REAVER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_SEER + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_SEAL_OF_PROTECTION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_SEAL_OF_PROTECTION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SUPRESS_DARK + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SUPRESS_LIGHT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_RANGER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_REAVER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_SEER + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MAGIC_MIRROR + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MAGIC_MIRROR + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_UNSUMMON + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_ANIMATION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_ANIMATION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_WIZARDY + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_ARTIFICIER + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TELEPORT_ASSAULT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_WRATH + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_WRATH + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SHAKE_GROUND + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SUMMONING_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_QUAKES + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_QUAKES + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DARK_REVELATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_RANGER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_REAVER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_SEER + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FINE_RUNE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FINE_RUNE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FAST_AND_FURIOUS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + HERO_CLASS_KNIGHT + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_RANGER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_HERETIC + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_RANGERA + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_WARDEN + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_SORCERER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_REAVER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_SEER + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_WIZARD + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_LAST_STAND + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_LAST_STAND + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LUCKY_SPELLS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LUCK + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_RANGER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_REAVER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_SEER + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DEAD_LUCK + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DEAD_LUCK + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_POWER_OF_HASTE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_OFFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_RANGER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_REAVER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_SEER + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ARCHERY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ARCHERY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_POWER_OF_STONE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_BLESS + + HERO_SKILL_DEFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_RANGER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_REAVER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_SEER + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_TOUGHNESS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_TOUGHNESS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CHAOTIC_SPELLS + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_LUCK + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SECRETS_OF_DESTRUCTION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_LIGHTNINGS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PAYBACK + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SORCERY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_RANGER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_REAVER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_SEER + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ARCANE_TRAINING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ARCANE_TRAINING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ELITE_CASTERS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SORCERY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_RANGER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_REAVER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_SEER + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MYSTICISM + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MYSTICISM + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + HERO_CLASS_KNIGHT + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_RANGER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_HERETIC + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_RANGERA + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_WARDEN + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_SORCERER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_REAVER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_SEER + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_WIZARD + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_EMPOWERED_SPELLS + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_EMPOWERED_SPELLS + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_CHAINS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RUNELORE + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_REFRESH_RUNE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_STRONG_RUNE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_FINE_RUNE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_QUICKNESS_OF_MIND + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_RANGER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_REAVER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_SEER + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_EAGLE_EYE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_EAGLE_EYE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RUNIC_MACHINES + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_WAR_MACHINES + + + HERO_CLASS_KNIGHT + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_RANGER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_HERETIC + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_RANGERA + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_WARDEN + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_SORCERER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_REAVER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_SEER + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_WIZARD + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_BALLISTA + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_BALLISTA + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_TAP_RUNES + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_RANGER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_REAVER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_SEER + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_DARK_REVELATION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DARK_REVELATION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RUNIC_ATTUNEMENT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_RUNELORE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_RANGER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_REAVER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_SEER + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_REFRESH_RUNE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_REFRESH_RUNE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DWARVEN_LUCK + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_DWARVEN_LUCK + + HERO_SKILL_LUCK + + + HERO_CLASS_KNIGHT + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_RANGER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_REAVER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_SEER + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_RESISTANCE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_RESISTANCE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_OFFENSIVE_FORMATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_OFFENSIVE_FORMATION + + HERO_SKILL_OFFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FRENZY + + + + HERO_CLASS_RANGER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FRENZY + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FRENZY + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FRENZY + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FRENZY + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FRENZY + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FRENZY + + + + HERO_CLASS_REAVER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FRENZY + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FRENZY + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_SEER + + HERO_SKILL_FRENZY + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FRENZY + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FRENZY + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FRENZY + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FRENZY + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FRENZY + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FRENZY + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FRENZY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEFENSIVE_FORMATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_DEFENSIVE_FORMATION + + HERO_SKILL_DEFENCE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_EVASION + + + + HERO_CLASS_RANGER + + HERO_SKILL_EVASION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_EVASION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_EVASION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_EVASION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_EVASION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_EVASION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_EVASION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_EVASION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_EVASION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_EVASION + + + + HERO_CLASS_REAVER + + HERO_SKILL_EVASION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_EVASION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_EVASION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_EVASION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_EVASION + + + + HERO_CLASS_SEER + + HERO_SKILL_EVASION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_EVASION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_EVASION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_EVASION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_EVASION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_EVASION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_EVASION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_EVASION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DISTRACT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_INVOCATION + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_RANGER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_REAVER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ELEMENTAL_VISION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_SEER + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ELEMENTAL_OVERKILL + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SET_AFIRE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DESTRUCTIVE_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_FIRE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_FIRE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SHRUG_DARKNESS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_NECROMANCY + + + HERO_CLASS_KNIGHT + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_RANGER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_HERETIC + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_RANGERA + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_WARDEN + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_SORCERER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_REAVER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_SEER + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_WIZARD + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_DEATH_SCREAM + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_DEATH_SCREAM + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ETERNAL_LIGHT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LIGHT_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_RANGER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_REAVER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_SEER + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MASTER_OF_BLESSING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MASTER_OF_BLESSING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_RUNIC_ARMOR + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_RANGER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_REAVER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_SEER + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_SUN_FIRE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_SUN_FIRE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_PROTECTION + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_ABSOLUTE_PROTECTION + + HERO_SKILL_RUNELORE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SNATCH + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LOGISTICS + + + HERO_CLASS_KNIGHT + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_RANGER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_REAVER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_SEER + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_NAVIGATION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_NAVIGATION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MENTORING + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEARNING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_RANGER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_HERETIC + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_RANGERA + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_WARDEN + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_SORCERER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_REAVER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_SEER + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_WIZARD + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_STUDENT_AWARD + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_STUDENT_AWARD + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PRAYER + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_LEADERSHIP + + + HERO_CLASS_KNIGHT + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_RANGER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_HERETIC + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_RANGERA + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_WARDEN + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_SORCERER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_SEER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_WIZARD + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_RECRUITMENT + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_RECRUITMENT + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + -1000 + -1000 + -1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PREPARATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_EFFECT_PREPARATION + + HERO_SKILL_TRAINING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_RANGER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_REAVER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_SEER + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ABSOLUTE_CHARGE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_ABSOLUTE_CHARGE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MIGHT_OVER_MAGIC + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_POWERFULL_BLOW + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_TRAINING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_ABSOLUTE_RAGE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_RANGER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_HERETIC + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_RANGERA + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_WARDEN + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_SORCERER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_REAVER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_SEER + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_WIZARD + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_BATTLE_ELATION + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_BATTLE_ELATION + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_PATH_OF_WAR + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_GATING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BATTLE_ELATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_RANGER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_REAVER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_SEER + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MEMORY_OF_OUR_BLOOD + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_LUCK_OF_THE_BARBARIAN + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_LUCK_OF_THE_BARBARIAN + + HERO_SKILL_RUNELORE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CRITICAL_STRIKE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_TRAINING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_RANGER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_HERETIC + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_RANGERA + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_WARDEN + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_SORCERER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_REAVER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_SEER + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_WIZARD + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_POWERFULL_BLOW + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_POWERFULL_BLOW + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEFEND_US_ALL + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_RANGER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_HERETIC + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_RANGERA + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_WARDEN + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_SORCERER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_REAVER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_SEER + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_WIZARD + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_GOBLIN_SUPPORT + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_GOBLIN_SUPPORT + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_GOBLIN_SUPPORT + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEMONIC_RAGE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_LEARNING + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_POWER_OF_BLOOD + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_BARBARIAN_LEARNING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WARCRY_LEARNING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_BARBARIAN_LEARNING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BODYBUILDING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_BARBARIAN_LEARNING + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_VOICE + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_VOICE_TRAINING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_VOICE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_MIGHTY_VOICE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_VOICE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_RANGER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_REAVER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_SEER + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_VOICE_TRAINING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_VOICE_TRAINING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_VOICE_OF_RAGE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_VOICE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + + + SPELL_EFFECT_BATTLE_RAGE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CORRUPT_DESTRUCTIVE + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_RUNE_OF_CHARGE + SPELL_RUNE_OF_CHARGE + SPELL_RUNE_OF_CHARGE + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WEAKEN_DESTRUCTIVE + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_ABILITY_RAGE_OF_THE_FOREST + SPELL_ABILITY_RAGE_OF_THE_FOREST + SPELL_ABILITY_RAGE_OF_THE_FOREST + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DETAIN_DESTRUCTIVE + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SHATTER_DARK_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CORRUPT_DARK + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_RUNE_OF_DRAGONFORM + SPELL_RUNE_OF_DRAGONFORM + SPELL_RUNE_OF_DRAGONFORM + + HERO_SKILL_SHATTER_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WEAKEN_DARK + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_VAMPIRISM + SPELL_VAMPIRISM + SPELL_VAMPIRISM + + HERO_SKILL_SHATTER_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DETAIN_DARK + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_DARK_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CORRUPT_LIGHT + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_RUNE_OF_ETHEREALNESS + SPELL_RUNE_OF_ETHEREALNESS + SPELL_RUNE_OF_ETHEREALNESS + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WEAKEN_LIGHT + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + SPELL_DEMON_RAGE_LEVEL_3 + SPELL_DEMON_RAGE_LEVEL_3 + SPELL_DEMON_RAGE_LEVEL_3 + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DETAIN_LIGHT + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_SKILL + HERO_CLASS_NONE + + + + SPELL_ABILITY_BEAR_ROAR + + HERO_SKILL_NONE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_CORRUPT_SUMMONING + + + + + + + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_WEAKEN_SUMMONING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DETAIN_SUMMONING + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_DEATH_TO_NONEXISTENT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_DEATH_TO_NONEXISTENT + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + HERO_CLASS_KNIGHT + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_RANGER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_HERETIC + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_RANGERA + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_WARDEN + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_SORCERER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_REAVER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_SEER + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_WIZARD + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_FOG_VEIL + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_FOG_VEIL + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_ANCIENT_SMITHY + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_SUN_FIRE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_WEAKENING_STRIKE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_RUNE_OF_BATTLERAGE + + HERO_SKILL_OFFENCE + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_ARCHERY + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_SOIL_BURN + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_DEFENCE + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_HOLD_GROUND + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_FOG_VEIL + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_SUMMONING_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_NONE + SPELL_NONE + SPELL_NONE + + HERO_SKILL_BARBARIAN_LEARNING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_RANGER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_HERETIC + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_RANGERA + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_WARDEN + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_SORCERER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_REAVER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_SEER + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_WIZARD + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_WARCRY_LEARNING + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_WARCRY_LEARNING + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + + + + + + + + + + + + SKILLTYPE_STANDART_PERK + HERO_CLASS_NONE + + HERO_SKILL_VOICE + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_ELITE_CASTERS + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_VOICE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_RANGER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_HERETIC + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_RANGERA + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_WARDEN + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_SORCERER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_REAVER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_SEER + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_WIZARD + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_BARBARIAN_MYSTICISM + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_STORM_WIND + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_FIRE_PROTECTION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + SPELL_SKILL_FIRE_PROTECTION + + HERO_SKILL_SHATTER_LIGHT_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_SUN_FIRE + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_DISTRACT + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_VOICE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_RANGER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_REAVER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_SEER + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_MIGHTY_VOICE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_MIGHTY_VOICE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_DARK_REVELATION + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_VOICE + + + HERO_CLASS_KNIGHT + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_RANGER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_REAVER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_SEER + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_VOICE_OF_RAGE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_VOICE_OF_RAGE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + HERO_SKILL_BARBARIAN_MENTORING + + + + + + + + + + + + + + + SKILLTYPE_SPECIAL_PERK + HERO_CLASS_NONE + + HERO_SKILL_BARBARIAN_LEARNING + + + HERO_CLASS_KNIGHT + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_RANGER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_HERETIC + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_RANGERA + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_WARDEN + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_ENCHANTER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_SORCERER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_DEMON_LORD + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_FLAMEKEEPERA + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_NECROMANCER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_NECROMANCERA + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_REAVER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_WARLOCKB + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_WARLOCK + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_BEASTMASTER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_GUILDMASTER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_SEER + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_WIZARDA + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_ELEMENTALIST + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_WIZARD + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_RUNEMAGE + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_RUNEMAGEA + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_BARBARIAN + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + HERO_CLASS_SHAMAN + + HERO_SKILL_BARBARIAN_INTELLIGENCE + + + + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 1000 + 1000 + 1000 + + + 0 + + + + diff --git a/GameMechanics/RefTables/UndividedSpells.xdb b/GameMechanics/RefTables/UndividedSpells.xdb new file mode 100644 index 00000000..d16f438d --- /dev/null +++ b/GameMechanics/RefTables/UndividedSpells.xdb @@ -0,0 +1,1417 @@ + + + + + SPELL_NONE + + + + SPELL_MAGIC_ARROW + + + + SPELL_MAGIC_FIST + + + + SPELL_LIGHTNING_BOLT + + + + SPELL_ICE_BOLT + + + + SPELL_FIREBALL + + + + SPELL_FROST_RING + + + + SPELL_CHAIN_LIGHTNING + + + + SPELL_METEOR_SHOWER + + + + SPELL_IMPLOSION + + + + SPELL_ARMAGEDDON + + + + SPELL_CURSE + + + + SPELL_SLOW + + + + SPELL_DISRUPTING_RAY + + + + SPELL_PLAGUE + + + + SPELL_WEAKNESS + + + + SPELL_ABILITY_WEAKNING_STRIKE + + + + SPELL_FORGETFULNESS + + + + SPELL_BERSERK + + + + SPELL_BLIND + + + + SPELL_HYPNOTIZE + + + + SPELL_UNHOLY_WORD + + + + SPELL_UNHOLY_WORD_HIT_EFFECT + + + + SPELL_BLESS + + + + SPELL_HASTE + + + + SPELL_STONESKIN + + + + SPELL_DISPEL + + + + SPELL_DISPEL_FAIL + + + + SPELL_BLOODLUST + + + + SPELL_DEFLECT_ARROWS + + + + SPELL_DEFLECT_ARROWS_HIT_EFFECT + + + + SPELL_ANTI_MAGIC + + + + SPELL_TELEPORT + + + + SPELL_TELEPORT_FINISH_EFFECT + + + + SPELL_CELESTIAL_SHIELD + + + + SPELL_HOLY_WORD + + + + SPELL_HOLY_WORD_HIT_EFFECT + + + + SPELL_ARMAGEDDON_HIT_EFFECT + + + + SPELL_LAND_MINE + + + + SPELL_WASP_SWARM + + + + SPELL_PHANTOM + + + + SPELL_EARTHQUAKE + + + + SPELL_ANIMATE_DEAD + + + + SPELL_SUMMON_ELEMENTALS + + + + SPELL_EFFECT_SUMMON_ELEMENTALS_AIR + + + + SPELL_EFFECT_SUMMON_ELEMENTALS_EARTH + + + + SPELL_EFFECT_SUMMON_ELEMENTALS_FIRE + + + + SPELL_EFFECT_SUMMON_ELEMENTALS_WATER + + + + SPELL_RESURRECT + + + + SPELL_SUMMON_BOAT + + + + SPELL_DIMENSION_DOOR + + + + SPELL_TOWN_PORTAL + + + + SPELL_ENCOURAGE + + + + SPELL_HOLY_CHARGE + + + + SPELL_PRAYER + + + + SPELL_DEMONIC_STRIKE_CAST + + + + SPELL_DEMONIC_STRIKE + + + + SPELL_CONSUME_CORPSE + + + + SPELL_SPIRIT_LINK + + + + SPELL_DEATH_SCREAM + + + + SPELL_SNIPE_DEAD + + + + SPELL_MULTISHOT + + + + SPELL_IMBUE_ARROW + + + + SPELL_ABILITY_MAGIC_BOND + + + + SPELL_ABILITY_MELT_ARTIFACT + + + + SPELL_ABILITY_COUNTERSPELL + + + + SPELL_ABILITY_UNSUMMON + + + + SPELL_ABILITY_DARK_RITUAL + + + + SPELL_SKILL_OFFENCE1 + + + + SPELL_SKILL_OFFENCE2 + + + + SPELL_SKILL_OFFENCE3 + + + + SPELL_SKILL_ARCHERY + + + + SPELL_SKILL_FRENZY + + + + SPELL_SKILL_DEFENCE1 + + + + SPELL_SKILL_DEFENCE2 + + + + SPELL_SKILL_DEFENCE3 + + + + SPELL_SKILL_PROTECTION + + + + SPELL_SKILL_EVASION + + + + SPELL_SKILL_TOUGHNESS + + + + SPELL_SKILL_LUCK1 + + + + SPELL_SKILL_LUCK2 + + + + SPELL_SKILL_LUCK3 + + + + SPELL_SKILL_RESISTANCE + + + + SPELL_SKILL_LUCKY_STRIKE + + + + SPELL_SKILL_LEADERSHIP1 + + + + SPELL_SKILL_LEADERSHIP2 + + + + SPELL_SKILL_LEADERSHIP3 + + + + SPELL_SKILL_WAR_MACHINES1 + + + + SPELL_SKILL_WAR_MACHINES2 + + + + SPELL_SKILL_WAR_MACHINES3 + + + + SPELL_SKILL_FIRST_AID + + + + SPELL_SKILL_BALLISTA + + + + SPELL_SKILL_CATAPULT + + + + SPELL_SKILL_DEMONIC_FIRE + + + + SPELL_SKILL_ELVEN_VOLLEY + + + + SPELL_SKILL_MATRON_SALVO + + + + SPELL_SKILL_ANCIENT_SMITHY + + + + SPELL_SKILL_FIRE_PROTECTION + + + + SPELL_SPEC_JOUSTER + + + + SPELL_SPEC_PEASANTS + + + + SPELL_SPEC_ARCHERS + + + + SPELL_SPEC_FOOTMEN + + + + SPELL_SPEC_GRIFFINS + + + + SPELL_SPEC_ARTILLERYMAN + + + + SPELL_SPEC_FURIOUS + + + + SPELL_SPEC_BOMBARDIER + + + + SPELL_SPEC_IMPREGNABLE + + + + SPELL_SPEC_FLAGBEARER_OF_DARKNESS + + + + SPELL_SPEC_HOUNDS + + + + SPELL_SPEC_SUCCUBUSES + + + + SPELL_SPEC_BLADE_MASTER + + + + SPELL_SPEC_ELVES + + + + SPELL_SPEC_UNICORNS + + + + SPELL_SPEC_ELVEN_FURY + + + + SPELL_SPEC_FOREST_GUARDIAN + + + + SPELL_SPEC_ZOMBIES + + + + SPELL_SPEC_VAMPIRES + + + + SPELL_SPEC_EMPIRIC + + + + SPELL_SPEC_SOULHUNTER + + + + SPELL_SPEC_MASTER_OF_ELEMENTS + + + + SPELL_SPEC_GREMLINS + + + + SPELL_SPEC_GOLEMS + + + + SPELL_SPEC_MAGES + + + + SPELL_SPEC_PRUDENT + + + + SPELL_SPEC_EVASIVE + + + + SPELL_SPEC_RIDERS + + + + SPELL_SPEC_MATRON_SALVO + + + + SPELL_SPEC_SAVAGE + + + + SPELL_SPEC_WITCHES + + + + SPELL_SPEC_MINOTAURS + + + + SPELL_TOWN_OFFENCE_P1 + + + + SPELL_TOWN_OFFENCE_M1 + + + + SPELL_TOWN_DEFENCE_P1 + + + + SPELL_TOWN_DEFENCE_M1 + + + + SPELL_TOWN_OFFENCE_DEFENCE_P1 + + + + SPELL_TOWN_OFFENCE_DEFENCE_M1 + + + + SPELL_TOWN_OFFENCE_P2 + + + + SPELL_TOWN_OFFENCE_M2 + + + + SPELL_TOWN_DEFENCE_P2 + + + + SPELL_TOWN_DEFENCE_M2 + + + + SPELL_TOWN_OFFENCE_DEFENCE_P2 + + + + SPELL_TOWN_OFFENCE_DEFENCE_M2 + + + + SPELL_TOWN_LUCK_P1 + + + + SPELL_TOWN_LUCK_M1 + + + + SPELL_TOWN_MORALE_P1 + + + + SPELL_TOWN_MORALE_M1 + + + + SPELL_TOWN_ELVEN_CAPITAL + + + + SPELL_TOWN_WALLS + + + + SPELL_TOWN_TOWERS + + + + SPELL_TOWN_UNHOLY_TEMPLE + + + + SPELL_TOWN_DARK_GUARDIAN + + + + SPELL_TOWN_SPARKLING_FOUNTAIN + + + + SPELL_TOWN_DIETY_OF_FIRE + + + + SPELL_TOWN_INFERNAL_LOOM + + + + SPELL_ABILITY_BATTLE_DIVE + + + + SPELL_ABILITY_BATTLE_DIVE_FINISH + + + + SPELL_ABILITY_LAY_HANDS + + + + SPELL_ABILITY_RESURRECT_ALLIES + + + + SPELL_ABILITY_SCATTER_SHOT + + + + SPELL_ABILITY_GATING + + + + SPELL_ABILITY_FEAR + + + + SPELL_ABILITY_SUMMON_BALOR + + + + SPELL_ABILITY_EXPLOSION + + + + SPELL_ABILITY_EXPLOSION_EFFECT + + + + SPELL_ABILITY_CHAIN_SHOT_END_EFFECT + + + + SPELL_ABILITY_MANA_DESTROY + + + + SPELL_ABILITY_MANA_STEAL + + + + SPELL_ABILITY_LIFE_DRAIN + + + + SPELL_ABILITY_MANA_DRAIN + + + + SPELL_ABILITY_DEATH_CLOUD + + + + SPELL_ABILITY_HARM_TOUCH + + + + SPELL_ABILITY_MANA_FEED + + + + SPELL_ABILITY_ENTANGLING_ROOTS + + + + SPELL_ABILITY_REPAIR + + + + SPELL_ABILITY_RANDOM_CAST_DARK + + + + SPELL_ABILITY_RANDOM_CAST_DARK_LIGHT + + + + SPELL_ABILITY_DASH + + + + SPELL_ABILITY_DASH_EFFECT + + + + SPELL_REMOTE_CONTROL + + + + SPELL_EFFECT_ARMOR_CRUSHING + + + + SPELL_ABILITY_POISONOUS_ATTACK + + + + SPELL_LIZARD_BITE_HIT + + + + SPELL_EFFECT_REGENRATION + + + + SPELL_EFFECT_REBIRTH + + + + SPELL_ABILITY_FROST_BREATH + + + + SPELL_EFFECT_BAD_LUCK + + + + SPELL_EFFECT_GOOD_LUCK + + + + SPELL_EFFECT_BAD_MORALE + + + + SPELL_EFFECT_GOOD_MORALE + + + + SPELL_EFFECT_FIRST_AID_TENT_HEAL + + + + SPELL_EFFECT_CLERIC_HIT + + + + SPELL_EFFECT_COMBAT_HIT_00 + + + + SPELL_EFFECT_COMBAT_HIT_01 + + + + SPELL_EFFECT_COMBAT_HIT_02 + + + + SPELL_EFFECT_WAR_MACHINE_HIT + + + + SPELL_EFFECT_FIRST_AID_HIT + + + + SPELL_EFFECT_FIRE_HIT + + + + SPELL_EFFECT_BASH_HIT + + + + SPELL_EFFECT_SUN_FIRE + + + + SPELL_EFFECT_SOIL_BURN + + + + SPELL_ABILITY_AVATAR_OF_DEATH + + + + SPELL_EFFECT_FROZEN + + + + SPELL_EFFECT_FIRE_DAMAGE + + + + SPELL_EFFECT_SEDUCE_CASTED + + + + SPELL_SPEC_DEMON_HUNTER + + + + SPELL_EFFECT_FIRE_SHIELD + + + + SPELL_ARTFSET_NECROMANCERS_DEBUFF + + + + SPELL_SKILL_CHILLING_BONES + + + + SPELL_DEBUG_TELEPORT + + + + SPELL_ABILITY_ENRAGED + + + + SPELL_MASS_CURSE + + + + SPELL_MASS_DISRUPTING_RAY + + + + SPELL_MASS_SLOW + + + + SPELL_MASS_FORGETFULNESS + + + + SPELL_MASS_PLAGUE + + + + SPELL_MASS_WEAKNESS + + + + SPELL_MASS_BLESS + + + + SPELL_MASS_DISPEL + + + + SPELL_MASS_STONESKIN + + + + SPELL_MASS_DEFLECT_ARROWS + + + + SPELL_MASS_BLOODLUST + + + + SPELL_MASS_HASTE + + + + SPELL_ABILITY_CALL_LIGHTNING + + + + SPELL_EMPOWERED_MAGIC_ARROW + + + + SPELL_EMPOWERED_MAGIC_FIST + + + + SPELL_EMPOWERED_LIGHTNING_BOLT + + + + SPELL_EMPOWERED_ICE_BOLT + + + + SPELL_EMPOWERED_FIREBALL + + + + SPELL_EMPOWERED_FROST_RING + + + + SPELL_EMPOWERED_CHAIN_LIGHTNING + + + + SPELL_EMPOWERED_METEOR_SHOWER + + + + SPELL_EMPOWERED_IMPLOSION + + + + SPELL_EMPOWERED_ARMAGEDDON + + + + SPELL_EMPOWERED_STONE_SPIKES + + + + SPELL_SUMMON_CREATURES + + + + SPELL_CONJURE_PHOENIX + + + + SPELL_FIREWALL + + + + SPELL_STONE_SPIKES + + + + SPELL_UBER_CHAIN_LIGHTNING + + + + SPELL_BOSS_FIREWALL + + + + SPELL_TIME_SHIFT + + + + SPELL_EFFECT_GUARDIAN_ANGEL + + + + SPELL_GHOST_DISPELL + + + + SPELL_GHOST_GUARD + + + + SPELL_EFFECT_WOUND + + + + SPELL_ABILITY_BERSERKER_RAGE + + + + SPELL_EFFECT_MARK_OF_FIRE + + + + SPELL_ABILITY_STORMBOLT + + + + SPELL_EFFECT_MAGMA_SHIELD + + + + SPELL_RUNE_OF_CHARGE + + + + SPELL_RUNE_OF_BERSERKING + + + + SPELL_RUNE_OF_MAGIC_CONTROL + + + + SPELL_RUNE_OF_EXORCISM + + + + SPELL_RUNE_OF_ELEMENTAL_IMMUNITY + + + + SPELL_RUNE_OF_STUNNING + + + + SPELL_RUNE_OF_BATTLERAGE + + + + SPELL_RUNE_OF_ETHEREALNESS + + + + SPELL_RUNE_OF_REVIVE + + + + SPELL_RUNE_OF_DRAGONFORM + + + + SPELL_ABILITY_REFRESH_RUNE + + + + SPELL_SPEC_BORDERGUARD + + + + SPELL_SPEC_AXE_MASTER + + + + SPELL_SPEC_BEAR_RAIDERS + + + + SPELL_SPEC_MAGISTER + + + + SPELL_SPEC_DEFENDER + + + + SPELL_SKILL_DWARVEN_LUCK + + + + SPELL_SKILL_OFFENSIVE_FORMATION + + + + SPELL_SKILL_DEFENSIVE_FORMATION + + + + SPELL_SKILL_DISTRACT + + + + SPELL_SKILL_ABSOLUTE_PROTECTION + + + + SPELL_EFFECT_SET_AFIRE + + + + SPELL_ABILITY_AGILITY + + + + SPELL_EFFECT_FINE_RUNE + + + + SPELL_EFFECT_STRONG_RUNE + + + + SPELL_EFFECT_BATTLE_FRENZY + + + + SPELL_EFFECT_RUNIC_ATTUNEMENT + + + + SPELL_EFFECT_MASTER_OF_INITIATIVE + + + + SPELL_SORROW + + + + SPELL_VAMPIRISM + + + + SPELL_DEEP_FREEZE + + + + SPELL_REGENERATION + + + + SPELL_DIVINE_VENGEANCE + + + + SPELL_ARCANE_CRYSTAL + + + + SPELL_SUMMON_HIVE + + + + SPELL_BLADE_BARRIER + + + + SPELL_UBER_METEOR_SHOWER + + + + SPELL_EFFECT_PREPARATION + + + + SPELL_EFFECT_EXPLODING_CORPSES + + + + SPELL_EFFECT_MASTER_OF_LIGHTNING + + + + SPELL_TOWN_BLAZING_ANVIL + + + + SPELL_WARCRY_RALLING_CRY + + + + SPELL_WARCRY_CALL_OF_BLOOD + + + + SPELL_WARCRY_WORD_OF_THE_CHIEF + + + + SPELL_WARCRY_FEAR_MY_ROAR + + + + SPELL_WARCRY_BATTLECRY + + + + SPELL_WARCRY_SHOUT_OF_MANY + + + + SPELL_ABILITY_VENOM + + + + SPELL_ARTFSET_LIONS_DEMORALIZED + + + + SPELL_EMPOWERED_DEEP_FREEZE + + + + SPELL_ABILITY_SACRIFICE_GOBLIN + + + + SPELL_ABILITY_SWALLOW_GOBLIN + + + + SPELL_ABILITY_SET_SNARES + + + + SPELL_DEMON_RAGE_LEVEL_1 + + + + SPELL_DEMON_RAGE_LEVEL_2 + + + + SPELL_DEMON_RAGE_LEVEL_3 + + + + SPELL_EFFECT_POWERFULL_BLOW + + + + SPELL_SKILL_BATTLE_ELATION + + + + SPELL_SKILL_LUCK_OF_THE_BARBARIAN + + + + SPELL_SKILL_DEATH_TO_NONEXISTENT + + + + SPELL_SKILL_MIGHT_OVER_MAGIC + + + + SPELL_SPEC_GRIM_FIGHTER + + + + SPELL_SPEC_CENTAUR_MISTRESS + + + + SPELL_SPEC_WYVERN_TAMER + + + + SPELL_SPEC_ORC_ELDER + + + + SPELL_SPEC_BLOODDRINKER + + + + SPELL_SPEC_GOBLIN_KING + + + + SPELL_ABILITY_DEATH_WAIL + + + + SPELL_ABILITY_INVISIBILITY + + + + SPELL_ABILITY_SCAVENGER + + + + SPELL_ABILITY_SYPHON_MANA + + + + SPELL_ABILITY_LEAP + + + + SPELL_ABILITY_SUMMON_OTHER + + + + SPELL_ABILITY_INCINERATE + + + + SPELL_ABILITY_TREEANT_UNION + + + + SPELL_ABILITY_AMMO_STEAL + + + + SPELL_ABILITY_ORDER_OF_THE_CHIEF + + + + SPELL_ABILITY_DEFILE_MAGIC + + + + SPELL_ABILITY_BEAR_ROAR + + + + SPELL_ABILITY_SEDUCE + + + + SPELL_ABILITY_RAGE_OF_THE_FOREST + + + + SPELL_ABILITY_SABOTAGE + + + + SPELL_ABILITY_HARPOON_STRIKE + + + + SPELL_ABILITY_LUCK_GAMBLER + + + + SPELL_ABILITY_POWER_FEED + + + + SPELL_ABILITY_CALL_STORM + + + + SPELL_EFFECT_LIQUID_FLAME_BREATH + + + + SPELL_EFFECT_SLEEPING_STRIKE + + + + SPELL_EFFECT_PREPARED_POSITION + + + + SPELL_EFFECT_BATTLE_RAGE + + + + SPELL_EFFECT_UNLUCKY + + + + SPELL_EFFECT_HORROR_OF_THE_DEATH + + + + SPELL_EFFECT_IMMUNITY_TO_AIR + + + + SPELL_EFFECT_IMMUNITY_TO_FIRE + + + + SPELL_EFFECT_IMMUNITY_TO_WATER + + + + SPELL_EFFECT_IMMUNITY_TO_EARTH + + + + SPELL_ABILITY_FLAMESTRIKE + + + + SPELL_ABILITY_PACK_DIVE + + + + SPELL_ABILITY_PACK_DIVE_FINISH + + + + SPELL_ABILITY_CUSTOM1 + + + + SPELL_ABILITY_CUSTOM2 + + + + SPELL_ABILITY_CUSTOM3 + + + + SPELL_ABILITY_CUSTOM4 + + + + SPELL_EFFECT_FIRST_AID_TENT_PLAGUE + + + + diff --git a/GameMechanics/RefTables/WarMachines.xdb b/GameMechanics/RefTables/WarMachines.xdb new file mode 100644 index 00000000..057800e0 --- /dev/null +++ b/GameMechanics/RefTables/WarMachines.xdb @@ -0,0 +1,237 @@ + + + + + WAR_MACHINE_NONE + + + 0 + 1 + 1 + 0 + + + ELEMENT_NONE + ELEMENT_NONE + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 1 + + + 10 + + + + + 0 + + + + + WAR_MACHINE_BALLISTA + + + 100 + 8 + 500 + 0 + + SPELL_ABILITY_HARPOON_STRIKE + + + ELEMENT_NONE + ELEMENT_NONE + + + 0 + 0 + 0 + 0 + 0 + 0 + 4500 + + 2 + + + 10 + + 20 + 20 + 20 + 20 + 20 + + + 20 + 20 + 20 + 20 + 20 + + + 5 + 5 + 5 + 5 + 5 + + + 5 + 5 + 5 + 5 + 5 + + 250 + + + + + WAR_MACHINE_CATAPULT + + + 0 + 10 + 500 + 0 + + + ELEMENT_NONE + ELEMENT_NONE + + + 0 + 0 + 0 + 0 + 0 + 0 + 1000 + + 2 + + + 10 + + + 200 + 200 + 200 + 200 + 200 + + + 200 + 200 + 200 + 200 + 200 + + + 200 + 200 + 200 + 200 + 200 + + 400 + + + + + WAR_MACHINE_FIRST_AID_TENT + + + 4 + 13 + 500 + 0 + 0 + + SPELL_EFFECT_FIRST_AID_TENT_HEAL + + 0 + 0 + 0 + + ELEMENT_NONE + ELEMENT_NONE + + + 0 + 0 + 0 + 0 + 0 + 0 + 250 + + 2 + + + 10 + + + 20 + 20 + 20 + 20 + 20 + + + + 200 + + + + + WAR_MACHINE_AMMO_CART + + + 10 + 10 + 500 + 0 + + + ELEMENT_NONE + ELEMENT_NONE + + + 0 + 0 + 0 + 0 + 0 + 0 + 1000 + + 2 + + + 10 + + + 0 + 0 + 0 + 0 + 0 + + + + 150 + + + + + diff --git a/GameMechanics/Shot/Creatures/Orcs/Kujin.xdb b/GameMechanics/Shot/Creatures/Orcs/Kujin.xdb new file mode 100644 index 00000000..97f44783 --- /dev/null +++ b/GameMechanics/Shot/Creatures/Orcs/Kujin.xdb @@ -0,0 +1,28 @@ + + + true + + + + 0.05 + 0 + 0 + 1.4 + 0 + + + + + + 1 + 2 + 40 + 1000 + + 250 + SPELL_NONE + 0 + + + diff --git a/GameMechanics/Shot/Heroes/Thralsai.xdb b/GameMechanics/Shot/Heroes/Thralsai.xdb new file mode 100644 index 00000000..0f4282aa --- /dev/null +++ b/GameMechanics/Shot/Heroes/Thralsai.xdb @@ -0,0 +1,25 @@ + + + + false + + + + 0.05 + 0.02 + 0 + 2.5 + 0 + + + + 1 + 2 + 40 + 2000 + + 0 + SPELL_NONE + 0 + + diff --git a/GameMechanics/Spell/Adventure_Spells/DimensionDoor.xdb b/GameMechanics/Spell/Adventure_Spells/DimensionDoor.xdb new file mode 100644 index 00000000..5d7c7b17 --- /dev/null +++ b/GameMechanics/Spell/Adventure_Spells/DimensionDoor.xdb @@ -0,0 +1,36 @@ + + + + + + + + + 4 + MAGIC_SCHOOL_ADVENTURE + 40 + 15 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_FRIEND + ELEMENT_NONE + true + + + + + -1 + true + diff --git a/GameMechanics/Spell/Adventure_Spells/DimensionDoorEnd.(SpellVisual).xdb b/GameMechanics/Spell/Adventure_Spells/DimensionDoorEnd.(SpellVisual).xdb new file mode 100644 index 00000000..127e2ca7 --- /dev/null +++ b/GameMechanics/Spell/Adventure_Spells/DimensionDoorEnd.(SpellVisual).xdb @@ -0,0 +1,8 @@ + + + + + + 1 + 2.5 + diff --git a/GameMechanics/Spell/Adventure_Spells/DimensionDoorStart.(SpellVisual).xdb b/GameMechanics/Spell/Adventure_Spells/DimensionDoorStart.(SpellVisual).xdb new file mode 100644 index 00000000..0926c431 --- /dev/null +++ b/GameMechanics/Spell/Adventure_Spells/DimensionDoorStart.(SpellVisual).xdb @@ -0,0 +1,8 @@ + + + + + + 1 + 2.5 + diff --git a/GameMechanics/Spell/Adventure_Spells/GhostSpellDispell.(Spell).xdb b/GameMechanics/Spell/Adventure_Spells/GhostSpellDispell.(Spell).xdb new file mode 100644 index 00000000..e0367a1a --- /dev/null +++ b/GameMechanics/Spell/Adventure_Spells/GhostSpellDispell.(Spell).xdb @@ -0,0 +1,67 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_NONE + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + -1 + true + diff --git a/GameMechanics/Spell/Adventure_Spells/GhostSpellGuard.(Spell).xdb b/GameMechanics/Spell/Adventure_Spells/GhostSpellGuard.(Spell).xdb new file mode 100644 index 00000000..e0367a1a --- /dev/null +++ b/GameMechanics/Spell/Adventure_Spells/GhostSpellGuard.(Spell).xdb @@ -0,0 +1,67 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_NONE + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + -1 + true + diff --git a/GameMechanics/Spell/Adventure_Spells/Summon_Boat.xdb b/GameMechanics/Spell/Adventure_Spells/Summon_Boat.xdb new file mode 100644 index 00000000..15178026 --- /dev/null +++ b/GameMechanics/Spell/Adventure_Spells/Summon_Boat.xdb @@ -0,0 +1,33 @@ + + + + + + + + + 2 + MAGIC_SCHOOL_ADVENTURE + 10 + 4 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + -1 + true + diff --git a/GameMechanics/Spell/Adventure_Spells/Summon_Creatures.xdb b/GameMechanics/Spell/Adventure_Spells/Summon_Creatures.xdb new file mode 100644 index 00000000..bc454b7b --- /dev/null +++ b/GameMechanics/Spell/Adventure_Spells/Summon_Creatures.xdb @@ -0,0 +1,43 @@ + + + + + + + + + 3 + MAGIC_SCHOOL_ADVENTURE + 15 + 0 + + + 1 + 0 + + + + + 0.75 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + -1 + true + diff --git a/GameMechanics/Spell/Adventure_Spells/TownPortalEnd.(SpellVisual).xdb b/GameMechanics/Spell/Adventure_Spells/TownPortalEnd.(SpellVisual).xdb new file mode 100644 index 00000000..d9f86ade --- /dev/null +++ b/GameMechanics/Spell/Adventure_Spells/TownPortalEnd.(SpellVisual).xdb @@ -0,0 +1,8 @@ + + + + + + 1 + 2.5 + diff --git a/GameMechanics/Spell/Adventure_Spells/TownPortalStart.(SpellVisual).xdb b/GameMechanics/Spell/Adventure_Spells/TownPortalStart.(SpellVisual).xdb new file mode 100644 index 00000000..e1b0f390 --- /dev/null +++ b/GameMechanics/Spell/Adventure_Spells/TownPortalStart.(SpellVisual).xdb @@ -0,0 +1,8 @@ + + + + + + 3 + 5 + diff --git a/GameMechanics/Spell/Adventure_Spells/Town_Portal.xdb b/GameMechanics/Spell/Adventure_Spells/Town_Portal.xdb new file mode 100644 index 00000000..843282f3 --- /dev/null +++ b/GameMechanics/Spell/Adventure_Spells/Town_Portal.xdb @@ -0,0 +1,41 @@ + + + + + + + + + 4 + MAGIC_SCHOOL_ADVENTURE + 15 + 20 + + + + 0.50 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_FRIEND + ELEMENT_NONE + true + + + + + -1 + true + diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Berserk.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Berserk.xdb new file mode 100644 index 00000000..36368bfa --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Berserk.xdb @@ -0,0 +1,69 @@ + + + + + + + + + + + 5 + MAGIC_SCHOOL_DARK + 0 + 30 + + + -0.7 + 0.03 + + + -0.9 + 0.03 + + + -0.8 + 0.03 + + + -0.7 + 0.03 + + + + + 1 + 0 + + + 1 + 0 + + + 1 + 0 + + + 1 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_NEUTRAL + ELEMENT_NONE + true + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Blind.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Blind.xdb new file mode 100644 index 00000000..0f47c2ef --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Blind.xdb @@ -0,0 +1,55 @@ + + + + + + + + + + + + 5 + MAGIC_SCHOOL_LIGHT + 0 + 30 + + + + 3 + 0.1 + + + 1 + 0.1 + + + 2 + 0.1 + + + 3 + 0.1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + + + 0 + true + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Curse.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Curse.xdb new file mode 100644 index 00000000..f0ef9db6 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Curse.xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 1 + MAGIC_SCHOOL_DARK + 0 + true + 5 + + + 0.9 + -0.01 + + + 0.8 + -0.01 + + + 0.7 + -0.01 + + + 0.6 + -0.1 + + + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Disrupting_Ray.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Disrupting_Ray.xdb new file mode 100644 index 00000000..d7129286 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Disrupting_Ray.xdb @@ -0,0 +1,53 @@ + + + + + + + + + + + + 1 + MAGIC_SCHOOL_DARK + 0 + 5 + + + 0 + 0.35 + + + 2 + 0.35 + + + 4 + 0.35 + + + 6 + 0.35 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_AIR + false + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Forgetfulness.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Forgetfulness.xdb new file mode 100644 index 00000000..2684ee0d --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Forgetfulness.xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 2 + MAGIC_SCHOOL_DARK + 0 + true + 5 + + + 0.6 + 0.008 + + + 0.14 + 0.008 + + + 0.22 + 0.008 + + + 0.3 + 0.008 + + + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Hypnotize.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Hypnotize.xdb new file mode 100644 index 00000000..2de29725 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Hypnotize.xdb @@ -0,0 +1,72 @@ + + + + + + + + + + + + 5 + MAGIC_SCHOOL_SUMMONING + 0 + 30 + + + 0.3 + 0.01 + + + 0.1 + 0.01 + + + 0.2 + 0.01 + + + 0.3 + 0.01 + + + + + 1 + 0 + + + 1 + 0 + + + 1 + 0 + + + 1 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_NEUTRAL + ELEMENT_NONE + true + + + + 0 + true + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Curse.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Curse.xdb new file mode 100644 index 00000000..1326b858 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Curse.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 1 + MAGIC_SCHOOL_DARK + 0 + false + 15 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Disrupting_Ray.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Disrupting_Ray.xdb new file mode 100644 index 00000000..9c435edf --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Disrupting_Ray.xdb @@ -0,0 +1,31 @@ + + + + + + + + + 1 + MAGIC_SCHOOL_DARK + 0 + 22 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Forgetfulness.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Forgetfulness.xdb new file mode 100644 index 00000000..a405ef1f --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Forgetfulness.xdb @@ -0,0 +1,31 @@ + + + + + + + + + 2 + MAGIC_SCHOOL_DARK + 0 + 25 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Plague.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Plague.xdb new file mode 100644 index 00000000..9b71777d --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Plague.xdb @@ -0,0 +1,33 @@ + + + + + + + + + + + 2 + MAGIC_SCHOOL_DARK + 0 + 22 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_EARTH + true + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Slow.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Slow.xdb new file mode 100644 index 00000000..d9dfd115 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Slow.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 1 + MAGIC_SCHOOL_DARK + 0 + false + 22 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Weakness.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Weakness.xdb new file mode 100644 index 00000000..e8755817 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Mass_Weakness.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 2 + MAGIC_SCHOOL_DARK + 0 + false + 30 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Plague.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Plague.xdb new file mode 100644 index 00000000..c4da5f73 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Plague.xdb @@ -0,0 +1,70 @@ + + + + + + + + + + + + + 2 + MAGIC_SCHOOL_DARK + 0 + true + 5 + + + 20 + 9 + + + 20 + 11 + + + 20 + 13 + + + 20 + 15 + + + + + 3 + 0 + + + 3 + 0 + + + 3 + 0 + + + 3 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_EARTH + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Slow.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Slow.xdb new file mode 100644 index 00000000..c95cd399 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Slow.xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 1 + MAGIC_SCHOOL_DARK + 0 + true + 5 + + + 0.0 + 0.005 + + + 0.05 + 0.005 + + + 0.1 + 0.005 + + + 0.15 + 0.005 + + + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Sorrow/Sorrow.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Sorrow/Sorrow.xdb new file mode 100644 index 00000000..8d9238f7 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Sorrow/Sorrow.xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 3 + MAGIC_SCHOOL_DARK + 0 + true + 15 + + + 5 + 0.1 + + + 5 + 0.1 + + + 5 + 0.1 + + + 5 + 0.1 + + + + + 3 + 0 + + + 1 + 0 + + + 2 + 0 + + + 3 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Unholy_Word.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Unholy_Word.xdb new file mode 100644 index 00000000..61aded73 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Unholy_Word.xdb @@ -0,0 +1,56 @@ + + + + + + + + + + + + 4 + MAGIC_SCHOOL_DARK + 0 + 25 + + + 0 + 15 + + + 0 + 11 + + + 0 + 13 + + + 0 + 15 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_NEUTRAL + ELEMENT_WATER + false + + + + + 0 + true + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Vampirism/Vampirism.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Vampirism/Vampirism.xdb new file mode 100644 index 00000000..c22f4069 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Vampirism/Vampirism.xdb @@ -0,0 +1,69 @@ + + + + + + + + + + + 5 + MAGIC_SCHOOL_DARK + 0 + 30 + + + 25 + 0.5 + + + 15 + 0.5 + + + 20 + 0.5 + + + 25 + 0.5 + + + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_FRIEND + ELEMENT_NONE + true + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DarkMagic/Weakness.xdb b/GameMechanics/Spell/Combat_Spells/DarkMagic/Weakness.xdb new file mode 100644 index 00000000..97f4586b --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DarkMagic/Weakness.xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 2 + MAGIC_SCHOOL_DARK + 0 + true + 5 + + + 7 + 0.35 + + + 7 + 0.35 + + + 8 + 0.35 + + + 13 + 0.35 + + + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Armageddon.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Armageddon.xdb new file mode 100644 index 00000000..faf60c12 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Armageddon.xdb @@ -0,0 +1,73 @@ + + + + + + + + + + + + 4 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + 25 + + + 0 + 30 + + + 0 + 24 + + + 0 + 27 + + + 0 + 30 + + + + + 0 + 24 + + + 0 + 24 + + + 0 + 24 + + + 0 + 24 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_NEUTRAL + ELEMENT_FIRE + true + + + + + 0 + true + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Chain_Lightning_Hit.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Chain_Lightning_Hit.xdb new file mode 100644 index 00000000..931bb58d --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Chain_Lightning_Hit.xdb @@ -0,0 +1,53 @@ + + + + + + + + + + + + 5 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + 30 + + + 0 + 50 + + + 0 + 40 + + + 0 + 45 + + + 0 + 50 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_AIR + true + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/DeepFreeze.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/DeepFreeze.xdb new file mode 100644 index 00000000..38f15a1e --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/DeepFreeze.xdb @@ -0,0 +1,70 @@ + + + + + + + + + + + + 5 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + 30 + + + 10 + 0 + + + 10 + 0 + + + 10 + 0 + + + 10 + 0 + + + + + 2 + 0 + + + 2 + 0 + + + 2 + 0 + + + 2 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_WATER + true + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Armageddon.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Armageddon.xdb new file mode 100644 index 00000000..9224dc88 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Armageddon.xdb @@ -0,0 +1,50 @@ + + + + + + + + + 5 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + false + 136 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_FIRE + + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Chain_Lightning.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Chain_Lightning.xdb new file mode 100644 index 00000000..054bfc5b --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Chain_Lightning.xdb @@ -0,0 +1,47 @@ + + + + + + + + + 3 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + true + 67 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_AIR + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_DeepFreeze.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_DeepFreeze.xdb new file mode 100644 index 00000000..ef536c30 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_DeepFreeze.xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + + 4 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + 100 + + + 15 + 15 + + + 15 + 15 + + + 15 + 15 + + + 30 + 30 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_WATER + true + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Fireball.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Fireball.xdb new file mode 100644 index 00000000..76179d63 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Fireball.xdb @@ -0,0 +1,47 @@ + + + + + + + + + 2 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + true + 90 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + TARGET_HOSTILE + ELEMENT_FIRE + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Frost_Ring.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Frost_Ring.xdb new file mode 100644 index 00000000..346af212 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Frost_Ring.xdb @@ -0,0 +1,47 @@ + + + + + + + + + 3 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + true + 100 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + TARGET_HOSTILE + ELEMENT_WATER + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Ice_Bolt.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Ice_Bolt.xdb new file mode 100644 index 00000000..aee9c6a9 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Ice_Bolt.xdb @@ -0,0 +1,47 @@ + + + + + + + + + 2 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + true + 33 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_WATER + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Implosion.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Implosion.xdb new file mode 100644 index 00000000..4cb3fe3c --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Implosion.xdb @@ -0,0 +1,47 @@ + + + + + + + + + 5 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + true + 94 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_EARTH + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Lightning_Bolt.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Lightning_Bolt.xdb new file mode 100644 index 00000000..733c318a --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Lightning_Bolt.xdb @@ -0,0 +1,47 @@ + + + + + + + + + 1 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + true + 22 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_AIR + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_MagicFist.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_MagicFist.xdb new file mode 100644 index 00000000..98248ddd --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_MagicFist.xdb @@ -0,0 +1,47 @@ + + + + + + + + + 2 + MAGIC_SCHOOL_SUMMONING + 0 + true + 22 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_EARTH + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Magic_Arrow.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Magic_Arrow.xdb new file mode 100644 index 00000000..0b44b472 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Magic_Arrow.xdb @@ -0,0 +1,48 @@ + + + + + + + + + 2 + MAGIC_SCHOOL_LIGHT + 0 + 18 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + false + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Meteor_Shower.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Meteor_Shower.xdb new file mode 100644 index 00000000..d3df1c92 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_Meteor_Shower.xdb @@ -0,0 +1,47 @@ + + + + + + + + + 4 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + true + 100 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + TARGET_HOSTILE + ELEMENT_EARTH + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_StoneSpikes.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_StoneSpikes.xdb new file mode 100644 index 00000000..664101c8 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Empowered_StoneSpikes.xdb @@ -0,0 +1,47 @@ + + + + + + + + + 1 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + true + 37 + + + 24 + 8 + + + 32 + 8 + + + 40 + 8 + + + 48 + 8 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + TARGET_HOSTILE + ELEMENT_NONE + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Fireball.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Fireball.xdb new file mode 100644 index 00000000..f97cdc61 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Fireball.xdb @@ -0,0 +1,52 @@ + + + + + + + + + + + + 3 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + true + 15 + + + 0 + 30 + + + 0 + 24 + + + 0 + 27 + + + 0 + 30 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + TARGET_HOSTILE + ELEMENT_FIRE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Frost_Ring.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Frost_Ring.xdb new file mode 100644 index 00000000..695d7390 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Frost_Ring.xdb @@ -0,0 +1,52 @@ + + + + + + + + + + + + 3 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + true + 15 + + + 0 + 30 + + + 0 + 24 + + + 0 + 27 + + + 0 + 30 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + TARGET_HOSTILE + ELEMENT_WATER + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Ice_Bolt.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Ice_Bolt.xdb new file mode 100644 index 00000000..f122e2d2 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Ice_Bolt.xdb @@ -0,0 +1,52 @@ + + + + + + + + + + + + 0 + MAGIC_SCHOOL_DESTRUCTIVE + 1 + true + 7 + + + 40 + 0 + + + 60 + 0 + + + 80 + 0 + + + 100 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_WATER + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Implosion.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Implosion.xdb new file mode 100644 index 00000000..bda73236 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Implosion.xdb @@ -0,0 +1,52 @@ + + + + + + + + + + + 4 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + 20 + + + 0 + 70 + + + 0 + 50 + + + 0 + 60 + + + 0 + 70 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_EARTH + true + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Lightning_Bolt.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Lightning_Bolt.xdb new file mode 100644 index 00000000..9d1eb747 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Lightning_Bolt.xdb @@ -0,0 +1,52 @@ + + + + + + + + + + + + 2 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + true + 7 + + + 0 + 22 + + + 0 + 25 + + + 0 + 28 + + + 0 + 30 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_AIR + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/MagicFist.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/MagicFist.xdb new file mode 100644 index 00000000..2f3b035a --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/MagicFist.xdb @@ -0,0 +1,51 @@ + + + + + + + + + + + 2 + MAGIC_SCHOOL_SUMMONING + 0 + true + 6 + + + 0 + 16 + + + 0 + 18 + + + 0 + 20 + + + 0 + 22 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Magic_Arrow.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Magic_Arrow.xdb new file mode 100644 index 00000000..b4decac2 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Magic_Arrow.xdb @@ -0,0 +1,52 @@ + + + + + + + + + + + 1 + MAGIC_SCHOOL_LIGHT + 0 + 4 + + + 40 + 14 + + + 40 + 16 + + + 40 + 18 + + + 40 + 20 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + false + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Meteor_Shower.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Meteor_Shower.xdb new file mode 100644 index 00000000..24da9dd1 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Meteor_Shower.xdb @@ -0,0 +1,52 @@ + + + + + + + + + + + 2 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + 15 + + + 0 + 14 + + + 0 + 16 + + + 0 + 18 + + + 0 + 20 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + true + false + TARGET_HOSTILE + ELEMENT_EARTH + true + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/StoneSpikes.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/StoneSpikes.xdb new file mode 100644 index 00000000..182802ab --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/StoneSpikes.xdb @@ -0,0 +1,51 @@ + + + + + + + + + + + 1 + MAGIC_SCHOOL_DESTRUCTIVE + 0 + true + 4 + + + 20 + 14 + + + 20 + 16 + + + 20 + 18 + + + 20 + 20 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + TARGET_HOSTILE + ELEMENT_EARTH + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Uber_Chain_Lightning.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Uber_Chain_Lightning.xdb new file mode 100644 index 00000000..c37e9d19 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Uber_Chain_Lightning.xdb @@ -0,0 +1,49 @@ + + + + + + + + + 3 + MAGIC_SCHOOL_SPECIAL + 0 + true + 12 + + + 20 + 20 + + + 20 + 20 + + + 20 + 20 + + + 25 + 25 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_AIR + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Uber_Meteor_Shower.xdb b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Uber_Meteor_Shower.xdb new file mode 100644 index 00000000..639945eb --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/DestructiveMagic/Uber_Meteor_Shower.xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 4 + MAGIC_SCHOOL_SPECIAL + 0 + true + 34 + + + 15 + 15 + + + 15 + 15 + + + 15 + 15 + + + 20 + 20 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + TARGET_HOSTILE + ELEMENT_EARTH + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/AntiMagic.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/AntiMagic.xdb new file mode 100644 index 00000000..6afbb2ee --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/AntiMagic.xdb @@ -0,0 +1,69 @@ + + + + + + + + + + + 3 + MAGIC_SCHOOL_SUMMONING + 0 + 30 + + + 3 + 0.1 + + + 3 + 0.1 + + + 3 + 0.1 + + + 3 + 0.1 + + + + + 2 + 0.1 + + + 2 + 0.1 + + + 2 + 0.1 + + + 2 + 0.1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_NEUTRAL + ELEMENT_NONE + true + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Bless.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Bless.xdb new file mode 100644 index 00000000..6020ab28 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Bless.xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 1 + MAGIC_SCHOOL_LIGHT + 0 + true + 5 + + + 0.1 + 0.01 + + + 0.2 + 0.01 + + + 0.3 + 0.01 + + + 0.4 + 0.01 + + + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Bloodlust.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Bloodlust.xdb new file mode 100644 index 00000000..c953e3a5 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Bloodlust.xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 2 + MAGIC_SCHOOL_LIGHT + 0 + true + 5 + + + 1 + 0.35 + + + 4 + 0.35 + + + 7 + 0.35 + + + 8 + 0.35 + + + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Celestial_Shield.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Celestial_Shield.xdb new file mode 100644 index 00000000..062afbb4 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Celestial_Shield.xdb @@ -0,0 +1,69 @@ + + + + + + + + + + + 5 + MAGIC_SCHOOL_LIGHT + 0 + 30 + + + 0.25 + 0.005 + + + 0.15 + 0.005 + + + 0.2 + 0.005 + + + 0.25 + 0.005 + + + + + 99999 + 0 + + + 99999 + 0 + + + 99999 + 0 + + + 99999 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_FRIEND + ELEMENT_NONE + true + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Deflect_Arrows.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Deflect_Arrows.xdb new file mode 100644 index 00000000..a386ae6b --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Deflect_Arrows.xdb @@ -0,0 +1,69 @@ + + + + + + + + + + + 2 + MAGIC_SCHOOL_LIGHT + 0 + true + 5 + + + 0.0 + 0.015 + + + 0.15 + 0.015 + + + 0.3 + 0.015 + + + 0.45 + 0.015 + + + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Dispel.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Dispel.xdb new file mode 100644 index 00000000..c70232ba --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Dispel.xdb @@ -0,0 +1,50 @@ + + + + + + + + + 3 + MAGIC_SCHOOL_LIGHT + 0 + true + 15 + + + 0.5 + 0.005 + + + 0.3 + 0.005 + + + 0.4 + 0.05 + + + 0.5 + 0.005 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_NEUTRAL + ELEMENT_NONE + + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/DivineVengeance.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/DivineVengeance.xdb new file mode 100644 index 00000000..ee1bba88 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/DivineVengeance.xdb @@ -0,0 +1,52 @@ + + + + + + + + + 4 + MAGIC_SCHOOL_LIGHT + 0 + 15 + + + 0 + 3.0 + + + 0 + 2.6 + + + 0 + 2.8 + + + 0 + 3.0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + + + 0 + true + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Haste.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Haste.xdb new file mode 100644 index 00000000..30e8a190 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Haste.xdb @@ -0,0 +1,70 @@ + + + + + + + + + + + 2 + MAGIC_SCHOOL_LIGHT + 0 + true + 5 + + + 0.0 + 0.005 + + + 0.5 + 0.005 + + + 0.10 + 0.005 + + + 0.15 + 0.005 + + + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_FRIEND + ELEMENT_NONE + true + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Holy_Word.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Holy_Word.xdb new file mode 100644 index 00000000..8e507f18 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Holy_Word.xdb @@ -0,0 +1,56 @@ + + + + + + + + + + + + 3 + MAGIC_SCHOOL_LIGHT + 0 + 15 + + + 0 + 15 + + + 0 + 11 + + + 0 + 13 + + + 0 + 15 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_NEUTRAL + ELEMENT_FIRE + false + + + + + 0 + true + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Bless.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Bless.xdb new file mode 100644 index 00000000..a4ba729d --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Bless.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 1 + MAGIC_SCHOOL_LIGHT + 0 + false + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Bloodlast.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Bloodlast.xdb new file mode 100644 index 00000000..d5623149 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Bloodlast.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 2 + MAGIC_SCHOOL_LIGHT + 0 + false + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Deflect_Arrows.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Deflect_Arrows.xdb new file mode 100644 index 00000000..9c56ee72 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Deflect_Arrows.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 3 + MAGIC_SCHOOL_LIGHT + 0 + false + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Dispel.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Dispel.xdb new file mode 100644 index 00000000..54637a46 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Dispel.xdb @@ -0,0 +1,31 @@ + + + + + + + + + 2 + MAGIC_SCHOOL_LIGHT + 0 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_NEUTRAL + ELEMENT_NONE + true + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Haste.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Haste.xdb new file mode 100644 index 00000000..57a0f31d --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Haste.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 1 + MAGIC_SCHOOL_LIGHT + 0 + false + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Stoneskin.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Stoneskin.xdb new file mode 100644 index 00000000..305a551d --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Mass_Stoneskin.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 1 + MAGIC_SCHOOL_LIGHT + 0 + false + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Regeneration.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Regeneration.xdb new file mode 100644 index 00000000..8d758709 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Regeneration.xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 3 + MAGIC_SCHOOL_LIGHT + 0 + true + 10 + + + 150 + 5 + + + 100 + 5 + + + 100 + 5 + + + 150 + 5 + + + + + 2 + 0 + + + 2 + 0 + + + 2 + 0 + + + 2 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/StoneSkin.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/StoneSkin.xdb new file mode 100644 index 00000000..0b91f7f1 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/StoneSkin.xdb @@ -0,0 +1,70 @@ + + + + + + + + + + + 1 + MAGIC_SCHOOL_LIGHT + 0 + true + 5 + + + 4 + 0.35 + + + 7 + 0.35 + + + 8 + 0.35 + + + 13 + 0.35 + + + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + 5.5 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_FRIEND + ELEMENT_NONE + true + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/LightMagic/Teleport.xdb b/GameMechanics/Spell/Combat_Spells/LightMagic/Teleport.xdb new file mode 100644 index 00000000..911e1531 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/LightMagic/Teleport.xdb @@ -0,0 +1,39 @@ + + + + + + + + + + + + 4 + MAGIC_SCHOOL_DARK + 0 + 15 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_NEUTRAL + ELEMENT_NONE + true + + + + + 0 + true + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/EffectRunicAttunement.(Spell).xdb b/GameMechanics/Spell/Combat_Spells/RunicMagic/EffectRunicAttunement.(Spell).xdb new file mode 100644 index 00000000..c686a09c --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/RunicMagic/EffectRunicAttunement.(Spell).xdb @@ -0,0 +1,64 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/FineRune.(Spell).xdb b/GameMechanics/Spell/Combat_Spells/RunicMagic/FineRune.(Spell).xdb new file mode 100644 index 00000000..43bcaa64 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/RunicMagic/FineRune.(Spell).xdb @@ -0,0 +1,64 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfBattleRage.(Spell).xdb b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfBattleRage.(Spell).xdb new file mode 100644 index 00000000..c165db1b --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfBattleRage.(Spell).xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 5 + MAGIC_SCHOOL_RUNIC + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 1 + 0 + 0 + 0 + 5 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfBerserking.(Spell).xdb b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfBerserking.(Spell).xdb new file mode 100644 index 00000000..6b183dcb --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfBerserking.(Spell).xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 4 + MAGIC_SCHOOL_RUNIC + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 1 + 0 + 0 + 2 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfBerserkingDesc.txt b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfBerserkingDesc.txt new file mode 100644 index 00000000..4fc58a11 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfBerserkingDesc.txt @@ -0,0 +1 @@ +This creature will attack twice on its next melee attack. \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfCharge.(Spell).xdb b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfCharge.(Spell).xdb new file mode 100644 index 00000000..c10fb4bc --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfCharge.(Spell).xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 5 + MAGIC_SCHOOL_RUNIC + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 1 + 5 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfDragonForm.(Spell).xdb b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfDragonForm.(Spell).xdb new file mode 100644 index 00000000..8d16efbd --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfDragonForm.(Spell).xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 2 + MAGIC_SCHOOL_RUNIC + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 1 + 0 + 0 + 4 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfDragonFormDesc.txt b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfDragonFormDesc.txt new file mode 100644 index 00000000..899fc9e6 Binary files /dev/null and b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfDragonFormDesc.txt differ diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfDragonFormName.txt b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfDragonFormName.txt new file mode 100644 index 00000000..ce088690 Binary files /dev/null and b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfDragonFormName.txt differ diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfElementalImmunity.(Spell).xdb b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfElementalImmunity.(Spell).xdb new file mode 100644 index 00000000..6880f3ee --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfElementalImmunity.(Spell).xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 2 + MAGIC_SCHOOL_RUNIC + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 1 + 0 + 2 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfEthrealness.(Spell).xdb b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfEthrealness.(Spell).xdb new file mode 100644 index 00000000..9eafc4bc --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfEthrealness.(Spell).xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 4 + MAGIC_SCHOOL_RUNIC + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 2 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 1 + 0 + 4 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfExorcism.(Spell).xdb b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfExorcism.(Spell).xdb new file mode 100644 index 00000000..51aecb57 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfExorcism.(Spell).xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 1 + MAGIC_SCHOOL_RUNIC + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 1 + 0 + 0 + 0 + 1 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfMagicControl.(Spell).xdb b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfMagicControl.(Spell).xdb new file mode 100644 index 00000000..bb5f04e9 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfMagicControl.(Spell).xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 1 + MAGIC_SCHOOL_RUNIC + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfRevive.(Spell).xdb b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfRevive.(Spell).xdb new file mode 100644 index 00000000..07df1dcd --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfRevive.(Spell).xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 3 + MAGIC_SCHOOL_RUNIC + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 1 + 0 + 0 + 0 + 3 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfReviveDesc.txt b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfReviveDesc.txt new file mode 100644 index 00000000..53015d59 Binary files /dev/null and b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfReviveDesc.txt differ diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfReviveName.txt b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfReviveName.txt new file mode 100644 index 00000000..15cb62f7 Binary files /dev/null and b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfReviveName.txt differ diff --git a/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfStunning.(Spell).xdb b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfStunning.(Spell).xdb new file mode 100644 index 00000000..904f349c --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/RunicMagic/RuneOfStunning.(Spell).xdb @@ -0,0 +1,69 @@ + + + + + + + + + + + + 3 + MAGIC_SCHOOL_RUNIC + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 1 + 3 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/SummoningMagic/Animate_Dead.xdb b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Animate_Dead.xdb new file mode 100644 index 00000000..afc8c897 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Animate_Dead.xdb @@ -0,0 +1,70 @@ + + + + + + + + + + + + + 3 + MAGIC_SCHOOL_DARK + 0 + true + 15 + + + 0 + 19 + + + 0 + 21 + + + 0 + 23 + + + 0 + 25 + + + + + 0.16 + 0 + + + 0.16 + 0 + + + 0.16 + 0 + + + 0.16 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + true + TARGET_NEUTRAL + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/SummoningMagic/ArcaneCrystal.xdb b/GameMechanics/Spell/Combat_Spells/SummoningMagic/ArcaneCrystal.xdb new file mode 100644 index 00000000..2217120a --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/SummoningMagic/ArcaneCrystal.xdb @@ -0,0 +1,70 @@ + + + + + + + + + + + 1 + MAGIC_SCHOOL_SUMMONING + 0 + 5 + + + 0 + 18 + + + 0 + 20 + + + 0 + 22 + + + 0 + 24 + + + + + 3 + 0 + + + 3 + 0 + + + 3 + 0 + + + 3 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + true + false + TARGET_HOSTILE + ELEMENT_NONE + true + + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/SummoningMagic/BladeBarrier.xdb b/GameMechanics/Spell/Combat_Spells/SummoningMagic/BladeBarrier.xdb new file mode 100644 index 00000000..dd1fc966 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/SummoningMagic/BladeBarrier.xdb @@ -0,0 +1,71 @@ + + + + + + + + + + + 3 + MAGIC_SCHOOL_SUMMONING + 0 + 5 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 0.1 + + + 1 + 0.1 + + + 1 + 0.1 + + + 1 + 0.1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + true + false + TARGET_HOSTILE + ELEMENT_NONE + true + + + + 0 + true + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/SummoningMagic/ConjurePhoenix.xdb b/GameMechanics/Spell/Combat_Spells/SummoningMagic/ConjurePhoenix.xdb new file mode 100644 index 00000000..2b4f9c57 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/SummoningMagic/ConjurePhoenix.xdb @@ -0,0 +1,54 @@ + + + + + + + + + + + + + 5 + MAGIC_SCHOOL_SUMMONING + 0 + 20 + + + 1 + 0 + + + 3 + 0 + + + 2 + 0 + + + 1 + 0 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + 0 + true + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/SummoningMagic/Earthquake.xdb b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Earthquake.xdb new file mode 100644 index 00000000..04684da5 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Earthquake.xdb @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + 2 + MAGIC_SCHOOL_SUMMONING + 0 + 10 + + + 150 + 1 + + + 200 + 1 + + + 300 + 1 + + + 400 + 1 + + + + + 0 + 1 + + + 50 + 1 + + + 100 + 1 + + + 150 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/SummoningMagic/Firewall.xdb b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Firewall.xdb new file mode 100644 index 00000000..5ba3fd02 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Firewall.xdb @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + 4 + MAGIC_SCHOOL_SUMMONING + 0 + 10 + + + 0 + 20 + + + 0 + 16 + + + 0 + 18 + + + 0 + 20 + + + + + 3 + 0 + + + 3 + 0 + + + 3 + 0 + + + 3 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + true + false + TARGET_HOSTILE + ELEMENT_FIRE + true + + + + + 0 + true + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/SummoningMagic/Land_Mine.xdb b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Land_Mine.xdb new file mode 100644 index 00000000..020f5136 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Land_Mine.xdb @@ -0,0 +1,72 @@ + + + + + + + + + + + + + 1 + MAGIC_SCHOOL_SUMMONING + 0 + true + 7 + + + 0 + 12 + + + 0 + 14 + + + 0 + 16 + + + 0 + 18 + + + + + 5 + 0.1 + + + 6 + 0.1 + + + 7 + 0.1 + + + 8 + 0.1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + TARGET_NEUTRAL + ELEMENT_FIRE + true + + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/SummoningMagic/Phantom.xdb b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Phantom.xdb new file mode 100644 index 00000000..1b25ecb3 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Phantom.xdb @@ -0,0 +1,52 @@ + + + + + + + + + + + 4 + MAGIC_SCHOOL_DARK + 0 + true + 15 + + + 1 + 0.2 + + + -1 + 0.2 + + + 0 + 0.2 + + + 1 + 0.2 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/SummoningMagic/Resurrect.xdb b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Resurrect.xdb new file mode 100644 index 00000000..6d24d0dd --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Resurrect.xdb @@ -0,0 +1,71 @@ + + + + + + + + + + + + + 4 + MAGIC_SCHOOL_LIGHT + 0 + 20 + + + 0 + 60 + + + 0 + 50 + + + 0 + 55 + + + 0 + 60 + + + + + 0.1 + -0.003 + + + 0.1 + -0.003 + + + 0.1 + -0.003 + + + 0.1 + -0.003 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + true + TARGET_FRIEND + ELEMENT_NONE + true + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/SummoningMagic/SummonHive.xdb b/GameMechanics/Spell/Combat_Spells/SummoningMagic/SummonHive.xdb new file mode 100644 index 00000000..05f0e100 --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/SummoningMagic/SummonHive.xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 4 + MAGIC_SCHOOL_SUMMONING + 0 + true + 10 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + TARGET_HOSTILE + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Combat_Spells/SummoningMagic/Wasp_Swarm.xdb b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Wasp_Swarm.xdb new file mode 100644 index 00000000..34996a4e --- /dev/null +++ b/GameMechanics/Spell/Combat_Spells/SummoningMagic/Wasp_Swarm.xdb @@ -0,0 +1,68 @@ + + + + + + + + + + + 1 + MAGIC_SCHOOL_SUMMONING + 0 + true + 4 + + + 30 + 8 + + + 30 + 10 + + + 30 + 12 + + + 30 + 14 + + + + + 0.25 + 0 + + + 0.35 + 0 + + + 0.45 + 0 + + + 0.55 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Creature_Abilities/Academy/CallLightning.xdb b/GameMechanics/Spell/Creature_Abilities/Academy/CallLightning.xdb new file mode 100644 index 00000000..7b1c4ce0 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Academy/CallLightning.xdb @@ -0,0 +1,50 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + 0 + 65 + + + 0 + 65 + + + 0 + 65 + + + 0 + 65 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_AIR + true + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Academy/CallStorm.xdb b/GameMechanics/Spell/Creature_Abilities/Academy/CallStorm.xdb new file mode 100644 index 00000000..6159c855 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Academy/CallStorm.xdb @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 0 + 10 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + true + false + TARGET_HOSTILE + ELEMENT_AIR + true + + + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Academy/Dash.xdb b/GameMechanics/Spell/Creature_Abilities/Academy/Dash.xdb new file mode 100644 index 00000000..8d55cc4f --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Academy/Dash.xdb @@ -0,0 +1,32 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Academy/LuckGambler.xdb b/GameMechanics/Spell/Creature_Abilities/Academy/LuckGambler.xdb new file mode 100644 index 00000000..7ae4d5fb --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Academy/LuckGambler.xdb @@ -0,0 +1,71 @@ + + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_NEUTRAL + ELEMENT_NONE + true + + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Academy/RandomCastCurse.xdb b/GameMechanics/Spell/Creature_Abilities/Academy/RandomCastCurse.xdb new file mode 100644 index 00000000..3d5672e2 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Academy/RandomCastCurse.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Academy/RandomCastCurseBless.xdb b/GameMechanics/Spell/Creature_Abilities/Academy/RandomCastCurseBless.xdb new file mode 100644 index 00000000..88dcca6d --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Academy/RandomCastCurseBless.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_NEUTRAL + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Academy/Repair.xdb b/GameMechanics/Spell/Creature_Abilities/Academy/Repair.xdb new file mode 100644 index 00000000..d8ee6ce4 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Academy/Repair.xdb @@ -0,0 +1,36 @@ + + + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + true + TARGET_FRIEND + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Academy/Sabotage.xdb b/GameMechanics/Spell/Creature_Abilities/Academy/Sabotage.xdb new file mode 100644 index 00000000..d21789eb --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Academy/Sabotage.xdb @@ -0,0 +1,67 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Common/Enraged.xdb b/GameMechanics/Spell/Creature_Abilities/Common/Enraged.xdb new file mode 100644 index 00000000..e8cca341 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Common/Enraged.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dungeon/Incinerate.xdb b/GameMechanics/Spell/Creature_Abilities/Dungeon/Incinerate.xdb new file mode 100644 index 00000000..b2e23ed7 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dungeon/Incinerate.xdb @@ -0,0 +1,64 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dungeon/Invisibility.xdb b/GameMechanics/Spell/Creature_Abilities/Dungeon/Invisibility.xdb new file mode 100644 index 00000000..fc36e0e8 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dungeon/Invisibility.xdb @@ -0,0 +1,65 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_NEUTRAL + ELEMENT_NONE + false + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dungeon/LizardBiteHitEffect.xdb b/GameMechanics/Spell/Creature_Abilities/Dungeon/LizardBiteHitEffect.xdb new file mode 100644 index 00000000..bdfbb5ac --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dungeon/LizardBiteHitEffect.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dungeon/PoisonEffect.xdb b/GameMechanics/Spell/Creature_Abilities/Dungeon/PoisonEffect.xdb new file mode 100644 index 00000000..c03755a5 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dungeon/PoisonEffect.xdb @@ -0,0 +1,34 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dungeon/RegenerationEffect.xdb b/GameMechanics/Spell/Creature_Abilities/Dungeon/RegenerationEffect.xdb new file mode 100644 index 00000000..71284225 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dungeon/RegenerationEffect.xdb @@ -0,0 +1,34 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dwarf/BattleRage.xdb b/GameMechanics/Spell/Creature_Abilities/Dwarf/BattleRage.xdb new file mode 100644 index 00000000..e3425b1e --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dwarf/BattleRage.xdb @@ -0,0 +1,64 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dwarf/BearRoar.xdb b/GameMechanics/Spell/Creature_Abilities/Dwarf/BearRoar.xdb new file mode 100644 index 00000000..c9120814 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dwarf/BearRoar.xdb @@ -0,0 +1,69 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_FRIEND + ELEMENT_NONE + true + + + + 0 + true + diff --git a/GameMechanics/Spell/Creature_Abilities/Dwarf/BerserkerRage.xdb b/GameMechanics/Spell/Creature_Abilities/Dwarf/BerserkerRage.xdb new file mode 100644 index 00000000..486a6dcf --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dwarf/BerserkerRage.xdb @@ -0,0 +1,64 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dwarf/Flamestrike.xdb b/GameMechanics/Spell/Creature_Abilities/Dwarf/Flamestrike.xdb new file mode 100644 index 00000000..2a73e95c --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dwarf/Flamestrike.xdb @@ -0,0 +1,67 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dwarf/HarpoonStrike.xdb b/GameMechanics/Spell/Creature_Abilities/Dwarf/HarpoonStrike.xdb new file mode 100644 index 00000000..fa943304 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dwarf/HarpoonStrike.xdb @@ -0,0 +1,64 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dwarf/LiquidFlameEffect.xdb b/GameMechanics/Spell/Creature_Abilities/Dwarf/LiquidFlameEffect.xdb new file mode 100644 index 00000000..35f3e6ae --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dwarf/LiquidFlameEffect.xdb @@ -0,0 +1,69 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_FIRE + + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dwarf/MagmaShieldEffect.xdb b/GameMechanics/Spell/Creature_Abilities/Dwarf/MagmaShieldEffect.xdb new file mode 100644 index 00000000..b92989c8 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dwarf/MagmaShieldEffect.xdb @@ -0,0 +1,64 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_FIRE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dwarf/MarkOfFireEffect.xdb b/GameMechanics/Spell/Creature_Abilities/Dwarf/MarkOfFireEffect.xdb new file mode 100644 index 00000000..d739560e --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dwarf/MarkOfFireEffect.xdb @@ -0,0 +1,66 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dwarf/PreparedPosition.xdb b/GameMechanics/Spell/Creature_Abilities/Dwarf/PreparedPosition.xdb new file mode 100644 index 00000000..4dbe18d4 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dwarf/PreparedPosition.xdb @@ -0,0 +1,64 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dwarf/Stormbolt.xdb b/GameMechanics/Spell/Creature_Abilities/Dwarf/Stormbolt.xdb new file mode 100644 index 00000000..55e926d5 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dwarf/Stormbolt.xdb @@ -0,0 +1,64 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Dwarf/WoundEffect.xdb b/GameMechanics/Spell/Creature_Abilities/Dwarf/WoundEffect.xdb new file mode 100644 index 00000000..7d543436 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Dwarf/WoundEffect.xdb @@ -0,0 +1,66 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Haven/BattleDive.xdb b/GameMechanics/Spell/Creature_Abilities/Haven/BattleDive.xdb new file mode 100644 index 00000000..977ad11f --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Haven/BattleDive.xdb @@ -0,0 +1,33 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + true + false + TARGET_HOSTILE + ELEMENT_NONE + false + + 0 + true + diff --git a/GameMechanics/Spell/Creature_Abilities/Haven/BattleDiveFinish.xdb b/GameMechanics/Spell/Creature_Abilities/Haven/BattleDiveFinish.xdb new file mode 100644 index 00000000..5c44e1c1 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Haven/BattleDiveFinish.xdb @@ -0,0 +1,33 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + true + false + TARGET_HOSTILE + ELEMENT_NONE + true + + 0 + true + diff --git a/GameMechanics/Spell/Creature_Abilities/Haven/LayHands.xdb b/GameMechanics/Spell/Creature_Abilities/Haven/LayHands.xdb new file mode 100644 index 00000000..0c0b298f --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Haven/LayHands.xdb @@ -0,0 +1,34 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Haven/PackDive.xdb b/GameMechanics/Spell/Creature_Abilities/Haven/PackDive.xdb new file mode 100644 index 00000000..b795f65a --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Haven/PackDive.xdb @@ -0,0 +1,67 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + true + false + TARGET_HOSTILE + ELEMENT_NONE + true + + 0 + true + diff --git a/GameMechanics/Spell/Creature_Abilities/Haven/PackDiveFinish.xdb b/GameMechanics/Spell/Creature_Abilities/Haven/PackDiveFinish.xdb new file mode 100644 index 00000000..95e8e1bf --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Haven/PackDiveFinish.xdb @@ -0,0 +1,64 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + TARGET_HOSTILE + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Haven/Renegates/BattleFrenzy.(Texture).dds b/GameMechanics/Spell/Creature_Abilities/Haven/Renegates/BattleFrenzy.(Texture).dds new file mode 100644 index 00000000..af676968 Binary files /dev/null and b/GameMechanics/Spell/Creature_Abilities/Haven/Renegates/BattleFrenzy.(Texture).dds differ diff --git a/GameMechanics/Spell/Creature_Abilities/Haven/Renegates/BattleFrenzy.(Texture).xdb b/GameMechanics/Spell/Creature_Abilities/Haven/Renegates/BattleFrenzy.(Texture).xdb new file mode 100644 index 00000000..4c9ee445 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Haven/Renegates/BattleFrenzy.(Texture).xdb @@ -0,0 +1,20 @@ + + + + + REGULAR + CONVERT_TRANSPARENT + CLAMP + TF_8888 + 128 + 128 + 0 + 1 + 0 + 1975102375 + true + false + false + true + false + diff --git a/GameMechanics/Spell/Creature_Abilities/Haven/Renegates/BattleFrenzy.xdb b/GameMechanics/Spell/Creature_Abilities/Haven/Renegates/BattleFrenzy.xdb new file mode 100644 index 00000000..364caa4e --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Haven/Renegates/BattleFrenzy.xdb @@ -0,0 +1,64 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Haven/RessurectAllies.xdb b/GameMechanics/Spell/Creature_Abilities/Haven/RessurectAllies.xdb new file mode 100644 index 00000000..04a636c9 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Haven/RessurectAllies.xdb @@ -0,0 +1,36 @@ + + + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + true + TARGET_FRIEND + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Haven/ScatterShot.xdb b/GameMechanics/Spell/Creature_Abilities/Haven/ScatterShot.xdb new file mode 100644 index 00000000..b372a390 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Haven/ScatterShot.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + TARGET_HOSTILE + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Inferno/Explosion.xdb b/GameMechanics/Spell/Creature_Abilities/Inferno/Explosion.xdb new file mode 100644 index 00000000..6d2f44f2 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Inferno/Explosion.xdb @@ -0,0 +1,52 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 0 + 80 + + + 0 + 80 + + + 0 + 80 + + + 0 + 80 + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + true + false + TARGET_HOSTILE + ELEMENT_FIRE + true + + + + 0 + true + diff --git a/GameMechanics/Spell/Creature_Abilities/Inferno/Fear.xdb b/GameMechanics/Spell/Creature_Abilities/Inferno/Fear.xdb new file mode 100644 index 00000000..4f9f4a18 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Inferno/Fear.xdb @@ -0,0 +1,35 @@ + + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Inferno/Leap.xdb b/GameMechanics/Spell/Creature_Abilities/Inferno/Leap.xdb new file mode 100644 index 00000000..ba349bfb --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Inferno/Leap.xdb @@ -0,0 +1,65 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + diff --git a/GameMechanics/Spell/Creature_Abilities/Inferno/ManaDestroy.xdb b/GameMechanics/Spell/Creature_Abilities/Inferno/ManaDestroy.xdb new file mode 100644 index 00000000..ff0024c7 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Inferno/ManaDestroy.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Inferno/ManaSteal.xdb b/GameMechanics/Spell/Creature_Abilities/Inferno/ManaSteal.xdb new file mode 100644 index 00000000..b6d46735 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Inferno/ManaSteal.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Inferno/Seduce.xdb b/GameMechanics/Spell/Creature_Abilities/Inferno/Seduce.xdb new file mode 100644 index 00000000..7bdbca7b --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Inferno/Seduce.xdb @@ -0,0 +1,69 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Inferno/Seducing.xdb b/GameMechanics/Spell/Creature_Abilities/Inferno/Seducing.xdb new file mode 100644 index 00000000..c02ff47f --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Inferno/Seducing.xdb @@ -0,0 +1,65 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + diff --git a/GameMechanics/Spell/Creature_Abilities/Inferno/SummonBalor.xdb b/GameMechanics/Spell/Creature_Abilities/Inferno/SummonBalor.xdb new file mode 100644 index 00000000..2b772630 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Inferno/SummonBalor.xdb @@ -0,0 +1,37 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + true + TARGET_FRIEND + ELEMENT_NONE + true + + + + 0 + true + diff --git a/GameMechanics/Spell/Creature_Abilities/Inferno/SummonOther.xdb b/GameMechanics/Spell/Creature_Abilities/Inferno/SummonOther.xdb new file mode 100644 index 00000000..f24e38c9 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Inferno/SummonOther.xdb @@ -0,0 +1,70 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_NEUTRAL + ELEMENT_NONE + true + + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Inferno/Syphon_Mana.xdb b/GameMechanics/Spell/Creature_Abilities/Inferno/Syphon_Mana.xdb new file mode 100644 index 00000000..dc634f4c --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Inferno/Syphon_Mana.xdb @@ -0,0 +1,67 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_FRIEND + ELEMENT_NONE + true + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Necropolis/Ammo_Steal.xdb b/GameMechanics/Spell/Creature_Abilities/Necropolis/Ammo_Steal.xdb new file mode 100644 index 00000000..d7b07943 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Necropolis/Ammo_Steal.xdb @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Necropolis/Death_Cloud.xdb b/GameMechanics/Spell/Creature_Abilities/Necropolis/Death_Cloud.xdb new file mode 100644 index 00000000..d8c3e5a9 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Necropolis/Death_Cloud.xdb @@ -0,0 +1,32 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + TARGET_HOSTILE + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Necropolis/Death_Wail.xdb b/GameMechanics/Spell/Creature_Abilities/Necropolis/Death_Wail.xdb new file mode 100644 index 00000000..abfe428b --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Necropolis/Death_Wail.xdb @@ -0,0 +1,71 @@ + + + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + true + false + TARGET_HOSTILE + ELEMENT_NONE + true + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Necropolis/Harm_Touch.xdb b/GameMechanics/Spell/Creature_Abilities/Necropolis/Harm_Touch.xdb new file mode 100644 index 00000000..fafa335c --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Necropolis/Harm_Touch.xdb @@ -0,0 +1,34 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Necropolis/HorrorOfDeath.xdb b/GameMechanics/Spell/Creature_Abilities/Necropolis/HorrorOfDeath.xdb new file mode 100644 index 00000000..25df9090 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Necropolis/HorrorOfDeath.xdb @@ -0,0 +1,64 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Necropolis/Life_Drain.xdb b/GameMechanics/Spell/Creature_Abilities/Necropolis/Life_Drain.xdb new file mode 100644 index 00000000..431108e6 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Necropolis/Life_Drain.xdb @@ -0,0 +1,32 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Necropolis/Mana_Drain.xdb b/GameMechanics/Spell/Creature_Abilities/Necropolis/Mana_Drain.xdb new file mode 100644 index 00000000..09594f63 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Necropolis/Mana_Drain.xdb @@ -0,0 +1,32 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Necropolis/SleepingStrike.xdb b/GameMechanics/Spell/Creature_Abilities/Necropolis/SleepingStrike.xdb new file mode 100644 index 00000000..34fee68e --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Necropolis/SleepingStrike.xdb @@ -0,0 +1,66 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Necropolis/Weakening_Strike.xdb b/GameMechanics/Spell/Creature_Abilities/Necropolis/Weakening_Strike.xdb new file mode 100644 index 00000000..e7323e15 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Necropolis/Weakening_Strike.xdb @@ -0,0 +1,32 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Neutrals/Agility.xdb b/GameMechanics/Spell/Creature_Abilities/Neutrals/Agility.xdb new file mode 100644 index 00000000..54186555 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Neutrals/Agility.xdb @@ -0,0 +1,64 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Neutrals/FireShieldEffect.xdb b/GameMechanics/Spell/Creature_Abilities/Neutrals/FireShieldEffect.xdb new file mode 100644 index 00000000..bc4522b2 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Neutrals/FireShieldEffect.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_FIRE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Neutrals/FrostBreath.xdb b/GameMechanics/Spell/Creature_Abilities/Neutrals/FrostBreath.xdb new file mode 100644 index 00000000..c3754469 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Neutrals/FrostBreath.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Creature_Abilities/Preserve/EntanglingRoots.xdb b/GameMechanics/Spell/Creature_Abilities/Preserve/EntanglingRoots.xdb new file mode 100644 index 00000000..b94f8413 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Preserve/EntanglingRoots.xdb @@ -0,0 +1,33 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Preserve/Mana_Feed.xdb b/GameMechanics/Spell/Creature_Abilities/Preserve/Mana_Feed.xdb new file mode 100644 index 00000000..27ae6d9a --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Preserve/Mana_Feed.xdb @@ -0,0 +1,32 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Preserve/PowerFeed.xdb b/GameMechanics/Spell/Creature_Abilities/Preserve/PowerFeed.xdb new file mode 100644 index 00000000..89a60f0b --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Preserve/PowerFeed.xdb @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 35 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Preserve/Rage_Of_The_Forest.xdb b/GameMechanics/Spell/Creature_Abilities/Preserve/Rage_Of_The_Forest.xdb new file mode 100644 index 00000000..594b2d3e --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Preserve/Rage_Of_The_Forest.xdb @@ -0,0 +1,67 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_FRIEND + ELEMENT_NONE + true + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/Preserve/Treeant_Union.xdb b/GameMechanics/Spell/Creature_Abilities/Preserve/Treeant_Union.xdb new file mode 100644 index 00000000..60031e27 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/Preserve/Treeant_Union.xdb @@ -0,0 +1,70 @@ + + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + + diff --git a/GameMechanics/Spell/Creature_Abilities/War_Machines/FirstAidTent_Heal.xdb b/GameMechanics/Spell/Creature_Abilities/War_Machines/FirstAidTent_Heal.xdb new file mode 100644 index 00000000..09100987 --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/War_Machines/FirstAidTent_Heal.xdb @@ -0,0 +1,36 @@ + + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_NEUTRAL + ELEMENT_NONE + + + + + \ No newline at end of file diff --git a/GameMechanics/Spell/Creature_Abilities/War_Machines/FirstAidTent_Plague.xdb b/GameMechanics/Spell/Creature_Abilities/War_Machines/FirstAidTent_Plague.xdb new file mode 100644 index 00000000..35a10dbd --- /dev/null +++ b/GameMechanics/Spell/Creature_Abilities/War_Machines/FirstAidTent_Plague.xdb @@ -0,0 +1,35 @@ + + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_NEUTRAL + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Hero_Abilities/Barbarian/Battlecry.xdb b/GameMechanics/Spell/Hero_Abilities/Barbarian/Battlecry.xdb new file mode 100644 index 00000000..c3476a72 --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Barbarian/Battlecry.xdb @@ -0,0 +1,71 @@ + + + + + + + + + + + 3 + MAGIC_SCHOOL_WARCRIES + 25 + 10 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_FRIEND + ELEMENT_NONE + true + + + + 0 + true + diff --git a/GameMechanics/Spell/Hero_Abilities/Barbarian/CallOfBlood.xdb b/GameMechanics/Spell/Hero_Abilities/Barbarian/CallOfBlood.xdb new file mode 100644 index 00000000..61a04393 --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Barbarian/CallOfBlood.xdb @@ -0,0 +1,73 @@ + + + + + + + + + + + + + 1 + MAGIC_SCHOOL_WARCRIES + 5 + 5 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_FRIEND + ELEMENT_NONE + true + + + + 0 + true + diff --git a/GameMechanics/Spell/Hero_Abilities/Barbarian/FearMyRoar.xdb b/GameMechanics/Spell/Hero_Abilities/Barbarian/FearMyRoar.xdb new file mode 100644 index 00000000..161dbd4c --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Barbarian/FearMyRoar.xdb @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + 1 + MAGIC_SCHOOL_WARCRIES + 15 + 8 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + + + 0 + true + diff --git a/GameMechanics/Spell/Hero_Abilities/Barbarian/RallingCry.xdb b/GameMechanics/Spell/Hero_Abilities/Barbarian/RallingCry.xdb new file mode 100644 index 00000000..fd67a74a --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Barbarian/RallingCry.xdb @@ -0,0 +1,69 @@ + + + + + + + + + + + 1 + MAGIC_SCHOOL_WARCRIES + 0 + 5 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_FRIEND + ELEMENT_NONE + true + + + + diff --git a/GameMechanics/Spell/Hero_Abilities/Barbarian/ShoutOfMany.xdb b/GameMechanics/Spell/Hero_Abilities/Barbarian/ShoutOfMany.xdb new file mode 100644 index 00000000..82e1cf83 --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Barbarian/ShoutOfMany.xdb @@ -0,0 +1,72 @@ + + + + + + + + + + + + + 2 + MAGIC_SCHOOL_WARCRIES + 20 + 10 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + + + + diff --git a/GameMechanics/Spell/Hero_Abilities/Barbarian/WordOfTheChief.xdb b/GameMechanics/Spell/Hero_Abilities/Barbarian/WordOfTheChief.xdb new file mode 100644 index 00000000..39b26792 --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Barbarian/WordOfTheChief.xdb @@ -0,0 +1,69 @@ + + + + + + + + + + + + + 1 + MAGIC_SCHOOL_WARCRIES + 10 + 4 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + diff --git a/GameMechanics/Spell/Hero_Abilities/BigBossFirewall.xdb b/GameMechanics/Spell/Hero_Abilities/BigBossFirewall.xdb new file mode 100644 index 00000000..147851b9 --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/BigBossFirewall.xdb @@ -0,0 +1,66 @@ + + + + + + + + + 5 + MAGIC_SCHOOL_SPECIAL + 0 + false + 5 + + + 250 + 0 + + + 250 + 0 + + + 250 + 0 + + + 250 + 0 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_NEUTRAL + ELEMENT_FIRE + + + + diff --git a/GameMechanics/Spell/Hero_Abilities/Demon_Lord/Fire_Protection.xdb b/GameMechanics/Spell/Hero_Abilities/Demon_Lord/Fire_Protection.xdb new file mode 100644 index 00000000..ff28e788 --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Demon_Lord/Fire_Protection.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Hero_Abilities/Knight/Encourage.xdb b/GameMechanics/Spell/Hero_Abilities/Knight/Encourage.xdb new file mode 100644 index 00000000..918c9a3a --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Knight/Encourage.xdb @@ -0,0 +1,35 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + true + false + false + TARGET_FRIEND + ELEMENT_NONE + true + + + + diff --git a/GameMechanics/Spell/Hero_Abilities/Necromancer/AvatarOfDeath.xdb b/GameMechanics/Spell/Hero_Abilities/Necromancer/AvatarOfDeath.xdb new file mode 100644 index 00000000..7e26adbe --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Necromancer/AvatarOfDeath.xdb @@ -0,0 +1,69 @@ + + + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + 0 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + 1 + 1 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + false + TARGET_HOSTILE + ELEMENT_NONE + true + + diff --git a/GameMechanics/Spell/Hero_Abilities/Ranger/SoilBurn.xdb b/GameMechanics/Spell/Hero_Abilities/Ranger/SoilBurn.xdb new file mode 100644 index 00000000..426df185 --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Ranger/SoilBurn.xdb @@ -0,0 +1,34 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Hero_Abilities/Ranger/SunFire.xdb b/GameMechanics/Spell/Hero_Abilities/Ranger/SunFire.xdb new file mode 100644 index 00000000..c4de42fe --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Ranger/SunFire.xdb @@ -0,0 +1,34 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Hero_Abilities/Wizard/Counterspell.xdb b/GameMechanics/Spell/Hero_Abilities/Wizard/Counterspell.xdb new file mode 100644 index 00000000..76cafc74 --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Wizard/Counterspell.xdb @@ -0,0 +1,34 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_FRIEND + ELEMENT_NONE + + + + diff --git a/GameMechanics/Spell/Hero_Abilities/Wizard/Remote_Control.xdb b/GameMechanics/Spell/Hero_Abilities/Wizard/Remote_Control.xdb new file mode 100644 index 00000000..ede182df --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Wizard/Remote_Control.xdb @@ -0,0 +1,30 @@ + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + true + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + diff --git a/GameMechanics/Spell/Hero_Abilities/Wizard/Unsummon.xdb b/GameMechanics/Spell/Hero_Abilities/Wizard/Unsummon.xdb new file mode 100644 index 00000000..1ced1f5e --- /dev/null +++ b/GameMechanics/Spell/Hero_Abilities/Wizard/Unsummon.xdb @@ -0,0 +1,34 @@ + + + + + + + + + + + 0 + MAGIC_SCHOOL_SPECIAL + 0 + false + 0 + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + false + false + TARGET_HOSTILE + ELEMENT_NONE + + + + diff --git a/MapObjects/Academy/Astral.(AdvMapHeroShared).xdb b/MapObjects/Academy/Astral.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..1c304f06 --- /dev/null +++ b/MapObjects/Academy/Astral.(AdvMapHeroShared).xdb @@ -0,0 +1,77 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Astral + HERO_CLASS_ELEMENTALIST + HERO_SPEC_INEXHAUSTIBLE + + MASTERY_BASIC + HERO_SKILL_ARTIFICIER + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 1 + 3 + 1 + + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Cyrus.(AdvMapHeroShared).xdb b/MapObjects/Academy/Cyrus.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..cf29a41c --- /dev/null +++ b/MapObjects/Academy/Cyrus.(AdvMapHeroShared).xdb @@ -0,0 +1,77 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Cyrus + HERO_CLASS_ELEMENTALIST + + + MASTERY_BASIC + HERO_SKILL_ARTIFICIER + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 1 + 3 + 1 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Davius.(AdvMapHeroShared).xdb b/MapObjects/Academy/Davius.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..04e6059b --- /dev/null +++ b/MapObjects/Academy/Davius.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Davius + HERO_CLASS_GUILDMASTER + + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + + + + + + + + TOWN_ACADEMY + + + + 2 + 0 + 1 + 2 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Emilia.(AdvMapHeroShared).xdb b/MapObjects/Academy/Emilia.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..8be92589 --- /dev/null +++ b/MapObjects/Academy/Emilia.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Emilia + HERO_CLASS_ELEMENTALIST + + + MASTERY_BASIC + HERO_SKILL_ARTIFICIER + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 1 + 3 + 1 + + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Faiz.(AdvMapHeroShared).xdb b/MapObjects/Academy/Faiz.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..6659611c --- /dev/null +++ b/MapObjects/Academy/Faiz.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Faiz + HERO_CLASS_WIZARDA + HERO_SPEC_PRUDENT + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 0 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Gurvilin.(AdvMapHeroShared).xdb b/MapObjects/Academy/Gurvilin.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..d8d6f603 --- /dev/null +++ b/MapObjects/Academy/Gurvilin.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Gurvilin + HERO_CLASS_WIZARDA + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 0 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Havez.(AdvMapHeroShared).xdb b/MapObjects/Academy/Havez.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..4ee43327 --- /dev/null +++ b/MapObjects/Academy/Havez.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Havez + HERO_CLASS_GUILDMASTER + HERO_SPEC_GREMLINS + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + + + + + + + + TOWN_ACADEMY + + + + 2 + 0 + 1 + 2 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Isher.(AdvMapHeroShared).xdb b/MapObjects/Academy/Isher.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..b76e0290 --- /dev/null +++ b/MapObjects/Academy/Isher.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Isher + HERO_CLASS_GUILDMASTER + HERO_SPEC_GOLEMS + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + + + + + + + + TOWN_ACADEMY + + + + 2 + 0 + 1 + 2 + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/IsherC.(AdvMapHeroShared).xdb b/MapObjects/Academy/IsherC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..77f3a50d --- /dev/null +++ b/MapObjects/Academy/IsherC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + IsherC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_ACADEMY + + + + 2 + 0 + 1 + 2 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Josephine.(AdvMapHeroShared).xdb b/MapObjects/Academy/Josephine.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..a730123f --- /dev/null +++ b/MapObjects/Academy/Josephine.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Josephine + HERO_CLASS_GUILDMASTER + HERO_SPEC_LOGISTICS + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + + + + + + + + TOWN_ACADEMY + + + + 2 + 0 + 1 + 2 + + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Maahir.(AdvMapHeroShared).xdb b/MapObjects/Academy/Maahir.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..bb9e0642 --- /dev/null +++ b/MapObjects/Academy/Maahir.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Maahir + HERO_CLASS_WIZARDA + HERO_SPEC_TALENTED_WARRIOR + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 0 + 2 + 2 + + + MASTERY_EXPERT + HERO_SKILL_LEARNING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Minasli.(AdvMapHeroShared).xdb b/MapObjects/Academy/Minasli.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..8edabb2a --- /dev/null +++ b/MapObjects/Academy/Minasli.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Minasli + HERO_CLASS_GUILDMASTER + HERO_SPEC_CHOSEN_BY_GODS + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 0 + 0 + 1 + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Nur.(AdvMapHeroShared).xdb b/MapObjects/Academy/Nur.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..931da59c --- /dev/null +++ b/MapObjects/Academy/Nur.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Nur + HERO_CLASS_ELEMENTALIST + HERO_SPEC_POWER_BARGAIN + + MASTERY_BASIC + HERO_SKILL_ARTIFICIER + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 1 + 3 + 1 + + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Razzak.(AdvMapHeroShared).xdb b/MapObjects/Academy/Razzak.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..5deeddd6 --- /dev/null +++ b/MapObjects/Academy/Razzak.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Razzak + HERO_CLASS_WIZARDA + HERO_SPEC_MAGES + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 0 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Rissa.(AdvMapHeroShared).xdb b/MapObjects/Academy/Rissa.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..08547527 --- /dev/null +++ b/MapObjects/Academy/Rissa.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Rissa + HERO_CLASS_GUILDMASTER + + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + + + + + + + + TOWN_ACADEMY + + + + 2 + 0 + 1 + 2 + + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Sufi.(AdvMapHeroShared).xdb b/MapObjects/Academy/Sufi.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..8b92f3e2 --- /dev/null +++ b/MapObjects/Academy/Sufi.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Sufi + HERO_CLASS_WIZARDA + HERO_SPEC_FEATHER_MAGE + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 0 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/SufiC.(AdvMapHeroShared).xdb b/MapObjects/Academy/SufiC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..7454d46a --- /dev/null +++ b/MapObjects/Academy/SufiC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + SufiC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 0 + 2 + 3 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Tan.(AdvMapHeroShared).xdb b/MapObjects/Academy/Tan.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..e6b5b943 --- /dev/null +++ b/MapObjects/Academy/Tan.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Tan + HERO_CLASS_WIZARDA + HERO_SPEC_RADIANT + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 0 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_SUMMONING_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/TanC.(AdvMapHeroShared).xdb b/MapObjects/Academy/TanC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..134fd966 --- /dev/null +++ b/MapObjects/Academy/TanC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + TanC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 0 + 2 + 3 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Timerkhan.(AdvMapHeroShared).xdb b/MapObjects/Academy/Timerkhan.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..6f52a212 --- /dev/null +++ b/MapObjects/Academy/Timerkhan.(AdvMapHeroShared).xdb @@ -0,0 +1,81 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Timerkhan + HERO_CLASS_ELEMENTALIST + HERO_SPEC_VESSEL_OF_ELRATH + + MASTERY_BASIC + HERO_SKILL_ARTIFICIER + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 1 + 3 + 1 + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + SPELL_MASS_BLOOD_LUST + SPELL_MASS_BLESS + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Academy/Zehir.(AdvMapHeroShared).xdb b/MapObjects/Academy/Zehir.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..8b91e462 --- /dev/null +++ b/MapObjects/Academy/Zehir.(AdvMapHeroShared).xdb @@ -0,0 +1,85 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Zehir + HERO_CLASS_ELEMENTALIST + HERO_SPEC_MASTER_OF_ELEMENTS + + MASTERY_BASIC + HERO_SKILL_ARTIFICIER + + + + + + + + + + + + TOWN_ACADEMY + + + + 0 + 1 + 3 + 1 + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Artifacts/Helm_of_Chaos.(AdvMapArtifactShared).xdb b/MapObjects/Artifacts/Helm_of_Chaos.(AdvMapArtifactShared).xdb new file mode 100644 index 00000000..e5b951e3 --- /dev/null +++ b/MapObjects/Artifacts/Helm_of_Chaos.(AdvMapArtifactShared).xdb @@ -0,0 +1,36 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + + false + false + + + + false + true + + + + ARTF_RANDOM_SPECIFIC + ARTIFACT_HELM_OF_CHAOS + diff --git a/MapObjects/Artifacts/Whispering_Ring.(AdvMapArtifactShared).xdb b/MapObjects/Artifacts/Whispering_Ring.(AdvMapArtifactShared).xdb new file mode 100644 index 00000000..b28182fc --- /dev/null +++ b/MapObjects/Artifacts/Whispering_Ring.(AdvMapArtifactShared).xdb @@ -0,0 +1,36 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + + false + false + + + + false + true + + + + ARTF_RANDOM_SPECIFIC + ARTIFACT_WISPERING_RING + diff --git a/MapObjects/Dungeon/Agbeth.xdb b/MapObjects/Dungeon/Agbeth.xdb new file mode 100644 index 00000000..a105605e --- /dev/null +++ b/MapObjects/Dungeon/Agbeth.xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Agbeth + HERO_CLASS_BEASTMASTER + + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + + + + + + + + TOWN_DUNGEON + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + SPELL_ABILITY_MAGIC_BOND + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Almegir.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Almegir.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..05e1fd01 --- /dev/null +++ b/MapObjects/Dungeon/Almegir.(AdvMapHeroShared).xdb @@ -0,0 +1,82 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Almegir + HERO_CLASS_SEER + HERO_SPEC_DARK_ACOLYTE + + MASTERY_BASIC + HERO_SKILL_LUCK + + + + + + + + + + + + TOWN_DUNGEON + + + + 1 + 0 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + HERO_SKILL_DARK_RITUAL + + + SPELL_PLAGUE + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/AlmegirMP.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/AlmegirMP.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..39c094fb --- /dev/null +++ b/MapObjects/Dungeon/AlmegirMP.(AdvMapHeroShared).xdb @@ -0,0 +1,81 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + AlmegirMP + HERO_CLASS_SEER + HERO_SPEC_AVATAR_OF_DEATH + + MASTERY_BASIC + HERO_SKILL_LUCK + + + + + + + + + + + + TOWN_DUNGEON + + + + 2 + 0 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + HERO_SKILL_CHAOTIC_SPELLS + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Dalom.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Dalom.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..96e42215 --- /dev/null +++ b/MapObjects/Dungeon/Dalom.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Dalom + HERO_CLASS_WARLOCK + HERO_SPEC_POISONER + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + + + + + + + + TOWN_DUNGEON + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/DalomC.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/DalomC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..19550057 --- /dev/null +++ b/MapObjects/Dungeon/DalomC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + DalomC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_DUNGEON + + + + 0 + 0 + 3 + 2 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Darkstorm.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Darkstorm.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..5535206d --- /dev/null +++ b/MapObjects/Dungeon/Darkstorm.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Darkstorm + HERO_CLASS_SEER + HERO_SPEC_MINOTAURS + + MASTERY_BASIC + HERO_SKILL_LUCK + + + + + + + + + + + + TOWN_DUNGEON + + + + 2 + 0 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Eruina.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Eruina.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..2ed0dbc2 --- /dev/null +++ b/MapObjects/Dungeon/Eruina.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Eruina + HERO_CLASS_SEER + HERO_SPEC_MATRON_SALVO + + MASTERY_BASIC + HERO_SKILL_LUCK + + + + + + + + + + + + TOWN_DUNGEON + + + + 2 + 0 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/EruinaC.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/EruinaC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..b2454ff4 --- /dev/null +++ b/MapObjects/Dungeon/EruinaC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + EruinaC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_DUNGEON + + + + 1 + 0 + 2 + 2 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Eruina_A1.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Eruina_A1.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..e6f2f388 --- /dev/null +++ b/MapObjects/Dungeon/Eruina_A1.(AdvMapHeroShared).xdb @@ -0,0 +1,82 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Eruina_A1 + HERO_CLASS_WARLOCK + HERO_SPEC_MATRON_SALVO + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + + + + + + + + TOWN_DUNGEON + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_DESTRUCTIVE_MAGIC + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + + 0 + + + + + + true + + true + \ No newline at end of file diff --git a/MapObjects/Dungeon/Ferigl.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Ferigl.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..4ac1fe63 --- /dev/null +++ b/MapObjects/Dungeon/Ferigl.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Ferigl + HERO_CLASS_BEASTMASTER + HERO_SPEC_RIDERS + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + + + + + + + + TOWN_DUNGEON + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + SPELL_ABILITY_MAGIC_BOND + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Inagost.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Inagost.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..b9e55c5d --- /dev/null +++ b/MapObjects/Dungeon/Inagost.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Inagost + HERO_CLASS_WARLOCK + HERO_SPEC_POWER_BARGAIN + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + + + + + + + + TOWN_DUNGEON + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/InagostC.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/InagostC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..44f4e231 --- /dev/null +++ b/MapObjects/Dungeon/InagostC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + InagostC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_DUNGEON + + + + 0 + 0 + 3 + 2 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Kastore.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Kastore.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..5bf172d0 --- /dev/null +++ b/MapObjects/Dungeon/Kastore.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Kastore + HERO_CLASS_WARLOCK + HERO_SPEC_TALENTED_WARRIOR + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + + + + + + + + TOWN_DUNGEON + + + + 0 + 0 + 3 + 2 + + + MASTERY_EXPERT + HERO_SKILL_LEARNING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Kelodin.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Kelodin.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..a1bf39b5 --- /dev/null +++ b/MapObjects/Dungeon/Kelodin.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Kelodin + HERO_CLASS_WARLOCK + HERO_SPEC_EVASIVE + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + + + + + + + + TOWN_DUNGEON + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Menel.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Menel.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..4ae50d2c --- /dev/null +++ b/MapObjects/Dungeon/Menel.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Menel + HERO_CLASS_BEASTMASTER + + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + + + + + + + + TOWN_DUNGEON + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + SPELL_ABILITY_MAGIC_BOND + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Ohtar.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Ohtar.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..7490f306 --- /dev/null +++ b/MapObjects/Dungeon/Ohtar.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Ohtar + HERO_CLASS_WARLOCK + HERO_SPEC_MINOTAURS + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + + + + + + + + TOWN_DUNGEON + + + + 1 + 0 + 3 + 1 + + + MASTERY_BASIC + HERO_SKILL_LUCK + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Ohtarig.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Ohtarig.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..55e2929c --- /dev/null +++ b/MapObjects/Dungeon/Ohtarig.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Ohtarig + HERO_CLASS_SEER + HERO_SPEC_SAVAGE + + MASTERY_BASIC + HERO_SKILL_LUCK + + + + + + + + + + + + TOWN_DUNGEON + + + + 2 + 0 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Raelag.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Raelag.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..b4e7c53c --- /dev/null +++ b/MapObjects/Dungeon/Raelag.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Raelag + HERO_CLASS_WARLOCK + HERO_SPEC_PRUDENT + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + + + + + + + + TOWN_DUNGEON + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Raelag_A1.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Raelag_A1.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..81959bbf --- /dev/null +++ b/MapObjects/Dungeon/Raelag_A1.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Raelag_A1 + HERO_CLASS_WARLOCK + HERO_SPEC_MASTER_OF_INITIATIVE + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + + + + + + + + TOWN_DUNGEON + + + + 1 + 0 + 3 + 1 + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Ranleth.xdb b/MapObjects/Dungeon/Ranleth.xdb new file mode 100644 index 00000000..b0aa408e --- /dev/null +++ b/MapObjects/Dungeon/Ranleth.xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Ranleth + HERO_CLASS_BEASTMASTER + HERO_SPEC_MALEDICTOR + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + + + + + + + + TOWN_DUNGEON + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + SPELL_ABILITY_MAGIC_BOND + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Segref.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Segref.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..481bbcff --- /dev/null +++ b/MapObjects/Dungeon/Segref.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Segref + HERO_CLASS_WARLOCK + HERO_SPEC_INEXHAUSTIBLE + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + + + + + + + + TOWN_DUNGEON + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Sephinroth.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Sephinroth.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..c22c8f65 --- /dev/null +++ b/MapObjects/Dungeon/Sephinroth.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Sephinroth + HERO_CLASS_SEER + HERO_SPEC_SACRED_HAMMER + + MASTERY_BASIC + HERO_SKILL_LUCK + + + + + + + + + + + + TOWN_DUNGEON + + + + 2 + 0 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Shadwyn.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Shadwyn.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..5bc50a23 --- /dev/null +++ b/MapObjects/Dungeon/Shadwyn.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Shadwyn + HERO_CLASS_WARLOCK + + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + + + + + + + + TOWN_DUNGEON + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/ShadwynMP.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/ShadwynMP.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..2117de23 --- /dev/null +++ b/MapObjects/Dungeon/ShadwynMP.(AdvMapHeroShared).xdb @@ -0,0 +1,81 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + ShadwynMP + HERO_CLASS_WARLOCK + + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + + + + + + + + TOWN_DUNGEON + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + HERO_SKILL_EMPOWERED_SPELLS + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Sylsai.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Sylsai.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..e471991c --- /dev/null +++ b/MapObjects/Dungeon/Sylsai.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Sylsai + HERO_CLASS_SEER + HERO_SPEC_AVATAR_OF_DEATH + + MASTERY_BASIC + HERO_SKILL_LUCK + + + + + + + + + + + + TOWN_DUNGEON + + + + 2 + 0 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Thralsai.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Thralsai.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..fd6b282f --- /dev/null +++ b/MapObjects/Dungeon/Thralsai.(AdvMapHeroShared).xdb @@ -0,0 +1,82 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Thralsai + HERO_CLASS_BEASTMASTER + HERO_SPEC_BEATER + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + + + + + + + + TOWN_DUNGEON + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + SPELL_ABILITY_MAGIC_BOND + + + SPELL_TELEPORT + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/ThralsaiMP.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/ThralsaiMP.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..f1dced18 --- /dev/null +++ b/MapObjects/Dungeon/ThralsaiMP.(AdvMapHeroShared).xdb @@ -0,0 +1,77 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + ThralsaiMP + HERO_CLASS_BEASTMASTER + + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + + + + + + + + TOWN_DUNGEON + + + + 2 + 1 + 1 + 1 + + + HERO_SKILL_RECRUITMENT + + + SPELL_ABILITY_MAGIC_BOND + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dungeon/Urunir.(AdvMapHeroShared).xdb b/MapObjects/Dungeon/Urunir.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..f6ad4de6 --- /dev/null +++ b/MapObjects/Dungeon/Urunir.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Urunir + HERO_CLASS_BEASTMASTER + HERO_SPEC_WITCHES + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + + + + + + + + TOWN_DUNGEON + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_BODYBUILDING + + + + + SPELL_ABILITY_MAGIC_BOND + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Bart.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Bart.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..a0403325 --- /dev/null +++ b/MapObjects/Dwarves/Bart.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Bart + HERO_CLASS_FLAMEKEEPERA + HERO_SPEC_MASTER_OF_ELEMENTS + + MASTERY_BASIC + HERO_SKILL_RUNELORE + + + + + + + + + + + + TOWN_FORTRESS + + + + 0 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_SUMMONING_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Bersy.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Bersy.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..4f1d8010 --- /dev/null +++ b/MapObjects/Dwarves/Bersy.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Bersy + HERO_CLASS_RUNEMAGEA + HERO_SPEC_BEAR_RIDERS + + MASTERY_BASIC + HERO_SKILL_EXPERT_TRAINER + + + + + + + + + + + + TOWN_FORTRESS + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/BersyC.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/BersyC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..ddc88908 --- /dev/null +++ b/MapObjects/Dwarves/BersyC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + BersyC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_FORTRESS + + + + 1 + 1 + 1 + 2 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Brand.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Brand.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..230de42e --- /dev/null +++ b/MapObjects/Dwarves/Brand.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Brand + HERO_CLASS_FLAMEKEEPERA + HERO_SPEC_WEILDER_OF_FIRE + + MASTERY_BASIC + HERO_SKILL_RUNELORE + + + + + + + + + + + + TOWN_FORTRESS + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Egil.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Egil.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..5f4343be --- /dev/null +++ b/MapObjects/Dwarves/Egil.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Egil + HERO_CLASS_FLAMEKEEPERA + HERO_SPEC_MAGISTER + + MASTERY_BASIC + HERO_SKILL_RUNELORE + + + + + + + + + + + + TOWN_FORTRESS + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Hangvul.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Hangvul.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..33e6bee4 --- /dev/null +++ b/MapObjects/Dwarves/Hangvul.(AdvMapHeroShared).xdb @@ -0,0 +1,90 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Hangvul + HERO_CLASS_RUNEMAGEA + HERO_SPEC_HYPNOTIST + + MASTERY_BASIC + HERO_SKILL_EXPERT_TRAINER + + + + + + + + + + + + TOWN_FORTRESS + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + SPELL_MASS_FORGETFULNESS + SPELL_MASS_SLOW + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Dwarves/Hangvul2.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Hangvul2.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..1a25bd51 --- /dev/null +++ b/MapObjects/Dwarves/Hangvul2.(AdvMapHeroShared).xdb @@ -0,0 +1,81 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Hangvul2 + HERO_CLASS_FLAMEKEEPERA + + + MASTERY_BASIC + HERO_SKILL_RUNELORE + + + + + + + + + + + + TOWN_FORTRESS + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Ingvar.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Ingvar.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..241f4125 --- /dev/null +++ b/MapObjects/Dwarves/Ingvar.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Ingvar + HERO_CLASS_RUNEMAGEA + HERO_SPEC_DEFENDER + + MASTERY_BASIC + HERO_SKILL_EXPERT_TRAINER + + + + + + + + + + + + TOWN_FORTRESS + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/KingTolghar.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/KingTolghar.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..1943e871 --- /dev/null +++ b/MapObjects/Dwarves/KingTolghar.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + KingTolghar + HERO_CLASS_RUNEMAGEA + + + MASTERY_BASIC + HERO_SKILL_EXPERT_TRAINER + + + + + + + + + + + + TOWN_FORTRESS + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Maximus.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Maximus.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..3727879b --- /dev/null +++ b/MapObjects/Dwarves/Maximus.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Maximus + HERO_CLASS_NECROMANCER + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + + + + + + + + TOWN_FORTRESS + + + + 0 + 3 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Ottar.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Ottar.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..3176f9a5 --- /dev/null +++ b/MapObjects/Dwarves/Ottar.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Ottar + HERO_CLASS_RUNEMAGEA + HERO_SPEC_SACRED_HAMMER + + MASTERY_BASIC + HERO_SKILL_EXPERT_TRAINER + + + + + + + + + + + + TOWN_FORTRESS + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/OttarC.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/OttarC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..e9949ef1 --- /dev/null +++ b/MapObjects/Dwarves/OttarC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + OttarC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_FORTRESS + + + + 1 + 1 + 1 + 2 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Rolf.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Rolf.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..cdf882ba --- /dev/null +++ b/MapObjects/Dwarves/Rolf.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Rolf + HERO_CLASS_NECROMANCER + HERO_SPEC_FURIOUS + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + + + + + + + + TOWN_FORTRESS + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_BODYBUILDING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Skeggy.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Skeggy.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..389bf5b3 --- /dev/null +++ b/MapObjects/Dwarves/Skeggy.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Skeggy + HERO_CLASS_NECROMANCER + HERO_SPEC_AXE_MASTER + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + + + + + + + + TOWN_FORTRESS + + + + 0 + 3 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/SkeggyC.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/SkeggyC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..a75b5e33 --- /dev/null +++ b/MapObjects/Dwarves/SkeggyC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + SkeggyC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_FORTRESS + + + + 1 + 2 + 1 + 1 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Tazar.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Tazar.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..2e8b390a --- /dev/null +++ b/MapObjects/Dwarves/Tazar.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Tazar + HERO_CLASS_NECROMANCER + HERO_SPEC_WHITE_KNIGHT + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + + + + + + + + TOWN_FORTRESS + + + + 0 + 4 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Ufretin.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Ufretin.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..5214d303 --- /dev/null +++ b/MapObjects/Dwarves/Ufretin.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Ufretin + HERO_CLASS_NECROMANCER + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + + + + + + + + TOWN_FORTRESS + + + + 0 + 3 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LUCK + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Una.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Una.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..badb3c64 --- /dev/null +++ b/MapObjects/Dwarves/Una.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Una + HERO_CLASS_RUNEMAGEA + HERO_SPEC_ECONOMIST + + MASTERY_BASIC + HERO_SKILL_EXPERT_TRAINER + + + + + + + + + + + + TOWN_FORTRESS + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_SUMMONING_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Vegeyr.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Vegeyr.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..823f0843 --- /dev/null +++ b/MapObjects/Dwarves/Vegeyr.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Vegeyr + HERO_CLASS_FLAMEKEEPERA + HERO_SPEC_MOUNTAIN_KING + + MASTERY_BASIC + HERO_SKILL_RUNELORE + + + + + + + + + + + + TOWN_FORTRESS + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Vilma.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Vilma.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..9761039a --- /dev/null +++ b/MapObjects/Dwarves/Vilma.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Vilma + HERO_CLASS_FLAMEKEEPERA + HERO_SPEC_LOGISTICS + + MASTERY_BASIC + HERO_SKILL_RUNELORE + + + + + + + + + + + + TOWN_FORTRESS + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Dwarves/Wulfstan.(AdvMapHeroShared).xdb b/MapObjects/Dwarves/Wulfstan.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..b325446b --- /dev/null +++ b/MapObjects/Dwarves/Wulfstan.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Wulfstan + HERO_CLASS_NECROMANCER + HERO_SPEC_WAR_MACHINES + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + + + + + + + + TOWN_FORTRESS + + + + 0 + 3 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Alaric.(AdvMapHeroShared).xdb b/MapObjects/Haven/Alaric.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..dad27b4a --- /dev/null +++ b/MapObjects/Haven/Alaric.(AdvMapHeroShared).xdb @@ -0,0 +1,91 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + false + + + + Alaric + HERO_CLASS_KNIGHT + HERO_SPEC_HASTE + + MASTERY_EXPERT + HERO_SKILL_OFFENCE + + + + + + + + + + + + TOWN_HEAVEN + + + + 3 + 0 + 1 + 3 + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + HERO_SKILL_FRENZY + + + SPELL_HASTE + + true + false + false + + 0 + + 0 + + + + + + true + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Haven/AlaricMP.(AdvMapHeroShared).xdb b/MapObjects/Haven/AlaricMP.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..072f8d91 --- /dev/null +++ b/MapObjects/Haven/AlaricMP.(AdvMapHeroShared).xdb @@ -0,0 +1,90 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + false + + + + AlaricMP + HERO_CLASS_HERETIC + HERO_SPEC_WEILDER_OF_FIRE + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 0 + 3 + 1 + + + MASTERY_BASIC + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + HERO_SKILL_MASTER_OF_FIRE + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Haven/Axel.(AdvMapHeroShared).xdb b/MapObjects/Haven/Axel.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..e49fccee --- /dev/null +++ b/MapObjects/Haven/Axel.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Axel + HERO_CLASS_RANGER + HERO_SPEC_SACRED_HAMMER + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_BODYBUILDING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Biara_Saint_Isabel.(AdvMapHeroShared).xdb b/MapObjects/Haven/Biara_Saint_Isabel.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..8c66642b --- /dev/null +++ b/MapObjects/Haven/Biara_Saint_Isabel.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Saint Isabell + HERO_CLASS_KNIGHT + HERO_SPEC_SUZERAIN + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + + + + + + + + TOWN_HEAVEN + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Brem.(AdvMapHeroShared).xdb b/MapObjects/Haven/Brem.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..64e07cbf --- /dev/null +++ b/MapObjects/Haven/Brem.(AdvMapHeroShared).xdb @@ -0,0 +1,85 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Brem + HERO_CLASS_RANGER + HERO_SPEC_LOGISTICS + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + false + false + false + + 0 + + 0 + + + + + + true + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Haven/Christian.(AdvMapHeroShared).xdb b/MapObjects/Haven/Christian.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..928a1c93 --- /dev/null +++ b/MapObjects/Haven/Christian.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Christian + HERO_CLASS_RANGER + HERO_SPEC_WAR_MACHINES + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/ChristianC.(AdvMapHeroShared).xdb b/MapObjects/Haven/ChristianC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..d9b1fed3 --- /dev/null +++ b/MapObjects/Haven/ChristianC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + ChristianC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Duncan.(AdvMapHeroShared).xdb b/MapObjects/Haven/Duncan.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..97f6554a --- /dev/null +++ b/MapObjects/Haven/Duncan.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Duncan + HERO_CLASS_RANGER + HERO_SPEC_LOGISTICS + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Freyda.(AdvMapHeroShared).xdb b/MapObjects/Haven/Freyda.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..80273010 --- /dev/null +++ b/MapObjects/Haven/Freyda.(AdvMapHeroShared).xdb @@ -0,0 +1,85 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Freyda + HERO_CLASS_RANGER + HERO_SPEC_VESSEL_OF_ELRATH + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LUCK + + + + + false + false + false + + 0 + + 0 + + + + + + true + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Haven/GhostFSLord.(AdvMapHeroShared).xdb b/MapObjects/Haven/GhostFSLord.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..8899bf3e --- /dev/null +++ b/MapObjects/Haven/GhostFSLord.(AdvMapHeroShared).xdb @@ -0,0 +1,79 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + GhostFSLord + HERO_CLASS_KNIGHT + HERO_SPEC_WHITE_KNIGHT + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + false + false + false + + 0 + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Giar.(AdvMapHeroShared).xdb b/MapObjects/Haven/Giar.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..61f344d9 --- /dev/null +++ b/MapObjects/Haven/Giar.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Giar + HERO_CLASS_KNIGHT + HERO_SPEC_JOUSTING + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Glen.(AdvMapHeroShared).xdb b/MapObjects/Haven/Glen.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..08eeb0b5 --- /dev/null +++ b/MapObjects/Haven/Glen.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Glen + HERO_CLASS_RANGER + HERO_SPEC_WAR_MACHINES + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + true + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Godric.(AdvMapHeroShared).xdb b/MapObjects/Haven/Godric.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..217c3eae --- /dev/null +++ b/MapObjects/Haven/Godric.(AdvMapHeroShared).xdb @@ -0,0 +1,82 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Godric + HERO_CLASS_RANGER + HERO_SPEC_HASTE + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 3 + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + HERO_SKILL_MASTER_OF_WRATH + + + SPELL_HASTE + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Haven/GodricMP.(AdvMapHeroShared).xdb b/MapObjects/Haven/GodricMP.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..28d8a7d1 --- /dev/null +++ b/MapObjects/Haven/GodricMP.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + GodricMP + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Isabell.(AdvMapHeroShared).xdb b/MapObjects/Haven/Isabell.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..5cffac8a --- /dev/null +++ b/MapObjects/Haven/Isabell.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Isabell + HERO_CLASS_RANGER + HERO_SPEC_SUZERAIN + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Isabell_A1.(AdvMapHeroShared).xdb b/MapObjects/Haven/Isabell_A1.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..9688ae07 --- /dev/null +++ b/MapObjects/Haven/Isabell_A1.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Isabell_A1 + HERO_CLASS_RANGER + HERO_SPEC_CHOSEN_BY_GODS + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + false + false + false + + 0 + + 0 + + + + + + true + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Haven/Jeddite.(AdvMapHeroShared).xdb b/MapObjects/Haven/Jeddite.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..b1b1e485 --- /dev/null +++ b/MapObjects/Haven/Jeddite.(AdvMapHeroShared).xdb @@ -0,0 +1,81 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + false + + + + Jeddite + HERO_CLASS_HERETIC + HERO_SPEC_EMPIRIC + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 0 + 3 + 1 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Laszlo.(AdvMapHeroShared).xdb b/MapObjects/Haven/Laszlo.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..22bb3225 --- /dev/null +++ b/MapObjects/Haven/Laszlo.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Laszlo + HERO_CLASS_RANGER + HERO_SPEC_FOOTMEN + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Maeve.(AdvMapHeroShared).xdb b/MapObjects/Haven/Maeve.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..d16735a5 --- /dev/null +++ b/MapObjects/Haven/Maeve.(AdvMapHeroShared).xdb @@ -0,0 +1,79 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Maeve + HERO_CLASS_RANGER + HERO_SPEC_EXPEDITER + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Mardigo.(AdvMapHeroShared).xdb b/MapObjects/Haven/Mardigo.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..7d06d176 --- /dev/null +++ b/MapObjects/Haven/Mardigo.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Mardigo + HERO_CLASS_KNIGHT + HERO_SPEC_FOOTMEN + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + + + + + + + + TOWN_HEAVEN + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Markal.(AdvMapHeroShared).xdb b/MapObjects/Haven/Markal.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..aa46a5e6 --- /dev/null +++ b/MapObjects/Haven/Markal.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + false + + + + Markal + HERO_CLASS_HERETIC + + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 0 + 3 + 1 + + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Haven/Nathaniel.(AdvMapHeroShared).xdb b/MapObjects/Haven/Nathaniel.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..1010e898 --- /dev/null +++ b/MapObjects/Haven/Nathaniel.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Nathaniel + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_SHATTER_DARK_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Nicolai.(AdvMapHeroShared).xdb b/MapObjects/Haven/Nicolai.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..9badd7cf --- /dev/null +++ b/MapObjects/Haven/Nicolai.(AdvMapHeroShared).xdb @@ -0,0 +1,85 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Nicolai + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Haven/OrlandoMP.(AdvMapHeroShared).xdb b/MapObjects/Haven/OrlandoMP.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..23998609 --- /dev/null +++ b/MapObjects/Haven/OrlandoMP.(AdvMapHeroShared).xdb @@ -0,0 +1,88 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + false + + + + OrlandoMP + HERO_CLASS_HERETIC + + + MASTERY_ADVANCED + HERO_SKILL_DARK_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 0 + 2 + 2 + + + HERO_SKILL_MASTER_OF_SICKNESS + + + SPELL_FORGETFULNESS + SPELL_PLAGUE + SPELL_VAMPIRISM + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Haven/Ornella.(AdvMapHeroShared).xdb b/MapObjects/Haven/Ornella.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..cd5b4227 --- /dev/null +++ b/MapObjects/Haven/Ornella.(AdvMapHeroShared).xdb @@ -0,0 +1,85 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Ornella + HERO_CLASS_KNIGHT + HERO_SPEC_LOGISTICS + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + + + + + + + + TOWN_HEAVEN + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_BODYBUILDING + + + + + false + false + false + + 0 + + 0 + + + + + + true + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Haven/Orrin.(AdvMapHeroShared).xdb b/MapObjects/Haven/Orrin.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..fd3dd0a1 --- /dev/null +++ b/MapObjects/Haven/Orrin.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Orrin + HERO_CLASS_RANGER + HERO_SPEC_ARCHERS + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/RedHeaven07_Orlando.(AdvMapHeroShared).xdb b/MapObjects/Haven/RedHeaven07_Orlando.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..aab4dcfb --- /dev/null +++ b/MapObjects/Haven/RedHeaven07_Orlando.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + false + + + + Orlando + HERO_CLASS_HERETIC + HERO_SPEC_IMPREGNABLE + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 0 + 3 + 1 + + + MASTERY_BASIC + HERO_SKILL_SHATTER_DARK_MAGIC + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Haven/RedHeavenHero01.(AdvMapHeroShared).xdb b/MapObjects/Haven/RedHeavenHero01.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..2809a183 --- /dev/null +++ b/MapObjects/Haven/RedHeavenHero01.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + RedHeavenHero01 + HERO_CLASS_KNIGHT + HERO_SPEC_IMPREGNABLE + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + + + + + + + + TOWN_HEAVEN + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Haven/RedHeavenHero02.(AdvMapHeroShared).xdb b/MapObjects/Haven/RedHeavenHero02.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..86d165a7 --- /dev/null +++ b/MapObjects/Haven/RedHeavenHero02.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + RedHeavenHero02 + HERO_CLASS_KNIGHT + HERO_SPEC_AVATAR_OF_DEATH + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + + + + + + + + TOWN_HEAVEN + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/RedHeavenHero03.(AdvMapHeroShared).xdb b/MapObjects/Haven/RedHeavenHero03.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..baf5e27a --- /dev/null +++ b/MapObjects/Haven/RedHeavenHero03.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + RedHeavenHero03 + HERO_CLASS_KNIGHT + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + + + + + + + + TOWN_HEAVEN + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/RedHeavenHero04.(AdvMapHeroShared).xdb b/MapObjects/Haven/RedHeavenHero04.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..641c89b7 --- /dev/null +++ b/MapObjects/Haven/RedHeavenHero04.(AdvMapHeroShared).xdb @@ -0,0 +1,88 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + RedHeavenHero04 + HERO_CLASS_HERETIC + HERO_SPEC_HYPNOTIST + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 0 + 3 + 1 + + + MASTERY_BASIC + HERO_SKILL_DARK + + + + + SPELL_MASS_FORGETFULNESS + SPELL_MASS_SLOW + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Haven/RedHeavenHero05.(AdvMapHeroShared).xdb b/MapObjects/Haven/RedHeavenHero05.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..ed093359 --- /dev/null +++ b/MapObjects/Haven/RedHeavenHero05.(AdvMapHeroShared).xdb @@ -0,0 +1,85 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + RedHeavenHero05 + HERO_CLASS_KNIGHT + HERO_SPEC_OFFENDER + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + + + + + + + + TOWN_HEAVEN + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Haven/RedHeavenHero06.(AdvMapHeroShared).xdb b/MapObjects/Haven/RedHeavenHero06.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..c2af4148 --- /dev/null +++ b/MapObjects/Haven/RedHeavenHero06.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + RedHeavenHero06 + HERO_CLASS_KNIGHT + HERO_SPEC_GRIFFINS + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + + + + + + + + TOWN_HEAVEN + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Sarge.(AdvMapHeroShared).xdb b/MapObjects/Haven/Sarge.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..cb3f957a --- /dev/null +++ b/MapObjects/Haven/Sarge.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Sarge + HERO_CLASS_RANGER + HERO_SPEC_JOUSTING + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Haven/SargeC.(AdvMapHeroShared).xdb b/MapObjects/Haven/SargeC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..a1b22dee --- /dev/null +++ b/MapObjects/Haven/SargeC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + SargeC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Haven/Ving.(AdvMapHeroShared).xdb b/MapObjects/Haven/Ving.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..b097fb1e --- /dev/null +++ b/MapObjects/Haven/Ving.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Ving + HERO_CLASS_RANGER + HERO_SPEC_GRIFFINS + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Haven/VingC.(AdvMapHeroShared).xdb b/MapObjects/Haven/VingC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..f2475de0 --- /dev/null +++ b/MapObjects/Haven/VingC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + VingC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_HEAVEN + + + + 1 + 2 + 1 + 1 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Agrael.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Agrael.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..236c03fa --- /dev/null +++ b/MapObjects/Inferno/Agrael.(AdvMapHeroShared).xdb @@ -0,0 +1,82 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Agrael + HERO_CLASS_DEMON_LORD + HERO_SPEC_FURIOUS + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + + + + + + + + TOWN_INFERNO + + + + 2 + 0 + 1 + 2 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + HERO_SKILL_FRENZY + + + SPELL_BLOODLUST + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/AgraelMP.(AdvMapHeroShared).xdb b/MapObjects/Inferno/AgraelMP.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..6c2e10b4 --- /dev/null +++ b/MapObjects/Inferno/AgraelMP.(AdvMapHeroShared).xdb @@ -0,0 +1,81 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + AgraelMP + HERO_CLASS_SORCERER + HERO_SPEC_FURIOUS + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_INFERNO + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_GATING + + + + HERO_SKILL_ARCANE_TRAINING + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Ash.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Ash.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..db211cdd --- /dev/null +++ b/MapObjects/Inferno/Ash.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Ash + HERO_CLASS_DEMON_LORD + HERO_SPEC_WAYLAYER + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + + + + + + + + TOWN_INFERNO + + + + 2 + 0 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Biara.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Biara.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..164506dc --- /dev/null +++ b/MapObjects/Inferno/Biara.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Biara + HERO_CLASS_SORCERER + HERO_SPEC_FEATHER_MAGE + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_INFERNO + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Calh.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Calh.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..1946c8a5 --- /dev/null +++ b/MapObjects/Inferno/Calh.(AdvMapHeroShared).xdb @@ -0,0 +1,79 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Calh + HERO_CLASS_WIZARD + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + + + + + + + + TOWN_INFERNO + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Calid.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Calid.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..874b186a --- /dev/null +++ b/MapObjects/Inferno/Calid.(AdvMapHeroShared).xdb @@ -0,0 +1,85 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Calid + HERO_CLASS_WIZARD + HERO_SPEC_HOUNDS + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + + + + + + + + TOWN_INFERNO + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Inferno/Calid2.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Calid2.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..6309a43d --- /dev/null +++ b/MapObjects/Inferno/Calid2.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Calid2 + HERO_CLASS_SORCERER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_INFERNO + + + + 0 + 0 + 3 + 4 + + + MASTERY_BASIC + HERO_SKILL_SUMMONING_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/DMessiah.(AdvMapHeroShared).xdb b/MapObjects/Inferno/DMessiah.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..17abd830 --- /dev/null +++ b/MapObjects/Inferno/DMessiah.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + DMessiah + HERO_CLASS_DEMON_LORD + HERO_SPEC_TEMPTRESS + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + + + + + + + + TOWN_INFERNO + + + + 2 + 0 + 1 + 2 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Deleb.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Deleb.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..6e8380da --- /dev/null +++ b/MapObjects/Inferno/Deleb.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Deleb + HERO_CLASS_DEMON_LORD + HERO_SPEC_INFERNAL_MACHINE + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + + + + + + + + TOWN_INFERNO + + + + 2 + 0 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/DelebC.(AdvMapHeroShared).xdb b/MapObjects/Inferno/DelebC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..8d924291 --- /dev/null +++ b/MapObjects/Inferno/DelebC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + DelebC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_INFERNO + + + + 2 + 0 + 2 + 1 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Efion.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Efion.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..b5d6a6bd --- /dev/null +++ b/MapObjects/Inferno/Efion.(AdvMapHeroShared).xdb @@ -0,0 +1,81 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Efion + HERO_CLASS_SORCERER + HERO_SPEC_HYPNOTIST + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_INFERNO + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + SPELL_MASS_FORGETFULNESS + SPELL_MASS_SLOW + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Erasial.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Erasial.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..8ae486a8 --- /dev/null +++ b/MapObjects/Inferno/Erasial.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Erasial + HERO_CLASS_WIZARD + HERO_SPEC_BEATER + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + + + + + + + + TOWN_INFERNO + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Gamor.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Gamor.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..ddcc9aab --- /dev/null +++ b/MapObjects/Inferno/Gamor.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Gamor + HERO_CLASS_DEMON_LORD + HERO_SPEC_BEATER + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + + + + + + + + TOWN_INFERNO + + + + 2 + 0 + 1 + 2 + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Grok.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Grok.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..2fb6f27a --- /dev/null +++ b/MapObjects/Inferno/Grok.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Grok + HERO_CLASS_DEMON_LORD + HERO_SPEC_BEATER + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + + + + + + + + TOWN_INFERNO + + + + 2 + 0 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Guarg.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Guarg.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..8e92b841 --- /dev/null +++ b/MapObjects/Inferno/Guarg.(AdvMapHeroShared).xdb @@ -0,0 +1,81 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + + HERO_CLASS_DEMON_LORD + HERO_SPEC_HYPNOTIST + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + + + + + + + + TOWN_INFERNO + + + + 2 + 0 + 1 + 2 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + SPELL_MASS_FORGETFULNESS + SPELL_MASS_SLOW + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Harkenraz.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Harkenraz.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..617824ae --- /dev/null +++ b/MapObjects/Inferno/Harkenraz.(AdvMapHeroShared).xdb @@ -0,0 +1,79 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Harkenraz + HERO_CLASS_WIZARD + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + + + + + + + + TOWN_INFERNO + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Jazaz.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Jazaz.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..eb469e8a --- /dev/null +++ b/MapObjects/Inferno/Jazaz.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Jazaz + HERO_CLASS_WIZARD + HERO_SPEC_OFFENDER + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + + + + + + + + TOWN_INFERNO + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Malustar.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Malustar.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..5883fd8e --- /dev/null +++ b/MapObjects/Inferno/Malustar.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Malustar + HERO_CLASS_WIZARD + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + + + + + + + + TOWN_INFERNO + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Marder.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Marder.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..f1757e17 --- /dev/null +++ b/MapObjects/Inferno/Marder.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Marder + HERO_CLASS_WIZARD + HERO_SPEC_IMPREGNABLE + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + + + + + + + + TOWN_INFERNO + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_BODYBUILDING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/MarderC.(AdvMapHeroShared).xdb b/MapObjects/Inferno/MarderC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..71304385 --- /dev/null +++ b/MapObjects/Inferno/MarderC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + MarderC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_INFERNO + + + + 3 + 0 + 1 + 1 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Nymus.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Nymus.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..80b6c9e4 --- /dev/null +++ b/MapObjects/Inferno/Nymus.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Nymus + HERO_CLASS_DEMON_LORD + HERO_SPEC_GATE_KEEPER + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + + + + + + + + TOWN_INFERNO + + + + 3 + 0 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/NymusC.(AdvMapHeroShared).xdb b/MapObjects/Inferno/NymusC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..37cd6723 --- /dev/null +++ b/MapObjects/Inferno/NymusC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + NymusC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_INFERNO + + + + 2 + 0 + 2 + 1 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Oddrema.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Oddrema.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..cd33ebe5 --- /dev/null +++ b/MapObjects/Inferno/Oddrema.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Oddrema + HERO_CLASS_DEMON_LORD + HERO_SPEC_SUCCUBUSES + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + + + + + + + + TOWN_INFERNO + + + + 2 + 0 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Orlando.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Orlando.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..88add6a2 --- /dev/null +++ b/MapObjects/Inferno/Orlando.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Orlando + HERO_CLASS_DEMON_LORD + HERO_SPEC_FURIOUS + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + + + + + + + + TOWN_INFERNO + + + + 4 + 2 + 2 + 3 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + false + false + false + + 0 + + 0 + + + + + + true + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Inferno/OrlandoMP.(AdvMapHeroShared).xdb b/MapObjects/Inferno/OrlandoMP.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..85dfd62b --- /dev/null +++ b/MapObjects/Inferno/OrlandoMP.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Nelech + HERO_CLASS_DEMON_LORD + HERO_SPEC_EXPEDITER + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + + + + + + + + TOWN_INFERNO + + + + 2 + 0 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Inferno/Sheltem.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Sheltem.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..e2f8639a --- /dev/null +++ b/MapObjects/Inferno/Sheltem.(AdvMapHeroShared).xdb @@ -0,0 +1,81 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Sheltem + HERO_CLASS_WIZARD + HERO_SPEC_BOMBARDIER + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + + + + + + + + TOWN_INFERNO + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + false + false + false + + 0 + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Sovereign.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Sovereign.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..99784e58 --- /dev/null +++ b/MapObjects/Inferno/Sovereign.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Kha-Beleth + HERO_CLASS_DEMON_LORD + HERO_SPEC_FURIOUS + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + + + + + + + + TOWN_INFERNO + + + + 2 + 0 + 1 + 2 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + HERO_SKILL_FRENZY + + + false + false + false + + 0 + + 0 + + + + + + true + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Inferno/Sovereign2.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Sovereign2.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..73932a0c --- /dev/null +++ b/MapObjects/Inferno/Sovereign2.(AdvMapHeroShared).xdb @@ -0,0 +1,79 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Sovereign + HERO_CLASS_SORCERER + HERO_SPEC_WEILDER_OF_FIRE + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_INFERNO + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Veyer.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Veyer.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..4bd2a8b0 --- /dev/null +++ b/MapObjects/Inferno/Veyer.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Veyer + HERO_CLASS_DEMON_LORD + HERO_SPEC_GATE_KEEPER + + MASTERY_BASIC + HERO_SKILL_GATING + + + + + + + + + + + + TOWN_INFERNO + + + + 3 + 0 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Inferno/Zydar.(AdvMapHeroShared).xdb b/MapObjects/Inferno/Zydar.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..2fecc2ac --- /dev/null +++ b/MapObjects/Inferno/Zydar.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Zydar + HERO_CLASS_SORCERER + HERO_SPEC_AVATAR_OF_DEATH + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_INFERNO + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/A2_Arantir.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/A2_Arantir.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..1d9a01d9 --- /dev/null +++ b/MapObjects/Necropolis/A2_Arantir.(AdvMapHeroShared).xdb @@ -0,0 +1,90 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Arantir + HERO_CLASS_NECROMANCERA + HERO_SPEC_AVATAR_OF_DEATH + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + + + + + + + + TOWN_NECROMANCY + + + + 1 + 0 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + SPELL_ANIMATE_DEAD + + false + false + false + + + 0 + + + + + + true + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Necropolis/A2_ArantirMP.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/A2_ArantirMP.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..7680e7df --- /dev/null +++ b/MapObjects/Necropolis/A2_ArantirMP.(AdvMapHeroShared).xdb @@ -0,0 +1,89 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + ArantirMP + HERO_CLASS_NECROMANCERA + HERO_SPEC_AVATAR_OF_DEATH + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + + + + + + + + TOWN_NECROMANCY + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + HERO_SKILL_NO_REST_FOR_THE_WICKED + + + + false + false + false + + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Necropolis/Aberrar.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Aberrar.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..1808d40b --- /dev/null +++ b/MapObjects/Necropolis/Aberrar.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + true + + + + false + true + + + + Aberrar + HERO_CLASS_NECROMANCERA + HERO_SPEC_EXPEDITER + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + + + + + + + + TOWN_NECROMANCY + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Aislinn.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Aislinn.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..cc150c86 --- /dev/null +++ b/MapObjects/Necropolis/Aislinn.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Aislinn + HERO_CLASS_NECROMANCERA + HERO_SPEC_CALL_OF_THE_WASP + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + + + + + + + + TOWN_NECROMANCY + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_SUMMONING_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Archilus.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Archilus.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..ee395bee --- /dev/null +++ b/MapObjects/Necropolis/Archilus.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Archilus + HERO_CLASS_NECROMANCERA + + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + + + + + + + + TOWN_NECROMANCY + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_SUMMONING_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Berein.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Berein.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..156cd56c --- /dev/null +++ b/MapObjects/Necropolis/Berein.(AdvMapHeroShared).xdb @@ -0,0 +1,79 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Berein + HERO_CLASS_NECROMANCERA + HERO_SPEC_HEIR_OF_UNDEAD + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + + + + + + + + TOWN_NECROMANCY + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + false + false + false + + 0 + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Effig.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Effig.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..a4fe5db6 --- /dev/null +++ b/MapObjects/Necropolis/Effig.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Effig + HERO_CLASS_NECROMANCERA + HERO_SPEC_IMPREGNABLE + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + + + + + + + + TOWN_NECROMANCY + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/EffigC.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/EffigC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..0b721aad --- /dev/null +++ b/MapObjects/Necropolis/EffigC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + EffigC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_NECROMANCY + + + + 1 + 0 + 2 + 2 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Giovanni.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Giovanni.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..cceb02a3 --- /dev/null +++ b/MapObjects/Necropolis/Giovanni.(AdvMapHeroShared).xdb @@ -0,0 +1,82 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Giovanni + HERO_CLASS_NECROMANCERA + HERO_SPEC_SOULHUNTER + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + + + + + + + + TOWN_NECROMANCY + + + + 1 + 0 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_SUMMONING_MAGIC + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/GiovanniMP.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/GiovanniMP.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..d60a83e4 --- /dev/null +++ b/MapObjects/Necropolis/GiovanniMP.(AdvMapHeroShared).xdb @@ -0,0 +1,76 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + GiovanniMP + HERO_CLASS_REAVER + HERO_SPEC_POISONER + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + + + + + + + + TOWN_NECROMANCY + + + + 0 + 0 + 3 + 2 + + + HERO_SKILL_MASTER_OF_SICKNESS + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Gles.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Gles.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..583f14be --- /dev/null +++ b/MapObjects/Necropolis/Gles.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Gles + HERO_CLASS_RUNEMAGE + HERO_SPEC_FEATHER_MAGE + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + + + + + + + + TOWN_NECROMANCY + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Muscip.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Muscip.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..1daa79ae --- /dev/null +++ b/MapObjects/Necropolis/Muscip.(AdvMapHeroShared).xdb @@ -0,0 +1,79 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Muscip + HERO_CLASS_REAVER + HERO_SPEC_SOULHUNTER + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + + + + + + + + TOWN_NECROMANCY + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Nemor.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Nemor.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..36629952 --- /dev/null +++ b/MapObjects/Necropolis/Nemor.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Nemor + HERO_CLASS_REAVER + + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + + + + + + + + TOWN_NECROMANCY + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_INVOCATION + + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/NemorC.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/NemorC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..5448c99a --- /dev/null +++ b/MapObjects/Necropolis/NemorC.(AdvMapHeroShared).xdb @@ -0,0 +1,74 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + NemorC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_NECROMANCY + + + + 0 + 0 + 3 + 2 + + + + false + false + false + + 0 + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Nikolay.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Nikolay.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..34b2e4b2 --- /dev/null +++ b/MapObjects/Necropolis/Nikolay.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Nikolay + HERO_CLASS_NECROMANCERA + HERO_SPEC_REANIMATOR + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + + + + + + + + TOWN_NECROMANCY + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Nimbus.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Nimbus.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..c4a87ffa --- /dev/null +++ b/MapObjects/Necropolis/Nimbus.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Nimbus + HERO_CLASS_NECROMANCERA + + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + + + + + + + + TOWN_NECROMANCY + + + + 1 + 1 + 2 + 1 + + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Ornella_necro.xdb b/MapObjects/Necropolis/Ornella_necro.xdb new file mode 100644 index 00000000..2f435fc4 --- /dev/null +++ b/MapObjects/Necropolis/Ornella_necro.xdb @@ -0,0 +1,86 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + OrnellaNecro + HERO_CLASS_RUNEMAGE + HERO_SPEC_MALEDICTOR + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + + + + + + + + TOWN_NECROMANCY + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Necropolis/Pelt.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Pelt.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..16349735 --- /dev/null +++ b/MapObjects/Necropolis/Pelt.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Pelt + HERO_CLASS_RUNEMAGE + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + + + + + + + + TOWN_NECROMANCY + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/RMG_NecroMP.(AdvMapDwellingShared).xdb b/MapObjects/Necropolis/RMG_NecroMP.(AdvMapDwellingShared).xdb new file mode 100644 index 00000000..c0b98093 --- /dev/null +++ b/MapObjects/Necropolis/RMG_NecroMP.(AdvMapDwellingShared).xdb @@ -0,0 +1,83 @@ + + + + + + + -1 + -1 + + + 1 + -1 + + + 0 + -1 + + + 0 + 0 + + + 1 + 0 + + + -1 + 1 + + + 0 + 1 + + + 1 + 1 + + + + + + -1 + 0 + + + + + 0 + -2 + + + + + + + + + + + + false + false + + + + false + true + + + + BUILDING_NECROPOLIS_MILITARY_POST + + CREATURE_DEATH_KNIGHT + CREATURE_DEATH_KNIGHT + CREATURE_MUMMY + CREATURE_MUMMY + + + CREATURE_DEATH_KNIGHT + CREATURE_MUMMY + + DWELLING_TYPE_SPECIFIC + diff --git a/MapObjects/Necropolis/Sandro.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Sandro.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..a82658d2 --- /dev/null +++ b/MapObjects/Necropolis/Sandro.(AdvMapHeroShared).xdb @@ -0,0 +1,79 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + true + + + + false + true + + + + Sandro + HERO_CLASS_REAVER + HERO_SPEC_DARK_EMISSARY + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + + + + + + + + TOWN_NECROMANCY + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_BODYBUILDING + + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Straker.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Straker.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..042c9ef6 --- /dev/null +++ b/MapObjects/Necropolis/Straker.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Straker + HERO_CLASS_RUNEMAGE + HERO_SPEC_ZOMBIES + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + + + + + + + + TOWN_NECROMANCY + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/StrakerC.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/StrakerC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..44baa63a --- /dev/null +++ b/MapObjects/Necropolis/StrakerC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + StrakerC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_NECROMANCY + + + + 1 + 2 + 1 + 1 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Tamika.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Tamika.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..e2b939a9 --- /dev/null +++ b/MapObjects/Necropolis/Tamika.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Tamika + HERO_CLASS_RUNEMAGE + HERO_SPEC_VAMPIRES + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + + + + + + + + TOWN_NECROMANCY + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_BODYBUILDING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Thant.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Thant.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..de7dc7f3 --- /dev/null +++ b/MapObjects/Necropolis/Thant.(AdvMapHeroShared).xdb @@ -0,0 +1,79 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + true + + + + false + true + + + + Thant + HERO_CLASS_REAVER + + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + + + + + + + + TOWN_NECROMANCY + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Vampire_Lord.(AdvMapMonsterShared).xdb b/MapObjects/Necropolis/Vampire_Lord.(AdvMapMonsterShared).xdb new file mode 100644 index 00000000..3f0a9b35 --- /dev/null +++ b/MapObjects/Necropolis/Vampire_Lord.(AdvMapMonsterShared).xdb @@ -0,0 +1,35 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + MONSTER_SPECIFIC + CREATURE_VAMPIRE_LORD + diff --git a/MapObjects/Necropolis/Vidomina.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Vidomina.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..bb275277 --- /dev/null +++ b/MapObjects/Necropolis/Vidomina.(AdvMapHeroShared).xdb @@ -0,0 +1,79 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Vidomina + HERO_CLASS_REAVER + + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + + + + + + + + TOWN_NECROMANCY + + + + 0 + 0 + 3 + 2 + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Necropolis/Xerxon.(AdvMapHeroShared).xdb b/MapObjects/Necropolis/Xerxon.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..aa248f66 --- /dev/null +++ b/MapObjects/Necropolis/Xerxon.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Xerxon + HERO_CLASS_RUNEMAGE + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + + + + + + + + TOWN_NECROMANCY + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Arniel.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Arniel.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..fd5b858d --- /dev/null +++ b/MapObjects/Preserve/Arniel.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Arniel + HERO_CLASS_WARDEN + HERO_SPEC_DARK_ACOLYTE + + MASTERY_BASIC + HERO_SKILL_SHATTER_DARK_MAGIC + + + + + + + + + + + + TOWN_PRESERVE + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + SPELL_ABILITY_DARK_RITUAL + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Diraya.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Diraya.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..21b046bc --- /dev/null +++ b/MapObjects/Preserve/Diraya.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Diraya + HERO_CLASS_ENCHANTER + HERO_SPEC_CALL_OF_THE_WASP + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + + + + + + + + TOWN_PRESERVE + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_SUMMONING_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/DirayaC.(AdvMapHeroShared).xdb b/MapObjects/Preserve/DirayaC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..ee17e3f9 --- /dev/null +++ b/MapObjects/Preserve/DirayaC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + DirayaC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_PRESERVE + + + + 0 + 1 + 2 + 2 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Elleshar.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Elleshar.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..7f859586 --- /dev/null +++ b/MapObjects/Preserve/Elleshar.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Elleshar + HERO_CLASS_ENCHANTER + + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + + + + + + + + TOWN_PRESERVE + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Gem.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Gem.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..551a92e9 --- /dev/null +++ b/MapObjects/Preserve/Gem.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Gem + HERO_CLASS_ENCHANTER + + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + + + + + + + + TOWN_PRESERVE + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_BODYBUILDING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Gillion.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Gillion.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..3a1b55e0 --- /dev/null +++ b/MapObjects/Preserve/Gillion.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Gillion + HERO_CLASS_RANGERA + HERO_SPEC_BLADE_MASTER + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + + + + + + + + TOWN_PRESERVE + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + CREATURE_DEVIL + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Heam.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Heam.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..aaeff6f3 --- /dev/null +++ b/MapObjects/Preserve/Heam.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Heam + HERO_CLASS_RANGERA + HERO_SPEC_OFFENDER + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + + + + + + + + TOWN_PRESERVE + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + false + false + false + + CREATURE_DEVIL + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Ildar.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Ildar.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..39386c2a --- /dev/null +++ b/MapObjects/Preserve/Ildar.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Ildar + HERO_CLASS_WARDEN + + + MASTERY_BASIC + HERO_SKILL_AVENGER + + + + + + + + + + + + TOWN_PRESERVE + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Itil.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Itil.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..44f81a59 --- /dev/null +++ b/MapObjects/Preserve/Itil.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Itil + HERO_CLASS_ENCHANTER + HERO_SPEC_UNICORNS + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + + + + + + + + TOWN_PRESERVE + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Jenova.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Jenova.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..1fb43f0a --- /dev/null +++ b/MapObjects/Preserve/Jenova.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Jenova + HERO_CLASS_WARDEN + + + MASTERY_BASIC + HERO_SKILL_AVENGER + + + + + + + + + + + + TOWN_PRESERVE + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Kyrre.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Kyrre.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..62703d5a --- /dev/null +++ b/MapObjects/Preserve/Kyrre.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Kyrre + HERO_CLASS_RANGERA + HERO_SPEC_RASH + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + + + + + + + + TOWN_PRESERVE + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + false + false + false + + CREATURE_DEVIL + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Linaas.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Linaas.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..7bece036 --- /dev/null +++ b/MapObjects/Preserve/Linaas.(AdvMapHeroShared).xdb @@ -0,0 +1,120 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Linaas + HERO_CLASS_RANGERA + + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + + + + + + + + TOWN_PRESERVE + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_AVENGER + + + + + + false + false + false + + CREATURE_IRON_GOLEM + CREATURE_MAGI + CREATURE_GENIE + CREATURE_RAKSHASA + CREATURE_GIANT + CREATURE_MINOTAUR + CREATURE_RIDER + CREATURE_HYDRA + CREATURE_MATRON + CREATURE_DEEP_DRAGON + CREATURE_BEAR_RIDER + CREATURE_BROWLER + CREATURE_RUNE_MAGE + CREATURE_THANE + CREATURE_FIRE_DRAGON + CREATURE_SWORDSMAN + CREATURE_GRIFFIN + CREATURE_PRIEST + CREATURE_CAVALIER + CREATURE_ANGEL + CREATURE_DEMON + CREATURE_SUCCUBUS + CREATURE_NIGHTMARE + CREATURE_PIT_FIEND + CREATURE_DEVIL + CREATURE_GHOST + CREATURE_VAMPIRE + CREATURE_LICH + CREATURE_WIGHT + CREATURE_BONE_DRAGON + CREATURE_ORC_WARRIOR + CREATURE_SHAMAN + CREATURE_ORCCHIEF_BUTCHER + CREATURE_WYVERN + CREATURE_CYCLOP + CREATURE_WOOD_ELF + CREATURE_DRUID + CREATURE_UNICORN + CREATURE_TREANT + CREATURE_GREEN_DRAGON + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Melodia.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Melodia.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..05c2f597 --- /dev/null +++ b/MapObjects/Preserve/Melodia.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Melodia + HERO_CLASS_RANGERA + + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + + + + + + + + TOWN_PRESERVE + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + false + false + false + + CREATURE_DEVIL + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Mephala.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Mephala.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..02de8a36 --- /dev/null +++ b/MapObjects/Preserve/Mephala.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Mephala + HERO_CLASS_RANGERA + HERO_SPEC_JOUSTING + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + + + + + + + + TOWN_PRESERVE + + + + 3 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + false + false + false + + CREATURE_DEVIL + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/MephalaC.(AdvMapHeroShared).xdb b/MapObjects/Preserve/MephalaC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..84251015 --- /dev/null +++ b/MapObjects/Preserve/MephalaC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + MephalaC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_PRESERVE + + + + 2 + 1 + 1 + 1 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Metlirn.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Metlirn.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..191bdffb --- /dev/null +++ b/MapObjects/Preserve/Metlirn.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Metlirn + HERO_CLASS_WARDEN + HERO_SPEC_FOREST_GUARDIAN + + MASTERY_BASIC + HERO_SKILL_AVENGER + + + + + + + + + + + + TOWN_PRESERVE + + + + 2 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_SUMMONING_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Nadaur.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Nadaur.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..a5c4b6ef --- /dev/null +++ b/MapObjects/Preserve/Nadaur.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Nadaur + HERO_CLASS_WARDEN + HERO_SPEC_ELVEN_FURY + + MASTERY_BASIC + HERO_SKILL_AVENGER + + + + + + + + + + + + TOWN_PRESERVE + + + + 7 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LUCK + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Ossir.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Ossir.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..e309499f --- /dev/null +++ b/MapObjects/Preserve/Ossir.(AdvMapHeroShared).xdb @@ -0,0 +1,80 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Ossir + HERO_CLASS_RANGERA + HERO_SPEC_ELVES + + MASTERY_BASIC + HERO_SKILL_DEFENCE + + + + + + + + + + + + TOWN_PRESERVE + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + false + false + false + + CREATURE_DEVIL + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/OssirC.(AdvMapHeroShared).xdb b/MapObjects/Preserve/OssirC.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..25d12738 --- /dev/null +++ b/MapObjects/Preserve/OssirC.(AdvMapHeroShared).xdb @@ -0,0 +1,73 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + OssirC + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_PRESERVE + + + + 2 + 1 + 1 + 1 + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Tieru.xdb b/MapObjects/Preserve/Tieru.xdb new file mode 100644 index 00000000..633042ff --- /dev/null +++ b/MapObjects/Preserve/Tieru.xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Tieru + HERO_CLASS_ENCHANTER + HERO_SPEC_WAYLAYER + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + + + + + + + + TOWN_PRESERVE + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + false + false + false + + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Vaniel.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Vaniel.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..e886a85f --- /dev/null +++ b/MapObjects/Preserve/Vaniel.(AdvMapHeroShared).xdb @@ -0,0 +1,79 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Vaniel + HERO_CLASS_ENCHANTER + HERO_SPEC_MASTER_OF_ELEMENTS + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + + + + + + + + + TOWN_PRESERVE + + + + 0 + 1 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_SUMMONING_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Preserve/Vinrael.(AdvMapHeroShared).xdb b/MapObjects/Preserve/Vinrael.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..3de949ea --- /dev/null +++ b/MapObjects/Preserve/Vinrael.(AdvMapHeroShared).xdb @@ -0,0 +1,78 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + false + false + + + + false + true + + + + Vinrael + HERO_CLASS_ENCHANTER + HERO_SPEC_ELVEN_VOLLEY + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + + + + + + + + TOWN_PRESERVE + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + + false + false + false + + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Stronghold/Azar.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Azar.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..d99108eb --- /dev/null +++ b/MapObjects/Stronghold/Azar.(AdvMapHeroShared).xdb @@ -0,0 +1,81 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Azar + HERO_CLASS_BARBARIAN + HERO_SPEC_RASH + + MASTERY_BASIC + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Stronghold/Crag.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Crag.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..ae3cb668 --- /dev/null +++ b/MapObjects/Stronghold/Crag.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Crag + HERO_CLASS_BARBARIAN + HERO_SPEC_WHITE_KNIGHT + + MASTERY_BASIC + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 4 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Erika.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Erika.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..327b5aaa --- /dev/null +++ b/MapObjects/Stronghold/Erika.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Erika + HERO_CLASS_WARLOCKB + HERO_SPEC_TALENTED_WARRIOR + + MASTERY_BASIC + HERO_SKILL_SHATTER_DARK_MAGIC + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 1 + 0 + 2 + 2 + + + MASTERY_EXPERT + HERO_SKILL_LEARNING + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Gottai.xdb b/MapObjects/Stronghold/Gottai.xdb new file mode 100644 index 00000000..9d478d6f --- /dev/null +++ b/MapObjects/Stronghold/Gottai.xdb @@ -0,0 +1,89 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Gottai + HERO_CLASS_BARBARIAN + HERO_SPEC_WAR_LEADER + + MASTERY_BASIC + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_VOICE + + + + HERO_SKILL_VOICE_OF_RAGE + + + false + false + false + + 0 + + 0 + + + + + + true + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/GottaiMP.xdb b/MapObjects/Stronghold/GottaiMP.xdb new file mode 100644 index 00000000..dd5ae988 --- /dev/null +++ b/MapObjects/Stronghold/GottaiMP.xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + GottaiMP + HERO_CLASS_BARBARIAN + + + MASTERY_BASIC + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_VOICE + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Hero1.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Hero1.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..1d1e30af --- /dev/null +++ b/MapObjects/Stronghold/Hero1.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Hero1 + HERO_CLASS_BARBARIAN + HERO_SPEC_OFFENDER + + MASTERY_BASIC + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_TRAINING + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Hero2.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Hero2.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..d57deefd --- /dev/null +++ b/MapObjects/Stronghold/Hero2.(AdvMapHeroShared).xdb @@ -0,0 +1,89 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Hero2 + HERO_CLASS_WARLOCKB + HERO_SPEC_DARK_ACOLYTE + + MASTERY_BASIC + HERO_SKILL_SHATTER_DARK_MAGIC + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 1 + 0 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_DESTRUCTIVE_MAGIC + + + + + SPELL_ABILITY_DARK_RITUAL + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Hero3.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Hero3.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..a722ff9e --- /dev/null +++ b/MapObjects/Stronghold/Hero3.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Hero3 + HERO_CLASS_WARLOCKB + HERO_SPEC_PRUDENT + + MASTERY_BASIC + HERO_SKILL_SHATTER_DARK_MAGIC + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 1 + 0 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Hero3C.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Hero3C.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..9b014023 --- /dev/null +++ b/MapObjects/Stronghold/Hero3C.(AdvMapHeroShared).xdb @@ -0,0 +1,76 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Hero3C + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 1 + 0 + 2 + 2 + + + + false + false + false + + 0 + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Stronghold/Hero4.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Hero4.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..72eb90f1 --- /dev/null +++ b/MapObjects/Stronghold/Hero4.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Hero4 + HERO_CLASS_BARBARIAN + HERO_SPEC_ORC_ELDER + + MASTERY_BASIC + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LUCK + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Hero5.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Hero5.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..df43ba2f --- /dev/null +++ b/MapObjects/Stronghold/Hero5.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Quroq + HERO_CLASS_BARBARIAN + HERO_SPEC_CENTAUR_MISTRESS + + MASTERY_BASIC + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LOGISTICS + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Hero6.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Hero6.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..46fdf1d7 --- /dev/null +++ b/MapObjects/Stronghold/Hero6.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Hero6 + HERO_CLASS_BARBARIAN + HERO_SPEC_WYVERN_TAMER + + MASTERY_BASIC + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Hero6C.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Hero6C.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..0bf912d0 --- /dev/null +++ b/MapObjects/Stronghold/Hero6C.(AdvMapHeroShared).xdb @@ -0,0 +1,76 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Hero6C + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + + false + false + false + + 0 + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Stronghold/Hero7.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Hero7.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..89710bb3 --- /dev/null +++ b/MapObjects/Stronghold/Hero7.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Hero7 + HERO_CLASS_SHAMAN + + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Hero7C.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Hero7C.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..773357b0 --- /dev/null +++ b/MapObjects/Stronghold/Hero7C.(AdvMapHeroShared).xdb @@ -0,0 +1,76 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Hero7C + HERO_CLASS_RANGER + + + MASTERY_BASIC + HERO_SKILL_SORCERY + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 1 + 0 + 2 + 2 + + + + false + false + false + + 0 + + 0 + + + + + + true + + false + \ No newline at end of file diff --git a/MapObjects/Stronghold/Hero8.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Hero8.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..6669b640 --- /dev/null +++ b/MapObjects/Stronghold/Hero8.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Hero8 + HERO_CLASS_BARBARIAN + HERO_SPEC_GRIM_FIGHTER + + MASTERY_BASIC + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_OFFENCE + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Hero9.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Hero9.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..974fa80a --- /dev/null +++ b/MapObjects/Stronghold/Hero9.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Hero9 + HERO_CLASS_BARBARIAN + + + MASTERY_BASIC + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_BODYBUILDING + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Kraal.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Kraal.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..1e37a695 --- /dev/null +++ b/MapObjects/Stronghold/Kraal.(AdvMapHeroShared).xdb @@ -0,0 +1,81 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Kraal + HERO_CLASS_BARBARIAN + HERO_SPEC_EMPIRIC + + MASTERY_BASIC + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + \ No newline at end of file diff --git a/MapObjects/Stronghold/Kujin.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Kujin.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..13148404 --- /dev/null +++ b/MapObjects/Stronghold/Kujin.(AdvMapHeroShared).xdb @@ -0,0 +1,91 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Kujin + HERO_CLASS_SHAMAN + + + MASTERY_BASIC + HERO_SKILL_LIGHT_MAGIC + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 1 + 0 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_WAR_MACHINES + + + + HERO_SKILL_FIRST_AID + + + SPELL_MAGIC_ARROW + + false + false + false + + 0 + + 0 + + + + + + true + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/KujinMP.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/KujinMP.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..6c2e1e75 --- /dev/null +++ b/MapObjects/Stronghold/KujinMP.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + KujinMP + HERO_CLASS_SHAMAN + HERO_SPEC_SOULHUNTER + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_LEADERSHIP + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Kunyak.xdb b/MapObjects/Stronghold/Kunyak.xdb new file mode 100644 index 00000000..cdb966ba --- /dev/null +++ b/MapObjects/Stronghold/Kunyak.xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Kunyak + HERO_CLASS_BARBARIAN + + + MASTERY_BASIC + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_SHATTER_DARK_MAGIC + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Matewa.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Matewa.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..f4cbc4a9 --- /dev/null +++ b/MapObjects/Stronghold/Matewa.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Matewa + HERO_CLASS_BARBARIAN + HERO_SPEC_WAR_LEADER + + MASTERY_BASIC + HERO_SKILL_DEMONIC_RAGE + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 3 + 0 + 1 + 1 + + + MASTERY_BASIC + HERO_SKILL_WARCRY_LEARNING + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Mokka.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Mokka.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..fd161eb6 --- /dev/null +++ b/MapObjects/Stronghold/Mokka.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Mokka + HERO_CLASS_SHAMAN + HERO_SPEC_BLOODDRINKER + + MASTERY_BASIC + HERO_SKILL_SHATTER_DARK_MAGIC + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_LEARNING + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Shiva.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Shiva.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..202df1d5 --- /dev/null +++ b/MapObjects/Stronghold/Shiva.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Shiva + HERO_CLASS_SHAMAN + HERO_SPEC_EVASIVE + + MASTERY_BASIC + HERO_SKILL_DARK_MAGIC + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 0 + 1 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_BODYBUILDING + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/MapObjects/Stronghold/Zouleika.(AdvMapHeroShared).xdb b/MapObjects/Stronghold/Zouleika.(AdvMapHeroShared).xdb new file mode 100644 index 00000000..7eeb39de --- /dev/null +++ b/MapObjects/Stronghold/Zouleika.(AdvMapHeroShared).xdb @@ -0,0 +1,87 @@ + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + + + false + false + + + + false + true + + + + Zouleika + HERO_CLASS_WARLOCKB + HERO_SPEC_DARK_EMISSARY + + MASTERY_BASIC + HERO_SKILL_SHATTER_DARK_MAGIC + + + + + + + + + + + + TOWN_STRONGHOLD + + + + 1 + 0 + 2 + 2 + + + MASTERY_BASIC + HERO_SKILL_NECROMANCY + + + + + false + false + false + + 0 + + 0 + + + + + + false + + false + + 2 + 2 + 2 + 2 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/AcademyPreset1.xdb b/Maps/DuelMode/Heroes/AcademyPreset1.xdb new file mode 100644 index 00000000..f053a0f9 --- /dev/null +++ b/Maps/DuelMode/Heroes/AcademyPreset1.xdb @@ -0,0 +1,78 @@ + + + + 34 + 34 + 0 + + 0 + 0 + + + + + PLAYER_5 + 500000 + + + CREATURE_MASTER_GREMLIN + 600 + + + CREATURE_OBSIDIAN_GARGOYLE + 420 + + + CREATURE_STEEL_GOLEM + 270 + + + CREATURE_ARCH_MAGI + 120 + + + CREATURE_MASTER_GENIE + 96 + + + CREATURE_SNOW_APE + 40 + + + CREATURE_TITAN + 20 + + + + + + + + 17 + 12 + 5 + 15 + MASTERY_EXPERTHERO_SKILL_RUNIC_ARMORMASTERY_EXPERTHERO_SKILL_LIGHT_MAGICMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_ARTIFICIERMASTERY_EXPERTHERO_SKILL_LEADERSHIPMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGHERO_SKILL_MASTER_OF_ABJURATIONHERO_SKILL_ETERNAL_LIGHTHERO_SKILL_MASTER_OF_BLESSINGHERO_SKILL_SCOUTINGHERO_SKILL_QUICKNESS_OF_MINDHERO_SKILL_INTELLIGENCEHERO_SKILL_MELT_ARTIFACTHERO_SKILL_MAGIC_MIRRORHERO_SKILL_ARTIFICIAL_GLORYHERO_SKILL_ENCOURAGEHERO_SKILL_PRAYERHERO_SKILL_RECRUITMENTHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHSPELL_MAGIC_ARROWSPELL_BLESSSPELL_STONESKINSPELL_BLOODLUSTSPELL_HASTESPELL_DEFLECT_ARROWSSPELL_DISPELSPELL_REGENERATIONSPELL_HOLY_WORDSPELL_DIVINE_VENGEANCESPELL_RESURRECTSPELL_CELESTIAL_SHIELDSPELL_BLINDtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/AcademyPreset2.xdb b/Maps/DuelMode/Heroes/AcademyPreset2.xdb new file mode 100644 index 00000000..912274ef --- /dev/null +++ b/Maps/DuelMode/Heroes/AcademyPreset2.xdb @@ -0,0 +1,78 @@ + + + + 36 + 36 + 0 + + 0 + 0 + + + + + PLAYER_5 + 500000 + + + CREATURE_MASTER_GREMLIN + 600 + + + CREATURE_MARBLE_GARGOYLE + 420 + + + CREATURE_OBSIDIAN_GOLEM + 270 + + + CREATURE_ARCH_MAGI + 120 + + + CREATURE_DJINN_VIZIER + 96 + + + CREATURE_RAKSHASA_KSHATRI + 40 + + + CREATURE_TITAN + 20 + + + + + + + + 2 + 17 + 15 + 15 + MASTERY_EXPERTHERO_SKILL_WEAKEN_LIGHTMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_SORCERYMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_ARTIFICIERMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHHERO_SKILL_SCOUTINGHERO_SKILL_QUICKNESS_OF_MINDHERO_SKILL_INTELLIGENCEHERO_SKILL_MAGIC_BONDHERO_SKILL_ELITE_CASTERSHERO_SKILL_DARK_RITUALHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_MELT_ARTIFACTHERO_SKILL_MAGIC_MIRRORHERO_SKILL_ARTIFICIAL_GLORYHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_POWER_OF_STONEtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/AcademyPreset3.xdb b/Maps/DuelMode/Heroes/AcademyPreset3.xdb new file mode 100644 index 00000000..47cba965 --- /dev/null +++ b/Maps/DuelMode/Heroes/AcademyPreset3.xdb @@ -0,0 +1,78 @@ + + + + 36 + 36 + 0 + + 0 + 0 + + + + + PLAYER_5 + 500000 + + + CREATURE_GREMLIN_SABOTEUR + 600 + + + CREATURE_MARBLE_GARGOYLE + 420 + + + CREATURE_OBSIDIAN_GOLEM + 270 + + + CREATURE_COMBAT_MAGE + 120 + + + CREATURE_DJINN_VIZIER + 96 + + + CREATURE_RAKSHASA_KSHATRI + 40 + + + CREATURE_STORM_LORD + 20 + + + + + + + + 2 + 7 + 20 + 20 + MASTERY_EXPERTHERO_SKILL_ABSOLUTE_LUCKMASTERY_EXPERTHERO_SKILL_DESTRUCTIVE_MAGICMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_SORCERYMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_INVOCATIONMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERHERO_SKILL_DEADLY_COLDHERO_SKILL_MASTER_OF_ICEHERO_SKILL_ANCIENT_SMITHYHERO_SKILL_SCOUTINGHERO_SKILL_QUICKNESS_OF_MINDHERO_SKILL_INTELLIGENCEHERO_SKILL_MAGIC_BONDHERO_SKILL_ELITE_CASTERSHERO_SKILL_DARK_RITUALHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_SPIRIT_LINKHERO_SKILL_DISTRACTHERO_SKILL_ARCANE_TRAININGHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_RESISTANCESPELL_STONE_SPIKESSPELL_ICE_BOLTSPELL_METEOR_SHOWERSPELL_LIGHTNING_BOLTSPELL_FIREBALLSPELL_FROST_RINGSPELL_ARMAGEDDONSPELL_IMPLOSIONSPELL_DEEP_FREEZESPELL_CHAIN_LIGHTNINGtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/AdvMapHero1.xdb b/Maps/DuelMode/Heroes/AdvMapHero1.xdb new file mode 100644 index 00000000..d681d026 --- /dev/null +++ b/Maps/DuelMode/Heroes/AdvMapHero1.xdb @@ -0,0 +1,78 @@ + + + + 10 + 10 + 0 + + 6.20429 + 0 + Ving - Wing Commander + + + + PLAYER_1 + 500000 + + + CREATURE_MILITIAMAN + 735 + + + CREATURE_MARKSMAN + 360 + + + CREATURE_SWORDSMAN + 300 + + + CREATURE_ROYAL_GRIFFIN + 120 + + + CREATURE_CLERIC + 72 + + + CREATURE_PALADIN + 40 + + + CREATURE_ARCHANGEL + 20 + + + + + + + + 20 + 12 + 12 + 5 + MASTERY_EXPERTHERO_SKILL_EMPATHYMASTERY_EXPERTHERO_SKILL_DARK_MAGICMASTERY_EXPERTHERO_SKILL_LEADERSHIPMASTERY_EXPERTHERO_SKILL_TRAININGMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_OFFENCEHERO_SKILL_MASTER_OF_SICKNESSHERO_SKILL_PARIAHHERO_SKILL_MASTER_OF_CURSESHERO_SKILL_ENCOURAGEHERO_SKILL_PRAYERHERO_SKILL_RECRUITMENTHERO_SKILL_STUNNING_BLOWHERO_SKILL_POWERFULL_BLOWHERO_SKILL_HOLY_CHARGEHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_OFFENSIVE_FORMATIONHERO_SKILL_ARCHERYHERO_SKILL_FAST_AND_FURIOUSSPELL_PLAGUESPELL_CURSESPELL_WEAKNESSSPELL_SLOWSPELL_DISRUPTING_RAYSPELL_ANIMATE_DEADSPELL_SORROWSPELL_TELEPORTSPELL_PHANTOMSPELL_UNHOLY_WORDSPELL_BERSERKSPELL_VAMPIRISMtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/AdvMapHero2.xdb b/Maps/DuelMode/Heroes/AdvMapHero2.xdb new file mode 100644 index 00000000..1a9568c8 --- /dev/null +++ b/Maps/DuelMode/Heroes/AdvMapHero2.xdb @@ -0,0 +1,78 @@ + + + + 12 + 12 + 0 + + 6.23053 + 0 + Nicolai - Champion of the Light + + + + PLAYER_1 + 500000 + + + CREATURE_LANDLORD + 735 + + + CREATURE_LONGBOWMAN + 360 + + + CREATURE_VINDICATOR + 300 + + + CREATURE_ROYAL_GRIFFIN + 120 + + + CREATURE_CLERIC + 72 + + + CREATURE_PALADIN + 40 + + + CREATURE_ARCHANGEL + 20 + + + + + + + + 15 + 20 + 7 + 7 + MASTERY_EXPERTHERO_SKILL_WEAKEN_LIGHTMASTERY_EXPERTHERO_SKILL_LIGHT_MAGICMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_TRAININGMASTERY_EXPERTHERO_SKILL_LEADERSHIPMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGHERO_SKILL_MASTER_OF_ABJURATIONHERO_SKILL_ETERNAL_LIGHTHERO_SKILL_MASTER_OF_BLESSINGHERO_SKILL_SCOUTINGHERO_SKILL_QUICKNESS_OF_MINDHERO_SKILL_INTELLIGENCEHERO_SKILL_STUNNING_BLOWHERO_SKILL_POWERFULL_BLOWHERO_SKILL_HOLY_CHARGEHERO_SKILL_ENCOURAGEHERO_SKILL_PRAYERHERO_SKILL_RECRUITMENTHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHSPELL_MAGIC_ARROWSPELL_BLESSSPELL_STONESKINSPELL_BLOODLUSTSPELL_HASTESPELL_DEFLECT_ARROWSSPELL_DISPELSPELL_REGENERATIONSPELL_HOLY_WORDSPELL_DIVINE_VENGEANCESPELL_RESURRECTSPELL_CELESTIAL_SHIELDSPELL_BLINDtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/AdvMapHero3.xdb b/Maps/DuelMode/Heroes/AdvMapHero3.xdb new file mode 100644 index 00000000..f01b9a68 --- /dev/null +++ b/Maps/DuelMode/Heroes/AdvMapHero3.xdb @@ -0,0 +1,78 @@ + + + + 14 + 14 + 0 + + 6.24368 + 0 + Jeddite + + + + PLAYER_1 + 500000 + + + CREATURE_LANDLORD + 735 + + + CREATURE_LONGBOWMAN + 360 + + + CREATURE_VINDICATOR + 300 + + + CREATURE_BATTLE_GRIFFIN + 120 + + + CREATURE_ZEALOT + 72 + + + CREATURE_CHAMPION + 40 + + + CREATURE_SERAPH + 20 + + + + + + + + 12 + 5 + 20 + 12 + MASTERY_EXPERTHERO_SKILL_WEAKEN_DESTRUCTIVEMASTERY_EXPERTHERO_SKILL_DARK_MAGICMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_SORCERYMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERMASTERY_EXPERTHERO_SKILL_OFFENCEMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGHERO_SKILL_MASTER_OF_SICKNESSHERO_SKILL_PARIAHHERO_SKILL_MASTER_OF_CURSESHERO_SKILL_SCOUTINGHERO_SKILL_QUICKNESS_OF_MINDHERO_SKILL_INTELLIGENCEHERO_SKILL_MAGIC_BONDHERO_SKILL_ELITE_CASTERSHERO_SKILL_DARK_RITUALHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_RESISTANCEHERO_SKILL_OFFENSIVE_FORMATIONHERO_SKILL_ARCHERYHERO_SKILL_FAST_AND_FURIOUSHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHSPELL_PLAGUESPELL_CURSESPELL_WEAKNESSSPELL_SLOWSPELL_DISRUPTING_RAYSPELL_ANIMATE_DEADSPELL_SORROWSPELL_TELEPORTSPELL_PHANTOMSPELL_UNHOLY_WORDSPELL_BERSERKSPELL_VAMPIRISMtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/DungeonPreset1.xdb b/Maps/DuelMode/Heroes/DungeonPreset1.xdb new file mode 100644 index 00000000..ca959c42 --- /dev/null +++ b/Maps/DuelMode/Heroes/DungeonPreset1.xdb @@ -0,0 +1,78 @@ + + + + 40 + 40 + 0 + + 0 + 0 + + + + + PLAYER_6 + 500000 + + + CREATURE_ASSASSIN + 210 + + + CREATURE_BLOOD_WITCH_2 + 150 + + + CREATURE_MINOTAUR_CAPTAIN + 180 + + + CREATURE_BLACK_RIDER + 96 + + + CREATURE_CHAOS_HYDRA + 72 + + + CREATURE_MATRIARCH + 40 + + + CREATURE_RED_DRAGON + 20 + + + + + + + + 20 + 15 + 7 + 7 + MASTERY_EXPERTHERO_SKILL_ABSOLUTE_CHARGEMASTERY_EXPERTHERO_SKILL_DARK_MAGICMASTERY_EXPERTHERO_SKILL_TRAININGMASTERY_EXPERTHERO_SKILL_LEADERSHIPMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_OFFENCEMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGHERO_SKILL_MASTER_OF_SICKNESSHERO_SKILL_PARIAHHERO_SKILL_MASTER_OF_CURSESHERO_SKILL_STUNNING_BLOWHERO_SKILL_POWERFULL_BLOWHERO_SKILL_HOLY_CHARGEHERO_SKILL_ENCOURAGEHERO_SKILL_PRAYERHERO_SKILL_RECRUITMENTHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_OFFENSIVE_FORMATIONHERO_SKILL_ARCHERYHERO_SKILL_FAST_AND_FURIOUSHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHSPELL_PLAGUESPELL_CURSESPELL_WEAKNESSSPELL_SLOWSPELL_DISRUPTING_RAYSPELL_ANIMATE_DEADSPELL_SORROWSPELL_TELEPORTSPELL_PHANTOMSPELL_UNHOLY_WORDSPELL_BERSERKSPELL_VAMPIRISMtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/DungeonPreset2.xdb b/Maps/DuelMode/Heroes/DungeonPreset2.xdb new file mode 100644 index 00000000..0815fb53 --- /dev/null +++ b/Maps/DuelMode/Heroes/DungeonPreset2.xdb @@ -0,0 +1,78 @@ + + + + 40 + 40 + 0 + + 0 + 0 + + + + + PLAYER_6 + 500000 + + + CREATURE_STALKER + 210 + + + CREATURE_BLOOD_WITCH_2 + 150 + + + CREATURE_MINOTAUR_CAPTAIN + 180 + + + CREATURE_BLACK_RIDER + 96 + + + CREATURE_ACIDIC_HYDRA + 72 + + + CREATURE_MATRON + 40 + + + CREATURE_RED_DRAGON + 20 + + + + + + + + 15 + 5 + 20 + 10 + MASTERY_EXPERTHERO_SKILL_WEAKEN_LIGHTMASTERY_EXPERTHERO_SKILL_DESTRUCTIVE_MAGICMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_SORCERYMASTERY_EXPERTHERO_SKILL_LUCKMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERHERO_SKILL_DEADLY_COLDHERO_SKILL_MASTER_OF_ICEHERO_SKILL_ANCIENT_SMITHYHERO_SKILL_SCOUTINGHERO_SKILL_QUICKNESS_OF_MINDHERO_SKILL_INTELLIGENCEHERO_SKILL_MAGIC_BONDHERO_SKILL_ELITE_CASTERSHERO_SKILL_DARK_RITUALHERO_SKILL_ELVEN_LUCKHERO_SKILL_LUCKY_STRIKEHERO_SKILL_DEAD_LUCKHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_RESISTANCESPELL_STONE_SPIKESSPELL_ICE_BOLTSPELL_METEOR_SHOWERSPELL_LIGHTNING_BOLTSPELL_FIREBALLSPELL_FROST_RINGSPELL_ARMAGEDDONSPELL_IMPLOSIONSPELL_DEEP_FREEZESPELL_CHAIN_LIGHTNINGtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/DungeonPreset3.xdb b/Maps/DuelMode/Heroes/DungeonPreset3.xdb new file mode 100644 index 00000000..94c79b0d --- /dev/null +++ b/Maps/DuelMode/Heroes/DungeonPreset3.xdb @@ -0,0 +1,78 @@ + + + + 44 + 44 + 0 + + 0 + 0 + + + + + PLAYER_6 + 500000 + + + CREATURE_ASSASSIN + 210 + + + CREATURE_BLOOD_WITCH + 150 + + + CREATURE_MINOTAUR_KING + 180 + + + CREATURE_RAVAGER + 96 + + + CREATURE_CHAOS_HYDRA + 72 + + + CREATURE_MATRIARCH + 40 + + + CREATURE_BLACK_DRAGON + 20 + + + + + + + + 7 + 5 + 25 + 12 + MASTERY_EXPERTHERO_SKILL_SHATTER_DESTRUCTIVE_MAGICMASTERY_EXPERTHERO_SKILL_DESTRUCTIVE_MAGICMASTERY_EXPERTHERO_SKILL_SORCERYMASTERY_EXPERTHERO_SKILL_INVOCATIONMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_OFFENCEMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERHERO_SKILL_DEADLY_COLDHERO_SKILL_MASTER_OF_ICEHERO_SKILL_ANCIENT_SMITHYHERO_SKILL_MAGIC_BONDHERO_SKILL_ELITE_CASTERSHERO_SKILL_DARK_RITUALHERO_SKILL_SPIRIT_LINKHERO_SKILL_DISTRACTHERO_SKILL_ARCANE_TRAININGHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_OFFENSIVE_FORMATIONHERO_SKILL_ARCHERYHERO_SKILL_FAST_AND_FURIOUSHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_RESISTANCESPELL_STONE_SPIKESSPELL_ICE_BOLTSPELL_METEOR_SHOWERSPELL_LIGHTNING_BOLTSPELL_FIREBALLSPELL_FROST_RINGSPELL_ARMAGEDDONSPELL_IMPLOSIONSPELL_DEEP_FREEZESPELL_CHAIN_LIGHTNINGtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/InfernoPreset1.xdb b/Maps/DuelMode/Heroes/InfernoPreset1.xdb new file mode 100644 index 00000000..772ad46e --- /dev/null +++ b/Maps/DuelMode/Heroes/InfernoPreset1.xdb @@ -0,0 +1,78 @@ + + + + 16 + 16 + 0 + + 0 + 0 + + + + + PLAYER_2 + 500000 + + + CREATURE_IMP + 510 + + + CREATURE_HORNED_DEMON + 480 + + + CREATURE_CERBERI + 240 + + + CREATURE_INFERNAL_SUCCUBUS + 120 + + + CREATURE_FRIGHTFUL_NIGHTMARE + 84 + + + CREATURE_BALOR + 40 + + + CREATURE_ARCHDEVIL + 20 + + + + + + + + 25 + 12 + 5 + 7 + MASTERY_EXPERTHERO_SKILL_WEAKEN_LIGHTMASTERY_EXPERTHERO_SKILL_DARK_MAGICMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_GATINGMASTERY_EXPERTHERO_SKILL_LEADERSHIPMASTERY_EXPERTHERO_SKILL_TRAININGMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERHERO_SKILL_MASTER_OF_SICKNESSHERO_SKILL_PARIAHHERO_SKILL_MASTER_OF_CURSESHERO_SKILL_SCOUTINGHERO_SKILL_QUICKNESS_OF_MINDHERO_SKILL_INTELLIGENCEHERO_SKILL_DEMONIC_FIREHERO_SKILL_QUICK_GATINGHERO_SKILL_GATING_MASTERYHERO_SKILL_ENCOURAGEHERO_SKILL_PRAYERHERO_SKILL_RECRUITMENTHERO_SKILL_DEMONIC_STRIKEHERO_SKILL_BARBARIAN_WEAKENING_STRIKEHERO_SKILL_HOLY_CHARGEHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_RESISTANCESPELL_PLAGUESPELL_CURSESPELL_WEAKNESSSPELL_SLOWSPELL_DISRUPTING_RAYSPELL_ANIMATE_DEADSPELL_SORROWSPELL_TELEPORTSPELL_PHANTOMSPELL_UNHOLY_WORDSPELL_BERSERKSPELL_VAMPIRISMtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/InfernoPreset2.xdb b/Maps/DuelMode/Heroes/InfernoPreset2.xdb new file mode 100644 index 00000000..eb7657de --- /dev/null +++ b/Maps/DuelMode/Heroes/InfernoPreset2.xdb @@ -0,0 +1,78 @@ + + + + 18 + 18 + 0 + + 0 + 0 + + + + + PLAYER_2 + 500000 + + + CREATURE_QUASIT + 510 + + + CREATURE_HORNED_LEAPER + 480 + + + CREATURE_FIREBREATHER_HOUND + 240 + + + CREATURE_SUCCUBUS_SEDUCER + 120 + + + CREATURE_HELLMARE + 84 + + + CREATURE_PIT_SPAWN + 40 + + + CREATURE_ARCH_DEMON + 20 + + + + + + + + 17 + 7 + 15 + 10 + MASTERY_EXPERTHERO_SKILL_ABSOLUTE_GATINGMASTERY_EXPERTHERO_SKILL_SUMMONING_MAGICMASTERY_EXPERTHERO_SKILL_GATINGMASTERY_EXPERTHERO_SKILL_SORCERYMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGMASTERY_EXPERTHERO_SKILL_OFFENCEHERO_SKILL_SUN_FIREHERO_SKILL_FIRE_AFFINITYHERO_SKILL_ELEMENTAL_BALANCEHERO_SKILL_DEMONIC_FIREHERO_SKILL_QUICK_GATINGHERO_SKILL_GATING_MASTERYHERO_SKILL_MAGIC_BONDHERO_SKILL_ELITE_CASTERSHERO_SKILL_DARK_RITUALHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHHERO_SKILL_TACTICSHERO_SKILL_CHILLING_STEELHERO_SKILL_FAST_AND_FURIOUSSPELL_WASP_SWARMSPELL_LAND_MINESPELL_ARCANE_CRYSTALSPELL_EARTHQUAKESPELL_MAGIC_FISTSPELL_ANTI_MAGICSPELL_BLADE_BARRIERSPELL_SUMMON_HIVESPELL_FIREWALLSPELL_HYPNOTIZESPELL_CONJURE_PHOENIXtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/InfernoPreset3.xdb b/Maps/DuelMode/Heroes/InfernoPreset3.xdb new file mode 100644 index 00000000..97bb6f8e --- /dev/null +++ b/Maps/DuelMode/Heroes/InfernoPreset3.xdb @@ -0,0 +1,78 @@ + + + + 20 + 20 + 0 + + 0 + 0 + + + + + PLAYER_2 + 500000 + + + CREATURE_QUASIT + 510 + + + CREATURE_HORNED_LEAPER + 480 + + + CREATURE_FIREBREATHER_HOUND + 240 + + + CREATURE_SUCCUBUS_SEDUCER + 120 + + + CREATURE_HELLMARE + 84 + + + CREATURE_BLACK_KNIGHT + 40 + + + CREATURE_ARCHDEVIL + 20 + + + + + + + + 7 + 5 + 22 + 15 + MASTERY_EXPERTHERO_SKILL_SHATTER_LIGHT_MAGICMASTERY_EXPERTHERO_SKILL_DESTRUCTIVE_MAGICMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_SORCERYMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERMASTERY_EXPERTHERO_SKILL_GATINGMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGHERO_SKILL_DEADLY_COLDHERO_SKILL_MASTER_OF_ICEHERO_SKILL_ANCIENT_SMITHYHERO_SKILL_SCOUTINGHERO_SKILL_QUICKNESS_OF_MINDHERO_SKILL_INTELLIGENCEHERO_SKILL_MAGIC_BONDHERO_SKILL_ELITE_CASTERSHERO_SKILL_DARK_RITUALHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_RESISTANCEHERO_SKILL_DEMONIC_FIREHERO_SKILL_QUICK_GATINGHERO_SKILL_GATING_MASTERYHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHSPELL_STONE_SPIKESSPELL_ICE_BOLTSPELL_METEOR_SHOWERSPELL_LIGHTNING_BOLTSPELL_FIREBALLSPELL_FROST_RINGSPELL_ARMAGEDDONSPELL_IMPLOSIONSPELL_DEEP_FREEZESPELL_CHAIN_LIGHTNINGtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/NecropolisPreset1.xdb b/Maps/DuelMode/Heroes/NecropolisPreset1.xdb new file mode 100644 index 00000000..94227943 --- /dev/null +++ b/Maps/DuelMode/Heroes/NecropolisPreset1.xdb @@ -0,0 +1,78 @@ + + + + 28 + 28 + 0 + + 0 + 0 + + + + + PLAYER_4 + 500000 + + + CREATURE_SKELETON_ARCHER + 690 + + + CREATURE_ZOMBIE + 450 + + + CREATURE_GHOST + 270 + + + CREATURE_VAMPIRE_LORD + 120 + + + CREATURE_DEMILICH + 72 + + + CREATURE_DEATH_KNIGHT + 40 + + + CREATURE_SHADOW_DRAGON + 30 + + + + + + + + 17 + 17 + 10 + 5 + MASTERY_EXPERTHERO_SKILL_WEAKEN_LIGHTMASTERY_EXPERTHERO_SKILL_DARK_MAGICMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_SHATTER_DARK_MAGICMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGMASTERY_EXPERTHERO_SKILL_OFFENCEHERO_SKILL_MASTER_OF_SICKNESSHERO_SKILL_PARIAHHERO_SKILL_MASTER_OF_CURSESHERO_SKILL_SCHOLARHERO_SKILL_MENTORINGHERO_SKILL_SCOUTINGHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_DETAIN_DARKHERO_SKILL_BARBARIAN_SOIL_BURNHERO_SKILL_DETAIN_LIGHTHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHHERO_SKILL_TACTICSHERO_SKILL_CHILLING_STEELHERO_SKILL_FAST_AND_FURIOUSSPELL_PLAGUESPELL_CURSESPELL_WEAKNESSSPELL_SLOWSPELL_DISRUPTING_RAYSPELL_ANIMATE_DEADSPELL_SORROWSPELL_TELEPORTSPELL_PHANTOMSPELL_UNHOLY_WORDSPELL_BERSERKSPELL_VAMPIRISMtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/NecropolisPreset2.xdb b/Maps/DuelMode/Heroes/NecropolisPreset2.xdb new file mode 100644 index 00000000..173a41de --- /dev/null +++ b/Maps/DuelMode/Heroes/NecropolisPreset2.xdb @@ -0,0 +1,78 @@ + + + + 30 + 30 + 0 + + 0 + 0 + + + + + PLAYER_4 + 500000 + + + CREATURE_SKELETON_WARRIOR + 690 + + + CREATURE_DISEASE_ZOMBIE + 450 + + + CREATURE_POLTERGEIST + 270 + + + CREATURE_NOSFERATU + 120 + + + CREATURE_LICH_MASTER + 72 + + + CREATURE_BANSHEE + 40 + + + CREATURE_HORROR_DRAGON + 30 + + + + + + + + 7 + 12 + 17 + 12 + MASTERY_EXPERTHERO_SKILL_ABSOLUTE_FEARMASTERY_EXPERTHERO_SKILL_DARK_MAGICMASTERY_EXPERTHERO_SKILL_NECROMANCYMASTERY_EXPERTHERO_SKILL_SORCERYMASTERY_EXPERTHERO_SKILL_OFFENCEMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERHERO_SKILL_MASTER_OF_SICKNESSHERO_SKILL_PARIAHHERO_SKILL_MASTER_OF_CURSESHERO_SKILL_DEATH_SCREAMHERO_SKILL_SHRUG_DARKNESSHERO_SKILL_CHILLING_BONESHERO_SKILL_MAGIC_BONDHERO_SKILL_ELITE_CASTERSHERO_SKILL_DARK_RITUALHERO_SKILL_TACTICSHERO_SKILL_CHILLING_STEELHERO_SKILL_FAST_AND_FURIOUSHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_RESISTANCESPELL_PLAGUESPELL_CURSESPELL_WEAKNESSSPELL_SLOWSPELL_DISRUPTING_RAYSPELL_ANIMATE_DEADSPELL_SORROWSPELL_TELEPORTSPELL_PHANTOMSPELL_UNHOLY_WORDSPELL_BERSERKSPELL_VAMPIRISMtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/NecropolisPreset3.xdb b/Maps/DuelMode/Heroes/NecropolisPreset3.xdb new file mode 100644 index 00000000..a67e5279 --- /dev/null +++ b/Maps/DuelMode/Heroes/NecropolisPreset3.xdb @@ -0,0 +1,78 @@ + + + + 30 + 30 + 0 + + 0 + 0 + + + + + PLAYER_4 + 500000 + + + CREATURE_SKELETON_WARRIOR + 690 + + + CREATURE_DISEASE_ZOMBIE + 450 + + + CREATURE_GHOST + 270 + + + CREATURE_NOSFERATU + 120 + + + CREATURE_LICH_MASTER + 72 + + + CREATURE_BANSHEE + 40 + + + CREATURE_HORROR_DRAGON + 30 + + + + + + + + 5 + 7 + 25 + 12 + MASTERY_EXPERTHERO_SKILL_WEAKEN_DARKMASTERY_EXPERTHERO_SKILL_DARK_MAGICMASTERY_EXPERTHERO_SKILL_SORCERYMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGMASTERY_EXPERTHERO_SKILL_INVOCATIONMASTERY_EXPERTHERO_SKILL_OFFENCEMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERHERO_SKILL_MASTER_OF_SICKNESSHERO_SKILL_PARIAHHERO_SKILL_MASTER_OF_CURSESHERO_SKILL_MAGIC_BONDHERO_SKILL_ELITE_CASTERSHERO_SKILL_DARK_RITUALHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHHERO_SKILL_CONSUME_CORPSEHERO_SKILL_EXPLODING_CORPSESHERO_SKILL_ARCANE_TRAININGHERO_SKILL_OFFENSIVE_FORMATIONHERO_SKILL_ARCHERYHERO_SKILL_FAST_AND_FURIOUSHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_RESISTANCESPELL_PLAGUESPELL_CURSESPELL_WEAKNESSSPELL_SLOWSPELL_DISRUPTING_RAYSPELL_ANIMATE_DEADSPELL_SORROWSPELL_TELEPORTSPELL_PHANTOMSPELL_UNHOLY_WORDSPELL_BERSERKSPELL_VAMPIRISMtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/RunemagePreset1.xdb b/Maps/DuelMode/Heroes/RunemagePreset1.xdb new file mode 100644 index 00000000..3a01dc3b --- /dev/null +++ b/Maps/DuelMode/Heroes/RunemagePreset1.xdb @@ -0,0 +1,78 @@ + + + + 46 + 46 + 0 + + 0 + 0 + + + + + PLAYER_7 + 500000 + + + CREATURE_STONE_DEFENDER + 540 + + + CREATURE_HARPOONER + 420 + + + CREATURE_WHITE_BEAR_RIDER + 210 + + + CREATURE_BATTLE_RAGER + 204 + + + CREATURE_FLAME_KEEPER + 84 + + + CREATURE_THUNDER_THANE + 40 + + + CREATURE_LAVA_DRAGON + 20 + + + + + + + + 17 + 22 + 5 + 5 + MASTERY_EXPERTHERO_SKILL_WEAKEN_SUMMONINGMASTERY_EXPERTHERO_SKILL_LIGHT_MAGICMASTERY_EXPERTHERO_SKILL_RUNELOREMASTERY_EXPERTHERO_SKILL_LEADERSHIPMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_SHATTER_DARK_MAGICMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGHERO_SKILL_MASTER_OF_ABJURATIONHERO_SKILL_ETERNAL_LIGHTHERO_SKILL_MASTER_OF_BLESSINGHERO_SKILL_DEMONIC_FLAMEHERO_SKILL_RUNIC_ATTUNEMENTHERO_SKILL_FINE_RUNEHERO_SKILL_ENCOURAGEHERO_SKILL_PRAYERHERO_SKILL_RECRUITMENTHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_DETAIN_LIGHTHERO_SKILL_BARBARIAN_STORM_WINDHERO_SKILL_DETAIN_DARKHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHSPELL_MAGIC_ARROWSPELL_BLESSSPELL_STONESKINSPELL_BLOODLUSTSPELL_HASTESPELL_DEFLECT_ARROWSSPELL_DISPELSPELL_REGENERATIONSPELL_HOLY_WORDSPELL_DIVINE_VENGEANCESPELL_RESURRECTSPELL_CELESTIAL_SHIELDSPELL_BLINDSPELL_RUNE_OF_REVIVESPELL_RUNE_OF_MAGIC_CONTROLSPELL_RUNE_OF_EXORCISMSPELL_RUNE_OF_STUNNINGSPELL_RUNE_OF_DRAGONFORMtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/RunemagePreset2.xdb b/Maps/DuelMode/Heroes/RunemagePreset2.xdb new file mode 100644 index 00000000..0cac7473 --- /dev/null +++ b/Maps/DuelMode/Heroes/RunemagePreset2.xdb @@ -0,0 +1,78 @@ + + + + 48 + 48 + 0 + + 0 + 0 + + + + + PLAYER_7 + 500000 + + + CREATURE_STOUT_DEFENDER + 540 + + + CREATURE_AXE_THROWER + 420 + + + CREATURE_WHITE_BEAR_RIDER + 210 + + + CREATURE_BATTLE_RAGER + 204 + + + CREATURE_FLAME_KEEPER + 84 + + + CREATURE_WARLORD + 40 + + + CREATURE_MAGMA_DRAGON + 20 + + + + + + + + 15 + 10 + 15 + 10 + MASTERY_EXPERTHERO_SKILL_WEAKEN_LIGHTMASTERY_EXPERTHERO_SKILL_LIGHT_MAGICMASTERY_EXPERTHERO_SKILL_SORCERYMASTERY_EXPERTHERO_SKILL_DARK_MAGICMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_RUNELOREMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERHERO_SKILL_MASTER_OF_ABJURATIONHERO_SKILL_ETERNAL_LIGHTHERO_SKILL_MASTER_OF_BLESSINGHERO_SKILL_MAGIC_BONDHERO_SKILL_ELITE_CASTERSHERO_SKILL_DARK_RITUALHERO_SKILL_WEAKENING_STRIKEHERO_SKILL_MASTER_OF_MINDHERO_SKILL_MASTER_OF_SICKNESSHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_DEMONIC_FLAMEHERO_SKILL_RUNIC_ATTUNEMENTHERO_SKILL_FINE_RUNEHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_RESISTANCESPELL_MAGIC_ARROWSPELL_BLESSSPELL_STONESKINSPELL_BLOODLUSTSPELL_HASTESPELL_DEFLECT_ARROWSSPELL_DISPELSPELL_REGENERATIONSPELL_HOLY_WORDSPELL_DIVINE_VENGEANCESPELL_RESURRECTSPELL_CELESTIAL_SHIELDSPELL_BLINDSPELL_PLAGUESPELL_CURSESPELL_WEAKNESSSPELL_SLOWSPELL_DISRUPTING_RAYSPELL_ANIMATE_DEADSPELL_SORROWSPELL_TELEPORTSPELL_PHANTOMSPELL_UNHOLY_WORDSPELL_BERSERKSPELL_VAMPIRISMSPELL_RUNE_OF_REVIVESPELL_RUNE_OF_MAGIC_CONTROLSPELL_RUNE_OF_EXORCISMSPELL_RUNE_OF_STUNNINGSPELL_RUNE_OF_DRAGONFORMtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/RunemagePreset3.xdb b/Maps/DuelMode/Heroes/RunemagePreset3.xdb new file mode 100644 index 00000000..8e0c3574 --- /dev/null +++ b/Maps/DuelMode/Heroes/RunemagePreset3.xdb @@ -0,0 +1,78 @@ + + + + 50 + 50 + 0 + + 0 + 0 + + + + + PLAYER_7 + 500000 + + + CREATURE_STOUT_DEFENDER + 540 + + + CREATURE_AXE_THROWER + 420 + + + CREATURE_BLACKBEAR_RIDER + 210 + + + CREATURE_BERSERKER + 204 + + + CREATURE_FLAME_MAGE + 84 + + + CREATURE_WARLORD + 40 + + + CREATURE_MAGMA_DRAGON + 20 + + + + + + + + 5 + 7 + 22 + 15 + MASTERY_EXPERTHERO_SKILL_ABSOLUTE_PROTECTIONMASTERY_EXPERTHERO_SKILL_DESTRUCTIVE_MAGICMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_SORCERYMASTERY_EXPERTHERO_SKILL_RUNELOREMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERHERO_SKILL_DEADLY_COLDHERO_SKILL_MASTER_OF_ICEHERO_SKILL_ANCIENT_SMITHYHERO_SKILL_SCOUTINGHERO_SKILL_QUICKNESS_OF_MINDHERO_SKILL_INTELLIGENCEHERO_SKILL_MAGIC_BONDHERO_SKILL_ELITE_CASTERSHERO_SKILL_DARK_RITUALHERO_SKILL_DEMONIC_FLAMEHERO_SKILL_RUNIC_ATTUNEMENTHERO_SKILL_FINE_RUNEHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_RESISTANCESPELL_STONE_SPIKESSPELL_ICE_BOLTSPELL_METEOR_SHOWERSPELL_LIGHTNING_BOLTSPELL_FIREBALLSPELL_FROST_RINGSPELL_ARMAGEDDONSPELL_IMPLOSIONSPELL_DEEP_FREEZESPELL_CHAIN_LIGHTNINGSPELL_RUNE_OF_REVIVESPELL_RUNE_OF_MAGIC_CONTROLSPELL_RUNE_OF_EXORCISMSPELL_RUNE_OF_STUNNINGSPELL_RUNE_OF_DRAGONFORMtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/StrongHoldPreset1.xdb b/Maps/DuelMode/Heroes/StrongHoldPreset1.xdb new file mode 100644 index 00000000..13180d2e --- /dev/null +++ b/Maps/DuelMode/Heroes/StrongHoldPreset1.xdb @@ -0,0 +1,78 @@ + + + + 52 + 52 + 0 + + 0 + 0 + + + + + PLAYER_8 + 500000 + + + CREATURE_GOBLIN_TRAPPER + 840 + + + CREATURE_CENTAUR_NOMAD + 420 + + + CREATURE_ORC_SLAYER + 330 + + + CREATURE_SHAMAN_WITCH + 120 + + + CREATURE_ORCCHIEF_EXECUTIONER + 120 + + + CREATURE_WYVERN_POISONOUS + 40 + + + CREATURE_CYCLOP_UNTAMED + 20 + + + + + + + + 25 + 17 + 0 + 7 + MASTERY_EXPERTHERO_SKILL_RETRIBUTIONMASTERY_EXPERTHERO_SKILL_VOICEMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_DEMONIC_RAGEMASTERY_EXPERTHERO_SKILL_LEADERSHIPMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_SHATTER_DARK_MAGICHERO_SKILL_MIGHTY_VOICEHERO_SKILL_VOICE_OF_RAGEHERO_SKILL_VOICE_TRAININGHERO_SKILL_SCOUTINGHERO_SKILL_QUICKNESS_OF_MINDHERO_SKILL_INTELLIGENCEHERO_SKILL_BATTLE_ELATIONHERO_SKILL_MEMORY_OF_OUR_BLOODHERO_SKILL_POWER_OF_BLOODHERO_SKILL_ENCOURAGEHERO_SKILL_PRAYERHERO_SKILL_RECRUITMENTHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_DETAIN_LIGHTHERO_SKILL_BARBARIAN_STORM_WINDHERO_SKILL_DETAIN_DARKSPELL_WARCRY_RALLING_CRYSPELL_WARCRY_CALL_OF_BLOODSPELL_WARCRY_WORD_OF_THE_CHIEFSPELL_WARCRY_FEAR_MY_ROARSPELL_WARCRY_BATTLECRYSPELL_WARCRY_SHOUT_OF_MANYtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/StrongHoldPreset2.xdb b/Maps/DuelMode/Heroes/StrongHoldPreset2.xdb new file mode 100644 index 00000000..27601adf --- /dev/null +++ b/Maps/DuelMode/Heroes/StrongHoldPreset2.xdb @@ -0,0 +1,78 @@ + + + + 54 + 54 + 0 + + 0 + 0 + + + + + PLAYER_8 + 500000 + + + CREATURE_GOBLIN_DEFILER + 840 + + + CREATURE_CENTAUR_NOMAD + 420 + + + CREATURE_ORC_SLAYER + 330 + + + CREATURE_SHAMAN_HAG + 120 + + + CREATURE_ORCCHIEF_CHIEFTAIN + 120 + + + CREATURE_WYVERN_PAOKAI + 40 + + + CREATURE_CYCLOP_BLOODEYED + 20 + + + + + + + + 10 + 10 + 15 + 15 + MASTERY_EXPERTHERO_SKILL_ABSOLUTE_RAGEMASTERY_EXPERTHERO_SKILL_DARK_MAGICMASTERY_EXPERTHERO_SKILL_TRAININGMASTERY_EXPERTHERO_SKILL_LEADERSHIPMASTERY_EXPERTHERO_SKILL_OFFENCEMASTERY_EXPERTHERO_SKILL_DEMONIC_RAGEMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERHERO_SKILL_MASTER_OF_SICKNESSHERO_SKILL_PARIAHHERO_SKILL_MASTER_OF_CURSESHERO_SKILL_STUNNING_BLOWHERO_SKILL_POWERFULL_BLOWHERO_SKILL_HOLY_CHARGEHERO_SKILL_ENCOURAGEHERO_SKILL_PRAYERHERO_SKILL_RECRUITMENTHERO_SKILL_TACTICSHERO_SKILL_CHILLING_STEELHERO_SKILL_OFFENSIVE_FORMATIONHERO_SKILL_POWER_OF_BLOODHERO_SKILL_MIGHT_OVER_MAGICHERO_SKILL_BATTLE_ELATIONHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_RESISTANCESPELL_PLAGUESPELL_CURSESPELL_WEAKNESSSPELL_SLOWSPELL_DISRUPTING_RAYSPELL_ANIMATE_DEADSPELL_SORROWSPELL_TELEPORTSPELL_PHANTOMSPELL_UNHOLY_WORDSPELL_BERSERKSPELL_VAMPIRISMtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/StrongHoldPreset3.xdb b/Maps/DuelMode/Heroes/StrongHoldPreset3.xdb new file mode 100644 index 00000000..2a10cf7a --- /dev/null +++ b/Maps/DuelMode/Heroes/StrongHoldPreset3.xdb @@ -0,0 +1,78 @@ + + + + 56 + 56 + 0 + + 0 + 0 + + + + + PLAYER_8 + 500000 + + + CREATURE_GOBLIN_DEFILER + 840 + + + CREATURE_CENTAUR_MARADEUR + 420 + + + CREATURE_ORC_WARMONGER + 330 + + + CREATURE_SHAMAN_HAG + 120 + + + CREATURE_ORCCHIEF_CHIEFTAIN + 120 + + + CREATURE_PHOENIX + 40 + + + CREATURE_CYCLOP_BLOODEYED + 20 + + + + + + + + 10 + 5 + 20 + 15 + MASTERY_EXPERTHERO_SKILL_MASTER_OF_CREATURESMASTERY_EXPERTHERO_SKILL_SUMMONING_MAGICMASTERY_EXPERTHERO_SKILL_SORCERYMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGMASTERY_EXPERTHERO_SKILL_OFFENCEMASTERY_EXPERTHERO_SKILL_SHATTER_DARK_MAGICMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERHERO_SKILL_SUN_FIREHERO_SKILL_FIRE_AFFINITYHERO_SKILL_ELEMENTAL_BALANCEHERO_SKILL_MAGIC_BONDHERO_SKILL_ELITE_CASTERSHERO_SKILL_DARK_RITUALHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHHERO_SKILL_TACTICSHERO_SKILL_CHILLING_STEELHERO_SKILL_OFFENSIVE_FORMATIONHERO_SKILL_DETAIN_DESTRUCTIVEHERO_SKILL_BARBARIAN_ANCIENT_SMITHYHERO_SKILL_DETAIN_LIGHTHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_RESISTANCESPELL_WASP_SWARMSPELL_LAND_MINESPELL_ARCANE_CRYSTALSPELL_EARTHQUAKESPELL_MAGIC_FISTSPELL_ANTI_MAGICSPELL_BLADE_BARRIERSPELL_SUMMON_HIVESPELL_FIREWALLSPELL_HYPNOTIZESPELL_CONJURE_PHOENIXtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/SylvanPreset1.xdb b/Maps/DuelMode/Heroes/SylvanPreset1.xdb new file mode 100644 index 00000000..c29212ea --- /dev/null +++ b/Maps/DuelMode/Heroes/SylvanPreset1.xdb @@ -0,0 +1,119 @@ + + + + 22 + 22 + 0 + + 0 + 0 + + + + + PLAYER_3 + 500000 + + + CREATURE_SPRITE + 360 + + + CREATURE_WAR_DANCER + 270 + + + CREATURE_GRAND_ELF + 210 + + + CREATURE_DRUID_ELDER + 108 + + + CREATURE_WAR_UNICORN + 72 + + + CREATURE_TREANT_GUARDIAN + 50 + + + CREATURE_GOLD_DRAGON + 20 + + + + + + + + 22 + 15 + 5 + 7 + MASTERY_EXPERTHERO_SKILL_ABSOLUTE_WIZARDYMASTERY_EXPERTHERO_SKILL_OFFENCEMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_AVENGERMASTERY_EXPERTHERO_SKILL_LEADERSHIPMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_WARCRY_LEARNINGHERO_SKILL_FAST_AND_FURIOUSHERO_SKILL_FRENZYHERO_SKILL_OFFENSIVE_FORMATIONHERO_SKILL_SCOUTINGHERO_SKILL_QUICKNESS_OF_MINDHERO_SKILL_INTELLIGENCEHERO_SKILL_SNIPE_DEADHERO_SKILL_MULTISHOTHERO_SKILL_IMBUE_ARROWHERO_SKILL_ENCOURAGEHERO_SKILL_PRAYERHERO_SKILL_RECRUITMENTHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_POWER_OF_HASTEHERO_SKILL_TELEPORT_ASSAULTHERO_SKILL_SNATCHSPELL_MAGIC_ARROWSPELL_BLESSSPELL_STONESKINSPELL_BLOODLUSTSPELL_HASTESPELL_DEFLECT_ARROWSSPELL_DISPELSPELL_REGENERATIONSPELL_HOLY_WORDSPELL_DIVINE_VENGEANCESPELL_RESURRECTSPELL_CELESTIAL_SHIELDSPELL_BLINDSPELL_PLAGUESPELL_CURSESPELL_WEAKNESSSPELL_SLOWSPELL_DISRUPTING_RAYSPELL_ANIMATE_DEADSPELL_SORROWSPELL_TELEPORTSPELL_PHANTOMSPELL_UNHOLY_WORDSPELL_BERSERKSPELL_VAMPIRISMSPELL_WASP_SWARMSPELL_LAND_MINESPELL_ARCANE_CRYSTALSPELL_EARTHQUAKESPELL_MAGIC_FISTSPELL_ANTI_MAGICSPELL_BLADE_BARRIERSPELL_SUMMON_HIVESPELL_FIREWALLSPELL_HYPNOTIZESPELL_CONJURE_PHOENIXSPELL_STONE_SPIKESSPELL_ICE_BOLTSPELL_METEOR_SHOWERSPELL_LIGHTNING_BOLTSPELL_FIREBALLSPELL_FROST_RINGSPELL_ARMAGEDDONSPELL_IMPLOSIONSPELL_DEEP_FREEZESPELL_CHAIN_LIGHTNINGSPELL_RUNE_OF_REVIVESPELL_RUNE_OF_MAGIC_CONTROLSPELL_RUNE_OF_EXORCISMSPELL_RUNE_OF_STUNNINGSPELL_RUNE_OF_DRAGONFORMSPELL_WARCRY_RALLING_CRYSPELL_WARCRY_CALL_OF_BLOODSPELL_WARCRY_WORD_OF_THE_CHIEFSPELL_WARCRY_FEAR_MY_ROARSPELL_WARCRY_BATTLECRYSPELL_WARCRY_SHOUT_OF_MANYtrue + true + true + + CREATURE_IRON_GOLEM + CREATURE_MAGI + CREATURE_GENIE + CREATURE_RAKSHASA + CREATURE_GIANT + CREATURE_MINOTAUR + CREATURE_RIDER + CREATURE_HYDRA + CREATURE_MATRON + CREATURE_DEEP_DRAGON + CREATURE_BEAR_RIDER + CREATURE_BROWLER + CREATURE_RUNE_MAGE + CREATURE_THANE + CREATURE_FIRE_DRAGON + CREATURE_SWORDSMAN + CREATURE_GRIFFIN + CREATURE_PRIEST + CREATURE_CAVALIER + CREATURE_ANGEL + CREATURE_DEMON + CREATURE_SUCCUBUS + CREATURE_NIGHTMARE + CREATURE_PIT_FIEND + CREATURE_DEVIL + CREATURE_GHOST + CREATURE_VAMPIRE + CREATURE_LICH + CREATURE_WIGHT + CREATURE_BONE_DRAGON + CREATURE_ORC_WARRIOR + CREATURE_SHAMAN + CREATURE_ORCCHIEF_BUTCHER + CREATURE_WYVERN + CREATURE_CYCLOP + CREATURE_WOOD_ELF + CREATURE_DRUID + CREATURE_UNICORN + CREATURE_TREANT + CREATURE_GREEN_DRAGON + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/SylvanPreset2.xdb b/Maps/DuelMode/Heroes/SylvanPreset2.xdb new file mode 100644 index 00000000..bb621541 --- /dev/null +++ b/Maps/DuelMode/Heroes/SylvanPreset2.xdb @@ -0,0 +1,79 @@ + + + + 24 + 24 + 0 + + 0 + 0 + + + + + PLAYER_3 + 500000 + + + CREATURE_DRYAD + 360 + + + CREATURE_BLADE_SINGER + 270 + + + CREATURE_SHARP_SHOOTER + 210 + + + CREATURE_HIGH_DRUID + 108 + + + CREATURE_WHITE_UNICORN + 72 + + + CREATURE_ANGER_TREANT + 50 + + + CREATURE_RAINBOW_DRAGON + 20 + + + + + + + + 17 + 12 + 7 + 12 + MASTERY_EXPERTHERO_SKILL_WEAKEN_LIGHTMASTERY_EXPERTHERO_SKILL_DARK_MAGICMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_AVENGERMASTERY_EXPERTHERO_SKILL_LEADERSHIPMASTERY_EXPERTHERO_SKILL_TRAININGMASTERY_EXPERTHERO_SKILL_EXPERT_TRAINERHERO_SKILL_MASTER_OF_SICKNESSHERO_SKILL_PARIAHHERO_SKILL_MASTER_OF_CURSESHERO_SKILL_SCOUTINGHERO_SKILL_QUICKNESS_OF_MINDHERO_SKILL_INTELLIGENCEHERO_SKILL_SNIPE_DEADHERO_SKILL_MULTISHOTHERO_SKILL_IMBUE_ARROWHERO_SKILL_ENCOURAGEHERO_SKILL_PRAYERHERO_SKILL_RECRUITMENTHERO_SKILL_STUNNING_BLOWHERO_SKILL_POWERFULL_BLOWHERO_SKILL_DEMONIC_STRIKEHERO_SKILL_TOUGHNESSHERO_SKILL_PREPARATIONHERO_SKILL_RESISTANCESPELL_PLAGUESPELL_CURSESPELL_WEAKNESSSPELL_SLOWSPELL_DISRUPTING_RAYSPELL_ANIMATE_DEADSPELL_SORROWSPELL_TELEPORTSPELL_PHANTOMSPELL_UNHOLY_WORDSPELL_BERSERKSPELL_VAMPIRISMtrue + true + true + + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/Maps/DuelMode/Heroes/SylvanPreset3.xdb b/Maps/DuelMode/Heroes/SylvanPreset3.xdb new file mode 100644 index 00000000..8fbf6442 --- /dev/null +++ b/Maps/DuelMode/Heroes/SylvanPreset3.xdb @@ -0,0 +1,78 @@ + + + + 26 + 26 + 0 + + 0 + 0 + + + + + PLAYER_3 + 500000 + + + CREATURE_DRYAD + 360 + + + CREATURE_WAR_DANCER + 270 + + + CREATURE_SHARP_SHOOTER + 210 + + + CREATURE_DRUID_ELDER + 108 + + + CREATURE_WHITE_UNICORN + 72 + + + CREATURE_TREANT_GUARDIAN + 50 + + + CREATURE_GOLD_DRAGON + 20 + + + + + + + + 5 + 10 + 20 + 15 + MASTERY_EXPERTHERO_SKILL_MYSTICISMMASTERY_EXPERTHERO_SKILL_SUMMONING_MAGICMASTERY_EXPERTHERO_SKILL_LEARNINGMASTERY_EXPERTHERO_SKILL_SORCERYMASTERY_EXPERTHERO_SKILL_SHATTER_DARK_MAGICMASTERY_EXPERTHERO_SKILL_DEFENCEMASTERY_EXPERTHERO_SKILL_OFFENCEHERO_SKILL_SUN_FIREHERO_SKILL_FIRE_AFFINITYHERO_SKILL_ELEMENTAL_BALANCEHERO_SKILL_SCOUTINGHERO_SKILL_QUICKNESS_OF_MINDHERO_SKILL_INTELLIGENCEHERO_SKILL_MAGIC_BONDHERO_SKILL_ELITE_CASTERSHERO_SKILL_DARK_RITUALHERO_SKILL_DETAIN_SUMMONINGHERO_SKILL_BARBARIAN_FOG_VEILHERO_SKILL_DETAIN_DESTRUCTIVEHERO_SKILL_LAST_STANDHERO_SKILL_EVASIONHERO_SKILL_PROTECTIONHERO_SKILL_TACTICSHERO_SKILL_CHILLING_STEELHERO_SKILL_FAST_AND_FURIOUSSPELL_WASP_SWARMSPELL_LAND_MINESPELL_ARCANE_CRYSTALSPELL_EARTHQUAKESPELL_MAGIC_FISTSPELL_ANTI_MAGICSPELL_BLADE_BARRIERSPELL_SUMMON_HIVESPELL_FIREWALLSPELL_HYPNOTIZESPELL_CONJURE_PHOENIXtrue + true + true + + 0 + + 32 + MASTERY_EXPERT + + + + + + true + + + + + + + + 0 + + \ No newline at end of file diff --git a/README.txt b/README.txt new file mode 100644 index 00000000..e8973114 --- /dev/null +++ b/README.txt @@ -0,0 +1,13 @@ +Installation: +1. Install MMH55 RC16c +2. Move the .pak files into your ToTe/data directory. + +You can switch to MMH55 at any time, just by renaming the +Frax.pak +to +Frax.pak.disabled + + +This release also includes work of other authors: +- The duelist pack addon +- Some NCF creatures from the Chaos mod diff --git a/Text/CombatLog/Abilities/SpecOffenderDamage.txt b/Text/CombatLog/Abilities/SpecOffenderDamage.txt new file mode 100644 index 00000000..9a8a538f Binary files /dev/null and b/Text/CombatLog/Abilities/SpecOffenderDamage.txt differ diff --git a/Text/CombatLog/Abilities/SpecOffenderStart.txt b/Text/CombatLog/Abilities/SpecOffenderStart.txt new file mode 100644 index 00000000..3baf244f Binary files /dev/null and b/Text/CombatLog/Abilities/SpecOffenderStart.txt differ diff --git a/Text/CombatLog/AttackCriticalStrike.txt b/Text/CombatLog/AttackCriticalStrike.txt new file mode 100644 index 00000000..c125f334 Binary files /dev/null and b/Text/CombatLog/AttackCriticalStrike.txt differ diff --git a/Text/CombatLog/AttackCriticalStrikeFavored.txt b/Text/CombatLog/AttackCriticalStrikeFavored.txt new file mode 100644 index 00000000..f56f10d4 Binary files /dev/null and b/Text/CombatLog/AttackCriticalStrikeFavored.txt differ diff --git a/Text/CombatLog/Spells/AvatarOfDeath.txt b/Text/CombatLog/Spells/AvatarOfDeath.txt new file mode 100644 index 00000000..6c687ab2 Binary files /dev/null and b/Text/CombatLog/Spells/AvatarOfDeath.txt differ diff --git a/Text/CombatLog/Spells/SpiritLink.txt b/Text/CombatLog/Spells/SpiritLink.txt new file mode 100644 index 00000000..4d35cf68 Binary files /dev/null and b/Text/CombatLog/Spells/SpiritLink.txt differ diff --git a/Text/Game/Artifacts/Angel_wings/Description.txt b/Text/Game/Artifacts/Angel_wings/Description.txt new file mode 100644 index 00000000..fe398978 Binary files /dev/null and b/Text/Game/Artifacts/Angel_wings/Description.txt differ diff --git a/Text/Game/Artifacts/Angel_wings/Name.txt b/Text/Game/Artifacts/Angel_wings/Name.txt new file mode 100644 index 00000000..1c4ebbfb Binary files /dev/null and b/Text/Game/Artifacts/Angel_wings/Name.txt differ diff --git a/Text/Game/Artifacts/Beginer_Magic_Stick/Description.txt b/Text/Game/Artifacts/Beginer_Magic_Stick/Description.txt new file mode 100644 index 00000000..31fe718a Binary files /dev/null and b/Text/Game/Artifacts/Beginer_Magic_Stick/Description.txt differ diff --git a/Text/Game/Artifacts/Beginer_Magic_Stick/Name.txt b/Text/Game/Artifacts/Beginer_Magic_Stick/Name.txt new file mode 100644 index 00000000..d10b9fdb Binary files /dev/null and b/Text/Game/Artifacts/Beginer_Magic_Stick/Name.txt differ diff --git a/Text/Game/Artifacts/Breastplate_of_petrified_wood/Description.txt b/Text/Game/Artifacts/Breastplate_of_petrified_wood/Description.txt new file mode 100644 index 00000000..16f38268 Binary files /dev/null and b/Text/Game/Artifacts/Breastplate_of_petrified_wood/Description.txt differ diff --git a/Text/Game/Artifacts/Breastplate_of_petrified_wood/Name.txt b/Text/Game/Artifacts/Breastplate_of_petrified_wood/Name.txt new file mode 100644 index 00000000..2ae54a01 Binary files /dev/null and b/Text/Game/Artifacts/Breastplate_of_petrified_wood/Name.txt differ diff --git a/Text/Game/Artifacts/Crown_Of_Leader/Description.txt b/Text/Game/Artifacts/Crown_Of_Leader/Description.txt new file mode 100644 index 00000000..76e07a33 Binary files /dev/null and b/Text/Game/Artifacts/Crown_Of_Leader/Description.txt differ diff --git a/Text/Game/Artifacts/Crown_Of_Leader/Name.txt b/Text/Game/Artifacts/Crown_Of_Leader/Name.txt new file mode 100644 index 00000000..4837e3af Binary files /dev/null and b/Text/Game/Artifacts/Crown_Of_Leader/Name.txt differ diff --git a/Text/Game/Artifacts/Crown_of_magi/Description.txt b/Text/Game/Artifacts/Crown_of_magi/Description.txt new file mode 100644 index 00000000..2c975ad0 Binary files /dev/null and b/Text/Game/Artifacts/Crown_of_magi/Description.txt differ diff --git a/Text/Game/Artifacts/Crown_of_magi/Name.txt b/Text/Game/Artifacts/Crown_of_magi/Name.txt new file mode 100644 index 00000000..84d6f225 Binary files /dev/null and b/Text/Game/Artifacts/Crown_of_magi/Name.txt differ diff --git a/Text/Game/Artifacts/Earthsliders/Description.txt b/Text/Game/Artifacts/Earthsliders/Description.txt new file mode 100644 index 00000000..8cb11bd9 Binary files /dev/null and b/Text/Game/Artifacts/Earthsliders/Description.txt differ diff --git a/Text/Game/Artifacts/Earthsliders/Name.txt b/Text/Game/Artifacts/Earthsliders/Name.txt new file mode 100644 index 00000000..f6a8ec5c Binary files /dev/null and b/Text/Game/Artifacts/Earthsliders/Name.txt differ diff --git a/Text/Game/Artifacts/Eightfold/Description.txt b/Text/Game/Artifacts/Eightfold/Description.txt new file mode 100644 index 00000000..9984974a Binary files /dev/null and b/Text/Game/Artifacts/Eightfold/Description.txt differ diff --git a/Text/Game/Artifacts/Eightfold/Name.txt b/Text/Game/Artifacts/Eightfold/Name.txt new file mode 100644 index 00000000..535dd73b Binary files /dev/null and b/Text/Game/Artifacts/Eightfold/Name.txt differ diff --git a/Text/Game/Artifacts/Evercold_icicle/Description.txt b/Text/Game/Artifacts/Evercold_icicle/Description.txt new file mode 100644 index 00000000..e334ef3c Binary files /dev/null and b/Text/Game/Artifacts/Evercold_icicle/Description.txt differ diff --git a/Text/Game/Artifacts/Evercold_icicle/Name.txt b/Text/Game/Artifacts/Evercold_icicle/Name.txt new file mode 100644 index 00000000..10b9097e Binary files /dev/null and b/Text/Game/Artifacts/Evercold_icicle/Name.txt differ diff --git a/Text/Game/Artifacts/Gear_01/Description.txt b/Text/Game/Artifacts/Gear_01/Description.txt new file mode 100644 index 00000000..af79697f Binary files /dev/null and b/Text/Game/Artifacts/Gear_01/Description.txt differ diff --git a/Text/Game/Artifacts/Gear_01/Name.txt b/Text/Game/Artifacts/Gear_01/Name.txt new file mode 100644 index 00000000..9e54b5f5 Binary files /dev/null and b/Text/Game/Artifacts/Gear_01/Name.txt differ diff --git a/Text/Game/Artifacts/Gear_02/Description.txt b/Text/Game/Artifacts/Gear_02/Description.txt new file mode 100644 index 00000000..cc758468 Binary files /dev/null and b/Text/Game/Artifacts/Gear_02/Description.txt differ diff --git a/Text/Game/Artifacts/Gear_02/Name.txt b/Text/Game/Artifacts/Gear_02/Name.txt new file mode 100644 index 00000000..b28a584a Binary files /dev/null and b/Text/Game/Artifacts/Gear_02/Name.txt differ diff --git a/Text/Game/Artifacts/Gear_03/Description.txt b/Text/Game/Artifacts/Gear_03/Description.txt new file mode 100644 index 00000000..1bbac5d6 Binary files /dev/null and b/Text/Game/Artifacts/Gear_03/Description.txt differ diff --git a/Text/Game/Artifacts/Gear_03/Name.txt b/Text/Game/Artifacts/Gear_03/Name.txt new file mode 100644 index 00000000..0c01a258 Binary files /dev/null and b/Text/Game/Artifacts/Gear_03/Name.txt differ diff --git a/Text/Game/Artifacts/Helm_of_Chaos/Description.txt b/Text/Game/Artifacts/Helm_of_Chaos/Description.txt new file mode 100644 index 00000000..c3ac0ade Binary files /dev/null and b/Text/Game/Artifacts/Helm_of_Chaos/Description.txt differ diff --git a/Text/Game/Artifacts/Helm_of_Chaos/Name.txt b/Text/Game/Artifacts/Helm_of_Chaos/Name.txt new file mode 100644 index 00000000..d94cfaf3 Binary files /dev/null and b/Text/Game/Artifacts/Helm_of_Chaos/Name.txt differ diff --git a/Text/Game/Artifacts/Life_01/Description.txt b/Text/Game/Artifacts/Life_01/Description.txt new file mode 100644 index 00000000..fb4570e7 Binary files /dev/null and b/Text/Game/Artifacts/Life_01/Description.txt differ diff --git a/Text/Game/Artifacts/Life_01/Name.txt b/Text/Game/Artifacts/Life_01/Name.txt new file mode 100644 index 00000000..78f03e66 Binary files /dev/null and b/Text/Game/Artifacts/Life_01/Name.txt differ diff --git a/Text/Game/Artifacts/Life_02/Description.txt b/Text/Game/Artifacts/Life_02/Description.txt new file mode 100644 index 00000000..f5a0e044 Binary files /dev/null and b/Text/Game/Artifacts/Life_02/Description.txt differ diff --git a/Text/Game/Artifacts/Life_02/Name.txt b/Text/Game/Artifacts/Life_02/Name.txt new file mode 100644 index 00000000..d20febbe Binary files /dev/null and b/Text/Game/Artifacts/Life_02/Name.txt differ diff --git a/Text/Game/Artifacts/Life_03/Description.txt b/Text/Game/Artifacts/Life_03/Description.txt new file mode 100644 index 00000000..f5a0e044 Binary files /dev/null and b/Text/Game/Artifacts/Life_03/Description.txt differ diff --git a/Text/Game/Artifacts/Life_03/Name.txt b/Text/Game/Artifacts/Life_03/Name.txt new file mode 100644 index 00000000..cc86dd0a Binary files /dev/null and b/Text/Game/Artifacts/Life_03/Name.txt differ diff --git a/Text/Game/Artifacts/Life_04/Description.txt b/Text/Game/Artifacts/Life_04/Description.txt new file mode 100644 index 00000000..17d1184e Binary files /dev/null and b/Text/Game/Artifacts/Life_04/Description.txt differ diff --git a/Text/Game/Artifacts/Life_04/Name.txt b/Text/Game/Artifacts/Life_04/Name.txt new file mode 100644 index 00000000..3e2293e5 Binary files /dev/null and b/Text/Game/Artifacts/Life_04/Name.txt differ diff --git a/Text/Game/Artifacts/Monk_01/Description.txt b/Text/Game/Artifacts/Monk_01/Description.txt new file mode 100644 index 00000000..ab4e2817 Binary files /dev/null and b/Text/Game/Artifacts/Monk_01/Description.txt differ diff --git a/Text/Game/Artifacts/Monk_01/Name.txt b/Text/Game/Artifacts/Monk_01/Name.txt new file mode 100644 index 00000000..5e66b46c Binary files /dev/null and b/Text/Game/Artifacts/Monk_01/Name.txt differ diff --git a/Text/Game/Artifacts/Monk_02/Description.txt b/Text/Game/Artifacts/Monk_02/Description.txt new file mode 100644 index 00000000..34ab8ba5 Binary files /dev/null and b/Text/Game/Artifacts/Monk_02/Description.txt differ diff --git a/Text/Game/Artifacts/Monk_02/Name.txt b/Text/Game/Artifacts/Monk_02/Name.txt new file mode 100644 index 00000000..24b4afa1 Binary files /dev/null and b/Text/Game/Artifacts/Monk_02/Name.txt differ diff --git a/Text/Game/Artifacts/Monk_03/Description.txt b/Text/Game/Artifacts/Monk_03/Description.txt new file mode 100644 index 00000000..257e6fd0 Binary files /dev/null and b/Text/Game/Artifacts/Monk_03/Description.txt differ diff --git a/Text/Game/Artifacts/Monk_03/Name.txt b/Text/Game/Artifacts/Monk_03/Name.txt new file mode 100644 index 00000000..91c79255 Binary files /dev/null and b/Text/Game/Artifacts/Monk_03/Name.txt differ diff --git a/Text/Game/Artifacts/Monk_04/Description.txt b/Text/Game/Artifacts/Monk_04/Description.txt new file mode 100644 index 00000000..aaf4f38e Binary files /dev/null and b/Text/Game/Artifacts/Monk_04/Description.txt differ diff --git a/Text/Game/Artifacts/Monk_04/Name.txt b/Text/Game/Artifacts/Monk_04/Name.txt new file mode 100644 index 00000000..8cab3fe7 Binary files /dev/null and b/Text/Game/Artifacts/Monk_04/Name.txt differ diff --git a/Text/Game/Artifacts/Phoenix_feather_cape/Description.txt b/Text/Game/Artifacts/Phoenix_feather_cape/Description.txt new file mode 100644 index 00000000..d96da6d2 Binary files /dev/null and b/Text/Game/Artifacts/Phoenix_feather_cape/Description.txt differ diff --git a/Text/Game/Artifacts/Phoenix_feather_cape/Name.txt b/Text/Game/Artifacts/Phoenix_feather_cape/Name.txt new file mode 100644 index 00000000..8f73436f Binary files /dev/null and b/Text/Game/Artifacts/Phoenix_feather_cape/Name.txt differ diff --git a/Text/Game/Artifacts/Potion_01/Description.txt b/Text/Game/Artifacts/Potion_01/Description.txt new file mode 100644 index 00000000..9ead5379 Binary files /dev/null and b/Text/Game/Artifacts/Potion_01/Description.txt differ diff --git a/Text/Game/Artifacts/Potion_01/Name.txt b/Text/Game/Artifacts/Potion_01/Name.txt new file mode 100644 index 00000000..405fba49 Binary files /dev/null and b/Text/Game/Artifacts/Potion_01/Name.txt differ diff --git a/Text/Game/Artifacts/Potion_02/Description.txt b/Text/Game/Artifacts/Potion_02/Description.txt new file mode 100644 index 00000000..fc48b7b1 Binary files /dev/null and b/Text/Game/Artifacts/Potion_02/Description.txt differ diff --git a/Text/Game/Artifacts/Potion_02/Name.txt b/Text/Game/Artifacts/Potion_02/Name.txt new file mode 100644 index 00000000..e108e913 Binary files /dev/null and b/Text/Game/Artifacts/Potion_02/Name.txt differ diff --git a/Text/Game/Artifacts/Potion_03/Description.txt b/Text/Game/Artifacts/Potion_03/Description.txt new file mode 100644 index 00000000..f0a072fc Binary files /dev/null and b/Text/Game/Artifacts/Potion_03/Description.txt differ diff --git a/Text/Game/Artifacts/Potion_03/Name.txt b/Text/Game/Artifacts/Potion_03/Name.txt new file mode 100644 index 00000000..817c3689 Binary files /dev/null and b/Text/Game/Artifacts/Potion_03/Name.txt differ diff --git a/Text/Game/Artifacts/Robe_of_magi/Description.txt b/Text/Game/Artifacts/Robe_of_magi/Description.txt new file mode 100644 index 00000000..ce96b2ee Binary files /dev/null and b/Text/Game/Artifacts/Robe_of_magi/Description.txt differ diff --git a/Text/Game/Artifacts/Robe_of_magi/Name.txt b/Text/Game/Artifacts/Robe_of_magi/Name.txt new file mode 100644 index 00000000..a9db5516 Binary files /dev/null and b/Text/Game/Artifacts/Robe_of_magi/Name.txt differ diff --git a/Text/Game/Artifacts/Rune_of_Flame/Description.txt b/Text/Game/Artifacts/Rune_of_Flame/Description.txt new file mode 100644 index 00000000..d6d139ca Binary files /dev/null and b/Text/Game/Artifacts/Rune_of_Flame/Description.txt differ diff --git a/Text/Game/Artifacts/Rune_of_Flame/Name.txt b/Text/Game/Artifacts/Rune_of_Flame/Name.txt new file mode 100644 index 00000000..c9de3f08 Binary files /dev/null and b/Text/Game/Artifacts/Rune_of_Flame/Name.txt differ diff --git a/Text/Game/Artifacts/Runic_War_Axe/Description.txt b/Text/Game/Artifacts/Runic_War_Axe/Description.txt new file mode 100644 index 00000000..7d3aeaf0 Binary files /dev/null and b/Text/Game/Artifacts/Runic_War_Axe/Description.txt differ diff --git a/Text/Game/Artifacts/Runic_War_Axe/Name.txt b/Text/Game/Artifacts/Runic_War_Axe/Name.txt new file mode 100644 index 00000000..6a427286 Binary files /dev/null and b/Text/Game/Artifacts/Runic_War_Axe/Name.txt differ diff --git a/Text/Game/Artifacts/Runic_War_Harness/Description.txt b/Text/Game/Artifacts/Runic_War_Harness/Description.txt new file mode 100644 index 00000000..a6de22b6 Binary files /dev/null and b/Text/Game/Artifacts/Runic_War_Harness/Description.txt differ diff --git a/Text/Game/Artifacts/Runic_War_Harness/Name.txt b/Text/Game/Artifacts/Runic_War_Harness/Name.txt new file mode 100644 index 00000000..a283a04c Binary files /dev/null and b/Text/Game/Artifacts/Runic_War_Harness/Name.txt differ diff --git a/Text/Game/Artifacts/Sandals_of_the_Saint/Description.txt b/Text/Game/Artifacts/Sandals_of_the_Saint/Description.txt new file mode 100644 index 00000000..17d1184e Binary files /dev/null and b/Text/Game/Artifacts/Sandals_of_the_Saint/Description.txt differ diff --git a/Text/Game/Artifacts/Sandals_of_the_Saint/Name.txt b/Text/Game/Artifacts/Sandals_of_the_Saint/Name.txt new file mode 100644 index 00000000..a5aed6d9 Binary files /dev/null and b/Text/Game/Artifacts/Sandals_of_the_Saint/Name.txt differ diff --git a/Text/Game/Artifacts/Upg_ST1/Description.txt b/Text/Game/Artifacts/Upg_ST1/Description.txt new file mode 100644 index 00000000..91029dd8 Binary files /dev/null and b/Text/Game/Artifacts/Upg_ST1/Description.txt differ diff --git a/Text/Game/Artifacts/Upg_ST1/Name.txt b/Text/Game/Artifacts/Upg_ST1/Name.txt new file mode 100644 index 00000000..f3273d53 Binary files /dev/null and b/Text/Game/Artifacts/Upg_ST1/Name.txt differ diff --git a/Text/Game/Artifacts/Upg_ST2/Description.txt b/Text/Game/Artifacts/Upg_ST2/Description.txt new file mode 100644 index 00000000..9ce58a40 Binary files /dev/null and b/Text/Game/Artifacts/Upg_ST2/Description.txt differ diff --git a/Text/Game/Artifacts/Upg_ST2/Name.txt b/Text/Game/Artifacts/Upg_ST2/Name.txt new file mode 100644 index 00000000..3fb895fb Binary files /dev/null and b/Text/Game/Artifacts/Upg_ST2/Name.txt differ diff --git a/Text/Game/Artifacts/Wispering_Ring/Description.txt b/Text/Game/Artifacts/Wispering_Ring/Description.txt new file mode 100644 index 00000000..ba651734 Binary files /dev/null and b/Text/Game/Artifacts/Wispering_Ring/Description.txt differ diff --git a/Text/Game/Artifacts/Wispering_Ring/Name.txt b/Text/Game/Artifacts/Wispering_Ring/Name.txt new file mode 100644 index 00000000..da15af08 Binary files /dev/null and b/Text/Game/Artifacts/Wispering_Ring/Name.txt differ diff --git a/Text/Game/Creatures/Academy/3rd/StormLord_Desc.txt b/Text/Game/Creatures/Academy/3rd/StormLord_Desc.txt new file mode 100644 index 00000000..08187176 Binary files /dev/null and b/Text/Game/Creatures/Academy/3rd/StormLord_Desc.txt differ diff --git a/Text/Game/Creatures/Academy/3rd/StormLord_Name.txt b/Text/Game/Creatures/Academy/3rd/StormLord_Name.txt new file mode 100644 index 00000000..cbdbed43 Binary files /dev/null and b/Text/Game/Creatures/Academy/3rd/StormLord_Name.txt differ diff --git a/Text/Game/Creatures/Academy/Giant.txt b/Text/Game/Creatures/Academy/Giant.txt new file mode 100644 index 00000000..25930012 Binary files /dev/null and b/Text/Game/Creatures/Academy/Giant.txt differ diff --git a/Text/Game/Creatures/Academy/GiantDescription.txt b/Text/Game/Creatures/Academy/GiantDescription.txt new file mode 100644 index 00000000..cee094ae Binary files /dev/null and b/Text/Game/Creatures/Academy/GiantDescription.txt differ diff --git a/Text/Game/Creatures/Academy/Titan.txt b/Text/Game/Creatures/Academy/Titan.txt new file mode 100644 index 00000000..78700117 Binary files /dev/null and b/Text/Game/Creatures/Academy/Titan.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/AcidBlood/description.txt b/Text/Game/Creatures/Creature_abilities/AcidBlood/description.txt new file mode 100644 index 00000000..98c18b6c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/AcidBlood/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/AcidBlood/name.txt b/Text/Game/Creatures/Creature_abilities/AcidBlood/name.txt new file mode 100644 index 00000000..abfe78b5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/AcidBlood/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Acid_breath/Acid_breath_desc.txt b/Text/Game/Creatures/Creature_abilities/Acid_breath/Acid_breath_desc.txt new file mode 100644 index 00000000..bb1c9b74 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Acid_breath/Acid_breath_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Acid_breath/Acid_breath_name.txt b/Text/Game/Creatures/Creature_abilities/Acid_breath/Acid_breath_name.txt new file mode 100644 index 00000000..8e377345 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Acid_breath/Acid_breath_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Agility/description.txt b/Text/Game/Creatures/Creature_abilities/Agility/description.txt new file mode 100644 index 00000000..4d4a5e46 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Agility/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Agility/name.txt b/Text/Game/Creatures/Creature_abilities/Agility/name.txt new file mode 100644 index 00000000..6db94a7d Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Agility/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Ammo_Steal/description.txt b/Text/Game/Creatures/Creature_abilities/Ammo_Steal/description.txt new file mode 100644 index 00000000..a74a9436 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Ammo_Steal/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Ammo_Steal/name.txt b/Text/Game/Creatures/Creature_abilities/Ammo_Steal/name.txt new file mode 100644 index 00000000..78bb6dec Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Ammo_Steal/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Anti_giant/description.txt b/Text/Game/Creatures/Creature_abilities/Anti_giant/description.txt new file mode 100644 index 00000000..f961627d Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Anti_giant/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Anti_giant/name.txt b/Text/Game/Creatures/Creature_abilities/Anti_giant/name.txt new file mode 100644 index 00000000..76d2b8c1 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Anti_giant/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Armored/Armored_desc.txt b/Text/Game/Creatures/Creature_abilities/Armored/Armored_desc.txt new file mode 100644 index 00000000..606a3b51 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Armored/Armored_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Armored/Armored_name.txt b/Text/Game/Creatures/Creature_abilities/Armored/Armored_name.txt new file mode 100644 index 00000000..1a3c57ea Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Armored/Armored_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Aura_of_bravery/description.txt b/Text/Game/Creatures/Creature_abilities/Aura_of_bravery/description.txt new file mode 100644 index 00000000..bb34d4a4 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Aura_of_bravery/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Aura_of_bravery/name.txt b/Text/Game/Creatures/Creature_abilities/Aura_of_bravery/name.txt new file mode 100644 index 00000000..b4aad349 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Aura_of_bravery/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Aura_of_earth_vulnerability/description.txt b/Text/Game/Creatures/Creature_abilities/Aura_of_earth_vulnerability/description.txt new file mode 100644 index 00000000..1b6edd44 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Aura_of_earth_vulnerability/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Aura_of_earth_vulnerability/name.txt b/Text/Game/Creatures/Creature_abilities/Aura_of_earth_vulnerability/name.txt new file mode 100644 index 00000000..5c466dec Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Aura_of_earth_vulnerability/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Aura_of_fire_vulnerability/description.txt b/Text/Game/Creatures/Creature_abilities/Aura_of_fire_vulnerability/description.txt new file mode 100644 index 00000000..4d64f3bf Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Aura_of_fire_vulnerability/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Aura_of_fire_vulnerability/name.txt b/Text/Game/Creatures/Creature_abilities/Aura_of_fire_vulnerability/name.txt new file mode 100644 index 00000000..7e12d133 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Aura_of_fire_vulnerability/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Aura_of_ice_vulnerability/description.txt b/Text/Game/Creatures/Creature_abilities/Aura_of_ice_vulnerability/description.txt new file mode 100644 index 00000000..99605676 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Aura_of_ice_vulnerability/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Aura_of_ice_vulnerability/name.txt b/Text/Game/Creatures/Creature_abilities/Aura_of_ice_vulnerability/name.txt new file mode 100644 index 00000000..43f957eb Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Aura_of_ice_vulnerability/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Aura_of_lightning_vulnerability/description.txt b/Text/Game/Creatures/Creature_abilities/Aura_of_lightning_vulnerability/description.txt new file mode 100644 index 00000000..ca442504 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Aura_of_lightning_vulnerability/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Aura_of_lightning_vulnerability/name.txt b/Text/Game/Creatures/Creature_abilities/Aura_of_lightning_vulnerability/name.txt new file mode 100644 index 00000000..a58e18f6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Aura_of_lightning_vulnerability/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Aura_of_magic_resistance/Aura_of_magic_resistance_desc.txt b/Text/Game/Creatures/Creature_abilities/Aura_of_magic_resistance/Aura_of_magic_resistance_desc.txt new file mode 100644 index 00000000..0724f16f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Aura_of_magic_resistance/Aura_of_magic_resistance_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Aura_of_magic_resistance/Aura_of_magic_resistance_name.txt b/Text/Game/Creatures/Creature_abilities/Aura_of_magic_resistance/Aura_of_magic_resistance_name.txt new file mode 100644 index 00000000..799d7857 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Aura_of_magic_resistance/Aura_of_magic_resistance_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Avenging_flame/Description.txt b/Text/Game/Creatures/Creature_abilities/Avenging_flame/Description.txt new file mode 100644 index 00000000..5d591ec5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Avenging_flame/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Avenging_flame/Name.txt b/Text/Game/Creatures/Creature_abilities/Avenging_flame/Name.txt new file mode 100644 index 00000000..e00a0a5a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Avenging_flame/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Axe_of_slaughter/description.txt b/Text/Game/Creatures/Creature_abilities/Axe_of_slaughter/description.txt new file mode 100644 index 00000000..418ce0e2 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Axe_of_slaughter/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Axe_of_slaughter/name.txt b/Text/Game/Creatures/Creature_abilities/Axe_of_slaughter/name.txt new file mode 100644 index 00000000..6ab003f8 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Axe_of_slaughter/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Balor_summoning/Balor_summoning_desc.txt b/Text/Game/Creatures/Creature_abilities/Balor_summoning/Balor_summoning_desc.txt new file mode 100644 index 00000000..e9757589 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Balor_summoning/Balor_summoning_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Balor_summoning/Balor_summoning_name.txt b/Text/Game/Creatures/Creature_abilities/Balor_summoning/Balor_summoning_name.txt new file mode 100644 index 00000000..2d4d5bcd Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Balor_summoning/Balor_summoning_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Bash/Bash_desc.txt b/Text/Game/Creatures/Creature_abilities/Bash/Bash_desc.txt new file mode 100644 index 00000000..95b642b8 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Bash/Bash_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Bash/Bash_name.txt b/Text/Game/Creatures/Creature_abilities/Bash/Bash_name.txt new file mode 100644 index 00000000..d7e2320f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Bash/Bash_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Battle_bear/Description.txt b/Text/Game/Creatures/Creature_abilities/Battle_bear/Description.txt new file mode 100644 index 00000000..23969a1d Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Battle_bear/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Battle_bear/Namet.txt b/Text/Game/Creatures/Creature_abilities/Battle_bear/Namet.txt new file mode 100644 index 00000000..7e70fd1a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Battle_bear/Namet.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Battle_dive/Battle_dive_desc.txt b/Text/Game/Creatures/Creature_abilities/Battle_dive/Battle_dive_desc.txt new file mode 100644 index 00000000..6b117b69 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Battle_dive/Battle_dive_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Battle_dive/Battle_dive_name.txt b/Text/Game/Creatures/Creature_abilities/Battle_dive/Battle_dive_name.txt new file mode 100644 index 00000000..4547f147 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Battle_dive/Battle_dive_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Battle_frenzy/description.txt b/Text/Game/Creatures/Creature_abilities/Battle_frenzy/description.txt new file mode 100644 index 00000000..963fc714 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Battle_frenzy/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Battle_frenzy/name.txt b/Text/Game/Creatures/Creature_abilities/Battle_frenzy/name.txt new file mode 100644 index 00000000..2ddd14f4 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Battle_frenzy/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Battle_rage/Description.txt b/Text/Game/Creatures/Creature_abilities/Battle_rage/Description.txt new file mode 100644 index 00000000..8c9f84f5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Battle_rage/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Battle_rage/Name.txt b/Text/Game/Creatures/Creature_abilities/Battle_rage/Name.txt new file mode 100644 index 00000000..88981a3c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Battle_rage/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/BearRoar/Description.txt b/Text/Game/Creatures/Creature_abilities/BearRoar/Description.txt new file mode 100644 index 00000000..ec7e7fbf Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/BearRoar/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/BearRoar/Name.txt b/Text/Game/Creatures/Creature_abilities/BearRoar/Name.txt new file mode 100644 index 00000000..7e70fd1a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/BearRoar/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Berserker_Rage/Berserker_Rage_desc.txt b/Text/Game/Creatures/Creature_abilities/Berserker_Rage/Berserker_Rage_desc.txt new file mode 100644 index 00000000..973b159e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Berserker_Rage/Berserker_Rage_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Berserker_Rage/Berserker_Rage_name.txt b/Text/Game/Creatures/Creature_abilities/Berserker_Rage/Berserker_Rage_name.txt new file mode 100644 index 00000000..ebc76bbb Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Berserker_Rage/Berserker_Rage_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Blade_Barrier/Blade_barrier_desc.txt b/Text/Game/Creatures/Creature_abilities/Blade_Barrier/Blade_barrier_desc.txt new file mode 100644 index 00000000..82f70339 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Blade_Barrier/Blade_barrier_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Blade_Barrier/Blade_barrier_name.txt b/Text/Game/Creatures/Creature_abilities/Blade_Barrier/Blade_barrier_name.txt new file mode 100644 index 00000000..600377d4 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Blade_Barrier/Blade_barrier_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Blinding_attack/Blinding_attack_desc.txt b/Text/Game/Creatures/Creature_abilities/Blinding_attack/Blinding_attack_desc.txt new file mode 100644 index 00000000..e2d0ba6a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Blinding_attack/Blinding_attack_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Blinding_attack/Blinding_attack_name.txt b/Text/Game/Creatures/Creature_abilities/Blinding_attack/Blinding_attack_name.txt new file mode 100644 index 00000000..b95edc63 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Blinding_attack/Blinding_attack_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Bond_of_light/Description.txt b/Text/Game/Creatures/Creature_abilities/Bond_of_light/Description.txt new file mode 100644 index 00000000..430e28c2 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Bond_of_light/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Bond_of_light/Name.txt b/Text/Game/Creatures/Creature_abilities/Bond_of_light/Name.txt new file mode 100644 index 00000000..82d405f6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Bond_of_light/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Bravery/Bravery_desc.txt b/Text/Game/Creatures/Creature_abilities/Bravery/Bravery_desc.txt new file mode 100644 index 00000000..a06a8090 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Bravery/Bravery_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Bravery/Bravery_name.txt b/Text/Game/Creatures/Creature_abilities/Bravery/Bravery_name.txt new file mode 100644 index 00000000..eccf768f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Bravery/Bravery_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Brutality/description.txt b/Text/Game/Creatures/Creature_abilities/Brutality/description.txt new file mode 100644 index 00000000..1513ec83 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Brutality/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Brutality/name.txt b/Text/Game/Creatures/Creature_abilities/Brutality/name.txt new file mode 100644 index 00000000..6ea50551 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Brutality/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Call_lightning/Call_lightning_desc.txt b/Text/Game/Creatures/Creature_abilities/Call_lightning/Call_lightning_desc.txt new file mode 100644 index 00000000..6cfc60b5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Call_lightning/Call_lightning_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Call_lightning/Call_lightning_name.txt b/Text/Game/Creatures/Creature_abilities/Call_lightning/Call_lightning_name.txt new file mode 100644 index 00000000..1a258cf6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Call_lightning/Call_lightning_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Caster/Caster_desc.txt b/Text/Game/Creatures/Creature_abilities/Caster/Caster_desc.txt new file mode 100644 index 00000000..5108c369 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Caster/Caster_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Caster/Caster_name.txt b/Text/Game/Creatures/Creature_abilities/Caster/Caster_name.txt new file mode 100644 index 00000000..7c8c9383 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Caster/Caster_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Chain_shot/Chain_shot_desc.txt b/Text/Game/Creatures/Creature_abilities/Chain_shot/Chain_shot_desc.txt new file mode 100644 index 00000000..20988dc3 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Chain_shot/Chain_shot_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Chain_shot/Chain_shot_name.txt b/Text/Game/Creatures/Creature_abilities/Chain_shot/Chain_shot_name.txt new file mode 100644 index 00000000..9782306e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Chain_shot/Chain_shot_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Champion_charge/description.txt b/Text/Game/Creatures/Creature_abilities/Champion_charge/description.txt new file mode 100644 index 00000000..6bcf1b48 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Champion_charge/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Champion_charge/name.txt b/Text/Game/Creatures/Creature_abilities/Champion_charge/name.txt new file mode 100644 index 00000000..8e377345 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Champion_charge/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Cleave/description.txt b/Text/Game/Creatures/Creature_abilities/Cleave/description.txt new file mode 100644 index 00000000..5bd30d37 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Cleave/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Cleave/name.txt b/Text/Game/Creatures/Creature_abilities/Cleave/name.txt new file mode 100644 index 00000000..da92e2e6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Cleave/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Count/Count_desc.txt b/Text/Game/Creatures/Creature_abilities/Count/Count_desc.txt new file mode 100644 index 00000000..48b734be Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Count/Count_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Count/Count_name.txt b/Text/Game/Creatures/Creature_abilities/Count/Count_name.txt new file mode 100644 index 00000000..5966d3ac Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Count/Count_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Cowardice/description.txt b/Text/Game/Creatures/Creature_abilities/Cowardice/description.txt new file mode 100644 index 00000000..65ebf36c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Cowardice/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Cowardice/name.txt b/Text/Game/Creatures/Creature_abilities/Cowardice/name.txt new file mode 100644 index 00000000..0aebfe62 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Cowardice/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Cross_attack/Cross_attack_desc.txt b/Text/Game/Creatures/Creature_abilities/Cross_attack/Cross_attack_desc.txt new file mode 100644 index 00000000..d67dc87a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Cross_attack/Cross_attack_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Cross_attack/Cross_attack_name.txt b/Text/Game/Creatures/Creature_abilities/Cross_attack/Cross_attack_name.txt new file mode 100644 index 00000000..5fac0d3b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Cross_attack/Cross_attack_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Crushing_blow/description.txt b/Text/Game/Creatures/Creature_abilities/Crushing_blow/description.txt new file mode 100644 index 00000000..b8603122 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Crushing_blow/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Crushing_blow/name.txt b/Text/Game/Creatures/Creature_abilities/Crushing_blow/name.txt new file mode 100644 index 00000000..f8cbe6c6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Crushing_blow/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Crystal_scale/Crystal_scale_desc.txt b/Text/Game/Creatures/Creature_abilities/Crystal_scale/Crystal_scale_desc.txt new file mode 100644 index 00000000..7a1ce22c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Crystal_scale/Crystal_scale_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Crystal_scale/Crystal_scale_name.txt b/Text/Game/Creatures/Creature_abilities/Crystal_scale/Crystal_scale_name.txt new file mode 100644 index 00000000..5e91db4a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Crystal_scale/Crystal_scale_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Cursing_attack/Cursin_attack_desc.txt b/Text/Game/Creatures/Creature_abilities/Cursing_attack/Cursin_attack_desc.txt new file mode 100644 index 00000000..bf025644 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Cursing_attack/Cursin_attack_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Cursing_attack/Cursing_attack_name.txt b/Text/Game/Creatures/Creature_abilities/Cursing_attack/Cursing_attack_name.txt new file mode 100644 index 00000000..cd6ff8c8 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Cursing_attack/Cursing_attack_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Dash/Dash_desc.txt b/Text/Game/Creatures/Creature_abilities/Dash/Dash_desc.txt new file mode 100644 index 00000000..42b8683c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Dash/Dash_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Dash/Dash_name.txt b/Text/Game/Creatures/Creature_abilities/Dash/Dash_name.txt new file mode 100644 index 00000000..4aa7952c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Dash/Dash_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Deadly_strike/Deadly_strike_desc.txt b/Text/Game/Creatures/Creature_abilities/Deadly_strike/Deadly_strike_desc.txt new file mode 100644 index 00000000..5ae4eae7 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Deadly_strike/Deadly_strike_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Deadly_strike/Deadly_strike_name.txt b/Text/Game/Creatures/Creature_abilities/Deadly_strike/Deadly_strike_name.txt new file mode 100644 index 00000000..d9341bf1 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Deadly_strike/Deadly_strike_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/DeathWail/description.txt b/Text/Game/Creatures/Creature_abilities/DeathWail/description.txt new file mode 100644 index 00000000..9443416f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/DeathWail/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/DeathWail/name.txt b/Text/Game/Creatures/Creature_abilities/DeathWail/name.txt new file mode 100644 index 00000000..56c0d383 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/DeathWail/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Death_cloud/Death_cloud_desc.txt b/Text/Game/Creatures/Creature_abilities/Death_cloud/Death_cloud_desc.txt new file mode 100644 index 00000000..6b746074 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Death_cloud/Death_cloud_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Death_cloud/Death_cloud_name.txt b/Text/Game/Creatures/Creature_abilities/Death_cloud/Death_cloud_name.txt new file mode 100644 index 00000000..aabc81e8 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Death_cloud/Death_cloud_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Defile_magic/description.txt b/Text/Game/Creatures/Creature_abilities/Defile_magic/description.txt new file mode 100644 index 00000000..412ab6d1 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Defile_magic/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Defile_magic/name.txt b/Text/Game/Creatures/Creature_abilities/Defile_magic/name.txt new file mode 100644 index 00000000..dbd86f0d Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Defile_magic/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Demon_raged/description.txt b/Text/Game/Creatures/Creature_abilities/Demon_raged/description.txt new file mode 100644 index 00000000..46803b5a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Demon_raged/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Demon_raged/name.txt b/Text/Game/Creatures/Creature_abilities/Demon_raged/name.txt new file mode 100644 index 00000000..75c993b4 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Demon_raged/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Demonic/Demonic_desc.txt b/Text/Game/Creatures/Creature_abilities/Demonic/Demonic_desc.txt new file mode 100644 index 00000000..af4cd13e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Demonic/Demonic_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Demonic/Demonic_name.txt b/Text/Game/Creatures/Creature_abilities/Demonic/Demonic_name.txt new file mode 100644 index 00000000..44cb6024 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Demonic/Demonic_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/DestructionMagicMagnetism/Description.txt b/Text/Game/Creatures/Creature_abilities/DestructionMagicMagnetism/Description.txt new file mode 100644 index 00000000..5d45f771 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/DestructionMagicMagnetism/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/DestructionMagicMagnetism/Name.txt b/Text/Game/Creatures/Creature_abilities/DestructionMagicMagnetism/Name.txt new file mode 100644 index 00000000..69ac0936 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/DestructionMagicMagnetism/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Double_attack/Double_attack_desc.txt b/Text/Game/Creatures/Creature_abilities/Double_attack/Double_attack_desc.txt new file mode 100644 index 00000000..4d28985b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Double_attack/Double_attack_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Double_attack/Double_attack_name.txt b/Text/Game/Creatures/Creature_abilities/Double_attack/Double_attack_name.txt new file mode 100644 index 00000000..8f3217e9 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Double_attack/Double_attack_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Eldritch_aura/description.txt b/Text/Game/Creatures/Creature_abilities/Eldritch_aura/description.txt new file mode 100644 index 00000000..6d4fe98c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Eldritch_aura/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Eldritch_aura/name.txt b/Text/Game/Creatures/Creature_abilities/Eldritch_aura/name.txt new file mode 100644 index 00000000..c6355eb1 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Eldritch_aura/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Elemental/Elemental_desc.txt b/Text/Game/Creatures/Creature_abilities/Elemental/Elemental_desc.txt new file mode 100644 index 00000000..ada1b821 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Elemental/Elemental_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Elemental/Elemental_name.txt b/Text/Game/Creatures/Creature_abilities/Elemental/Elemental_name.txt new file mode 100644 index 00000000..8b6c3d3b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Elemental/Elemental_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Elves_double_shot/Elves_double_shot_desc.txt b/Text/Game/Creatures/Creature_abilities/Elves_double_shot/Elves_double_shot_desc.txt new file mode 100644 index 00000000..bb8e26c9 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Elves_double_shot/Elves_double_shot_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Elves_double_shot/Elves_double_shot_name.txt b/Text/Game/Creatures/Creature_abilities/Elves_double_shot/Elves_double_shot_name.txt new file mode 100644 index 00000000..54e25976 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Elves_double_shot/Elves_double_shot_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/EnchantedObsidian/Description.txt b/Text/Game/Creatures/Creature_abilities/EnchantedObsidian/Description.txt new file mode 100644 index 00000000..41d772d5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/EnchantedObsidian/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/EnchantedObsidian/Name.txt b/Text/Game/Creatures/Creature_abilities/EnchantedObsidian/Name.txt new file mode 100644 index 00000000..c5fd2319 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/EnchantedObsidian/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Energy_channel/Energy_channel_desc.txt b/Text/Game/Creatures/Creature_abilities/Energy_channel/Energy_channel_desc.txt new file mode 100644 index 00000000..3b6861a7 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Energy_channel/Energy_channel_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Energy_channel/Energy_channel_name.txt b/Text/Game/Creatures/Creature_abilities/Energy_channel/Energy_channel_name.txt new file mode 100644 index 00000000..7c267bb3 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Energy_channel/Energy_channel_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Enraged/Enraged_desc.txt b/Text/Game/Creatures/Creature_abilities/Enraged/Enraged_desc.txt new file mode 100644 index 00000000..5b8a0af5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Enraged/Enraged_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Enraged/Enraged_name.txt b/Text/Game/Creatures/Creature_abilities/Enraged/Enraged_name.txt new file mode 100644 index 00000000..aba207ae Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Enraged/Enraged_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Entangling_roots/Entangling_roots_desc.txt b/Text/Game/Creatures/Creature_abilities/Entangling_roots/Entangling_roots_desc.txt new file mode 100644 index 00000000..6c2fbd60 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Entangling_roots/Entangling_roots_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Entangling_roots/Entangling_roots_name.txt b/Text/Game/Creatures/Creature_abilities/Entangling_roots/Entangling_roots_name.txt new file mode 100644 index 00000000..9500bedd Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Entangling_roots/Entangling_roots_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Evil_eye/description.txt b/Text/Game/Creatures/Creature_abilities/Evil_eye/description.txt new file mode 100644 index 00000000..4289cced Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Evil_eye/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Evil_eye/name.txt b/Text/Game/Creatures/Creature_abilities/Evil_eye/name.txt new file mode 100644 index 00000000..0c85206b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Evil_eye/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Explosion/Explosion_desc.txt b/Text/Game/Creatures/Creature_abilities/Explosion/Explosion_desc.txt new file mode 100644 index 00000000..2f8c41e5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Explosion/Explosion_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Explosion/Explosion_name.txt b/Text/Game/Creatures/Creature_abilities/Explosion/Explosion_name.txt new file mode 100644 index 00000000..f7d4747f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Explosion/Explosion_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fast_attack/description.txt b/Text/Game/Creatures/Creature_abilities/Fast_attack/description.txt new file mode 100644 index 00000000..1fcda16b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fast_attack/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fast_attack/name.txt b/Text/Game/Creatures/Creature_abilities/Fast_attack/name.txt new file mode 100644 index 00000000..97b3b821 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fast_attack/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fear/Fear_desc.txt b/Text/Game/Creatures/Creature_abilities/Fear/Fear_desc.txt new file mode 100644 index 00000000..4de1337d Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fear/Fear_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fear/Fear_name.txt b/Text/Game/Creatures/Creature_abilities/Fear/Fear_name.txt new file mode 100644 index 00000000..059e7a5b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fear/Fear_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fierce_retaliation/description.txt b/Text/Game/Creatures/Creature_abilities/Fierce_retaliation/description.txt new file mode 100644 index 00000000..0c61db21 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fierce_retaliation/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fierce_retaliation/name.txt b/Text/Game/Creatures/Creature_abilities/Fierce_retaliation/name.txt new file mode 100644 index 00000000..8237cf25 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fierce_retaliation/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fire_breath/Fire_breath_desc.txt b/Text/Game/Creatures/Creature_abilities/Fire_breath/Fire_breath_desc.txt new file mode 100644 index 00000000..e093a400 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fire_breath/Fire_breath_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fire_breath/Fire_breath_name.txt b/Text/Game/Creatures/Creature_abilities/Fire_breath/Fire_breath_name.txt new file mode 100644 index 00000000..5cc4f4fb Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fire_breath/Fire_breath_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fire_proof_50/description.txt b/Text/Game/Creatures/Creature_abilities/Fire_proof_50/description.txt new file mode 100644 index 00000000..a61518c5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fire_proof_50/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fire_proof_50/name.txt b/Text/Game/Creatures/Creature_abilities/Fire_proof_50/name.txt new file mode 100644 index 00000000..4803f156 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fire_proof_50/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fire_shield/Fire_shield_desc.txt b/Text/Game/Creatures/Creature_abilities/Fire_shield/Fire_shield_desc.txt new file mode 100644 index 00000000..d88f9a24 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fire_shield/Fire_shield_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fire_shield/Fire_shield_name.txt b/Text/Game/Creatures/Creature_abilities/Fire_shield/Fire_shield_name.txt new file mode 100644 index 00000000..9fc00f4c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fire_shield/Fire_shield_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Firestorm/Description.txt b/Text/Game/Creatures/Creature_abilities/Firestorm/Description.txt new file mode 100644 index 00000000..1943a5ff Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Firestorm/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Firestorm/Name.txt b/Text/Game/Creatures/Creature_abilities/Firestorm/Name.txt new file mode 100644 index 00000000..b3ad6309 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Firestorm/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Flamestrike/Description.txt b/Text/Game/Creatures/Creature_abilities/Flamestrike/Description.txt new file mode 100644 index 00000000..85150ff0 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Flamestrike/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Flamestrike/Name.txt b/Text/Game/Creatures/Creature_abilities/Flamestrike/Name.txt new file mode 100644 index 00000000..25fdc294 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Flamestrike/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Flesh_and_blood/Flesh_and_blood_desc.txt b/Text/Game/Creatures/Creature_abilities/Flesh_and_blood/Flesh_and_blood_desc.txt new file mode 100644 index 00000000..57535088 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Flesh_and_blood/Flesh_and_blood_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Flesh_and_blood/Flesh_and_blood_name.txt b/Text/Game/Creatures/Creature_abilities/Flesh_and_blood/Flesh_and_blood_name.txt new file mode 100644 index 00000000..38a0bd07 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Flesh_and_blood/Flesh_and_blood_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Flyer/Flyer_desc.txt b/Text/Game/Creatures/Creature_abilities/Flyer/Flyer_desc.txt new file mode 100644 index 00000000..261bda75 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Flyer/Flyer_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Flyer/Flyer_name.txt b/Text/Game/Creatures/Creature_abilities/Flyer/Flyer_name.txt new file mode 100644 index 00000000..cb05a46a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Flyer/Flyer_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fright_aura/Fright_aura_desc.txt b/Text/Game/Creatures/Creature_abilities/Fright_aura/Fright_aura_desc.txt new file mode 100644 index 00000000..ede23850 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fright_aura/Fright_aura_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Fright_aura/Fright_aura_name.txt b/Text/Game/Creatures/Creature_abilities/Fright_aura/Fright_aura_name.txt new file mode 100644 index 00000000..784e3be9 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Fright_aura/Fright_aura_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Frightful_presence/Frightful_precence_name.txt b/Text/Game/Creatures/Creature_abilities/Frightful_presence/Frightful_precence_name.txt new file mode 100644 index 00000000..b6a18c59 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Frightful_presence/Frightful_precence_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Frightful_presence/Frightful_presence_desc.txt b/Text/Game/Creatures/Creature_abilities/Frightful_presence/Frightful_presence_desc.txt new file mode 100644 index 00000000..465cdc2c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Frightful_presence/Frightful_presence_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Goblin_thrower/description.txt b/Text/Game/Creatures/Creature_abilities/Goblin_thrower/description.txt new file mode 100644 index 00000000..986b807e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Goblin_thrower/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Goblin_thrower/name.txt b/Text/Game/Creatures/Creature_abilities/Goblin_thrower/name.txt new file mode 100644 index 00000000..1ab7834b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Goblin_thrower/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Harm_touch/Harm_touch_desc.txt b/Text/Game/Creatures/Creature_abilities/Harm_touch/Harm_touch_desc.txt new file mode 100644 index 00000000..42fa4315 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Harm_touch/Harm_touch_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Harm_touch/Harm_touch_name.txt b/Text/Game/Creatures/Creature_abilities/Harm_touch/Harm_touch_name.txt new file mode 100644 index 00000000..449df081 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Harm_touch/Harm_touch_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Harpoon_strike/Description.txt b/Text/Game/Creatures/Creature_abilities/Harpoon_strike/Description.txt new file mode 100644 index 00000000..2d3eacb5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Harpoon_strike/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Harpoon_strike/Name.txt b/Text/Game/Creatures/Creature_abilities/Harpoon_strike/Name.txt new file mode 100644 index 00000000..5360c9af Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Harpoon_strike/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Hexing_attack/description.txt b/Text/Game/Creatures/Creature_abilities/Hexing_attack/description.txt new file mode 100644 index 00000000..af85814b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Hexing_attack/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Hexing_attack/name.txt b/Text/Game/Creatures/Creature_abilities/Hexing_attack/name.txt new file mode 100644 index 00000000..f15e219e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Hexing_attack/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Hold_ground/Description.txt b/Text/Game/Creatures/Creature_abilities/Hold_ground/Description.txt new file mode 100644 index 00000000..7ddf1e80 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Hold_ground/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Hold_ground/Name.txt b/Text/Game/Creatures/Creature_abilities/Hold_ground/Name.txt new file mode 100644 index 00000000..7d1179f2 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Hold_ground/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Horror_of_death/Description.txt b/Text/Game/Creatures/Creature_abilities/Horror_of_death/Description.txt new file mode 100644 index 00000000..05bf58fb Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Horror_of_death/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Horror_of_death/Name.txt b/Text/Game/Creatures/Creature_abilities/Horror_of_death/Name.txt new file mode 100644 index 00000000..df367984 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Horror_of_death/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Howl/description.txt b/Text/Game/Creatures/Creature_abilities/Howl/description.txt new file mode 100644 index 00000000..279fe0a3 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Howl/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Howl/name.txt b/Text/Game/Creatures/Creature_abilities/Howl/name.txt new file mode 100644 index 00000000..0ef6a358 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Howl/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_air/Immunity_to_air_desc.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_air/Immunity_to_air_desc.txt new file mode 100644 index 00000000..8b656248 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_air/Immunity_to_air_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_air/Immunity_to_air_name.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_air/Immunity_to_air_name.txt new file mode 100644 index 00000000..03b46d0e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_air/Immunity_to_air_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_berserk/Description.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_berserk/Description.txt new file mode 100644 index 00000000..fcd267a2 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_berserk/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_berserk/Name.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_berserk/Name.txt new file mode 100644 index 00000000..27994565 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_berserk/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_blind/Immunity_to_blind_desc.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_blind/Immunity_to_blind_desc.txt new file mode 100644 index 00000000..4bca53f5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_blind/Immunity_to_blind_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_blind/Immunity_to_blind_name.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_blind/Immunity_to_blind_name.txt new file mode 100644 index 00000000..0a2c34f0 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_blind/Immunity_to_blind_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_curse/Description.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_curse/Description.txt new file mode 100644 index 00000000..75f94058 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_curse/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_curse/Name.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_curse/Name.txt new file mode 100644 index 00000000..05c66119 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_curse/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_earth/Immunity_to_earth_desc.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_earth/Immunity_to_earth_desc.txt new file mode 100644 index 00000000..a235c557 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_earth/Immunity_to_earth_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_earth/Immunity_to_earth_name.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_earth/Immunity_to_earth_name.txt new file mode 100644 index 00000000..ac7a3511 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_earth/Immunity_to_earth_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_fire/Immunity_to_fire_desc.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_fire/Immunity_to_fire_desc.txt new file mode 100644 index 00000000..a96900e1 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_fire/Immunity_to_fire_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_fire/Immunity_to_fire_name.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_fire/Immunity_to_fire_name.txt new file mode 100644 index 00000000..aa13520e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_fire/Immunity_to_fire_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_hypnotize/Description.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_hypnotize/Description.txt new file mode 100644 index 00000000..e05718c1 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_hypnotize/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_hypnotize/Name.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_hypnotize/Name.txt new file mode 100644 index 00000000..eea3f920 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_hypnotize/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_lightning/Immunity_to_lightning_desc.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_lightning/Immunity_to_lightning_desc.txt new file mode 100644 index 00000000..3ef4edd7 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_lightning/Immunity_to_lightning_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_lightning/Immunity_to_lightning_name.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_lightning/Immunity_to_lightning_name.txt new file mode 100644 index 00000000..9aa09909 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_lightning/Immunity_to_lightning_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_magic/Immunity_to_magic_desc.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_magic/Immunity_to_magic_desc.txt new file mode 100644 index 00000000..6eaee223 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_magic/Immunity_to_magic_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_magic/Immunity_to_magic_name.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_magic/Immunity_to_magic_name.txt new file mode 100644 index 00000000..a1f93960 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_magic/Immunity_to_magic_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_mind_control/Immunity_to_mind_control_desc.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_mind_control/Immunity_to_mind_control_desc.txt new file mode 100644 index 00000000..a6f40cf6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_mind_control/Immunity_to_mind_control_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_mind_control/Immunity_to_mind_control_name.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_mind_control/Immunity_to_mind_control_name.txt new file mode 100644 index 00000000..e0f24b1d Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_mind_control/Immunity_to_mind_control_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_slow/Immunity_to_slow_desc.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_slow/Immunity_to_slow_desc.txt new file mode 100644 index 00000000..e89ecd86 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_slow/Immunity_to_slow_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_slow/Immunity_to_slow_name.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_slow/Immunity_to_slow_name.txt new file mode 100644 index 00000000..f06fdb17 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_slow/Immunity_to_slow_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_water/Immunity_to_water_desc.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_water/Immunity_to_water_desc.txt new file mode 100644 index 00000000..5475edf1 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_water/Immunity_to_water_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Immunity_to_water/Immunity_to_water_name.txt b/Text/Game/Creatures/Creature_abilities/Immunity_to_water/Immunity_to_water_name.txt new file mode 100644 index 00000000..c61db5f2 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Immunity_to_water/Immunity_to_water_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Incinerate/description.txt b/Text/Game/Creatures/Creature_abilities/Incinerate/description.txt new file mode 100644 index 00000000..14971ce6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Incinerate/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Incinerate/name.txt b/Text/Game/Creatures/Creature_abilities/Incinerate/name.txt new file mode 100644 index 00000000..fea735e4 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Incinerate/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Incorporeal/Incorporeal_desc.txt b/Text/Game/Creatures/Creature_abilities/Incorporeal/Incorporeal_desc.txt new file mode 100644 index 00000000..cd3eb237 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Incorporeal/Incorporeal_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Incorporeal/Incorporeal_name.txt b/Text/Game/Creatures/Creature_abilities/Incorporeal/Incorporeal_name.txt new file mode 100644 index 00000000..f3d9380a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Incorporeal/Incorporeal_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Inferno/Leap/Description.txt b/Text/Game/Creatures/Creature_abilities/Inferno/Leap/Description.txt new file mode 100644 index 00000000..c0c3b47f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Inferno/Leap/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Invisibility/Description.txt b/Text/Game/Creatures/Creature_abilities/Invisibility/Description.txt new file mode 100644 index 00000000..4c3bacc2 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Invisibility/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Invisibility/Name.txt b/Text/Game/Creatures/Creature_abilities/Invisibility/Name.txt new file mode 100644 index 00000000..16fd6be0 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Invisibility/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Jousting/Jousting_desc.txt b/Text/Game/Creatures/Creature_abilities/Jousting/Jousting_desc.txt new file mode 100644 index 00000000..a934fe73 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Jousting/Jousting_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Jousting/Jousting_name.txt b/Text/Game/Creatures/Creature_abilities/Jousting/Jousting_name.txt new file mode 100644 index 00000000..ba5591ed Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Jousting/Jousting_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Large_creature/Description.txt b/Text/Game/Creatures/Creature_abilities/Large_creature/Description.txt new file mode 100644 index 00000000..e6f2c3b3 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Large_creature/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Large_creature/Name.txt b/Text/Game/Creatures/Creature_abilities/Large_creature/Name.txt new file mode 100644 index 00000000..584f522f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Large_creature/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Large_shield/Large_shield_desc.txt b/Text/Game/Creatures/Creature_abilities/Large_shield/Large_shield_desc.txt new file mode 100644 index 00000000..37b8b129 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Large_shield/Large_shield_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Large_shield/Large_shield_name.txt b/Text/Game/Creatures/Creature_abilities/Large_shield/Large_shield_name.txt new file mode 100644 index 00000000..ca389035 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Large_shield/Large_shield_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Lay_Hands/description.txt b/Text/Game/Creatures/Creature_abilities/Lay_Hands/description.txt new file mode 100644 index 00000000..0d02d633 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Lay_Hands/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Lay_Hands/name.txt b/Text/Game/Creatures/Creature_abilities/Lay_Hands/name.txt new file mode 100644 index 00000000..5966d3ac Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Lay_Hands/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Life_drain/Life_drain_desct.txt b/Text/Game/Creatures/Creature_abilities/Life_drain/Life_drain_desct.txt new file mode 100644 index 00000000..27c28a89 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Life_drain/Life_drain_desct.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Life_drain/Life_drain_name.txt b/Text/Game/Creatures/Creature_abilities/Life_drain/Life_drain_name.txt new file mode 100644 index 00000000..b964c744 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Life_drain/Life_drain_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Lightning_breath/description.txt b/Text/Game/Creatures/Creature_abilities/Lightning_breath/description.txt new file mode 100644 index 00000000..735d4568 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Lightning_breath/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Lightning_breath/name.txt b/Text/Game/Creatures/Creature_abilities/Lightning_breath/name.txt new file mode 100644 index 00000000..e98da27c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Lightning_breath/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Liquid_flame/Description.txt b/Text/Game/Creatures/Creature_abilities/Liquid_flame/Description.txt new file mode 100644 index 00000000..a97b4500 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Liquid_flame/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Liquid_flame/Name.txt b/Text/Game/Creatures/Creature_abilities/Liquid_flame/Name.txt new file mode 100644 index 00000000..1ae3d659 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Liquid_flame/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Lizard_bite_name/Lizard_bite_desc.txt b/Text/Game/Creatures/Creature_abilities/Lizard_bite_name/Lizard_bite_desc.txt new file mode 100644 index 00000000..01807199 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Lizard_bite_name/Lizard_bite_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Lizard_bite_name/Lizard_bite_name.txt b/Text/Game/Creatures/Creature_abilities/Lizard_bite_name/Lizard_bite_name.txt new file mode 100644 index 00000000..50749d97 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Lizard_bite_name/Lizard_bite_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Luck_gambler/Description.txt b/Text/Game/Creatures/Creature_abilities/Luck_gambler/Description.txt new file mode 100644 index 00000000..5008512f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Luck_gambler/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Luck_gambler/Name.txt b/Text/Game/Creatures/Creature_abilities/Luck_gambler/Name.txt new file mode 100644 index 00000000..697a869f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Luck_gambler/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Magic_attack/Magic_attack_desc.txt b/Text/Game/Creatures/Creature_abilities/Magic_attack/Magic_attack_desc.txt new file mode 100644 index 00000000..7eed547f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Magic_attack/Magic_attack_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Magic_attack/Magic_attack_name.txt b/Text/Game/Creatures/Creature_abilities/Magic_attack/Magic_attack_name.txt new file mode 100644 index 00000000..00f56982 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Magic_attack/Magic_attack_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Magic_proof_25/description.txt b/Text/Game/Creatures/Creature_abilities/Magic_proof_25/description.txt new file mode 100644 index 00000000..ace58bf6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Magic_proof_25/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Magic_proof_25/name.txt b/Text/Game/Creatures/Creature_abilities/Magic_proof_25/name.txt new file mode 100644 index 00000000..d650ccf6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Magic_proof_25/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Magic_proof_50/Magic_proof50_desc.txt b/Text/Game/Creatures/Creature_abilities/Magic_proof_50/Magic_proof50_desc.txt new file mode 100644 index 00000000..a051ca79 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Magic_proof_50/Magic_proof50_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Magic_proof_50/Magic_proof50_name.txt b/Text/Game/Creatures/Creature_abilities/Magic_proof_50/Magic_proof50_name.txt new file mode 100644 index 00000000..af4e3441 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Magic_proof_50/Magic_proof50_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Magic_proof_75/Magic_proof75_desc.txt b/Text/Game/Creatures/Creature_abilities/Magic_proof_75/Magic_proof75_desc.txt new file mode 100644 index 00000000..6b100ed6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Magic_proof_75/Magic_proof75_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Magic_proof_75/Magic_proof75_name.txt b/Text/Game/Creatures/Creature_abilities/Magic_proof_75/Magic_proof75_name.txt new file mode 100644 index 00000000..646ca2f1 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Magic_proof_75/Magic_proof75_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Magma_shield/Magma_shield_desc.txt b/Text/Game/Creatures/Creature_abilities/Magma_shield/Magma_shield_desc.txt new file mode 100644 index 00000000..810ba76e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Magma_shield/Magma_shield_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Magma_shield/Magma_shield_name.txt b/Text/Game/Creatures/Creature_abilities/Magma_shield/Magma_shield_name.txt new file mode 100644 index 00000000..c7a5fcc2 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Magma_shield/Magma_shield_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Mana_destroyer/Mana_destroyer_desc.txt b/Text/Game/Creatures/Creature_abilities/Mana_destroyer/Mana_destroyer_desc.txt new file mode 100644 index 00000000..79f28016 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Mana_destroyer/Mana_destroyer_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Mana_destroyer/Mana_destroyer_name.txt b/Text/Game/Creatures/Creature_abilities/Mana_destroyer/Mana_destroyer_name.txt new file mode 100644 index 00000000..7e7febd2 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Mana_destroyer/Mana_destroyer_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Mana_drain/Mana_drain_desc.txt b/Text/Game/Creatures/Creature_abilities/Mana_drain/Mana_drain_desc.txt new file mode 100644 index 00000000..4b27a0e4 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Mana_drain/Mana_drain_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Mana_drain/Mana_drain_name.txt b/Text/Game/Creatures/Creature_abilities/Mana_drain/Mana_drain_name.txt new file mode 100644 index 00000000..a2c36c1e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Mana_drain/Mana_drain_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Mana_feed/Mana_feed_desc.txt b/Text/Game/Creatures/Creature_abilities/Mana_feed/Mana_feed_desc.txt new file mode 100644 index 00000000..226b45f5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Mana_feed/Mana_feed_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Mana_feed/Mana_feed_name.txt b/Text/Game/Creatures/Creature_abilities/Mana_feed/Mana_feed_name.txt new file mode 100644 index 00000000..12ea9cc0 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Mana_feed/Mana_feed_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Mana_stealer/Mana_stealer_desc.txt b/Text/Game/Creatures/Creature_abilities/Mana_stealer/Mana_stealer_desc.txt new file mode 100644 index 00000000..875157dd Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Mana_stealer/Mana_stealer_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Mana_stealer/Mana_stealer_name.txt b/Text/Game/Creatures/Creature_abilities/Mana_stealer/Mana_stealer_name.txt new file mode 100644 index 00000000..4bda6f28 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Mana_stealer/Mana_stealer_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Maneure/description.txt b/Text/Game/Creatures/Creature_abilities/Maneure/description.txt new file mode 100644 index 00000000..c7b025eb Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Maneure/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Maneure/name.txt b/Text/Game/Creatures/Creature_abilities/Maneure/name.txt new file mode 100644 index 00000000..20d2e6aa Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Maneure/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Mark_of_fire/Mark_of_fire_desc.txt b/Text/Game/Creatures/Creature_abilities/Mark_of_fire/Mark_of_fire_desc.txt new file mode 100644 index 00000000..a95bfea1 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Mark_of_fire/Mark_of_fire_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Mark_of_fire/Mark_of_fire_name.txt b/Text/Game/Creatures/Creature_abilities/Mark_of_fire/Mark_of_fire_name.txt new file mode 100644 index 00000000..4b9873e6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Mark_of_fire/Mark_of_fire_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Mechanical/Mechanical_desc.txt b/Text/Game/Creatures/Creature_abilities/Mechanical/Mechanical_desc.txt new file mode 100644 index 00000000..e24f8c02 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Mechanical/Mechanical_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Mechanical/Mechanical_name.txt b/Text/Game/Creatures/Creature_abilities/Mechanical/Mechanical_name.txt new file mode 100644 index 00000000..49038414 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Mechanical/Mechanical_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/No_enemy_retaliation/No_enemy_retaliation_desc.txt b/Text/Game/Creatures/Creature_abilities/No_enemy_retaliation/No_enemy_retaliation_desc.txt new file mode 100644 index 00000000..d9f86e5f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/No_enemy_retaliation/No_enemy_retaliation_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/No_enemy_retaliation/No_enemy_retaliation_name.txt b/Text/Game/Creatures/Creature_abilities/No_enemy_retaliation/No_enemy_retaliation_name.txt new file mode 100644 index 00000000..1ebfc26f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/No_enemy_retaliation/No_enemy_retaliation_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/No_melee_penalty/No_melee_penalty_desc.txt b/Text/Game/Creatures/Creature_abilities/No_melee_penalty/No_melee_penalty_desc.txt new file mode 100644 index 00000000..16a24e11 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/No_melee_penalty/No_melee_penalty_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/No_melee_penalty/No_melee_penalty_name.txt b/Text/Game/Creatures/Creature_abilities/No_melee_penalty/No_melee_penalty_name.txt new file mode 100644 index 00000000..ab8f4faa Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/No_melee_penalty/No_melee_penalty_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/No_range_penalty/No_range_penalty_desc.txt b/Text/Game/Creatures/Creature_abilities/No_range_penalty/No_range_penalty_desc.txt new file mode 100644 index 00000000..a8d65ed6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/No_range_penalty/No_range_penalty_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/No_range_penalty/No_range_penalty_name.txt b/Text/Game/Creatures/Creature_abilities/No_range_penalty/No_range_penalty_name.txt new file mode 100644 index 00000000..fabe456b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/No_range_penalty/No_range_penalty_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Order_of_the_chief/description.txt b/Text/Game/Creatures/Creature_abilities/Order_of_the_chief/description.txt new file mode 100644 index 00000000..c8c12a1e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Order_of_the_chief/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Order_of_the_chief/name.txt b/Text/Game/Creatures/Creature_abilities/Order_of_the_chief/name.txt new file mode 100644 index 00000000..c69e98d8 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Order_of_the_chief/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Pack_dive/description.txt b/Text/Game/Creatures/Creature_abilities/Pack_dive/description.txt new file mode 100644 index 00000000..dde1a52c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Pack_dive/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Pack_dive/name.txt b/Text/Game/Creatures/Creature_abilities/Pack_dive/name.txt new file mode 100644 index 00000000..46596aa8 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Pack_dive/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Pack_hunter/description.txt b/Text/Game/Creatures/Creature_abilities/Pack_hunter/description.txt new file mode 100644 index 00000000..250adb4d Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Pack_hunter/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Pack_hunter/name.txt b/Text/Game/Creatures/Creature_abilities/Pack_hunter/name.txt new file mode 100644 index 00000000..27c1c09a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Pack_hunter/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Paw_strike/Paw_strike_desc.txt b/Text/Game/Creatures/Creature_abilities/Paw_strike/Paw_strike_desc.txt new file mode 100644 index 00000000..ae7cc70f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Paw_strike/Paw_strike_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Paw_strike/Paw_strike_name.txt b/Text/Game/Creatures/Creature_abilities/Paw_strike/Paw_strike_name.txt new file mode 100644 index 00000000..4ac4409e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Paw_strike/Paw_strike_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Piercing_arrow/description.txt b/Text/Game/Creatures/Creature_abilities/Piercing_arrow/description.txt new file mode 100644 index 00000000..123c3c80 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Piercing_arrow/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Piercing_arrow/name.txt b/Text/Game/Creatures/Creature_abilities/Piercing_arrow/name.txt new file mode 100644 index 00000000..f86c5765 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Piercing_arrow/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Poisonous_attack/Poisonous_attack_desc.txt b/Text/Game/Creatures/Creature_abilities/Poisonous_attack/Poisonous_attack_desc.txt new file mode 100644 index 00000000..c63555c7 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Poisonous_attack/Poisonous_attack_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Poisonous_attack/Poisonous_attack_name.txt b/Text/Game/Creatures/Creature_abilities/Poisonous_attack/Poisonous_attack_name.txt new file mode 100644 index 00000000..53913cc6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Poisonous_attack/Poisonous_attack_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Power_feed/Description.txt b/Text/Game/Creatures/Creature_abilities/Power_feed/Description.txt new file mode 100644 index 00000000..8814c60c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Power_feed/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Power_feed/Name.txt b/Text/Game/Creatures/Creature_abilities/Power_feed/Name.txt new file mode 100644 index 00000000..9608c416 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Power_feed/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Precise_shot/Precise_shot_desc.txt b/Text/Game/Creatures/Creature_abilities/Precise_shot/Precise_shot_desc.txt new file mode 100644 index 00000000..724fdf20 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Precise_shot/Precise_shot_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Precise_shot/Precise_shot_name.txt b/Text/Game/Creatures/Creature_abilities/Precise_shot/Precise_shot_name.txt new file mode 100644 index 00000000..77c69ab2 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Precise_shot/Precise_shot_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Prepared_position/Description.txt b/Text/Game/Creatures/Creature_abilities/Prepared_position/Description.txt new file mode 100644 index 00000000..e969b2df Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Prepared_position/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Prepared_position/Name.txt b/Text/Game/Creatures/Creature_abilities/Prepared_position/Name.txt new file mode 100644 index 00000000..bad24f7a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Prepared_position/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Presence_of_the_storm/Description.txt b/Text/Game/Creatures/Creature_abilities/Presence_of_the_storm/Description.txt new file mode 100644 index 00000000..0d65569e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Presence_of_the_storm/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Presence_of_the_storm/Name.txt b/Text/Game/Creatures/Creature_abilities/Presence_of_the_storm/Name.txt new file mode 100644 index 00000000..05038b0e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Presence_of_the_storm/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Presnce_of_commander/description.txt b/Text/Game/Creatures/Creature_abilities/Presnce_of_commander/description.txt new file mode 100644 index 00000000..ecbd2fbe Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Presnce_of_commander/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Presnce_of_commander/name.txt b/Text/Game/Creatures/Creature_abilities/Presnce_of_commander/name.txt new file mode 100644 index 00000000..c436aeb4 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Presnce_of_commander/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Purger/description.txt b/Text/Game/Creatures/Creature_abilities/Purger/description.txt new file mode 100644 index 00000000..11c4530b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Purger/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Purger/name.txt b/Text/Game/Creatures/Creature_abilities/Purger/name.txt new file mode 100644 index 00000000..1fdd6198 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Purger/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Rage_of_forest/Description.txt b/Text/Game/Creatures/Creature_abilities/Rage_of_forest/Description.txt new file mode 100644 index 00000000..703a227f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Rage_of_forest/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Rage_of_forest/Name.txt b/Text/Game/Creatures/Creature_abilities/Rage_of_forest/Name.txt new file mode 100644 index 00000000..c9f73537 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Rage_of_forest/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Rage_of_the_forest/description.txt b/Text/Game/Creatures/Creature_abilities/Rage_of_the_forest/description.txt new file mode 100644 index 00000000..dfe11d3b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Rage_of_the_forest/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Rage_of_the_forest/name.txt b/Text/Game/Creatures/Creature_abilities/Rage_of_the_forest/name.txt new file mode 100644 index 00000000..c9f73537 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Rage_of_the_forest/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Rainbow_Breath/Description.txt b/Text/Game/Creatures/Creature_abilities/Rainbow_Breath/Description.txt new file mode 100644 index 00000000..ead4ed61 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Rainbow_Breath/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Rainbow_Breath/Name.txt b/Text/Game/Creatures/Creature_abilities/Rainbow_Breath/Name.txt new file mode 100644 index 00000000..749ec14e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Rainbow_Breath/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Random_Caster_Bless/Description.txt b/Text/Game/Creatures/Creature_abilities/Random_Caster_Bless/Description.txt new file mode 100644 index 00000000..a6c1bc0a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Random_Caster_Bless/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Random_Caster_Bless/Name.txt b/Text/Game/Creatures/Creature_abilities/Random_Caster_Bless/Name.txt new file mode 100644 index 00000000..cb434937 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Random_Caster_Bless/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Random_caster/Random_caster_desc.txt b/Text/Game/Creatures/Creature_abilities/Random_caster/Random_caster_desc.txt new file mode 100644 index 00000000..613923a0 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Random_caster/Random_caster_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Random_caster/Random_caster_name.txt b/Text/Game/Creatures/Creature_abilities/Random_caster/Random_caster_name.txt new file mode 100644 index 00000000..e9bc973e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Random_caster/Random_caster_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Range_penalty/Range_penalty_desc.txt b/Text/Game/Creatures/Creature_abilities/Range_penalty/Range_penalty_desc.txt new file mode 100644 index 00000000..bc4ad846 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Range_penalty/Range_penalty_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Range_penalty/Range_penalty_name.txt b/Text/Game/Creatures/Creature_abilities/Range_penalty/Range_penalty_name.txt new file mode 100644 index 00000000..16bd7822 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Range_penalty/Range_penalty_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Ranged_Retaliate/Ranged_retaliate_desc.txt b/Text/Game/Creatures/Creature_abilities/Ranged_Retaliate/Ranged_retaliate_desc.txt new file mode 100644 index 00000000..8c73cb2f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Ranged_Retaliate/Ranged_retaliate_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Ranged_Retaliate/Ranged_retaliate_name.txt b/Text/Game/Creatures/Creature_abilities/Ranged_Retaliate/Ranged_retaliate_name.txt new file mode 100644 index 00000000..ed4e6552 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Ranged_Retaliate/Ranged_retaliate_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Rebirth/Rebrith_desc.txt b/Text/Game/Creatures/Creature_abilities/Rebirth/Rebrith_desc.txt new file mode 100644 index 00000000..c6cd6a82 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Rebirth/Rebrith_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Rebirth/Rebrith_name.txt b/Text/Game/Creatures/Creature_abilities/Rebirth/Rebrith_name.txt new file mode 100644 index 00000000..55d5cb29 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Rebirth/Rebrith_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Regeneration/Regeneration_desc.txt b/Text/Game/Creatures/Creature_abilities/Regeneration/Regeneration_desc.txt new file mode 100644 index 00000000..e75803c5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Regeneration/Regeneration_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Regeneration/Regeneration_name.txt b/Text/Game/Creatures/Creature_abilities/Regeneration/Regeneration_name.txt new file mode 100644 index 00000000..b426ab13 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Regeneration/Regeneration_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Repair/Repair_desc.txt b/Text/Game/Creatures/Creature_abilities/Repair/Repair_desc.txt new file mode 100644 index 00000000..f6fa99cc Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Repair/Repair_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Repair/Repair_name.txt b/Text/Game/Creatures/Creature_abilities/Repair/Repair_name.txt new file mode 100644 index 00000000..40ec2a8d Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Repair/Repair_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Ressurected_allies/Ressurected_allies_desc.txt b/Text/Game/Creatures/Creature_abilities/Ressurected_allies/Ressurected_allies_desc.txt new file mode 100644 index 00000000..a41bbb7f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Ressurected_allies/Ressurected_allies_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Ressurected_allies/Ressurected_allies_name.txt b/Text/Game/Creatures/Creature_abilities/Ressurected_allies/Ressurected_allies_name.txt new file mode 100644 index 00000000..0c0f02d0 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Ressurected_allies/Ressurected_allies_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/RideByAttack/Description.txt b/Text/Game/Creatures/Creature_abilities/RideByAttack/Description.txt new file mode 100644 index 00000000..23280221 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/RideByAttack/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/RideByAttack/Name.txt b/Text/Game/Creatures/Creature_abilities/RideByAttack/Name.txt new file mode 100644 index 00000000..ae3b2bb4 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/RideByAttack/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Rider_charge/Rider_charge_desc.txt b/Text/Game/Creatures/Creature_abilities/Rider_charge/Rider_charge_desc.txt new file mode 100644 index 00000000..2b4b79d2 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Rider_charge/Rider_charge_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Rider_charge/Rider_charge_name.txt b/Text/Game/Creatures/Creature_abilities/Rider_charge/Rider_charge_name.txt new file mode 100644 index 00000000..ffa0ae15 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Rider_charge/Rider_charge_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Sabotage/description.txt b/Text/Game/Creatures/Creature_abilities/Sabotage/description.txt new file mode 100644 index 00000000..d9f430d9 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Sabotage/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Sabotage/name.txt b/Text/Game/Creatures/Creature_abilities/Sabotage/name.txt new file mode 100644 index 00000000..540c7d58 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Sabotage/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Sacrifice_goblin/description.txt b/Text/Game/Creatures/Creature_abilities/Sacrifice_goblin/description.txt new file mode 100644 index 00000000..162b6a0c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Sacrifice_goblin/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Sacrifice_goblin/name.txt b/Text/Game/Creatures/Creature_abilities/Sacrifice_goblin/name.txt new file mode 100644 index 00000000..65efac33 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Sacrifice_goblin/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Scatter_shot/Scatter_shot_desc.txt b/Text/Game/Creatures/Creature_abilities/Scatter_shot/Scatter_shot_desc.txt new file mode 100644 index 00000000..fd0ccd2d Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Scatter_shot/Scatter_shot_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Scatter_shot/Scatter_shot_name.txt b/Text/Game/Creatures/Creature_abilities/Scatter_shot/Scatter_shot_name.txt new file mode 100644 index 00000000..1ddfabc4 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Scatter_shot/Scatter_shot_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Scavenger/description.txt b/Text/Game/Creatures/Creature_abilities/Scavenger/description.txt new file mode 100644 index 00000000..7c6c5a15 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Scavenger/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Scavenger/name.txt b/Text/Game/Creatures/Creature_abilities/Scavenger/name.txt new file mode 100644 index 00000000..a01bb6b0 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Scavenger/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Searing_aura/description.txt b/Text/Game/Creatures/Creature_abilities/Searing_aura/description.txt new file mode 100644 index 00000000..9b71a0e7 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Searing_aura/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Searing_aura/name.txt b/Text/Game/Creatures/Creature_abilities/Searing_aura/name.txt new file mode 100644 index 00000000..9c9c2e3a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Searing_aura/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Seduce/description.txt b/Text/Game/Creatures/Creature_abilities/Seduce/description.txt new file mode 100644 index 00000000..3d28dc97 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Seduce/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Seduce/name.txt b/Text/Game/Creatures/Creature_abilities/Seduce/name.txt new file mode 100644 index 00000000..a2107548 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Seduce/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Set_snares/description.txt b/Text/Game/Creatures/Creature_abilities/Set_snares/description.txt new file mode 100644 index 00000000..a8c1c897 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Set_snares/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Set_snares/name.txt b/Text/Game/Creatures/Creature_abilities/Set_snares/name.txt new file mode 100644 index 00000000..7502fbe7 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Set_snares/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Shield_wall/Shield_wall_desc.txt b/Text/Game/Creatures/Creature_abilities/Shield_wall/Shield_wall_desc.txt new file mode 100644 index 00000000..12fd2ab5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Shield_wall/Shield_wall_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Shield_wall/Shield_wall_name.txt b/Text/Game/Creatures/Creature_abilities/Shield_wall/Shield_wall_name.txt new file mode 100644 index 00000000..cc29bc8a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Shield_wall/Shield_wall_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Shiled_other/Shield_other_desc.txt b/Text/Game/Creatures/Creature_abilities/Shiled_other/Shield_other_desc.txt new file mode 100644 index 00000000..010acb08 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Shiled_other/Shield_other_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Shiled_other/Shield_other_name.txt b/Text/Game/Creatures/Creature_abilities/Shiled_other/Shield_other_name.txt new file mode 100644 index 00000000..baa348f4 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Shiled_other/Shield_other_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Shooter/Shooter_desc.txt b/Text/Game/Creatures/Creature_abilities/Shooter/Shooter_desc.txt new file mode 100644 index 00000000..7c3208d0 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Shooter/Shooter_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Shooter/Shooter_name.txt b/Text/Game/Creatures/Creature_abilities/Shooter/Shooter_name.txt new file mode 100644 index 00000000..c29b5341 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Shooter/Shooter_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Six_headed_attack/Six_headed_attack_desc.txt b/Text/Game/Creatures/Creature_abilities/Six_headed_attack/Six_headed_attack_desc.txt new file mode 100644 index 00000000..ce012521 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Six_headed_attack/Six_headed_attack_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Six_headed_attack/Six_headed_attack_name.txt b/Text/Game/Creatures/Creature_abilities/Six_headed_attack/Six_headed_attack_name.txt new file mode 100644 index 00000000..38cfdf52 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Six_headed_attack/Six_headed_attack_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Sleeping_Strike/Description.txt b/Text/Game/Creatures/Creature_abilities/Sleeping_Strike/Description.txt new file mode 100644 index 00000000..c5e27c60 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Sleeping_Strike/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Sleeping_Strike/Name.txt b/Text/Game/Creatures/Creature_abilities/Sleeping_Strike/Name.txt new file mode 100644 index 00000000..bcfc4e4c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Sleeping_Strike/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Sorrow_strike/Description.txt b/Text/Game/Creatures/Creature_abilities/Sorrow_strike/Description.txt new file mode 100644 index 00000000..12f54b14 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Sorrow_strike/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Sorrow_strike/Name.txt b/Text/Game/Creatures/Creature_abilities/Sorrow_strike/Name.txt new file mode 100644 index 00000000..21c4ce5b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Sorrow_strike/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Spray_attack/Spray_attack_desc.txt b/Text/Game/Creatures/Creature_abilities/Spray_attack/Spray_attack_desc.txt new file mode 100644 index 00000000..0ea28c9b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Spray_attack/Spray_attack_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Spray_attack/Spray_attack_name.txt b/Text/Game/Creatures/Creature_abilities/Spray_attack/Spray_attack_name.txt new file mode 100644 index 00000000..2bcd2c28 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Spray_attack/Spray_attack_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Stormbolt/Stormbolt_desc.txt b/Text/Game/Creatures/Creature_abilities/Stormbolt/Stormbolt_desc.txt new file mode 100644 index 00000000..100832d6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Stormbolt/Stormbolt_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Stormbolt/Stormbolt_name.txt b/Text/Game/Creatures/Creature_abilities/Stormbolt/Stormbolt_name.txt new file mode 100644 index 00000000..042f76a7 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Stormbolt/Stormbolt_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Stormstrike/Stormstrike_desc.txt b/Text/Game/Creatures/Creature_abilities/Stormstrike/Stormstrike_desc.txt new file mode 100644 index 00000000..8355b73c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Stormstrike/Stormstrike_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Stormstrike/Stormstrike_name.txt b/Text/Game/Creatures/Creature_abilities/Stormstrike/Stormstrike_name.txt new file mode 100644 index 00000000..fc0228c9 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Stormstrike/Stormstrike_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Strike_and_return/Strike_and_return_desc.txt b/Text/Game/Creatures/Creature_abilities/Strike_and_return/Strike_and_return_desc.txt new file mode 100644 index 00000000..bd9e2b58 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Strike_and_return/Strike_and_return_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Strike_and_return/Strike_and_return_name.txt b/Text/Game/Creatures/Creature_abilities/Strike_and_return/Strike_and_return_name.txt new file mode 100644 index 00000000..711078e7 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Strike_and_return/Strike_and_return_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Summon_other/Description.txt b/Text/Game/Creatures/Creature_abilities/Summon_other/Description.txt new file mode 100644 index 00000000..e427ef8a Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Summon_other/Description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Summon_other/Name.txt b/Text/Game/Creatures/Creature_abilities/Summon_other/Name.txt new file mode 100644 index 00000000..86e801c3 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Summon_other/Name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Swallow_goblin/description.txt b/Text/Game/Creatures/Creature_abilities/Swallow_goblin/description.txt new file mode 100644 index 00000000..1dd3aac6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Swallow_goblin/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Swallow_goblin/name.txt b/Text/Game/Creatures/Creature_abilities/Swallow_goblin/name.txt new file mode 100644 index 00000000..71f0d1c7 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Swallow_goblin/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Syphon_mana/description.txt b/Text/Game/Creatures/Creature_abilities/Syphon_mana/description.txt new file mode 100644 index 00000000..ed415aa6 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Syphon_mana/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Syphon_mana/name.txt b/Text/Game/Creatures/Creature_abilities/Syphon_mana/name.txt new file mode 100644 index 00000000..95f31946 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Syphon_mana/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Take_roots/Take_roots_desc.txt b/Text/Game/Creatures/Creature_abilities/Take_roots/Take_roots_desc.txt new file mode 100644 index 00000000..359a6f54 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Take_roots/Take_roots_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Take_roots/Take_roots_name.txt b/Text/Game/Creatures/Creature_abilities/Take_roots/Take_roots_name.txt new file mode 100644 index 00000000..1c047c75 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Take_roots/Take_roots_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Taunt/description.txt b/Text/Game/Creatures/Creature_abilities/Taunt/description.txt new file mode 100644 index 00000000..22fe15bc Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Taunt/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Taunt/name.txt b/Text/Game/Creatures/Creature_abilities/Taunt/name.txt new file mode 100644 index 00000000..ac291151 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Taunt/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Taxpayer/Taxpayer_desc.txt b/Text/Game/Creatures/Creature_abilities/Taxpayer/Taxpayer_desc.txt new file mode 100644 index 00000000..ba962344 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Taxpayer/Taxpayer_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Taxpayer/Taxpayer_name.txt b/Text/Game/Creatures/Creature_abilities/Taxpayer/Taxpayer_name.txt new file mode 100644 index 00000000..e28b54dc Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Taxpayer/Taxpayer_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Three_headed_attack/description.txt b/Text/Game/Creatures/Creature_abilities/Three_headed_attack/description.txt new file mode 100644 index 00000000..78d0c372 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Three_headed_attack/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Three_headed_attack/name.txt b/Text/Game/Creatures/Creature_abilities/Three_headed_attack/name.txt new file mode 100644 index 00000000..077a1a4e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Three_headed_attack/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/TooltipFormat.txt b/Text/Game/Creatures/Creature_abilities/TooltipFormat.txt new file mode 100644 index 00000000..eb20ea92 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/TooltipFormat.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Treachery/description.txt b/Text/Game/Creatures/Creature_abilities/Treachery/description.txt new file mode 100644 index 00000000..a3912949 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Treachery/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Treachery/name.txt b/Text/Game/Creatures/Creature_abilities/Treachery/name.txt new file mode 100644 index 00000000..332ca092 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Treachery/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Treeant_union/description.txt b/Text/Game/Creatures/Creature_abilities/Treeant_union/description.txt new file mode 100644 index 00000000..91618122 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Treeant_union/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Treeant_union/name.txt b/Text/Game/Creatures/Creature_abilities/Treeant_union/name.txt new file mode 100644 index 00000000..710ddb76 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Treeant_union/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Undead/Undead_desc.txt b/Text/Game/Creatures/Creature_abilities/Undead/Undead_desc.txt new file mode 100644 index 00000000..f304e04c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Undead/Undead_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Undead/Undead_name.txt b/Text/Game/Creatures/Creature_abilities/Undead/Undead_name.txt new file mode 100644 index 00000000..021b568b Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Undead/Undead_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Unlimited_Retaliation/Unlimited_retaliation_desc.txt b/Text/Game/Creatures/Creature_abilities/Unlimited_Retaliation/Unlimited_retaliation_desc.txt new file mode 100644 index 00000000..09e9afb2 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Unlimited_Retaliation/Unlimited_retaliation_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Unlimited_Retaliation/Unlimited_retaliation_name.txt b/Text/Game/Creatures/Creature_abilities/Unlimited_Retaliation/Unlimited_retaliation_name.txt new file mode 100644 index 00000000..d6d532e8 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Unlimited_Retaliation/Unlimited_retaliation_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Venom/description.txt b/Text/Game/Creatures/Creature_abilities/Venom/description.txt new file mode 100644 index 00000000..18142e4c Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Venom/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Venom/name.txt b/Text/Game/Creatures/Creature_abilities/Venom/name.txt new file mode 100644 index 00000000..fce298bd Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Venom/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Vorpal_Sword/Vorpal_sword_desc.txt b/Text/Game/Creatures/Creature_abilities/Vorpal_Sword/Vorpal_sword_desc.txt new file mode 100644 index 00000000..378da529 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Vorpal_Sword/Vorpal_sword_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Vorpal_Sword/Vorpal_sword_name.txt b/Text/Game/Creatures/Creature_abilities/Vorpal_Sword/Vorpal_sword_name.txt new file mode 100644 index 00000000..0aeffb3f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Vorpal_Sword/Vorpal_sword_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/War_dance_combo/War_dance_combo_desc.txt b/Text/Game/Creatures/Creature_abilities/War_dance_combo/War_dance_combo_desc.txt new file mode 100644 index 00000000..3f08f3d5 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/War_dance_combo/War_dance_combo_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/War_dance_combo/War_dance_combo_name.txt b/Text/Game/Creatures/Creature_abilities/War_dance_combo/War_dance_combo_name.txt new file mode 100644 index 00000000..834e4c24 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/War_dance_combo/War_dance_combo_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Warding_arrows/Warding_arrows_desc.txt b/Text/Game/Creatures/Creature_abilities/Warding_arrows/Warding_arrows_desc.txt new file mode 100644 index 00000000..25dcf495 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Warding_arrows/Warding_arrows_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Warding_arrows/Warding_arrows_name.txt b/Text/Game/Creatures/Creature_abilities/Warding_arrows/Warding_arrows_name.txt new file mode 100644 index 00000000..7159026e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Warding_arrows/Warding_arrows_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Weakening_Aura/description.txt b/Text/Game/Creatures/Creature_abilities/Weakening_Aura/description.txt new file mode 100644 index 00000000..38779a70 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Weakening_Aura/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Weakening_Aura/name.txt b/Text/Game/Creatures/Creature_abilities/Weakening_Aura/name.txt new file mode 100644 index 00000000..ba830f8e Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Weakening_Aura/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Weakening_strike/Weakening_strike_desc.txt b/Text/Game/Creatures/Creature_abilities/Weakening_strike/Weakening_strike_desc.txt new file mode 100644 index 00000000..61cd32c4 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Weakening_strike/Weakening_strike_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Weakening_strike/Weakening_strike_name.txt b/Text/Game/Creatures/Creature_abilities/Weakening_strike/Weakening_strike_name.txt new file mode 100644 index 00000000..d5613d3f Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Weakening_strike/Weakening_strike_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Whip_strike/Whip_strike_desc.txt b/Text/Game/Creatures/Creature_abilities/Whip_strike/Whip_strike_desc.txt new file mode 100644 index 00000000..d053e014 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Whip_strike/Whip_strike_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Whip_strike/Whip_strike_name.txt b/Text/Game/Creatures/Creature_abilities/Whip_strike/Whip_strike_name.txt new file mode 100644 index 00000000..cc604ab9 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Whip_strike/Whip_strike_name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Whirlwind/description.txt b/Text/Game/Creatures/Creature_abilities/Whirlwind/description.txt new file mode 100644 index 00000000..a5e4d566 Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Whirlwind/description.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Whirlwind/name.txt b/Text/Game/Creatures/Creature_abilities/Whirlwind/name.txt new file mode 100644 index 00000000..acfc7e1d Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Whirlwind/name.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Wound/Wound_desc.txt b/Text/Game/Creatures/Creature_abilities/Wound/Wound_desc.txt new file mode 100644 index 00000000..98f8f2eb Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Wound/Wound_desc.txt differ diff --git a/Text/Game/Creatures/Creature_abilities/Wound/Wound_name.txt b/Text/Game/Creatures/Creature_abilities/Wound/Wound_name.txt new file mode 100644 index 00000000..f69e468d Binary files /dev/null and b/Text/Game/Creatures/Creature_abilities/Wound/Wound_name.txt differ diff --git a/Text/Game/Creatures/Dungeon/3rd/RedDragon_Abils.txt b/Text/Game/Creatures/Dungeon/3rd/RedDragon_Abils.txt new file mode 100644 index 00000000..32d7c655 Binary files /dev/null and b/Text/Game/Creatures/Dungeon/3rd/RedDragon_Abils.txt differ diff --git a/Text/Game/Creatures/Dungeon/MatriarchAbilities.txt b/Text/Game/Creatures/Dungeon/MatriarchAbilities.txt new file mode 100644 index 00000000..344a700d Binary files /dev/null and b/Text/Game/Creatures/Dungeon/MatriarchAbilities.txt differ diff --git a/Text/Game/Creatures/Haven/Landlord.txt b/Text/Game/Creatures/Haven/Landlord.txt new file mode 100644 index 00000000..62722701 Binary files /dev/null and b/Text/Game/Creatures/Haven/Landlord.txt differ diff --git a/Text/Game/Creatures/Inferno/3rd/Hellmare_Abils.txt b/Text/Game/Creatures/Inferno/3rd/Hellmare_Abils.txt new file mode 100644 index 00000000..97d3cf1b Binary files /dev/null and b/Text/Game/Creatures/Inferno/3rd/Hellmare_Abils.txt differ diff --git a/Text/Game/Creatures/Inferno/FrightfulNightmareAbilities.txt b/Text/Game/Creatures/Inferno/FrightfulNightmareAbilities.txt new file mode 100644 index 00000000..d73a9ae4 Binary files /dev/null and b/Text/Game/Creatures/Inferno/FrightfulNightmareAbilities.txt differ diff --git a/Text/Game/Creatures/Neutrals/AvatarOfDeath.txt b/Text/Game/Creatures/Neutrals/AvatarOfDeath.txt new file mode 100644 index 00000000..195a1cec Binary files /dev/null and b/Text/Game/Creatures/Neutrals/AvatarOfDeath.txt differ diff --git a/Text/Game/Creatures/Neutrals/Death_Knight.txt b/Text/Game/Creatures/Neutrals/Death_Knight.txt new file mode 100644 index 00000000..11f91f4f Binary files /dev/null and b/Text/Game/Creatures/Neutrals/Death_Knight.txt differ diff --git a/Text/Game/Creatures/Neutrals/Death_KnightDescription.txt b/Text/Game/Creatures/Neutrals/Death_KnightDescription.txt new file mode 100644 index 00000000..68740091 Binary files /dev/null and b/Text/Game/Creatures/Neutrals/Death_KnightDescription.txt differ diff --git a/Text/Game/Creatures/Neutrals/Firebird.txt b/Text/Game/Creatures/Neutrals/Firebird.txt new file mode 100644 index 00000000..5923a360 Binary files /dev/null and b/Text/Game/Creatures/Neutrals/Firebird.txt differ diff --git a/Text/Game/Creatures/Neutrals/FirebirdDescription.txt b/Text/Game/Creatures/Neutrals/FirebirdDescription.txt new file mode 100644 index 00000000..b7c8939e Binary files /dev/null and b/Text/Game/Creatures/Neutrals/FirebirdDescription.txt differ diff --git a/Text/Game/Creatures/Orcs/3rd/OrcWarmonger_Desc.txt b/Text/Game/Creatures/Orcs/3rd/OrcWarmonger_Desc.txt new file mode 100644 index 00000000..506c0a2f Binary files /dev/null and b/Text/Game/Creatures/Orcs/3rd/OrcWarmonger_Desc.txt differ diff --git a/Text/Game/Creatures/Orcs/3rd/OrcWarmonger_Name.txt b/Text/Game/Creatures/Orcs/3rd/OrcWarmonger_Name.txt new file mode 100644 index 00000000..a8045174 Binary files /dev/null and b/Text/Game/Creatures/Orcs/3rd/OrcWarmonger_Name.txt differ diff --git a/Text/Game/Creatures/Orcs/3rd/OrcchiefChieftain_Abils.txt b/Text/Game/Creatures/Orcs/3rd/OrcchiefChieftain_Abils.txt new file mode 100644 index 00000000..e904cba5 Binary files /dev/null and b/Text/Game/Creatures/Orcs/3rd/OrcchiefChieftain_Abils.txt differ diff --git a/Text/Game/Creatures/Orcs/3rd/OrcchiefChieftain_Desc.txt b/Text/Game/Creatures/Orcs/3rd/OrcchiefChieftain_Desc.txt new file mode 100644 index 00000000..172cf058 Binary files /dev/null and b/Text/Game/Creatures/Orcs/3rd/OrcchiefChieftain_Desc.txt differ diff --git a/Text/Game/Creatures/Orcs/3rd/OrcchiefChieftain_Name.txt b/Text/Game/Creatures/Orcs/3rd/OrcchiefChieftain_Name.txt new file mode 100644 index 00000000..77bc9c5c Binary files /dev/null and b/Text/Game/Creatures/Orcs/3rd/OrcchiefChieftain_Name.txt differ diff --git a/Text/Game/Creatures/Orcs/Shaman.txt b/Text/Game/Creatures/Orcs/Shaman.txt new file mode 100644 index 00000000..7b9e02a2 Binary files /dev/null and b/Text/Game/Creatures/Orcs/Shaman.txt differ diff --git a/Text/Game/Creatures/Orcs/Shaman1.txt b/Text/Game/Creatures/Orcs/Shaman1.txt new file mode 100644 index 00000000..7b9e02a2 Binary files /dev/null and b/Text/Game/Creatures/Orcs/Shaman1.txt differ diff --git a/Text/Game/Creatures/Preserve/3rd/SharpShooter_Desc.txt b/Text/Game/Creatures/Preserve/3rd/SharpShooter_Desc.txt new file mode 100644 index 00000000..84870229 Binary files /dev/null and b/Text/Game/Creatures/Preserve/3rd/SharpShooter_Desc.txt differ diff --git a/Text/Game/Creatures/Preserve/3rd/SharpShooter_Name.txt b/Text/Game/Creatures/Preserve/3rd/SharpShooter_Name.txt new file mode 100644 index 00000000..a491b060 Binary files /dev/null and b/Text/Game/Creatures/Preserve/3rd/SharpShooter_Name.txt differ diff --git a/Text/Game/Creatures/WarMachines/AmmoCart.txt b/Text/Game/Creatures/WarMachines/AmmoCart.txt new file mode 100644 index 00000000..ab4938d6 Binary files /dev/null and b/Text/Game/Creatures/WarMachines/AmmoCart.txt differ diff --git a/Text/Game/Creatures/WarMachines/AmmoCartAbilities.txt b/Text/Game/Creatures/WarMachines/AmmoCartAbilities.txt new file mode 100644 index 00000000..72a385a8 Binary files /dev/null and b/Text/Game/Creatures/WarMachines/AmmoCartAbilities.txt differ diff --git a/Text/Game/Creatures/WarMachines/AmmoCartDescription.txt b/Text/Game/Creatures/WarMachines/AmmoCartDescription.txt new file mode 100644 index 00000000..47b37650 Binary files /dev/null and b/Text/Game/Creatures/WarMachines/AmmoCartDescription.txt differ diff --git a/Text/Game/Creatures/WarMachines/Ballista.txt b/Text/Game/Creatures/WarMachines/Ballista.txt new file mode 100644 index 00000000..964634cf Binary files /dev/null and b/Text/Game/Creatures/WarMachines/Ballista.txt differ diff --git a/Text/Game/Creatures/WarMachines/BallistaAbilities.txt b/Text/Game/Creatures/WarMachines/BallistaAbilities.txt new file mode 100644 index 00000000..1e4676e8 Binary files /dev/null and b/Text/Game/Creatures/WarMachines/BallistaAbilities.txt differ diff --git a/Text/Game/Creatures/WarMachines/BallistaDescription.txt b/Text/Game/Creatures/WarMachines/BallistaDescription.txt new file mode 100644 index 00000000..8c09a022 Binary files /dev/null and b/Text/Game/Creatures/WarMachines/BallistaDescription.txt differ diff --git a/Text/Game/Creatures/WarMachines/Catapult.txt b/Text/Game/Creatures/WarMachines/Catapult.txt new file mode 100644 index 00000000..293fab52 Binary files /dev/null and b/Text/Game/Creatures/WarMachines/Catapult.txt differ diff --git a/Text/Game/Creatures/WarMachines/CatapultAbilities.txt b/Text/Game/Creatures/WarMachines/CatapultAbilities.txt new file mode 100644 index 00000000..c4aa83a9 Binary files /dev/null and b/Text/Game/Creatures/WarMachines/CatapultAbilities.txt differ diff --git a/Text/Game/Creatures/WarMachines/CatapultDescription.txt b/Text/Game/Creatures/WarMachines/CatapultDescription.txt new file mode 100644 index 00000000..08df5897 Binary files /dev/null and b/Text/Game/Creatures/WarMachines/CatapultDescription.txt differ diff --git a/Text/Game/Creatures/WarMachines/FirstAidTent.txt b/Text/Game/Creatures/WarMachines/FirstAidTent.txt new file mode 100644 index 00000000..d8f18b91 Binary files /dev/null and b/Text/Game/Creatures/WarMachines/FirstAidTent.txt differ diff --git a/Text/Game/Creatures/WarMachines/FirstAidTentAbilities.txt b/Text/Game/Creatures/WarMachines/FirstAidTentAbilities.txt new file mode 100644 index 00000000..a53b0277 Binary files /dev/null and b/Text/Game/Creatures/WarMachines/FirstAidTentAbilities.txt differ diff --git a/Text/Game/Creatures/WarMachines/FirstAidTentDescription.txt b/Text/Game/Creatures/WarMachines/FirstAidTentDescription.txt new file mode 100644 index 00000000..46366702 Binary files /dev/null and b/Text/Game/Creatures/WarMachines/FirstAidTentDescription.txt differ diff --git a/Text/Game/Creatures/chaostheory/Cherubin/description.txt b/Text/Game/Creatures/chaostheory/Cherubin/description.txt new file mode 100644 index 00000000..8cc78d1a Binary files /dev/null and b/Text/Game/Creatures/chaostheory/Cherubin/description.txt differ diff --git a/Text/Game/Creatures/chaostheory/Cherubin/name.txt b/Text/Game/Creatures/chaostheory/Cherubin/name.txt new file mode 100644 index 00000000..af7adb67 Binary files /dev/null and b/Text/Game/Creatures/chaostheory/Cherubin/name.txt differ diff --git a/Text/Game/Creatures/chaostheory/Death/description.txt b/Text/Game/Creatures/chaostheory/Death/description.txt new file mode 100644 index 00000000..64cf148f Binary files /dev/null and b/Text/Game/Creatures/chaostheory/Death/description.txt differ diff --git a/Text/Game/Creatures/chaostheory/Death/name.txt b/Text/Game/Creatures/chaostheory/Death/name.txt new file mode 100644 index 00000000..195a1cec Binary files /dev/null and b/Text/Game/Creatures/chaostheory/Death/name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Artisan/Description.txt b/Text/Game/Heroes/Specializations/Academy/Artisan/Description.txt new file mode 100644 index 00000000..d457345d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Artisan/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Artisan/Name.txt b/Text/Game/Heroes/Specializations/Academy/Artisan/Name.txt new file mode 100644 index 00000000..26e306f9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Artisan/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Artisan/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Academy/Artisan/ThisIsAName.txt new file mode 100644 index 00000000..ceac0def Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Artisan/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Disrupter/Description.txt b/Text/Game/Heroes/Specializations/Academy/Disrupter/Description.txt new file mode 100644 index 00000000..810bd8a0 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Disrupter/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Disrupter/Name.txt b/Text/Game/Heroes/Specializations/Academy/Disrupter/Name.txt new file mode 100644 index 00000000..9a49ffd5 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Disrupter/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Disrupter2/Description.txt b/Text/Game/Heroes/Specializations/Academy/Disrupter2/Description.txt new file mode 100644 index 00000000..bf035a5c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Disrupter2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Disrupter2/Name.txt b/Text/Game/Heroes/Specializations/Academy/Disrupter2/Name.txt new file mode 100644 index 00000000..01d15fc4 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Disrupter2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Disrupter3/Description.txt b/Text/Game/Heroes/Specializations/Academy/Disrupter3/Description.txt new file mode 100644 index 00000000..bf035a5c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Disrupter3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Disrupter3/Name.txt b/Text/Game/Heroes/Specializations/Academy/Disrupter3/Name.txt new file mode 100644 index 00000000..6e3fd284 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Disrupter3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Feather_Mage/Description.txt b/Text/Game/Heroes/Specializations/Academy/Feather_Mage/Description.txt new file mode 100644 index 00000000..4b9a0359 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Feather_Mage/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Feather_Mage/Name.txt b/Text/Game/Heroes/Specializations/Academy/Feather_Mage/Name.txt new file mode 100644 index 00000000..06372306 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Feather_Mage/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Feather_Mage2/Description.txt b/Text/Game/Heroes/Specializations/Academy/Feather_Mage2/Description.txt new file mode 100644 index 00000000..0698b572 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Feather_Mage2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Feather_Mage2/Name.txt b/Text/Game/Heroes/Specializations/Academy/Feather_Mage2/Name.txt new file mode 100644 index 00000000..03d80f35 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Feather_Mage2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Feather_Mage3/Description.txt b/Text/Game/Heroes/Specializations/Academy/Feather_Mage3/Description.txt new file mode 100644 index 00000000..4b9a0359 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Feather_Mage3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Feather_Mage3/Name.txt b/Text/Game/Heroes/Specializations/Academy/Feather_Mage3/Name.txt new file mode 100644 index 00000000..4c7d3354 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Feather_Mage3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Feather_Mage4/Description.txt b/Text/Game/Heroes/Specializations/Academy/Feather_Mage4/Description.txt new file mode 100644 index 00000000..809e7bd6 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Feather_Mage4/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Feather_Mage4/Name.txt b/Text/Game/Heroes/Specializations/Academy/Feather_Mage4/Name.txt new file mode 100644 index 00000000..4b3aee2a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Feather_Mage4/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Feather_Mage5/Description.txt b/Text/Game/Heroes/Specializations/Academy/Feather_Mage5/Description.txt new file mode 100644 index 00000000..d4273333 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Feather_Mage5/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Feather_Mage5/Name.txt b/Text/Game/Heroes/Specializations/Academy/Feather_Mage5/Name.txt new file mode 100644 index 00000000..21bda739 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Feather_Mage5/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Inexhaustible/Description.txt b/Text/Game/Heroes/Specializations/Academy/Inexhaustible/Description.txt new file mode 100644 index 00000000..c4ff64c5 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Inexhaustible/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Inexhaustible/Name.txt b/Text/Game/Heroes/Specializations/Academy/Inexhaustible/Name.txt new file mode 100644 index 00000000..c24871f9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Inexhaustible/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Machinist/Description.txt b/Text/Game/Heroes/Specializations/Academy/Machinist/Description.txt new file mode 100644 index 00000000..cf65d6b5 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Machinist/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Machinist/Name.txt b/Text/Game/Heroes/Specializations/Academy/Machinist/Name.txt new file mode 100644 index 00000000..dd367b3b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Machinist/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Machinist/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Academy/Machinist/ThisIsAName.txt new file mode 100644 index 00000000..39a7cb8f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Machinist/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Master_of_Elements/Description.txt b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements/Description.txt new file mode 100644 index 00000000..400df1fb Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Master_of_Elements/Name.txt b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements/Name.txt new file mode 100644 index 00000000..8aa7fd56 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Master_of_Elements/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements/ThisIsAName.txt new file mode 100644 index 00000000..9088de33 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Master_of_Elements2/Description.txt b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements2/Description.txt new file mode 100644 index 00000000..400df1fb Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Master_of_Elements2/Name.txt b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements2/Name.txt new file mode 100644 index 00000000..46596b87 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Master_of_Elements3/Description.txt b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements3/Description.txt new file mode 100644 index 00000000..400df1fb Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Master_of_Elements3/Name.txt b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements3/Name.txt new file mode 100644 index 00000000..8b4c8a1f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Master_of_Elements4/Description.txt b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements4/Description.txt new file mode 100644 index 00000000..400df1fb Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements4/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Master_of_Elements4/Name.txt b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements4/Name.txt new file mode 100644 index 00000000..1e0dee18 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Master_of_Elements4/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Mentor/Description.txt b/Text/Game/Heroes/Specializations/Academy/Mentor/Description.txt new file mode 100644 index 00000000..32d0caf3 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Mentor/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Mentor/Name.txt b/Text/Game/Heroes/Specializations/Academy/Mentor/Name.txt new file mode 100644 index 00000000..01737a1f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Mentor/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Mentor/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Academy/Mentor/ThisIsAName.txt new file mode 100644 index 00000000..6dd56b9b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Mentor/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Radiant/Description.txt b/Text/Game/Heroes/Specializations/Academy/Radiant/Description.txt new file mode 100644 index 00000000..5138bf87 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Radiant/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Radiant/Name.txt b/Text/Game/Heroes/Specializations/Academy/Radiant/Name.txt new file mode 100644 index 00000000..082c7ecf Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Radiant/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Time_Shifter/Description.txt b/Text/Game/Heroes/Specializations/Academy/Time_Shifter/Description.txt new file mode 100644 index 00000000..7a456512 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Time_Shifter/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Time_Shifter/Name.txt b/Text/Game/Heroes/Specializations/Academy/Time_Shifter/Name.txt new file mode 100644 index 00000000..c90f84c7 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Time_Shifter/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire/Description.txt b/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire/Description.txt new file mode 100644 index 00000000..03789b61 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire/Name.txt b/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire/Name.txt new file mode 100644 index 00000000..c60727ae Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire2/Description.txt b/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire2/Description.txt new file mode 100644 index 00000000..a9e46e42 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire2/Name.txt b/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire2/Name.txt new file mode 100644 index 00000000..95477057 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire3/Description.txt b/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire3/Description.txt new file mode 100644 index 00000000..499ec1ef Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire3/Name.txt b/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire3/Name.txt new file mode 100644 index 00000000..1dcec391 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Academy/Weilder_of_Fire3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Angels/Description.txt b/Text/Game/Heroes/Specializations/Added/Angels/Description.txt new file mode 100644 index 00000000..ba2ee2d9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Angels/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Angels/Name.txt b/Text/Game/Heroes/Specializations/Added/Angels/Name.txt new file mode 100644 index 00000000..866b10b5 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Angels/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/BDragons/Description.txt b/Text/Game/Heroes/Specializations/Added/BDragons/Description.txt new file mode 100644 index 00000000..0b7a5688 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/BDragons/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/BDragons/Name.txt b/Text/Game/Heroes/Specializations/Added/BDragons/Name.txt new file mode 100644 index 00000000..ad52a081 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/BDragons/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Berzerkers/Description.txt b/Text/Game/Heroes/Specializations/Added/Berzerkers/Description.txt new file mode 100644 index 00000000..8d574f37 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Berzerkers/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Berzerkers/Name.txt b/Text/Game/Heroes/Specializations/Added/Berzerkers/Name.txt new file mode 100644 index 00000000..8bffeb73 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Berzerkers/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Clerics/Description.txt b/Text/Game/Heroes/Specializations/Added/Clerics/Description.txt new file mode 100644 index 00000000..4c8606c1 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Clerics/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Clerics/Name.txt b/Text/Game/Heroes/Specializations/Added/Clerics/Name.txt new file mode 100644 index 00000000..13d00475 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Clerics/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Cyclops/Description.txt b/Text/Game/Heroes/Specializations/Added/Cyclops/Description.txt new file mode 100644 index 00000000..6f7c84cf Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Cyclops/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Cyclops/Name.txt b/Text/Game/Heroes/Specializations/Added/Cyclops/Name.txt new file mode 100644 index 00000000..38a92a73 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Cyclops/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/DKnights/Description.txt b/Text/Game/Heroes/Specializations/Added/DKnights/Description.txt new file mode 100644 index 00000000..c6391cd7 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/DKnights/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/DKnights/Name.txt b/Text/Game/Heroes/Specializations/Added/DKnights/Name.txt new file mode 100644 index 00000000..8f44cd00 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/DKnights/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Defense/Description.txt b/Text/Game/Heroes/Specializations/Added/Defense/Description.txt new file mode 100644 index 00000000..025ebff9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Defense/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Defense/Name.txt b/Text/Game/Heroes/Specializations/Added/Defense/Name.txt new file mode 100644 index 00000000..d682cf09 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Defense/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Defense2/Description.txt b/Text/Game/Heroes/Specializations/Added/Defense2/Description.txt new file mode 100644 index 00000000..79437ba4 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Defense2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Defense2/Name.txt b/Text/Game/Heroes/Specializations/Added/Defense2/Name.txt new file mode 100644 index 00000000..f049e0bd Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Defense2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Demons/Description.txt b/Text/Game/Heroes/Specializations/Added/Demons/Description.txt new file mode 100644 index 00000000..74973c37 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Demons/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Demons/Name.txt b/Text/Game/Heroes/Specializations/Added/Demons/Name.txt new file mode 100644 index 00000000..05d82bcc Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Demons/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Devils/Description.txt b/Text/Game/Heroes/Specializations/Added/Devils/Description.txt new file mode 100644 index 00000000..bcb83233 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Devils/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Devils/Name.txt b/Text/Game/Heroes/Specializations/Added/Devils/Name.txt new file mode 100644 index 00000000..c4c6c012 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Devils/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Diplomat/Description.txt b/Text/Game/Heroes/Specializations/Added/Diplomat/Description.txt new file mode 100644 index 00000000..a932ed2c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Diplomat/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Diplomat/Name.txt b/Text/Game/Heroes/Specializations/Added/Diplomat/Name.txt new file mode 100644 index 00000000..203a5a09 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Diplomat/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Diplomat2/Description.txt b/Text/Game/Heroes/Specializations/Added/Diplomat2/Description.txt new file mode 100644 index 00000000..a932ed2c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Diplomat2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Diplomat2/Name.txt b/Text/Game/Heroes/Specializations/Added/Diplomat2/Name.txt new file mode 100644 index 00000000..7dd31366 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Diplomat2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Djinns/Description.txt b/Text/Game/Heroes/Specializations/Added/Djinns/Description.txt new file mode 100644 index 00000000..8d32de9f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Djinns/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Djinns/Name.txt b/Text/Game/Heroes/Specializations/Added/Djinns/Name.txt new file mode 100644 index 00000000..fd6b18ce Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Djinns/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Druids/Description.txt b/Text/Game/Heroes/Specializations/Added/Druids/Description.txt new file mode 100644 index 00000000..4b2fab4e Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Druids/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Druids/Name.txt b/Text/Game/Heroes/Specializations/Added/Druids/Name.txt new file mode 100644 index 00000000..bdb1430c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Druids/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/EDragons/Description.txt b/Text/Game/Heroes/Specializations/Added/EDragons/Description.txt new file mode 100644 index 00000000..18b46057 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/EDragons/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/EDragons/Name.txt b/Text/Game/Heroes/Specializations/Added/EDragons/Name.txt new file mode 100644 index 00000000..822e1936 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/EDragons/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Eagles/Description.txt b/Text/Game/Heroes/Specializations/Added/Eagles/Description.txt new file mode 100644 index 00000000..4d7a9795 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Eagles/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Eagles/Name.txt b/Text/Game/Heroes/Specializations/Added/Eagles/Name.txt new file mode 100644 index 00000000..e6684a33 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Eagles/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ElemAir/Description.txt b/Text/Game/Heroes/Specializations/Added/ElemAir/Description.txt new file mode 100644 index 00000000..423c262d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ElemAir/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ElemAir/Name.txt b/Text/Game/Heroes/Specializations/Added/ElemAir/Name.txt new file mode 100644 index 00000000..d05262ba Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ElemAir/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ElemEarth/Description.txt b/Text/Game/Heroes/Specializations/Added/ElemEarth/Description.txt new file mode 100644 index 00000000..4e279a58 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ElemEarth/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ElemEarth/Name.txt b/Text/Game/Heroes/Specializations/Added/ElemEarth/Name.txt new file mode 100644 index 00000000..78bb9714 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ElemEarth/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ElemFire/Description.txt b/Text/Game/Heroes/Specializations/Added/ElemFire/Description.txt new file mode 100644 index 00000000..ab83cc41 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ElemFire/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ElemFire/Name.txt b/Text/Game/Heroes/Specializations/Added/ElemFire/Name.txt new file mode 100644 index 00000000..51eb327f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ElemFire/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ElemWater/Description.txt b/Text/Game/Heroes/Specializations/Added/ElemWater/Description.txt new file mode 100644 index 00000000..74780289 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ElemWater/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ElemWater/Name.txt b/Text/Game/Heroes/Specializations/Added/ElemWater/Name.txt new file mode 100644 index 00000000..b55f2aac Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ElemWater/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Gargoyles/Description.txt b/Text/Game/Heroes/Specializations/Added/Gargoyles/Description.txt new file mode 100644 index 00000000..6d877205 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Gargoyles/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Gargoyles/Name.txt b/Text/Game/Heroes/Specializations/Added/Gargoyles/Name.txt new file mode 100644 index 00000000..6df6f190 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Gargoyles/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Ghosts/Description.txt b/Text/Game/Heroes/Specializations/Added/Ghosts/Description.txt new file mode 100644 index 00000000..f3b902fd Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Ghosts/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Ghosts/Name.txt b/Text/Game/Heroes/Specializations/Added/Ghosts/Name.txt new file mode 100644 index 00000000..67a65a20 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Ghosts/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Hydras/Description.txt b/Text/Game/Heroes/Specializations/Added/Hydras/Description.txt new file mode 100644 index 00000000..aa3fa4e1 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Hydras/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Hydras/Name.txt b/Text/Game/Heroes/Specializations/Added/Hydras/Name.txt new file mode 100644 index 00000000..93ea8303 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Hydras/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Imps/Description.txt b/Text/Game/Heroes/Specializations/Added/Imps/Description.txt new file mode 100644 index 00000000..c49288a1 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Imps/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Imps/Name.txt b/Text/Game/Heroes/Specializations/Added/Imps/Name.txt new file mode 100644 index 00000000..84ec27e8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Imps/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/LDragons/Description.txt b/Text/Game/Heroes/Specializations/Added/LDragons/Description.txt new file mode 100644 index 00000000..7c977f73 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/LDragons/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/LDragons/Name.txt b/Text/Game/Heroes/Specializations/Added/LDragons/Name.txt new file mode 100644 index 00000000..f971874e Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/LDragons/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Liches/Description.txt b/Text/Game/Heroes/Specializations/Added/Liches/Description.txt new file mode 100644 index 00000000..6ab547f7 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Liches/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Liches/Name.txt b/Text/Game/Heroes/Specializations/Added/Liches/Name.txt new file mode 100644 index 00000000..3631fd0e Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Liches/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Manticores/Description.txt b/Text/Game/Heroes/Specializations/Added/Manticores/Description.txt new file mode 100644 index 00000000..f1f8e3c5 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Manticores/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Manticores/Name.txt b/Text/Game/Heroes/Specializations/Added/Manticores/Name.txt new file mode 100644 index 00000000..f02af0ba Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Manticores/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Mines/Description.txt b/Text/Game/Heroes/Specializations/Added/Mines/Description.txt new file mode 100644 index 00000000..f85f30e4 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Mines/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Mines/Name.txt b/Text/Game/Heroes/Specializations/Added/Mines/Name.txt new file mode 100644 index 00000000..6cb8bb66 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Mines/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Mines2/Description.txt b/Text/Game/Heroes/Specializations/Added/Mines2/Description.txt new file mode 100644 index 00000000..b2a7194f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Mines2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Mines2/Name.txt b/Text/Game/Heroes/Specializations/Added/Mines2/Name.txt new file mode 100644 index 00000000..cfc07449 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Mines2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Mummies/Description.txt b/Text/Game/Heroes/Specializations/Added/Mummies/Description.txt new file mode 100644 index 00000000..851159f7 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Mummies/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Mummies/Name.txt b/Text/Game/Heroes/Specializations/Added/Mummies/Name.txt new file mode 100644 index 00000000..6696f435 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Mummies/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Nightmares/Description.txt b/Text/Game/Heroes/Specializations/Added/Nightmares/Description.txt new file mode 100644 index 00000000..7dcfe001 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Nightmares/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Nightmares/Name.txt b/Text/Game/Heroes/Specializations/Added/Nightmares/Name.txt new file mode 100644 index 00000000..59b2400c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Nightmares/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Offense/Description.txt b/Text/Game/Heroes/Specializations/Added/Offense/Description.txt new file mode 100644 index 00000000..eeeca1ea Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Offense/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Offense/Name.txt b/Text/Game/Heroes/Specializations/Added/Offense/Name.txt new file mode 100644 index 00000000..31972ef6 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Offense/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Pitlords/Description.txt b/Text/Game/Heroes/Specializations/Added/Pitlords/Description.txt new file mode 100644 index 00000000..10c68cb1 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Pitlords/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Pitlords/Name.txt b/Text/Game/Heroes/Specializations/Added/Pitlords/Name.txt new file mode 100644 index 00000000..93786e36 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Pitlords/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Rakshasas/Description.txt b/Text/Game/Heroes/Specializations/Added/Rakshasas/Description.txt new file mode 100644 index 00000000..1678b6d6 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Rakshasas/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Rakshasas/Name.txt b/Text/Game/Heroes/Specializations/Added/Rakshasas/Name.txt new file mode 100644 index 00000000..103bae49 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Rakshasas/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/SDragons/Description.txt b/Text/Game/Heroes/Specializations/Added/SDragons/Description.txt new file mode 100644 index 00000000..0b583086 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/SDragons/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/SDragons/Name.txt b/Text/Game/Heroes/Specializations/Added/SDragons/Name.txt new file mode 100644 index 00000000..cf750b1a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/SDragons/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Shamans/Description.txt b/Text/Game/Heroes/Specializations/Added/Shamans/Description.txt new file mode 100644 index 00000000..970400bc Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Shamans/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Shamans/Name.txt b/Text/Game/Heroes/Specializations/Added/Shamans/Name.txt new file mode 100644 index 00000000..998691c4 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Shamans/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterDarkE/Description.txt b/Text/Game/Heroes/Specializations/Added/ShatterDarkE/Description.txt new file mode 100644 index 00000000..cc1854ee Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterDarkE/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterDarkE/Name.txt b/Text/Game/Heroes/Specializations/Added/ShatterDarkE/Name.txt new file mode 100644 index 00000000..995ad577 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterDarkE/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterDarkO/Description.txt b/Text/Game/Heroes/Specializations/Added/ShatterDarkO/Description.txt new file mode 100644 index 00000000..cc1854ee Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterDarkO/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterDarkO/Name.txt b/Text/Game/Heroes/Specializations/Added/ShatterDarkO/Name.txt new file mode 100644 index 00000000..4ab9fb6c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterDarkO/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterDestE/Description.txt b/Text/Game/Heroes/Specializations/Added/ShatterDestE/Description.txt new file mode 100644 index 00000000..e956c6c8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterDestE/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterDestE/Name.txt b/Text/Game/Heroes/Specializations/Added/ShatterDestE/Name.txt new file mode 100644 index 00000000..ae8f30bb Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterDestE/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterDestO/Description.txt b/Text/Game/Heroes/Specializations/Added/ShatterDestO/Description.txt new file mode 100644 index 00000000..e956c6c8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterDestO/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterDestO/Name.txt b/Text/Game/Heroes/Specializations/Added/ShatterDestO/Name.txt new file mode 100644 index 00000000..4156a046 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterDestO/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterLightE/Description.txt b/Text/Game/Heroes/Specializations/Added/ShatterLightE/Description.txt new file mode 100644 index 00000000..6f99b524 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterLightE/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterLightE/Name.txt b/Text/Game/Heroes/Specializations/Added/ShatterLightE/Name.txt new file mode 100644 index 00000000..e83b4ff2 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterLightE/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterLightO/Description.txt b/Text/Game/Heroes/Specializations/Added/ShatterLightO/Description.txt new file mode 100644 index 00000000..1f3682d2 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterLightO/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterLightO/Name.txt b/Text/Game/Heroes/Specializations/Added/ShatterLightO/Name.txt new file mode 100644 index 00000000..b9c3783a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterLightO/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterSumE/Description.txt b/Text/Game/Heroes/Specializations/Added/ShatterSumE/Description.txt new file mode 100644 index 00000000..7b77ce9e Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterSumE/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterSumE/Name.txt b/Text/Game/Heroes/Specializations/Added/ShatterSumE/Name.txt new file mode 100644 index 00000000..c8b34883 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterSumE/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterSumO/Description.txt b/Text/Game/Heroes/Specializations/Added/ShatterSumO/Description.txt new file mode 100644 index 00000000..c690230d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterSumO/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/ShatterSumO/Name.txt b/Text/Game/Heroes/Specializations/Added/ShatterSumO/Name.txt new file mode 100644 index 00000000..44053fc9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/ShatterSumO/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Skeletons/Description.txt b/Text/Game/Heroes/Specializations/Added/Skeletons/Description.txt new file mode 100644 index 00000000..14a3c207 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Skeletons/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Skeletons/Name.txt b/Text/Game/Heroes/Specializations/Added/Skeletons/Name.txt new file mode 100644 index 00000000..01a92319 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Skeletons/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Spellpower/Description.txt b/Text/Game/Heroes/Specializations/Added/Spellpower/Description.txt new file mode 100644 index 00000000..ca50c5e0 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Spellpower/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Spellpower/Name.txt b/Text/Game/Heroes/Specializations/Added/Spellpower/Name.txt new file mode 100644 index 00000000..363ef7d3 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Spellpower/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Spellpower2/Description.txt b/Text/Game/Heroes/Specializations/Added/Spellpower2/Description.txt new file mode 100644 index 00000000..6445c315 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Spellpower2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Spellpower2/Name.txt b/Text/Game/Heroes/Specializations/Added/Spellpower2/Name.txt new file mode 100644 index 00000000..4ad26b15 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Spellpower2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Spellpower3/Description.txt b/Text/Game/Heroes/Specializations/Added/Spellpower3/Description.txt new file mode 100644 index 00000000..3ce3cce4 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Spellpower3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Spellpower3/Name.txt b/Text/Game/Heroes/Specializations/Added/Spellpower3/Name.txt new file mode 100644 index 00000000..a8b9b206 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Spellpower3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Sprites/Description.txt b/Text/Game/Heroes/Specializations/Added/Sprites/Description.txt new file mode 100644 index 00000000..36f9311a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Sprites/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Sprites/Name.txt b/Text/Game/Heroes/Specializations/Added/Sprites/Name.txt new file mode 100644 index 00000000..7d448551 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Sprites/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Thanes/Description.txt b/Text/Game/Heroes/Specializations/Added/Thanes/Description.txt new file mode 100644 index 00000000..dde87b2a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Thanes/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Thanes/Name.txt b/Text/Game/Heroes/Specializations/Added/Thanes/Name.txt new file mode 100644 index 00000000..2b5640ea Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Thanes/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Titans/Description.txt b/Text/Game/Heroes/Specializations/Added/Titans/Description.txt new file mode 100644 index 00000000..fda13f84 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Titans/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Titans/Name.txt b/Text/Game/Heroes/Specializations/Added/Titans/Name.txt new file mode 100644 index 00000000..7076cf4c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Titans/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Treants/Description.txt b/Text/Game/Heroes/Specializations/Added/Treants/Description.txt new file mode 100644 index 00000000..63753f70 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Treants/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Treants/Name.txt b/Text/Game/Heroes/Specializations/Added/Treants/Name.txt new file mode 100644 index 00000000..0bae01a1 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Treants/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Vampires/Description.txt b/Text/Game/Heroes/Specializations/Added/Vampires/Description.txt new file mode 100644 index 00000000..f0424c27 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Vampires/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Vampires/Name.txt b/Text/Game/Heroes/Specializations/Added/Vampires/Name.txt new file mode 100644 index 00000000..394eb1f6 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Vampires/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Wights/Description.txt b/Text/Game/Heroes/Specializations/Added/Wights/Description.txt new file mode 100644 index 00000000..31151ae5 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Wights/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Wights/Name.txt b/Text/Game/Heroes/Specializations/Added/Wights/Name.txt new file mode 100644 index 00000000..d06a3b75 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Wights/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Witches/Description.txt b/Text/Game/Heroes/Specializations/Added/Witches/Description.txt new file mode 100644 index 00000000..0f2f5d24 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Witches/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Witches/Name.txt b/Text/Game/Heroes/Specializations/Added/Witches/Name.txt new file mode 100644 index 00000000..95c27be7 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Witches/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Wolves/Description.txt b/Text/Game/Heroes/Specializations/Added/Wolves/Description.txt new file mode 100644 index 00000000..84e40aef Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Wolves/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Added/Wolves/Name.txt b/Text/Game/Heroes/Specializations/Added/Wolves/Name.txt new file mode 100644 index 00000000..5e81647b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Added/Wolves/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte/Description.txt new file mode 100644 index 00000000..fecc876b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte/Name.txt new file mode 100644 index 00000000..9886ec11 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte2/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte2/Description.txt new file mode 100644 index 00000000..0d6b0176 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte2/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte2/Name.txt new file mode 100644 index 00000000..89acef20 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte3/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte3/Description.txt new file mode 100644 index 00000000..fecc876b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte3/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte3/Name.txt new file mode 100644 index 00000000..7ac3047b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte4/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte4/Description.txt new file mode 100644 index 00000000..0d6b0176 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte4/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte4/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte4/Name.txt new file mode 100644 index 00000000..61da649d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte4/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte5/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte5/Description.txt new file mode 100644 index 00000000..6dfaac85 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte5/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte5/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte5/Name.txt new file mode 100644 index 00000000..6f5deb7b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte5/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte6/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte6/Description.txt new file mode 100644 index 00000000..6dfaac85 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte6/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte6/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte6/Name.txt new file mode 100644 index 00000000..09e8d05f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte6/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte7/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte7/Description.txt new file mode 100644 index 00000000..6dfaac85 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte7/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte7/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte7/Name.txt new file mode 100644 index 00000000..9d338ddb Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Dark_Acolyte7/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Evasive/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Evasive/Description.txt new file mode 100644 index 00000000..8ea05192 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Evasive/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Evasive/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Evasive/Name.txt new file mode 100644 index 00000000..e36a044f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Evasive/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Evasive/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Dungeon/Evasive/ThisIsAName.txt new file mode 100644 index 00000000..f2ba82cf Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Evasive/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Evasive2/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Evasive2/Description.txt new file mode 100644 index 00000000..811dd549 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Evasive2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Evasive2/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Evasive2/Name.txt new file mode 100644 index 00000000..89b5fa55 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Evasive2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Evasive3/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Evasive3/Description.txt new file mode 100644 index 00000000..8ea05192 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Evasive3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Evasive3/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Evasive3/Name.txt new file mode 100644 index 00000000..6e9d6a68 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Evasive3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Evasive3/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Dungeon/Evasive3/ThisIsAName.txt new file mode 100644 index 00000000..f2ba82cf Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Evasive3/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Lizard_Breeder/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Lizard_Breeder/Description.txt new file mode 100644 index 00000000..c0ac8ccf Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Lizard_Breeder/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Lizard_Breeder/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Lizard_Breeder/Name.txt new file mode 100644 index 00000000..4dcaae47 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Lizard_Breeder/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Lizard_Breeder/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Dungeon/Lizard_Breeder/ThisIsAName.txt new file mode 100644 index 00000000..38a99ad1 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Lizard_Breeder/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/MasterOfInitiative/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/MasterOfInitiative/Description.txt new file mode 100644 index 00000000..0fb59a6b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/MasterOfInitiative/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/MasterOfInitiative/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/MasterOfInitiative/Name.txt new file mode 100644 index 00000000..3c22423e Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/MasterOfInitiative/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/MasterOfInitiative/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Dungeon/MasterOfInitiative/ThisIsAName.txt new file mode 100644 index 00000000..b8c39872 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/MasterOfInitiative/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Matron_Salvo/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Matron_Salvo/Description.txt new file mode 100644 index 00000000..295971c4 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Matron_Salvo/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Matron_Salvo/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Matron_Salvo/Name.txt new file mode 100644 index 00000000..14e6b765 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Matron_Salvo/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Matron_Salvo/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Dungeon/Matron_Salvo/ThisIsAName.txt new file mode 100644 index 00000000..efb502cb Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Matron_Salvo/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Poisoner/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Poisoner/Description.txt new file mode 100644 index 00000000..25b1a1e3 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Poisoner/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Poisoner/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Poisoner/Name.txt new file mode 100644 index 00000000..02512059 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Poisoner/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Poisoner2/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Poisoner2/Description.txt new file mode 100644 index 00000000..4c590731 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Poisoner2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Poisoner2/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Poisoner2/Name.txt new file mode 100644 index 00000000..6b2b647b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Poisoner2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Power_Bargain/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Power_Bargain/Description.txt new file mode 100644 index 00000000..de2650ec Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Power_Bargain/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Power_Bargain/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Power_Bargain/Name.txt new file mode 100644 index 00000000..d88f4a04 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Power_Bargain/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Power_Bargain2/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Power_Bargain2/Description.txt new file mode 100644 index 00000000..de2650ec Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Power_Bargain2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Power_Bargain2/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Power_Bargain2/Name.txt new file mode 100644 index 00000000..cb51f44e Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Power_Bargain2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Prudent/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Prudent/Description.txt new file mode 100644 index 00000000..9f522dbe Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Prudent/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Prudent/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Prudent/Name.txt new file mode 100644 index 00000000..e7cad02a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Prudent/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Prudent/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Dungeon/Prudent/ThisIsAName.txt new file mode 100644 index 00000000..d2cb1289 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Prudent/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Prudent2/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Prudent2/Description.txt new file mode 100644 index 00000000..9f522dbe Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Prudent2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Prudent2/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Prudent2/Name.txt new file mode 100644 index 00000000..a38d94cb Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Prudent2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Prudent3/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Prudent3/Description.txt new file mode 100644 index 00000000..9f522dbe Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Prudent3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Prudent3/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Prudent3/Name.txt new file mode 100644 index 00000000..38ee6f4b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Prudent3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Prudent3/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Dungeon/Prudent3/ThisIsAName.txt new file mode 100644 index 00000000..d2cb1289 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Prudent3/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Savage/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Savage/Description.txt new file mode 100644 index 00000000..7e7cdf78 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Savage/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Savage/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Savage/Name.txt new file mode 100644 index 00000000..372371f3 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Savage/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Savage/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Dungeon/Savage/ThisIsAName.txt new file mode 100644 index 00000000..6e39c3a1 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Savage/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Seducer/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Seducer/Description.txt new file mode 100644 index 00000000..f09639fc Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Seducer/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Seducer/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Seducer/Name.txt new file mode 100644 index 00000000..7626d73c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Seducer/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Seducer/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Dungeon/Seducer/ThisIsAName.txt new file mode 100644 index 00000000..3c718cbc Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Seducer/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Slaveholder/Description.txt b/Text/Game/Heroes/Specializations/Dungeon/Slaveholder/Description.txt new file mode 100644 index 00000000..4023af80 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Slaveholder/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Slaveholder/Name.txt b/Text/Game/Heroes/Specializations/Dungeon/Slaveholder/Name.txt new file mode 100644 index 00000000..24a5fbce Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Slaveholder/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Dungeon/Slaveholder/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Dungeon/Slaveholder/ThisIsAName.txt new file mode 100644 index 00000000..4436a3ae Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dungeon/Slaveholder/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Dwarves/Rider/Description.txt b/Text/Game/Heroes/Specializations/Dwarves/Rider/Description.txt new file mode 100644 index 00000000..985622be Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dwarves/Rider/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Dwarves/Rider/Name.txt b/Text/Game/Heroes/Specializations/Dwarves/Rider/Name.txt new file mode 100644 index 00000000..fe22befa Binary files /dev/null and b/Text/Game/Heroes/Specializations/Dwarves/Rider/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Axe_Master/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Axe_Master/Description.txt new file mode 100644 index 00000000..da31e003 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Axe_Master/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Axe_Master/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Axe_Master/Name.txt new file mode 100644 index 00000000..4a6e7b88 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Axe_Master/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Border_Guard/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Border_Guard/Description.txt new file mode 100644 index 00000000..30e817b8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Border_Guard/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Border_Guard/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Border_Guard/Name.txt new file mode 100644 index 00000000..86c898f3 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Border_Guard/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Courtier/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Courtier/Description.txt new file mode 100644 index 00000000..97482ec6 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Courtier/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Courtier/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Courtier/Name.txt new file mode 100644 index 00000000..a166e97b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Courtier/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Defender/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Defender/Description.txt new file mode 100644 index 00000000..cf3b3471 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Defender/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Defender/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Defender/Name.txt new file mode 100644 index 00000000..e33df811 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Defender/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Economist/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Economist/Description.txt new file mode 100644 index 00000000..01a444da Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Economist/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Economist/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Economist/Name.txt new file mode 100644 index 00000000..3bc78327 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Economist/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Magister/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Magister/Description.txt new file mode 100644 index 00000000..69638e31 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Magister/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Magister/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Magister/Name.txt new file mode 100644 index 00000000..54272fe9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Magister/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Mountain_King/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Mountain_King/Description.txt new file mode 100644 index 00000000..794b88e9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Mountain_King/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Mountain_King/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Mountain_King/Name.txt new file mode 100644 index 00000000..b72dfc3a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Mountain_King/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Researcher/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Researcher/Description.txt new file mode 100644 index 00000000..3a0e30c5 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Researcher/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Researcher/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Researcher/Name.txt new file mode 100644 index 00000000..47dbb79a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Researcher/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Rider/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Rider/Description.txt new file mode 100644 index 00000000..24bfa2db Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Rider/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Rider/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Rider/Name.txt new file mode 100644 index 00000000..5f474188 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Rider/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer/Description.txt new file mode 100644 index 00000000..699751ba Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer/Name.txt new file mode 100644 index 00000000..3b2852bc Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer2/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer2/Description.txt new file mode 100644 index 00000000..699751ba Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer2/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer2/Name.txt new file mode 100644 index 00000000..3acdea0e Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer3/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer3/Description.txt new file mode 100644 index 00000000..f320ad13 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer3/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer3/Name.txt new file mode 100644 index 00000000..46ad66a9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer4/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer4/Description.txt new file mode 100644 index 00000000..c4dd696b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer4/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer4/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer4/Name.txt new file mode 100644 index 00000000..d3a315dc Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Sacred_Hammer4/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Stormcaller/Description.txt b/Text/Game/Heroes/Specializations/Fortress/Stormcaller/Description.txt new file mode 100644 index 00000000..1969f96b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Stormcaller/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Fortress/Stormcaller/Name.txt b/Text/Game/Heroes/Specializations/Fortress/Stormcaller/Name.txt new file mode 100644 index 00000000..bb03dfde Binary files /dev/null and b/Text/Game/Heroes/Specializations/Fortress/Stormcaller/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Archer_Commander/Description.txt b/Text/Game/Heroes/Specializations/Haven/Archer_Commander/Description.txt new file mode 100644 index 00000000..71ac3ab9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Archer_Commander/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Archer_Commander/Name.txt b/Text/Game/Heroes/Specializations/Haven/Archer_Commander/Name.txt new file mode 100644 index 00000000..087964c8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Archer_Commander/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Archer_Commander/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Haven/Archer_Commander/ThisIsAName.txt new file mode 100644 index 00000000..afd820f3 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Archer_Commander/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Artilleryman/Description.txt b/Text/Game/Heroes/Specializations/Haven/Artilleryman/Description.txt new file mode 100644 index 00000000..3cb45f3d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Artilleryman/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Artilleryman/Name.txt b/Text/Game/Heroes/Specializations/Haven/Artilleryman/Name.txt new file mode 100644 index 00000000..420cfba8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Artilleryman/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Artilleryman/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Haven/Artilleryman/ThisIsAName.txt new file mode 100644 index 00000000..480f3414 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Artilleryman/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Artilleryman2/Description.txt b/Text/Game/Heroes/Specializations/Haven/Artilleryman2/Description.txt new file mode 100644 index 00000000..cbba7429 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Artilleryman2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Artilleryman2/Name.txt b/Text/Game/Heroes/Specializations/Haven/Artilleryman2/Name.txt new file mode 100644 index 00000000..8725a3d0 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Artilleryman2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Artilleryman3/Description.txt b/Text/Game/Heroes/Specializations/Haven/Artilleryman3/Description.txt new file mode 100644 index 00000000..3cb45f3d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Artilleryman3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Artilleryman3/Name.txt b/Text/Game/Heroes/Specializations/Haven/Artilleryman3/Name.txt new file mode 100644 index 00000000..bad1276b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Artilleryman3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/ChosenByGods/Description.txt b/Text/Game/Heroes/Specializations/Haven/ChosenByGods/Description.txt new file mode 100644 index 00000000..7c7224db Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/ChosenByGods/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/ChosenByGods/Name.txt b/Text/Game/Heroes/Specializations/Haven/ChosenByGods/Name.txt new file mode 100644 index 00000000..474e3c52 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/ChosenByGods/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Expediter/Description.txt b/Text/Game/Heroes/Specializations/Haven/Expediter/Description.txt new file mode 100644 index 00000000..cfb3b2e5 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Expediter/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Expediter/Name.txt b/Text/Game/Heroes/Specializations/Haven/Expediter/Name.txt new file mode 100644 index 00000000..d013298d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Expediter/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Expediter2/Description.txt b/Text/Game/Heroes/Specializations/Haven/Expediter2/Description.txt new file mode 100644 index 00000000..cfb3b2e5 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Expediter2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Expediter2/Name.txt b/Text/Game/Heroes/Specializations/Haven/Expediter2/Name.txt new file mode 100644 index 00000000..762e0bf8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Expediter2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Expediter3/Description.txt b/Text/Game/Heroes/Specializations/Haven/Expediter3/Description.txt new file mode 100644 index 00000000..a5fb6b6b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Expediter3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Expediter3/Name.txt b/Text/Game/Heroes/Specializations/Haven/Expediter3/Name.txt new file mode 100644 index 00000000..053c0a1b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Expediter3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Expediter4/Description.txt b/Text/Game/Heroes/Specializations/Haven/Expediter4/Description.txt new file mode 100644 index 00000000..ef5fed23 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Expediter4/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Expediter4/Name.txt b/Text/Game/Heroes/Specializations/Haven/Expediter4/Name.txt new file mode 100644 index 00000000..383ba345 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Expediter4/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Griffon_Commander/Description.txt b/Text/Game/Heroes/Specializations/Haven/Griffon_Commander/Description.txt new file mode 100644 index 00000000..79193ff0 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Griffon_Commander/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Griffon_Commander/Name.txt b/Text/Game/Heroes/Specializations/Haven/Griffon_Commander/Name.txt new file mode 100644 index 00000000..e3da89d3 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Griffon_Commander/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Griffon_Commander/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Haven/Griffon_Commander/ThisIsAName.txt new file mode 100644 index 00000000..2597a45e Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Griffon_Commander/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Griffon_Commander2/Description.txt b/Text/Game/Heroes/Specializations/Haven/Griffon_Commander2/Description.txt new file mode 100644 index 00000000..1264cf53 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Griffon_Commander2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Griffon_Commander2/Name.txt b/Text/Game/Heroes/Specializations/Haven/Griffon_Commander2/Name.txt new file mode 100644 index 00000000..57bb9aa3 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Griffon_Commander2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Infantry_Commander/Description.txt b/Text/Game/Heroes/Specializations/Haven/Infantry_Commander/Description.txt new file mode 100644 index 00000000..71d04299 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Infantry_Commander/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Infantry_Commander/Name.txt b/Text/Game/Heroes/Specializations/Haven/Infantry_Commander/Name.txt new file mode 100644 index 00000000..9ab540dd Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Infantry_Commander/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Infantry_Commander/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Haven/Infantry_Commander/ThisIsAName.txt new file mode 100644 index 00000000..17e99761 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Infantry_Commander/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Infantry_Commander2/Description.txt b/Text/Game/Heroes/Specializations/Haven/Infantry_Commander2/Description.txt new file mode 100644 index 00000000..71d04299 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Infantry_Commander2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Infantry_Commander2/Name.txt b/Text/Game/Heroes/Specializations/Haven/Infantry_Commander2/Name.txt new file mode 100644 index 00000000..7e81297b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Infantry_Commander2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Jouster/Description.txt b/Text/Game/Heroes/Specializations/Haven/Jouster/Description.txt new file mode 100644 index 00000000..0395101d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Jouster/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Jouster/Name.txt b/Text/Game/Heroes/Specializations/Haven/Jouster/Name.txt new file mode 100644 index 00000000..a9c2f988 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Jouster/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Jouster/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Haven/Jouster/ThisIsAName.txt new file mode 100644 index 00000000..7abda3fd Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Jouster/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Jouster2/Description.txt b/Text/Game/Heroes/Specializations/Haven/Jouster2/Description.txt new file mode 100644 index 00000000..71a9273c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Jouster2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Jouster2/Name.txt b/Text/Game/Heroes/Specializations/Haven/Jouster2/Name.txt new file mode 100644 index 00000000..05d046c6 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Jouster2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Jouster2/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Haven/Jouster2/ThisIsAName.txt new file mode 100644 index 00000000..7abda3fd Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Jouster2/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Squire/Description.txt b/Text/Game/Heroes/Specializations/Haven/Squire/Description.txt new file mode 100644 index 00000000..da9060fd Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Squire/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Squire/Name.txt b/Text/Game/Heroes/Specializations/Haven/Squire/Name.txt new file mode 100644 index 00000000..aa8af0b8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Squire/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Squire/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Haven/Squire/ThisIsAName.txt new file mode 100644 index 00000000..0b719c6c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Squire/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Suzerain/Description.txt b/Text/Game/Heroes/Specializations/Haven/Suzerain/Description.txt new file mode 100644 index 00000000..f8a24119 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Suzerain/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Suzerain/Name.txt b/Text/Game/Heroes/Specializations/Haven/Suzerain/Name.txt new file mode 100644 index 00000000..0b3a0822 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Suzerain/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/VesselOfElrath/Description.txt b/Text/Game/Heroes/Specializations/Haven/VesselOfElrath/Description.txt new file mode 100644 index 00000000..6b4e5b19 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/VesselOfElrath/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/VesselOfElrath/Name.txt b/Text/Game/Heroes/Specializations/Haven/VesselOfElrath/Name.txt new file mode 100644 index 00000000..b99e268b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/VesselOfElrath/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Wanderer/Description.txt b/Text/Game/Heroes/Specializations/Haven/Wanderer/Description.txt new file mode 100644 index 00000000..39b65986 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Wanderer/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Wanderer/Name.txt b/Text/Game/Heroes/Specializations/Haven/Wanderer/Name.txt new file mode 100644 index 00000000..150951a9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Wanderer/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Wanderer2/Description.txt b/Text/Game/Heroes/Specializations/Haven/Wanderer2/Description.txt new file mode 100644 index 00000000..198a2b31 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Wanderer2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Wanderer2/Name.txt b/Text/Game/Heroes/Specializations/Haven/Wanderer2/Name.txt new file mode 100644 index 00000000..8d2b911a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Wanderer2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Wanderer3/Description.txt b/Text/Game/Heroes/Specializations/Haven/Wanderer3/Description.txt new file mode 100644 index 00000000..4dc700de Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Wanderer3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/Wanderer3/Name.txt b/Text/Game/Heroes/Specializations/Haven/Wanderer3/Name.txt new file mode 100644 index 00000000..d7dbb626 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/Wanderer3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/White_Knight/Description.txt b/Text/Game/Heroes/Specializations/Haven/White_Knight/Description.txt new file mode 100644 index 00000000..60a20d2a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/White_Knight/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/White_Knight/Name.txt b/Text/Game/Heroes/Specializations/Haven/White_Knight/Name.txt new file mode 100644 index 00000000..98ef89fe Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/White_Knight/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/White_Knight2/Description.txt b/Text/Game/Heroes/Specializations/Haven/White_Knight2/Description.txt new file mode 100644 index 00000000..5f648f88 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/White_Knight2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Haven/White_Knight2/Name.txt b/Text/Game/Heroes/Specializations/Haven/White_Knight2/Name.txt new file mode 100644 index 00000000..b9fe6c4e Binary files /dev/null and b/Text/Game/Heroes/Specializations/Haven/White_Knight2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Beater/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Beater/Description.txt new file mode 100644 index 00000000..035bfe46 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Beater/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Beater/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Beater/Name.txt new file mode 100644 index 00000000..10198137 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Beater/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Beater2/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Beater2/Description.txt new file mode 100644 index 00000000..dc2f6d98 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Beater2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Beater2/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Beater2/Name.txt new file mode 100644 index 00000000..b57cba2d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Beater2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Bombardier/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Bombardier/Description.txt new file mode 100644 index 00000000..56c86520 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Bombardier/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Bombardier/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Bombardier/Name.txt new file mode 100644 index 00000000..5fcc1ac8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Bombardier/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Bombardier/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Inferno/Bombardier/ThisIsAName.txt new file mode 100644 index 00000000..7afd6d5e Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Bombardier/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Bombardier2/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Bombardier2/Description.txt new file mode 100644 index 00000000..a9ec7621 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Bombardier2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Bombardier2/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Bombardier2/Name.txt new file mode 100644 index 00000000..3b3fa55d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Bombardier2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Breeder/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Breeder/Description.txt new file mode 100644 index 00000000..3e5c36b9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Breeder/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Breeder/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Breeder/Name.txt new file mode 100644 index 00000000..7a328bc8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Breeder/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Breeder/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Inferno/Breeder/ThisIsAName.txt new file mode 100644 index 00000000..8dedb345 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Breeder/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness/Description.txt new file mode 100644 index 00000000..e13ed438 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness/Name.txt new file mode 100644 index 00000000..35c4818c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness/ThisIsAName.txt new file mode 100644 index 00000000..7d95d5fe Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness2/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness2/Description.txt new file mode 100644 index 00000000..e13ed438 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness2/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness2/Name.txt new file mode 100644 index 00000000..a61e87fd Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Flagbearer_of_Darkness2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Furious/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Furious/Description.txt new file mode 100644 index 00000000..1362c31b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Furious/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Furious/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Furious/Name.txt new file mode 100644 index 00000000..5a4887ec Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Furious/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Furious/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Inferno/Furious/ThisIsAName.txt new file mode 100644 index 00000000..a6f96a40 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Furious/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Furious2/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Furious2/Description.txt new file mode 100644 index 00000000..e3e3c11f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Furious2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Furious2/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Furious2/Name.txt new file mode 100644 index 00000000..3aa8cd96 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Furious2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Furious3/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Furious3/Description.txt new file mode 100644 index 00000000..b56a382c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Furious3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Furious3/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Furious3/Name.txt new file mode 100644 index 00000000..33708f87 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Furious3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Gate_Keeper/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Gate_Keeper/Description.txt new file mode 100644 index 00000000..bb764404 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Gate_Keeper/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Gate_Keeper/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Gate_Keeper/Name.txt new file mode 100644 index 00000000..da186e0a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Gate_Keeper/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Hypnotist/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Hypnotist/Description.txt new file mode 100644 index 00000000..17399c37 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Hypnotist/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Hypnotist/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Hypnotist/Name.txt new file mode 100644 index 00000000..3e33e479 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Hypnotist/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Hypnotist2/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Hypnotist2/Description.txt new file mode 100644 index 00000000..17399c37 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Hypnotist2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Hypnotist2/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Hypnotist2/Name.txt new file mode 100644 index 00000000..642641fc Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Hypnotist2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Hypnotist3/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Hypnotist3/Description.txt new file mode 100644 index 00000000..5f35439b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Hypnotist3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Hypnotist3/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Hypnotist3/Name.txt new file mode 100644 index 00000000..b6a826b3 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Hypnotist3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Impregnable/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Impregnable/Description.txt new file mode 100644 index 00000000..8e54787e Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Impregnable/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Impregnable/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Impregnable/Name.txt new file mode 100644 index 00000000..af216692 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Impregnable/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Impregnable/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Inferno/Impregnable/ThisIsAName.txt new file mode 100644 index 00000000..80ed478d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Impregnable/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Impregnable2/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Impregnable2/Description.txt new file mode 100644 index 00000000..7969f4bd Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Impregnable2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Impregnable2/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Impregnable2/Name.txt new file mode 100644 index 00000000..d825b9c2 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Impregnable2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Impregnable3/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Impregnable3/Description.txt new file mode 100644 index 00000000..cdc95388 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Impregnable3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Impregnable3/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Impregnable3/Name.txt new file mode 100644 index 00000000..4505988d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Impregnable3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Temptress/Description.txt b/Text/Game/Heroes/Specializations/Inferno/Temptress/Description.txt new file mode 100644 index 00000000..45c3ba77 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Temptress/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Temptress/Name.txt b/Text/Game/Heroes/Specializations/Inferno/Temptress/Name.txt new file mode 100644 index 00000000..92349f04 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Temptress/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Inferno/Temptress/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Inferno/Temptress/ThisIsAName.txt new file mode 100644 index 00000000..18c5cb31 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Inferno/Temptress/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath/Description.txt new file mode 100644 index 00000000..d8d6153b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath/Name.txt new file mode 100644 index 00000000..27cac982 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath2/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath2/Description.txt new file mode 100644 index 00000000..cc9ed164 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath2/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath2/Name.txt new file mode 100644 index 00000000..cef30a77 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath3/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath3/Description.txt new file mode 100644 index 00000000..d8d6153b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath3/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath3/Name.txt new file mode 100644 index 00000000..8381505d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath4/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath4/Description.txt new file mode 100644 index 00000000..1e6ea0dd Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath4/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath4/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath4/Name.txt new file mode 100644 index 00000000..4fae8e9d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath4/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath5/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath5/Description.txt new file mode 100644 index 00000000..371337ac Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath5/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath5/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath5/Name.txt new file mode 100644 index 00000000..276437c0 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath5/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath6/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath6/Description.txt new file mode 100644 index 00000000..d8d6153b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath6/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath6/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath6/Name.txt new file mode 100644 index 00000000..11c52750 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/AvatarOfDeath6/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Dark_Emissary/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Dark_Emissary/Description.txt new file mode 100644 index 00000000..e691b744 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Dark_Emissary/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Dark_Emissary/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Dark_Emissary/Name.txt new file mode 100644 index 00000000..f983acb9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Dark_Emissary/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Dark_Emissary2/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Dark_Emissary2/Description.txt new file mode 100644 index 00000000..e691b744 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Dark_Emissary2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Dark_Emissary2/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Dark_Emissary2/Name.txt new file mode 100644 index 00000000..f983acb9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Dark_Emissary2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Empiric/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Empiric/Description.txt new file mode 100644 index 00000000..b6a0c54c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Empiric/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Empiric/Name.2.txt b/Text/Game/Heroes/Specializations/Necropolis/Empiric/Name.2.txt new file mode 100644 index 00000000..b3f10958 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Empiric/Name.2.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Empiric/Name.3.txt b/Text/Game/Heroes/Specializations/Necropolis/Empiric/Name.3.txt new file mode 100644 index 00000000..6234576c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Empiric/Name.3.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Empiric/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Empiric/Name.txt new file mode 100644 index 00000000..3adf2183 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Empiric/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Empiric/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Necropolis/Empiric/ThisIsAName.txt new file mode 100644 index 00000000..db045ce2 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Empiric/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Empiric2/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Empiric2/Description.txt new file mode 100644 index 00000000..cd68d866 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Empiric2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Empiric2/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Empiric2/Name.txt new file mode 100644 index 00000000..cc2b4484 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Empiric2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Empiric3/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Empiric3/Description.txt new file mode 100644 index 00000000..cb48a996 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Empiric3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Empiric3/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Empiric3/Name.txt new file mode 100644 index 00000000..8056c2ca Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Empiric3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Heir_of_Undeath/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Heir_of_Undeath/Description.txt new file mode 100644 index 00000000..1d96f2a7 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Heir_of_Undeath/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Heir_of_Undeath/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Heir_of_Undeath/Name.txt new file mode 100644 index 00000000..93eb3eca Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Heir_of_Undeath/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Maledictor/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Maledictor/Description.txt new file mode 100644 index 00000000..c6fbb2c8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Maledictor/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Maledictor/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Maledictor/Name.txt new file mode 100644 index 00000000..cbceedbd Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Maledictor/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Maledictor2/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Maledictor2/Description.txt new file mode 100644 index 00000000..c6fbb2c8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Maledictor2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Maledictor2/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Maledictor2/Name.txt new file mode 100644 index 00000000..67040c30 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Maledictor2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Mind_Cleaner/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Mind_Cleaner/Description.txt new file mode 100644 index 00000000..0ab5f0e4 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Mind_Cleaner/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Mind_Cleaner/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Mind_Cleaner/Name.txt new file mode 100644 index 00000000..b7d3fa56 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Mind_Cleaner/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Mind_Cleaner2/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Mind_Cleaner2/Description.txt new file mode 100644 index 00000000..0ab5f0e4 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Mind_Cleaner2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Mind_Cleaner2/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Mind_Cleaner2/Name.txt new file mode 100644 index 00000000..36e52316 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Mind_Cleaner2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Reanimator/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Reanimator/Description.txt new file mode 100644 index 00000000..c768fc4f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Reanimator/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Reanimator/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Reanimator/Name.txt new file mode 100644 index 00000000..8bc1f5c1 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Reanimator/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Soulhunter/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Soulhunter/Description.txt new file mode 100644 index 00000000..19da7a18 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Soulhunter/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Soulhunter/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Soulhunter/Name.txt new file mode 100644 index 00000000..3b2339c6 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Soulhunter/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Soulhunter/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Necropolis/Soulhunter/ThisIsAName.txt new file mode 100644 index 00000000..1cc501bb Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Soulhunter/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Soulhunter2/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Soulhunter2/Description.txt new file mode 100644 index 00000000..08ac6972 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Soulhunter2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Soulhunter2/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Soulhunter2/Name.txt new file mode 100644 index 00000000..8b6219b4 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Soulhunter2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Vamipre_Princess/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Vamipre_Princess/Description.txt new file mode 100644 index 00000000..216508f2 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Vamipre_Princess/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Vamipre_Princess/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Vamipre_Princess/Name.txt new file mode 100644 index 00000000..b4f80baa Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Vamipre_Princess/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Vampire_Princess/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Vampire_Princess/Description.txt new file mode 100644 index 00000000..2b1e3b2b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Vampire_Princess/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Vampire_Princess/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Vampire_Princess/Name.txt new file mode 100644 index 00000000..76c54298 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Vampire_Princess/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Vampire_Princess/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Necropolis/Vampire_Princess/ThisIsAName.txt new file mode 100644 index 00000000..ee489d2c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Vampire_Princess/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader/Description.txt new file mode 100644 index 00000000..deba594f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader/Name.txt new file mode 100644 index 00000000..e4e09446 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader/ThisIsAName.txt new file mode 100644 index 00000000..84c9ce2d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader_A/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader_A/Description.txt new file mode 100644 index 00000000..a1d9964f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader_A/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader_A/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader_A/Name.txt new file mode 100644 index 00000000..df56192a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader_A/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader_B/Description.txt b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader_B/Description.txt new file mode 100644 index 00000000..f29ef5d2 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader_B/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader_B/Name.txt b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader_B/Name.txt new file mode 100644 index 00000000..67242937 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Necropolis/Zombie_Leader_B/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Blade_Master/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Blade_Master/Description.txt new file mode 100644 index 00000000..65991dba Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Blade_Master/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Blade_Master/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Blade_Master/Name.txt new file mode 100644 index 00000000..ea9912f3 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Blade_Master/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Blade_Master/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Preserve/Blade_Master/ThisIsAName.txt new file mode 100644 index 00000000..ccb2966a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Blade_Master/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Call_of_the_Wasp/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Call_of_the_Wasp/Description.txt new file mode 100644 index 00000000..6942f569 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Call_of_the_Wasp/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Call_of_the_Wasp/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Call_of_the_Wasp/Name.txt new file mode 100644 index 00000000..c6243377 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Call_of_the_Wasp/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Call_of_the_Wasp2/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Call_of_the_Wasp2/Description.txt new file mode 100644 index 00000000..6942f569 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Call_of_the_Wasp2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Call_of_the_Wasp2/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Call_of_the_Wasp2/Name.txt new file mode 100644 index 00000000..9ee9e5de Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Call_of_the_Wasp2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Elven_Fury/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Elven_Fury/Description.txt new file mode 100644 index 00000000..9af3588d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Elven_Fury/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Elven_Fury/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Elven_Fury/Name.txt new file mode 100644 index 00000000..bac943b3 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Elven_Fury/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Elven_Fury/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Preserve/Elven_Fury/ThisIsAName.txt new file mode 100644 index 00000000..8de7fa25 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Elven_Fury/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Elven_Volley/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Elven_Volley/Description.txt new file mode 100644 index 00000000..61f2aa36 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Elven_Volley/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Elven_Volley/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Elven_Volley/Name.txt new file mode 100644 index 00000000..bb693bc6 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Elven_Volley/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Favorite/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Favorite/Description.txt new file mode 100644 index 00000000..85066c45 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Favorite/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Favorite/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Favorite/Name.txt new file mode 100644 index 00000000..220e4728 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Favorite/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Forest_Guardian/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Forest_Guardian/Description.txt new file mode 100644 index 00000000..7dfd2011 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Forest_Guardian/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Forest_Guardian/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Forest_Guardian/Name.txt new file mode 100644 index 00000000..e3de771b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Forest_Guardian/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Forest_Guardian/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Preserve/Forest_Guardian/ThisIsAName.txt new file mode 100644 index 00000000..18bf5d47 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Forest_Guardian/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Hunter/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Hunter/Description.txt new file mode 100644 index 00000000..ce635abf Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Hunter/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Hunter/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Hunter/Name.txt new file mode 100644 index 00000000..d331ec42 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Hunter/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Hunter/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Preserve/Hunter/ThisIsAName.txt new file mode 100644 index 00000000..25a0a886 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Hunter/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Infernal_Machine/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Infernal_Machine/Description.txt new file mode 100644 index 00000000..1ec16355 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Infernal_Machine/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Infernal_Machine/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Infernal_Machine/Name.txt new file mode 100644 index 00000000..69335b19 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Infernal_Machine/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior/Description.txt new file mode 100644 index 00000000..4614058d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior/Name.txt new file mode 100644 index 00000000..21f7ceca Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior2/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior2/Description.txt new file mode 100644 index 00000000..fa0120df Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior2/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior2/Name.txt new file mode 100644 index 00000000..82e8aa31 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior3/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior3/Description.txt new file mode 100644 index 00000000..5b8995d1 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior3/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior3/Name.txt new file mode 100644 index 00000000..86762b64 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior4/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior4/Description.txt new file mode 100644 index 00000000..4614058d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior4/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior4/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior4/Name.txt new file mode 100644 index 00000000..a2f7472f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Talented_Warrior4/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Unicorn_Trainer/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Unicorn_Trainer/Description.txt new file mode 100644 index 00000000..60d7e3e6 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Unicorn_Trainer/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Unicorn_Trainer/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Unicorn_Trainer/Name.txt new file mode 100644 index 00000000..53a7565a Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Unicorn_Trainer/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Unicorn_Trainer/ThisIsAName.txt b/Text/Game/Heroes/Specializations/Preserve/Unicorn_Trainer/ThisIsAName.txt new file mode 100644 index 00000000..b78566ab Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Unicorn_Trainer/ThisIsAName.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Waylayer/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Waylayer/Description.txt new file mode 100644 index 00000000..5061ed0f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Waylayer/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Waylayer/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Waylayer/Name.txt new file mode 100644 index 00000000..1b993f83 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Waylayer/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Waylayer2/Description.txt b/Text/Game/Heroes/Specializations/Preserve/Waylayer2/Description.txt new file mode 100644 index 00000000..5061ed0f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Waylayer2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Preserve/Waylayer2/Name.txt b/Text/Game/Heroes/Specializations/Preserve/Waylayer2/Name.txt new file mode 100644 index 00000000..593221ca Binary files /dev/null and b/Text/Game/Heroes/Specializations/Preserve/Waylayer2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Blooddrinker/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/Blooddrinker/Description.txt new file mode 100644 index 00000000..a667b308 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Blooddrinker/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Blooddrinker/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/Blooddrinker/Name.txt new file mode 100644 index 00000000..9aadbadf Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Blooddrinker/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Blooddrinker2/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/Blooddrinker2/Description.txt new file mode 100644 index 00000000..4c3334c9 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Blooddrinker2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Blooddrinker2/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/Blooddrinker2/Name.txt new file mode 100644 index 00000000..e23aac4d Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Blooddrinker2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/CentaurMistress/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/CentaurMistress/Description.txt new file mode 100644 index 00000000..8a80ffc7 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/CentaurMistress/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/CentaurMistress/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/CentaurMistress/Name.txt new file mode 100644 index 00000000..864595ed Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/CentaurMistress/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/DemonHunter/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/DemonHunter/Description.txt new file mode 100644 index 00000000..36bbd5a6 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/DemonHunter/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/DemonHunter/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/DemonHunter/Name.txt new file mode 100644 index 00000000..65bb0590 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/DemonHunter/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/GoblinKing/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/GoblinKing/Description.txt new file mode 100644 index 00000000..e838b5a0 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/GoblinKing/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/GoblinKing/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/GoblinKing/Name.txt new file mode 100644 index 00000000..fcc260e7 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/GoblinKing/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/GrimFighter/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/GrimFighter/Description.txt new file mode 100644 index 00000000..4cd7b801 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/GrimFighter/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/GrimFighter/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/GrimFighter/Name.txt new file mode 100644 index 00000000..4f98b881 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/GrimFighter/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Offender/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/Offender/Description.txt new file mode 100644 index 00000000..f9a79968 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Offender/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Offender/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/Offender/Name.txt new file mode 100644 index 00000000..d0de4782 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Offender/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Offender2/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/Offender2/Description.txt new file mode 100644 index 00000000..9a8e5064 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Offender2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Offender2/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/Offender2/Name.txt new file mode 100644 index 00000000..2b01c3f8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Offender2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Offender3/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/Offender3/Description.txt new file mode 100644 index 00000000..3026c738 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Offender3/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Offender3/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/Offender3/Name.txt new file mode 100644 index 00000000..21aa86da Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Offender3/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Offender4/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/Offender4/Description.txt new file mode 100644 index 00000000..e205feba Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Offender4/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Offender4/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/Offender4/Name.txt new file mode 100644 index 00000000..470d4309 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Offender4/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/OrcElder/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/OrcElder/Description.txt new file mode 100644 index 00000000..31f7e7db Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/OrcElder/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/OrcElder/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/OrcElder/Name.txt new file mode 100644 index 00000000..510bfd5f Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/OrcElder/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Rash/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/Rash/Description.txt new file mode 100644 index 00000000..d34ca360 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Rash/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Rash/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/Rash/Name.txt new file mode 100644 index 00000000..44c1a07b Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Rash/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Rash2/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/Rash2/Description.txt new file mode 100644 index 00000000..919b72b8 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Rash2/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/Rash2/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/Rash2/Name.txt new file mode 100644 index 00000000..c075d2ef Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/Rash2/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/WarLeader/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/WarLeader/Description.txt new file mode 100644 index 00000000..1c3151c1 Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/WarLeader/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/WarLeader/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/WarLeader/Name.txt new file mode 100644 index 00000000..f3d26c9c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/WarLeader/Name.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/WyvernTamer/Description.txt b/Text/Game/Heroes/Specializations/Stronghold/WyvernTamer/Description.txt new file mode 100644 index 00000000..1d2881be Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/WyvernTamer/Description.txt differ diff --git a/Text/Game/Heroes/Specializations/Stronghold/WyvernTamer/Name.txt b/Text/Game/Heroes/Specializations/Stronghold/WyvernTamer/Name.txt new file mode 100644 index 00000000..073cde3c Binary files /dev/null and b/Text/Game/Heroes/Specializations/Stronghold/WyvernTamer/Name.txt differ diff --git a/Text/Game/Scripts/Cursed.txt b/Text/Game/Scripts/Cursed.txt new file mode 100644 index 00000000..66817ca3 Binary files /dev/null and b/Text/Game/Scripts/Cursed.txt differ diff --git a/Text/Game/Scripts/Error.txt b/Text/Game/Scripts/Error.txt new file mode 100644 index 00000000..82e60a31 Binary files /dev/null and b/Text/Game/Scripts/Error.txt differ diff --git a/Text/Game/Scripts/Learnspell.txt b/Text/Game/Scripts/Learnspell.txt new file mode 100644 index 00000000..9f0d3630 Binary files /dev/null and b/Text/Game/Scripts/Learnspell.txt differ diff --git a/Text/Game/Scripts/MixStacksQuestion.txt b/Text/Game/Scripts/MixStacksQuestion.txt new file mode 100644 index 00000000..0d8d7641 Binary files /dev/null and b/Text/Game/Scripts/MixStacksQuestion.txt differ diff --git a/Text/Game/Scripts/Respotion.txt b/Text/Game/Scripts/Respotion.txt new file mode 100644 index 00000000..e1cd3031 Binary files /dev/null and b/Text/Game/Scripts/Respotion.txt differ diff --git a/Text/Game/Scripts/Resurrection.txt b/Text/Game/Scripts/Resurrection.txt new file mode 100644 index 00000000..5b6c8a97 Binary files /dev/null and b/Text/Game/Scripts/Resurrection.txt differ diff --git a/Text/Game/Scripts/Supply/Demolished.txt b/Text/Game/Scripts/Supply/Demolished.txt new file mode 100644 index 00000000..3de7343e --- /dev/null +++ b/Text/Game/Scripts/Supply/Demolished.txt @@ -0,0 +1 @@ +The building has been demolished! \ No newline at end of file diff --git a/Text/Game/Scripts/Supply/DemolishedDays.txt b/Text/Game/Scripts/Supply/DemolishedDays.txt new file mode 100644 index 00000000..4cf76f5b --- /dev/null +++ b/Text/Game/Scripts/Supply/DemolishedDays.txt @@ -0,0 +1 @@ +This building will be demolished in days. \ No newline at end of file diff --git a/Text/Game/Scripts/Supply/DemolishedDesc.txt b/Text/Game/Scripts/Supply/DemolishedDesc.txt new file mode 100644 index 00000000..401e64f4 --- /dev/null +++ b/Text/Game/Scripts/Supply/DemolishedDesc.txt @@ -0,0 +1 @@ +This building is forever lost. It cannot be captured by human players. \ No newline at end of file diff --git a/Text/Game/Scripts/Supply/NoName.txt b/Text/Game/Scripts/Supply/NoName.txt new file mode 100644 index 00000000..9fc8cc51 --- /dev/null +++ b/Text/Game/Scripts/Supply/NoName.txt @@ -0,0 +1 @@ +DEMOLISHED \ No newline at end of file diff --git a/Text/Game/Scripts/Ultimates/OfferUltimates.txt b/Text/Game/Scripts/Ultimates/OfferUltimates.txt new file mode 100644 index 00000000..3a35bc7f Binary files /dev/null and b/Text/Game/Scripts/Ultimates/OfferUltimates.txt differ diff --git a/Text/Game/Scripts/Witch/Visited.txt b/Text/Game/Scripts/Witch/Visited.txt new file mode 100644 index 00000000..1bc54a2e Binary files /dev/null and b/Text/Game/Scripts/Witch/Visited.txt differ diff --git a/Text/Game/Scripts/WrongVersion.txt b/Text/Game/Scripts/WrongVersion.txt new file mode 100644 index 00000000..0fded5a2 Binary files /dev/null and b/Text/Game/Scripts/WrongVersion.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/1/Description.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/1/Description.txt new file mode 100644 index 00000000..7772647c Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/1/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/1/Name.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/1/Name.txt new file mode 100644 index 00000000..5906015b Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/1/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/2/Description.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/2/Description.txt new file mode 100644 index 00000000..7772647c Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/2/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/2/Name.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/2/Name.txt new file mode 100644 index 00000000..72dbf61c Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/2/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/3/Description.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/3/Description.txt new file mode 100644 index 00000000..80aa9993 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/3/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/3/Name.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/3/Name.txt new file mode 100644 index 00000000..8a688994 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/3/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/CorruptDark/Description.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/CorruptDark/Description.txt new file mode 100644 index 00000000..12bcb4a3 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/CorruptDark/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/CorruptDark/Description.u.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/CorruptDark/Description.u.txt new file mode 100644 index 00000000..188783ac Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/CorruptDark/Description.u.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/CorruptDark/Name.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/CorruptDark/Name.txt new file mode 100644 index 00000000..5520b432 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/CorruptDark/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/DetainDark/Description.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/DetainDark/Description.txt new file mode 100644 index 00000000..7819b8ac Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/DetainDark/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/DetainDark/Name.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/DetainDark/Name.txt new file mode 100644 index 00000000..6af32068 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/DetainDark/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/WeakenDark/Description.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/WeakenDark/Description.txt new file mode 100644 index 00000000..b3892b39 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/WeakenDark/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/WeakenDark/Description.u.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/WeakenDark/Description.u.txt new file mode 100644 index 00000000..7a26132a Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/WeakenDark/Description.u.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DarkMagic/WeakenDark/Name.txt b/Text/Game/Skills/BarbarianSpec/DarkMagic/WeakenDark/Name.txt new file mode 100644 index 00000000..298307e8 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DarkMagic/WeakenDark/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/1/Description.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/1/Description.txt new file mode 100644 index 00000000..92512ecb Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/1/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/1/Description.u.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/1/Description.u.txt new file mode 100644 index 00000000..08bf87f7 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/1/Description.u.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/1/Name.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/1/Name.txt new file mode 100644 index 00000000..ac1b1691 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/1/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/2/Description.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/2/Description.txt new file mode 100644 index 00000000..f6f442ac Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/2/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/2/Name.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/2/Name.txt new file mode 100644 index 00000000..0283416e Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/2/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/3/Description.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/3/Description.txt new file mode 100644 index 00000000..f6f442ac Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/3/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/3/Name.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/3/Name.txt new file mode 100644 index 00000000..bacee4be Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/3/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/CorruptDestructive/Description.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/CorruptDestructive/Description.txt new file mode 100644 index 00000000..35e78235 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/CorruptDestructive/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/CorruptDestructive/Description.u.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/CorruptDestructive/Description.u.txt new file mode 100644 index 00000000..3e1482cc Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/CorruptDestructive/Description.u.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/CorruptDestructive/Name.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/CorruptDestructive/Name.txt new file mode 100644 index 00000000..1c4ebbfb Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/CorruptDestructive/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/DetainDestructive/Description.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/DetainDestructive/Description.txt new file mode 100644 index 00000000..15639bc3 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/DetainDestructive/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/DetainDestructive/Name.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/DetainDestructive/Name.txt new file mode 100644 index 00000000..7a70fbbd Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/DetainDestructive/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/WeakenDestructive/Description.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/WeakenDestructive/Description.txt new file mode 100644 index 00000000..6c5aa547 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/WeakenDestructive/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/WeakenDestructive/Description.u.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/WeakenDestructive/Description.u.txt new file mode 100644 index 00000000..9af3d344 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/WeakenDestructive/Description.u.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/DestructiveMagic/WeakenDestructive/Name.txt b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/WeakenDestructive/Name.txt new file mode 100644 index 00000000..6933a254 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/DestructiveMagic/WeakenDestructive/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Description.1.txt b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Description.1.txt new file mode 100644 index 00000000..f237b5b3 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Description.1.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Description.2.txt b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Description.2.txt new file mode 100644 index 00000000..1070ff08 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Description.2.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Description.3.txt b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Description.3.txt new file mode 100644 index 00000000..71bd7968 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Description.3.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Description.txt b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Description.txt new file mode 100644 index 00000000..2f173ec3 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Name.1.txt b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Name.1.txt new file mode 100644 index 00000000..5b07fedf Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Name.1.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Name.2.txt b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Name.2.txt new file mode 100644 index 00000000..af94bad0 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Name.2.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Name.3.txt b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Name.3.txt new file mode 100644 index 00000000..a8228383 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Name.3.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Name.txt b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Name.txt new file mode 100644 index 00000000..e3b0729c Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/Bodybuilding/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/PowerOfBlood/Description.txt b/Text/Game/Skills/BarbarianSpec/Learning/PowerOfBlood/Description.txt new file mode 100644 index 00000000..cdb885cb Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/PowerOfBlood/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/PowerOfBlood/Name.txt b/Text/Game/Skills/BarbarianSpec/Learning/PowerOfBlood/Name.txt new file mode 100644 index 00000000..8897f6a3 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/PowerOfBlood/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Description.1.txt b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Description.1.txt new file mode 100644 index 00000000..563b9474 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Description.1.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Description.2.txt b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Description.2.txt new file mode 100644 index 00000000..9f3b69e7 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Description.2.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Description.3.txt b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Description.3.txt new file mode 100644 index 00000000..fa5cac71 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Description.3.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Description.txt b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Description.txt new file mode 100644 index 00000000..8ec0a329 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Name.1.txt b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Name.1.txt new file mode 100644 index 00000000..8824de8e Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Name.1.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Name.2.txt b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Name.2.txt new file mode 100644 index 00000000..0283416e Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Name.2.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Name.3.txt b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Name.3.txt new file mode 100644 index 00000000..bacee4be Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Name.3.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Name.txt b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Name.txt new file mode 100644 index 00000000..707c15c6 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Learning/WarcryLearning/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/1/Description.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/1/Description.txt new file mode 100644 index 00000000..808ca9d9 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/1/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/1/Description.u.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/1/Description.u.txt new file mode 100644 index 00000000..2af0e385 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/1/Description.u.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/1/Name.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/1/Name.txt new file mode 100644 index 00000000..195a1cec Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/1/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/2/Description.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/2/Description.txt new file mode 100644 index 00000000..82a0e309 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/2/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/2/Name.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/2/Name.txt new file mode 100644 index 00000000..ca93c206 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/2/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/3/Description.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/3/Description.txt new file mode 100644 index 00000000..2445c286 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/3/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/3/Name.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/3/Name.txt new file mode 100644 index 00000000..09f1fe7a Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/3/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/CorruptLight/Description.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/CorruptLight/Description.txt new file mode 100644 index 00000000..07b31135 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/CorruptLight/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/CorruptLight/Name.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/CorruptLight/Name.txt new file mode 100644 index 00000000..383fc2f1 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/CorruptLight/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/DetainLight/Description.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/DetainLight/Description.txt new file mode 100644 index 00000000..b26c403a Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/DetainLight/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/DetainLight/Name.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/DetainLight/Name.txt new file mode 100644 index 00000000..89fe13ee Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/DetainLight/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Description.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Description.txt new file mode 100644 index 00000000..948f63b6 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Description.u.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Description.u.txt new file mode 100644 index 00000000..a2758f1f Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Description.u.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Name.txt b/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Name.txt new file mode 100644 index 00000000..51884c06 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/1/Description.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/1/Description.txt new file mode 100644 index 00000000..1609f9c3 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/1/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/1/Description.u.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/1/Description.u.txt new file mode 100644 index 00000000..f31a9ef5 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/1/Description.u.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/1/Name.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/1/Name.txt new file mode 100644 index 00000000..b3774897 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/1/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/2/Description.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/2/Description.txt new file mode 100644 index 00000000..dbd7b9e3 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/2/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/2/Name.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/2/Name.txt new file mode 100644 index 00000000..b3774897 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/2/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/3/Description.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/3/Description.txt new file mode 100644 index 00000000..dbd7b9e3 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/3/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/3/Name.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/3/Name.txt new file mode 100644 index 00000000..b3774897 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/3/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/CorruptSummoning/Description.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/CorruptSummoning/Description.txt new file mode 100644 index 00000000..83a2465a Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/CorruptSummoning/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/CorruptSummoning/Name.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/CorruptSummoning/Name.txt new file mode 100644 index 00000000..87487b8d Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/CorruptSummoning/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/DeathToNonexistent/Description.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/DeathToNonexistent/Description.txt new file mode 100644 index 00000000..a4a5fee2 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/DeathToNonexistent/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/DeathToNonexistent/Name.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/DeathToNonexistent/Name.txt new file mode 100644 index 00000000..52954478 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/DeathToNonexistent/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/DetainSummoning/Description.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/DetainSummoning/Description.txt new file mode 100644 index 00000000..8871f67f Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/DetainSummoning/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/DetainSummoning/Name.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/DetainSummoning/Name.txt new file mode 100644 index 00000000..a09cda61 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/DetainSummoning/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/WeakenSummoning/Description.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/WeakenSummoning/Description.txt new file mode 100644 index 00000000..4235fe33 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/WeakenSummoning/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/WeakenSummoning/Description.u.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/WeakenSummoning/Description.u.txt new file mode 100644 index 00000000..aee86b5e Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/WeakenSummoning/Description.u.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/SummoningMagic/WeakenSummoning/Name.txt b/Text/Game/Skills/BarbarianSpec/SummoningMagic/WeakenSummoning/Name.txt new file mode 100644 index 00000000..d84d14c3 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/SummoningMagic/WeakenSummoning/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/1/Description.txt b/Text/Game/Skills/BarbarianSpec/Voice/1/Description.txt new file mode 100644 index 00000000..ef9ce4ae Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/1/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/1/Name.txt b/Text/Game/Skills/BarbarianSpec/Voice/1/Name.txt new file mode 100644 index 00000000..373f0155 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/1/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/2/description.txt b/Text/Game/Skills/BarbarianSpec/Voice/2/description.txt new file mode 100644 index 00000000..8340e43e Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/2/description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/2/name.txt b/Text/Game/Skills/BarbarianSpec/Voice/2/name.txt new file mode 100644 index 00000000..565f2679 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/2/name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/3/description.txt b/Text/Game/Skills/BarbarianSpec/Voice/3/description.txt new file mode 100644 index 00000000..d612bcca Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/3/description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/3/name.txt b/Text/Game/Skills/BarbarianSpec/Voice/3/name.txt new file mode 100644 index 00000000..c53a9f46 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/3/name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/ManaRegeneration/Description.txt b/Text/Game/Skills/BarbarianSpec/Voice/ManaRegeneration/Description.txt new file mode 100644 index 00000000..49b03069 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/ManaRegeneration/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/ManaRegeneration/Name.txt b/Text/Game/Skills/BarbarianSpec/Voice/ManaRegeneration/Name.txt new file mode 100644 index 00000000..ad49bf63 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/ManaRegeneration/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/MightyVoice/Description.txt b/Text/Game/Skills/BarbarianSpec/Voice/MightyVoice/Description.txt new file mode 100644 index 00000000..384ee105 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/MightyVoice/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/MightyVoice/Name.txt b/Text/Game/Skills/BarbarianSpec/Voice/MightyVoice/Name.txt new file mode 100644 index 00000000..0270f8f3 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/MightyVoice/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/VoiceOfRage/Description.txt b/Text/Game/Skills/BarbarianSpec/Voice/VoiceOfRage/Description.txt new file mode 100644 index 00000000..f310c903 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/VoiceOfRage/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/VoiceOfRage/Name.txt b/Text/Game/Skills/BarbarianSpec/Voice/VoiceOfRage/Name.txt new file mode 100644 index 00000000..b17a93a3 Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/VoiceOfRage/Name.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/VoiceTraining/Description.txt b/Text/Game/Skills/BarbarianSpec/Voice/VoiceTraining/Description.txt new file mode 100644 index 00000000..185a8f0d Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/VoiceTraining/Description.txt differ diff --git a/Text/Game/Skills/BarbarianSpec/Voice/VoiceTraining/Name.txt b/Text/Game/Skills/BarbarianSpec/Voice/VoiceTraining/Name.txt new file mode 100644 index 00000000..2e89e59f Binary files /dev/null and b/Text/Game/Skills/BarbarianSpec/Voice/VoiceTraining/Name.txt differ diff --git a/Text/Game/Skills/Common/BLearning/1/Description.txt b/Text/Game/Skills/Common/BLearning/1/Description.txt new file mode 100644 index 00000000..5e45beac Binary files /dev/null and b/Text/Game/Skills/Common/BLearning/1/Description.txt differ diff --git a/Text/Game/Skills/Common/BLearning/1/Name.txt b/Text/Game/Skills/Common/BLearning/1/Name.txt new file mode 100644 index 00000000..a396cad9 Binary files /dev/null and b/Text/Game/Skills/Common/BLearning/1/Name.txt differ diff --git a/Text/Game/Skills/Common/BLearning/2/Description.txt b/Text/Game/Skills/Common/BLearning/2/Description.txt new file mode 100644 index 00000000..96627f32 Binary files /dev/null and b/Text/Game/Skills/Common/BLearning/2/Description.txt differ diff --git a/Text/Game/Skills/Common/BLearning/2/Name.txt b/Text/Game/Skills/Common/BLearning/2/Name.txt new file mode 100644 index 00000000..47cf9888 Binary files /dev/null and b/Text/Game/Skills/Common/BLearning/2/Name.txt differ diff --git a/Text/Game/Skills/Common/BLearning/3/Description.txt b/Text/Game/Skills/Common/BLearning/3/Description.txt new file mode 100644 index 00000000..a2c05b90 Binary files /dev/null and b/Text/Game/Skills/Common/BLearning/3/Description.txt differ diff --git a/Text/Game/Skills/Common/BLearning/3/Name.txt b/Text/Game/Skills/Common/BLearning/3/Name.txt new file mode 100644 index 00000000..4dadb966 Binary files /dev/null and b/Text/Game/Skills/Common/BLearning/3/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/1/Description.txt b/Text/Game/Skills/Common/DarkMagic/1/Description.txt new file mode 100644 index 00000000..9d471038 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/1/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/1/Name.txt b/Text/Game/Skills/Common/DarkMagic/1/Name.txt new file mode 100644 index 00000000..ffdf9c0b Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/1/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/2/Description.txt b/Text/Game/Skills/Common/DarkMagic/2/Description.txt new file mode 100644 index 00000000..90954022 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/2/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/2/Name.txt b/Text/Game/Skills/Common/DarkMagic/2/Name.txt new file mode 100644 index 00000000..10d0b2d7 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/2/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/3/Description.txt b/Text/Game/Skills/Common/DarkMagic/3/Description.txt new file mode 100644 index 00000000..48b423a9 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/3/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/3/Name.txt b/Text/Game/Skills/Common/DarkMagic/3/Name.txt new file mode 100644 index 00000000..d2bbaf7b Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/3/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/MasterOfCurses/Description.txt b/Text/Game/Skills/Common/DarkMagic/MasterOfCurses/Description.txt new file mode 100644 index 00000000..b94a1671 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/MasterOfCurses/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/MasterOfCurses/Name.txt b/Text/Game/Skills/Common/DarkMagic/MasterOfCurses/Name.txt new file mode 100644 index 00000000..9435e81c Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/MasterOfCurses/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/MasterOfMind/Description.txt b/Text/Game/Skills/Common/DarkMagic/MasterOfMind/Description.txt new file mode 100644 index 00000000..95192ee8 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/MasterOfMind/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/MasterOfMind/Name.txt b/Text/Game/Skills/Common/DarkMagic/MasterOfMind/Name.txt new file mode 100644 index 00000000..0f87818e Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/MasterOfMind/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/MasterOfSickness/Description.txt b/Text/Game/Skills/Common/DarkMagic/MasterOfSickness/Description.txt new file mode 100644 index 00000000..00c9f0fc Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/MasterOfSickness/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/MasterOfSickness/Name.txt b/Text/Game/Skills/Common/DarkMagic/MasterOfSickness/Name.txt new file mode 100644 index 00000000..87939f6c Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/MasterOfSickness/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/Pariah/Description.txt b/Text/Game/Skills/Common/DarkMagic/Pariah/Description.txt new file mode 100644 index 00000000..467e6d60 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/Pariah/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/Pariah/Name.txt b/Text/Game/Skills/Common/DarkMagic/Pariah/Name.txt new file mode 100644 index 00000000..bfd73eb8 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/Pariah/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/Payback/Description.txt b/Text/Game/Skills/Common/DarkMagic/Payback/Description.txt new file mode 100644 index 00000000..c9ec0824 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/Payback/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/Payback/Name.txt b/Text/Game/Skills/Common/DarkMagic/Payback/Name.txt new file mode 100644 index 00000000..63d5c856 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/Payback/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/ShrugDarkness/Description.txt b/Text/Game/Skills/Common/DarkMagic/ShrugDarkness/Description.txt new file mode 100644 index 00000000..ae2335af Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/ShrugDarkness/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/ShrugDarkness/Name.txt b/Text/Game/Skills/Common/DarkMagic/ShrugDarkness/Name.txt new file mode 100644 index 00000000..eca29c76 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/ShrugDarkness/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/SoilBurn/Description.txt b/Text/Game/Skills/Common/DarkMagic/SoilBurn/Description.txt new file mode 100644 index 00000000..af18a434 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/SoilBurn/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/SoilBurn/Name.txt b/Text/Game/Skills/Common/DarkMagic/SoilBurn/Name.txt new file mode 100644 index 00000000..85bde842 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/SoilBurn/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/SoilBurnB/Description.txt b/Text/Game/Skills/Common/DarkMagic/SoilBurnB/Description.txt new file mode 100644 index 00000000..5ab6cbc7 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/SoilBurnB/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/SoilBurnB/Name.txt b/Text/Game/Skills/Common/DarkMagic/SoilBurnB/Name.txt new file mode 100644 index 00000000..016e3209 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/SoilBurnB/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/SpiritLink/Description.txt b/Text/Game/Skills/Common/DarkMagic/SpiritLink/Description.txt new file mode 100644 index 00000000..33f810d4 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/SpiritLink/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/SpiritLink/Name.txt b/Text/Game/Skills/Common/DarkMagic/SpiritLink/Name.txt new file mode 100644 index 00000000..e33ab4c0 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/SpiritLink/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/SupressDark/Description.txt b/Text/Game/Skills/Common/DarkMagic/SupressDark/Description.txt new file mode 100644 index 00000000..c6c4a7b2 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/SupressDark/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/SupressDark/Name.txt b/Text/Game/Skills/Common/DarkMagic/SupressDark/Name.txt new file mode 100644 index 00000000..30258b6f Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/SupressDark/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/WeakeningStrike/Description.txt b/Text/Game/Skills/Common/DarkMagic/WeakeningStrike/Description.txt new file mode 100644 index 00000000..a4f7a583 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/WeakeningStrike/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/WeakeningStrike/Name.txt b/Text/Game/Skills/Common/DarkMagic/WeakeningStrike/Name.txt new file mode 100644 index 00000000..02990e29 Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/WeakeningStrike/Name.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/WeakeningStrikeB/Description.txt b/Text/Game/Skills/Common/DarkMagic/WeakeningStrikeB/Description.txt new file mode 100644 index 00000000..1d12ec2b Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/WeakeningStrikeB/Description.txt differ diff --git a/Text/Game/Skills/Common/DarkMagic/WeakeningStrikeB/Name.txt b/Text/Game/Skills/Common/DarkMagic/WeakeningStrikeB/Name.txt new file mode 100644 index 00000000..d5613d3f Binary files /dev/null and b/Text/Game/Skills/Common/DarkMagic/WeakeningStrikeB/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/1/Description.txt b/Text/Game/Skills/Common/Defence/1/Description.txt new file mode 100644 index 00000000..a5448405 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/1/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/1/Name.txt b/Text/Game/Skills/Common/Defence/1/Name.txt new file mode 100644 index 00000000..6da8a53a Binary files /dev/null and b/Text/Game/Skills/Common/Defence/1/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/2/Description.txt b/Text/Game/Skills/Common/Defence/2/Description.txt new file mode 100644 index 00000000..bf74c57e Binary files /dev/null and b/Text/Game/Skills/Common/Defence/2/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/2/Name.txt b/Text/Game/Skills/Common/Defence/2/Name.txt new file mode 100644 index 00000000..1cef62e5 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/2/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/3/Description.txt b/Text/Game/Skills/Common/Defence/3/Description.txt new file mode 100644 index 00000000..56dfcac8 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/3/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/3/Name.txt b/Text/Game/Skills/Common/Defence/3/Name.txt new file mode 100644 index 00000000..6f839eb3 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/3/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/ChillingBones/Description.txt b/Text/Game/Skills/Common/Defence/ChillingBones/Description.txt new file mode 100644 index 00000000..3ff40d4e Binary files /dev/null and b/Text/Game/Skills/Common/Defence/ChillingBones/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/ChillingBones/Name.txt b/Text/Game/Skills/Common/Defence/ChillingBones/Name.txt new file mode 100644 index 00000000..e437cdd0 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/ChillingBones/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/DefendUsAll/Description.txt b/Text/Game/Skills/Common/Defence/DefendUsAll/Description.txt new file mode 100644 index 00000000..d84fc95a Binary files /dev/null and b/Text/Game/Skills/Common/Defence/DefendUsAll/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/DefendUsAll/Name.txt b/Text/Game/Skills/Common/Defence/DefendUsAll/Name.txt new file mode 100644 index 00000000..6cdc3f30 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/DefendUsAll/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/DefensiveFormation/Description.txt b/Text/Game/Skills/Common/Defence/DefensiveFormation/Description.txt new file mode 100644 index 00000000..4fd9c5a8 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/DefensiveFormation/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/DefensiveFormation/Name.txt b/Text/Game/Skills/Common/Defence/DefensiveFormation/Name.txt new file mode 100644 index 00000000..69bf53bd Binary files /dev/null and b/Text/Game/Skills/Common/Defence/DefensiveFormation/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/DemonicRetaliation/Description.txt b/Text/Game/Skills/Common/Defence/DemonicRetaliation/Description.txt new file mode 100644 index 00000000..7fd1e007 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/DemonicRetaliation/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/DemonicRetaliation/Name.txt b/Text/Game/Skills/Common/Defence/DemonicRetaliation/Name.txt new file mode 100644 index 00000000..e9f320bb Binary files /dev/null and b/Text/Game/Skills/Common/Defence/DemonicRetaliation/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/Evasion/Description.txt b/Text/Game/Skills/Common/Defence/Evasion/Description.txt new file mode 100644 index 00000000..ec859be6 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/Evasion/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/Evasion/Name.txt b/Text/Game/Skills/Common/Defence/Evasion/Name.txt new file mode 100644 index 00000000..f3d9380a Binary files /dev/null and b/Text/Game/Skills/Common/Defence/Evasion/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/HoldGround/Description.txt b/Text/Game/Skills/Common/Defence/HoldGround/Description.txt new file mode 100644 index 00000000..ef20114e Binary files /dev/null and b/Text/Game/Skills/Common/Defence/HoldGround/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/HoldGround/Name.txt b/Text/Game/Skills/Common/Defence/HoldGround/Name.txt new file mode 100644 index 00000000..b2f7813e Binary files /dev/null and b/Text/Game/Skills/Common/Defence/HoldGround/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/LastStand/Description.txt b/Text/Game/Skills/Common/Defence/LastStand/Description.txt new file mode 100644 index 00000000..4e7cb228 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/LastStand/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/LastStand/Name.txt b/Text/Game/Skills/Common/Defence/LastStand/Name.txt new file mode 100644 index 00000000..fc31709e Binary files /dev/null and b/Text/Game/Skills/Common/Defence/LastStand/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/PowerOfStone/Description.txt b/Text/Game/Skills/Common/Defence/PowerOfStone/Description.txt new file mode 100644 index 00000000..6d293efa Binary files /dev/null and b/Text/Game/Skills/Common/Defence/PowerOfStone/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/PowerOfStone/Name.txt b/Text/Game/Skills/Common/Defence/PowerOfStone/Name.txt new file mode 100644 index 00000000..7f18b6a4 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/PowerOfStone/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/Preparation/Description.txt b/Text/Game/Skills/Common/Defence/Preparation/Description.txt new file mode 100644 index 00000000..9eaf99cb Binary files /dev/null and b/Text/Game/Skills/Common/Defence/Preparation/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/Preparation/Name.txt b/Text/Game/Skills/Common/Defence/Preparation/Name.txt new file mode 100644 index 00000000..70b82356 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/Preparation/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/Protection/Description.txt b/Text/Game/Skills/Common/Defence/Protection/Description.txt new file mode 100644 index 00000000..a735d13a Binary files /dev/null and b/Text/Game/Skills/Common/Defence/Protection/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/Protection/Name.txt b/Text/Game/Skills/Common/Defence/Protection/Name.txt new file mode 100644 index 00000000..8ef7d7a8 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/Protection/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/SealOfProtection/Description.txt b/Text/Game/Skills/Common/Defence/SealOfProtection/Description.txt new file mode 100644 index 00000000..c8627360 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/SealOfProtection/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/SealOfProtection/Name.txt b/Text/Game/Skills/Common/Defence/SealOfProtection/Name.txt new file mode 100644 index 00000000..b3774897 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/SealOfProtection/Name.txt differ diff --git a/Text/Game/Skills/Common/Defence/Toughness/Description.txt b/Text/Game/Skills/Common/Defence/Toughness/Description.txt new file mode 100644 index 00000000..a27caf5e Binary files /dev/null and b/Text/Game/Skills/Common/Defence/Toughness/Description.txt differ diff --git a/Text/Game/Skills/Common/Defence/Toughness/Name.txt b/Text/Game/Skills/Common/Defence/Toughness/Name.txt new file mode 100644 index 00000000..7d146f90 Binary files /dev/null and b/Text/Game/Skills/Common/Defence/Toughness/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/1/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/1/Description.txt new file mode 100644 index 00000000..33dfcf49 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/1/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/1/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/1/Name.txt new file mode 100644 index 00000000..a1484c61 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/1/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/2/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/2/Description.txt new file mode 100644 index 00000000..a830969e Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/2/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/2/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/2/Name.txt new file mode 100644 index 00000000..5ec866d7 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/2/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/3/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/3/Description.txt new file mode 100644 index 00000000..d012464b Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/3/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/3/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/3/Name.txt new file mode 100644 index 00000000..9d0a9165 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/3/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/AncientSmithy/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/AncientSmithy/Description.txt new file mode 100644 index 00000000..62af2a1c Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/AncientSmithy/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/AncientSmithy/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/AncientSmithy/Name.txt new file mode 100644 index 00000000..c1df51f6 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/AncientSmithy/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/AncientSmithyB/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/AncientSmithyB/Description.txt new file mode 100644 index 00000000..cad948b6 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/AncientSmithyB/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/AncientSmithyB/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/AncientSmithyB/Name.txt new file mode 100644 index 00000000..c1df51f6 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/AncientSmithyB/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/DeadlyCold/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/DeadlyCold/Description.txt new file mode 100644 index 00000000..38f31eb5 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/DeadlyCold/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/DeadlyCold/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/DeadlyCold/Name.txt new file mode 100644 index 00000000..894841f3 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/DeadlyCold/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/DemonicFlame/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/DemonicFlame/Description.txt new file mode 100644 index 00000000..2c322e5a Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/DemonicFlame/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/DemonicFlame/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/DemonicFlame/Name.txt new file mode 100644 index 00000000..ec75d54f Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/DemonicFlame/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/MagicCushion/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/MagicCushion/Description.txt new file mode 100644 index 00000000..404c7582 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/MagicCushion/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/MagicCushion/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/MagicCushion/Name.txt new file mode 100644 index 00000000..018d9018 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/MagicCushion/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/MasterOfFire/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/MasterOfFire/Description.txt new file mode 100644 index 00000000..6d480a8e Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/MasterOfFire/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/MasterOfFire/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/MasterOfFire/Name.txt new file mode 100644 index 00000000..bcc84006 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/MasterOfFire/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/MasterOfIce/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/MasterOfIce/Description.txt new file mode 100644 index 00000000..b9417e08 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/MasterOfIce/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/MasterOfIce/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/MasterOfIce/Name.txt new file mode 100644 index 00000000..efcfcb30 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/MasterOfIce/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/MasterOfLightnings/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/MasterOfLightnings/Description.txt new file mode 100644 index 00000000..ee0b76b0 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/MasterOfLightnings/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/MasterOfLightnings/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/MasterOfLightnings/Name.txt new file mode 100644 index 00000000..432f66bc Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/MasterOfLightnings/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/SecretsOfDestruction/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/SecretsOfDestruction/Description.txt new file mode 100644 index 00000000..e980206f Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/SecretsOfDestruction/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/SecretsOfDestruction/Description.u.txt b/Text/Game/Skills/Common/DestructiveMagic/SecretsOfDestruction/Description.u.txt new file mode 100644 index 00000000..0c3d3fb4 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/SecretsOfDestruction/Description.u.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/SecretsOfDestruction/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/SecretsOfDestruction/Name.txt new file mode 100644 index 00000000..9fdf8e71 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/SecretsOfDestruction/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/SetAfire/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/SetAfire/Description.txt new file mode 100644 index 00000000..4ce30aff Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/SetAfire/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/SetAfire/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/SetAfire/Name.txt new file mode 100644 index 00000000..6fa034a8 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/SetAfire/Name.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/SunFire/Description.txt b/Text/Game/Skills/Common/DestructiveMagic/SunFire/Description.txt new file mode 100644 index 00000000..44852cae Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/SunFire/Description.txt differ diff --git a/Text/Game/Skills/Common/DestructiveMagic/SunFire/Name.txt b/Text/Game/Skills/Common/DestructiveMagic/SunFire/Name.txt new file mode 100644 index 00000000..85306e43 Binary files /dev/null and b/Text/Game/Skills/Common/DestructiveMagic/SunFire/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/1/Description.txt b/Text/Game/Skills/Common/Leadership/1/Description.txt new file mode 100644 index 00000000..4e69e9ee Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/1/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/1/Name.txt b/Text/Game/Skills/Common/Leadership/1/Name.txt new file mode 100644 index 00000000..db0ce994 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/1/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/2/Description.txt b/Text/Game/Skills/Common/Leadership/2/Description.txt new file mode 100644 index 00000000..341cef16 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/2/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/2/Name.txt b/Text/Game/Skills/Common/Leadership/2/Name.txt new file mode 100644 index 00000000..0789ed72 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/2/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/3/Description.txt b/Text/Game/Skills/Common/Leadership/3/Description.txt new file mode 100644 index 00000000..96cf16b7 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/3/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/3/Name.txt b/Text/Game/Skills/Common/Leadership/3/Name.txt new file mode 100644 index 00000000..ceb428f7 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/3/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/ArtificalGlory/Description.txt b/Text/Game/Skills/Common/Leadership/ArtificalGlory/Description.txt new file mode 100644 index 00000000..78eb83a9 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/ArtificalGlory/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/ArtificalGlory/Name.txt b/Text/Game/Skills/Common/Leadership/ArtificalGlory/Name.txt new file mode 100644 index 00000000..9dde664f Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/ArtificalGlory/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/BattleElation/Description.txt b/Text/Game/Skills/Common/Leadership/BattleElation/Description.txt new file mode 100644 index 00000000..6cceda0f Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/BattleElation/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/BattleElation/Name.txt b/Text/Game/Skills/Common/Leadership/BattleElation/Name.txt new file mode 100644 index 00000000..891ef4d6 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/BattleElation/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/Diplomacy/Description.txt b/Text/Game/Skills/Common/Leadership/Diplomacy/Description.txt new file mode 100644 index 00000000..975d95b1 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/Diplomacy/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/Diplomacy/Name.txt b/Text/Game/Skills/Common/Leadership/Diplomacy/Name.txt new file mode 100644 index 00000000..cab3e26a Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/Diplomacy/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/Empathy/Description.txt b/Text/Game/Skills/Common/Leadership/Empathy/Description.txt new file mode 100644 index 00000000..bf05c6dc Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/Empathy/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/Empathy/Description.u.txt b/Text/Game/Skills/Common/Leadership/Empathy/Description.u.txt new file mode 100644 index 00000000..6bd617ec Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/Empathy/Description.u.txt differ diff --git a/Text/Game/Skills/Common/Leadership/Empathy/Name.txt b/Text/Game/Skills/Common/Leadership/Empathy/Name.txt new file mode 100644 index 00000000..a5b09034 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/Empathy/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/Encourage/Description.txt b/Text/Game/Skills/Common/Leadership/Encourage/Description.txt new file mode 100644 index 00000000..d18935e3 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/Encourage/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/Encourage/Name.txt b/Text/Game/Skills/Common/Leadership/Encourage/Name.txt new file mode 100644 index 00000000..2ae5b8ee Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/Encourage/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/Estates/Description.txt b/Text/Game/Skills/Common/Leadership/Estates/Description.txt new file mode 100644 index 00000000..5cd5c150 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/Estates/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/Estates/Name.txt b/Text/Game/Skills/Common/Leadership/Estates/Name.txt new file mode 100644 index 00000000..f0adfc99 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/Estates/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/FastAndFurious/Description.txt b/Text/Game/Skills/Common/Leadership/FastAndFurious/Description.txt new file mode 100644 index 00000000..34fb594f Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/FastAndFurious/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/FastAndFurious/Name.txt b/Text/Game/Skills/Common/Leadership/FastAndFurious/Name.txt new file mode 100644 index 00000000..3fb7abae Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/FastAndFurious/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/ForestGuardEmblem/Description.txt b/Text/Game/Skills/Common/Leadership/ForestGuardEmblem/Description.txt new file mode 100644 index 00000000..b25c6d37 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/ForestGuardEmblem/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/ForestGuardEmblem/Name.txt b/Text/Game/Skills/Common/Leadership/ForestGuardEmblem/Name.txt new file mode 100644 index 00000000..49a3ca26 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/ForestGuardEmblem/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/GatingMastery/Description.txt b/Text/Game/Skills/Common/Leadership/GatingMastery/Description.txt new file mode 100644 index 00000000..c433043f Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/GatingMastery/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/GatingMastery/Name.txt b/Text/Game/Skills/Common/Leadership/GatingMastery/Name.txt new file mode 100644 index 00000000..b34bf141 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/GatingMastery/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/HeraldOfDeath/Description.txt b/Text/Game/Skills/Common/Leadership/HeraldOfDeath/Description.txt new file mode 100644 index 00000000..dfbc8ad4 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/HeraldOfDeath/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/HeraldOfDeath/Name.txt b/Text/Game/Skills/Common/Leadership/HeraldOfDeath/Name.txt new file mode 100644 index 00000000..b3243581 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/HeraldOfDeath/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/Recruitment/Description.txt b/Text/Game/Skills/Common/Leadership/Recruitment/Description.txt new file mode 100644 index 00000000..6e7d90a9 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/Recruitment/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/Recruitment/Name.txt b/Text/Game/Skills/Common/Leadership/Recruitment/Name.txt new file mode 100644 index 00000000..e08bf2bb Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/Recruitment/Name.txt differ diff --git a/Text/Game/Skills/Common/Leadership/RunicAttunement/Description.txt b/Text/Game/Skills/Common/Leadership/RunicAttunement/Description.txt new file mode 100644 index 00000000..13051976 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/RunicAttunement/Description.txt differ diff --git a/Text/Game/Skills/Common/Leadership/RunicAttunement/Name.txt b/Text/Game/Skills/Common/Leadership/RunicAttunement/Name.txt new file mode 100644 index 00000000..b679d7f1 Binary files /dev/null and b/Text/Game/Skills/Common/Leadership/RunicAttunement/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/1/Description.txt b/Text/Game/Skills/Common/Learning/1/Description.txt new file mode 100644 index 00000000..5e45beac Binary files /dev/null and b/Text/Game/Skills/Common/Learning/1/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/1/Name.txt b/Text/Game/Skills/Common/Learning/1/Name.txt new file mode 100644 index 00000000..2c7fbfdc Binary files /dev/null and b/Text/Game/Skills/Common/Learning/1/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/2/Description.txt b/Text/Game/Skills/Common/Learning/2/Description.txt new file mode 100644 index 00000000..96627f32 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/2/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/2/Name.txt b/Text/Game/Skills/Common/Learning/2/Name.txt new file mode 100644 index 00000000..c580151e Binary files /dev/null and b/Text/Game/Skills/Common/Learning/2/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/3/Description.txt b/Text/Game/Skills/Common/Learning/3/Description.txt new file mode 100644 index 00000000..0ec6e72c Binary files /dev/null and b/Text/Game/Skills/Common/Learning/3/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/3/Name.txt b/Text/Game/Skills/Common/Learning/3/Name.txt new file mode 100644 index 00000000..e9656b85 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/3/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/AcademyAward/Description.txt b/Text/Game/Skills/Common/Learning/AcademyAward/Description.txt new file mode 100644 index 00000000..878c0511 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/AcademyAward/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/AcademyAward/Name.txt b/Text/Game/Skills/Common/Learning/AcademyAward/Name.txt new file mode 100644 index 00000000..7c0ffd99 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/AcademyAward/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/CunningOfTheWoods/Description.txt b/Text/Game/Skills/Common/Learning/CunningOfTheWoods/Description.txt new file mode 100644 index 00000000..4048ff2c Binary files /dev/null and b/Text/Game/Skills/Common/Learning/CunningOfTheWoods/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/CunningOfTheWoods/Name.txt b/Text/Game/Skills/Common/Learning/CunningOfTheWoods/Name.txt new file mode 100644 index 00000000..ef0ed774 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/CunningOfTheWoods/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/DarkRevelation/Description.txt b/Text/Game/Skills/Common/Learning/DarkRevelation/Description.txt new file mode 100644 index 00000000..2a219802 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/DarkRevelation/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/DarkRevelation/Name.txt b/Text/Game/Skills/Common/Learning/DarkRevelation/Name.txt new file mode 100644 index 00000000..5f5e6d15 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/DarkRevelation/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/DarkRevelationB/Description.txt b/Text/Game/Skills/Common/Learning/DarkRevelationB/Description.txt new file mode 100644 index 00000000..76f77b55 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/DarkRevelationB/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/DarkRevelationB/Name.txt b/Text/Game/Skills/Common/Learning/DarkRevelationB/Name.txt new file mode 100644 index 00000000..34f9a0ec Binary files /dev/null and b/Text/Game/Skills/Common/Learning/DarkRevelationB/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/EagleEye/Description.txt b/Text/Game/Skills/Common/Learning/EagleEye/Description.txt new file mode 100644 index 00000000..db69903f Binary files /dev/null and b/Text/Game/Skills/Common/Learning/EagleEye/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/EagleEye/Name.txt b/Text/Game/Skills/Common/Learning/EagleEye/Name.txt new file mode 100644 index 00000000..536e1524 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/EagleEye/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/Intelligence/Description.txt b/Text/Game/Skills/Common/Learning/Intelligence/Description.txt new file mode 100644 index 00000000..2897e202 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/Intelligence/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/Intelligence/Name.txt b/Text/Game/Skills/Common/Learning/Intelligence/Name.txt new file mode 100644 index 00000000..b5a509e0 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/Intelligence/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/LordOfUndead/Description.txt b/Text/Game/Skills/Common/Learning/LordOfUndead/Description.txt new file mode 100644 index 00000000..ea848a05 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/LordOfUndead/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/LordOfUndead/Name.txt b/Text/Game/Skills/Common/Learning/LordOfUndead/Name.txt new file mode 100644 index 00000000..b3da833b Binary files /dev/null and b/Text/Game/Skills/Common/Learning/LordOfUndead/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/MasterOfSecrets/Description.txt b/Text/Game/Skills/Common/Learning/MasterOfSecrets/Description.txt new file mode 100644 index 00000000..afcbf67a Binary files /dev/null and b/Text/Game/Skills/Common/Learning/MasterOfSecrets/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/MasterOfSecrets/Name.txt b/Text/Game/Skills/Common/Learning/MasterOfSecrets/Name.txt new file mode 100644 index 00000000..7c1ae1ea Binary files /dev/null and b/Text/Game/Skills/Common/Learning/MasterOfSecrets/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/Mentoring/Description.txt b/Text/Game/Skills/Common/Learning/Mentoring/Description.txt new file mode 100644 index 00000000..000c7d71 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/Mentoring/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/Mentoring/Name.txt b/Text/Game/Skills/Common/Learning/Mentoring/Name.txt new file mode 100644 index 00000000..6c2bf9cf Binary files /dev/null and b/Text/Game/Skills/Common/Learning/Mentoring/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/Scholar/Description.txt b/Text/Game/Skills/Common/Learning/Scholar/Description.txt new file mode 100644 index 00000000..094de7dc Binary files /dev/null and b/Text/Game/Skills/Common/Learning/Scholar/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/Scholar/Name.txt b/Text/Game/Skills/Common/Learning/Scholar/Name.txt new file mode 100644 index 00000000..248e8057 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/Scholar/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/StudentAward/Description.txt b/Text/Game/Skills/Common/Learning/StudentAward/Description.txt new file mode 100644 index 00000000..9bd6f6c7 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/StudentAward/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/StudentAward/Name.txt b/Text/Game/Skills/Common/Learning/StudentAward/Name.txt new file mode 100644 index 00000000..11cc25f8 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/StudentAward/Name.txt differ diff --git a/Text/Game/Skills/Common/Learning/TapRunes/Description.txt b/Text/Game/Skills/Common/Learning/TapRunes/Description.txt new file mode 100644 index 00000000..8f01f559 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/TapRunes/Description.txt differ diff --git a/Text/Game/Skills/Common/Learning/TapRunes/Name.txt b/Text/Game/Skills/Common/Learning/TapRunes/Name.txt new file mode 100644 index 00000000..b4ba4602 Binary files /dev/null and b/Text/Game/Skills/Common/Learning/TapRunes/Name.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/1/Description.txt b/Text/Game/Skills/Common/LightMagic/1/Description.txt new file mode 100644 index 00000000..7e687b2b Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/1/Description.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/1/Name.txt b/Text/Game/Skills/Common/LightMagic/1/Name.txt new file mode 100644 index 00000000..eaee393c Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/1/Name.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/2/Description.txt b/Text/Game/Skills/Common/LightMagic/2/Description.txt new file mode 100644 index 00000000..de2a6df9 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/2/Description.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/2/Name.txt b/Text/Game/Skills/Common/LightMagic/2/Name.txt new file mode 100644 index 00000000..ea3978b5 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/2/Name.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/3/Description.txt b/Text/Game/Skills/Common/LightMagic/3/Description.txt new file mode 100644 index 00000000..3c2cfbf2 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/3/Description.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/3/Name.txt b/Text/Game/Skills/Common/LightMagic/3/Name.txt new file mode 100644 index 00000000..b51b2d04 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/3/Name.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/EliteCasters/Description.txt b/Text/Game/Skills/Common/LightMagic/EliteCasters/Description.txt new file mode 100644 index 00000000..20c62e90 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/EliteCasters/Description.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/EliteCasters/Name.txt b/Text/Game/Skills/Common/LightMagic/EliteCasters/Name.txt new file mode 100644 index 00000000..23f504cc Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/EliteCasters/Name.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/EternalLight/Description.txt b/Text/Game/Skills/Common/LightMagic/EternalLight/Description.txt new file mode 100644 index 00000000..779ea25c Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/EternalLight/Description.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/EternalLight/Name.txt b/Text/Game/Skills/Common/LightMagic/EternalLight/Name.txt new file mode 100644 index 00000000..1faa7b4a Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/EternalLight/Name.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/FireProtection/Description.txt b/Text/Game/Skills/Common/LightMagic/FireProtection/Description.txt new file mode 100644 index 00000000..809cd1e8 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/FireProtection/Description.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/FireProtection/Name.txt b/Text/Game/Skills/Common/LightMagic/FireProtection/Name.txt new file mode 100644 index 00000000..a060cac7 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/FireProtection/Name.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/GuardianAngel/Description.txt b/Text/Game/Skills/Common/LightMagic/GuardianAngel/Description.txt new file mode 100644 index 00000000..e505f52d Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/GuardianAngel/Description.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/GuardianAngel/Name.txt b/Text/Game/Skills/Common/LightMagic/GuardianAngel/Name.txt new file mode 100644 index 00000000..892ede66 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/GuardianAngel/Name.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/MasterOfAbjuration/Description.txt b/Text/Game/Skills/Common/LightMagic/MasterOfAbjuration/Description.txt new file mode 100644 index 00000000..6507366d Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/MasterOfAbjuration/Description.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/MasterOfAbjuration/Name.txt b/Text/Game/Skills/Common/LightMagic/MasterOfAbjuration/Name.txt new file mode 100644 index 00000000..628a2bdc Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/MasterOfAbjuration/Name.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/MasterOfBlessings/Description.txt b/Text/Game/Skills/Common/LightMagic/MasterOfBlessings/Description.txt new file mode 100644 index 00000000..256d4997 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/MasterOfBlessings/Description.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/MasterOfBlessings/Name.txt b/Text/Game/Skills/Common/LightMagic/MasterOfBlessings/Name.txt new file mode 100644 index 00000000..6ccb337b Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/MasterOfBlessings/Name.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/MasterOfWrath/Description.txt b/Text/Game/Skills/Common/LightMagic/MasterOfWrath/Description.txt new file mode 100644 index 00000000..1c84d1f3 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/MasterOfWrath/Description.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/MasterOfWrath/Name.txt b/Text/Game/Skills/Common/LightMagic/MasterOfWrath/Name.txt new file mode 100644 index 00000000..d3485bf4 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/MasterOfWrath/Name.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/StormWind/Description.txt b/Text/Game/Skills/Common/LightMagic/StormWind/Description.txt new file mode 100644 index 00000000..c01051a5 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/StormWind/Description.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/StormWind/Description.u.txt b/Text/Game/Skills/Common/LightMagic/StormWind/Description.u.txt new file mode 100644 index 00000000..42088e2d Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/StormWind/Description.u.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/StormWind/DescriptionB.txt b/Text/Game/Skills/Common/LightMagic/StormWind/DescriptionB.txt new file mode 100644 index 00000000..865cdc0b Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/StormWind/DescriptionB.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/StormWind/Name.txt b/Text/Game/Skills/Common/LightMagic/StormWind/Name.txt new file mode 100644 index 00000000..fbee2cc4 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/StormWind/Name.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/StormWind/NameB.txt b/Text/Game/Skills/Common/LightMagic/StormWind/NameB.txt new file mode 100644 index 00000000..58d0e376 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/StormWind/NameB.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/SupressLight/Description.txt b/Text/Game/Skills/Common/LightMagic/SupressLight/Description.txt new file mode 100644 index 00000000..bbfe9de2 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/SupressLight/Description.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/SupressLight/Name.txt b/Text/Game/Skills/Common/LightMagic/SupressLight/Name.txt new file mode 100644 index 00000000..50072aba Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/SupressLight/Name.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/Twilight/Description.txt b/Text/Game/Skills/Common/LightMagic/Twilight/Description.txt new file mode 100644 index 00000000..07a0d2db Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/Twilight/Description.txt differ diff --git a/Text/Game/Skills/Common/LightMagic/Twilight/Name.txt b/Text/Game/Skills/Common/LightMagic/Twilight/Name.txt new file mode 100644 index 00000000..0ee8a227 Binary files /dev/null and b/Text/Game/Skills/Common/LightMagic/Twilight/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/1/Description.txt b/Text/Game/Skills/Common/Logistics/1/Description.txt new file mode 100644 index 00000000..e325ee28 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/1/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/1/Name.txt b/Text/Game/Skills/Common/Logistics/1/Name.txt new file mode 100644 index 00000000..d9a5a402 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/1/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/2/Description.txt b/Text/Game/Skills/Common/Logistics/2/Description.txt new file mode 100644 index 00000000..ac686dba Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/2/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/2/Name.txt b/Text/Game/Skills/Common/Logistics/2/Name.txt new file mode 100644 index 00000000..d7f2fdd5 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/2/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/3/Description.txt b/Text/Game/Skills/Common/Logistics/3/Description.txt new file mode 100644 index 00000000..ef7b5d54 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/3/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/3/Name.txt b/Text/Game/Skills/Common/Logistics/3/Name.txt new file mode 100644 index 00000000..1e48fb30 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/3/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/DeathTread/Description.txt b/Text/Game/Skills/Common/Logistics/DeathTread/Description.txt new file mode 100644 index 00000000..cbf3ac94 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/DeathTread/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/DeathTread/Name.txt b/Text/Game/Skills/Common/Logistics/DeathTread/Name.txt new file mode 100644 index 00000000..aa71f6f2 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/DeathTread/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/DisguiseAndReckon/Description.txt b/Text/Game/Skills/Common/Logistics/DisguiseAndReckon/Description.txt new file mode 100644 index 00000000..5130e1e6 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/DisguiseAndReckon/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/DisguiseAndReckon/Name.txt b/Text/Game/Skills/Common/Logistics/DisguiseAndReckon/Name.txt new file mode 100644 index 00000000..96ea0d42 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/DisguiseAndReckon/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/MarchOfTheMachines/Description.txt b/Text/Game/Skills/Common/Logistics/MarchOfTheMachines/Description.txt new file mode 100644 index 00000000..b5783a20 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/MarchOfTheMachines/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/MarchOfTheMachines/Name.txt b/Text/Game/Skills/Common/Logistics/MarchOfTheMachines/Name.txt new file mode 100644 index 00000000..868be58a Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/MarchOfTheMachines/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/Navigation/Description.txt b/Text/Game/Skills/Common/Logistics/Navigation/Description.txt new file mode 100644 index 00000000..03341ef1 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/Navigation/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/Navigation/Name.txt b/Text/Game/Skills/Common/Logistics/Navigation/Name.txt new file mode 100644 index 00000000..c784ab0c Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/Navigation/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/PathOfWar/Description.txt b/Text/Game/Skills/Common/Logistics/PathOfWar/Description.txt new file mode 100644 index 00000000..4b4cc9dd Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/PathOfWar/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/PathOfWar/Name.txt b/Text/Game/Skills/Common/Logistics/PathOfWar/Name.txt new file mode 100644 index 00000000..8340ac3f Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/PathOfWar/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/Pathfinding/Description.txt b/Text/Game/Skills/Common/Logistics/Pathfinding/Description.txt new file mode 100644 index 00000000..c45713ab Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/Pathfinding/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/Pathfinding/Name.txt b/Text/Game/Skills/Common/Logistics/Pathfinding/Name.txt new file mode 100644 index 00000000..faef90c4 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/Pathfinding/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/QuickGating/Description.txt b/Text/Game/Skills/Common/Logistics/QuickGating/Description.txt new file mode 100644 index 00000000..e5c2688a Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/QuickGating/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/QuickGating/Name.txt b/Text/Game/Skills/Common/Logistics/QuickGating/Name.txt new file mode 100644 index 00000000..28265d84 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/QuickGating/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/QuicknessOfMind/Description.txt b/Text/Game/Skills/Common/Logistics/QuicknessOfMind/Description.txt new file mode 100644 index 00000000..7277e109 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/QuicknessOfMind/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/QuicknessOfMind/Name.txt b/Text/Game/Skills/Common/Logistics/QuicknessOfMind/Name.txt new file mode 100644 index 00000000..c4daefbf Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/QuicknessOfMind/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/RoadHome/Description.txt b/Text/Game/Skills/Common/Logistics/RoadHome/Description.txt new file mode 100644 index 00000000..787dfd5b Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/RoadHome/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/RoadHome/Name.txt b/Text/Game/Skills/Common/Logistics/RoadHome/Name.txt new file mode 100644 index 00000000..06d13873 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/RoadHome/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/Scouting/Description.txt b/Text/Game/Skills/Common/Logistics/Scouting/Description.txt new file mode 100644 index 00000000..f20eed0b Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/Scouting/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/Scouting/Name.txt b/Text/Game/Skills/Common/Logistics/Scouting/Name.txt new file mode 100644 index 00000000..d8a6ed05 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/Scouting/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/Snatch/Description.txt b/Text/Game/Skills/Common/Logistics/Snatch/Description.txt new file mode 100644 index 00000000..87aedf0c Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/Snatch/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/Snatch/Name.txt b/Text/Game/Skills/Common/Logistics/Snatch/Name.txt new file mode 100644 index 00000000..d041fa9a Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/Snatch/Name.txt differ diff --git a/Text/Game/Skills/Common/Logistics/TeleportAssault/Description.txt b/Text/Game/Skills/Common/Logistics/TeleportAssault/Description.txt new file mode 100644 index 00000000..5e8d1097 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/TeleportAssault/Description.txt differ diff --git a/Text/Game/Skills/Common/Logistics/TeleportAssault/Name.txt b/Text/Game/Skills/Common/Logistics/TeleportAssault/Name.txt new file mode 100644 index 00000000..c7ad92c0 Binary files /dev/null and b/Text/Game/Skills/Common/Logistics/TeleportAssault/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/1/Description.txt b/Text/Game/Skills/Common/Luck/1/Description.txt new file mode 100644 index 00000000..f714be88 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/1/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/1/Name.txt b/Text/Game/Skills/Common/Luck/1/Name.txt new file mode 100644 index 00000000..75771b55 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/1/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/2/Description.txt b/Text/Game/Skills/Common/Luck/2/Description.txt new file mode 100644 index 00000000..88eaf09f Binary files /dev/null and b/Text/Game/Skills/Common/Luck/2/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/2/Name.txt b/Text/Game/Skills/Common/Luck/2/Name.txt new file mode 100644 index 00000000..6cb75f88 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/2/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/3/Description.txt b/Text/Game/Skills/Common/Luck/3/Description.txt new file mode 100644 index 00000000..d2d8fb30 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/3/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/3/Name.txt b/Text/Game/Skills/Common/Luck/3/Name.txt new file mode 100644 index 00000000..7673e050 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/3/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/CriticalGating/Description.txt b/Text/Game/Skills/Common/Luck/CriticalGating/Description.txt new file mode 100644 index 00000000..8d6e1260 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/CriticalGating/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/CriticalGating/Name.txt b/Text/Game/Skills/Common/Luck/CriticalGating/Name.txt new file mode 100644 index 00000000..42e768ce Binary files /dev/null and b/Text/Game/Skills/Common/Luck/CriticalGating/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/DeadLuck/Description.txt b/Text/Game/Skills/Common/Luck/DeadLuck/Description.txt new file mode 100644 index 00000000..628e2ec7 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/DeadLuck/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/DeadLuck/Name.txt b/Text/Game/Skills/Common/Luck/DeadLuck/Name.txt new file mode 100644 index 00000000..0fe7d008 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/DeadLuck/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/DwarvenLuck/Description.txt b/Text/Game/Skills/Common/Luck/DwarvenLuck/Description.txt new file mode 100644 index 00000000..3e695de5 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/DwarvenLuck/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/DwarvenLuck/Name.txt b/Text/Game/Skills/Common/Luck/DwarvenLuck/Name.txt new file mode 100644 index 00000000..0e59accd Binary files /dev/null and b/Text/Game/Skills/Common/Luck/DwarvenLuck/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/ElvenLuck/Description.txt b/Text/Game/Skills/Common/Luck/ElvenLuck/Description.txt new file mode 100644 index 00000000..2f406dcc Binary files /dev/null and b/Text/Game/Skills/Common/Luck/ElvenLuck/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/ElvenLuck/Name.txt b/Text/Game/Skills/Common/Luck/ElvenLuck/Name.txt new file mode 100644 index 00000000..4d90b893 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/ElvenLuck/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/FortunateAdventurer/Description.txt b/Text/Game/Skills/Common/Luck/FortunateAdventurer/Description.txt new file mode 100644 index 00000000..6a332d50 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/FortunateAdventurer/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/FortunateAdventurer/Name.txt b/Text/Game/Skills/Common/Luck/FortunateAdventurer/Name.txt new file mode 100644 index 00000000..d6e1b0b7 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/FortunateAdventurer/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/GrailVision/Description.txt b/Text/Game/Skills/Common/Luck/GrailVision/Description.txt new file mode 100644 index 00000000..430a5c1c Binary files /dev/null and b/Text/Game/Skills/Common/Luck/GrailVision/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/GrailVision/Name.txt b/Text/Game/Skills/Common/Luck/GrailVision/Name.txt new file mode 100644 index 00000000..b94fe5d9 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/GrailVision/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/LuckOfTheBarbarian/Description.txt b/Text/Game/Skills/Common/Luck/LuckOfTheBarbarian/Description.txt new file mode 100644 index 00000000..0ab5f7c0 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/LuckOfTheBarbarian/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/LuckOfTheBarbarian/Name.txt b/Text/Game/Skills/Common/Luck/LuckOfTheBarbarian/Name.txt new file mode 100644 index 00000000..b20c44fe Binary files /dev/null and b/Text/Game/Skills/Common/Luck/LuckOfTheBarbarian/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/LuckySpells/Description.txt b/Text/Game/Skills/Common/Luck/LuckySpells/Description.txt new file mode 100644 index 00000000..24e0056a Binary files /dev/null and b/Text/Game/Skills/Common/Luck/LuckySpells/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/LuckySpells/Name.txt b/Text/Game/Skills/Common/Luck/LuckySpells/Name.txt new file mode 100644 index 00000000..ce4f192d Binary files /dev/null and b/Text/Game/Skills/Common/Luck/LuckySpells/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/LuckyStrike/Description.txt b/Text/Game/Skills/Common/Luck/LuckyStrike/Description.txt new file mode 100644 index 00000000..1e72a865 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/LuckyStrike/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/LuckyStrike/Name.txt b/Text/Game/Skills/Common/Luck/LuckyStrike/Name.txt new file mode 100644 index 00000000..b7dcb3ff Binary files /dev/null and b/Text/Game/Skills/Common/Luck/LuckyStrike/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/Resistance/Description.txt b/Text/Game/Skills/Common/Luck/Resistance/Description.txt new file mode 100644 index 00000000..0befec5b Binary files /dev/null and b/Text/Game/Skills/Common/Luck/Resistance/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/Resistance/Name.txt b/Text/Game/Skills/Common/Luck/Resistance/Name.txt new file mode 100644 index 00000000..b3019332 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/Resistance/Name.txt differ diff --git a/Text/Game/Skills/Common/Luck/SpoilsOfWar/Description.txt b/Text/Game/Skills/Common/Luck/SpoilsOfWar/Description.txt new file mode 100644 index 00000000..ba9032d2 Binary files /dev/null and b/Text/Game/Skills/Common/Luck/SpoilsOfWar/Description.txt differ diff --git a/Text/Game/Skills/Common/Luck/SpoilsOfWar/Name.txt b/Text/Game/Skills/Common/Luck/SpoilsOfWar/Name.txt new file mode 100644 index 00000000..cdc495aa Binary files /dev/null and b/Text/Game/Skills/Common/Luck/SpoilsOfWar/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/1/Description.txt b/Text/Game/Skills/Common/Offence/1/Description.txt new file mode 100644 index 00000000..128ea959 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/1/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/1/Name.txt b/Text/Game/Skills/Common/Offence/1/Name.txt new file mode 100644 index 00000000..5fd3bb15 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/1/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/2/Description.txt b/Text/Game/Skills/Common/Offence/2/Description.txt new file mode 100644 index 00000000..3cf5aa7d Binary files /dev/null and b/Text/Game/Skills/Common/Offence/2/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/2/Name.txt b/Text/Game/Skills/Common/Offence/2/Name.txt new file mode 100644 index 00000000..51265142 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/2/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/3/Description.txt b/Text/Game/Skills/Common/Offence/3/Description.txt new file mode 100644 index 00000000..7d80ea26 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/3/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/3/Name.txt b/Text/Game/Skills/Common/Offence/3/Name.txt new file mode 100644 index 00000000..12e9379c Binary files /dev/null and b/Text/Game/Skills/Common/Offence/3/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/Archery/Description.txt b/Text/Game/Skills/Common/Offence/Archery/Description.txt new file mode 100644 index 00000000..031baf4f Binary files /dev/null and b/Text/Game/Skills/Common/Offence/Archery/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/Archery/Name.txt b/Text/Game/Skills/Common/Offence/Archery/Name.txt new file mode 100644 index 00000000..b62abe56 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/Archery/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/ChillingSteel/Description.txt b/Text/Game/Skills/Common/Offence/ChillingSteel/Description.txt new file mode 100644 index 00000000..8e8ef37d Binary files /dev/null and b/Text/Game/Skills/Common/Offence/ChillingSteel/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/ChillingSteel/Name.txt b/Text/Game/Skills/Common/Offence/ChillingSteel/Name.txt new file mode 100644 index 00000000..d492c9ef Binary files /dev/null and b/Text/Game/Skills/Common/Offence/ChillingSteel/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/CriticalStrike/Description.txt b/Text/Game/Skills/Common/Offence/CriticalStrike/Description.txt new file mode 100644 index 00000000..73362d0d Binary files /dev/null and b/Text/Game/Skills/Common/Offence/CriticalStrike/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/CriticalStrike/Name.txt b/Text/Game/Skills/Common/Offence/CriticalStrike/Name.txt new file mode 100644 index 00000000..6f09173d Binary files /dev/null and b/Text/Game/Skills/Common/Offence/CriticalStrike/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/ForestRage/Description.txt b/Text/Game/Skills/Common/Offence/ForestRage/Description.txt new file mode 100644 index 00000000..6b27b689 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/ForestRage/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/ForestRage/Name.txt b/Text/Game/Skills/Common/Offence/ForestRage/Name.txt new file mode 100644 index 00000000..b1ec46e4 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/ForestRage/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/Frenzy/Description.txt b/Text/Game/Skills/Common/Offence/Frenzy/Description.txt new file mode 100644 index 00000000..acc7c5ac Binary files /dev/null and b/Text/Game/Skills/Common/Offence/Frenzy/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/Frenzy/Name.txt b/Text/Game/Skills/Common/Offence/Frenzy/Name.txt new file mode 100644 index 00000000..f8eca716 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/Frenzy/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/OffensiveFormation/Description.txt b/Text/Game/Skills/Common/Offence/OffensiveFormation/Description.txt new file mode 100644 index 00000000..62514e6f Binary files /dev/null and b/Text/Game/Skills/Common/Offence/OffensiveFormation/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/OffensiveFormation/Name.txt b/Text/Game/Skills/Common/Offence/OffensiveFormation/Name.txt new file mode 100644 index 00000000..706a6fe2 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/OffensiveFormation/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/PowerOfHaste/Description.txt b/Text/Game/Skills/Common/Offence/PowerOfHaste/Description.txt new file mode 100644 index 00000000..a153ae2d Binary files /dev/null and b/Text/Game/Skills/Common/Offence/PowerOfHaste/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/PowerOfHaste/Name.txt b/Text/Game/Skills/Common/Offence/PowerOfHaste/Name.txt new file mode 100644 index 00000000..dd4b4d41 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/PowerOfHaste/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/Retribution/Description.txt b/Text/Game/Skills/Common/Offence/Retribution/Description.txt new file mode 100644 index 00000000..fb70c018 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/Retribution/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/Retribution/Description.u.txt b/Text/Game/Skills/Common/Offence/Retribution/Description.u.txt new file mode 100644 index 00000000..33c42ee6 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/Retribution/Description.u.txt differ diff --git a/Text/Game/Skills/Common/Offence/Retribution/Name.txt b/Text/Game/Skills/Common/Offence/Retribution/Name.txt new file mode 100644 index 00000000..30639b3e Binary files /dev/null and b/Text/Game/Skills/Common/Offence/Retribution/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/StunningBlow/Description.txt b/Text/Game/Skills/Common/Offence/StunningBlow/Description.txt new file mode 100644 index 00000000..7e873abc Binary files /dev/null and b/Text/Game/Skills/Common/Offence/StunningBlow/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/StunningBlow/Name.txt b/Text/Game/Skills/Common/Offence/StunningBlow/Name.txt new file mode 100644 index 00000000..66d407f5 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/StunningBlow/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/Tactics/Description.txt b/Text/Game/Skills/Common/Offence/Tactics/Description.txt new file mode 100644 index 00000000..c276b870 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/Tactics/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/Tactics/Name.txt b/Text/Game/Skills/Common/Offence/Tactics/Name.txt new file mode 100644 index 00000000..46b92791 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/Tactics/Name.txt differ diff --git a/Text/Game/Skills/Common/Offence/Wildfire/Description.txt b/Text/Game/Skills/Common/Offence/Wildfire/Description.txt new file mode 100644 index 00000000..9668f8e8 Binary files /dev/null and b/Text/Game/Skills/Common/Offence/Wildfire/Description.txt differ diff --git a/Text/Game/Skills/Common/Offence/Wildfire/Name.txt b/Text/Game/Skills/Common/Offence/Wildfire/Name.txt new file mode 100644 index 00000000..66ce272e Binary files /dev/null and b/Text/Game/Skills/Common/Offence/Wildfire/Name.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/1/Description.txt b/Text/Game/Skills/Common/Sorcery/1/Description.txt new file mode 100644 index 00000000..9d1e0f91 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/1/Description.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/1/Name.txt b/Text/Game/Skills/Common/Sorcery/1/Name.txt new file mode 100644 index 00000000..d17d3053 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/1/Name.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/2/Description.txt b/Text/Game/Skills/Common/Sorcery/2/Description.txt new file mode 100644 index 00000000..4688c8cc Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/2/Description.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/2/Name.txt b/Text/Game/Skills/Common/Sorcery/2/Name.txt new file mode 100644 index 00000000..1651fdd9 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/2/Name.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/3/Description.txt b/Text/Game/Skills/Common/Sorcery/3/Description.txt new file mode 100644 index 00000000..ce82b340 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/3/Description.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/3/Name.txt b/Text/Game/Skills/Common/Sorcery/3/Name.txt new file mode 100644 index 00000000..812d44b5 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/3/Name.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/ArcaneTraining/Description.txt b/Text/Game/Skills/Common/Sorcery/ArcaneTraining/Description.txt new file mode 100644 index 00000000..9b1ddb04 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/ArcaneTraining/Description.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/ArcaneTraining/Name.txt b/Text/Game/Skills/Common/Sorcery/ArcaneTraining/Name.txt new file mode 100644 index 00000000..bc1337de Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/ArcaneTraining/Name.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/CasterCertificate/Description.txt b/Text/Game/Skills/Common/Sorcery/CasterCertificate/Description.txt new file mode 100644 index 00000000..a6a4e1a6 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/CasterCertificate/Description.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/CasterCertificate/Name.txt b/Text/Game/Skills/Common/Sorcery/CasterCertificate/Name.txt new file mode 100644 index 00000000..b110ce81 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/CasterCertificate/Name.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/ChaoticSpells/Description.txt b/Text/Game/Skills/Common/Sorcery/ChaoticSpells/Description.txt new file mode 100644 index 00000000..344930f8 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/ChaoticSpells/Description.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/ChaoticSpells/Name.txt b/Text/Game/Skills/Common/Sorcery/ChaoticSpells/Name.txt new file mode 100644 index 00000000..fb13b90f Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/ChaoticSpells/Name.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/Counterspell/Description.txt b/Text/Game/Skills/Common/Sorcery/Counterspell/Description.txt new file mode 100644 index 00000000..d20e9e17 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/Counterspell/Description.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/Counterspell/Name.txt b/Text/Game/Skills/Common/Sorcery/Counterspell/Name.txt new file mode 100644 index 00000000..94a94c0f Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/Counterspell/Name.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/Distract/Description.txt b/Text/Game/Skills/Common/Sorcery/Distract/Description.txt new file mode 100644 index 00000000..8404541a Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/Distract/Description.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/Distract/Name.txt b/Text/Game/Skills/Common/Sorcery/Distract/Name.txt new file mode 100644 index 00000000..47ee6fa3 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/Distract/Name.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/ExplodingCorpses/Description.txt b/Text/Game/Skills/Common/Sorcery/ExplodingCorpses/Description.txt new file mode 100644 index 00000000..5ab4d4df Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/ExplodingCorpses/Description.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/ExplodingCorpses/Name.txt b/Text/Game/Skills/Common/Sorcery/ExplodingCorpses/Name.txt new file mode 100644 index 00000000..5220e3d8 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/ExplodingCorpses/Name.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/Insights/Description.txt b/Text/Game/Skills/Common/Sorcery/Insights/Description.txt new file mode 100644 index 00000000..3580623e Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/Insights/Description.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/Insights/Name.txt b/Text/Game/Skills/Common/Sorcery/Insights/Name.txt new file mode 100644 index 00000000..536e1524 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/Insights/Name.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/Mysticism/Description.txt b/Text/Game/Skills/Common/Sorcery/Mysticism/Description.txt new file mode 100644 index 00000000..a0f01311 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/Mysticism/Description.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/Mysticism/Description.u.txt b/Text/Game/Skills/Common/Sorcery/Mysticism/Description.u.txt new file mode 100644 index 00000000..f615fec7 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/Mysticism/Description.u.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/Mysticism/DescriptionB.txt b/Text/Game/Skills/Common/Sorcery/Mysticism/DescriptionB.txt new file mode 100644 index 00000000..1e678648 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/Mysticism/DescriptionB.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/Mysticism/Name.txt b/Text/Game/Skills/Common/Sorcery/Mysticism/Name.txt new file mode 100644 index 00000000..9fdf8e71 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/Mysticism/Name.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/Mysticism/NameB.txt b/Text/Game/Skills/Common/Sorcery/Mysticism/NameB.txt new file mode 100644 index 00000000..afaddc4a Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/Mysticism/NameB.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/SpellproofBones/Description.txt b/Text/Game/Skills/Common/Sorcery/SpellproofBones/Description.txt new file mode 100644 index 00000000..65699186 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/SpellproofBones/Description.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/SpellproofBones/Name.txt b/Text/Game/Skills/Common/Sorcery/SpellproofBones/Name.txt new file mode 100644 index 00000000..b20c44fe Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/SpellproofBones/Name.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/Wisdom/Description.txt b/Text/Game/Skills/Common/Sorcery/Wisdom/Description.txt new file mode 100644 index 00000000..259dc741 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/Wisdom/Description.txt differ diff --git a/Text/Game/Skills/Common/Sorcery/Wisdom/Name.txt b/Text/Game/Skills/Common/Sorcery/Wisdom/Name.txt new file mode 100644 index 00000000..8aea39a8 Binary files /dev/null and b/Text/Game/Skills/Common/Sorcery/Wisdom/Name.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/1/Description.txt b/Text/Game/Skills/Common/SummoningMagic/1/Description.txt new file mode 100644 index 00000000..2cee940e Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/1/Description.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/1/Name.txt b/Text/Game/Skills/Common/SummoningMagic/1/Name.txt new file mode 100644 index 00000000..4122cd5e Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/1/Name.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/2/Description.txt b/Text/Game/Skills/Common/SummoningMagic/2/Description.txt new file mode 100644 index 00000000..0e91210c Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/2/Description.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/2/Name.txt b/Text/Game/Skills/Common/SummoningMagic/2/Name.txt new file mode 100644 index 00000000..d5fcd014 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/2/Name.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/3/Description.txt b/Text/Game/Skills/Common/SummoningMagic/3/Description.txt new file mode 100644 index 00000000..3998e909 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/3/Description.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/3/Name.txt b/Text/Game/Skills/Common/SummoningMagic/3/Name.txt new file mode 100644 index 00000000..a82cba8b Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/3/Name.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/ElementalBalance/Description.txt b/Text/Game/Skills/Common/SummoningMagic/ElementalBalance/Description.txt new file mode 100644 index 00000000..7f5f25ae Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/ElementalBalance/Description.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/ElementalBalance/Name.txt b/Text/Game/Skills/Common/SummoningMagic/ElementalBalance/Name.txt new file mode 100644 index 00000000..ff9d753f Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/ElementalBalance/Name.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/ElementalOverkill/Description.txt b/Text/Game/Skills/Common/SummoningMagic/ElementalOverkill/Description.txt new file mode 100644 index 00000000..f321ed92 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/ElementalOverkill/Description.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/ElementalOverkill/Name.txt b/Text/Game/Skills/Common/SummoningMagic/ElementalOverkill/Name.txt new file mode 100644 index 00000000..faf67b45 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/ElementalOverkill/Name.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/FireAffinity/Description.txt b/Text/Game/Skills/Common/SummoningMagic/FireAffinity/Description.txt new file mode 100644 index 00000000..4b688fdd Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/FireAffinity/Description.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/FireAffinity/Name.txt b/Text/Game/Skills/Common/SummoningMagic/FireAffinity/Name.txt new file mode 100644 index 00000000..138ecb13 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/FireAffinity/Name.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/FogVeil/Description.txt b/Text/Game/Skills/Common/SummoningMagic/FogVeil/Description.txt new file mode 100644 index 00000000..e903e52a Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/FogVeil/Description.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/FogVeil/Name.txt b/Text/Game/Skills/Common/SummoningMagic/FogVeil/Name.txt new file mode 100644 index 00000000..11815345 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/FogVeil/Name.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/HauntMine/Description.txt b/Text/Game/Skills/Common/SummoningMagic/HauntMine/Description.txt new file mode 100644 index 00000000..b70a23fe Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/HauntMine/Description.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/HauntMine/Name.txt b/Text/Game/Skills/Common/SummoningMagic/HauntMine/Name.txt new file mode 100644 index 00000000..5faf7b7a Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/HauntMine/Name.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/MasterOfAnimation/Description.txt b/Text/Game/Skills/Common/SummoningMagic/MasterOfAnimation/Description.txt new file mode 100644 index 00000000..26a67d28 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/MasterOfAnimation/Description.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/MasterOfAnimation/Name.txt b/Text/Game/Skills/Common/SummoningMagic/MasterOfAnimation/Name.txt new file mode 100644 index 00000000..83e47de7 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/MasterOfAnimation/Name.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/MasterOfCreatures/Description.txt b/Text/Game/Skills/Common/SummoningMagic/MasterOfCreatures/Description.txt new file mode 100644 index 00000000..b8f5015d Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/MasterOfCreatures/Description.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/MasterOfCreatures/Description.u.txt b/Text/Game/Skills/Common/SummoningMagic/MasterOfCreatures/Description.u.txt new file mode 100644 index 00000000..9850b7e3 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/MasterOfCreatures/Description.u.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/MasterOfCreatures/Name.txt b/Text/Game/Skills/Common/SummoningMagic/MasterOfCreatures/Name.txt new file mode 100644 index 00000000..7a4b4821 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/MasterOfCreatures/Name.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/MasterOfQuakes/Description.txt b/Text/Game/Skills/Common/SummoningMagic/MasterOfQuakes/Description.txt new file mode 100644 index 00000000..d749d5e9 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/MasterOfQuakes/Description.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/MasterOfQuakes/Name.txt b/Text/Game/Skills/Common/SummoningMagic/MasterOfQuakes/Name.txt new file mode 100644 index 00000000..df6a57b6 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/MasterOfQuakes/Name.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/RunicArmor/Description.txt b/Text/Game/Skills/Common/SummoningMagic/RunicArmor/Description.txt new file mode 100644 index 00000000..e590bcea Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/RunicArmor/Description.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/RunicArmor/Description.u.txt b/Text/Game/Skills/Common/SummoningMagic/RunicArmor/Description.u.txt new file mode 100644 index 00000000..7a3f6730 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/RunicArmor/Description.u.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/RunicArmor/Name.txt b/Text/Game/Skills/Common/SummoningMagic/RunicArmor/Name.txt new file mode 100644 index 00000000..af7adb67 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/RunicArmor/Name.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/Unsummon/Description.txt b/Text/Game/Skills/Common/SummoningMagic/Unsummon/Description.txt new file mode 100644 index 00000000..6b00978e Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/Unsummon/Description.txt differ diff --git a/Text/Game/Skills/Common/SummoningMagic/Unsummon/Name.txt b/Text/Game/Skills/Common/SummoningMagic/Unsummon/Name.txt new file mode 100644 index 00000000..cfe97413 Binary files /dev/null and b/Text/Game/Skills/Common/SummoningMagic/Unsummon/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/1/Description.txt b/Text/Game/Skills/Common/WarMachines/1/Description.txt new file mode 100644 index 00000000..8db3dd88 Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/1/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/1/Name.txt b/Text/Game/Skills/Common/WarMachines/1/Name.txt new file mode 100644 index 00000000..29f331ac Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/1/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/2/Description.txt b/Text/Game/Skills/Common/WarMachines/2/Description.txt new file mode 100644 index 00000000..018118b7 Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/2/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/2/Name.txt b/Text/Game/Skills/Common/WarMachines/2/Name.txt new file mode 100644 index 00000000..d0018782 Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/2/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/3/Description.txt b/Text/Game/Skills/Common/WarMachines/3/Description.txt new file mode 100644 index 00000000..19cc301e Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/3/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/3/Name.txt b/Text/Game/Skills/Common/WarMachines/3/Name.txt new file mode 100644 index 00000000..eca0c555 Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/3/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/Ballista/Description.txt b/Text/Game/Skills/Common/WarMachines/Ballista/Description.txt new file mode 100644 index 00000000..f64e2852 Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/Ballista/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/Ballista/Name.txt b/Text/Game/Skills/Common/WarMachines/Ballista/Name.txt new file mode 100644 index 00000000..964634cf Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/Ballista/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/Catapult/Description.txt b/Text/Game/Skills/Common/WarMachines/Catapult/Description.txt new file mode 100644 index 00000000..2c37a7bc Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/Catapult/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/Catapult/Name.txt b/Text/Game/Skills/Common/WarMachines/Catapult/Name.txt new file mode 100644 index 00000000..293fab52 Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/Catapult/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/FirstAid/Description.txt b/Text/Game/Skills/Common/WarMachines/FirstAid/Description.txt new file mode 100644 index 00000000..254ede72 Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/FirstAid/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/FirstAid/Name.txt b/Text/Game/Skills/Common/WarMachines/FirstAid/Name.txt new file mode 100644 index 00000000..d8f18b91 Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/FirstAid/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/GoblinSupport/Description.txt b/Text/Game/Skills/Common/WarMachines/GoblinSupport/Description.txt new file mode 100644 index 00000000..fcdc2553 Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/GoblinSupport/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/GoblinSupport/Name.txt b/Text/Game/Skills/Common/WarMachines/GoblinSupport/Name.txt new file mode 100644 index 00000000..29d29fef Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/GoblinSupport/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/ImbueBallista/Description.txt b/Text/Game/Skills/Common/WarMachines/ImbueBallista/Description.txt new file mode 100644 index 00000000..f4c5f9bb Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/ImbueBallista/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/ImbueBallista/Name.txt b/Text/Game/Skills/Common/WarMachines/ImbueBallista/Name.txt new file mode 100644 index 00000000..83627968 Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/ImbueBallista/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/LastAid/Description.txt b/Text/Game/Skills/Common/WarMachines/LastAid/Description.txt new file mode 100644 index 00000000..2222e39a Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/LastAid/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/LastAid/Name.txt b/Text/Game/Skills/Common/WarMachines/LastAid/Name.txt new file mode 100644 index 00000000..012bc10f Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/LastAid/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/RemoteControl/Description.txt b/Text/Game/Skills/Common/WarMachines/RemoteControl/Description.txt new file mode 100644 index 00000000..acbc8b15 Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/RemoteControl/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/RemoteControl/Name.txt b/Text/Game/Skills/Common/WarMachines/RemoteControl/Name.txt new file mode 100644 index 00000000..8d75479f Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/RemoteControl/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/RunicMachines/Description.txt b/Text/Game/Skills/Common/WarMachines/RunicMachines/Description.txt new file mode 100644 index 00000000..d03f0a1f Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/RunicMachines/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/RunicMachines/Name.txt b/Text/Game/Skills/Common/WarMachines/RunicMachines/Name.txt new file mode 100644 index 00000000..327d1b5f Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/RunicMachines/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/ShakeGround/Description.txt b/Text/Game/Skills/Common/WarMachines/ShakeGround/Description.txt new file mode 100644 index 00000000..d0de8fef Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/ShakeGround/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/ShakeGround/Name.txt b/Text/Game/Skills/Common/WarMachines/ShakeGround/Name.txt new file mode 100644 index 00000000..e93e420e Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/ShakeGround/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/TripleBallista/Description.txt b/Text/Game/Skills/Common/WarMachines/TripleBallista/Description.txt new file mode 100644 index 00000000..bd86525e Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/TripleBallista/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/TripleBallista/Name.txt b/Text/Game/Skills/Common/WarMachines/TripleBallista/Name.txt new file mode 100644 index 00000000..315b35da Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/TripleBallista/Name.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/TripleCatapult/Description.txt b/Text/Game/Skills/Common/WarMachines/TripleCatapult/Description.txt new file mode 100644 index 00000000..0d2370a5 Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/TripleCatapult/Description.txt differ diff --git a/Text/Game/Skills/Common/WarMachines/TripleCatapult/Name.txt b/Text/Game/Skills/Common/WarMachines/TripleCatapult/Name.txt new file mode 100644 index 00000000..b68fe05e Binary files /dev/null and b/Text/Game/Skills/Common/WarMachines/TripleCatapult/Name.txt differ diff --git a/Text/Game/Skills/PrimarySkills/Attack/Description.txt b/Text/Game/Skills/PrimarySkills/Attack/Description.txt new file mode 100644 index 00000000..ff1289c5 Binary files /dev/null and b/Text/Game/Skills/PrimarySkills/Attack/Description.txt differ diff --git a/Text/Game/Skills/PrimarySkills/Attack/Name.txt b/Text/Game/Skills/PrimarySkills/Attack/Name.txt new file mode 100644 index 00000000..256b4225 Binary files /dev/null and b/Text/Game/Skills/PrimarySkills/Attack/Name.txt differ diff --git a/Text/Game/Skills/PrimarySkills/Defense/Description.txt b/Text/Game/Skills/PrimarySkills/Defense/Description.txt new file mode 100644 index 00000000..9eef9e22 Binary files /dev/null and b/Text/Game/Skills/PrimarySkills/Defense/Description.txt differ diff --git a/Text/Game/Skills/PrimarySkills/Defense/Name.txt b/Text/Game/Skills/PrimarySkills/Defense/Name.txt new file mode 100644 index 00000000..72196cdd Binary files /dev/null and b/Text/Game/Skills/PrimarySkills/Defense/Name.txt differ diff --git a/Text/Game/Skills/PrimarySkills/Knowledge/Description.txt b/Text/Game/Skills/PrimarySkills/Knowledge/Description.txt new file mode 100644 index 00000000..a415016a Binary files /dev/null and b/Text/Game/Skills/PrimarySkills/Knowledge/Description.txt differ diff --git a/Text/Game/Skills/PrimarySkills/Knowledge/Name.txt b/Text/Game/Skills/PrimarySkills/Knowledge/Name.txt new file mode 100644 index 00000000..574a4f4e Binary files /dev/null and b/Text/Game/Skills/PrimarySkills/Knowledge/Name.txt differ diff --git a/Text/Game/Skills/PrimarySkills/Spellpower/Description.txt b/Text/Game/Skills/PrimarySkills/Spellpower/Description.txt new file mode 100644 index 00000000..83764437 Binary files /dev/null and b/Text/Game/Skills/PrimarySkills/Spellpower/Description.txt differ diff --git a/Text/Game/Skills/PrimarySkills/Spellpower/Name.txt b/Text/Game/Skills/PrimarySkills/Spellpower/Name.txt new file mode 100644 index 00000000..90e1ff1e Binary files /dev/null and b/Text/Game/Skills/PrimarySkills/Spellpower/Name.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/1/Description.txt b/Text/Game/Skills/Unique/Artificer/1/Description.txt new file mode 100644 index 00000000..1ce33934 Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/1/Description.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/1/Name.txt b/Text/Game/Skills/Unique/Artificer/1/Name.txt new file mode 100644 index 00000000..e498b54d Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/1/Name.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/2/Description.txt b/Text/Game/Skills/Unique/Artificer/2/Description.txt new file mode 100644 index 00000000..879ac839 Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/2/Description.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/2/Name.txt b/Text/Game/Skills/Unique/Artificer/2/Name.txt new file mode 100644 index 00000000..139e0201 Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/2/Name.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/3/Description.txt b/Text/Game/Skills/Unique/Artificer/3/Description.txt new file mode 100644 index 00000000..1eb7eef5 Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/3/Description.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/3/Name.txt b/Text/Game/Skills/Unique/Artificer/3/Name.txt new file mode 100644 index 00000000..7e718b42 Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/3/Name.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/4/Description.txt b/Text/Game/Skills/Unique/Artificer/4/Description.txt new file mode 100644 index 00000000..724b9b28 Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/4/Description.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/4/Name.txt b/Text/Game/Skills/Unique/Artificer/4/Name.txt new file mode 100644 index 00000000..6d157f5a Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/4/Name.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/AbsoluteWizardy/Description.txt b/Text/Game/Skills/Unique/Artificer/AbsoluteWizardy/Description.txt new file mode 100644 index 00000000..7f09da70 Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/AbsoluteWizardy/Description.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/AbsoluteWizardy/Description.u.txt b/Text/Game/Skills/Unique/Artificer/AbsoluteWizardy/Description.u.txt new file mode 100644 index 00000000..7fa5304a Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/AbsoluteWizardy/Description.u.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/AbsoluteWizardy/Name.txt b/Text/Game/Skills/Unique/Artificer/AbsoluteWizardy/Name.txt new file mode 100644 index 00000000..81ca4aea Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/AbsoluteWizardy/Name.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/Common/Description.txt b/Text/Game/Skills/Unique/Artificer/Common/Description.txt new file mode 100644 index 00000000..4cbde476 Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/Common/Description.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/MagicBond/Description.txt b/Text/Game/Skills/Unique/Artificer/MagicBond/Description.txt new file mode 100644 index 00000000..8c29a39d Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/MagicBond/Description.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/MagicBond/name.txt b/Text/Game/Skills/Unique/Artificer/MagicBond/name.txt new file mode 100644 index 00000000..7ad3607b Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/MagicBond/name.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/MagicMirror/Description.txt b/Text/Game/Skills/Unique/Artificer/MagicMirror/Description.txt new file mode 100644 index 00000000..31ff1c81 Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/MagicMirror/Description.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/MagicMirror/Name.txt b/Text/Game/Skills/Unique/Artificer/MagicMirror/Name.txt new file mode 100644 index 00000000..d3268360 Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/MagicMirror/Name.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/MeltArtifact/Description.txt b/Text/Game/Skills/Unique/Artificer/MeltArtifact/Description.txt new file mode 100644 index 00000000..20b5fe1e Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/MeltArtifact/Description.txt differ diff --git a/Text/Game/Skills/Unique/Artificer/MeltArtifact/Name.txt b/Text/Game/Skills/Unique/Artificer/MeltArtifact/Name.txt new file mode 100644 index 00000000..961fd942 Binary files /dev/null and b/Text/Game/Skills/Unique/Artificer/MeltArtifact/Name.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/1/Description.txt b/Text/Game/Skills/Unique/Avenger/1/Description.txt new file mode 100644 index 00000000..418396c3 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/1/Description.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/1/Name.txt b/Text/Game/Skills/Unique/Avenger/1/Name.txt new file mode 100644 index 00000000..9d5f11a9 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/1/Name.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/2/Description.txt b/Text/Game/Skills/Unique/Avenger/2/Description.txt new file mode 100644 index 00000000..d978adb1 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/2/Description.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/2/Name.txt b/Text/Game/Skills/Unique/Avenger/2/Name.txt new file mode 100644 index 00000000..0a676b51 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/2/Name.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/3/Description.txt b/Text/Game/Skills/Unique/Avenger/3/Description.txt new file mode 100644 index 00000000..4fd7208b Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/3/Description.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/3/Name.txt b/Text/Game/Skills/Unique/Avenger/3/Name.txt new file mode 100644 index 00000000..b104f187 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/3/Name.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/4/Description.txt b/Text/Game/Skills/Unique/Avenger/4/Description.txt new file mode 100644 index 00000000..88296537 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/4/Description.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/4/Name.txt b/Text/Game/Skills/Unique/Avenger/4/Name.txt new file mode 100644 index 00000000..7d584bcc Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/4/Name.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/AbsoluteLuck/Description.txt b/Text/Game/Skills/Unique/Avenger/AbsoluteLuck/Description.txt new file mode 100644 index 00000000..68d93d30 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/AbsoluteLuck/Description.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/AbsoluteLuck/Description.u.txt b/Text/Game/Skills/Unique/Avenger/AbsoluteLuck/Description.u.txt new file mode 100644 index 00000000..11300a21 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/AbsoluteLuck/Description.u.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/AbsoluteLuck/Name.txt b/Text/Game/Skills/Unique/Avenger/AbsoluteLuck/Name.txt new file mode 100644 index 00000000..f1c692b0 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/AbsoluteLuck/Name.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/Common/Description.txt b/Text/Game/Skills/Unique/Avenger/Common/Description.txt new file mode 100644 index 00000000..7791ce50 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/Common/Description.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/ImbueArrow/Description.txt b/Text/Game/Skills/Unique/Avenger/ImbueArrow/Description.txt new file mode 100644 index 00000000..6344d52e Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/ImbueArrow/Description.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/ImbueArrow/Name.txt b/Text/Game/Skills/Unique/Avenger/ImbueArrow/Name.txt new file mode 100644 index 00000000..6506ca7b Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/ImbueArrow/Name.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/Multishot/Description.txt b/Text/Game/Skills/Unique/Avenger/Multishot/Description.txt new file mode 100644 index 00000000..9f54b0c4 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/Multishot/Description.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/Multishot/Name.txt b/Text/Game/Skills/Unique/Avenger/Multishot/Name.txt new file mode 100644 index 00000000..b8f43f25 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/Multishot/Name.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/SnipeDead/Description.txt b/Text/Game/Skills/Unique/Avenger/SnipeDead/Description.txt new file mode 100644 index 00000000..558b5300 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/SnipeDead/Description.txt differ diff --git a/Text/Game/Skills/Unique/Avenger/SnipeDead/Name.txt b/Text/Game/Skills/Unique/Avenger/SnipeDead/Name.txt new file mode 100644 index 00000000..67596b90 Binary files /dev/null and b/Text/Game/Skills/Unique/Avenger/SnipeDead/Name.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/1/Description.txt b/Text/Game/Skills/Unique/DemonicRage/1/Description.txt new file mode 100644 index 00000000..258b3565 Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/1/Description.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/1/Name.txt b/Text/Game/Skills/Unique/DemonicRage/1/Name.txt new file mode 100644 index 00000000..1debc0a8 Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/1/Name.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/2/Description.txt b/Text/Game/Skills/Unique/DemonicRage/2/Description.txt new file mode 100644 index 00000000..1339b374 Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/2/Description.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/2/Name.txt b/Text/Game/Skills/Unique/DemonicRage/2/Name.txt new file mode 100644 index 00000000..3f63fdf4 Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/2/Name.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/3/Description.txt b/Text/Game/Skills/Unique/DemonicRage/3/Description.txt new file mode 100644 index 00000000..f546dde8 Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/3/Description.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/3/Name.txt b/Text/Game/Skills/Unique/DemonicRage/3/Name.txt new file mode 100644 index 00000000..0aa9dfdb Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/3/Name.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/4/Description.txt b/Text/Game/Skills/Unique/DemonicRage/4/Description.txt new file mode 100644 index 00000000..f67c0d2b Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/4/Description.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/4/Name.txt b/Text/Game/Skills/Unique/DemonicRage/4/Name.txt new file mode 100644 index 00000000..0aa9dfdb Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/4/Name.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/AbsoluteRage/Description.txt b/Text/Game/Skills/Unique/DemonicRage/AbsoluteRage/Description.txt new file mode 100644 index 00000000..379497e3 Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/AbsoluteRage/Description.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/AbsoluteRage/Description.u.txt b/Text/Game/Skills/Unique/DemonicRage/AbsoluteRage/Description.u.txt new file mode 100644 index 00000000..8e98a279 Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/AbsoluteRage/Description.u.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/AbsoluteRage/Name.txt b/Text/Game/Skills/Unique/DemonicRage/AbsoluteRage/Name.txt new file mode 100644 index 00000000..9be12869 Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/AbsoluteRage/Name.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/Common/Description.txt b/Text/Game/Skills/Unique/DemonicRage/Common/Description.txt new file mode 100644 index 00000000..6510b874 Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/Common/Description.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/Common/name.txt b/Text/Game/Skills/Unique/DemonicRage/Common/name.txt new file mode 100644 index 00000000..8551f69b Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/Common/name.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/MemoryOfOurBlood/Description.txt b/Text/Game/Skills/Unique/DemonicRage/MemoryOfOurBlood/Description.txt new file mode 100644 index 00000000..15a2d322 Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/MemoryOfOurBlood/Description.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/MemoryOfOurBlood/Name.txt b/Text/Game/Skills/Unique/DemonicRage/MemoryOfOurBlood/Name.txt new file mode 100644 index 00000000..643e7c3c Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/MemoryOfOurBlood/Name.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/MightOverMagic/Description.txt b/Text/Game/Skills/Unique/DemonicRage/MightOverMagic/Description.txt new file mode 100644 index 00000000..10615ffc Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/MightOverMagic/Description.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/MightOverMagic/Name.txt b/Text/Game/Skills/Unique/DemonicRage/MightOverMagic/Name.txt new file mode 100644 index 00000000..a9470bb6 Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/MightOverMagic/Name.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/PowerfullBlow/Description.txt b/Text/Game/Skills/Unique/DemonicRage/PowerfullBlow/Description.txt new file mode 100644 index 00000000..479717f8 Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/PowerfullBlow/Description.txt differ diff --git a/Text/Game/Skills/Unique/DemonicRage/PowerfullBlow/Name.txt b/Text/Game/Skills/Unique/DemonicRage/PowerfullBlow/Name.txt new file mode 100644 index 00000000..307b30af Binary files /dev/null and b/Text/Game/Skills/Unique/DemonicRage/PowerfullBlow/Name.txt differ diff --git a/Text/Game/Skills/Unique/Gating/1/Description.txt b/Text/Game/Skills/Unique/Gating/1/Description.txt new file mode 100644 index 00000000..e1b4c16e Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/1/Description.txt differ diff --git a/Text/Game/Skills/Unique/Gating/1/Name.txt b/Text/Game/Skills/Unique/Gating/1/Name.txt new file mode 100644 index 00000000..a8c67428 Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/1/Name.txt differ diff --git a/Text/Game/Skills/Unique/Gating/2/Description.txt b/Text/Game/Skills/Unique/Gating/2/Description.txt new file mode 100644 index 00000000..c9783d1a Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/2/Description.txt differ diff --git a/Text/Game/Skills/Unique/Gating/2/Name.txt b/Text/Game/Skills/Unique/Gating/2/Name.txt new file mode 100644 index 00000000..da5256cc Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/2/Name.txt differ diff --git a/Text/Game/Skills/Unique/Gating/3/Description.txt b/Text/Game/Skills/Unique/Gating/3/Description.txt new file mode 100644 index 00000000..698068f1 Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/3/Description.txt differ diff --git a/Text/Game/Skills/Unique/Gating/3/Name.txt b/Text/Game/Skills/Unique/Gating/3/Name.txt new file mode 100644 index 00000000..821d4efd Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/3/Name.txt differ diff --git a/Text/Game/Skills/Unique/Gating/4/Description.txt b/Text/Game/Skills/Unique/Gating/4/Description.txt new file mode 100644 index 00000000..5df50ab9 Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/4/Description.txt differ diff --git a/Text/Game/Skills/Unique/Gating/4/Name.txt b/Text/Game/Skills/Unique/Gating/4/Name.txt new file mode 100644 index 00000000..821d4efd Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/4/Name.txt differ diff --git a/Text/Game/Skills/Unique/Gating/AbsoluteGating/Description.txt b/Text/Game/Skills/Unique/Gating/AbsoluteGating/Description.txt new file mode 100644 index 00000000..dfb90d67 Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/AbsoluteGating/Description.txt differ diff --git a/Text/Game/Skills/Unique/Gating/AbsoluteGating/Name.txt b/Text/Game/Skills/Unique/Gating/AbsoluteGating/Name.txt new file mode 100644 index 00000000..983bfe9a Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/AbsoluteGating/Name.txt differ diff --git a/Text/Game/Skills/Unique/Gating/Common/Description.txt b/Text/Game/Skills/Unique/Gating/Common/Description.txt new file mode 100644 index 00000000..7e61ff84 Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/Common/Description.txt differ diff --git a/Text/Game/Skills/Unique/Gating/ConsumeCorpse/Description.txt b/Text/Game/Skills/Unique/Gating/ConsumeCorpse/Description.txt new file mode 100644 index 00000000..0cb77ab1 Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/ConsumeCorpse/Description.txt differ diff --git a/Text/Game/Skills/Unique/Gating/ConsumeCorpse/Name.txt b/Text/Game/Skills/Unique/Gating/ConsumeCorpse/Name.txt new file mode 100644 index 00000000..abcaf876 Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/ConsumeCorpse/Name.txt differ diff --git a/Text/Game/Skills/Unique/Gating/DemonicFire/Description.txt b/Text/Game/Skills/Unique/Gating/DemonicFire/Description.txt new file mode 100644 index 00000000..b2af9f67 Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/DemonicFire/Description.txt differ diff --git a/Text/Game/Skills/Unique/Gating/DemonicFire/Name.txt b/Text/Game/Skills/Unique/Gating/DemonicFire/Name.txt new file mode 100644 index 00000000..efc68624 Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/DemonicFire/Name.txt differ diff --git a/Text/Game/Skills/Unique/Gating/DemonicStrike/Description.txt b/Text/Game/Skills/Unique/Gating/DemonicStrike/Description.txt new file mode 100644 index 00000000..a0084ded Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/DemonicStrike/Description.txt differ diff --git a/Text/Game/Skills/Unique/Gating/DemonicStrike/Name.txt b/Text/Game/Skills/Unique/Gating/DemonicStrike/Name.txt new file mode 100644 index 00000000..b119a250 Binary files /dev/null and b/Text/Game/Skills/Unique/Gating/DemonicStrike/Name.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/1/Description.txt b/Text/Game/Skills/Unique/Invocation/1/Description.txt new file mode 100644 index 00000000..54eacc2a Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/1/Description.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/1/Name.txt b/Text/Game/Skills/Unique/Invocation/1/Name.txt new file mode 100644 index 00000000..2af63134 Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/1/Name.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/2/Description.txt b/Text/Game/Skills/Unique/Invocation/2/Description.txt new file mode 100644 index 00000000..0ed327f2 Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/2/Description.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/2/Name.txt b/Text/Game/Skills/Unique/Invocation/2/Name.txt new file mode 100644 index 00000000..ff9b7d88 Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/2/Name.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/3/Description.txt b/Text/Game/Skills/Unique/Invocation/3/Description.txt new file mode 100644 index 00000000..a63e2c9a Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/3/Description.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/3/Name.txt b/Text/Game/Skills/Unique/Invocation/3/Name.txt new file mode 100644 index 00000000..ec9fe91b Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/3/Name.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/4/Description.txt b/Text/Game/Skills/Unique/Invocation/4/Description.txt new file mode 100644 index 00000000..6828069f Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/4/Description.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/4/Name.txt b/Text/Game/Skills/Unique/Invocation/4/Name.txt new file mode 100644 index 00000000..ec9fe91b Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/4/Name.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/AbsoluteChains/Description.txt b/Text/Game/Skills/Unique/Invocation/AbsoluteChains/Description.txt new file mode 100644 index 00000000..487e06d7 Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/AbsoluteChains/Description.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/AbsoluteChains/Name.txt b/Text/Game/Skills/Unique/Invocation/AbsoluteChains/Name.txt new file mode 100644 index 00000000..3be6f655 Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/AbsoluteChains/Name.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/Common/Description.txt b/Text/Game/Skills/Unique/Invocation/Common/Description.txt new file mode 100644 index 00000000..c5405404 Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/Common/Description.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/Common/name.txt b/Text/Game/Skills/Unique/Invocation/Common/name.txt new file mode 100644 index 00000000..08ae8550 Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/Common/name.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/DarkRitual/Description.txt b/Text/Game/Skills/Unique/Invocation/DarkRitual/Description.txt new file mode 100644 index 00000000..f0f05cf8 Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/DarkRitual/Description.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/DarkRitual/Name.txt b/Text/Game/Skills/Unique/Invocation/DarkRitual/Name.txt new file mode 100644 index 00000000..aae3ec0b Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/DarkRitual/Name.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/ElementalVision/Description.txt b/Text/Game/Skills/Unique/Invocation/ElementalVision/Description.txt new file mode 100644 index 00000000..ae273166 Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/ElementalVision/Description.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/ElementalVision/Name.txt b/Text/Game/Skills/Unique/Invocation/ElementalVision/Name.txt new file mode 100644 index 00000000..246beff1 Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/ElementalVision/Name.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/EmpoweredSpells/Description.txt b/Text/Game/Skills/Unique/Invocation/EmpoweredSpells/Description.txt new file mode 100644 index 00000000..59bc8a29 Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/EmpoweredSpells/Description.txt differ diff --git a/Text/Game/Skills/Unique/Invocation/EmpoweredSpells/Name.txt b/Text/Game/Skills/Unique/Invocation/EmpoweredSpells/Name.txt new file mode 100644 index 00000000..e2f4b13c Binary files /dev/null and b/Text/Game/Skills/Unique/Invocation/EmpoweredSpells/Name.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/1/Description.txt b/Text/Game/Skills/Unique/Necromancy/1/Description.txt new file mode 100644 index 00000000..73762460 Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/1/Description.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/1/Name.txt b/Text/Game/Skills/Unique/Necromancy/1/Name.txt new file mode 100644 index 00000000..eb936284 Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/1/Name.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/2/Description.txt b/Text/Game/Skills/Unique/Necromancy/2/Description.txt new file mode 100644 index 00000000..c8fce7fa Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/2/Description.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/2/Name.txt b/Text/Game/Skills/Unique/Necromancy/2/Name.txt new file mode 100644 index 00000000..aad6fcce Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/2/Name.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/3/Description.txt b/Text/Game/Skills/Unique/Necromancy/3/Description.txt new file mode 100644 index 00000000..03e3fccc Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/3/Description.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/3/Name.txt b/Text/Game/Skills/Unique/Necromancy/3/Name.txt new file mode 100644 index 00000000..61e97c1d Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/3/Name.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/4/Description.txt b/Text/Game/Skills/Unique/Necromancy/4/Description.txt new file mode 100644 index 00000000..fa7cef21 Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/4/Description.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/4/Name.txt b/Text/Game/Skills/Unique/Necromancy/4/Name.txt new file mode 100644 index 00000000..f98b813a Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/4/Name.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/AbsoluteFear/Description.txt b/Text/Game/Skills/Unique/Necromancy/AbsoluteFear/Description.txt new file mode 100644 index 00000000..67f60087 Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/AbsoluteFear/Description.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/AbsoluteFear/Name.txt b/Text/Game/Skills/Unique/Necromancy/AbsoluteFear/Name.txt new file mode 100644 index 00000000..e1976295 Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/AbsoluteFear/Name.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/Common/Description.txt b/Text/Game/Skills/Unique/Necromancy/Common/Description.txt new file mode 100644 index 00000000..a5689e4a Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/Common/Description.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/DeathScream/Description.txt b/Text/Game/Skills/Unique/Necromancy/DeathScream/Description.txt new file mode 100644 index 00000000..da70abab Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/DeathScream/Description.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/DeathScream/Name.txt b/Text/Game/Skills/Unique/Necromancy/DeathScream/Name.txt new file mode 100644 index 00000000..c54a97b0 Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/DeathScream/Name.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/NoRestForTheWicked/Description.txt b/Text/Game/Skills/Unique/Necromancy/NoRestForTheWicked/Description.txt new file mode 100644 index 00000000..c2e2f789 Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/NoRestForTheWicked/Description.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/NoRestForTheWicked/Name.txt b/Text/Game/Skills/Unique/Necromancy/NoRestForTheWicked/Name.txt new file mode 100644 index 00000000..feed3988 Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/NoRestForTheWicked/Name.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/RaiseArchers/Description.txt b/Text/Game/Skills/Unique/Necromancy/RaiseArchers/Description.txt new file mode 100644 index 00000000..83329875 Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/RaiseArchers/Description.txt differ diff --git a/Text/Game/Skills/Unique/Necromancy/RaiseArchers/Name.txt b/Text/Game/Skills/Unique/Necromancy/RaiseArchers/Name.txt new file mode 100644 index 00000000..d442678f Binary files /dev/null and b/Text/Game/Skills/Unique/Necromancy/RaiseArchers/Name.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/1/Description.txt b/Text/Game/Skills/Unique/Runelore/1/Description.txt new file mode 100644 index 00000000..e20e9e0a Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/1/Description.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/1/Description.u.txt b/Text/Game/Skills/Unique/Runelore/1/Description.u.txt new file mode 100644 index 00000000..4ef75d5e Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/1/Description.u.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/1/Name.txt b/Text/Game/Skills/Unique/Runelore/1/Name.txt new file mode 100644 index 00000000..28cb761d Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/1/Name.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/2/Description.txt b/Text/Game/Skills/Unique/Runelore/2/Description.txt new file mode 100644 index 00000000..db21f765 Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/2/Description.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/2/Name.txt b/Text/Game/Skills/Unique/Runelore/2/Name.txt new file mode 100644 index 00000000..26eade4a Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/2/Name.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/3/Description.txt b/Text/Game/Skills/Unique/Runelore/3/Description.txt new file mode 100644 index 00000000..0b0a5736 Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/3/Description.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/3/Name.txt b/Text/Game/Skills/Unique/Runelore/3/Name.txt new file mode 100644 index 00000000..c84aa899 Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/3/Name.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/4/Description.txt b/Text/Game/Skills/Unique/Runelore/4/Description.txt new file mode 100644 index 00000000..df8f2571 Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/4/Description.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/4/Name.txt b/Text/Game/Skills/Unique/Runelore/4/Name.txt new file mode 100644 index 00000000..ee679b60 Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/4/Name.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/AbsoluteProtection/Description.txt b/Text/Game/Skills/Unique/Runelore/AbsoluteProtection/Description.txt new file mode 100644 index 00000000..b2e915ee Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/AbsoluteProtection/Description.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/AbsoluteProtection/Description.u.txt b/Text/Game/Skills/Unique/Runelore/AbsoluteProtection/Description.u.txt new file mode 100644 index 00000000..7f19ec55 Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/AbsoluteProtection/Description.u.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/AbsoluteProtection/Name.txt b/Text/Game/Skills/Unique/Runelore/AbsoluteProtection/Name.txt new file mode 100644 index 00000000..0ea46281 Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/AbsoluteProtection/Name.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/Common/Description.txt b/Text/Game/Skills/Unique/Runelore/Common/Description.txt new file mode 100644 index 00000000..5dfafec1 Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/Common/Description.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/Common/name.txt b/Text/Game/Skills/Unique/Runelore/Common/name.txt new file mode 100644 index 00000000..9727ce5b Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/Common/name.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/FineRune/Description.txt b/Text/Game/Skills/Unique/Runelore/FineRune/Description.txt new file mode 100644 index 00000000..d7f2d410 Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/FineRune/Description.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/FineRune/Name.txt b/Text/Game/Skills/Unique/Runelore/FineRune/Name.txt new file mode 100644 index 00000000..7734b8e0 Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/FineRune/Name.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/RefreshRune/Description.txt b/Text/Game/Skills/Unique/Runelore/RefreshRune/Description.txt new file mode 100644 index 00000000..5d52c6da Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/RefreshRune/Description.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/RefreshRune/Name.txt b/Text/Game/Skills/Unique/Runelore/RefreshRune/Name.txt new file mode 100644 index 00000000..76e574f5 Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/RefreshRune/Name.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/StrongRune/Description.txt b/Text/Game/Skills/Unique/Runelore/StrongRune/Description.txt new file mode 100644 index 00000000..7ed201f5 Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/StrongRune/Description.txt differ diff --git a/Text/Game/Skills/Unique/Runelore/StrongRune/Name.txt b/Text/Game/Skills/Unique/Runelore/StrongRune/Name.txt new file mode 100644 index 00000000..e0a9cb66 Binary files /dev/null and b/Text/Game/Skills/Unique/Runelore/StrongRune/Name.txt differ diff --git a/Text/Game/Skills/Unique/Training/1/Description.txt b/Text/Game/Skills/Unique/Training/1/Description.txt new file mode 100644 index 00000000..5fb5bb24 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/1/Description.txt differ diff --git a/Text/Game/Skills/Unique/Training/1/Name.txt b/Text/Game/Skills/Unique/Training/1/Name.txt new file mode 100644 index 00000000..70b15b50 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/1/Name.txt differ diff --git a/Text/Game/Skills/Unique/Training/2/Description.txt b/Text/Game/Skills/Unique/Training/2/Description.txt new file mode 100644 index 00000000..5652ff50 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/2/Description.txt differ diff --git a/Text/Game/Skills/Unique/Training/2/Name.txt b/Text/Game/Skills/Unique/Training/2/Name.txt new file mode 100644 index 00000000..0b676103 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/2/Name.txt differ diff --git a/Text/Game/Skills/Unique/Training/3/Description.txt b/Text/Game/Skills/Unique/Training/3/Description.txt new file mode 100644 index 00000000..2aedd5e5 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/3/Description.txt differ diff --git a/Text/Game/Skills/Unique/Training/3/Name.txt b/Text/Game/Skills/Unique/Training/3/Name.txt new file mode 100644 index 00000000..d5688f3a Binary files /dev/null and b/Text/Game/Skills/Unique/Training/3/Name.txt differ diff --git a/Text/Game/Skills/Unique/Training/4/Description.txt b/Text/Game/Skills/Unique/Training/4/Description.txt new file mode 100644 index 00000000..1342546f Binary files /dev/null and b/Text/Game/Skills/Unique/Training/4/Description.txt differ diff --git a/Text/Game/Skills/Unique/Training/4/Name.txt b/Text/Game/Skills/Unique/Training/4/Name.txt new file mode 100644 index 00000000..d5688f3a Binary files /dev/null and b/Text/Game/Skills/Unique/Training/4/Name.txt differ diff --git a/Text/Game/Skills/Unique/Training/AbsoluteCharge/Description.txt b/Text/Game/Skills/Unique/Training/AbsoluteCharge/Description.txt new file mode 100644 index 00000000..5b4517c4 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/AbsoluteCharge/Description.txt differ diff --git a/Text/Game/Skills/Unique/Training/AbsoluteCharge/Description.u.txt b/Text/Game/Skills/Unique/Training/AbsoluteCharge/Description.u.txt new file mode 100644 index 00000000..2db31ff1 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/AbsoluteCharge/Description.u.txt differ diff --git a/Text/Game/Skills/Unique/Training/AbsoluteCharge/Name.txt b/Text/Game/Skills/Unique/Training/AbsoluteCharge/Name.txt new file mode 100644 index 00000000..2903f093 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/AbsoluteCharge/Name.txt differ diff --git a/Text/Game/Skills/Unique/Training/Common/Description.txt b/Text/Game/Skills/Unique/Training/Common/Description.txt new file mode 100644 index 00000000..30cf6b62 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/Common/Description.txt differ diff --git a/Text/Game/Skills/Unique/Training/Common/name.txt b/Text/Game/Skills/Unique/Training/Common/name.txt new file mode 100644 index 00000000..f9e3b912 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/Common/name.txt differ diff --git a/Text/Game/Skills/Unique/Training/ExpertTrainer/Description.txt b/Text/Game/Skills/Unique/Training/ExpertTrainer/Description.txt new file mode 100644 index 00000000..3f457f00 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/ExpertTrainer/Description.txt differ diff --git a/Text/Game/Skills/Unique/Training/ExpertTrainer/Name.txt b/Text/Game/Skills/Unique/Training/ExpertTrainer/Name.txt new file mode 100644 index 00000000..e0651745 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/ExpertTrainer/Name.txt differ diff --git a/Text/Game/Skills/Unique/Training/HolyCharge/Description.txt b/Text/Game/Skills/Unique/Training/HolyCharge/Description.txt new file mode 100644 index 00000000..2c83cffe Binary files /dev/null and b/Text/Game/Skills/Unique/Training/HolyCharge/Description.txt differ diff --git a/Text/Game/Skills/Unique/Training/HolyCharge/Name.txt b/Text/Game/Skills/Unique/Training/HolyCharge/Name.txt new file mode 100644 index 00000000..195bf838 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/HolyCharge/Name.txt differ diff --git a/Text/Game/Skills/Unique/Training/Prayer/Description.txt b/Text/Game/Skills/Unique/Training/Prayer/Description.txt new file mode 100644 index 00000000..2dd59a90 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/Prayer/Description.txt differ diff --git a/Text/Game/Skills/Unique/Training/Prayer/Name.txt b/Text/Game/Skills/Unique/Training/Prayer/Name.txt new file mode 100644 index 00000000..e7907975 Binary files /dev/null and b/Text/Game/Skills/Unique/Training/Prayer/Name.txt differ diff --git a/Text/Game/Spells/Adventure/DimensionDoor/Long_Description.txt b/Text/Game/Spells/Adventure/DimensionDoor/Long_Description.txt new file mode 100644 index 00000000..a0b127dd Binary files /dev/null and b/Text/Game/Spells/Adventure/DimensionDoor/Long_Description.txt differ diff --git a/Text/Game/Spells/Adventure/DimensionDoor/Name.txt b/Text/Game/Spells/Adventure/DimensionDoor/Name.txt new file mode 100644 index 00000000..cd4e9b20 Binary files /dev/null and b/Text/Game/Spells/Adventure/DimensionDoor/Name.txt differ diff --git a/Text/Game/Spells/Adventure/Summon_Boat/Long_Description.txt b/Text/Game/Spells/Adventure/Summon_Boat/Long_Description.txt new file mode 100644 index 00000000..5dbe07ab Binary files /dev/null and b/Text/Game/Spells/Adventure/Summon_Boat/Long_Description.txt differ diff --git a/Text/Game/Spells/Adventure/Summon_Boat/Name.txt b/Text/Game/Spells/Adventure/Summon_Boat/Name.txt new file mode 100644 index 00000000..4c30e3d3 Binary files /dev/null and b/Text/Game/Spells/Adventure/Summon_Boat/Name.txt differ diff --git a/Text/Game/Spells/Adventure/Summon_Boat/cant_cast.txt b/Text/Game/Spells/Adventure/Summon_Boat/cant_cast.txt new file mode 100644 index 00000000..411b9a4f Binary files /dev/null and b/Text/Game/Spells/Adventure/Summon_Boat/cant_cast.txt differ diff --git a/Text/Game/Spells/Adventure/Summon_Creatures/Long_Description.txt b/Text/Game/Spells/Adventure/Summon_Creatures/Long_Description.txt new file mode 100644 index 00000000..04ffc680 Binary files /dev/null and b/Text/Game/Spells/Adventure/Summon_Creatures/Long_Description.txt differ diff --git a/Text/Game/Spells/Adventure/Summon_Creatures/Name.txt b/Text/Game/Spells/Adventure/Summon_Creatures/Name.txt new file mode 100644 index 00000000..2bd419ad Binary files /dev/null and b/Text/Game/Spells/Adventure/Summon_Creatures/Name.txt differ diff --git a/Text/Game/Spells/Adventure/Summon_Creatures/cant_cast.txt b/Text/Game/Spells/Adventure/Summon_Creatures/cant_cast.txt new file mode 100644 index 00000000..d275d9a6 Binary files /dev/null and b/Text/Game/Spells/Adventure/Summon_Creatures/cant_cast.txt differ diff --git a/Text/Game/Spells/Adventure/Town_Portal/Long_Description.txt b/Text/Game/Spells/Adventure/Town_Portal/Long_Description.txt new file mode 100644 index 00000000..98626796 Binary files /dev/null and b/Text/Game/Spells/Adventure/Town_Portal/Long_Description.txt differ diff --git a/Text/Game/Spells/Adventure/Town_Portal/Name.txt b/Text/Game/Spells/Adventure/Town_Portal/Name.txt new file mode 100644 index 00000000..7ee28c9e Binary files /dev/null and b/Text/Game/Spells/Adventure/Town_Portal/Name.txt differ diff --git a/Text/Game/Spells/Combat/Ammo_Steal/Long_Description.txt b/Text/Game/Spells/Combat/Ammo_Steal/Long_Description.txt new file mode 100644 index 00000000..e7bf6b41 Binary files /dev/null and b/Text/Game/Spells/Combat/Ammo_Steal/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Ammo_Steal/Name.txt b/Text/Game/Spells/Combat/Ammo_Steal/Name.txt new file mode 100644 index 00000000..4423d172 Binary files /dev/null and b/Text/Game/Spells/Combat/Ammo_Steal/Name.txt differ diff --git a/Text/Game/Spells/Combat/Animate_Dead/Long_Description.txt b/Text/Game/Spells/Combat/Animate_Dead/Long_Description.txt new file mode 100644 index 00000000..a1a19158 Binary files /dev/null and b/Text/Game/Spells/Combat/Animate_Dead/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Animate_Dead/Name.txt b/Text/Game/Spells/Combat/Animate_Dead/Name.txt new file mode 100644 index 00000000..0bbee30d Binary files /dev/null and b/Text/Game/Spells/Combat/Animate_Dead/Name.txt differ diff --git a/Text/Game/Spells/Combat/Anti-magic/Long_Description.txt b/Text/Game/Spells/Combat/Anti-magic/Long_Description.txt new file mode 100644 index 00000000..96edc14a Binary files /dev/null and b/Text/Game/Spells/Combat/Anti-magic/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Anti-magic/Name.txt b/Text/Game/Spells/Combat/Anti-magic/Name.txt new file mode 100644 index 00000000..2903f093 Binary files /dev/null and b/Text/Game/Spells/Combat/Anti-magic/Name.txt differ diff --git a/Text/Game/Spells/Combat/Anti-magic/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Anti-magic/SpellBookPrediction.txt new file mode 100644 index 00000000..7e502494 Binary files /dev/null and b/Text/Game/Spells/Combat/Anti-magic/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/ArcaneCrystal/Long_Description.txt b/Text/Game/Spells/Combat/ArcaneCrystal/Long_Description.txt new file mode 100644 index 00000000..848f03d7 Binary files /dev/null and b/Text/Game/Spells/Combat/ArcaneCrystal/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/ArcaneCrystal/Name.txt b/Text/Game/Spells/Combat/ArcaneCrystal/Name.txt new file mode 100644 index 00000000..ae1be42e Binary files /dev/null and b/Text/Game/Spells/Combat/ArcaneCrystal/Name.txt differ diff --git a/Text/Game/Spells/Combat/ArcaneCrystal/SpellBookPrediction.txt b/Text/Game/Spells/Combat/ArcaneCrystal/SpellBookPrediction.txt new file mode 100644 index 00000000..23302df4 Binary files /dev/null and b/Text/Game/Spells/Combat/ArcaneCrystal/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Armageddon/Long_Description.txt b/Text/Game/Spells/Combat/Armageddon/Long_Description.txt new file mode 100644 index 00000000..b114bedd Binary files /dev/null and b/Text/Game/Spells/Combat/Armageddon/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Armageddon/Name.txt b/Text/Game/Spells/Combat/Armageddon/Name.txt new file mode 100644 index 00000000..22e777e5 Binary files /dev/null and b/Text/Game/Spells/Combat/Armageddon/Name.txt differ diff --git a/Text/Game/Spells/Combat/Berserk/Long_Description.txt b/Text/Game/Spells/Combat/Berserk/Long_Description.txt new file mode 100644 index 00000000..2ee28f04 Binary files /dev/null and b/Text/Game/Spells/Combat/Berserk/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Berserk/Name.txt b/Text/Game/Spells/Combat/Berserk/Name.txt new file mode 100644 index 00000000..b769e3bb Binary files /dev/null and b/Text/Game/Spells/Combat/Berserk/Name.txt differ diff --git a/Text/Game/Spells/Combat/Berserk/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Berserk/SpellBookPrediction.txt new file mode 100644 index 00000000..051a829a Binary files /dev/null and b/Text/Game/Spells/Combat/Berserk/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/BigBossFirewall/Long_Description.txt b/Text/Game/Spells/Combat/BigBossFirewall/Long_Description.txt new file mode 100644 index 00000000..d35ae50d Binary files /dev/null and b/Text/Game/Spells/Combat/BigBossFirewall/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/BigBossFirewall/Name.txt b/Text/Game/Spells/Combat/BigBossFirewall/Name.txt new file mode 100644 index 00000000..c0b53081 Binary files /dev/null and b/Text/Game/Spells/Combat/BigBossFirewall/Name.txt differ diff --git a/Text/Game/Spells/Combat/BladeBarrier/Long_Description.txt b/Text/Game/Spells/Combat/BladeBarrier/Long_Description.txt new file mode 100644 index 00000000..af08fdd8 Binary files /dev/null and b/Text/Game/Spells/Combat/BladeBarrier/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/BladeBarrier/Name.txt b/Text/Game/Spells/Combat/BladeBarrier/Name.txt new file mode 100644 index 00000000..600377d4 Binary files /dev/null and b/Text/Game/Spells/Combat/BladeBarrier/Name.txt differ diff --git a/Text/Game/Spells/Combat/BladeBarrier/SpellBookPrediction.txt b/Text/Game/Spells/Combat/BladeBarrier/SpellBookPrediction.txt new file mode 100644 index 00000000..2b192523 Binary files /dev/null and b/Text/Game/Spells/Combat/BladeBarrier/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Bless/Long_Description.txt b/Text/Game/Spells/Combat/Bless/Long_Description.txt new file mode 100644 index 00000000..4b2483fd Binary files /dev/null and b/Text/Game/Spells/Combat/Bless/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Bless/Name.txt b/Text/Game/Spells/Combat/Bless/Name.txt new file mode 100644 index 00000000..7a3338da Binary files /dev/null and b/Text/Game/Spells/Combat/Bless/Name.txt differ diff --git a/Text/Game/Spells/Combat/Bless/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Bless/SpellBookPrediction.txt new file mode 100644 index 00000000..558ca5f1 Binary files /dev/null and b/Text/Game/Spells/Combat/Bless/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Blind/Long_Description.txt b/Text/Game/Spells/Combat/Blind/Long_Description.txt new file mode 100644 index 00000000..4d78993b Binary files /dev/null and b/Text/Game/Spells/Combat/Blind/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Blind/Name.txt b/Text/Game/Spells/Combat/Blind/Name.txt new file mode 100644 index 00000000..d40a192e Binary files /dev/null and b/Text/Game/Spells/Combat/Blind/Name.txt differ diff --git a/Text/Game/Spells/Combat/Blind/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Blind/SpellBookPrediction.txt new file mode 100644 index 00000000..558ca5f1 Binary files /dev/null and b/Text/Game/Spells/Combat/Blind/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Blind/SpellBookPrediction_Expert.txt b/Text/Game/Spells/Combat/Blind/SpellBookPrediction_Expert.txt new file mode 100644 index 00000000..4056413f Binary files /dev/null and b/Text/Game/Spells/Combat/Blind/SpellBookPrediction_Expert.txt differ diff --git a/Text/Game/Spells/Combat/Bloodlust/Long_Description.txt b/Text/Game/Spells/Combat/Bloodlust/Long_Description.txt new file mode 100644 index 00000000..744f7181 Binary files /dev/null and b/Text/Game/Spells/Combat/Bloodlust/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Bloodlust/Name.txt b/Text/Game/Spells/Combat/Bloodlust/Name.txt new file mode 100644 index 00000000..1a1839f4 Binary files /dev/null and b/Text/Game/Spells/Combat/Bloodlust/Name.txt differ diff --git a/Text/Game/Spells/Combat/Bloodlust/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Bloodlust/SpellBookPrediction.txt new file mode 100644 index 00000000..f3d5c84d Binary files /dev/null and b/Text/Game/Spells/Combat/Bloodlust/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Brutality/Long_Description.txt b/Text/Game/Spells/Combat/Brutality/Long_Description.txt new file mode 100644 index 00000000..e8c76659 Binary files /dev/null and b/Text/Game/Spells/Combat/Brutality/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Brutality/Name.txt b/Text/Game/Spells/Combat/Brutality/Name.txt new file mode 100644 index 00000000..6ea50551 Binary files /dev/null and b/Text/Game/Spells/Combat/Brutality/Name.txt differ diff --git a/Text/Game/Spells/Combat/Celestial_Shield/Long_Description.txt b/Text/Game/Spells/Combat/Celestial_Shield/Long_Description.txt new file mode 100644 index 00000000..28c8b746 Binary files /dev/null and b/Text/Game/Spells/Combat/Celestial_Shield/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Celestial_Shield/Name.txt b/Text/Game/Spells/Combat/Celestial_Shield/Name.txt new file mode 100644 index 00000000..53cffb65 Binary files /dev/null and b/Text/Game/Spells/Combat/Celestial_Shield/Name.txt differ diff --git a/Text/Game/Spells/Combat/Celestial_Shield/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Celestial_Shield/SpellBookPrediction.txt new file mode 100644 index 00000000..c73dacf9 Binary files /dev/null and b/Text/Game/Spells/Combat/Celestial_Shield/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Chain_Lightning/Long_Description.txt b/Text/Game/Spells/Combat/Chain_Lightning/Long_Description.txt new file mode 100644 index 00000000..ec98d5a5 Binary files /dev/null and b/Text/Game/Spells/Combat/Chain_Lightning/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Chain_Lightning/Name.txt b/Text/Game/Spells/Combat/Chain_Lightning/Name.txt new file mode 100644 index 00000000..a3f49b94 Binary files /dev/null and b/Text/Game/Spells/Combat/Chain_Lightning/Name.txt differ diff --git a/Text/Game/Spells/Combat/ConjurePhoenix/Long_Description.txt b/Text/Game/Spells/Combat/ConjurePhoenix/Long_Description.txt new file mode 100644 index 00000000..4bdad515 Binary files /dev/null and b/Text/Game/Spells/Combat/ConjurePhoenix/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/ConjurePhoenix/Name.txt b/Text/Game/Spells/Combat/ConjurePhoenix/Name.txt new file mode 100644 index 00000000..1806040f Binary files /dev/null and b/Text/Game/Spells/Combat/ConjurePhoenix/Name.txt differ diff --git a/Text/Game/Spells/Combat/ConjurePhoenix/SpellBookPrediction.txt b/Text/Game/Spells/Combat/ConjurePhoenix/SpellBookPrediction.txt new file mode 100644 index 00000000..c93928f4 Binary files /dev/null and b/Text/Game/Spells/Combat/ConjurePhoenix/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Curse/Long_Description.txt b/Text/Game/Spells/Combat/Curse/Long_Description.txt new file mode 100644 index 00000000..b3109952 Binary files /dev/null and b/Text/Game/Spells/Combat/Curse/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Curse/Name.txt b/Text/Game/Spells/Combat/Curse/Name.txt new file mode 100644 index 00000000..a1376631 Binary files /dev/null and b/Text/Game/Spells/Combat/Curse/Name.txt differ diff --git a/Text/Game/Spells/Combat/Curse/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Curse/SpellBookPrediction.txt new file mode 100644 index 00000000..558ca5f1 Binary files /dev/null and b/Text/Game/Spells/Combat/Curse/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/DeepFreeze/Long_Description.txt b/Text/Game/Spells/Combat/DeepFreeze/Long_Description.txt new file mode 100644 index 00000000..070001ef Binary files /dev/null and b/Text/Game/Spells/Combat/DeepFreeze/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/DeepFreeze/Name.txt b/Text/Game/Spells/Combat/DeepFreeze/Name.txt new file mode 100644 index 00000000..83c63019 Binary files /dev/null and b/Text/Game/Spells/Combat/DeepFreeze/Name.txt differ diff --git a/Text/Game/Spells/Combat/DeepFreeze/SpellBookPrediction.txt b/Text/Game/Spells/Combat/DeepFreeze/SpellBookPrediction.txt new file mode 100644 index 00000000..d12d50d4 Binary files /dev/null and b/Text/Game/Spells/Combat/DeepFreeze/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/DeepFreeze/SpellBookPrediction_MasterOfIce.txt b/Text/Game/Spells/Combat/DeepFreeze/SpellBookPrediction_MasterOfIce.txt new file mode 100644 index 00000000..0dcde4b7 Binary files /dev/null and b/Text/Game/Spells/Combat/DeepFreeze/SpellBookPrediction_MasterOfIce.txt differ diff --git a/Text/Game/Spells/Combat/Deflect_Arrows/Long_Description.txt b/Text/Game/Spells/Combat/Deflect_Arrows/Long_Description.txt new file mode 100644 index 00000000..0ab0a3d7 Binary files /dev/null and b/Text/Game/Spells/Combat/Deflect_Arrows/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Deflect_Arrows/Name.txt b/Text/Game/Spells/Combat/Deflect_Arrows/Name.txt new file mode 100644 index 00000000..e13c6102 Binary files /dev/null and b/Text/Game/Spells/Combat/Deflect_Arrows/Name.txt differ diff --git a/Text/Game/Spells/Combat/Deflect_Arrows/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Deflect_Arrows/SpellBookPrediction.txt new file mode 100644 index 00000000..15502c41 Binary files /dev/null and b/Text/Game/Spells/Combat/Deflect_Arrows/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Dispel/Long_Description.txt b/Text/Game/Spells/Combat/Dispel/Long_Description.txt new file mode 100644 index 00000000..7f35633c Binary files /dev/null and b/Text/Game/Spells/Combat/Dispel/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Dispel/Name.txt b/Text/Game/Spells/Combat/Dispel/Name.txt new file mode 100644 index 00000000..70f1f63d Binary files /dev/null and b/Text/Game/Spells/Combat/Dispel/Name.txt differ diff --git a/Text/Game/Spells/Combat/Disrupting_Ray/Long_Description.txt b/Text/Game/Spells/Combat/Disrupting_Ray/Long_Description.txt new file mode 100644 index 00000000..75ae1b8d Binary files /dev/null and b/Text/Game/Spells/Combat/Disrupting_Ray/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Disrupting_Ray/Name.txt b/Text/Game/Spells/Combat/Disrupting_Ray/Name.txt new file mode 100644 index 00000000..2aa3dbf8 Binary files /dev/null and b/Text/Game/Spells/Combat/Disrupting_Ray/Name.txt differ diff --git a/Text/Game/Spells/Combat/Disrupting_Ray/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Disrupting_Ray/SpellBookPrediction.txt new file mode 100644 index 00000000..a5deaff7 Binary files /dev/null and b/Text/Game/Spells/Combat/Disrupting_Ray/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Disrupting_Ray/SpellBookPrediction_Damage.txt b/Text/Game/Spells/Combat/Disrupting_Ray/SpellBookPrediction_Damage.txt new file mode 100644 index 00000000..c2dc6a07 Binary files /dev/null and b/Text/Game/Spells/Combat/Disrupting_Ray/SpellBookPrediction_Damage.txt differ diff --git a/Text/Game/Spells/Combat/DivineVengeance/Long_Description.txt b/Text/Game/Spells/Combat/DivineVengeance/Long_Description.txt new file mode 100644 index 00000000..e8daf481 Binary files /dev/null and b/Text/Game/Spells/Combat/DivineVengeance/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/DivineVengeance/Name.txt b/Text/Game/Spells/Combat/DivineVengeance/Name.txt new file mode 100644 index 00000000..7aea68fe Binary files /dev/null and b/Text/Game/Spells/Combat/DivineVengeance/Name.txt differ diff --git a/Text/Game/Spells/Combat/Earthquake/Long_Description.txt b/Text/Game/Spells/Combat/Earthquake/Long_Description.txt new file mode 100644 index 00000000..aeb5703f Binary files /dev/null and b/Text/Game/Spells/Combat/Earthquake/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Earthquake/Name.txt b/Text/Game/Spells/Combat/Earthquake/Name.txt new file mode 100644 index 00000000..b3776999 Binary files /dev/null and b/Text/Game/Spells/Combat/Earthquake/Name.txt differ diff --git a/Text/Game/Spells/Combat/Earthquake/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Earthquake/SpellBookPrediction.txt new file mode 100644 index 00000000..449c91a0 Binary files /dev/null and b/Text/Game/Spells/Combat/Earthquake/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/EffectFire/Long_Description.txt b/Text/Game/Spells/Combat/EffectFire/Long_Description.txt new file mode 100644 index 00000000..ea811593 Binary files /dev/null and b/Text/Game/Spells/Combat/EffectFire/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EffectFire/Name.txt b/Text/Game/Spells/Combat/EffectFire/Name.txt new file mode 100644 index 00000000..3c7f7b54 Binary files /dev/null and b/Text/Game/Spells/Combat/EffectFire/Name.txt differ diff --git a/Text/Game/Spells/Combat/EffectFrozen/Long_Description.txt b/Text/Game/Spells/Combat/EffectFrozen/Long_Description.txt new file mode 100644 index 00000000..b88941b3 Binary files /dev/null and b/Text/Game/Spells/Combat/EffectFrozen/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EffectFrozen/Name.txt b/Text/Game/Spells/Combat/EffectFrozen/Name.txt new file mode 100644 index 00000000..09028e69 Binary files /dev/null and b/Text/Game/Spells/Combat/EffectFrozen/Name.txt differ diff --git a/Text/Game/Spells/Combat/EffectStunned/Long_Description.txt b/Text/Game/Spells/Combat/EffectStunned/Long_Description.txt new file mode 100644 index 00000000..6112606c Binary files /dev/null and b/Text/Game/Spells/Combat/EffectStunned/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EffectStunned/Name.txt b/Text/Game/Spells/Combat/EffectStunned/Name.txt new file mode 100644 index 00000000..5c955c6e Binary files /dev/null and b/Text/Game/Spells/Combat/EffectStunned/Name.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredArmageddon/Long_Description.txt b/Text/Game/Spells/Combat/EmpoweredArmageddon/Long_Description.txt new file mode 100644 index 00000000..d292ed68 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredArmageddon/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredArmageddon/Name.txt b/Text/Game/Spells/Combat/EmpoweredArmageddon/Name.txt new file mode 100644 index 00000000..45620475 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredArmageddon/Name.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredChain_Lightning/Long_Description.txt b/Text/Game/Spells/Combat/EmpoweredChain_Lightning/Long_Description.txt new file mode 100644 index 00000000..2fed6ecf Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredChain_Lightning/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredChain_Lightning/Name.txt b/Text/Game/Spells/Combat/EmpoweredChain_Lightning/Name.txt new file mode 100644 index 00000000..6bc9ca73 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredChain_Lightning/Name.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredDeepFreeze/Long_Description.txt b/Text/Game/Spells/Combat/EmpoweredDeepFreeze/Long_Description.txt new file mode 100644 index 00000000..23c3f103 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredDeepFreeze/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredDeepFreeze/Name.txt b/Text/Game/Spells/Combat/EmpoweredDeepFreeze/Name.txt new file mode 100644 index 00000000..ab86fd71 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredDeepFreeze/Name.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredFireball/Long_Description.txt b/Text/Game/Spells/Combat/EmpoweredFireball/Long_Description.txt new file mode 100644 index 00000000..da5dc1db Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredFireball/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredFireball/Name.txt b/Text/Game/Spells/Combat/EmpoweredFireball/Name.txt new file mode 100644 index 00000000..36710168 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredFireball/Name.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredFrost_Ring/Long_Description.txt b/Text/Game/Spells/Combat/EmpoweredFrost_Ring/Long_Description.txt new file mode 100644 index 00000000..a692c33e Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredFrost_Ring/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredFrost_Ring/Name.txt b/Text/Game/Spells/Combat/EmpoweredFrost_Ring/Name.txt new file mode 100644 index 00000000..0efb7a66 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredFrost_Ring/Name.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredIce_Bolt/Long_Description.txt b/Text/Game/Spells/Combat/EmpoweredIce_Bolt/Long_Description.txt new file mode 100644 index 00000000..e0750f20 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredIce_Bolt/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredIce_Bolt/Name.txt b/Text/Game/Spells/Combat/EmpoweredIce_Bolt/Name.txt new file mode 100644 index 00000000..256231ed Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredIce_Bolt/Name.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredImplosion/Long_Description.txt b/Text/Game/Spells/Combat/EmpoweredImplosion/Long_Description.txt new file mode 100644 index 00000000..96bd1efc Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredImplosion/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredImplosion/Name.txt b/Text/Game/Spells/Combat/EmpoweredImplosion/Name.txt new file mode 100644 index 00000000..0dee91e3 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredImplosion/Name.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredLightning_Bolt/Long_Description.txt b/Text/Game/Spells/Combat/EmpoweredLightning_Bolt/Long_Description.txt new file mode 100644 index 00000000..abce95b1 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredLightning_Bolt/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredLightning_Bolt/Name.txt b/Text/Game/Spells/Combat/EmpoweredLightning_Bolt/Name.txt new file mode 100644 index 00000000..cc68624e Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredLightning_Bolt/Name.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredMagic_Arrow/Long_Description.txt b/Text/Game/Spells/Combat/EmpoweredMagic_Arrow/Long_Description.txt new file mode 100644 index 00000000..299fa964 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredMagic_Arrow/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredMagic_Arrow/Name.txt b/Text/Game/Spells/Combat/EmpoweredMagic_Arrow/Name.txt new file mode 100644 index 00000000..e29cf21a Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredMagic_Arrow/Name.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredMagic_Fist/Long_Description.txt b/Text/Game/Spells/Combat/EmpoweredMagic_Fist/Long_Description.txt new file mode 100644 index 00000000..961377df Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredMagic_Fist/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredMagic_Fist/Name.txt b/Text/Game/Spells/Combat/EmpoweredMagic_Fist/Name.txt new file mode 100644 index 00000000..5f7eeeea Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredMagic_Fist/Name.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredMeteor_Shower/Long_Description.txt b/Text/Game/Spells/Combat/EmpoweredMeteor_Shower/Long_Description.txt new file mode 100644 index 00000000..3ceda6b7 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredMeteor_Shower/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredMeteor_Shower/Name.txt b/Text/Game/Spells/Combat/EmpoweredMeteor_Shower/Name.txt new file mode 100644 index 00000000..30119209 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredMeteor_Shower/Name.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredStoneSpikes/Long_Description.txt b/Text/Game/Spells/Combat/EmpoweredStoneSpikes/Long_Description.txt new file mode 100644 index 00000000..fc0afcb1 Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredStoneSpikes/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/EmpoweredStoneSpikes/Name.txt b/Text/Game/Spells/Combat/EmpoweredStoneSpikes/Name.txt new file mode 100644 index 00000000..3b0cfafd Binary files /dev/null and b/Text/Game/Spells/Combat/EmpoweredStoneSpikes/Name.txt differ diff --git a/Text/Game/Spells/Combat/Fireball/Long_Description.txt b/Text/Game/Spells/Combat/Fireball/Long_Description.txt new file mode 100644 index 00000000..e8c76659 Binary files /dev/null and b/Text/Game/Spells/Combat/Fireball/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Fireball/Name.txt b/Text/Game/Spells/Combat/Fireball/Name.txt new file mode 100644 index 00000000..82614c03 Binary files /dev/null and b/Text/Game/Spells/Combat/Fireball/Name.txt differ diff --git a/Text/Game/Spells/Combat/Firewall/Long_Description.txt b/Text/Game/Spells/Combat/Firewall/Long_Description.txt new file mode 100644 index 00000000..fc78bf6a Binary files /dev/null and b/Text/Game/Spells/Combat/Firewall/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Firewall/Name.txt b/Text/Game/Spells/Combat/Firewall/Name.txt new file mode 100644 index 00000000..cbbc0c05 Binary files /dev/null and b/Text/Game/Spells/Combat/Firewall/Name.txt differ diff --git a/Text/Game/Spells/Combat/Firewall/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Firewall/SpellBookPrediction.txt new file mode 100644 index 00000000..45ba136c Binary files /dev/null and b/Text/Game/Spells/Combat/Firewall/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Firewall/SpellBookPrediction_MasterOfFire.txt b/Text/Game/Spells/Combat/Firewall/SpellBookPrediction_MasterOfFire.txt new file mode 100644 index 00000000..62620bce Binary files /dev/null and b/Text/Game/Spells/Combat/Firewall/SpellBookPrediction_MasterOfFire.txt differ diff --git a/Text/Game/Spells/Combat/Forgetfulness/Long_Description.txt b/Text/Game/Spells/Combat/Forgetfulness/Long_Description.txt new file mode 100644 index 00000000..974e019a Binary files /dev/null and b/Text/Game/Spells/Combat/Forgetfulness/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Forgetfulness/Name.txt b/Text/Game/Spells/Combat/Forgetfulness/Name.txt new file mode 100644 index 00000000..d1d24535 Binary files /dev/null and b/Text/Game/Spells/Combat/Forgetfulness/Name.txt differ diff --git a/Text/Game/Spells/Combat/Forgetfulness/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Forgetfulness/SpellBookPrediction.txt new file mode 100644 index 00000000..1573ef7d Binary files /dev/null and b/Text/Game/Spells/Combat/Forgetfulness/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Frost_Ring/Long_Description.txt b/Text/Game/Spells/Combat/Frost_Ring/Long_Description.txt new file mode 100644 index 00000000..62994c39 Binary files /dev/null and b/Text/Game/Spells/Combat/Frost_Ring/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Frost_Ring/Name.txt b/Text/Game/Spells/Combat/Frost_Ring/Name.txt new file mode 100644 index 00000000..36257e86 Binary files /dev/null and b/Text/Game/Spells/Combat/Frost_Ring/Name.txt differ diff --git a/Text/Game/Spells/Combat/GuardianAngel/Long_Description.txt b/Text/Game/Spells/Combat/GuardianAngel/Long_Description.txt new file mode 100644 index 00000000..67425883 Binary files /dev/null and b/Text/Game/Spells/Combat/GuardianAngel/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/GuardianAngel/Name.txt b/Text/Game/Spells/Combat/GuardianAngel/Name.txt new file mode 100644 index 00000000..f9f7f7b6 Binary files /dev/null and b/Text/Game/Spells/Combat/GuardianAngel/Name.txt differ diff --git a/Text/Game/Spells/Combat/Haste/Long_Description.txt b/Text/Game/Spells/Combat/Haste/Long_Description.txt new file mode 100644 index 00000000..83bc7124 Binary files /dev/null and b/Text/Game/Spells/Combat/Haste/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Haste/Name.txt b/Text/Game/Spells/Combat/Haste/Name.txt new file mode 100644 index 00000000..623e1b2f Binary files /dev/null and b/Text/Game/Spells/Combat/Haste/Name.txt differ diff --git a/Text/Game/Spells/Combat/Haste/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Haste/SpellBookPrediction.txt new file mode 100644 index 00000000..007d391a Binary files /dev/null and b/Text/Game/Spells/Combat/Haste/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Holy_Word/Long_Description.txt b/Text/Game/Spells/Combat/Holy_Word/Long_Description.txt new file mode 100644 index 00000000..f6d9a19c Binary files /dev/null and b/Text/Game/Spells/Combat/Holy_Word/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Holy_Word/Name.txt b/Text/Game/Spells/Combat/Holy_Word/Name.txt new file mode 100644 index 00000000..a3a2caaa Binary files /dev/null and b/Text/Game/Spells/Combat/Holy_Word/Name.txt differ diff --git a/Text/Game/Spells/Combat/Hypnotize/Long_Description.txt b/Text/Game/Spells/Combat/Hypnotize/Long_Description.txt new file mode 100644 index 00000000..3d73b365 Binary files /dev/null and b/Text/Game/Spells/Combat/Hypnotize/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Hypnotize/Name.txt b/Text/Game/Spells/Combat/Hypnotize/Name.txt new file mode 100644 index 00000000..630248f2 Binary files /dev/null and b/Text/Game/Spells/Combat/Hypnotize/Name.txt differ diff --git a/Text/Game/Spells/Combat/Hypnotize/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Hypnotize/SpellBookPrediction.txt new file mode 100644 index 00000000..7583775b Binary files /dev/null and b/Text/Game/Spells/Combat/Hypnotize/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Hypnotize/SpellBookPrediction_Expert.txt b/Text/Game/Spells/Combat/Hypnotize/SpellBookPrediction_Expert.txt new file mode 100644 index 00000000..99fd2bdf Binary files /dev/null and b/Text/Game/Spells/Combat/Hypnotize/SpellBookPrediction_Expert.txt differ diff --git a/Text/Game/Spells/Combat/Ice_Bolt/Long_Description.txt b/Text/Game/Spells/Combat/Ice_Bolt/Long_Description.txt new file mode 100644 index 00000000..d6cae5b8 Binary files /dev/null and b/Text/Game/Spells/Combat/Ice_Bolt/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Ice_Bolt/Name.txt b/Text/Game/Spells/Combat/Ice_Bolt/Name.txt new file mode 100644 index 00000000..6d880059 Binary files /dev/null and b/Text/Game/Spells/Combat/Ice_Bolt/Name.txt differ diff --git a/Text/Game/Spells/Combat/Implosion/Long_Description.txt b/Text/Game/Spells/Combat/Implosion/Long_Description.txt new file mode 100644 index 00000000..052bd4ee Binary files /dev/null and b/Text/Game/Spells/Combat/Implosion/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Implosion/Name.txt b/Text/Game/Spells/Combat/Implosion/Name.txt new file mode 100644 index 00000000..2e477508 Binary files /dev/null and b/Text/Game/Spells/Combat/Implosion/Name.txt differ diff --git a/Text/Game/Spells/Combat/Land_Mine/Long_Description.txt b/Text/Game/Spells/Combat/Land_Mine/Long_Description.txt new file mode 100644 index 00000000..70f9222c Binary files /dev/null and b/Text/Game/Spells/Combat/Land_Mine/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Land_Mine/Name.txt b/Text/Game/Spells/Combat/Land_Mine/Name.txt new file mode 100644 index 00000000..ddee314e Binary files /dev/null and b/Text/Game/Spells/Combat/Land_Mine/Name.txt differ diff --git a/Text/Game/Spells/Combat/Land_Mine/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Land_Mine/SpellBookPrediction.txt new file mode 100644 index 00000000..73015937 Binary files /dev/null and b/Text/Game/Spells/Combat/Land_Mine/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Lightning_Bolt/Long_Description.txt b/Text/Game/Spells/Combat/Lightning_Bolt/Long_Description.txt new file mode 100644 index 00000000..fd70c7a0 Binary files /dev/null and b/Text/Game/Spells/Combat/Lightning_Bolt/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Lightning_Bolt/Name.txt b/Text/Game/Spells/Combat/Lightning_Bolt/Name.txt new file mode 100644 index 00000000..e6fd599d Binary files /dev/null and b/Text/Game/Spells/Combat/Lightning_Bolt/Name.txt differ diff --git a/Text/Game/Spells/Combat/LionArtifactDemoralized/Long_Description.txt b/Text/Game/Spells/Combat/LionArtifactDemoralized/Long_Description.txt new file mode 100644 index 00000000..5b629779 Binary files /dev/null and b/Text/Game/Spells/Combat/LionArtifactDemoralized/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/LionArtifactDemoralized/Name.txt b/Text/Game/Spells/Combat/LionArtifactDemoralized/Name.txt new file mode 100644 index 00000000..5b629779 Binary files /dev/null and b/Text/Game/Spells/Combat/LionArtifactDemoralized/Name.txt differ diff --git a/Text/Game/Spells/Combat/Magic_Arrow/Long_Description.txt b/Text/Game/Spells/Combat/Magic_Arrow/Long_Description.txt new file mode 100644 index 00000000..efd30f02 Binary files /dev/null and b/Text/Game/Spells/Combat/Magic_Arrow/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Magic_Arrow/Name.txt b/Text/Game/Spells/Combat/Magic_Arrow/Name.txt new file mode 100644 index 00000000..1d181743 Binary files /dev/null and b/Text/Game/Spells/Combat/Magic_Arrow/Name.txt differ diff --git a/Text/Game/Spells/Combat/Magic_Fist/Long_Description.txt b/Text/Game/Spells/Combat/Magic_Fist/Long_Description.txt new file mode 100644 index 00000000..e4a6ee5d Binary files /dev/null and b/Text/Game/Spells/Combat/Magic_Fist/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Magic_Fist/Name.txt b/Text/Game/Spells/Combat/Magic_Fist/Name.txt new file mode 100644 index 00000000..705e6171 Binary files /dev/null and b/Text/Game/Spells/Combat/Magic_Fist/Name.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Bless/Long_Description.txt b/Text/Game/Spells/Combat/Mass_Bless/Long_Description.txt new file mode 100644 index 00000000..b684cecd Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Bless/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Bless/Name.txt b/Text/Game/Spells/Combat/Mass_Bless/Name.txt new file mode 100644 index 00000000..925a9692 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Bless/Name.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Bloodlust/Long_Description.txt b/Text/Game/Spells/Combat/Mass_Bloodlust/Long_Description.txt new file mode 100644 index 00000000..a37b3472 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Bloodlust/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Bloodlust/Name.txt b/Text/Game/Spells/Combat/Mass_Bloodlust/Name.txt new file mode 100644 index 00000000..4af43ca5 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Bloodlust/Name.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Curse/Long_Description.txt b/Text/Game/Spells/Combat/Mass_Curse/Long_Description.txt new file mode 100644 index 00000000..8a52b7df Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Curse/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Curse/Name.txt b/Text/Game/Spells/Combat/Mass_Curse/Name.txt new file mode 100644 index 00000000..37a8b331 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Curse/Name.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Deflect_Arrows/Long_Description.txt b/Text/Game/Spells/Combat/Mass_Deflect_Arrows/Long_Description.txt new file mode 100644 index 00000000..60b0cb3d Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Deflect_Arrows/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Deflect_Arrows/Name.txt b/Text/Game/Spells/Combat/Mass_Deflect_Arrows/Name.txt new file mode 100644 index 00000000..7b780de2 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Deflect_Arrows/Name.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Dispel/Long_Description.txt b/Text/Game/Spells/Combat/Mass_Dispel/Long_Description.txt new file mode 100644 index 00000000..3b134b6b Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Dispel/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Dispel/Name.txt b/Text/Game/Spells/Combat/Mass_Dispel/Name.txt new file mode 100644 index 00000000..16e1cb28 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Dispel/Name.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Disrupting_Ray/Long_Description.txt b/Text/Game/Spells/Combat/Mass_Disrupting_Ray/Long_Description.txt new file mode 100644 index 00000000..2acf4f5a Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Disrupting_Ray/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Disrupting_Ray/Name.txt b/Text/Game/Spells/Combat/Mass_Disrupting_Ray/Name.txt new file mode 100644 index 00000000..c9461731 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Disrupting_Ray/Name.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Forgetfulness/Long_Description.txt b/Text/Game/Spells/Combat/Mass_Forgetfulness/Long_Description.txt new file mode 100644 index 00000000..9caaae86 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Forgetfulness/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Forgetfulness/Name.txt b/Text/Game/Spells/Combat/Mass_Forgetfulness/Name.txt new file mode 100644 index 00000000..5f2318a2 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Forgetfulness/Name.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Haste/Long_Description.txt b/Text/Game/Spells/Combat/Mass_Haste/Long_Description.txt new file mode 100644 index 00000000..e8fc488c Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Haste/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Haste/Name.txt b/Text/Game/Spells/Combat/Mass_Haste/Name.txt new file mode 100644 index 00000000..de33baeb Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Haste/Name.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Plague/Long_Description.txt b/Text/Game/Spells/Combat/Mass_Plague/Long_Description.txt new file mode 100644 index 00000000..9693b047 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Plague/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Plague/Name.txt b/Text/Game/Spells/Combat/Mass_Plague/Name.txt new file mode 100644 index 00000000..d301d996 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Plague/Name.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Slow/Long_Description.txt b/Text/Game/Spells/Combat/Mass_Slow/Long_Description.txt new file mode 100644 index 00000000..da7bfd58 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Slow/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Slow/Name.txt b/Text/Game/Spells/Combat/Mass_Slow/Name.txt new file mode 100644 index 00000000..23e75575 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Slow/Name.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Stoneskin/Long_Description.txt b/Text/Game/Spells/Combat/Mass_Stoneskin/Long_Description.txt new file mode 100644 index 00000000..96620906 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Stoneskin/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Stoneskin/Name.txt b/Text/Game/Spells/Combat/Mass_Stoneskin/Name.txt new file mode 100644 index 00000000..32baaebb Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Stoneskin/Name.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Weakness/Long_Description.txt b/Text/Game/Spells/Combat/Mass_Weakness/Long_Description.txt new file mode 100644 index 00000000..e2758506 Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Weakness/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Mass_Weakness/Name.txt b/Text/Game/Spells/Combat/Mass_Weakness/Name.txt new file mode 100644 index 00000000..93c9acdd Binary files /dev/null and b/Text/Game/Spells/Combat/Mass_Weakness/Name.txt differ diff --git a/Text/Game/Spells/Combat/Meteor_Shower/Long_Description.txt b/Text/Game/Spells/Combat/Meteor_Shower/Long_Description.txt new file mode 100644 index 00000000..10eaeb57 Binary files /dev/null and b/Text/Game/Spells/Combat/Meteor_Shower/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Meteor_Shower/Name.txt b/Text/Game/Spells/Combat/Meteor_Shower/Name.txt new file mode 100644 index 00000000..475f2679 Binary files /dev/null and b/Text/Game/Spells/Combat/Meteor_Shower/Name.txt differ diff --git a/Text/Game/Spells/Combat/NecromancersArtfsetEffect/Name.txt b/Text/Game/Spells/Combat/NecromancersArtfsetEffect/Name.txt new file mode 100644 index 00000000..4e51a4b7 Binary files /dev/null and b/Text/Game/Spells/Combat/NecromancersArtfsetEffect/Name.txt differ diff --git a/Text/Game/Spells/Combat/Order_Of_The_Chief/Long_Description.txt b/Text/Game/Spells/Combat/Order_Of_The_Chief/Long_Description.txt new file mode 100644 index 00000000..4407ba82 Binary files /dev/null and b/Text/Game/Spells/Combat/Order_Of_The_Chief/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Order_Of_The_Chief/Name.txt b/Text/Game/Spells/Combat/Order_Of_The_Chief/Name.txt new file mode 100644 index 00000000..c6c7389a Binary files /dev/null and b/Text/Game/Spells/Combat/Order_Of_The_Chief/Name.txt differ diff --git a/Text/Game/Spells/Combat/Phantom/Long_Description.txt b/Text/Game/Spells/Combat/Phantom/Long_Description.txt new file mode 100644 index 00000000..a221363d Binary files /dev/null and b/Text/Game/Spells/Combat/Phantom/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Phantom/Name.txt b/Text/Game/Spells/Combat/Phantom/Name.txt new file mode 100644 index 00000000..965ca833 Binary files /dev/null and b/Text/Game/Spells/Combat/Phantom/Name.txt differ diff --git a/Text/Game/Spells/Combat/Plague/Long_Description.txt b/Text/Game/Spells/Combat/Plague/Long_Description.txt new file mode 100644 index 00000000..567683e7 Binary files /dev/null and b/Text/Game/Spells/Combat/Plague/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Plague/Name.txt b/Text/Game/Spells/Combat/Plague/Name.txt new file mode 100644 index 00000000..5b53023e Binary files /dev/null and b/Text/Game/Spells/Combat/Plague/Name.txt differ diff --git a/Text/Game/Spells/Combat/Plague/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Plague/SpellBookPrediction.txt new file mode 100644 index 00000000..45ba136c Binary files /dev/null and b/Text/Game/Spells/Combat/Plague/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Rage_Of_The_Forest/Long_Description.txt b/Text/Game/Spells/Combat/Rage_Of_The_Forest/Long_Description.txt new file mode 100644 index 00000000..fda79bae Binary files /dev/null and b/Text/Game/Spells/Combat/Rage_Of_The_Forest/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Rage_Of_The_Forest/Name.txt b/Text/Game/Spells/Combat/Rage_Of_The_Forest/Name.txt new file mode 100644 index 00000000..abe4a3c4 Binary files /dev/null and b/Text/Game/Spells/Combat/Rage_Of_The_Forest/Name.txt differ diff --git a/Text/Game/Spells/Combat/Regeneration/Long_Description.txt b/Text/Game/Spells/Combat/Regeneration/Long_Description.txt new file mode 100644 index 00000000..05bd91a7 Binary files /dev/null and b/Text/Game/Spells/Combat/Regeneration/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Regeneration/Name.txt b/Text/Game/Spells/Combat/Regeneration/Name.txt new file mode 100644 index 00000000..b426ab13 Binary files /dev/null and b/Text/Game/Spells/Combat/Regeneration/Name.txt differ diff --git a/Text/Game/Spells/Combat/Regeneration/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Regeneration/SpellBookPrediction.txt new file mode 100644 index 00000000..6755296d Binary files /dev/null and b/Text/Game/Spells/Combat/Regeneration/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Resurrect/Long_Description.txt b/Text/Game/Spells/Combat/Resurrect/Long_Description.txt new file mode 100644 index 00000000..011a1d64 Binary files /dev/null and b/Text/Game/Spells/Combat/Resurrect/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Resurrect/Name.txt b/Text/Game/Spells/Combat/Resurrect/Name.txt new file mode 100644 index 00000000..3b24610d Binary files /dev/null and b/Text/Game/Spells/Combat/Resurrect/Name.txt differ diff --git a/Text/Game/Spells/Combat/Sacrifice/Long_Description.txt b/Text/Game/Spells/Combat/Sacrifice/Long_Description.txt new file mode 100644 index 00000000..57c112b2 Binary files /dev/null and b/Text/Game/Spells/Combat/Sacrifice/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Sacrifice/Name.txt b/Text/Game/Spells/Combat/Sacrifice/Name.txt new file mode 100644 index 00000000..6fb1b864 Binary files /dev/null and b/Text/Game/Spells/Combat/Sacrifice/Name.txt differ diff --git a/Text/Game/Spells/Combat/Scavenger/Long_Description.txt b/Text/Game/Spells/Combat/Scavenger/Long_Description.txt new file mode 100644 index 00000000..737258a4 Binary files /dev/null and b/Text/Game/Spells/Combat/Scavenger/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Scavenger/Name.txt b/Text/Game/Spells/Combat/Scavenger/Name.txt new file mode 100644 index 00000000..a01bb6b0 Binary files /dev/null and b/Text/Game/Spells/Combat/Scavenger/Name.txt differ diff --git a/Text/Game/Spells/Combat/Seduce/Long_Description.txt b/Text/Game/Spells/Combat/Seduce/Long_Description.txt new file mode 100644 index 00000000..2950f128 Binary files /dev/null and b/Text/Game/Spells/Combat/Seduce/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Seduce/Name.txt b/Text/Game/Spells/Combat/Seduce/Name.txt new file mode 100644 index 00000000..3e229628 Binary files /dev/null and b/Text/Game/Spells/Combat/Seduce/Name.txt differ diff --git a/Text/Game/Spells/Combat/Seduce/Seducing_Name.txt b/Text/Game/Spells/Combat/Seduce/Seducing_Name.txt new file mode 100644 index 00000000..40f5c54c Binary files /dev/null and b/Text/Game/Spells/Combat/Seduce/Seducing_Name.txt differ diff --git a/Text/Game/Spells/Combat/Slow/Long_Description.txt b/Text/Game/Spells/Combat/Slow/Long_Description.txt new file mode 100644 index 00000000..a613ec6b Binary files /dev/null and b/Text/Game/Spells/Combat/Slow/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Slow/Name.txt b/Text/Game/Spells/Combat/Slow/Name.txt new file mode 100644 index 00000000..d9ddc000 Binary files /dev/null and b/Text/Game/Spells/Combat/Slow/Name.txt differ diff --git a/Text/Game/Spells/Combat/Slow/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Slow/SpellBookPrediction.txt new file mode 100644 index 00000000..82d5949e Binary files /dev/null and b/Text/Game/Spells/Combat/Slow/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/SpectralDragon/Long_Description.txt b/Text/Game/Spells/Combat/SpectralDragon/Long_Description.txt new file mode 100644 index 00000000..d310e97c Binary files /dev/null and b/Text/Game/Spells/Combat/SpectralDragon/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/SpectralDragon/Name.txt b/Text/Game/Spells/Combat/SpectralDragon/Name.txt new file mode 100644 index 00000000..832f091c Binary files /dev/null and b/Text/Game/Spells/Combat/SpectralDragon/Name.txt differ diff --git a/Text/Game/Spells/Combat/SpectralDragon/SpellBookPrediction.txt b/Text/Game/Spells/Combat/SpectralDragon/SpellBookPrediction.txt new file mode 100644 index 00000000..1024c399 Binary files /dev/null and b/Text/Game/Spells/Combat/SpectralDragon/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/StoneSpikes/Long_Description.txt b/Text/Game/Spells/Combat/StoneSpikes/Long_Description.txt new file mode 100644 index 00000000..115d11a3 Binary files /dev/null and b/Text/Game/Spells/Combat/StoneSpikes/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/StoneSpikes/Name.txt b/Text/Game/Spells/Combat/StoneSpikes/Name.txt new file mode 100644 index 00000000..927510f3 Binary files /dev/null and b/Text/Game/Spells/Combat/StoneSpikes/Name.txt differ diff --git a/Text/Game/Spells/Combat/Stoneskin/Long_Description.txt b/Text/Game/Spells/Combat/Stoneskin/Long_Description.txt new file mode 100644 index 00000000..11980462 Binary files /dev/null and b/Text/Game/Spells/Combat/Stoneskin/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Stoneskin/Name.txt b/Text/Game/Spells/Combat/Stoneskin/Name.txt new file mode 100644 index 00000000..fc05623d Binary files /dev/null and b/Text/Game/Spells/Combat/Stoneskin/Name.txt differ diff --git a/Text/Game/Spells/Combat/Stoneskin/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Stoneskin/SpellBookPrediction.txt new file mode 100644 index 00000000..e633bd4d Binary files /dev/null and b/Text/Game/Spells/Combat/Stoneskin/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/SummonHive/Long_Description.txt b/Text/Game/Spells/Combat/SummonHive/Long_Description.txt new file mode 100644 index 00000000..0c5a0e35 Binary files /dev/null and b/Text/Game/Spells/Combat/SummonHive/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/SummonHive/Name.txt b/Text/Game/Spells/Combat/SummonHive/Name.txt new file mode 100644 index 00000000..38b92d83 Binary files /dev/null and b/Text/Game/Spells/Combat/SummonHive/Name.txt differ diff --git a/Text/Game/Spells/Combat/SummonHive/SpellBookPrediction.txt b/Text/Game/Spells/Combat/SummonHive/SpellBookPrediction.txt new file mode 100644 index 00000000..92891961 Binary files /dev/null and b/Text/Game/Spells/Combat/SummonHive/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/SummonOther/Long_Description.txt b/Text/Game/Spells/Combat/SummonOther/Long_Description.txt new file mode 100644 index 00000000..de0c229c Binary files /dev/null and b/Text/Game/Spells/Combat/SummonOther/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/SummonOther/Name.txt b/Text/Game/Spells/Combat/SummonOther/Name.txt new file mode 100644 index 00000000..8231fe94 Binary files /dev/null and b/Text/Game/Spells/Combat/SummonOther/Name.txt differ diff --git a/Text/Game/Spells/Combat/Summon_Elementals/Long_Description.txt b/Text/Game/Spells/Combat/Summon_Elementals/Long_Description.txt new file mode 100644 index 00000000..5e4bad6f Binary files /dev/null and b/Text/Game/Spells/Combat/Summon_Elementals/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Summon_Elementals/Name.txt b/Text/Game/Spells/Combat/Summon_Elementals/Name.txt new file mode 100644 index 00000000..d5cdee65 Binary files /dev/null and b/Text/Game/Spells/Combat/Summon_Elementals/Name.txt differ diff --git a/Text/Game/Spells/Combat/Summon_Elementals/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Summon_Elementals/SpellBookPrediction.txt new file mode 100644 index 00000000..3d54745d Binary files /dev/null and b/Text/Game/Spells/Combat/Summon_Elementals/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Syphon_Mana/Description.txt b/Text/Game/Spells/Combat/Syphon_Mana/Description.txt new file mode 100644 index 00000000..ed46001c Binary files /dev/null and b/Text/Game/Spells/Combat/Syphon_Mana/Description.txt differ diff --git a/Text/Game/Spells/Combat/Syphon_Mana/Name.txt b/Text/Game/Spells/Combat/Syphon_Mana/Name.txt new file mode 100644 index 00000000..c66cf3b0 Binary files /dev/null and b/Text/Game/Spells/Combat/Syphon_Mana/Name.txt differ diff --git a/Text/Game/Spells/Combat/Teleport/Long_Description.txt b/Text/Game/Spells/Combat/Teleport/Long_Description.txt new file mode 100644 index 00000000..85f4d457 Binary files /dev/null and b/Text/Game/Spells/Combat/Teleport/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Teleport/Name.txt b/Text/Game/Spells/Combat/Teleport/Name.txt new file mode 100644 index 00000000..bfc36878 Binary files /dev/null and b/Text/Game/Spells/Combat/Teleport/Name.txt differ diff --git a/Text/Game/Spells/Combat/Teleport/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Teleport/SpellBookPrediction.txt new file mode 100644 index 00000000..577b1255 Binary files /dev/null and b/Text/Game/Spells/Combat/Teleport/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Teleport/SpellBookPrediction_Expert.txt b/Text/Game/Spells/Combat/Teleport/SpellBookPrediction_Expert.txt new file mode 100644 index 00000000..46b134b1 --- /dev/null +++ b/Text/Game/Spells/Combat/Teleport/SpellBookPrediction_Expert.txt @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/Text/Game/Spells/Combat/Uber_Chain_Lightning/Long_Description.txt b/Text/Game/Spells/Combat/Uber_Chain_Lightning/Long_Description.txt new file mode 100644 index 00000000..67ff1125 Binary files /dev/null and b/Text/Game/Spells/Combat/Uber_Chain_Lightning/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Uber_Chain_Lightning/Name.txt b/Text/Game/Spells/Combat/Uber_Chain_Lightning/Name.txt new file mode 100644 index 00000000..494dd090 Binary files /dev/null and b/Text/Game/Spells/Combat/Uber_Chain_Lightning/Name.txt differ diff --git a/Text/Game/Spells/Combat/Unholy_Word/Long_Description.txt b/Text/Game/Spells/Combat/Unholy_Word/Long_Description.txt new file mode 100644 index 00000000..956e8904 Binary files /dev/null and b/Text/Game/Spells/Combat/Unholy_Word/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Unholy_Word/Name.txt b/Text/Game/Spells/Combat/Unholy_Word/Name.txt new file mode 100644 index 00000000..9bcdb301 Binary files /dev/null and b/Text/Game/Spells/Combat/Unholy_Word/Name.txt differ diff --git a/Text/Game/Spells/Combat/Vampirism/Long_Description.txt b/Text/Game/Spells/Combat/Vampirism/Long_Description.txt new file mode 100644 index 00000000..c3d9c8aa Binary files /dev/null and b/Text/Game/Spells/Combat/Vampirism/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Vampirism/Name.txt b/Text/Game/Spells/Combat/Vampirism/Name.txt new file mode 100644 index 00000000..109e1158 Binary files /dev/null and b/Text/Game/Spells/Combat/Vampirism/Name.txt differ diff --git a/Text/Game/Spells/Combat/Vampirism/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Vampirism/SpellBookPrediction.txt new file mode 100644 index 00000000..46671f72 Binary files /dev/null and b/Text/Game/Spells/Combat/Vampirism/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Combat/Wasp_Swarm/Long_Description.txt b/Text/Game/Spells/Combat/Wasp_Swarm/Long_Description.txt new file mode 100644 index 00000000..52453bea Binary files /dev/null and b/Text/Game/Spells/Combat/Wasp_Swarm/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Wasp_Swarm/Name.txt b/Text/Game/Spells/Combat/Wasp_Swarm/Name.txt new file mode 100644 index 00000000..526255f3 Binary files /dev/null and b/Text/Game/Spells/Combat/Wasp_Swarm/Name.txt differ diff --git a/Text/Game/Spells/Combat/Weakness/Long_Description.txt b/Text/Game/Spells/Combat/Weakness/Long_Description.txt new file mode 100644 index 00000000..91a1dfba Binary files /dev/null and b/Text/Game/Spells/Combat/Weakness/Long_Description.txt differ diff --git a/Text/Game/Spells/Combat/Weakness/Name.txt b/Text/Game/Spells/Combat/Weakness/Name.txt new file mode 100644 index 00000000..40bc0132 Binary files /dev/null and b/Text/Game/Spells/Combat/Weakness/Name.txt differ diff --git a/Text/Game/Spells/Combat/Weakness/SpellBookPrediction.txt b/Text/Game/Spells/Combat/Weakness/SpellBookPrediction.txt new file mode 100644 index 00000000..e56cb40d Binary files /dev/null and b/Text/Game/Spells/Combat/Weakness/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Academy/CallLightning_name.txt b/Text/Game/Spells/Creature_Abilities/Academy/CallLightning_name.txt new file mode 100644 index 00000000..1a258cf6 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Academy/CallLightning_name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Academy/Dash/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Academy/Dash/Long_Description.txt new file mode 100644 index 00000000..9330dedd Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Academy/Dash/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Academy/Dash/Name.txt b/Text/Game/Spells/Creature_Abilities/Academy/Dash/Name.txt new file mode 100644 index 00000000..4aa7952c Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Academy/Dash/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Academy/Dash/SpellBookPrediction.txt b/Text/Game/Spells/Creature_Abilities/Academy/Dash/SpellBookPrediction.txt new file mode 100644 index 00000000..f7805f51 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Academy/Dash/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Academy/DashEffectName.txt b/Text/Game/Spells/Creature_Abilities/Academy/DashEffectName.txt new file mode 100644 index 00000000..545f3588 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Academy/DashEffectName.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Academy/DashName.txt b/Text/Game/Spells/Creature_Abilities/Academy/DashName.txt new file mode 100644 index 00000000..4aa7952c Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Academy/DashName.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Academy/RandomCastLightDarkName.txt b/Text/Game/Spells/Creature_Abilities/Academy/RandomCastLightDarkName.txt new file mode 100644 index 00000000..8571aeed Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Academy/RandomCastLightDarkName.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Academy/RepairName.txt b/Text/Game/Spells/Creature_Abilities/Academy/RepairName.txt new file mode 100644 index 00000000..40ec2a8d Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Academy/RepairName.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Academy/Sabotage/Description.txt b/Text/Game/Spells/Creature_Abilities/Academy/Sabotage/Description.txt new file mode 100644 index 00000000..abcd9015 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Academy/Sabotage/Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Academy/Sabotage/Name.txt b/Text/Game/Spells/Creature_Abilities/Academy/Sabotage/Name.txt new file mode 100644 index 00000000..540c7d58 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Academy/Sabotage/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Academy/randomcastdarkname.txt b/Text/Game/Spells/Creature_Abilities/Academy/randomcastdarkname.txt new file mode 100644 index 00000000..5473f61c Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Academy/randomcastdarkname.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Common/Enraged/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Common/Enraged/Long_Description.txt new file mode 100644 index 00000000..453d2f17 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Common/Enraged/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Common/Enraged/Name.txt b/Text/Game/Spells/Creature_Abilities/Common/Enraged/Name.txt new file mode 100644 index 00000000..10dc2a40 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Common/Enraged/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dungeon/Incinerate/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Dungeon/Incinerate/Long_Description.txt new file mode 100644 index 00000000..60920c65 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dungeon/Incinerate/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dungeon/Incinerate/Name.txt b/Text/Game/Spells/Creature_Abilities/Dungeon/Incinerate/Name.txt new file mode 100644 index 00000000..fea735e4 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dungeon/Incinerate/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dungeon/Invisibility/Description.txt b/Text/Game/Spells/Creature_Abilities/Dungeon/Invisibility/Description.txt new file mode 100644 index 00000000..a01581c6 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dungeon/Invisibility/Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dungeon/Invisibility/Name.txt b/Text/Game/Spells/Creature_Abilities/Dungeon/Invisibility/Name.txt new file mode 100644 index 00000000..16fd6be0 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dungeon/Invisibility/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dungeon/PoisonEffectDescription.txt b/Text/Game/Spells/Creature_Abilities/Dungeon/PoisonEffectDescription.txt new file mode 100644 index 00000000..bef75c94 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dungeon/PoisonEffectDescription.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dungeon/PoisonEffectName.txt b/Text/Game/Spells/Creature_Abilities/Dungeon/PoisonEffectName.txt new file mode 100644 index 00000000..9e340445 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dungeon/PoisonEffectName.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dungeon/RegenerationEffect.txt b/Text/Game/Spells/Creature_Abilities/Dungeon/RegenerationEffect.txt new file mode 100644 index 00000000..b426ab13 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dungeon/RegenerationEffect.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dwarf/BerserkerRage/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Dwarf/BerserkerRage/Long_Description.txt new file mode 100644 index 00000000..7029b78c Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dwarf/BerserkerRage/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dwarf/BerserkerRage/Name.txt b/Text/Game/Spells/Creature_Abilities/Dwarf/BerserkerRage/Name.txt new file mode 100644 index 00000000..ebc76bbb Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dwarf/BerserkerRage/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dwarf/MagmaShieldEffect/Name.txt b/Text/Game/Spells/Creature_Abilities/Dwarf/MagmaShieldEffect/Name.txt new file mode 100644 index 00000000..c7a5fcc2 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dwarf/MagmaShieldEffect/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dwarf/MarkOfFireEffect/Name.txt b/Text/Game/Spells/Creature_Abilities/Dwarf/MarkOfFireEffect/Name.txt new file mode 100644 index 00000000..07642b3b Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dwarf/MarkOfFireEffect/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dwarf/Stormbolt/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Dwarf/Stormbolt/Long_Description.txt new file mode 100644 index 00000000..100832d6 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dwarf/Stormbolt/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dwarf/Stormbolt/Name.txt b/Text/Game/Spells/Creature_Abilities/Dwarf/Stormbolt/Name.txt new file mode 100644 index 00000000..042f76a7 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dwarf/Stormbolt/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Dwarf/WoundEffect/Name.txt b/Text/Game/Spells/Creature_Abilities/Dwarf/WoundEffect/Name.txt new file mode 100644 index 00000000..f69e468d Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Dwarf/WoundEffect/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Haven/Battle_Dive/Name.txt b/Text/Game/Spells/Creature_Abilities/Haven/Battle_Dive/Name.txt new file mode 100644 index 00000000..4547f147 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Haven/Battle_Dive/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Haven/LayHands/Name.txt b/Text/Game/Spells/Creature_Abilities/Haven/LayHands/Name.txt new file mode 100644 index 00000000..5966d3ac Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Haven/LayHands/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Haven/ResurrectAllies/Name.txt b/Text/Game/Spells/Creature_Abilities/Haven/ResurrectAllies/Name.txt new file mode 100644 index 00000000..0c0f02d0 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Haven/ResurrectAllies/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Haven/Scatter_Shot/Name.txt b/Text/Game/Spells/Creature_Abilities/Haven/Scatter_Shot/Name.txt new file mode 100644 index 00000000..1ddfabc4 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Haven/Scatter_Shot/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Inferno/Explosion/Description.txt b/Text/Game/Spells/Creature_Abilities/Inferno/Explosion/Description.txt new file mode 100644 index 00000000..753f037a Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Inferno/Explosion/Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Inferno/Explosion/Name.txt b/Text/Game/Spells/Creature_Abilities/Inferno/Explosion/Name.txt new file mode 100644 index 00000000..f7d4747f Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Inferno/Explosion/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Inferno/Fear/Description.txt b/Text/Game/Spells/Creature_Abilities/Inferno/Fear/Description.txt new file mode 100644 index 00000000..5db8b932 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Inferno/Fear/Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Inferno/Fear/Name.txt b/Text/Game/Spells/Creature_Abilities/Inferno/Fear/Name.txt new file mode 100644 index 00000000..059e7a5b Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Inferno/Fear/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Inferno/Gating/Description.txt b/Text/Game/Spells/Creature_Abilities/Inferno/Gating/Description.txt new file mode 100644 index 00000000..7ae80fa2 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Inferno/Gating/Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Inferno/Gating/GateNoCreatures.txt b/Text/Game/Spells/Creature_Abilities/Inferno/Gating/GateNoCreatures.txt new file mode 100644 index 00000000..a203f764 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Inferno/Gating/GateNoCreatures.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Inferno/Gating/Name.txt b/Text/Game/Spells/Creature_Abilities/Inferno/Gating/Name.txt new file mode 100644 index 00000000..d172dbc1 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Inferno/Gating/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Inferno/Gating/SpellBookPrediction.txt b/Text/Game/Spells/Creature_Abilities/Inferno/Gating/SpellBookPrediction.txt new file mode 100644 index 00000000..cc2f4e8c Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Inferno/Gating/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Inferno/Leap/Description.txt b/Text/Game/Spells/Creature_Abilities/Inferno/Leap/Description.txt new file mode 100644 index 00000000..b69e9d41 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Inferno/Leap/Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Inferno/Leap/Name.txt b/Text/Game/Spells/Creature_Abilities/Inferno/Leap/Name.txt new file mode 100644 index 00000000..d20a2ae7 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Inferno/Leap/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Inferno/Summon_Balor/Description.txt b/Text/Game/Spells/Creature_Abilities/Inferno/Summon_Balor/Description.txt new file mode 100644 index 00000000..2072f8b9 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Inferno/Summon_Balor/Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Inferno/Summon_Balor/Name.txt b/Text/Game/Spells/Creature_Abilities/Inferno/Summon_Balor/Name.txt new file mode 100644 index 00000000..7875af8f Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Inferno/Summon_Balor/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Necropolis/Death_Cloud/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Necropolis/Death_Cloud/Long_Description.txt new file mode 100644 index 00000000..780bf27a Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Necropolis/Death_Cloud/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Necropolis/Death_Cloud/Name.txt b/Text/Game/Spells/Creature_Abilities/Necropolis/Death_Cloud/Name.txt new file mode 100644 index 00000000..aabc81e8 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Necropolis/Death_Cloud/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Necropolis/Death_Wail/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Necropolis/Death_Wail/Long_Description.txt new file mode 100644 index 00000000..efdf286e Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Necropolis/Death_Wail/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Necropolis/Death_Wail/Name.txt b/Text/Game/Spells/Creature_Abilities/Necropolis/Death_Wail/Name.txt new file mode 100644 index 00000000..56c0d383 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Necropolis/Death_Wail/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Necropolis/Harm_Touch/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Necropolis/Harm_Touch/Long_Description.txt new file mode 100644 index 00000000..84a154cc Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Necropolis/Harm_Touch/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Necropolis/Harm_Touch/Name.txt b/Text/Game/Spells/Creature_Abilities/Necropolis/Harm_Touch/Name.txt new file mode 100644 index 00000000..449df081 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Necropolis/Harm_Touch/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Necropolis/Life_Drain/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Necropolis/Life_Drain/Long_Description.txt new file mode 100644 index 00000000..7ed9f1a5 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Necropolis/Life_Drain/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Necropolis/Life_Drain/Name.txt b/Text/Game/Spells/Creature_Abilities/Necropolis/Life_Drain/Name.txt new file mode 100644 index 00000000..b964c744 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Necropolis/Life_Drain/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Necropolis/Mana_Drain/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Necropolis/Mana_Drain/Long_Description.txt new file mode 100644 index 00000000..13f30eea Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Necropolis/Mana_Drain/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Necropolis/Mana_Drain/Name.txt b/Text/Game/Spells/Creature_Abilities/Necropolis/Mana_Drain/Name.txt new file mode 100644 index 00000000..a2c36c1e Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Necropolis/Mana_Drain/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Necropolis/Weakning_Strike/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Necropolis/Weakning_Strike/Long_Description.txt new file mode 100644 index 00000000..6ecc299f Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Necropolis/Weakning_Strike/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Necropolis/Weakning_Strike/Name.txt b/Text/Game/Spells/Creature_Abilities/Necropolis/Weakning_Strike/Name.txt new file mode 100644 index 00000000..d1897f80 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Necropolis/Weakning_Strike/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Neutrals/FireShieldName.txt b/Text/Game/Spells/Creature_Abilities/Neutrals/FireShieldName.txt new file mode 100644 index 00000000..e2d635e2 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Neutrals/FireShieldName.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Neutrals/FrostBreathDescription.txt b/Text/Game/Spells/Creature_Abilities/Neutrals/FrostBreathDescription.txt new file mode 100644 index 00000000..19fbccd4 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Neutrals/FrostBreathDescription.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Neutrals/FrostBreathName.txt b/Text/Game/Spells/Creature_Abilities/Neutrals/FrostBreathName.txt new file mode 100644 index 00000000..e2d635e2 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Neutrals/FrostBreathName.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Neutrals/RebirthEffect.txt b/Text/Game/Spells/Creature_Abilities/Neutrals/RebirthEffect.txt new file mode 100644 index 00000000..55d5cb29 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Neutrals/RebirthEffect.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Preserve/EntanglingRoots/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Preserve/EntanglingRoots/Long_Description.txt new file mode 100644 index 00000000..1337f773 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Preserve/EntanglingRoots/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Preserve/EntanglingRoots/Name.txt b/Text/Game/Spells/Creature_Abilities/Preserve/EntanglingRoots/Name.txt new file mode 100644 index 00000000..9500bedd Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Preserve/EntanglingRoots/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Preserve/Mana_Feed/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Preserve/Mana_Feed/Long_Description.txt new file mode 100644 index 00000000..0ae15bdc Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Preserve/Mana_Feed/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Preserve/Mana_Feed/Name.txt b/Text/Game/Spells/Creature_Abilities/Preserve/Mana_Feed/Name.txt new file mode 100644 index 00000000..b02e445a Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Preserve/Mana_Feed/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Preserve/TreeantUnion/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/Preserve/TreeantUnion/Long_Description.txt new file mode 100644 index 00000000..c0c5c4e9 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Preserve/TreeantUnion/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Preserve/TreeantUnion/Name.txt b/Text/Game/Spells/Creature_Abilities/Preserve/TreeantUnion/Name.txt new file mode 100644 index 00000000..710ddb76 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Preserve/TreeantUnion/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Stronghold/DefileMagic/Description.txt b/Text/Game/Spells/Creature_Abilities/Stronghold/DefileMagic/Description.txt new file mode 100644 index 00000000..db9f2e63 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Stronghold/DefileMagic/Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Stronghold/DefileMagic/Name.txt b/Text/Game/Spells/Creature_Abilities/Stronghold/DefileMagic/Name.txt new file mode 100644 index 00000000..dbd86f0d Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Stronghold/DefileMagic/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Stronghold/DemonRageLevel1/Name.txt b/Text/Game/Spells/Creature_Abilities/Stronghold/DemonRageLevel1/Name.txt new file mode 100644 index 00000000..01f98b0c Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Stronghold/DemonRageLevel1/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Stronghold/DemonRageLevel2/Name.txt b/Text/Game/Spells/Creature_Abilities/Stronghold/DemonRageLevel2/Name.txt new file mode 100644 index 00000000..a31f958d Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Stronghold/DemonRageLevel2/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Stronghold/DemonRageLevel3/Name.txt b/Text/Game/Spells/Creature_Abilities/Stronghold/DemonRageLevel3/Name.txt new file mode 100644 index 00000000..4336e031 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Stronghold/DemonRageLevel3/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Stronghold/Unlucky/Description.txt b/Text/Game/Spells/Creature_Abilities/Stronghold/Unlucky/Description.txt new file mode 100644 index 00000000..5f8e6195 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Stronghold/Unlucky/Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Stronghold/Unlucky/Name.txt b/Text/Game/Spells/Creature_Abilities/Stronghold/Unlucky/Name.txt new file mode 100644 index 00000000..4fd9870b Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Stronghold/Unlucky/Name.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Stronghold/VenomEffectDescription.txt b/Text/Game/Spells/Creature_Abilities/Stronghold/VenomEffectDescription.txt new file mode 100644 index 00000000..1a6d86ab Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Stronghold/VenomEffectDescription.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/Stronghold/VenomEffectName.txt b/Text/Game/Spells/Creature_Abilities/Stronghold/VenomEffectName.txt new file mode 100644 index 00000000..fce298bd Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/Stronghold/VenomEffectName.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/War_Machines/FirstAid/Long_Description.txt b/Text/Game/Spells/Creature_Abilities/War_Machines/FirstAid/Long_Description.txt new file mode 100644 index 00000000..60e04ef1 Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/War_Machines/FirstAid/Long_Description.txt differ diff --git a/Text/Game/Spells/Creature_Abilities/War_Machines/FirstAid/Name.txt b/Text/Game/Spells/Creature_Abilities/War_Machines/FirstAid/Name.txt new file mode 100644 index 00000000..3757afcd Binary files /dev/null and b/Text/Game/Spells/Creature_Abilities/War_Machines/FirstAid/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/ArmorCrushing/Long_Description.txt b/Text/Game/Spells/Hero_Special_Abilities/ArmorCrushing/Long_Description.txt new file mode 100644 index 00000000..7aca3bca Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/ArmorCrushing/Long_Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/ArmorCrushing/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/ArmorCrushing/Name.txt new file mode 100644 index 00000000..2d466fae Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/ArmorCrushing/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/DarkRitual/Long_Description.txt b/Text/Game/Spells/Hero_Special_Abilities/DarkRitual/Long_Description.txt new file mode 100644 index 00000000..8c2720b9 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/DarkRitual/Long_Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/DarkRitual/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/DarkRitual/Name.txt new file mode 100644 index 00000000..aae3ec0b Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/DarkRitual/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/DarkRitual/SpellBookPrediction.txt b/Text/Game/Spells/Hero_Special_Abilities/DarkRitual/SpellBookPrediction.txt new file mode 100644 index 00000000..9038e4c5 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/DarkRitual/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/DeathScream/Long_Description.txt b/Text/Game/Spells/Hero_Special_Abilities/DeathScream/Long_Description.txt new file mode 100644 index 00000000..c67b7a09 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/DeathScream/Long_Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/DeathScream/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/DeathScream/Name.txt new file mode 100644 index 00000000..c54a97b0 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/DeathScream/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/DeathScream/SpellBookPrediction.txt b/Text/Game/Spells/Hero_Special_Abilities/DeathScream/SpellBookPrediction.txt new file mode 100644 index 00000000..42dcc170 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/DeathScream/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Encourage/Long_Description.txt b/Text/Game/Spells/Hero_Special_Abilities/Encourage/Long_Description.txt new file mode 100644 index 00000000..11511df2 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Encourage/Long_Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Encourage/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/Encourage/Name.txt new file mode 100644 index 00000000..0664e38f Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Encourage/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Encourage/SpellBookPrediction.txt b/Text/Game/Spells/Hero_Special_Abilities/Encourage/SpellBookPrediction.txt new file mode 100644 index 00000000..0b09a493 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Encourage/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Exploding_Corpses/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/Exploding_Corpses/Name.txt new file mode 100644 index 00000000..fd51a2c0 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Exploding_Corpses/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/HolyCharge/Long_Description.txt b/Text/Game/Spells/Hero_Special_Abilities/HolyCharge/Long_Description.txt new file mode 100644 index 00000000..15736e15 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/HolyCharge/Long_Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/HolyCharge/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/HolyCharge/Name.txt new file mode 100644 index 00000000..195bf838 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/HolyCharge/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/MagicBond/Long_Description.txt b/Text/Game/Spells/Hero_Special_Abilities/MagicBond/Long_Description.txt new file mode 100644 index 00000000..eb2f8920 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/MagicBond/Long_Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/MagicBond/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/MagicBond/Name.txt new file mode 100644 index 00000000..def7f0f9 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/MagicBond/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/MeltArtifact/Long_Description.txt b/Text/Game/Spells/Hero_Special_Abilities/MeltArtifact/Long_Description.txt new file mode 100644 index 00000000..71943117 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/MeltArtifact/Long_Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/MeltArtifact/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/MeltArtifact/Name.txt new file mode 100644 index 00000000..776306d7 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/MeltArtifact/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Prayer/Long_Description.txt b/Text/Game/Spells/Hero_Special_Abilities/Prayer/Long_Description.txt new file mode 100644 index 00000000..32a94bb3 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Prayer/Long_Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Prayer/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/Prayer/Name.txt new file mode 100644 index 00000000..e7515b0c Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Prayer/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Prayer/SpellBookPrediction.txt b/Text/Game/Spells/Hero_Special_Abilities/Prayer/SpellBookPrediction.txt new file mode 100644 index 00000000..e338eb97 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Prayer/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/RemoteControl/Long_Description.txt b/Text/Game/Spells/Hero_Special_Abilities/RemoteControl/Long_Description.txt new file mode 100644 index 00000000..a3498309 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/RemoteControl/Long_Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/RemoteControl/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/RemoteControl/Name.txt new file mode 100644 index 00000000..9bb1252e Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/RemoteControl/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/SoilBurn/Description.txt b/Text/Game/Spells/Hero_Special_Abilities/SoilBurn/Description.txt new file mode 100644 index 00000000..9990b483 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/SoilBurn/Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/SoilBurn/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/SoilBurn/Name.txt new file mode 100644 index 00000000..85bde842 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/SoilBurn/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/SpiritLink/Description.txt b/Text/Game/Spells/Hero_Special_Abilities/SpiritLink/Description.txt new file mode 100644 index 00000000..a39b0264 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/SpiritLink/Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/SpiritLink/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/SpiritLink/Name.txt new file mode 100644 index 00000000..251885fa Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/SpiritLink/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/SpiritLink/SpellBookPrediction.txt b/Text/Game/Spells/Hero_Special_Abilities/SpiritLink/SpellBookPrediction.txt new file mode 100644 index 00000000..6fb1508f Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/SpiritLink/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/SunFire/Description.txt b/Text/Game/Spells/Hero_Special_Abilities/SunFire/Description.txt new file mode 100644 index 00000000..eb40a277 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/SunFire/Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/SunFire/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/SunFire/Name.txt new file mode 100644 index 00000000..85306e43 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/SunFire/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/TimeShift/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/TimeShift/Name.txt new file mode 100644 index 00000000..fd84612a Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/TimeShift/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Unsummon/Long_Description.txt b/Text/Game/Spells/Hero_Special_Abilities/Unsummon/Long_Description.txt new file mode 100644 index 00000000..f8864bea Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Unsummon/Long_Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Unsummon/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/Unsummon/Name.txt new file mode 100644 index 00000000..cfe97413 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Unsummon/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_BattleCry/Description.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_BattleCry/Description.txt new file mode 100644 index 00000000..1d020a09 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_BattleCry/Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_BattleCry/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_BattleCry/Name.txt new file mode 100644 index 00000000..114ef284 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_BattleCry/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_BattleCry/SpellBookPrediction.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_BattleCry/SpellBookPrediction.txt new file mode 100644 index 00000000..73a04827 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_BattleCry/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_CallOfBlood/Description.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_CallOfBlood/Description.txt new file mode 100644 index 00000000..3921d33d Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_CallOfBlood/Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_CallOfBlood/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_CallOfBlood/Name.txt new file mode 100644 index 00000000..e68943f7 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_CallOfBlood/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_CallOfBlood/SpellBookPrediction.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_CallOfBlood/SpellBookPrediction.txt new file mode 100644 index 00000000..973914be Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_CallOfBlood/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_FearMyRoar/Description.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_FearMyRoar/Description.txt new file mode 100644 index 00000000..0c9fa9e6 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_FearMyRoar/Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_FearMyRoar/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_FearMyRoar/Name.txt new file mode 100644 index 00000000..6416596a Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_FearMyRoar/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_FearMyRoar/SpellBookPrediction.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_FearMyRoar/SpellBookPrediction.txt new file mode 100644 index 00000000..73a04827 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_FearMyRoar/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_RallingCry/Description.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_RallingCry/Description.txt new file mode 100644 index 00000000..dbad75bf Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_RallingCry/Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_RallingCry/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_RallingCry/Name.txt new file mode 100644 index 00000000..ca11e0b1 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_RallingCry/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_RallingCry/SpellBookPrediction.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_RallingCry/SpellBookPrediction.txt new file mode 100644 index 00000000..25a0eec0 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_RallingCry/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_ShoutOfMany/Description.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_ShoutOfMany/Description.txt new file mode 100644 index 00000000..2f27ca45 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_ShoutOfMany/Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_ShoutOfMany/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_ShoutOfMany/Name.txt new file mode 100644 index 00000000..80bee9a0 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_ShoutOfMany/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_ShoutOfMany/SpellBookPrediction.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_ShoutOfMany/SpellBookPrediction.txt new file mode 100644 index 00000000..0bb5da12 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_ShoutOfMany/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_WordOfTheChief/Description.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_WordOfTheChief/Description.txt new file mode 100644 index 00000000..62b85d8a Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_WordOfTheChief/Description.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_WordOfTheChief/Name.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_WordOfTheChief/Name.txt new file mode 100644 index 00000000..079bac84 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_WordOfTheChief/Name.txt differ diff --git a/Text/Game/Spells/Hero_Special_Abilities/Warcry_WordOfTheChief/SpellBookPrediction.txt b/Text/Game/Spells/Hero_Special_Abilities/Warcry_WordOfTheChief/SpellBookPrediction.txt new file mode 100644 index 00000000..b16ca8a8 Binary files /dev/null and b/Text/Game/Spells/Hero_Special_Abilities/Warcry_WordOfTheChief/SpellBookPrediction.txt differ diff --git a/Text/Game/Spells/MagicElements/Air.txt b/Text/Game/Spells/MagicElements/Air.txt new file mode 100644 index 00000000..61232253 Binary files /dev/null and b/Text/Game/Spells/MagicElements/Air.txt differ diff --git a/Text/Game/Spells/MagicElements/Earth.txt b/Text/Game/Spells/MagicElements/Earth.txt new file mode 100644 index 00000000..63409a24 Binary files /dev/null and b/Text/Game/Spells/MagicElements/Earth.txt differ diff --git a/Text/Game/Spells/MagicElements/Fire.txt b/Text/Game/Spells/MagicElements/Fire.txt new file mode 100644 index 00000000..3c7f7b54 Binary files /dev/null and b/Text/Game/Spells/MagicElements/Fire.txt differ diff --git a/Text/Game/Spells/MagicElements/Water.txt b/Text/Game/Spells/MagicElements/Water.txt new file mode 100644 index 00000000..e3889941 Binary files /dev/null and b/Text/Game/Spells/MagicElements/Water.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/AffectionCost.txt b/Text/Game/Spells/SpellBookPredictions/AffectionCost.txt new file mode 100644 index 00000000..0263174f Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/AffectionCost.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/AffectionDamage.txt b/Text/Game/Spells/SpellBookPredictions/AffectionDamage.txt new file mode 100644 index 00000000..7657ec70 Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/AffectionDamage.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/AffectionFirst.txt b/Text/Game/Spells/SpellBookPredictions/AffectionFirst.txt new file mode 100644 index 00000000..45963ff1 Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/AffectionFirst.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/AffectionMastery.txt b/Text/Game/Spells/SpellBookPredictions/AffectionMastery.txt new file mode 100644 index 00000000..b53d11e9 Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/AffectionMastery.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/AffectionNext.txt b/Text/Game/Spells/SpellBookPredictions/AffectionNext.txt new file mode 100644 index 00000000..8735ff57 Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/AffectionNext.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/AffectionSpellpower.txt b/Text/Game/Spells/SpellBookPredictions/AffectionSpellpower.txt new file mode 100644 index 00000000..a9da9443 Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/AffectionSpellpower.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/AmmoSteal.txt b/Text/Game/Spells/SpellBookPredictions/AmmoSteal.txt new file mode 100644 index 00000000..a5fe9abf Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/AmmoSteal.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/AvatarOfDeath.txt b/Text/Game/Spells/SpellBookPredictions/AvatarOfDeath.txt new file mode 100644 index 00000000..03a51b04 Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/AvatarOfDeath.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/DirectDamage.txt b/Text/Game/Spells/SpellBookPredictions/DirectDamage.txt new file mode 100644 index 00000000..f0e8d59b Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/DirectDamage.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/DirectDamageKills.txt b/Text/Game/Spells/SpellBookPredictions/DirectDamageKills.txt new file mode 100644 index 00000000..52f68e7e Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/DirectDamageKills.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/DirectDamageMasterOfFire.txt b/Text/Game/Spells/SpellBookPredictions/DirectDamageMasterOfFire.txt new file mode 100644 index 00000000..442d45ab Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/DirectDamageMasterOfFire.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/DirectDamageMasterOfIce.txt b/Text/Game/Spells/SpellBookPredictions/DirectDamageMasterOfIce.txt new file mode 100644 index 00000000..ee7fa2d4 Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/DirectDamageMasterOfIce.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/DirectDamageMasterOfLightning.txt b/Text/Game/Spells/SpellBookPredictions/DirectDamageMasterOfLightning.txt new file mode 100644 index 00000000..6dbeac7d Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/DirectDamageMasterOfLightning.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/Duration.txt b/Text/Game/Spells/SpellBookPredictions/Duration.txt new file mode 100644 index 00000000..011e08ca Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/Duration.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/Heal.txt b/Text/Game/Spells/SpellBookPredictions/Heal.txt new file mode 100644 index 00000000..bdfb9798 Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/Heal.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/HealHPReduce.txt b/Text/Game/Spells/SpellBookPredictions/HealHPReduce.txt new file mode 100644 index 00000000..f1f5bd49 Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/HealHPReduce.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/PowerFeed.txt b/Text/Game/Spells/SpellBookPredictions/PowerFeed.txt new file mode 100644 index 00000000..872240a8 Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/PowerFeed.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/PowerFeedFalse1.txt b/Text/Game/Spells/SpellBookPredictions/PowerFeedFalse1.txt new file mode 100644 index 00000000..2555950c Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/PowerFeedFalse1.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/PowerFeedFalse2.txt b/Text/Game/Spells/SpellBookPredictions/PowerFeedFalse2.txt new file mode 100644 index 00000000..477a7bdc Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/PowerFeedFalse2.txt differ diff --git a/Text/Game/Spells/SpellBookPredictions/PowerFeedFalse3.txt b/Text/Game/Spells/SpellBookPredictions/PowerFeedFalse3.txt new file mode 100644 index 00000000..94927969 Binary files /dev/null and b/Text/Game/Spells/SpellBookPredictions/PowerFeedFalse3.txt differ diff --git a/Textures/HeroScreen/Perks/Training_Prayer.dds b/Textures/HeroScreen/Perks/Training_Prayer.dds new file mode 100644 index 00000000..54802dc1 Binary files /dev/null and b/Textures/HeroScreen/Perks/Training_Prayer.dds differ diff --git a/Textures/HeroScreen/Perks/Training_Prayer.xdb b/Textures/HeroScreen/Perks/Training_Prayer.xdb new file mode 100644 index 00000000..e9f21710 --- /dev/null +++ b/Textures/HeroScreen/Perks/Training_Prayer.xdb @@ -0,0 +1,20 @@ + + + + + TEXTURE_2D + CONVERT_TRANSPARENT + CLAMP + TF_8888 + 64 + 64 + 0 + 1 + 0 + 2575462 + true + false + false + true + false + diff --git a/Textures/HeroScreen/Perks/Training_Prayer_grey.dds b/Textures/HeroScreen/Perks/Training_Prayer_grey.dds new file mode 100644 index 00000000..654039d5 Binary files /dev/null and b/Textures/HeroScreen/Perks/Training_Prayer_grey.dds differ diff --git a/Textures/HeroScreen/Perks/Training_Prayer_grey.xdb b/Textures/HeroScreen/Perks/Training_Prayer_grey.xdb new file mode 100644 index 00000000..19bf0556 --- /dev/null +++ b/Textures/HeroScreen/Perks/Training_Prayer_grey.xdb @@ -0,0 +1,20 @@ + + + + + TEXTURE_2D + CONVERT_TRANSPARENT + CLAMP + TF_8888 + 64 + 64 + 0 + 1 + 0 + 7628116 + true + false + false + true + false + diff --git a/Tools/TODO.md b/Tools/TODO.md new file mode 100644 index 00000000..f67fe5fc --- /dev/null +++ b/Tools/TODO.md @@ -0,0 +1,3 @@ +remove non-orc skills +add elemental vision +decrease stats gained for ultimates \ No newline at end of file diff --git a/Tools/Templates/Black_Dragon.xdb b/Tools/Templates/Black_Dragon.xdb new file mode 100644 index 00000000..93c26087 --- /dev/null +++ b/Tools/Templates/Black_Dragon.xdb @@ -0,0 +1,51 @@ + + + 42 + 42 + 0 + 45 + 70 + 9 + 10 + true + 600 + + 0 + 0 + 0 + 342 + 6443 + 10 + 7 + true + CREATURE_DEEP_DRAGON + TOWN_DUNGEON + + ELEMENT_FIRE + ELEMENT_AIR + + 1 + + 0 + 0 + 0 + 0 + 2 + 0 + 3700 + + true + + 2 + + + + 0 + CREATURE_DEEP_DRAGON + + + ABILITY_IMMUNITY_TO_MAGIC + ABILITY_FIRE_BREATH + ABILITY_ENCHANTED_OBSIDIAN + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/A.(WindowSimpleShared).xdb b/Tools/Templates/Creaturepedia/A.(WindowSimpleShared).xdb new file mode 100644 index 00000000..f888d2b9 --- /dev/null +++ b/Tools/Templates/Creaturepedia/A.(WindowSimpleShared).xdb @@ -0,0 +1,55 @@ + + + false + + + + + + + + + false + + + + + 0 + 0 + + false + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + false + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/CASTER/P0.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/CASTER/P0.(WindowMSButton).xdb new file mode 100644 index 00000000..cbf53153 --- /dev/null +++ b/Tools/Templates/Creaturepedia/CASTER/P0.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 0 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/CASTER/P1.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/CASTER/P1.(WindowMSButton).xdb new file mode 100644 index 00000000..15c91e33 --- /dev/null +++ b/Tools/Templates/Creaturepedia/CASTER/P1.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 38 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/CASTER/P2.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/CASTER/P2.(WindowMSButton).xdb new file mode 100644 index 00000000..50dc48ef --- /dev/null +++ b/Tools/Templates/Creaturepedia/CASTER/P2.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 76 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/CASTER/P3.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/CASTER/P3.(WindowMSButton).xdb new file mode 100644 index 00000000..33a87477 --- /dev/null +++ b/Tools/Templates/Creaturepedia/CASTER/P3.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 114 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/CASTER/P4.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/CASTER/P4.(WindowMSButton).xdb new file mode 100644 index 00000000..c1c07bd4 --- /dev/null +++ b/Tools/Templates/Creaturepedia/CASTER/P4.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 152 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/CASTER/P5.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/CASTER/P5.(WindowMSButton).xdb new file mode 100644 index 00000000..b26ec67b --- /dev/null +++ b/Tools/Templates/Creaturepedia/CASTER/P5.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 190 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/CASTER/P6.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/CASTER/P6.(WindowMSButton).xdb new file mode 100644 index 00000000..6c20b0d6 --- /dev/null +++ b/Tools/Templates/Creaturepedia/CASTER/P6.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 228 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/CASTER/P7.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/CASTER/P7.(WindowMSButton).xdb new file mode 100644 index 00000000..5f56a522 --- /dev/null +++ b/Tools/Templates/Creaturepedia/CASTER/P7.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 266 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/P0.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/P0.(WindowMSButton).xdb new file mode 100644 index 00000000..c9e6a1c0 --- /dev/null +++ b/Tools/Templates/Creaturepedia/P0.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 0 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/P1.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/P1.(WindowMSButton).xdb new file mode 100644 index 00000000..d6fa874f --- /dev/null +++ b/Tools/Templates/Creaturepedia/P1.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 38 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/P2.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/P2.(WindowMSButton).xdb new file mode 100644 index 00000000..3ea92304 --- /dev/null +++ b/Tools/Templates/Creaturepedia/P2.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 76 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/P3.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/P3.(WindowMSButton).xdb new file mode 100644 index 00000000..290279f1 --- /dev/null +++ b/Tools/Templates/Creaturepedia/P3.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 114 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/P4.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/P4.(WindowMSButton).xdb new file mode 100644 index 00000000..8d1fa1e9 --- /dev/null +++ b/Tools/Templates/Creaturepedia/P4.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 152 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/P5.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/P5.(WindowMSButton).xdb new file mode 100644 index 00000000..8c654523 --- /dev/null +++ b/Tools/Templates/Creaturepedia/P5.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 190 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/P6.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/P6.(WindowMSButton).xdb new file mode 100644 index 00000000..6a530f31 --- /dev/null +++ b/Tools/Templates/Creaturepedia/P6.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 228 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/Creaturepedia/P7.(WindowMSButton).xdb b/Tools/Templates/Creaturepedia/P7.(WindowMSButton).xdb new file mode 100644 index 00000000..0032b4da --- /dev/null +++ b/Tools/Templates/Creaturepedia/P7.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + abil + + true + 50 + + + + + 0 + 266 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 80 + 38 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + false + + + false + + 0 + + + \ No newline at end of file diff --git a/Tools/Templates/HeroVisualDummy/AnimSet.xdb b/Tools/Templates/HeroVisualDummy/AnimSet.xdb new file mode 100644 index 00000000..b4fc9f71 --- /dev/null +++ b/Tools/Templates/HeroVisualDummy/AnimSet.xdb @@ -0,0 +1,8 @@ + + + + + + + Global + diff --git a/Tools/Templates/HeroVisualDummy/CombatVisual.xdb b/Tools/Templates/HeroVisualDummy/CombatVisual.xdb new file mode 100644 index 00000000..200edd4d --- /dev/null +++ b/Tools/Templates/HeroVisualDummy/CombatVisual.xdb @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + false + + + + + + 0 + 0 + 0 + + + diff --git a/Tools/Templates/HeroVisualDummy/HeroCharacterAdventure.xdb b/Tools/Templates/HeroVisualDummy/HeroCharacterAdventure.xdb new file mode 100644 index 00000000..24bd5782 --- /dev/null +++ b/Tools/Templates/HeroVisualDummy/HeroCharacterAdventure.xdb @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Tools/Templates/HeroVisualDummy/HeroCharacterArena.xdb b/Tools/Templates/HeroVisualDummy/HeroCharacterArena.xdb new file mode 100644 index 00000000..24bd5782 --- /dev/null +++ b/Tools/Templates/HeroVisualDummy/HeroCharacterArena.xdb @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Tools/Templates/HeroVisualDummy/HeroCharacterArenaMelee.xdb b/Tools/Templates/HeroVisualDummy/HeroCharacterArenaMelee.xdb new file mode 100644 index 00000000..40d0b312 --- /dev/null +++ b/Tools/Templates/HeroVisualDummy/HeroCharacterArenaMelee.xdb @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Tools/Templates/HeroVisualDummy/HeroIndividualCamera.xdb b/Tools/Templates/HeroVisualDummy/HeroIndividualCamera.xdb new file mode 100644 index 00000000..86435bb9 --- /dev/null +++ b/Tools/Templates/HeroVisualDummy/HeroIndividualCamera.xdb @@ -0,0 +1,20 @@ + + + + + 3.52568 + -4.0297 + 1.49626 + + + -5.74193 + 56.7048 + 0 + + 5.88364 + 54.4316 + 1 + 500 + + camera_hero_screen + diff --git a/Tools/Templates/HeroVisualDummy/Model.xdb b/Tools/Templates/HeroVisualDummy/Model.xdb new file mode 100644 index 00000000..35912790 --- /dev/null +++ b/Tools/Templates/HeroVisualDummy/Model.xdb @@ -0,0 +1,10 @@ + + + + + + + + + 1 + diff --git a/Tools/Templates/Skillwheel/Class.(WindowSimpleShared).xdb b/Tools/Templates/Skillwheel/Class.(WindowSimpleShared).xdb new file mode 100644 index 00000000..9e069d0c --- /dev/null +++ b/Tools/Templates/Skillwheel/Class.(WindowSimpleShared).xdb @@ -0,0 +1,56 @@ + + + false + + + + + + + + + + false + + + + + 0 + 0 + + false + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + false + + \ No newline at end of file diff --git a/Tools/Templates/Skillwheel/Icon.(BackgroundSimpleScallingTexture).xdb b/Tools/Templates/Skillwheel/Icon.(BackgroundSimpleScallingTexture).xdb new file mode 100644 index 00000000..f3e43c9d --- /dev/null +++ b/Tools/Templates/Skillwheel/Icon.(BackgroundSimpleScallingTexture).xdb @@ -0,0 +1,10 @@ + + + 285694784 + + -1 + + 64 + 64 + + \ No newline at end of file diff --git a/Tools/Templates/Skillwheel/P13/PerkButton0.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P13/PerkButton0.(WindowMSButton).xdb new file mode 100644 index 00000000..60a7f2e6 --- /dev/null +++ b/Tools/Templates/Skillwheel/P13/PerkButton0.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 280 + 596 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P13/PerkButton1.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P13/PerkButton1.(WindowMSButton).xdb new file mode 100644 index 00000000..ec339965 --- /dev/null +++ b/Tools/Templates/Skillwheel/P13/PerkButton1.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 382 + 684 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P13/PerkButton2.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P13/PerkButton2.(WindowMSButton).xdb new file mode 100644 index 00000000..e79f1a60 --- /dev/null +++ b/Tools/Templates/Skillwheel/P13/PerkButton2.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 329 + 704 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P13/PerkButton3.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P13/PerkButton3.(WindowMSButton).xdb new file mode 100644 index 00000000..7e7f9296 --- /dev/null +++ b/Tools/Templates/Skillwheel/P13/PerkButton3.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 276 + 714 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P13/PerkButton4.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P13/PerkButton4.(WindowMSButton).xdb new file mode 100644 index 00000000..0fb810d4 --- /dev/null +++ b/Tools/Templates/Skillwheel/P13/PerkButton4.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 350 + 656 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P13/PerkButton5.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P13/PerkButton5.(WindowMSButton).xdb new file mode 100644 index 00000000..e36df7d0 --- /dev/null +++ b/Tools/Templates/Skillwheel/P13/PerkButton5.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 309 + 670 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P13/PerkButton6.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P13/PerkButton6.(WindowMSButton).xdb new file mode 100644 index 00000000..6a6c557d --- /dev/null +++ b/Tools/Templates/Skillwheel/P13/PerkButton6.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 268 + 678 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P13/PerkButton7.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P13/PerkButton7.(WindowMSButton).xdb new file mode 100644 index 00000000..f228e74f --- /dev/null +++ b/Tools/Templates/Skillwheel/P13/PerkButton7.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 325 + 627 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P13/PerkButton8.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P13/PerkButton8.(WindowMSButton).xdb new file mode 100644 index 00000000..c6e6bf79 --- /dev/null +++ b/Tools/Templates/Skillwheel/P13/PerkButton8.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 293 + 633 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P13/PerkButton9.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P13/PerkButton9.(WindowMSButton).xdb new file mode 100644 index 00000000..7b9c1458 --- /dev/null +++ b/Tools/Templates/Skillwheel/P13/PerkButton9.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 261 + 644 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P14/PerkButton0.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P14/PerkButton0.(WindowMSButton).xdb new file mode 100644 index 00000000..bfe9ee6d --- /dev/null +++ b/Tools/Templates/Skillwheel/P14/PerkButton0.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 944 + 596 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P14/PerkButton1.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P14/PerkButton1.(WindowMSButton).xdb new file mode 100644 index 00000000..5aa745d7 --- /dev/null +++ b/Tools/Templates/Skillwheel/P14/PerkButton1.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 948 + 714 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P14/PerkButton2.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P14/PerkButton2.(WindowMSButton).xdb new file mode 100644 index 00000000..1863116a --- /dev/null +++ b/Tools/Templates/Skillwheel/P14/PerkButton2.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 895 + 704 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P14/PerkButton3.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P14/PerkButton3.(WindowMSButton).xdb new file mode 100644 index 00000000..ad4f0229 --- /dev/null +++ b/Tools/Templates/Skillwheel/P14/PerkButton3.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 842 + 684 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P14/PerkButton4.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P14/PerkButton4.(WindowMSButton).xdb new file mode 100644 index 00000000..57aec4b5 --- /dev/null +++ b/Tools/Templates/Skillwheel/P14/PerkButton4.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 956 + 678 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P14/PerkButton5.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P14/PerkButton5.(WindowMSButton).xdb new file mode 100644 index 00000000..f2095b90 --- /dev/null +++ b/Tools/Templates/Skillwheel/P14/PerkButton5.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 915 + 670 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P14/PerkButton6.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P14/PerkButton6.(WindowMSButton).xdb new file mode 100644 index 00000000..e827c300 --- /dev/null +++ b/Tools/Templates/Skillwheel/P14/PerkButton6.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 874 + 656 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P14/PerkButton7.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P14/PerkButton7.(WindowMSButton).xdb new file mode 100644 index 00000000..c1bf0dfb --- /dev/null +++ b/Tools/Templates/Skillwheel/P14/PerkButton7.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 950 + 670 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P14/PerkButton8.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P14/PerkButton8.(WindowMSButton).xdb new file mode 100644 index 00000000..ab462273 --- /dev/null +++ b/Tools/Templates/Skillwheel/P14/PerkButton8.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 933 + 633 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/P14/PerkButton9.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/P14/PerkButton9.(WindowMSButton).xdb new file mode 100644 index 00000000..0995c588 --- /dev/null +++ b/Tools/Templates/Skillwheel/P14/PerkButton9.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 933 + 600 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/PerkButtonX.(WindowMSButton).xdb b/Tools/Templates/Skillwheel/PerkButtonX.(WindowMSButton).xdb new file mode 100644 index 00000000..ec5491a0 --- /dev/null +++ b/Tools/Templates/Skillwheel/PerkButtonX.(WindowMSButton).xdb @@ -0,0 +1,84 @@ + + + 285694855 + + PerkButton + + true + 30 + + + + + 663 + 175 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 36 + 36 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + + + + + false + + + + false + + + + false + + false + false + + + + 0 + true + + + false + + 0 + + + diff --git a/Tools/Templates/Skillwheel/PerkButtonX.(WindowMSButtonShared).xdb b/Tools/Templates/Skillwheel/PerkButtonX.(WindowMSButtonShared).xdb new file mode 100644 index 00000000..98f2c9e2 --- /dev/null +++ b/Tools/Templates/Skillwheel/PerkButtonX.(WindowMSButtonShared).xdb @@ -0,0 +1,113 @@ + + + false + + + + + false + + + + + 0 + 0 + + false + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + false + + + + + + + + + + false + + + + + + + + + + + + true + + + + + + + + + + false + + + + + + + + + + false + + + + + + + + + + false + + + + BST_NORMAL + + + false + + + + BCST_ON_RELEASE + diff --git a/Tools/Templates/Skillwheel/PerkDescX.(WindowTextView).xdb b/Tools/Templates/Skillwheel/PerkDescX.(WindowTextView).xdb new file mode 100644 index 00000000..34777273 --- /dev/null +++ b/Tools/Templates/Skillwheel/PerkDescX.(WindowTextView).xdb @@ -0,0 +1,59 @@ + + + 285694860 + + PerkDesc + + true + 10 + + + + + 0 + 0 + + false + + + ERA_CENTER + true + + + ERA_CENTER + true + + + + 270 + 0 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + true + false + + diff --git a/Tools/Templates/Skillwheel/PerkDescX.(WindowTextViewShared).xdb b/Tools/Templates/Skillwheel/PerkDescX.(WindowTextViewShared).xdb new file mode 100644 index 00000000..5674d7bc --- /dev/null +++ b/Tools/Templates/Skillwheel/PerkDescX.(WindowTextViewShared).xdb @@ -0,0 +1,57 @@ + + + false + + + + + + + false + + + + + 0 + 0 + + false + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + false + + 0 + 0 + + 0 + diff --git a/Tools/Templates/Skillwheel/PerkNameX.(WindowTextView).xdb b/Tools/Templates/Skillwheel/PerkNameX.(WindowTextView).xdb new file mode 100644 index 00000000..3ad18c8e --- /dev/null +++ b/Tools/Templates/Skillwheel/PerkNameX.(WindowTextView).xdb @@ -0,0 +1,59 @@ + + + 285694860 + + PerkName + + true + 10 + + + + + 0 + -22 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 270 + 22 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + + false + false + + diff --git a/Tools/Templates/Skillwheel/PerkPageX.(WindowSimple).xdb b/Tools/Templates/Skillwheel/PerkPageX.(WindowSimple).xdb new file mode 100644 index 00000000..822b4caa --- /dev/null +++ b/Tools/Templates/Skillwheel/PerkPageX.(WindowSimple).xdb @@ -0,0 +1,55 @@ + + + 285700801 + + Sorcery_PerkX + + false + 10 + + + + + 261 + 23 + + true + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 738 + 738 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + diff --git a/Tools/Templates/Skillwheel/PerkPageX.(WindowSimpleShared).xdb b/Tools/Templates/Skillwheel/PerkPageX.(WindowSimpleShared).xdb new file mode 100644 index 00000000..8b27b521 --- /dev/null +++ b/Tools/Templates/Skillwheel/PerkPageX.(WindowSimpleShared).xdb @@ -0,0 +1,53 @@ + + + false + + + + + + + false + + + + + 0 + 0 + + false + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + false + + diff --git a/Tools/Templates/Skillwheel/SwitchOnX.(UISSendUIMessage).xdb b/Tools/Templates/Skillwheel/SwitchOnX.(UISSendUIMessage).xdb new file mode 100644 index 00000000..0f564b9e --- /dev/null +++ b/Tools/Templates/Skillwheel/SwitchOnX.(UISSendUIMessage).xdb @@ -0,0 +1,21 @@ + + + 285694982 + 0 + + UI_SHOW_WINDOW + true + + + Sorcery_PerkX + true + + + 1 + true + + + 0 + true + + diff --git a/Tools/Templates/Skillwheel/X.(BackgroundSimpleScallingTexture).xdb b/Tools/Templates/Skillwheel/X.(BackgroundSimpleScallingTexture).xdb new file mode 100644 index 00000000..387ea500 --- /dev/null +++ b/Tools/Templates/Skillwheel/X.(BackgroundSimpleScallingTexture).xdb @@ -0,0 +1,10 @@ + + + 285694784 + + -1 + + 64 + 64 + + diff --git a/Tools/Tools.iml b/Tools/Tools.iml new file mode 100644 index 00000000..88ad5412 --- /dev/null +++ b/Tools/Tools.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/Tools/artifacts.py b/Tools/artifacts.py new file mode 100644 index 00000000..1646ffaf --- /dev/null +++ b/Tools/artifacts.py @@ -0,0 +1,50 @@ +import os +from xdb import XDB +from tqdm import tqdm + +models = { + 'PRIMARY': '/_(Model)/Artefacts/Dragon_Flame_Tongue.(Model).xdb#xpointer(/Model)', + 'SECONDARY': '/_(Model)/Artefacts/DragonscaleShield.xdb#xpointer(/Model)', + 'HEAD': '/_(Model)/Artefacts/Dragon_talon_crown.xdb#xpointer(/Model)',# + 'CHEST': '/_(Model)/Artefacts/Dragon_Scale_Armor.xdb#xpointer(/Model)', + 'NECK': '/_(Model)/Artefacts/Dragon_Teeth_Necklace.(Model).xdb#xpointer(/Model)', + 'FINGER': '/_(Model)/Artefacts/Dragon_Eye_Ring.(Model).xdb#xpointer(/Model)', + 'FEET': '/_(Model)/Artefacts/Dragon_bone_greaves.xdb#xpointer(/Model)', + 'INVENTORY': '/_(Model)/Artefacts/Endless_Bag_of_Gold.(Model).xdb#xpointer(/Model)', + 'SHOULDERS': '/_(Model)/Artefacts/Dragon_Wing_Mantle.(Model).xdb#xpointer(/Model)', + 'MISCSLOT1': '/_(Model)/Artefacts/Scroll.(Model).xdb#xpointer(/Model)', +} + +colors = { + 'ARTF_CLASS_GRAIL': 'Gold', + 'ARTF_CLASS_RELIC': 'Red', + 'ARTF_CLASS_MAJOR': 'Blue', + 'ARTF_CLASS_MINOR': 'Green', +} + +def normalizeID(id): + return id.replace('ARTIFACT_', '').replace('ARTF_', '') + +def main(): + slots = {} + + arts = {a['ID'].txt: a for a in XDB.load(f'GameMechanics/RefTables/Artifacts.Frax.xdb')[0]} + data = XDB.load(f'Frax/GameMechanics/RefTables/Artifacts.xdb') + for art in tqdm(list(data[0]), desc = 'Artis: Update'): + if art['ID'].txt in arts: + art['obj'] = arts[art['ID'].txt]['obj'] + data.save() + + arts = {normalizeID(a['ID'].txt): a for a in XDB.load(f'Frax/GameMechanics/RefTables/Artifacts.xdb')[0]} + + for dirname, _, names in tqdm(list(os.walk('Frax/MapObjects/Artifacts/')), desc='Artis: Models'): + for filename in names: + root = XDB.load(os.path.join(dirname, filename)) + color = colors[arts[normalizeID(root['ArtifactID'].txt)]['obj']['Type'].txt] + root['Effect'].atr['href'] = f'/Effects/_(Effect)/Artefacts/General/{color}.xdb#xpointer(/Effect)' + if root['Model'].atr and root['Model'].atr['href'] == '/_(Model)/Artefacts/Tank.(Model).xdb#xpointer(/Model)': + root['Model'].atr['href'] = models[arts[normalizeID(root['ArtifactID'].txt)]['obj']['Slot'].txt] + root.save() + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/Tools/bloodrage.py b/Tools/bloodrage.py new file mode 100644 index 00000000..02630907 --- /dev/null +++ b/Tools/bloodrage.py @@ -0,0 +1,65 @@ +import os +from xdb import XDB + +abilities = { + 'Academy': ([1,4,6,7], ['STORMSTRIKE']), + 'Dungeon': ([5,6,7], ['INCORPOREAL']), + 'Dwarf': ([], ['MAGMA_SHIELD']), + 'Haven': ([], ['LIZARD_BITE']), + 'Inferno': ([1], ['SEARING_AURA']), + 'Necropolis': ([], ['WEAKENING_STRIKE']), + 'Neutrals': ([], ['AURA_OF_BRAVERY']), + 'Preserve': ([3,4,5,6], ['ENTANGLING_ROOTS', 'NO_ENEMY_RETALIATION']), +} + +creatures = { + 'Haven': [['PEASANT','MILITIAMAN','LANDLORD'],['ARCHER','MARKSMAN','LONGBOWMAN'],['FOOTMAN','SWORDSMAN','VINDICATOR'],['GRIFFIN','ROYAL_GRIFFIN','BATTLE_GRIFFIN'],['PRIEST','CLERIC','ZEALOT'],['CAVALIER','PALADIN','CHAMPION'],['ANGEL','ARCHANGEL','SERAPH']], + + 'Inferno': [['FAMILIAR','IMP','QUASIT'],['DEMON','HORNED_DEMON','HORNED_LEAPER'],['HELL_HOUND','CERBERI','FIREBREATHER_HOUND'],['SUCCUBUS','INFERNAL_SUCCUBUS','SUCCUBUS_SEDUCER'],['NIGHTMARE','FRIGHTFUL_NIGHTMARE','HELLMARE'],['PIT_FIEND','BALOR','PIT_SPAWN'],['DEVIL','ARCHDEVIL','ARCH_DEMON']], + + 'Necropolis': [['SKELETON','SKELETON_ARCHER','SKELETON_WARRIOR'],['WALKING_DEAD','ZOMBIE','DISEASE_ZOMBIE'],['MANES','GHOST','POLTERGEIST'],['VAMPIRE','VAMPIRE_LORD','NOSFERATU'],['LICH','DEMILICH','LICH_MASTER'],['WIGHT','WRAITH','BANSHEE'],['BONE_DRAGON','SHADOW_DRAGON','HORROR_DRAGON']], + + 'Preserve':[['PIXIE','SPRITE','DRYAD'],['BLADE_JUGGLER','WAR_DANCER','BLADE_SINGER'],['WOOD_ELF','GRAND_ELF','SHARP_SHOOTER'],['DRUID','DRUID_ELDER','HIGH_DRUID'],['UNICORN','WAR_UNICORN','WHITE_UNICORN'],['TREANT','TREANT_GUARDIAN','ANGER_TREANT'],['GREEN_DRAGON','GOLD_DRAGON','RAINBOW_DRAGON']], + + 'Academy':[['GREMLIN','MASTER_GREMLIN','GREMLIN_SABOTEUR'],['STONE_GARGOYLE','OBSIDIAN_GARGOYLE','MARBLE_GARGOYLE'],['IRON_GOLEM','STEEL_GOLEM','OBSIDIAN_GOLEM'],['MAGI','ARCH_MAGI','COMBAT_MAGE'],['GENIE','MASTER_GENIE','DJINN_VIZIER'],['RAKSHASA','RAKSHASA_RUKH','RAKSHASA_KSHATRI'],['GIANT','TITAN','STORM_LORD']], + + 'Dungeon':[['SCOUT','ASSASSIN','STALKER'],['WITCH','BLOOD_WITCH','BLOOD_WITCH_2'],['MINOTAUR','MINOTAUR_KING','MINOTAUR_CAPTAIN'],['RIDER','RAVAGER','BLACK_RIDER'],['HYDRA','CHAOS_HYDRA','ACIDIC_HYDRA'],['MATRON','MATRIARCH','SHADOW_MISTRESS'],['DEEP_DRAGON','BLACK_DRAGON','RED_DRAGON']], + + 'Neutrals':[['FIRE_ELEMENTAL','WATER_ELEMENTAL'],['EARTH_ELEMENTAL','AIR_ELEMENTAL'],['WOLF'],['MUMMY'],['SNOW_APE','MANTICORE'],['DEATH_KNIGHT', 'BLACK_KNIGHT'],['PHOENIX']], + + 'Dwarf':[['DEFENDER','STOUT_DEFENDER','STONE_DEFENDER'],['AXE_FIGHTER','AXE_THROWER','HARPOONER'],['BEAR_RIDER','BLACKBEAR_RIDER','WHITE_BEAR_RIDER'],['BROWLER','BERSERKER','BATTLE_RAGER'],['RUNE_MAGE','FLAME_MAGE','FLAME_KEEPER'],['THANE','WARLORD','THUNDER_THANE'],['FIRE_DRAGON','MAGMA_DRAGON','LAVA_DRAGON']], + + 'Stronghold':[['GOBLIN','GOBLIN_TRAPPER','GOBLIN_DEFILER'],['CENTAUR','CENTAUR_NOMAD','CENTAUR_MARADEUR',],['ORC_WARRIOR','ORC_SLAYER','ORC_WARMONGER'],['SHAMAN','SHAMAN_WITCH','SHAMAN_HAG'],['ORCCHIEF_BUTCHER','ORCCHIEF_EXECUTIONER','ORCCHIEF_CHIEFTAIN'],['WYVERN','WYVERN_POISONOUS','WYVERN_PAOKAI'],['CYCLOP','CYCLOP_UNTAMED','CYCLOP_BLOODEYED']], +} + +def ability(abilities): + return XDB.new('Item', [ + XDB.new('Type', 'DEMON_RAGE_BONUS_ABILITY'), + XDB.new('IntParam', '0'), + XDB.new('FloatParam', '0'), + XDB.new('Spells', []), + XDB.new('Abilities', [XDB.new('Item', 'ABILITY_'+a) for a in abilities]), + ]) + +def creature(creature, abilities): + return XDB.new('Item', [ + XDB.new('Creature', 'CREATURE_'+creature), + XDB.new('Bonus1', [XDB.new('Item', ability(abilities[0]))]), + XDB.new('Bonus2', [XDB.new('Item', ability(abilities[1]))]), + XDB.new('Bonus3', [XDB.new('Item', ability(abilities[2]))]), + ]) + +def frax(tier, town): + return [] if tier in abilities[town][0] else abilities[town][1] + +def main(): + root = XDB.load('GameMechanics/RPGStats/DefaultStats.xdb') + + bonuses = [creature(c, [['FLAMEWAVE', 'FIRE_SHIELD'], ['HEXING_ATTACK'], frax(ix+1, t)]) for t, css in creatures.items() for ix, cs in enumerate(css) for c in cs if t != 'Stronghold'] + + root['combat']['Creatures']['Stronghold']['DemonRage']['Bonuses'] = list(root['combat']['Creatures']['Stronghold']['DemonRage']['Bonuses']) + bonuses + + root.save('Frax/GameMechanics/RPGStats/DefaultStats.xdb') + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/Tools/creaturepedia.py b/Tools/creaturepedia.py new file mode 100644 index 00000000..039d7f6a --- /dev/null +++ b/Tools/creaturepedia.py @@ -0,0 +1,149 @@ +from asyncore import write +import sys +import os +from xdb import XDB +from shutil import copyfile +import traceback +from utilities import * +from tqdm import tqdm + + +stats = [ + 'AttackSkill', + 'DefenceSkill', + 'MinDamage', # 'MaxDamage', + 'Initiative', + 'Speed', + 'Health', + 'SpellPoints', #'SpellPoints1', + 'Shots', + 'Exp', + 'WeeklyGrowth', + # 'Cost -> Gold' +] + +towns = { + 'Academy': 'AC', + 'Dungeon': 'DU', + 'Dwarf': 'FO', + 'Haven': 'HA', + 'Inferno': 'IN', + 'Necropolis': 'NE', + 'Neutrals': 'NL', + 'Orcs': 'ST', + 'Preserve': 'SY', +} + +# tiers and upgrades of neutral units i +neutrals = { + 'Air_Elemental': (1,1), + 'Earth_Elemental': (1,2), + 'Water_Elemental': (2,1), + 'Fire_Elemental': (2,2), + 'Wolf': (3,1), + 'Mummy': (4,1), + 'Manticore': (5,1), + 'Death_Knight': (6,1), + 'SnowApe': (7,3), + 'Black_Knight': (7,2), + 'Phoenix': (7,1), +} + +def upgrade3(town): + return '3rd' if town != 'Haven' else 'Renegates' + +def nozero(text): + return text if text != '0' else '-' + +def dps(unit): + damage = (unit['MinDamage'].int + unit['MaxDamage'].int + 1)/2 + power = unit['WeeklyGrowth'].int * unit['Initiative'].int + return damage * power / 10 + +def hp(unit): + health = unit['WeeklyGrowth'].int * unit['Health'].int + return health / 10 + +caster_text = '''\ +

~Spells~
+''' + +def creaturepedia(): + path = 'GameMechanics/Creature/Creatures' + spellname = {'VAMPIRISM': 'Vampirism', 'SORROW': 'Sorrow', 'ABILITY_LAY_HANDS': 'Lay Hands'} + + ### LOAD SPELLS ################### + + for data in list(XDB.load('GameMechanics/RefTables/UndividedSpells.xdb')['objects'])[1:]: + name = data['Obj'].atr['href'][1:-17] + try: + name = open(XDB.load(name)['NameFileRef'].atr['href'][1:], encoding='utf-16').read() + except Exception: + name = ' '.join(word.capitalize() for word in data['ID'].txt[6:].split('_')) + spellname[data['ID'].txt[6:]] = name + + for town, townID in tqdm(towns.items(), desc = 'Creaturepedia'): + u3 = upgrade3(town) + thirds = [f'{u3}/{name}' for name in os.listdir(f'{path}/{town}/{u3}')] if town != 'Neutrals' else [] + for filename in os.listdir(f'{path}/{town}') + thirds: + if filename[-4:] != ".xdb": continue + filepath = os.path.join(path, town, filename) + + # LOAD DATA + data = XDB.load(filepath) + if data.tag != 'Creature': continue + tier = data['CreatureTier'].int + upgr = 0 if data['BaseCreature'].txt == 'CREATURE_UNKNOWN' else 1 if u3 not in filepath else 2 + if town == 'Neutrals': + tier, upgr = neutrals[filename[:-4]] + + # STATISTICS + cost = [data['Cost']['Gold'].txt] + [f'{d.txt} {d.tag}' for d in data['Cost'] if d.txt != '0'][:-1] + stat = [nozero(data[s].txt) for s in stats] + [' +
'.join(cost)] + stat[2] += ' - ' + data['MaxDamage'].txt + stat[6] += ' | ' + nozero(data['SpellPoints1'].txt) + stat[8] = f'{int(dps(data)/3)} | {int(hp(data)/3)}' + + filepath = f'Frax/UI/Doc/Creaturepedia/{townID}/T{tier}/{upgr}' + for ix, text in enumerate(stat): + write_txt(f'{filepath}/s{ix+1}', text) + + # ABILITIES + abilities = [a.txt[8:] for a in data['Abilities']] + # LIVING + if not any(a in ('ELEMENTAL', 'UNDEAD', 'MECHANICAL') for a in abilities): + abilities = ['FLESH_AND_BLOOD'] + abilities + # SHOOTER + if data['Shots'].txt != '0': + abilities = abilities + ['SHOOTER'] + # CASTER + if data['KnownSpells'].tree: + # TODO SIMPLIFY TEMPLATES + spells = (f'{spellname[s["Spell"].txt[6:]]} ({s["Mastery"].txt[8:].capitalize()})' for s in data['KnownSpells']) + copyfile(f'Tools/Templates/Creaturepedia/CASTER/P{len(abilities)}.(WindowMSButton).xdb', f'{filepath}/C.(WindowMSButton).xdb') + write_txt(f'{filepath}/C', caster_text + '\n'.join(spells)) + caster_ability = XDB.new('Item', [], {'href': 'C.(WindowMSButton).xdb#xpointer(/WindowMSButton)'}) + # OTHER + abilities = [f'/UI/Doc/Creaturepedia/Common/Abilities/{a}/P{i}.(WindowMSButton).xdb#xpointer(/WindowMSButton)' for i, a in enumerate(abilities)] + xdb = XDB.load(f'Tools/Templates/Creaturepedia/A.(WindowSimpleShared).xdb') + xdb['Children'] = XDB.new('Children', [XDB.new('Item', [], {'href': a}) for a in abilities] + [caster_ability]) + xdb.save(f'{filepath}/A.(WindowSimpleShared).xdb') + + +def ability_positions(): + path = 'UI/Doc/Creaturepedia' + temp = [XDB.load(f'Tools/Templates/Creaturepedia/P{i}.(WindowMSButton).xdb') for i in range(8)] + for data in XDB.load('GameMechanics/RefTables/CombatAbilities.xdb')['objects']: + for i, t in enumerate(temp): + t['TextFileRef'].atr['href'] = data['obj']['NameFileRef'].atr['href'] + t['TooltipFileRef'].atr['href'] = data['obj']['DescriptionFileRef'].atr['href'] + if data['ID'].txt == 'ABILITY_CASTER': + t['TooltipFileRef'].atr['href'] = 'C.txt' + t.save(f'Frax/{path}/Common/Abilities/{data["ID"].txt[8:]}/P{i}.(WindowMSButton).xdb') + +def main(): + ability_positions() + creaturepedia() + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/Tools/models.py b/Tools/models.py new file mode 100644 index 00000000..0df7d927 --- /dev/null +++ b/Tools/models.py @@ -0,0 +1,45 @@ +from xdb import XDB +import os +from shutil import copy + +def main(): + for dirname, _, names in os.walk('H55/MapObjects/'): + for filename in names: + path = dirname + '/' + filename + name = dirname.split('/')[-1] + '/' + filename[:-4] + name = name.replace('.(AdvMapHeroShared)', '') + try: + data = XDB.load(path) + data['Specialization'] + + os.makedirs(os.path.dirname(f'_/Characters/Heroes/{name}/'), exist_ok=True) + + for (tag, pointer) in [ + ('Model', 'Model'), ('AnimSet', 'AnimSet'), ('HeroCharacterArena', 'Character'), + ('HeroCharacterArenaMelee', 'Character'), ('HeroCharacterAdventure', 'Character'), + ('HeroIndividualCamera', 'Camera') ,('CombatVisual', 'CreatureVisual') ]: + + filename = f'Characters/Heroes/{name}/{tag}.xdb' + + if 'href' in data[tag].atr: + filepath = data[tag].atr['href'][:-12-len(pointer)] + prefix = '/'.join(filepath.split('/')[:-1]) + text = open('data/'+filepath).read() + text = text.replace('href="/', '{TODO}') + text = text.replace('href="', f'href="{prefix}/') + text = text.replace('{TODO}', 'href="/') + open('_/'+filename, 'w').write(text) + else: + copy(f'HeroVisualDummy/{tag}.xdb', '_/'+filename) + + + data[tag].atr['href'] = f'/{filename}#xpointer(/{pointer})' + + data.save('_' + path) + # os.utime('_' + path, tuple([1199149261]*2)) + except Exception as e: + if 'Specialization' not in str(e): + print('ERROR:', filename, e) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/Tools/release.py b/Tools/release.py new file mode 100644 index 00000000..5238666a --- /dev/null +++ b/Tools/release.py @@ -0,0 +1,61 @@ +import skillwheel +import bloodrage +import creaturepedia +import artifacts +import os +import shutil +import zipfile +from tqdm import tqdm + +def topprio(path): + os.utime(path, (int(3e9), int(3e9))) + +os.makedirs('Frax', exist_ok=True) + +with zipfile.ZipFile('data.pak') as data: + for name in data.namelist(): + if name.startswith('MapObjects/Artifacts'): + data.extract(name, 'Frax') + +folders = [ 'Frame', 'Index', 'Texts-EN', 'Skillwheel', 'Creaturepedia', 'PhoenixVision'] +for folder in tqdm(folders, desc='Extract H55 Files'): + zipfile.ZipFile(f'MMH55-{folder}.pak', 'r').extractall('Frax/') + +folders = [ 'NCF_601', 'NCF_620', 'NCF_625', 'NCF_634' ] +for folder in tqdm(folders, desc='Extract Frax Files'): + zipfile.ZipFile(f'{folder}.pak', 'r').extractall('Frax/') + +folders = ['scripts', 'Characters', 'GameMechanics', 'MapObjects', 'Maps', 'Text', 'Textures', 'Tools', 'UI', '_(AnimSet)'] +for folder in tqdm(folders, desc='Copy Frax Files'): + for path, _, files in os.walk(folder): + os.makedirs(f'Frax/{path}', exist_ok=True) + for file in files: + shutil.copy(f'{path}/{file}', f'Frax/{path}') + +skillwheel.main() +bloodrage.main() +creaturepedia.main() +artifacts.main() + +# shutil.rmtree('Frax/scripts', ignore_errors=True) + +for dir, dirs, files in tqdm(list(os.walk('Frax')), desc='Make Frax Override H55 Files'): + topprio(dir) + for file in files: + topprio(dir + '/' + file) + + +with zipfile.ZipFile('Frax.pak', 'w') as zip: + os.chdir('Frax') + for path, _, files in tqdm(list(os.walk('.')), desc='Create Frax Archive'): + for file in files: + file_name = os.path.join(path, file) + zip.write(file_name) +os.chdir('..') +with zipfile.ZipFile('Frax.zip', 'w') as zip: + zip.write('README.txt') + zip.write('Frax.pak') + zip.write('Frax.DUELIST-PACK.pak') + + +shutil.rmtree('Frax', ignore_errors=True) diff --git a/Tools/settings.py b/Tools/settings.py new file mode 100644 index 00000000..d6e4a7a2 --- /dev/null +++ b/Tools/settings.py @@ -0,0 +1,252 @@ +OFFENCE = 'OFFENCE' +DEFENCE = 'DEFENCE' +LUCK = 'LUCK' +LEADERSHIP = 'LEADERSHIP' +MACHINES = 'WAR_MACHINES' +COMBAT = 'TRAINING' +LOGISTICS = 'LOGISTICS' +LEARNING = 'LEARNING' +SORCERY = 'SORCERY' +INVOCATION = 'INVOCATION' +STAMINA = 'EXPERT_TRAINER' +RUSH = 'WARCRY_LEARNING' +FAITH = 'SHATTER_DARK_MAGIC' +SUMMON = 'SUMMONING_MAGIC' +CHAOS = 'DESTRUCTIVE_MAGIC' +DARK = 'DARK_MAGIC' +LIGHT = 'LIGHT_MAGIC' +GATING = 'GATING' +NECROMANCY = 'NECROMANCY' +AVENGER = 'AVENGER' +ARTIFICIER = 'ARTIFICIER' +RUNELORE = 'RUNELORE' +RAGE = 'DEMONIC_RAGE' +VOICE = 'VOICE' + +SKILLS = { + OFFENCE: ( 'FAST_AND_FURIOUS', 'FRENZY', 'TACTICS', 'CHILLING_STEEL', 'OFFENSIVE_FORMATION', 'ARCHERY' ), + DEFENCE: ( 'DEFENSIVE_FORMATION', 'HOLD_GROUND', 'LAST_STAND', 'EVASION', 'PROTECTION', 'SPELLPROOF_BONES' ), + LUCK: ( 'ELVEN_LUCK', 'LUCKY_STRIKE', 'DEAD_LUCK', 'DARK_REVELATION', 'CHAOTIC_SPELLS', 'LUCKY_SPELLS' ), + STAMINA: ( 'TOUGHNESS', 'PREPARATION', 'RESISTANCE', 'DWARVEN_LUCK', 'POWER_OF_STONE', 'BODYBUILDING' ), + RUSH: ( 'POWER_OF_HASTE', 'TELEPORT_ASSAULT', 'SNATCH', 'DEATH_TREAD', 'RUNIC_MACHINES' , 'WILDFIRE'), + LOGISTICS: ( 'DISGUISE_AND_RECKON', 'REMOTE_CONTROL', 'PATHFINDING', 'NAVIGATION', 'GRAIL_VISION', 'ESTATES' ), + + FAITH: ( 'DETAIN_SUMMONING', 'BARBARIAN_FOG_VEIL', 'DETAIN_DESTRUCTIVE', 'BARBARIAN_ANCIENT_SMITHY', 'DETAIN_LIGHT', 'BARBARIAN_STORM_WIND', 'DETAIN_DARK', 'BARBARIAN_SOIL_BURN' ), + MACHINES: ( 'BALLISTA', 'TRIPLE_BALLISTA', 'FIRST_AID', 'LAST_AID', 'CATAPULT', 'TRIPLE_CATAPULT' ), + LEARNING: ( 'SCOUTING', 'QUICKNESS_OF_MIND', 'SCHOLAR', 'MENTORING', 'INTELLIGENCE', 'COUNTERSPELL' ), + + COMBAT: ( 'HOLY_CHARGE', 'CRITICAL_STRIKE', 'STUNNING_BLOW', 'POWERFULL_BLOW','DEMONIC_STRIKE', 'BARBARIAN_WEAKENING_STRIKE' ), + LEADERSHIP: ( 'RECRUITMENT', 'DIPLOMACY', 'ENCOURAGE', 'PRAYER', 'RAISE_ARCHERS', 'ROAD_HOME' ), + + SORCERY: ( 'MAGIC_BOND', 'ELITE_CASTERS', 'WISDOM', 'EAGLE_EYE', 'DARK_RITUAL', 'PAYBACK' ), + INVOCATION: ( 'WEAKENING_STRIKE', 'DISTRACT', 'ARCANE_TRAINING', 'EMPOWERED_SPELLS', 'CONSUME_CORPSE', 'EXPLODING_CORPSES'), + + #'SHATTER_LIGHT_MAGIC': ( 'DEFENSIVE_FORMATION', 'EVASION', 'PROTECTION', 'SPELLPROOF_BONES', 'TOUGHNESS', 'HOLDGROUND' ), + SUMMON: ( 'ELEMENTAL_BALANCE', 'FOG_VEIL' , 'SUN_FIRE', 'FIRE_AFFINITY', 'MASTER_OF_QUAKES', 'SHAKE_GROUND'), + CHAOS: ( 'DEADLY_COLD', 'MASTER_OF_ICE', 'MASTER_OF_FIRE', 'SET_AFIRE', 'ANCIENT_SMITHY', 'MASTER_OF_LIGHTNINGS' ), + DARK: ( 'MASTER_OF_SICKNESS', 'SPIRIT_LINK', 'PARIAH', 'MASTER_OF_MIND', 'MASTER_OF_CURSES', 'SOIL_BURN' ), + LIGHT: ( 'MASTER_OF_ABJURATION', 'ETERNAL_LIGHT', 'TWILIGHT', 'MASTER_OF_WRATH', 'MASTER_OF_BLESSING', 'GUARDIAN_ANGEL'), + + GATING: ( 'SPOILS_OF_WAR', 'PATH_OF_WAR', 'GATING_MASTERY', 'CRITICAL_GATING', 'DEMONIC_FIRE', 'QUICK_GATING' ), + NECROMANCY: ( 'DEATH_SCREAM', 'SHRUG_DARKNESS', 'CHILLING_BONES', 'HERALD_OF_DEATH', 'NO_REST_FOR_THE_WICKED', 'LORD_OF_UNDEAD' ), # 'HAUNT_MINE' + AVENGER: ( 'FOREST_RAGE', 'FOREST_GUARD_EMBLEM', 'IMBUE_ARROW', 'IMBUE_BALLISTA', 'SNIPE_DEAD', 'MULTISHOT' ), + ARTIFICIER: ( 'ACADEMY_AWARD', 'SUPRESS_LIGHT', 'MELT_ARTIFACT', 'MAGIC_MIRROR', 'ARTIFICIAL_GLORY', 'MARCH_OF_THE_MACHINES' ), + RUNELORE: ( 'DEMONIC_FLAME', 'RUNIC_ATTUNEMENT', 'FINE_RUNE', 'TAP_RUNES', 'FORTUNATE_ADVENTURER', 'STRONG_RUNE'), + RAGE: ( 'POWER_OF_BLOOD', 'MIGHT_OVER_MAGIC', 'BATTLE_ELATION', 'MEMORY_OF_OUR_BLOOD', 'GOBLIN_SUPPORT', 'DEFEND_US_ALL' ), + + VOICE: ( 'MIGHTY_VOICE', 'VOICE_OF_RAGE', 'BARBARIAN_MYSTICISM', 'BARBARIAN_DISTRACT', 'VOICE_TRAINING', 'BARBARIAN_ELITE_CASTERS' ), +} + +ULTIMATES = { + # STORM_WIND, MAGIC_CUSHION, UNSUMMON, + OFFENCE: 'WEAKEN_DESTRUCTIVE', # DragonForm - 2 Dragons # + DEFENCE: 'SHATTER_SUMMONING_MAGIC', # Benedicted - Visit Monastery + LUCK: 'ABSOLUTE_LUCK', # Absolute Protection - 2 Armors + STAMINA: 'CORRUPT_DARK', # High Ground - 2 Boots + RUSH: 'EMPATHY', # Dodge - 2 INI items + LOGISTICS: 'CORRUPT_DESTRUCTIVE', # Charge & Governor - 2 Boots + + FAITH: 'ABSOLUTE_PROTECTION', # Join - 2 Saint # + MACHINES: 'WEAKEN_SUMMONING',#'RUNELORE', # Steroids - 2 Dragons + LEARNING: 'ABSOLUTE_WIZARDY', # Spells - 2 Books + + COMBAT: 'ABSOLUTE_CHARGE', # Anti Magic - 2 resists + LEADERSHIP: 'RETRIBUTION', # Empathy - 2 Lions + + SORCERY: 'MYSTICISM', # Hexing - 2 staffs + INVOCATION: 'WEAKEN_DARK', # Vampirism - 2 Necro + + SUMMON: 'MASTER_OF_CREATURES', + CHAOS: 'SHATTER_DESTRUCTIVE_MAGIC', + DARK: 'SHATTER_LIGHT_MAGIC', + LIGHT: 'RUNIC_ARMOR', + + GATING: 'WEAKEN_LIGHT', # Instant + NECROMANCY: 'WEAKEN_LIGHT', # Horror + AVENGER: 'WEAKEN_LIGHT', # CUNNING_OF_THE_WOODS + ARTIFICIER: 'WEAKEN_LIGHT', + RUNELORE: 'WEAKEN_LIGHT', + + VOICE: 'WEAKEN_DARK', + + RAGE: 'ABSOLUTE_RAGE', + + 'ABSOLUTE_GATING': 'ABSOLUTE_GATING', + 'ABSOLUTE_FEAR': 'ABSOLUTE_FEAR', +} + + +MIGHT = [COMBAT, LEADERSHIP, MACHINES] +MAGE1 = [SORCERY, INVOCATION, MACHINES] +MAGE2 = [SORCERY, INVOCATION, CHAOS] +def BASIC(replace): + BASIC = [OFFENCE, DEFENCE, LUCK, STAMINA, RUSH, LOGISTICS] + [FAITH, LEARNING] + return [replace[s] if s in replace else s for s in BASIC] + +HEROES = { + 'KNIGHT': ('H', 1, (40,25,25), OFFENCE , BASIC({}) + [COMBAT, INVOCATION, MACHINES, DARK]), # RENEGADE + 'RANGER': ('H', 2, (30,40,15), LIGHT , BASIC({}) + MIGHT + [LIGHT]), # KNIGHT + 'HERETIC': ('H', 3, (25,10,40), LEARNING , BASIC({STAMINA:LIGHT}) + MAGE2 + [DARK, SUMMON]), # HERETIC + 'WIZARD': ('I', 1, (50,25,10), COMBAT , BASIC({DEFENCE: DARK}) + MIGHT + [GATING]), # DEMON LORD + 'DEMON_LORD': ('I', 2, (35,15,30), GATING , BASIC({OFFENCE: DARK}) + MAGE1 + [GATING, CHAOS]), # GATEKEEPER + 'SORCERER': ('I', 3, (15,10,45), SORCERY , BASIC({STAMINA: DARK}) + MAGE2 + [GATING, SUMMON]), # SORCERER + 'RUNEMAGE': ('N', 1, (35,35,20), RUSH , BASIC({}) + [COMBAT, INVOCATION, DARK, NECROMANCY]), # DEATH KNIGHT + 'NECROMANCERA': ('N', 2, (15,25,35), NECROMANCY , BASIC({}) + MAGE2 + [NECROMANCY, DARK]), # NECROMANCER + 'REAVER': ('N', 3, (10,15,50), LOGISTICS , BASIC({RUSH: DARK}) + MAGE2 + [NECROMANCY, SUMMON]), # NETHERMAGE + 'BEASTMASTER': ('D', 1, (40,30,15), CHAOS , BASIC({}) + MIGHT + [CHAOS]), # OVERLORD + 'SEER': ('D', 2, (30,10,40), LUCK , BASIC({STAMINA: DARK}) + MAGE1 + [NECROMANCY, CHAOS]), # TRICKSTER + 'WARLOCK': ('D', 3, (15,10,50), INVOCATION , BASIC({OFFENCE: DARK}) + MAGE2 + [NECROMANCY, SUMMON]), # WARLOCK + 'RANGERA': ('S', 1, (45,30,10), AVENGER , BASIC({STAMINA: LIGHT}) + MIGHT + [AVENGER]), # RANGER + 'WARDEN': ('S', 2, (35,25,15), AVENGER , BASIC({RUSH: DARK}) + MIGHT + [AVENGER, CHAOS]), # AVENGER + 'ENCHANTER': ('S', 3, (10,20,40), DEFENCE , BASIC({}) + MAGE2 + [LIGHT, SUMMON]), # DRUID + 'GUILDMASTER': ('A', 1, (35,25,10), LEADERSHIP , BASIC({LUCK: LIGHT}) + [DARK, LEADERSHIP, MACHINES, ARTIFICIER]), # ENCHANTER + 'ELEMENTALIST': ('A', 2, ( 5,35,30), ARTIFICIER , BASIC({OFFENCE: CHAOS}) + MAGE1 + [ARTIFICIER, SUMMON]), # CONJURER + 'WIZARDA': ('A', 3, ( 5,15,40), SORCERY , BASIC({FAITH: DARK}) + MAGE2 + [ARTIFICIER, SUMMON]), # WIZARD + 'NECROMANCER': ('F', 1, (35,45,10), MACHINES , BASIC({LEARNING: LIGHT}) + MIGHT + [RUNELORE]), # ENGINEER + 'FLAMEKEEPERA': ('F', 2, (30,20,30), RUNELORE , BASIC({LEARNING: DARK}) + MAGE1 + [RUNELORE, CHAOS]), # FLAMEKEEPER + 'RUNEMAGEA': ('F', 3, (10,15,45), STAMINA , BASIC({LUCK: LIGHT}) + MAGE2 + [RUNELORE, SUMMON]), # RUNEMAGE + 'BARBARIAN': ('B', 1, (50,35, 0), RAGE , BASIC({RUSH: VOICE}) + MIGHT + [RAGE]), # CHIEFTAN + 'SHAMAN': ('B', 2, (20,20,30), DARK , BASIC({RUSH: DARK}) + MIGHT + [RAGE, INVOCATION]), # SHAMAN + 'WARLOCKB': ('B', 3, (20,10,40), FAITH , BASIC({LUCK: LIGHT}) + MAGE2 + [NECROMANCY, SUMMON]), # WITCH +} + +DUELS = { + 'AcademyPreset1': ('A', LIGHT, {LIGHT:(0,2), LEARNING:(0,2), ARTIFICIER:(1,2), LEADERSHIP:(1,0), DEFENCE:(1,2), RUSH:(0,1)}), + 'AcademyPreset2': ('A', GATING, {RUSH:(0,1), LEARNING:(0,2), SORCERY:(0,2), DEFENCE:(1,2), ARTIFICIER:(1,2), STAMINA:(0,2)}), + 'AcademyPreset3': ('A', LUCK, {CHAOS:(0,2), LEARNING:(0,2), SORCERY:(0,2), DEFENCE:(1,2), INVOCATION:(0,1), STAMINA:(0,1)}), + 'AdvMapHero1': ('H', RUSH, {DARK:(0,2), LEADERSHIP:(1,0), COMBAT:(1,0), RUSH:(0,1), DEFENCE:(1,2), OFFENCE:(2,0)}), + 'AdvMapHero2': ('H', GATING, {LIGHT:(0,2), LEARNING:(0,2), COMBAT:(1,0), LEADERSHIP:(1,0), DEFENCE:(1,2), RUSH:(0,1)}), + 'AdvMapHero3': ('H', OFFENCE, {DARK:(0,2), LEARNING:(0,2), SORCERY:(0,2), STAMINA:(0,1), OFFENCE:(2,0), RUSH:(0,1)}), + 'DungeonPreset1': ('D', COMBAT, {DARK:(0,2), COMBAT:(1,0), LEADERSHIP:(1,0), DEFENCE:(1,2), OFFENCE:(2,0), RUSH:(0,1)}), + 'DungeonPreset2': ('D', GATING, {CHAOS:(0,2), LEARNING:(0,2), SORCERY:(0,2), LUCK:(0,1), DEFENCE:(1,2), STAMINA:(0,1)}), + 'DungeonPreset3': ('D', CHAOS, {CHAOS:(0,2), SORCERY:(0,2), INVOCATION:(0,1), DEFENCE:(1,2), OFFENCE:(2,0), STAMINA:(0,1)}), + 'InfernoPreset1': ('I', GATING, {DARK:(0,2), LEARNING:(0,2), GATING:(2,1), LEADERSHIP:(1,0), COMBAT:(2,0), STAMINA:(0,1)}), + 'InfernoPreset2': ('I', 'ABSOLUTE_GATING', {SUMMON:(1,0), GATING:(2,1), SORCERY:(0,2),DEFENCE:(1,2), RUSH:(0,1), OFFENCE:(1,0)}), + 'InfernoPreset3': ('I', DARK, {CHAOS:(0,2), LEARNING:(0,2), SORCERY:(0,2), STAMINA:(0,1), GATING:(2,1), RUSH:(0,1)}), + 'NecropolisPreset1': ('N', GATING, {DARK:(0,2), LEARNING:(1,0), DEFENCE:(1,2), FAITH:(3,2), RUSH:(0,1), OFFENCE:(1,0)}), + 'NecropolisPreset2': ('N', 'ABSOLUTE_FEAR', {DARK:(0,2), NECROMANCY:(0,2), SORCERY:(0,2), OFFENCE:(1,0), RUSH:(0,1), STAMINA:(0,1)}), + 'NecropolisPreset3': ('N', INVOCATION, {DARK:(0,2), SORCERY:(0,2), RUSH:(0,1), INVOCATION:(2,1), OFFENCE:(2,0), STAMINA:(0,1)}), + 'RuneMagePreset1': ('F', MACHINES, {LIGHT:(0,2), RUNELORE:(0,1), LEADERSHIP:(1,0), DEFENCE:(1,2), FAITH:(2,3), RUSH:(0,1)}), + 'RuneMagePreset2': ('F', GATING, {LIGHT:(0,2), SORCERY:(0,2), DARK:(1,0), DEFENCE:(1,2), RUNELORE:(0,1), STAMINA:(0,1)}), + 'RuneMagePreset3': ('F', FAITH, {CHAOS:(0,2), LEARNING:(0,2), SORCERY:(0,2), RUNELORE:(0,1), DEFENCE:(1,2), STAMINA:(0,1)}), + 'StrongHoldPreset1': ('B', LEADERSHIP, {VOICE: (0,2), LEARNING:(0,2), RAGE:(1,0), LEADERSHIP:(1,0), DEFENCE:(1,2), FAITH:(2,3)}), + 'StrongHoldPreset2': ('B', RAGE, {DARK:(0,2), COMBAT:(1,0), LEADERSHIP:(1,0), OFFENCE:(1,2), RAGE:(0,1), STAMINA:(0,1)}), + 'StrongHoldPreset3': ('B', SUMMON, {SUMMON:(1,0), SORCERY:(0,2), RUSH:(0,1), OFFENCE:(1,2), FAITH:(1,2), STAMINA:(0,1)}), + 'SylvanPreset1': ('S', LEARNING, {OFFENCE:(0,2), LEARNING:(0,2), AVENGER:(2,1), LEADERSHIP:(1,0), DEFENCE:(1,2), RUSH:(0,1)}), + 'SylvanPreset2': ('S', GATING, {DARK:(0,2), LEARNING:(0,2), AVENGER:(2,1), LEADERSHIP:(1,0), COMBAT:(1,2), STAMINA:(0,1)}), + 'SylvanPreset3': ('S', SORCERY, {SUMMON:(1,0), LEARNING:(0,2), SORCERY:(0,2), FAITH:(0,1), DEFENCE:(1,2), OFFENCE:(1,0)}), + # DEFENCE +} + +SPELLS = { + LIGHT:['MAGIC_ARROW','BLESS','STONESKIN','BLOODLUST','HASTE','DEFLECT_ARROWS','DISPEL','REGENERATION','HOLY_WORD','DIVINE_VENGEANCE','RESURRECT','CELESTIAL_SHIELD','BLIND'], + DARK: ['PLAGUE','CURSE','WEAKNESS','SLOW','DISRUPTING_RAY','ANIMATE_DEAD','SORROW','TELEPORT','PHANTOM','UNHOLY_WORD','BERSERK','VAMPIRISM'], + SUMMON : ['WASP_SWARM','LAND_MINE','ARCANE_CRYSTAL','EARTHQUAKE','MAGIC_FIST','ANTI_MAGIC','BLADE_BARRIER','SUMMON_HIVE','FIREWALL','HYPNOTIZE','CONJURE_PHOENIX'], + CHAOS: ['STONE_SPIKES','ICE_BOLT','METEOR_SHOWER','LIGHTNING_BOLT','FIREBALL','FROST_RING','ARMAGEDDON','IMPLOSION','DEEP_FREEZE','CHAIN_LIGHTNING'], + RUNELORE: ['RUNE_OF_REVIVE', 'RUNE_OF_MAGIC_CONTROL', 'RUNE_OF_EXORCISM', 'RUNE_OF_STUNNING', 'RUNE_OF_DRAGONFORM'], + VOICE: ['WARCRY_RALLING_CRY','WARCRY_CALL_OF_BLOOD','WARCRY_WORD_OF_THE_CHIEF','WARCRY_FEAR_MY_ROAR','WARCRY_BATTLECRY','WARCRY_SHOUT_OF_MANY'], +} + +# class SPECS: + # ARTISAN + # DISRUPTER + # FEATHER_MAGE + # INEXHAUSTIBLE + # MACHINIST + # MASTER_OF_ELEMENTS + # MENTOR + # RADIANT + # TIME_SHIFTER + # WEILDER_OF_FIRE + # + # DARK_ACOLYTE + # EVASIVE + # LIZARD_BREEDER + # MATRON_SALVO + # POISONER + # POWER_BARGAIN + # PRUDENT + # SAVAGE + # SEDUCER + # SLAVEHODER + # + # AXE_MASTER + # BORDER_GUARD + # COURTIER + # DEFENDER + # ECONOMST + # MAGISTER + # MOUNTAIN_KING + # RESEARCHER + # RIDER + # SACRED_HAMMER + # STORM_CALLER + # + # ARCHER_COMMANDER + # ARTILLERYMAN + # CHESS + # EXPEDITER + # GRIFFON_COMMANDER + # INFANTRY_COMMANDER + # JOUSTER + # SQUIRE + # SUZERAIN + # WANDERER + # + # BEATER + # BOMBARDIER + # BREEDER + # FLAGBEARER_OF_DARKNESS + # FURIOUS + # GATE_KEEPER + # HYPNOTIST + # IMPREGNABLE + # TEMPTRESS + # + # AVATAR_OF_DEATH + # EMPIRIC + # MALEDICTOR + # MIND_CLEANER + # REANIMATOR + # SOULHUNTER + # VAMPIRE_PRINCESS + # ZOMBIE_LEADER + # + # BLADE_MASTER + # CALL_OF_THE_WASP + # ELVEN_FURY + # FOREST_GUARDIAN + # HUNTER + # TALENTED_WARRIOR + # UNICORN_TRAINER + # WAYLAYER + # + # BLOODDRINKER + # CENTAURMISTRESS + # GOBLINKING + # GRIMFIGHTER + # OFFENDER + # ORCELDER + # RASH + # WARLEADER + # WYVERNTAMER \ No newline at end of file diff --git a/Tools/skill_start.py b/Tools/skill_start.py new file mode 100644 index 00000000..a5d63dac --- /dev/null +++ b/Tools/skill_start.py @@ -0,0 +1,42 @@ +import sys +import os +from xdb import XDB +from skillwheel import camel_case + + +masteries = {'': '', 'MASTERY_BASIC':'', 'MASTERY_ADVANCED':'Advanced ', 'MASTERY_EXPERT':'Expert '} +table = { + 'Voice': 'Shouting', + 'Artificier': 'Artificer', + 'Invocation': 'Occultism', + 'Training': 'Combat', + 'Bodybuilding': 'Strength', + 'Warcry Learning': 'Rush', + 'Shatter Dark Magic': 'Curses', + 'Learning': 'Englightment', +} +def skillname(name, mastery=''): + name = ' '.join(word.capitalize() for word in name[11:].split('_')) + if name in table: + name = table[name] + return masteries[mastery] + name + +names = [] +def start_skills(): + for dirname, _, filenames in os.walk('MapObjects/'): + for filename in filenames: + try: + data = XDB.load(dirname + '/' + filename) + perk = [skillname(perk.txt) for perk in data['Editable']['perkIDs']] + skil = skillname(data['Editable']['skills'][0]['SkillID'].txt, data['Editable']['skills'][0]['Mastery'].txt) + name = data['SpecializationNameFileRef'].atr['href'][1:] + if name not in names: + names.append(name) + open(name, 'a', encoding='utf-16').write(f'Starts with {skil}.') + + except Exception as e: + print(filename) + print(e) + + +start_skills() \ No newline at end of file diff --git a/Tools/skillwheel.py b/Tools/skillwheel.py new file mode 100644 index 00000000..e084368f --- /dev/null +++ b/Tools/skillwheel.py @@ -0,0 +1,283 @@ +import shutil +from collections import defaultdict +from fileinput import filename +from os import utime, walk +from xdb import XDB +from math import sin, cos, radians +import traceback +from settings import * +from utilities import * +from tqdm import tqdm + + +def camel_case(name): + return ''.join(word.capitalize() for word in name.split('_')) + +def name(skill): + return 'HERO_SKILL_'+skill + +def dependency(skill, hero): + deps = XDB.new('dependenciesIDs',[XDB.new('Item', 'HERO_SKILL_'+skill)]) + return XDB.new('Item', [XDB.new('Class', 'HERO_CLASS_'+hero), deps]) + +def is128x128(href): + any_of, none_of = ['H5A2/', 'H5A1/', 'Added/'], [ + 'Bodybuilding', 'AgonizingStrike', 'Basic_Voice', + 'Advanced_Voice', 'Expert_Voice', 'Our_Blood', + 'MightOverMagic', 'GatingMastery', 'Shatter', 'Detain', + 'Runic_Machines', 'CursedGround', 'Path_of_War', + 'Rage_of_the_Forest', + ] + return any(x in href for x in any_of) and not any(x in href for x in none_of) + + +def skills(): + root = XDB.load('GameMechanics/RefTables/Skills.xdb') + data = {s['ID'].txt: s for s in root['objects']} + + + for skillname, skill in data.items(): + if skillname[11:] not in ['ELEMENTAL_VISION', 'ABSOLUTE_CHAINS']: + skill['obj']['SkillPrerequisites'] = [] + skill['obj']['SkillType'].txt = 'SKILLTYPE_DISABLED' + + for skill, perks in SKILLS.items(): + data[name(skill)]['obj']['SkillType'].txt = 'SKILLTYPE_SKILL' + for perk1, perk2 in zip(perks[::2], perks[1::2]): + deps2 = [dependency(perk1, hero) for hero in HEROES] + perk1, perk2 = data[name(perk1)], data[name(perk2)] + perk1['obj']['SkillType'].txt = 'SKILLTYPE_STANDART_PERK' + perk2['obj']['SkillType'].txt = 'SKILLTYPE_SPECIAL_PERK' + perk1['obj']['BasicSkillID'].txt = name(skill) + perk2['obj']['BasicSkillID'].txt = name(skill) + perk1['obj']['SkillPrerequisites'] = [] + perk2['obj']['SkillPrerequisites'] = deps2 + + # TODO Ultimate Dependencies + + + root.save('Frax/GameMechanics/RefTables/Skills.xdb') + +def duels(): + for hero, (tag, ult, skills) in DUELS.items(): + path = f'Frax/Maps/DuelMode/Heroes/{hero}.xdb' + root = XDB.load(path) + + skillnames = [ULTIMATES[ult]] + list(skills) + perknames = [(SKILLS[s][2*p[0]], SKILLS[s][2*p[0]+1], SKILLS[s][2*p[1]]) for s, p in skills.items()] + root['Editable']['skills'] = [XDB.new('Item', {'Mastery':'MASTERY_EXPERT', 'SkillID': name(s)}) for s in skillnames] + root['Editable']['perkIDs'] = [XDB.new('Item', name(p)) for ps in perknames for p in ps] + root['Editable']['spellIDs'] = [XDB.new('Item', 'SPELL_'+s) for sk in skills if sk in SPELLS for s in SPELLS[sk]] + if ult == LEARNING: + root['Editable']['spellIDs'] = [XDB.new('Item', 'SPELL_'+s) for ss in SPELLS.values() for s in ss] + + stats = next(h[2] for h in HEROES.values() if tag+hero[-1:] == h[0]+str(h[1])) + root['Editable']['Offence'].int = int(0.5 * stats[0]) + root['Editable']['Defence'].int = int(0.5 * stats[1]) + root['Editable']['Spellpower'].int = int(0.5 * stats[2]) + root['Editable']['Knowledge'].int = int(0.5 * (100 - stats[0] - stats[1] - stats[2])) + + + root['PrimarySkillMastery'].txt = 'MASTERY_EXPERT' + + root.save(path) + + + +def lua(): + file = open('scripts/Frax/Skills.lua', 'w') + + file.write(f'SKILL_STAMINA = SKILL_{STAMINA}\n') + file.write(f'SKILL_RUSH = SKILL_{RUSH}\n') + file.write(f'SKILL_FAITH = SKILL_{FAITH}\n\n') + + file.write('Fx_Skills = {\n') + for s in SKILLS: + file.write(f' SKILL_{s},\n') + file.write('}\n\n') + + file.write('Fx_Perks = {\n') + for s, ps in SKILLS.items(): + file.write(f' [SKILL_{s}] = {{ {", ".join("SKILL_"+p for p in ps)} }},\n') + file.write('}\n\n') + + file.write('Fx_Ultimates = {\n') + for s, u in ULTIMATES.items(): + file.write(f' [SKILL_{s}] = SKILL_{u},\n') + file.write('}\n\n') + + file.write('Fx_UltimateText = {\n') + for s, (name, text) in ultimate_text.items(): + file.write(f' [SKILL_{s}] = {{ "{name}", "{text}" }},\n') + file.write('}\n\n') + file.close() + shutil.copy('scripts/Frax/Skills.lua', 'Frax/scripts/Frax/') + + + + +def classes(): + root = XDB.load('GameMechanics/RefTables/HeroClass.xdb') + + for data in root['objects']: + hero = data['ID'].txt[11:] + if hero == 'NONE': continue + hero = HEROES[hero] + data['obj']['SkillsProbs'] = [XDB.new('Item', {'SkillID': name(s), 'Prob': '5'}) for s in hero[4]] + data['obj']['AttributeProbs'] = { + 'OffenceProb': hero[2][0], + 'DefenceProb': hero[2][1], + 'SpellpowerProb': hero[2][2], + 'KnowledgeProb': 100 - hero[2][0] - hero[2][1] - hero[2][2], + } + + root.save('Frax/GameMechanics/RefTables/HeroClass.xdb') + + + for dirname, _, names in walk('Frax/MapObjects/'): + for filename in names: + if filename[:-4] != '.xdb': continue + path = dirname + '/' + filename + data = XDB.load(path) + if data.tag != 'AdvMapHeroShared': continue + + clss = data['Class'].txt[11:] + data['PrimarySkill']['Mastery'].txt = 'MASTERY_BASIC' + data['PrimarySkill']['SkillID'].txt = name(HEROES[clss][3]) + + data.save() + + +def swname(name): + name = camel_case(name).replace('Magic', '').replace('ExpertTrainer', 'ShatterSummoning').replace('WarcryLearning','ShatterDestructive') + alias = { + 'Offence': 'Offense', + 'Defence': 'Defense', + 'Training': 'Combat', + 'Learning': 'Enlightenment', + 'DemonicRage': 'Bloodrage', + 'Voice': 'Shout', + 'Invocation': 'Occultism', + 'Artificier': 'Artificer', + 'Voice': 'Shouting', + } + return name if name not in alias else alias[name] + +ultimate_text = {} +SW = 'UI/Doc/SkillWheel' +def skillwheel(): + root = XDB.load('./GameMechanics/RefTables/Skills.xdb') + root = {s['ID'].txt: s for s in root['objects']} + + # BUTTON TEMPLATES + pb = XDB.load(f'Tools/Templates/Skillwheel/PerkButtonX.(WindowMSButtonShared).xdb') + pd = XDB.load(f'Tools/Templates/Skillwheel/PerkDescX.(WindowTextViewShared).xdb') + pp = XDB.load(f'Tools/Templates/Skillwheel/PerkPageX.(WindowSimple).xdb') + pg = XDB.load(f'Tools/Templates/Skillwheel/PerkPageX.(WindowSimpleShared).xdb') + so = XDB.load(f'Tools/Templates/Skillwheel/SwitchOnX.(UISSendUIMessage).xdb') + for skill in (swname(s) for s in SKILLS): + for i in range(10): + for tag in ('Normal', 'MouseOver', 'Pushed', 'Disabled', 'RightButtonDown'): + pb['VisualStates'][0][tag]['Background'].atr['href'] = f'{i}.(BackgroundSimpleScallingTexture).xdb#xpointer(/BackgroundSimpleScallingTexture)' + pb['VisualStates'][0]['MouseOver']['OnEnterSubState']['Commands'][0].atr['href'] = f'SwitchOn{i}.(UISSendUIMessage).xdb#xpointer(/UISSendUIMessage)' + pd['Children'][0].atr['href'] = f'PerkName{i}.(WindowTextView).xdb#xpointer(/WindowTextView)' + pp['Shared'].atr['href'] = f'PerkPage{i}.(WindowSimpleShared).xdb#xpointer(/WindowSimpleShared)' + pp['Name'].txt = f'{swname(skill)}_Perk{i}' + pg['Children'][0].atr['href'] = f'PerkDesc{i}.(WindowTextView).xdb#xpointer(/WindowTextView)' + so['szParam'][0].txt = f'{swname(skill)}_Perk{i}' + pb.save(f'Frax/{SW}/Skills/{skill}/PerkButton{i}.(WindowMSButtonShared).xdb') + pd.save(f'Frax/{SW}/Skills/{skill}/PerkDesc{i}.(WindowTextViewShared).xdb') + pp.save(f'Frax/{SW}/Skills/{skill}/PerkPage{i}.(WindowSimple).xdb') + pg.save(f'Frax/{SW}/Skills/{skill}/PerkPage{i}.(WindowSimpleShared).xdb') + so.save(f'Frax/{SW}/Skills/{skill}/SwitchOn{i}.(UISSendUIMessage).xdb') + + + + # BUTTONS POSITIONS + pb = XDB.load(f'Tools/Templates/Skillwheel/PerkButtonX.(WindowMSButton).xdb') + for skill in (swname(s) for s in SKILLS): + for i in range(12): + for j, (angle, dist) in enumerate(((20,190), (30,350), (20,350), (10,350), (30,300), (20,300), (10,300), (30,250), (20,250), (10,250))): + dist, angle = dist - 10, radians(angle - 5 + 360/12 * i) + pb['Shared'].atr['href'] = f'/{SW}/Skills/{skill}/PerkButton{j}.(WindowMSButtonShared).xdb#xpointer(/WindowMSButtonShared)' + pb['Placement']['Position']['First']['x'].int = int(612 + sin(angle) * dist) + pb['Placement']['Position']['First']['y'].int = int(366 + cos(angle) * dist) + pb.save(f'Frax/{SW}/Skills/{skill}/P{i+1}/PerkButton{j}.(WindowMSButton).xdb') + for i in (13,14): + for j in range(10): + b = XDB.load(f'Tools/Templates/Skillwheel/P{i}/PerkButton{j}.(WindowMSButton).xdb') + b['Shared'].atr['href'] = f'/{SW}/Skills/{skill}/PerkButton{j}.(WindowMSButtonShared).xdb#xpointer(/WindowMSButtonShared)' + b.save(f'Frax/{SW}/Skills/{skill}/P{i}/PerkButton{j}.(WindowMSButton).xdb') + + # CLASSES + for id, ix, probs, skill, _ in HEROES.values(): + path = f'Tools/Templates/Skillwheel/Icon.(BackgroundSimpleScallingTexture).xdb' + data = XDB.load(path) + + href = root[name(skill)]['obj']['Texture'][3].atr['href'] + size = '128' if is128x128(href) else '64' + + data['Texture'].atr['href'] = root[name(skill)]['obj']['Texture'][3].atr['href'] + data['Size']['x'].txt = size + data['Size']['y'].txt = size + + data.save(f'Frax/{SW}/Classes/{id}{ix}/Icon.(BackgroundSimpleScallingTexture).xdb') + + for i, namE in enumerate(('Attack', 'Defense', 'Spellpower', 'Knowledge')): + prob = probs[i] if i < 3 else 100 - probs[0] - probs[1] - probs[2] + write_txt(f'Frax/{SW}/Classes/{id}{ix}/PrimarySkills/Prob_{namE}.txt', f'{prob}
%') + + + # CLASSES SKILL AVAILABILITY + for id, ix, _, _, skills in HEROES.values(): + tree = [f'{swname(s)}/P{i+1}/PerkButton{j}' for i, s in enumerate(skills) for j in range(10)] + tree = [f'/{SW}/Skills/{t}.(WindowMSButton).xdb#xpointer(/WindowMSButton)' for t in tree] + tree = [XDB.new('Item', [], {'href' : t}) for t in tree] + + data = XDB.load(f'Tools/Templates/Skillwheel/Class.(WindowSimpleShared).xdb') + data['Children'] = list(data['Children']) + tree + data.save(f'Frax/{SW}/Wheels/{id}{ix}.(WindowSimpleShared).xdb') + + # SKILL ORDER + pict = XDB.load(f'Tools/Templates/Skillwheel/X.(BackgroundSimpleScallingTexture).xdb') + namE = XDB.load(f'Tools/Templates/Skillwheel/PerkNameX.(WindowTextView).xdb') + desc = XDB.load(f'Tools/Templates/Skillwheel/PerkDescX.(WindowTextView).xdb') + for skill, perks in tqdm(SKILLS.items(), desc='Skillwheel'): + perks = [root[name(p)]['obj'] for p in perks] + perks = [(p['Texture'][1], p['NameFileRef'][0], p['DescriptionFileRef'][0]) for p in perks] + level = root[name(skill)]['obj'] + level = [(level['Texture'][1+i], level['NameFileRef'][i], level['DescriptionFileRef'][i]) for i in range(3)] + ultim = root[name(ULTIMATES[skill])]['obj'] + ultim = [(ultim['Texture'][1], ultim['NameFileRef'][0], ultim['DescriptionFileRef'][0])] if ULTIMATES[skill] != 'NONE' else [] + + ultimate_text[skill] = (ultim[0][1].atr['href'], ultim[0][2].atr['href']) + + # SKILLS + for ix, href in zip((1,2,3,4,7,5,8,6,9,0), (level + perks[:6] + ultim)): + href = [h.atr['href'] for h in href] + path = f'Frax/{SW}/Skills/{swname(skill)}' + + size = '128' if is128x128(href[0]) else '64' + for xy in pict['Size']: + xy.txt = size + pict['Texture'].atr['href'] = href[0] + pict.save(f'{path}/{ix}.(BackgroundSimpleScallingTexture).xdb') + + namE['TextFileRef'].atr['href'] = href[1] + namE.save(f'{path}/PerkName{ix}.(WindowTextView).xdb') + + desc['Shared'].atr['href'] = f'PerkDesc{ix}.(WindowTextViewShared).xdb#xpointer(/WindowTextViewShared)' + desc['TextFileRef'].atr['href'] = href[2][:-3] + 'u.txt' if ix == 0 else href[2] + desc.save(f'{path}/PerkDesc{ix}.(WindowTextView).xdb') + +def main(): + skills() + skillwheel() + classes() + lua() + duels() + +if __name__ == '__main__': + main() + # skillwheel() + # lua() \ No newline at end of file diff --git a/Tools/unit_attack_damage.py b/Tools/unit_attack_damage.py new file mode 100644 index 00000000..72ea2c88 --- /dev/null +++ b/Tools/unit_attack_damage.py @@ -0,0 +1,26 @@ +import sys +import os +from xdb import XDB + +value = [5, 10, 15, 20, 25, 30, 35, 40] + +def scale(path): + for filename in os.listdir(path): + filepath = f'{path}/{filename}' + if os.path.isdir(filepath): scale(filepath) + if filename[-4:] != ".xdb": continue + + data = XDB.load(filepath) + if data.tag != 'Creature': continue + + tier = data['CreatureTier'].int + grow = data['WeeklyGrowth'].int + upgr = data['BaseCreature'].txt != 'CREATURE_UNKNOWN' + powr = (1 + .02*value[tier])**2 / (1 + .02*value[1])**2 * (1 + 0.2 * upgr) + data['AttackSkill'].int = value[tier] + data['DefenceSkill'].int = value[tier] + data['Exp'].int = round(200 / grow * powr) + data['Cost']['Gold'].int = round(1000 / grow * powr) + data.save() + +scale('GameMechanics/Creature') \ No newline at end of file diff --git a/Tools/unit_stat_scale.py b/Tools/unit_stat_scale.py new file mode 100644 index 00000000..dc02993a --- /dev/null +++ b/Tools/unit_stat_scale.py @@ -0,0 +1,21 @@ +import sys +import os +from xml.etree import cElementTree as ET + +path, tag, amount = sys.argv[1], sys.argv[2], float(sys.argv[3]) + +def scale(path): + for filename in os.listdir(path): + filepath = f'{path}/{filename}' + if os.path.isdir(filepath): scale(filepath) + if filename[-4:] != ".xdb": continue + try: + data = ET.parse(filepath) + for t in data.iter(tag): + t.text = str(int(int(t.text)*amount)) + ET.indent(data, '\t') + data.write(filepath, xml_declaration=True, encoding='UTF-8', ) + except Exception as e: + print(e, filepath) + +scale(path) \ No newline at end of file diff --git a/Tools/utilities.py b/Tools/utilities.py new file mode 100644 index 00000000..df4a23aa --- /dev/null +++ b/Tools/utilities.py @@ -0,0 +1,6 @@ +import os + +def write_txt(file, text): + os.makedirs(os.path.dirname(file), exist_ok=True) + with open(file+'.txt', mode='w', encoding='utf-16') as f: + f.write(text) \ No newline at end of file diff --git a/Tools/xdb.py b/Tools/xdb.py new file mode 100644 index 00000000..6e129618 --- /dev/null +++ b/Tools/xdb.py @@ -0,0 +1,77 @@ +from xml.etree import cElementTree as ET +import os + +class XDB: + def __init__(self, tree, path = None) -> None: + self.path = path + self.tree = tree + self.tags = {c.tag: (ix, c) for ix, c in enumerate(tree)} + + @classmethod + def new(Self, tag, content, attributes = None): + tree = ET.Element(tag, attributes or {}) + if type(content) == str: + tree.text = content + elif type(content) == int: + tree.text = str(content) + elif type(content) == dict: + for key, val in content.items(): + if key[0] == '#': + tree.attrib[key[1:]] = val + else: + tree.append(Self.new(key, val).tree) + else: + tree.extend(c.tree for c in content) + return Self(tree) + + @classmethod + def load(Self, path): + try: + return Self(ET.parse(path).getroot(), path) + except: + raise Exception('Error loading: ' + path) + + def save(self, path=None, encoding='UTF-8'): + path = path or self.path + if not os.path.exists(os.path.dirname(path)): + os.makedirs(os.path.dirname(path)) + # ET.indent(self.tree, '\t') # TODO + ET.ElementTree(self.tree).write(path, xml_declaration=True, encoding=encoding) + + @property + def txt(self): return self.tree.text + @txt.setter + def txt(self, txt): self.tree.text = txt + + @property + def int(self): return int(self.tree.text) + @int.setter + def int(self, txt): self.tree.text = str(txt) + + @property + def atr(self): return self.tree.attrib + + @property + def tag(self): return self.tree.tag + + def __getitem__(self, tag): + if type(tag) == int: + return XDB(self.tree[tag]) + else: + return XDB(self.tags[tag][1]) + + def __setitem__(self, tag, value): + index = tag if type(tag) == int else self.tags[tag][0] + value = XDB.new(self.tree[index].tag, value) + self.tags[value.tag] = index, value.tree + self.tree.remove(self.tree[index]) + self.tree.insert(index, value.tree) + + def findall(self, tag): + return (XDB(t) for t in self.tree.iter(tag)) + + def find(self, tag): + return next(self.findall(tag)) + + def __iter__(self): + return (XDB(tree) for tree in self.tree) diff --git a/UI/CombatArena-Heavy/CombatLog/Creatures.txt b/UI/CombatArena-Heavy/CombatLog/Creatures.txt new file mode 100644 index 00000000..ebd226d5 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/Creatures.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/Name.txt b/UI/CombatArena-Heavy/CombatLog/Name.txt new file mode 100644 index 00000000..2903b0b5 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/Name.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/RL1.txt b/UI/CombatArena-Heavy/CombatLog/RL1.txt new file mode 100644 index 00000000..7a05f956 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/RL1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/RL2.txt b/UI/CombatArena-Heavy/CombatLog/RL2.txt new file mode 100644 index 00000000..a1f77ca7 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/RL2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/RL3.txt b/UI/CombatArena-Heavy/CombatLog/RL3.txt new file mode 100644 index 00000000..99fa277e Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/RL3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T11R1.txt b/UI/CombatArena-Heavy/CombatLog/T11R1.txt new file mode 100644 index 00000000..f032f972 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T11R1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T11R2.txt b/UI/CombatArena-Heavy/CombatLog/T11R2.txt new file mode 100644 index 00000000..f69e468d Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T11R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T11R3.txt b/UI/CombatArena-Heavy/CombatLog/T11R3.txt new file mode 100644 index 00000000..1ebfc26f Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T11R3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T12R1.txt b/UI/CombatArena-Heavy/CombatLog/T12R1.txt new file mode 100644 index 00000000..d02dc62f Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T12R1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T12R2.txt b/UI/CombatArena-Heavy/CombatLog/T12R2.txt new file mode 100644 index 00000000..f15e219e Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T12R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T12R3.txt b/UI/CombatArena-Heavy/CombatLog/T12R3.txt new file mode 100644 index 00000000..1ebfc26f Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T12R3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T13R1.txt b/UI/CombatArena-Heavy/CombatLog/T13R1.txt new file mode 100644 index 00000000..d02dc62f Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T13R1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T13R2.txt b/UI/CombatArena-Heavy/CombatLog/T13R2.txt new file mode 100644 index 00000000..ab962469 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T13R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T13R3.txt b/UI/CombatArena-Heavy/CombatLog/T13R3.txt new file mode 100644 index 00000000..1ebfc26f Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T13R3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T1R3.txt b/UI/CombatArena-Heavy/CombatLog/T1R3.txt new file mode 100644 index 00000000..674bfded Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T1R3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T2R1.txt b/UI/CombatArena-Heavy/CombatLog/T2R1.txt new file mode 100644 index 00000000..0c56a614 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T2R1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T2R2.txt b/UI/CombatArena-Heavy/CombatLog/T2R2.txt new file mode 100644 index 00000000..00d28954 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T2R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T2R3.txt b/UI/CombatArena-Heavy/CombatLog/T2R3.txt new file mode 100644 index 00000000..8e155a87 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T2R3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T31R1.txt b/UI/CombatArena-Heavy/CombatLog/T31R1.txt new file mode 100644 index 00000000..075c2b39 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T31R1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T31R2.txt b/UI/CombatArena-Heavy/CombatLog/T31R2.txt new file mode 100644 index 00000000..0c4f2692 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T31R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T31R3.txt b/UI/CombatArena-Heavy/CombatLog/T31R3.txt new file mode 100644 index 00000000..d7e2320f Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T31R3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T32R1.txt b/UI/CombatArena-Heavy/CombatLog/T32R1.txt new file mode 100644 index 00000000..87c201b5 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T32R1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T32R2.txt b/UI/CombatArena-Heavy/CombatLog/T32R2.txt new file mode 100644 index 00000000..0c4f2692 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T32R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T32R3.txt b/UI/CombatArena-Heavy/CombatLog/T32R3.txt new file mode 100644 index 00000000..d7e2320f Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T32R3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T33R1.txt b/UI/CombatArena-Heavy/CombatLog/T33R1.txt new file mode 100644 index 00000000..1eed1de8 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T33R1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T33R2.txt b/UI/CombatArena-Heavy/CombatLog/T33R2.txt new file mode 100644 index 00000000..0c4f2692 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T33R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T33R3.txt b/UI/CombatArena-Heavy/CombatLog/T33R3.txt new file mode 100644 index 00000000..d7e2320f Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T33R3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T41R1.txt b/UI/CombatArena-Heavy/CombatLog/T41R1.txt new file mode 100644 index 00000000..72f32244 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T41R1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T41R2.txt b/UI/CombatArena-Heavy/CombatLog/T41R2.txt new file mode 100644 index 00000000..510ddb59 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T41R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T41R3.txt b/UI/CombatArena-Heavy/CombatLog/T41R3.txt new file mode 100644 index 00000000..04373129 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T41R3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T42R1.txt b/UI/CombatArena-Heavy/CombatLog/T42R1.txt new file mode 100644 index 00000000..7736c249 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T42R1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T42R2.txt b/UI/CombatArena-Heavy/CombatLog/T42R2.txt new file mode 100644 index 00000000..458feb30 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T42R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T42R3.txt b/UI/CombatArena-Heavy/CombatLog/T42R3.txt new file mode 100644 index 00000000..7186a6a3 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T42R3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T43R1.txt b/UI/CombatArena-Heavy/CombatLog/T43R1.txt new file mode 100644 index 00000000..00d28954 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T43R1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T43R2.txt b/UI/CombatArena-Heavy/CombatLog/T43R2.txt new file mode 100644 index 00000000..458feb30 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T43R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T43R3.txt b/UI/CombatArena-Heavy/CombatLog/T43R3.txt new file mode 100644 index 00000000..7186a6a3 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T43R3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T51R2.txt b/UI/CombatArena-Heavy/CombatLog/T51R2.txt new file mode 100644 index 00000000..5e74e608 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T51R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T52R2.txt b/UI/CombatArena-Heavy/CombatLog/T52R2.txt new file mode 100644 index 00000000..5e74e608 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T52R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T53R2.txt b/UI/CombatArena-Heavy/CombatLog/T53R2.txt new file mode 100644 index 00000000..5e74e608 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T53R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T5R1.txt b/UI/CombatArena-Heavy/CombatLog/T5R1.txt new file mode 100644 index 00000000..25d0ac3b Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T5R1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T5R3.txt b/UI/CombatArena-Heavy/CombatLog/T5R3.txt new file mode 100644 index 00000000..8f3217e9 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T5R3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T6R1.txt b/UI/CombatArena-Heavy/CombatLog/T6R1.txt new file mode 100644 index 00000000..8e9c781f Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T6R1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T6R2.txt b/UI/CombatArena-Heavy/CombatLog/T6R2.txt new file mode 100644 index 00000000..8e9c781f Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T6R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T6R3.txt b/UI/CombatArena-Heavy/CombatLog/T6R3.txt new file mode 100644 index 00000000..8e9c781f Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T6R3.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T7R1.txt b/UI/CombatArena-Heavy/CombatLog/T7R1.txt new file mode 100644 index 00000000..6cea2f8e Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T7R1.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T7R2.txt b/UI/CombatArena-Heavy/CombatLog/T7R2.txt new file mode 100644 index 00000000..784e3be9 Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T7R2.txt differ diff --git a/UI/CombatArena-Heavy/CombatLog/T7R3.txt b/UI/CombatArena-Heavy/CombatLog/T7R3.txt new file mode 100644 index 00000000..059e7a5b Binary files /dev/null and b/UI/CombatArena-Heavy/CombatLog/T7R3.txt differ diff --git a/UI/Doc/SkillWheel/Background_Barb.(Texture).dds b/UI/Doc/SkillWheel/Background_Barb.(Texture).dds new file mode 100644 index 00000000..438a46be Binary files /dev/null and b/UI/Doc/SkillWheel/Background_Barb.(Texture).dds differ diff --git a/UI/Doc/SkillWheel/Background_Barb2.(BackgroundSimpleTexture).xdb b/UI/Doc/SkillWheel/Background_Barb2.(BackgroundSimpleTexture).xdb new file mode 100644 index 00000000..e2b62731 --- /dev/null +++ b/UI/Doc/SkillWheel/Background_Barb2.(BackgroundSimpleTexture).xdb @@ -0,0 +1,8 @@ + + + 285694785 + + -1 + EPA_LOW_END + EPA_LOW_END + diff --git a/UI/Doc/SkillWheel/Background_Norm.(WindowSimple).xdb b/UI/Doc/SkillWheel/Background_Norm.(WindowSimple).xdb new file mode 100644 index 00000000..c0cd38ae --- /dev/null +++ b/UI/Doc/SkillWheel/Background_Norm.(WindowSimple).xdb @@ -0,0 +1,55 @@ + + + 285700802 + + + + true + 0 + + + + + 0 + 0 + + true + + + EPA_LOW_END + true + + + EPA_LOW_END + true + + + + 1024 + 768 + + true + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + true + + + + + false + + diff --git a/UI/Doc/SkillWheel/Background_Norm.(WindowSimpleShared).xdb b/UI/Doc/SkillWheel/Background_Norm.(WindowSimpleShared).xdb new file mode 100644 index 00000000..ae0a3924 --- /dev/null +++ b/UI/Doc/SkillWheel/Background_Norm.(WindowSimpleShared).xdb @@ -0,0 +1,51 @@ + + + false + + + + + false + + + + + 0 + 0 + + false + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + false + + diff --git a/UI/Doc/SkillWheel/Skills/SkillPages.(WindowSimpleShared).xdb b/UI/Doc/SkillWheel/Skills/SkillPages.(WindowSimpleShared).xdb new file mode 100644 index 00000000..bc7ad6b6 --- /dev/null +++ b/UI/Doc/SkillWheel/Skills/SkillPages.(WindowSimpleShared).xdb @@ -0,0 +1,371 @@ + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + 0 + 0 + + false + + + EPA_LOW_END + false + + + EPA_LOW_END + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + 0 + 0 + + false + + + + false + + diff --git a/_(AnimSet)/Creatures/Academy/Titan-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Academy/Titan-arena.(AnimSet).xdb new file mode 100644 index 00000000..692a5356 --- /dev/null +++ b/_(AnimSet)/Creatures/Academy/Titan-arena.(AnimSet).xdb @@ -0,0 +1,48 @@ + + + + + attack00 + + + + death + + + + hit + + + + idle00 + + + + move + + + + rangeattack + + + + happy + + + + specability + + + + stir00 + + + + cast + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Haven/Angel-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Haven/Angel-arena.(AnimSet).xdb new file mode 100644 index 00000000..992a7d54 --- /dev/null +++ b/_(AnimSet)/Creatures/Haven/Angel-arena.(AnimSet).xdb @@ -0,0 +1,44 @@ + + + + + death + + + + hit + + + + idle00 + + + + move + + + + specability + + + + attack00 + + + + attack01 + + + + stir00 + + + + happy + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Haven/Cleric-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Haven/Cleric-arena.(AnimSet).xdb new file mode 100644 index 00000000..ace764af --- /dev/null +++ b/_(AnimSet)/Creatures/Haven/Cleric-arena.(AnimSet).xdb @@ -0,0 +1,60 @@ + + + + + cast + + + + death + + + + hit + + + + idle00 + + + + move + + + + rangeattack + + + + specability + + + + attack00 + + + + attack01 + + + + happy + + + + sphaughtiness + + + + spneutral + + + + idle01 + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Haven/Griffin-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Haven/Griffin-arena.(AnimSet).xdb new file mode 100644 index 00000000..9e46c7dd --- /dev/null +++ b/_(AnimSet)/Creatures/Haven/Griffin-arena.(AnimSet).xdb @@ -0,0 +1,48 @@ + + + + + death + + + + hit + + + + idle00 + + + + move + + + + specability + + + + attack00 + + + + specability1 + + + + specability2 + + + + stir00 + + + + happy + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Haven/Marksman-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Haven/Marksman-arena.(AnimSet).xdb new file mode 100644 index 00000000..2b63ea5a --- /dev/null +++ b/_(AnimSet)/Creatures/Haven/Marksman-arena.(AnimSet).xdb @@ -0,0 +1,52 @@ + + + + + death + + + + hit + + + + idle00 + + + + move + + + + rangeattack + + + + rangeattack_wall + + + + specability + + + + attack00 + + + + attack01 + + + + happy + + + + stir00 + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Haven/Militiaman-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Haven/Militiaman-arena.(AnimSet).xdb new file mode 100644 index 00000000..dbab1a99 --- /dev/null +++ b/_(AnimSet)/Creatures/Haven/Militiaman-arena.(AnimSet).xdb @@ -0,0 +1,32 @@ + + + + + death + + + + hit + + + + idle00 + + + + move + + + + specability + + + + attack00 + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Haven/Priest-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Haven/Priest-arena.(AnimSet).xdb new file mode 100644 index 00000000..62ee424d --- /dev/null +++ b/_(AnimSet)/Creatures/Haven/Priest-arena.(AnimSet).xdb @@ -0,0 +1,44 @@ + + + + + death + + + + hit + + + + move + + + + rangeattack + + + + idle00 + + + + specability + + + + cast + + + + attack00 + + + + happy + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Haven/RoyalGriffin-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Haven/RoyalGriffin-arena.(AnimSet).xdb new file mode 100644 index 00000000..55479abc --- /dev/null +++ b/_(AnimSet)/Creatures/Haven/RoyalGriffin-arena.(AnimSet).xdb @@ -0,0 +1,52 @@ + + + + + death + + + + hit + + + + idle00 + + + + move + + + + specability + + + + specability1 + + + + specability2 + + + + attack00 + + + + attack01 + + + + happy + + + + stir00 + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Inferno/AlternativeUpgrade/T3_Firebreather_Hound.(AnimSet).xdb b/_(AnimSet)/Creatures/Inferno/AlternativeUpgrade/T3_Firebreather_Hound.(AnimSet).xdb new file mode 100644 index 00000000..f56eb1a8 --- /dev/null +++ b/_(AnimSet)/Creatures/Inferno/AlternativeUpgrade/T3_Firebreather_Hound.(AnimSet).xdb @@ -0,0 +1,44 @@ + + + + + attack00 + + + + attack01 + + + + death + + + + happy + + + + hit + + + + idle00 + + + + move + + + + stir01 + + + + specability + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Inferno/Cerberius-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Inferno/Cerberius-arena.(AnimSet).xdb new file mode 100644 index 00000000..f8a728cb --- /dev/null +++ b/_(AnimSet)/Creatures/Inferno/Cerberius-arena.(AnimSet).xdb @@ -0,0 +1,44 @@ + + + + + death + + + + hit + + + + idle00 + + + + move + + + + attack00 + + + + attack01 + + + + happy + + + + specability + + + + stir01 + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Inferno/HellHound-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Inferno/HellHound-arena.(AnimSet).xdb new file mode 100644 index 00000000..d092db5d --- /dev/null +++ b/_(AnimSet)/Creatures/Inferno/HellHound-arena.(AnimSet).xdb @@ -0,0 +1,45 @@ + + + + + + death + + + + hit + + + + idle00 + + + + move + + + + attack00 + + + + attack01 + + + + happy + + + + specability + + + + stir00 + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Inferno/InfernalSuccubus-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Inferno/InfernalSuccubus-arena.(AnimSet).xdb new file mode 100644 index 00000000..cc275541 --- /dev/null +++ b/_(AnimSet)/Creatures/Inferno/InfernalSuccubus-arena.(AnimSet).xdb @@ -0,0 +1,48 @@ + + + + + death + + + + hit + + + + idle00 + + + + move + + + + rangeattack + + + + attack00 + + + + attack01 + + + + cast + + + + happy + + + + stir00 + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Necropolis/Ghosts2-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Necropolis/Ghosts2-arena.(AnimSet).xdb new file mode 100644 index 00000000..d19a33c0 --- /dev/null +++ b/_(AnimSet)/Creatures/Necropolis/Ghosts2-arena.(AnimSet).xdb @@ -0,0 +1,44 @@ + + + + + idle00 + + + + death + + + + move + + + + attack00 + + + + hit + + + + attack01 + + + + happy + + + + specability + + + + stir00 + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Necropolis/Wraith-arena-happy.xdb b/_(AnimSet)/Creatures/Necropolis/Wraith-arena-happy.xdb new file mode 100644 index 00000000..fd0247a0 --- /dev/null +++ b/_(AnimSet)/Creatures/Necropolis/Wraith-arena-happy.xdb @@ -0,0 +1,16 @@ + + + + C7267454-CE44-452E-9870-58FEC25DFC96 + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/_(AnimSet)/Creatures/Necropolis/Wraith-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Necropolis/Wraith-arena.(AnimSet).xdb new file mode 100644 index 00000000..5f9c8957 --- /dev/null +++ b/_(AnimSet)/Creatures/Necropolis/Wraith-arena.(AnimSet).xdb @@ -0,0 +1,40 @@ + + + + + attack00 + + + + death + + + + hit + + + + move + + + + idle00 + + + + specability + + + + cast + + + + happy + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Preserve/FireBird-adv-idle00.xdb b/_(AnimSet)/Creatures/Preserve/FireBird-adv-idle00.xdb new file mode 100644 index 00000000..6805f653 --- /dev/null +++ b/_(AnimSet)/Creatures/Preserve/FireBird-adv-idle00.xdb @@ -0,0 +1,16 @@ + + + + 74FFBE1E-3E41-465D-AE6F-E77874DCC9D5 + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/_(AnimSet)/Creatures/Preserve/FireBird-adv.(AnimSet).xdb b/_(AnimSet)/Creatures/Preserve/FireBird-adv.(AnimSet).xdb new file mode 100644 index 00000000..9fdb89e5 --- /dev/null +++ b/_(AnimSet)/Creatures/Preserve/FireBird-adv.(AnimSet).xdb @@ -0,0 +1,12 @@ + + + + + idle00 + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Preserve/FireBird-arena-attack00.xdb b/_(AnimSet)/Creatures/Preserve/FireBird-arena-attack00.xdb new file mode 100644 index 00000000..8bd857df --- /dev/null +++ b/_(AnimSet)/Creatures/Preserve/FireBird-arena-attack00.xdb @@ -0,0 +1,16 @@ + + + + C1BFD2A6-BB81-4D48-9D36-31B9DF60A939 + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/_(AnimSet)/Creatures/Preserve/FireBird-arena-death.xdb b/_(AnimSet)/Creatures/Preserve/FireBird-arena-death.xdb new file mode 100644 index 00000000..2602ee5b --- /dev/null +++ b/_(AnimSet)/Creatures/Preserve/FireBird-arena-death.xdb @@ -0,0 +1,16 @@ + + + + 19A78614-435A-4C2B-9711-09BBF21320E4 + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/_(AnimSet)/Creatures/Preserve/FireBird-arena-happy.xdb b/_(AnimSet)/Creatures/Preserve/FireBird-arena-happy.xdb new file mode 100644 index 00000000..a48dec1b --- /dev/null +++ b/_(AnimSet)/Creatures/Preserve/FireBird-arena-happy.xdb @@ -0,0 +1,16 @@ + + + + 1AF925AA-81A5-444B-8B4E-63776F393E55 + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/_(AnimSet)/Creatures/Preserve/FireBird-arena-hit.xdb b/_(AnimSet)/Creatures/Preserve/FireBird-arena-hit.xdb new file mode 100644 index 00000000..9a851452 --- /dev/null +++ b/_(AnimSet)/Creatures/Preserve/FireBird-arena-hit.xdb @@ -0,0 +1,16 @@ + + + + 608D8677-2A7D-4842-BF0E-4607D04DA340 + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/_(AnimSet)/Creatures/Preserve/FireBird-arena-idle00.xdb b/_(AnimSet)/Creatures/Preserve/FireBird-arena-idle00.xdb new file mode 100644 index 00000000..919389f7 --- /dev/null +++ b/_(AnimSet)/Creatures/Preserve/FireBird-arena-idle00.xdb @@ -0,0 +1,16 @@ + + + + 1AF925AA-81A5-444B-8B4E-63776F393E55 + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/_(AnimSet)/Creatures/Preserve/FireBird-arena-move.xdb b/_(AnimSet)/Creatures/Preserve/FireBird-arena-move.xdb new file mode 100644 index 00000000..41c59018 --- /dev/null +++ b/_(AnimSet)/Creatures/Preserve/FireBird-arena-move.xdb @@ -0,0 +1,16 @@ + + + + A181CEAB-8396-44F9-9A78-4D20656BBDE1 + + Global + 0 + 0 + + 5.07731 + 1 + + + 250 + + diff --git a/_(AnimSet)/Creatures/Preserve/FireBird-arena-stir00.xdb b/_(AnimSet)/Creatures/Preserve/FireBird-arena-stir00.xdb new file mode 100644 index 00000000..e0efe517 --- /dev/null +++ b/_(AnimSet)/Creatures/Preserve/FireBird-arena-stir00.xdb @@ -0,0 +1,16 @@ + + + + 1AF925AA-81A5-444B-8B4E-63776F393E55 + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/_(AnimSet)/Creatures/Preserve/FireBird-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Preserve/FireBird-arena.(AnimSet).xdb new file mode 100644 index 00000000..e03537dc --- /dev/null +++ b/_(AnimSet)/Creatures/Preserve/FireBird-arena.(AnimSet).xdb @@ -0,0 +1,32 @@ + + + + + attack00 + + + + death + + + + happy + + + + hit + + + + idle00 + + + + move + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Preserve/FireBird_LOD-adv.(AnimSet).xdb b/_(AnimSet)/Creatures/Preserve/FireBird_LOD-adv.(AnimSet).xdb new file mode 100644 index 00000000..b2c5cb63 --- /dev/null +++ b/_(AnimSet)/Creatures/Preserve/FireBird_LOD-adv.(AnimSet).xdb @@ -0,0 +1,7 @@ + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Preserve/Phoenix-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Preserve/Phoenix-arena.(AnimSet).xdb new file mode 100644 index 00000000..fa9d06e4 --- /dev/null +++ b/_(AnimSet)/Creatures/Preserve/Phoenix-arena.(AnimSet).xdb @@ -0,0 +1,48 @@ + + + + + attack00 + + + + attack01 + + + + death + + + + happy + + + + hit + + + + idle00 + + + + move + + + + specability + + + + stir00 + + + + cast + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Sylvan/AngerTreant-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Sylvan/AngerTreant-arena.(AnimSet).xdb new file mode 100644 index 00000000..37d0b675 --- /dev/null +++ b/_(AnimSet)/Creatures/Sylvan/AngerTreant-arena.(AnimSet).xdb @@ -0,0 +1,40 @@ + + + + + attack00 + + + + happy + + + + hit + + + + idle00 + + + + move + + + + stir00 + + + + specability + + + + specability1 + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Sylvan/AngerTreant_Death-arena-death.xdb b/_(AnimSet)/Creatures/Sylvan/AngerTreant_Death-arena-death.xdb new file mode 100644 index 00000000..b545b7ce --- /dev/null +++ b/_(AnimSet)/Creatures/Sylvan/AngerTreant_Death-arena-death.xdb @@ -0,0 +1,32 @@ + + + + 43D0D452-FE93-48D4-A7E2-2896F8CA30B5 + + Global + 0 + 0 + + 0 + 1 + + + Sounds\Creatures\Sylvan\Dendroid\Dendroid_soldier_death.wav + 1E8AFE0B-3E04-47C4-A1B1-A99E427BF9C9 + false + true + 50 + 10000 + 0 + 0 + 0 + 0 + 1 + 0 + + + + + 250 + + diff --git a/_(AnimSet)/Creatures/Sylvan/AngerTreant_Death-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Sylvan/AngerTreant_Death-arena.(AnimSet).xdb new file mode 100644 index 00000000..7f4b1ea6 --- /dev/null +++ b/_(AnimSet)/Creatures/Sylvan/AngerTreant_Death-arena.(AnimSet).xdb @@ -0,0 +1,12 @@ + + + + + death + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Sylvan/DendroidSolder-arena-specability.xdb b/_(AnimSet)/Creatures/Sylvan/DendroidSolder-arena-specability.xdb new file mode 100644 index 00000000..acc94457 --- /dev/null +++ b/_(AnimSet)/Creatures/Sylvan/DendroidSolder-arena-specability.xdb @@ -0,0 +1,16 @@ + + + + 2C6ED76E-0CE8-44C9-8906-EF319ABC4BBA + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/_(AnimSet)/Creatures/Sylvan/DendroidSolder-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Sylvan/DendroidSolder-arena.(AnimSet).xdb new file mode 100644 index 00000000..dd4041d9 --- /dev/null +++ b/_(AnimSet)/Creatures/Sylvan/DendroidSolder-arena.(AnimSet).xdb @@ -0,0 +1,36 @@ + + + + + attack00 + + + + happy + + + + hit + + + + idle00 + + + + move + + + + stir00 + + + + specability + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Sylvan/DendroidSoldier_Death-arena-death.xdb b/_(AnimSet)/Creatures/Sylvan/DendroidSoldier_Death-arena-death.xdb new file mode 100644 index 00000000..b545b7ce --- /dev/null +++ b/_(AnimSet)/Creatures/Sylvan/DendroidSoldier_Death-arena-death.xdb @@ -0,0 +1,32 @@ + + + + 43D0D452-FE93-48D4-A7E2-2896F8CA30B5 + + Global + 0 + 0 + + 0 + 1 + + + Sounds\Creatures\Sylvan\Dendroid\Dendroid_soldier_death.wav + 1E8AFE0B-3E04-47C4-A1B1-A99E427BF9C9 + false + true + 50 + 10000 + 0 + 0 + 0 + 0 + 1 + 0 + + + + + 250 + + diff --git a/_(AnimSet)/Creatures/Sylvan/DendroidSoldier_Death-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Sylvan/DendroidSoldier_Death-arena.(AnimSet).xdb new file mode 100644 index 00000000..50014599 --- /dev/null +++ b/_(AnimSet)/Creatures/Sylvan/DendroidSoldier_Death-arena.(AnimSet).xdb @@ -0,0 +1,12 @@ + + + + + death + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Sylvan/DendroidSoldier_LOD-arena-idle00.xdb b/_(AnimSet)/Creatures/Sylvan/DendroidSoldier_LOD-arena-idle00.xdb new file mode 100644 index 00000000..7b623c72 --- /dev/null +++ b/_(AnimSet)/Creatures/Sylvan/DendroidSoldier_LOD-arena-idle00.xdb @@ -0,0 +1,16 @@ + + + + 92730D76-518C-4274-A9D2-1DD0B71E3D53 + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/_(AnimSet)/Creatures/Sylvan/DendroidSoldier_LOD-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Sylvan/DendroidSoldier_LOD-arena.(AnimSet).xdb new file mode 100644 index 00000000..846ab767 --- /dev/null +++ b/_(AnimSet)/Creatures/Sylvan/DendroidSoldier_LOD-arena.(AnimSet).xdb @@ -0,0 +1,12 @@ + + + + + idle00 + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Sylvan/Dendroid_Death-arena-death.xdb b/_(AnimSet)/Creatures/Sylvan/Dendroid_Death-arena-death.xdb new file mode 100644 index 00000000..f9aa6fea --- /dev/null +++ b/_(AnimSet)/Creatures/Sylvan/Dendroid_Death-arena-death.xdb @@ -0,0 +1,32 @@ + + + + DD6AD529-6687-4925-831B-653670F63C04 + + Global + 0 + 0 + + 0 + 1 + + + Sounds\Creatures\Sylvan\Dendroid\Dendroid_death.wav + 5499A48F-C1CA-4D3E-B993-20C79A5DFBF7 + false + true + 50 + 10000 + 0 + 0 + 0 + 0 + 1 + 0 + + + + + 250 + + diff --git a/_(AnimSet)/Creatures/Sylvan/Dendroid_Death-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/Sylvan/Dendroid_Death-arena.(AnimSet).xdb new file mode 100644 index 00000000..5f793516 --- /dev/null +++ b/_(AnimSet)/Creatures/Sylvan/Dendroid_Death-arena.(AnimSet).xdb @@ -0,0 +1,12 @@ + + + + + death + + + + + + Global + diff --git a/_(AnimSet)/Creatures/Sylvan/Dendroid_LOD-adv.(AnimSet).xdb b/_(AnimSet)/Creatures/Sylvan/Dendroid_LOD-adv.(AnimSet).xdb new file mode 100644 index 00000000..c073f7f8 --- /dev/null +++ b/_(AnimSet)/Creatures/Sylvan/Dendroid_LOD-adv.(AnimSet).xdb @@ -0,0 +1,12 @@ + + + + + idle00 + + + + + + Global + diff --git a/_(AnimSet)/Creatures/WarMachines/FirstAidTent-arena.(AnimSet).xdb b/_(AnimSet)/Creatures/WarMachines/FirstAidTent-arena.(AnimSet).xdb new file mode 100644 index 00000000..93ae0cba --- /dev/null +++ b/_(AnimSet)/Creatures/WarMachines/FirstAidTent-arena.(AnimSet).xdb @@ -0,0 +1,28 @@ + + + + + idle00 + + + + death + + + + hit + + + + cast + + + + specability + + + + + + Global + diff --git a/_(AnimSet)/Heroes/DemonLord-adv.(AnimSet).xdb b/_(AnimSet)/Heroes/DemonLord-adv.(AnimSet).xdb new file mode 100644 index 00000000..a8532e92 --- /dev/null +++ b/_(AnimSet)/Heroes/DemonLord-adv.(AnimSet).xdb @@ -0,0 +1,16 @@ + + + + + idle00 + + + + move + + + + + + Global + diff --git a/_(AnimSet)/Heroes/DemonLord-arena-spneutral.xdb b/_(AnimSet)/Heroes/DemonLord-arena-spneutral.xdb new file mode 100644 index 00000000..e29b0632 --- /dev/null +++ b/_(AnimSet)/Heroes/DemonLord-arena-spneutral.xdb @@ -0,0 +1,16 @@ + + + + 20ADB7BC-F575-4619-899A-A8ACC866D4FF + + Global + 0 + 0 + + 0 + 1 + + + 250 + + diff --git a/_(AnimSet)/Heroes/DemonLord-arena.(AnimSet).xdb b/_(AnimSet)/Heroes/DemonLord-arena.(AnimSet).xdb new file mode 100644 index 00000000..eb155bf2 --- /dev/null +++ b/_(AnimSet)/Heroes/DemonLord-arena.(AnimSet).xdb @@ -0,0 +1,64 @@ + + + + + idle00 + + + + cast + + + + hit + + + + move + + + + buff + + + + capture + + + + happy + + + + call + + + + strike + + + + gladness + + + + think + + + + stir00 + + + + stir01 + + + + spneutral + + + + + + Global + diff --git a/_(AnimSet)/Heroes/DemonLord_LOD-adv.(AnimSet).xdb b/_(AnimSet)/Heroes/DemonLord_LOD-adv.(AnimSet).xdb new file mode 100644 index 00000000..c485fe4f --- /dev/null +++ b/_(AnimSet)/Heroes/DemonLord_LOD-adv.(AnimSet).xdb @@ -0,0 +1,16 @@ + + + + + idle00 + + + + move + + + + + + Global + diff --git a/_(AnimSet)/Heroes/DemonLord_conquest-adv.(AnimSet).xdb b/_(AnimSet)/Heroes/DemonLord_conquest-adv.(AnimSet).xdb new file mode 100644 index 00000000..57ee76c7 --- /dev/null +++ b/_(AnimSet)/Heroes/DemonLord_conquest-adv.(AnimSet).xdb @@ -0,0 +1,16 @@ + + + + + idle00 + + + + move + + + + + + Global + diff --git a/scripts/A2_Artifact_Sets/A2_Artifact_Sets.lua b/scripts/A2_Artifact_Sets/A2_Artifact_Sets.lua new file mode 100644 index 00000000..c75212fd --- /dev/null +++ b/scripts/A2_Artifact_Sets/A2_Artifact_Sets.lua @@ -0,0 +1,321 @@ +-- Interface + +-- InitAllSetArtifacts(); +-- SaveHeroAllSetArtifacts(hero); -- Loads all set artifacts for defined hero +-- LoadHeroAllSetArtifacts(hero); -- Saves all set artifacts for defined hero + +-- Implemetation +function AddArtifactToAllSetArtefacts(artefactID) + AllSetArtifacts[AllSetArtifactsCount] = artefactID; + AllSetArtifactsCount = AllSetArtifactsCount + 1; +end; + +function InitAllSetArtifacts( missionName, heroName1, heroName2, heroName3, heroName4, heroName5, heroName6, heroName7, heroName8 ) + AllSetArtifacts = {}; + AllSetArtifactsCount = 0; + + AddArtifactToAllSetArtefacts(ARTIFACT_SWORD_OF_RUINS); + AddArtifactToAllSetArtefacts(ARTIFACT_GREAT_AXE_OF_GIANT_SLAYING); + --AddArtifactToAllSetArtefacts(ARTIFACT_WAND_OF_X); + AddArtifactToAllSetArtefacts(ARTIFACT_UNICORN_HORN_BOW); + AddArtifactToAllSetArtefacts(ARTIFACT_TITANS_TRIDENT); + AddArtifactToAllSetArtefacts(ARTIFACT_STAFF_OF_VEXINGS); + --AddArtifactToAllSetArtefacts(ARTIFACT_SHACKLES_OF_WAR); + AddArtifactToAllSetArtefacts(ARTIFACT_FOUR_LEAF_CLOVER); + AddArtifactToAllSetArtefacts(ARTIFACT_ICEBERG_SHIELD); + AddArtifactToAllSetArtefacts(ARTIFACT_GOLDEN_SEXTANT); + AddArtifactToAllSetArtefacts(ARTIFACT_CROWN_OF_COURAGE); + AddArtifactToAllSetArtefacts(ARTIFACT_CROWN_OF_MANY_EYES); + AddArtifactToAllSetArtefacts(ARTIFACT_PLATE_MAIL_OF_STABILITY); + AddArtifactToAllSetArtefacts(ARTIFACT_BREASTPLATE_OF_PETRIFIED_WOOD); + AddArtifactToAllSetArtefacts(ARTIFACT_PEDANT_OF_MASTERY); + AddArtifactToAllSetArtefacts(ARTIFACT_NECKLACE_OF_BRAVERY); + AddArtifactToAllSetArtefacts(ARTIFACT_WEREWOLF_CLAW_NECKLACE); + AddArtifactToAllSetArtefacts(ARTIFACT_EVERCOLD_ICICLE); + AddArtifactToAllSetArtefacts(ARTIFACT_NECKLACE_OF_POWER); + AddArtifactToAllSetArtefacts(ARTIFACT_RING_OF_LIGHTING_PROTECTION); + AddArtifactToAllSetArtefacts(ARTIFACT_RING_OF_LIFE); + AddArtifactToAllSetArtefacts(ARTIFACT_RING_OF_HASTE); + AddArtifactToAllSetArtefacts(ARTIFACT_NIGHTMARISH_RING); + --AddArtifactToAllSetArtefacts(ARTIFACT_BOOTS_OF_SPEED); + AddArtifactToAllSetArtefacts(ARTIFACT_GOLDEN_HORSESHOE); + AddArtifactToAllSetArtefacts(ARTIFACT_WAYFARER_BOOTS); + AddArtifactToAllSetArtefacts(ARTIFACT_BOOTS_OF_INTERFERENCE); + --AddArtifactToAllSetArtefacts(ARTIFACT_ENDLESS_SACK_OF_GOLD); + --AddArtifactToAllSetArtefacts(ARTIFACT_ENDLESS_BAG_OF_GOLD); + --AddArtifactToAllSetArtefacts(ARTIFACT_ANGEL_WINGS); + AddArtifactToAllSetArtefacts(ARTIFACT_LION_HIDE_CAPE); + AddArtifactToAllSetArtefacts(ARTIFACT_PHOENIX_FEATHER_CAPE); + AddArtifactToAllSetArtefacts(ARTIFACT_CLOAK_OF_MOURNING); + AddArtifactToAllSetArtefacts(ARTIFACT_HELM_OF_ENLIGHTMENT); + AddArtifactToAllSetArtefacts(ARTIFACT_CHAIN_MAIL_OF_ENLIGHTMENT); + AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_SCALE_ARMOR); + AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_SCALE_SHIELD); + AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_BONE_GRAVES); + AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_WING_MANTLE); + AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_TEETH_NECKLACE); + AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_TALON_CROWN); + AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_EYE_RING); + AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_FLAME_TONGUE); + AddArtifactToAllSetArtefacts(ARTIFACT_ROBE_OF_MAGI); + AddArtifactToAllSetArtefacts(ARTIFACT_STAFF_OF_MAGI); + AddArtifactToAllSetArtefacts(ARTIFACT_CROWN_OF_MAGI); + AddArtifactToAllSetArtefacts(ARTIFACT_RING_OF_MAGI); + AddArtifactToAllSetArtefacts(ARTIFACT_DWARVEN_MITHRAL_CUIRASS); + AddArtifactToAllSetArtefacts(ARTIFACT_DWARVEN_MITHRAL_GREAVES); + AddArtifactToAllSetArtefacts(ARTIFACT_DWARVEN_MITHRAL_HELMET); + AddArtifactToAllSetArtefacts(ARTIFACT_DWARVEN_MITHRAL_SHIELD); + --AddArtifactToAllSetArtefacts(ARTIFACT_SCROLL_OF_SPELL_X); + --AddArtifactToAllSetArtefacts(ARTIFACT_GRAAL); + --AddArtifactToAllSetArtefacts(ARTIFACT_BOOTS_OF_LEVITATION); + AddArtifactToAllSetArtefacts(ARTIFACT_SKULL_HELMET); + AddArtifactToAllSetArtefacts(ARTIFACT_VALORIOUS_ARMOR); + AddArtifactToAllSetArtefacts(ARTIFACT_BOOTS_OF_SWIFTNESS); + AddArtifactToAllSetArtefacts(ARTIFACT_MOONBLADE); + AddArtifactToAllSetArtefacts(ARTIFACT_RING_OF_CELERITY); + AddArtifactToAllSetArtefacts(ARTIFACT_BAND_OF_CONJURER); + AddArtifactToAllSetArtefacts(ARTIFACT_EARTHSLIDERS); + AddArtifactToAllSetArtefacts(ARTIFACT_RIGID_MANTLE); + AddArtifactToAllSetArtefacts(ARTIFACT_JINXING_BAND); + AddArtifactToAllSetArtefacts(ARTIFACT_BONESTUDDED_LEATHER); + AddArtifactToAllSetArtefacts(ARTIFACT_WISPERING_RING); + AddArtifactToAllSetArtefacts(ARTIFACT_HELM_OF_CHAOS); + AddArtifactToAllSetArtefacts(ARTIFACT_TWISTING_NEITHER); + AddArtifactToAllSetArtefacts(ARTIFACT_SANDALS_OF_THE_SAINT); + AddArtifactToAllSetArtefacts(ARTIFACT_SHAWL_OF_GREAT_LICH); + AddArtifactToAllSetArtefacts(ARTIFACT_RING_OF_DEATH); + AddArtifactToAllSetArtefacts(ARTIFACT_NECROMANCER_PENDANT); + --AddArtifactToAllSetArtefacts(ARTIFACT_FREIDA); + AddArtifactToAllSetArtefacts(ARTIFACT_RING_OF_THE_SHADOWBRAND); + AddArtifactToAllSetArtefacts(ARTIFACT_OGRE_CLUB); + AddArtifactToAllSetArtefacts(ARTIFACT_OGRE_SHIELD); + AddArtifactToAllSetArtefacts(ARTIFACT_TOME_OF_DESTRUCTION); + AddArtifactToAllSetArtefacts(ARTIFACT_TOME_OF_LIGHT_MAGIC); + AddArtifactToAllSetArtefacts(ARTIFACT_TOME_OF_DARK_MAGIC); + AddArtifactToAllSetArtefacts(ARTIFACT_TOME_OF_SUMMONING_MAGIC); + AddArtifactToAllSetArtefacts(ARTIFACT_BEGINNER_MAGIC_STICK); + AddArtifactToAllSetArtefacts(ARTIFACT_RUNIC_WAR_AXE); + AddArtifactToAllSetArtefacts(ARTIFACT_RUNIC_WAR_HARNESS); + AddArtifactToAllSetArtefacts(ARTIFACT_SKULL_OF_MARKAL); + AddArtifactToAllSetArtefacts(ARTIFACT_BEARHIDE_WRAPS); + AddArtifactToAllSetArtefacts(ARTIFACT_DWARVEN_SMITHY_HUMMER); + AddArtifactToAllSetArtefacts(ARTIFACT_RUNE_OF_FLAME); + AddArtifactToAllSetArtefacts(ARTIFACT_TAROT_DECK); + AddArtifactToAllSetArtefacts(ARTIFACT_CROWN_OF_LEADER); + AddArtifactToAllSetArtefacts(ARTIFACT_EDGE_OF_BALANCE); + AddArtifactToAllSetArtefacts(ARTIFACT_RING_OF_MACHINE_AFFINITY); + --AddArtifactToAllSetArtefacts(ARTIFACT_HORN_OF_PLENTY); + AddArtifactToAllSetArtefacts(ARTIFACT_RING_OF_UNSUMMONING); + AddArtifactToAllSetArtefacts(ARTIFACT_BOOK_OF_POWER); + AddArtifactToAllSetArtefacts(ARTIFACT_TREEBORN_QUIVER); + --AddArtifactToAllSetArtefacts(ARTIFACT_PRINCESS); + AddArtifactToAllSetArtefacts(ARTIFACT_RES_WOOD); + AddArtifactToAllSetArtefacts(ARTIFACT_RES_ORE); + AddArtifactToAllSetArtefacts(ARTIFACT_RES_SULPHUR); + AddArtifactToAllSetArtefacts(ARTIFACT_RES_CRYSTAL); + AddArtifactToAllSetArtefacts(ARTIFACT_RES_GEM); + AddArtifactToAllSetArtefacts(ARTIFACT_RES_MERCURY); + AddArtifactToAllSetArtefacts(ARTIFACT_LEGION_T1); + AddArtifactToAllSetArtefacts(ARTIFACT_LEGION_T2); + AddArtifactToAllSetArtefacts(ARTIFACT_LEGION_T3); + AddArtifactToAllSetArtefacts(ARTIFACT_LEGION_T4); + AddArtifactToAllSetArtefacts(ARTIFACT_LEGION_T5); + AddArtifactToAllSetArtefacts(ARTIFACT_LEGION_T6); + AddArtifactToAllSetArtefacts(ARTIFACT_LEGION_T7); + AddArtifactToAllSetArtefacts(ARTIFACT_STEADFAST); + AddArtifactToAllSetArtefacts(ARTIFACT_BUCKLER); + AddArtifactToAllSetArtefacts(ARTIFACT_LIFE_01); + AddArtifactToAllSetArtefacts(ARTIFACT_LIFE_02); + AddArtifactToAllSetArtefacts(ARTIFACT_LIFE_03); + AddArtifactToAllSetArtefacts(ARTIFACT_LIFE_04); + AddArtifactToAllSetArtefacts(ARTIFACT_MONK_01); + AddArtifactToAllSetArtefacts(ARTIFACT_MONK_02); + AddArtifactToAllSetArtefacts(ARTIFACT_MONK_03); + AddArtifactToAllSetArtefacts(ARTIFACT_MONK_04); + AddArtifactToAllSetArtefacts(ARTIFACT_GUARDIAN_01); + AddArtifactToAllSetArtefacts(ARTIFACT_GUARDIAN_02); + AddArtifactToAllSetArtefacts(ARTIFACT_GUARDIAN_03); + AddArtifactToAllSetArtefacts(ARTIFACT_DRACONIC); + AddArtifactToAllSetArtefacts(ARTIFACT_SENTINEL); + AddArtifactToAllSetArtefacts(ARTIFACT_EIGHTFOLD); + AddArtifactToAllSetArtefacts(ARTIFACT_PIRATE01); + AddArtifactToAllSetArtefacts(ARTIFACT_PIRATE02); + AddArtifactToAllSetArtefacts(ARTIFACT_PIRATE03); + AddArtifactToAllSetArtefacts(ARTIFACT_PIRATE04); + AddArtifactToAllSetArtefacts(ARTIFACT_PIRATE05); + AddArtifactToAllSetArtefacts(ARTIFACT_PIRATE06); + AddArtifactToAllSetArtefacts(ARTIFACT_MEDICAL01); + AddArtifactToAllSetArtefacts(ARTIFACT_MEDICAL02); + --AddArtifactToAllSetArtefacts(ARTIFACT_MEDICAL03); + --AddArtifactToAllSetArtefacts(ARTIFACT_MEDICAL04); + AddArtifactToAllSetArtefacts(ARTIFACT_POTION01); + AddArtifactToAllSetArtefacts(ARTIFACT_POTION02); + --AddArtifactToAllSetArtefacts(ARTIFACT_POTION03); + AddArtifactToAllSetArtefacts(ARTIFACT_SHANTIRI_05); + AddArtifactToAllSetArtefacts(ARTIFACT_UPG_AR1); + AddArtifactToAllSetArtefacts(ARTIFACT_UPG_AR2); + AddArtifactToAllSetArtefacts(ARTIFACT_UPG_AR3); + AddArtifactToAllSetArtefacts(ARTIFACT_UPG_HM1); + AddArtifactToAllSetArtefacts(ARTIFACT_UPG_HM2); + AddArtifactToAllSetArtefacts(ARTIFACT_UPG_HM3); + AddArtifactToAllSetArtefacts(ARTIFACT_UPG_ST1); + AddArtifactToAllSetArtefacts(ARTIFACT_UPG_ST2); + AddArtifactToAllSetArtefacts(ARTIFACT_UPG_ST3); + AddArtifactToAllSetArtefacts(ARTIFACT_UPG_SW1); + AddArtifactToAllSetArtefacts(ARTIFACT_UPG_SW2); + AddArtifactToAllSetArtefacts(ARTIFACT_UPG_SW3); + AddArtifactToAllSetArtefacts(ARTIFACT_URGASH_01); + AddArtifactToAllSetArtefacts(ARTIFACT_URGASH_02); + AddArtifactToAllSetArtefacts(ARTIFACT_ELRATH_01); + AddArtifactToAllSetArtefacts(ARTIFACT_ELRATH_02); + AddArtifactToAllSetArtefacts(ARTIFACT_GOVERNOR_01); + AddArtifactToAllSetArtefacts(ARTIFACT_GOVERNOR_02); + AddArtifactToAllSetArtefacts(ARTIFACT_GEAR_01); + --AddArtifactToAllSetArtefacts(ARTIFACT_GEAR_02); + AddArtifactToAllSetArtefacts(ARTIFACT_GEAR_03); + AddArtifactToAllSetArtefacts(ARTIFACT_GEAR_04); + AddArtifactToAllSetArtefacts(ARTIFACT_GEAR_05); + AddArtifactToAllSetArtefacts(ARTIFACT_GEAR_06); + AddArtifactToAllSetArtefacts(ARTIFACT_GEAR_07); + AddArtifactToAllSetArtefacts(ARTIFACT_GEAR_08); + AddArtifactToAllSetArtefacts(ARTIFACT_ORB_01); + AddArtifactToAllSetArtefacts(ARTIFACT_ORB_02); + AddArtifactToAllSetArtefacts(ARTIFACT_ORB_03); + AddArtifactToAllSetArtefacts(ARTIFACT_ORB_04); + + -- -- Power of Dragons + -- AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_SCALE_ARMOR); + -- AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_SCALE_SHIELD); + -- AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_BONE_GRAVES); + -- AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_WING_MANTLE); + -- AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_TEETH_NECKLACE); + -- AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_TALON_CROWN); + -- AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_EYE_RING); + -- AddArtifactToAllSetArtefacts(ARTIFACT_DRAGON_FLAME_TONGUE); + + -- -- Armor of Dwarven Kings + -- AddArtifactToAllSetArtefacts(ARTIFACT_DWARVEN_MITHRAL_CUIRASS); + -- AddArtifactToAllSetArtefacts(ARTIFACT_DWARVEN_MITHRAL_GREAVES); + -- AddArtifactToAllSetArtefacts(ARTIFACT_DWARVEN_MITHRAL_HELMET); + -- AddArtifactToAllSetArtefacts(ARTIFACT_DWARVEN_MITHRAL_SHIELD); + + -- -- Lion's Spirit + -- AddArtifactToAllSetArtefacts(ARTIFACT_CROWN_OF_COURAGE); + -- AddArtifactToAllSetArtefacts(ARTIFACT_LION_HIDE_CAPE); + -- AddArtifactToAllSetArtefacts(ARTIFACT_NECKLACE_OF_BRAVERY); + + -- -- Sar-Issus Regalia + -- AddArtifactToAllSetArtefacts(ARTIFACT_ROBE_OF_MAGI); + -- AddArtifactToAllSetArtefacts(ARTIFACT_RING_OF_HASTE); + -- AddArtifactToAllSetArtefacts(ARTIFACT_CROWN_OF_MAGI); + -- AddArtifactToAllSetArtefacts(ARTIFACT_RING_OF_MAGI); + + -- -- Death's Embrace + -- AddArtifactToAllSetArtefacts(ARTIFACT_CLOAK_OF_MOURNING); + -- AddArtifactToAllSetArtefacts(ARTIFACT_STAFF_OF_VEXINGS); + -- AddArtifactToAllSetArtefacts(ARTIFACT_RING_OF_DEATH); + -- AddArtifactToAllSetArtefacts(ARTIFACT_NECROMANCER_PENDANT); + -- AddArtifactToAllSetArtefacts(ARTIFACT_SKULL_HELMET); + -- AddArtifactToAllSetArtefacts(ARTIFACT_RING_OF_DEATH); + + -- -- Vestment of Enlightnment + -- -- AddArtifactToAllSetArtefacts(ARTIFACT_HELM_OF_ENLIGHTMENT); + -- -- AddArtifactToAllSetArtefacts(ARTIFACT_CHAIN_MAIL_OF_ENLIGHTMENT); + + -- -- Pirate's Apparel + -- AddArtifactToAllSetArtefacts(ARTIFACT_PIRATE01); + -- AddArtifactToAllSetArtefacts(ARTIFACT_PIRATE02); + -- AddArtifactToAllSetArtefacts(ARTIFACT_PIRATE03); + -- AddArtifactToAllSetArtefacts(ARTIFACT_PIRATE04); + -- AddArtifactToAllSetArtefacts(ARTIFACT_PIRATE05); + -- AddArtifactToAllSetArtefacts(ARTIFACT_PIRATE06); + + -- -- Forgotten Hero + -- AddArtifactToAllSetArtefacts(ARTIFACT_GUARDIAN_01); + -- AddArtifactToAllSetArtefacts(ARTIFACT_GUARDIAN_02); + -- AddArtifactToAllSetArtefacts(ARTIFACT_GUARDIAN_03); + -- AddArtifactToAllSetArtefacts(ARTIFACT_PLATE_MAIL_OF_STABILITY); + + -- -- Prophet + -- AddArtifactToAllSetArtefacts(ARTIFACT_MONK_01); + -- AddArtifactToAllSetArtefacts(ARTIFACT_MONK_02); + -- AddArtifactToAllSetArtefacts(ARTIFACT_MONK_03); + -- AddArtifactToAllSetArtefacts(ARTIFACT_MONK_04); + -- AddArtifactToAllSetArtefacts(ARTIFACT_UPG_ST3); + + -- Archer's Dream + --AddArtifactToAllSetArtefacts(ARTIFACT_UNICORN_HORN_BOW); + --AddArtifactToAllSetArtefacts(ARTIFACT_TREEBORN_QUIVER); + + -- Weapons of Might + --AddArtifactToAllSetArtefacts(ARTIFACT_OGRE_CLUB); + --AddArtifactToAllSetArtefacts(ARTIFACT_OGRE_SHIELD); + + -- Runeforce + --AddArtifactToAllSetArtefacts(ARTIFACT_RUNIC_WAR_AXE); + --AddArtifactToAllSetArtefacts(ARTIFACT_RUNIC_WAR_HARNESS); + + -- Will of Urgash + --AddArtifactToAllSetArtefacts(ARTIFACT_HELM_OF_CHAOS); + --AddArtifactToAllSetArtefacts(ARTIFACT_NIGHTMARISH_RING); + + --Reset Artifact's sets for heroes + ResetArtifactsSetForHero( heroName1, missionName ); + ResetArtifactsSetForHero( heroName2, missionName ); + ResetArtifactsSetForHero( heroName3, missionName ); + ResetArtifactsSetForHero( heroName4, missionName ); + ResetArtifactsSetForHero( heroName5, missionName ); + ResetArtifactsSetForHero( heroName6, missionName ); + ResetArtifactsSetForHero( heroName7, missionName ); + ResetArtifactsSetForHero( heroName8, missionName ); +end; + +function ResetArtifactsSetForHero( heroName, missionName ) + if heroName ~= nil then + for i = 0, AllSetArtifactsCount - 1 do + local artefactIdString = '_'..AllSetArtifacts[i]; + SetGameVar(missionName..'_'..heroName..artefactIdString, "0"); + end; + end; +end; + +function SaveHeroAllSetArtifacts( hero, missionName ) + for i = 0, AllSetArtifactsCount - 1 do + if HasArtefact(hero, AllSetArtifacts[i]) then + local artefactIdString = '_'..AllSetArtifacts[i]; + SetGameVar(missionName..'_'..hero..artefactIdString, "1"); + print('Artifact '..artefactIdString..' was saved in '..missionName..'_'..hero..artefactIdString ); + end; + end; +end; + +function SaveHeroAllSetArtifactsEquipped( hero, missionName ) + Fx_MissionEnd(hero, missionName) + + if IsObjectExists(hero) == not nil then + for i = 0, AllSetArtifactsCount - 1 do + if HasArtefact(hero, AllSetArtifacts[i],1) then + local artefactIdString = '_'..AllSetArtifacts[i]; + SetGameVar(missionName..'_'..hero..artefactIdString, "1"); + print('Artifact '..artefactIdString..' was saved in '..missionName..'_'..hero..artefactIdString ); + end; + end; + else + print("H55 Artifacts couldn't be saved, hero isn't on the map."); + end; +end; + +function LoadHeroAllSetArtifacts( hero, loadFromMissionName ) + Fx_MissionStart(hero, loadFromMissionName) + + if IsObjectExists(hero) == not nil then + for i = 0, AllSetArtifactsCount - 1 do + local artefactIdString = '_'..AllSetArtifacts[i]; + if GetGameVar(loadFromMissionName..'_'..hero..artefactIdString) == "1" then + GiveArtefact(hero, AllSetArtifacts[i]); + end; + end; + else + print("H55 Artifacts couldn't carry over, hero isn't on the map."); + end; +end; diff --git a/scripts/Frax/Adventure.lua b/scripts/Frax/Adventure.lua new file mode 100644 index 00000000..68af45ef --- /dev/null +++ b/scripts/Frax/Adventure.lua @@ -0,0 +1,8 @@ +consoleCmd('game_writelog 1') + +dofile('/scripts/Frax/Values.lua') +dofile('/scripts/Frax/Tables.lua') +dofile('/scripts/Frax/Skills.lua') +dofile('/scripts/Frax/Core.lua') +dofile('/scripts/Frax/Test.lua') +dofile('/scripts/Frax/Mission.lua') \ No newline at end of file diff --git a/scripts/Frax/Combat.lua b/scripts/Frax/Combat.lua new file mode 100644 index 00000000..9cc4c2f5 --- /dev/null +++ b/scripts/Frax/Combat.lua @@ -0,0 +1,169 @@ +dofile('/scripts/Frax/Values.lua') +dofile('/scripts/Frax/Tables.lua') + +Fx_MasterOfElements = { ['Bart'] = 1, ['Zehir'] = 1, ['Vaniel'] = 1 } +Fx_Enrage = { + [CREATURE_FOOTMAN] = 1, + [CREATURE_SWORDSMAN] = 1, + [CREATURE_VINDICATOR] = 1, + + [CREATURE_DEMON] = 1, + [CREATURE_HORNED_DEMON] = 1, + [CREATURE_HORNED_LEAPER] = 1, + + [CREATURE_WALKING_DEAD] = 1, + [CREATURE_ZOMBIE] = 1, + [CREATURE_DISEASE_ZOMBIE] = 1, + + [CREATURE_TREANT] = 1, + [CREATURE_TREANT_GUARDIAN] = 1, + [CREATURE_ANGER_TREANT] = 1, + + [CREATURE_STONE_GARGOYLE] = 1, + [CREATURE_OBSIDIAN_GARGOYLE] = 1, + [CREATURE_MARBLE_GARGOYLE] = 1, + + [CREATURE_BEAR_RIDER] = 1, + [CREATURE_WHITE_BEAR_RIDER] = 1, + [CREATURE_BLACKBEAR_RIDER] = 1, + + [CREATURE_ORC_WARRIOR] = 1, + [CREATURE_ORC_SLAYER] = 1, + [CREATURE_ORC_WARMONGER] = 1, +} + +-- ABILITY_NO_MELEE_PENALTY +-- ABILITY_RANGE_PENALTY +-- ABILITY_MECHANICAL +-- ABILITY_IMMUNITY_TO_SLOW +-- ABILITY_VORPAL_SWORD +-- ABILITY_REGENERATION +-- ABILITY_TREACHERY +-- ABILITY_DEFILE_MAGIC +-- ABILITY_FAST_ATTACK +-- ABILITY_SWALLOW_GOBLIN +-- ABILITY_AURA_OF_ICE_VULNERABILITY +-- ABILITY_IMMUNITY_TO_CURSE +-- ABILITY_IMMUNITY_TO_BERSERK +-- ABILITY_IMMUNITY_TO_HYPNOTIZE +-- ABILITY_MAGIC_PROOF_25 + +function Fx_CombatPrepare() + +end + +Fx_StackSize = {} +Fx_Played = {} +function Fx_CombatStart() + for _, unit in GetUnits(ATTACKER, CREATURE) do + Fx_StackSize[unit] = GetCreatureNumber(unit) + end + for _, unit in GetUnits(DEFENDER, CREATURE) do + Fx_StackSize[unit] = GetCreatureNumber(unit) + end +end + +Fx_Skip = 'None' +function Fx_Combat(unit) + if Fx_Skip == unit then + Fx_Skip = 'None' + return + end + + local attacker = IsAttacker(unit) + local ammo_cart = exist((attacker and 'attacker' or 'defender')..'-warmachine-WAR_MACHINE_AMMO_CART') + + + for _, side in {ATTACKER, DEFENDER} do + for _, summon in GetUnits(side, CREATURE) do + if not Fx_Played[summon] and not Fx_StackSize[summon] then + local typ = GetCreatureType(summon) + Fx_Played[summon] = 1 + if GetCreatureNumber(summon) == 1 and typ == CREATURE_BLACK_KNIGHT or typ == CREATURE_PHOENIX then + setATB(summon, 1) + setATB(unit, 0.99) + return + end + end + end + end + + if IsCreature(unit) then + if GetUnitMaxManaPoints(unit) > 0 then + Fx_Skip = unit + local mana = GetUnitMaxManaPoints(unit) * 0.1 * (ammo_cart and 2 or 1) + SetUnitManaPoints(unit, GetUnitManaPoints(unit) + (0.5 + mana)) + end + end +end + +function DelayedSummonCreature(side, type, size, x, y, delay) + if size < 1 then return end + function Summon(side, type, size, x, y, delay) + sleep(delay) + SummonCreature(side, type, size, x, y) + end + startThread(Summon, side, type, size, x, y, delay) +end + +function Fx_CombatOnDeath(unit) + local side = GetUnitSide(unit) + local hero = GetHero(side) and GetHeroName(GetHero(side)) or 'None' + + if IsCreature(unit) then + local unitType = GetCreatureType(unit) + local x, y = GetUnitPosition(unit) + local ttu = Fx_CreaturesInv[unitType] + if Fx_StackSize[unit] then + --- MASTER OF ELEMENTS --- + if Fx_MasterOfElements[hero] then + local type = Fx_CreaturesInv[unitType] + local size = 0.2 * Fx_StackSize[unit] * Fx_Growth[type[1]][type[2]] / Fx_Growth[9][1] + DelayedSummonCreature(side, 85 + math.random(4), size, x, y, 50) + end + + ----- MASTER OF DEATH --- + --if Fx_MasterOfDeath[hero] then + -- local type = Fx_CreaturesInv[unitType] + -- local size = 0.2 * Fx_StackSize[unit] + -- DelayedSummonCreature(side, unitType, size, x, y, 50) + --end + + ----- FRENZY --- + --if Fx_Frenzy[hero] then + -- setATB(Fx_LastPlayed[1-side], 1) + --end + + --- SOUL EATER --- + local ghosts = 0 + for _, u in GetUnits(1 - side, CREATURE) do + if GetCreatureType(u) == CREATURE_POLTERGEIST and Fx_StackSize[u] then + ghosts = ghosts + 0.2 * GetCreatureNumber(u) + end + end + DelayedSummonCreature(1 - side, CREATURE_POLTERGEIST, ghosts, x, y, 50) + + --- ENRAGE --- + if Fx_StackSize[unit] >= 3 then + for _, u in GetUnits(side, CREATURE) do + if Fx_Enrage[GetCreatureType(u)] then + setATB(u, 1) + end + if hero == 'Nadaur' and ttu[1] == Sylvan and 1 < ttu[2] and ttu[2] < 5 then + setATB(u, 1) + end + end + end + else + --if unitType == CREATURE_BLACK_KNIGHT then + -- UseCombatAbility(GetHero(side), SPELL_ABILITY_AVATAR_OF_DEATH) + --end + --if unitType == CREATURE_PHOENIX and GetUnitManaPoints(GetHero(side)) >= 10 then + -- SetUnitManaPoints(GetHero(side), GetUnitManaPoints(GetHero(side)) + 10) + -- sleep(1) + -- UnitCastGlobalSpell(HetHero(side), SPELL_CONJURE_PHOENIX) + --end + end + end +end + diff --git a/scripts/Frax/Core.lua b/scripts/Frax/Core.lua new file mode 100644 index 00000000..9b3be353 --- /dev/null +++ b/scripts/Frax/Core.lua @@ -0,0 +1,915 @@ +----------------------------------------------------------------------------------- +----- SUPPORT FUNCTIONS ----------------------------------------------------------- +----------------------------------------------------------------------------------- + +function Update(table, key, value) + if table[key] == value then + return nil + else + table[key] = value + return not nil + end +end + +function Nums(b) + local x = {} + for i = 1,b do + x[i] = i + end + return x +end + +function Map(keys) + function run(keys, index) + if index == length(keys) + 1 then + return {} + end + local map = {} + for _, key in keys[index] do + map[key] = run(keys, index+1) + end + return map + end + local x = run(keys, 1) + return x +end + +function Fx_IsThisAIPlayer(player) + return H55_PlayerStatus[player] == 1 +end + +function GivePlayerResource(player, hero, resource, amount) + if amount ~= 0 then + SetPlayerResource(player,resource,GetPlayerResource(player, resource) + amount,hero); + end +end + +function Display(player, object, text) + -- if not Fx_IsThisAIPlayer(player) then + -- sleep(2) + -- ShowFlyingSign(text, object, player, 5) + -- sleep(8) + -- end +end + +IsUtilityExe = GiveHeroBattleBonus and 1 or 0 + +NumPlayers = 8 +NumStats = 8 + +LOG = {} + +Fx_Curses = 0 +Fx_Lock = 0 + + +Fx_DarkRitual = {} + +Fx_Battle = Map({{0,1}}) +Fx_Gifts = Map({Fx_Heroes}) +Fx_Resources = Map({Nums(NumPlayers)}) +Fx_SpellOwners = Map({Nums(5), Fx_Heroes}) +Fx_Stats = Map({Nums(NumStats), Fx_Heroes}) +Fx_GovernorBonuses = Map({Nums(NumPlayers)}) +Fx_PlayerUltimates = Map({Nums(NumPlayers)}) +Fx_BattleBonus = Map({Nums(NumStats)}) + +function Fx_GetDistance(object1,object2) + local x1,y1,z1 = GetObjectPosition(object1) + local x2,y2,z2 = GetObjectPosition(object2) + return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) + ((z1 == z2) and 0 or 1000) +end + +function Fx_ChangeStat(hero, stat, amount) + if -1 < amount and amount < 1 then return end + ChangeHeroStat(hero, stat, amount) +end + +function Fx_ChangeStatOn(hero, skill, stat, amount) + Fx_ChangeStat(hero, stat, amount - (Fx_Stats[stat][hero][skill] or 0)) + Fx_Stats[stat][hero][skill] = amount +end + +function ScaleStatOn(hero, skill, stat, amount) + local base = math.max(GetHeroLevel(hero)/2, GetHeroStat(hero, stat) - (Fx_Stats[stat][hero][skill] or 0)) + Fx_ChangeStatOn(hero, skill, stat, base * amount) +end + +function Fx_ChangeStatOnSkill(hero, skill, stat, amount) + Fx_ChangeStatOn(hero, skill, stat, amount * GetHeroSkillMastery(hero, skill)) +end + + +function Fx_ArtefactCount(hero, equip, artifacts) + local count = 0 + for _, artifact in artifacts do + count = count + (HasArtefact(hero, artifact, equip) or 0) + end + return count +end + +function Fx_PerkCount(hero, perks) + local count = 0 + for _, perk in perks do + count = count + (HasHeroSkill(hero, perk) or 0) + end + return count +end + +function Fx_GiveArtefacts(hero, artefacts) + for _, artefact in artefacts do + GiveArtefact(hero, artefact) + end +end + + +function Fx_OfferUltimates(player, hero) + LOG = {'Fx_OfferUltimates', player, hero} + + if Fx_PerkCount(hero, Fx_Ultimates) >= 1 or Fx_PerkCount(hero, Fx_Skills) >= 8 then + return + end + + if Fx_IsThisAIPlayer(player) then + local race = H55_GetHeroRaceNum(hero) + if Fx_PerkCount(hero, Fx_Skills) >= 6 then + Fx_GiveUltimate(player, hero, Fx_UltimatesAI[race==8 and 4+random(10) or race==4 and 1+random(10) or 1+random(12)]) + end + return + end + + local skills, count = {}, 0 + for _, skill in Fx_Skills do + if GetHeroSkillMastery(hero, skill) == 3 and Fx_PerkCount(hero, Fx_Perks[skill]) == 3 then + count = count + 1 + if not Fx_PlayerUltimates[player][skill] then + skills[length(skills)] = skill + end + end + end + + local N = length(skills) + if count >= 4 and N >= 2 then + local r1, r2 = random(N), 1+random(N-1) + Fx_ChooseUltimate(player, hero, skills[r1], skills[mod(r1 + r2, N)]) + return 1 + end +end + +function Fx_ChooseUltimate(player, hero, s1, s2) + LOG = {'Fx_ChooseUltimate', player, hero, s1, s2} + + local t1, t2 = Fx_UltimateText[s1], Fx_UltimateText[s2] + QuestionBoxForPlayers(GetPlayerFilter(player), + {"/Text/Game/Scripts/Ultimates/OfferUltimates.txt"; name1=t1[1],name2=t2[1],text1=t1[2],text2=t2[2]}, + "Fx_GiveUltimate("..player..",'"..hero.."',"..s1..")", + "Fx_GiveUltimate("..player..",'"..hero.."',"..s2..")" + ) +end + + +function Fx_GiveUltimate(player, hero, skill) + LOG = {'Fx_GiveUltimate', player, hero, skill} + + Fx_PlayerUltimates[player][skill] = 1 + local ultimate = Fx_Ultimates[skill] + GiveHeroSkill(hero, ultimate) + GiveHeroSkill(hero, ultimate) + GiveHeroSkill(hero, ultimate) + if skill == SKILL_LOGISTICS then + Fx_Gifts[hero][ARTIFACT_ANGEL_WINGS] = 1 + elseif skill == SKILL_LEARNING then + TeachHeroSpell(hero,SPELL_MASS_HASTE) + TeachHeroSpell(hero,SPELL_MASS_BLOODLUST) + TeachHeroSpell(hero,SPELL_MASS_DISPEL) + TeachHeroSpell(hero,SPELL_MASS_STONESKIN) + TeachHeroSpell(hero,SPELL_MASS_BLESS) + TeachHeroSpell(hero,SPELL_MASS_DEFLECT_ARROWS) + + TeachHeroSpell(hero,SPELL_MASS_SLOW) + TeachHeroSpell(hero,SPELL_MASS_FORGETFULNESS) + TeachHeroSpell(hero,SPELL_MASS_DISRUPTING_RAY) + TeachHeroSpell(hero,SPELL_MASS_WEAKNESS) + TeachHeroSpell(hero,SPELL_MASS_CURSE) + TeachHeroSpell(hero,SPELL_MASS_PLAGUE) + + TeachHeroSpell(hero, SPELL_WARCRY_RALLING_CRY) + TeachHeroSpell(hero, SPELL_WARCRY_CALL_OF_BLOOD) + TeachHeroSpell(hero, SPELL_WARCRY_WORD_OF_THE_CHIEF) + TeachHeroSpell(hero, SPELL_WARCRY_FEAR_MY_ROAR) + TeachHeroSpell(hero, SPELL_WARCRY_BATTLECRY) + TeachHeroSpell(hero, SPELL_WARCRY_SHOUT_OF_MANY) + end +end + +function Fx_GetHeroDragonblood(hero) + LOG = {'Fx_GetHeroDragonblood', hero} + + local amount = 0 + + amount = amount + 5 * (hero == "Xerxon" or 0) + amount = amount + 10 * (hero == "Menel" or 0) + amount = amount + 10 * (hero == "Thant" or 0) + amount = amount + 10 * (hero == "Melodia" or 0) + amount = amount + 10 * (hero == "Emilia" or 0) + amount = amount + 10 * (hero == "Kunyak" or 0) + amount = amount + 10 * (hero == "KingTolghar" or 0) + amount = amount + 10 * (hero == "Calid2" or 0) + amount = amount + 10 * (hero == "RedHeavenHero03" or 0) + + if H55_Governors[hero] then + amount = amount + 2 * (GetHeroSkillMastery(hero, SKILL_DARK_MAGIC) == 3 or 0) + amount = amount + 2 * (GetHeroSkillMastery(hero, SKILL_LIGHT_MAGIC) == 3 or 0) + amount = amount + 2 * (GetHeroSkillMastery(hero, SKILL_SUMMONING_MAGIC) == 3 or 0) + amount = amount + 2 * (GetHeroSkillMastery(hero, SKILL_DESTRUCTIVE_MAGIC) == 3 or 0) + end + + if HasArtefact(hero, ARTIFACT_ELRATH_02, 0) then + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE) + knowledge = knowledge + 10 * (HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) or 0) + knowledge = knowledge + 5 * (HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) or 0) + amount = amount + math.round(knowledge/2) + end + + if HasArtefact(hero,ARTIFACT_BAND_OF_CONJURER,0) then + local factor = GetHeroStat(hero,STAT_KNOWLEDGE) + local coef = ((100+(factor*2))/100) + amount = math.round(coef*amount) + end + + amount = GetHeroLevel(hero)*amount + return amount +end + +function Fx_PrisonersReward(hero,multiplier,maxtier) + local player = GetObjectOwner(hero) + for creature, amount in Fx_HeroArmy(hero) do + local ttu = Fx_CreaturesInv[creature] + local growth = Fx_Growth[ttu[1]][ttu[2]] + if random(2) == 0 and amount > growth*2 then -- TODO Make the randomness sensible + amount = multiplier*growth + AddHeroCreatures(hero,creature,amount) + if H55_IsThisAIPlayer(player) ~= 1 then + local x,y,z = GetObjectPosition(hero) + startThread(H55_ProtectedSignPrisoners,"/Text/Game/Scripts/Banks/Prisoners.txt",amount,ttu[2],hero,player,H55_MsgSleep,H55_MsgTime) + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArmy,x,y,z) + break + end + end + end + if H55_IsThisAIPlayer(player) ~= 1 then + sleep(4) + end +end + +function Fx_WitchVisit(player, hero, hut) + for _, skill in Fx_Skills do + if GetHeroSkillMastery(hero, skill) >= 1 and GetHeroSkillMastery(hero, skill) < 3 then + GiveHeroSkill(hero, skill) + ShowFlyingSign("/Text/Game/Scripts/Witch/Visited.txt",hero,player,5) + return 1 + end + end +end + +function Fx_GetPlayerDragonblood(player) + local dragonblood = 0 + for i,hero in (GetPlayerHeroes(player) or {}) do + dragonblood = dragonblood + Fx_GetHeroDragonblood(hero) + end + return dragonblood > 600 and 600 or dragonblood +end + + +function Fx_ResurrectArmy(player,hero,ci,side,baseperc,necroperc) + LOG = {'Fx_ResurrectArmy', player, hero, ci, side, baseperc, necroperc} + + local stackscount = GetSavedCombatArmyCreaturesCount(ci,side) + for i = 0,stackscount-1,1 do + local creature,cnt,died = GetSavedCombatArmyCreatureInfo(ci,side,i) + local ttu = Fx_CreaturesInv[creature] + + local resurrect = math.round(math.min(died, cnt*baseperc)) + if resurrect >= 1 then + AddHeroCreatures(hero,creature,resurrect) + Display(player, hero, {"/Text/Game/Scripts/Resurrection.txt"; num=resurrect, tier=ttu[2]}) + end + + if ttu[1] ~= Necropolis then + local growth = Fx_Growth[Necropolis][ttu[2]] / Fx_Growth[ttu[1]][ttu[2]] + + resurrect = math.round(math.min((died - resurrect), (died - resurrect)*necroperc*growth)) + if resurrect >= 1 then + AddHeroCreatures(hero,Fx_Creatures[Necropolis][ttu[2]][ttu[3]],resurrect) + -- TODO RAISE + Display(player, hero, {"/Text/Game/Scripts/Resurrection.txt"; num=resurrect, tier=ttu[2]}) + end + end + end +end + +function Fx_Diplomacy(player, hero,ci,side,percent) + LOG = {'Fx_Diplomacy', hero, ci, side, percent} + + local stackscount = GetSavedCombatArmyCreaturesCount(ci,side) + for i = 0,stackscount-1 do + local creature,cnt,died = GetSavedCombatArmyCreatureInfo(ci,side,i) + if died * percent >= 1 then + AddHeroCreatures(hero,creature,died*percent) + end + end +end + + +function Fx_Reinforce(player, hero, town, tier, growth) + LOG = {'Fx_Reinforce', player, hero, town, tier, growth} + + if growth < 1 then return end + for creature, _ in Fx_HeroArmy(hero) do + if table.contains(Fx_Creatures[town][tier], creature) then + AddHeroCreatures(hero,creature,growth) + return + end + end +end + +function Fx_SpecReinforce(player, hero, town, tier, coef) + LOG = { 'Fx_SpecReinforce', player, hero, town, tier, coef} + + local multiplier = 0.6 + 0.4 * length(H55_GetPlayerTowns(player)) + local growth = math.floor(multiplier*coef* Fx_Growth[town][tier]); + Fx_Reinforce(player, hero, town, tier, growth) +end + +function Fx_DailyReinforcements(player, hero) + if GetHeroLevel(hero) >= 1 then + Fx_Reinforce(player, hero, Inferno, 1, HasHeroSkill(hero,SKILL_SPOILS_OF_WAR) or 0) + Fx_Reinforce(player, hero, Fortress, 1, HasHeroSkill(hero,SKILL_DEMONIC_FLAME) or 0) + Fx_Reinforce(player, hero, Stronghold, 3, HasHeroSkill(hero,SKILL_DEFEND_US_ALL) or 0) + Fx_Reinforce(player, hero, Academy, 3, HasHeroSkill(hero,SKILL_MARCH_OF_THE_MACHINES) or 0) + Fx_Reinforce(player, hero, Sylvan, 3, HasHeroSkill(hero,SKILL_FOREST_GUARD_EMBLEM) or 0) + end +end + +function Fx_WeeklyReinforcements(player, hero) + local N = 0.07 * GetHeroLevel(hero) + + Fx_SpecReinforce(player, hero, Stronghold, 1, N * (hero == "Hero9" or 0)) + Fx_SpecReinforce(player, hero, Haven, 1, N * (hero == "Nathaniel" or 0)) + Fx_SpecReinforce(player, hero, Inferno, 1, N * (hero == "Calh" or 0)) + Fx_SpecReinforce(player, hero, Necropolis, 1, N * (hero == "Nimbus" or 0)) + Fx_SpecReinforce(player, hero, Sylvan, 1, N * (hero == "Gem" or 0)) + Fx_SpecReinforce(player, hero, Necropolis, 2, N/2 * (hero == "Straker" or 0)) + Fx_SpecReinforce(player, hero, Academy, 2, N * (hero == "Gurvilin" or 0)) + Fx_SpecReinforce(player, hero, Haven, 3, N/2 * (hero == "Mardigo" or 0)) + Fx_SpecReinforce(player, hero, Academy, 3, N/2 * (hero == "Isher" or 0)) + Fx_SpecReinforce(player, hero, Necropolis, 3, N * (hero == "Nemor" or 0)) + Fx_SpecReinforce(player, hero, Dungeon, 4, N/2 * (hero == "Ferigl" or 0)) + Fx_SpecReinforce(player, hero, Dungeon, 3, N/2 * (hero == "Darkstorm" or 0)) + Fx_SpecReinforce(player, hero, Sylvan, 4, N * (hero == "Ildar" or 0)) + Fx_SpecReinforce(player, hero, Fortress, 4, N * (hero == "Maximus" or 0)) + Fx_SpecReinforce(player, hero, Stronghold, 4, N * (hero == "Hero7" or 0)) + Fx_SpecReinforce(player, hero, Academy, 5, N * (hero == "Cyrus" or 0)) + Fx_SpecReinforce(player, hero, Haven, 5, N * (hero == "GodricMP" or 0)) + Fx_SpecReinforce(player, hero, Necropolis, 5, N * (hero == "Vidomina" or 0)) + Fx_SpecReinforce(player, hero, Academy, 6, N * (hero == "Davius" or 0)) + Fx_SpecReinforce(player, hero, Dungeon, 6, N * (hero == "Shadwyn" or 0)) + Fx_SpecReinforce(player, hero, Inferno, 6, N * (hero == "Malustar" or 0)) + Fx_SpecReinforce(player, hero, Fortress, 6, N * (hero == "Ufretin" or 0)) + Fx_SpecReinforce(player, hero, Necropolis, 6, N * (hero == "Pelt" or 0)) + Fx_SpecReinforce(player, hero, Haven, 7, N * (hero == "Nicolai" or 0)) + Fx_SpecReinforce(player, hero, Academy, 7, N * (hero == "Rissa" or 0)) + Fx_SpecReinforce(player, hero, Sylvan, 7, N * (hero == "Jenova" or 0)) + Fx_SpecReinforce(player, hero, Fortress, 7, N * (hero == "Hangvul2" or 0)) + Fx_SpecReinforce(player, hero, Dungeon, 7, N * (hero == "Agbeth" or 0)) + Fx_SpecReinforce(player, hero, Necropolis, 7, N * (hero == "Archilus" or 0)) + Fx_SpecReinforce(player, hero, Inferno, 7, N * (hero == "Harkenraz" or 0)) + Fx_SpecReinforce(player, hero, Stronghold, 7, N * (hero == "GottaiMP" or 0)) + + local town = H55_GetHeroRaceNum(hero) + if HasHeroSkill(hero,SKILL_LORD_OF_UNDEAD) then + Fx_Reinforce(player, hero, town, 1, GetHeroStat(hero, STAT_KNOWLEDGE)) + end + if HasHeroSkill(hero,SKILL_EXPLODING_CORPSES) then + Fx_SpecReinforce(player, hero, town, Fx_Casters[town], 0.05 * GetHeroStat(hero, STAT_KNOWLEDGE)) + end +end + + +function Fx_HandleVictory(player, hero, ci, side) + LOG = {'Fx_HandleVictory', player, hero, ci, side} + + + ---- RESOURCE ---- + + if HasHeroSkill(hero, SKILL_FINE_RUNE) then + local remaining = 5 + for resource, amount in Fx_Resources[player] do + local refund = math.min(remaining, math.max(0, amount - GetPlayerResource(player, resource))) + GivePlayerResource(player, hero, resource, refund) + remaining = remaining - refund + end + end + + local resource = 0 + + resource = resource + 2 * GetHeroSkillMastery(hero, SKILL_ACADEMY_AWARD) + resource = resource + 1 * (HasArtefact(hero,ARTIFACT_PIRATE04,1) or 0) + resource = resource + 1 * Fx_GovernorBonuses[player][SKILL_WAR_MACHINES] + + GivePlayerResource(player, hero, random(7), resource) + + + ---- GOLD ---- + + local gold = 0 + + gold = gold + (random(201) + 100) * (HasArtefact(hero,ARTIFACT_PIRATE02,1) or 0) + gold = gold + 300 * Fx_GovernorBonuses[player][SKILL_LUCK] + + GivePlayerResource(player, hero, GOLD, gold) + + + ---- MANA ---- + + local mana = HasHeroWarMachine(hero, WAR_MACHINE_AMMO_CART) and 6 or 2 + + mana = mana + 1 * (HasArtefact(hero, ARTIFACT_BEGINNER_MAGIC_STICK, 1) or 0) + mana = mana + 1 * (HasArtefact(hero, ARTIFACT_BREASTPLATE_OF_PETRIFIED_WOOD, 1) or 0) + mana = mana + 2 * (HasArtefact(hero, ARTIFACT_CROWN_OF_MAGI, 1) or 0) + mana = mana + 1 * (HasArtefact(hero, ARTIFACT_EARTHSLIDERS, 1) or 0) + mana = mana + 1 * (HasArtefact(hero, ARTIFACT_EVERCOLD_ICICLE, 1) or 0) + mana = mana + 2 * (HasArtefact(hero, ARTIFACT_EIGHTFOLD, 1) or 0) + mana = mana + 2 * (HasArtefact(hero, ARTIFACT_GEAR_03, 1) or 0) + mana = mana + 3 * (HasArtefact(hero, ARTIFACT_MONK_01, 1) or 0) + mana = mana + 1 * (HasArtefact(hero, ARTIFACT_MONK_02, 1) or 0) + mana = mana + 1 * (HasArtefact(hero, ARTIFACT_MONK_03, 1) or 0) + mana = mana + 1 * (HasArtefact(hero, ARTIFACT_MONK_04, 1) or 0) + mana = mana + 1 * (HasArtefact(hero, ARTIFACT_PHOENIX_FEATHER_CAPE, 1) or 0) + mana = mana + 2 * (HasArtefact(hero, ARTIFACT_ROBE_OF_MAGI, 1) or 0) + mana = mana + 1 * (HasArtefact(hero, ARTIFACT_RUNE_OF_FLAME, 1) or 0) + mana = mana + 1 * (HasArtefact(hero, ARTIFACT_RUNIC_WAR_AXE, 1) or 0) + mana = mana + 1 * (HasArtefact(hero, ARTIFACT_RUNIC_WAR_HARNESS, 1) or 0) + mana = mana - 1 * (HasArtefact(hero, ARTIFACT_UPG_ST1, 1) or 0) + mana = mana + 2 * (HasArtefact(hero, ARTIFACT_UPG_ST2, 1) or 0) + + + ChangeHeroStat(hero, STAT_MANA_POINTS, mana/2 * (2 + GetHeroStat(hero, STAT_KNOWLEDGE))) + + + ---- MOVEMENT ---- + + local movement = HasHeroSkill(hero,SKILL_RAISE_ARCHERS) and 100 or 0 + + movement = movement - 200 * (3 - GetHeroSkillMastery(hero,SKILL_RUSH)) * (HasHeroSkill(hero,SKILL_RUSH) or 0) + movement = movement - 200 * (3 - GetHeroSkillMastery(hero,SKILL_STAMINA)) * (HasHeroSkill(hero,SKILL_STAMINA) or 0) + movement = movement + 150 * (HasArtefact(hero,ARTIFACT_PIRATE05,1) or 0) + movement = movement + 150 * (HasArtefact(hero,ARTIFACT_GUARDIAN_02,1) or 0) + movement = movement + 500 * (HasArtefact(hero,ARTIFACT_PIRATE01,1) and IsHeroInBoat(hero) or 0) + movement = movement + 250 * (HasArtefact(hero,ARTIFACT_PIRATE06,1) and IsHeroInBoat(hero) or 0) + movement = movement + 100 * Fx_GovernorBonuses[player][SKILL_LOGISTICS] + + ChangeHeroStat(hero, STAT_MOVE_POINTS, movement) + + ---- experience ---- + + local experience = 500 * Fx_GovernorBonuses[player][SKILL_LEARNING] + + ChangeHeroStat(hero, STAT_EXPERIENCE, experience) + + ---- DIPLOMACY ---- + + local join = (hero == 'Elleshar' or hero == 'Markal') and 0.1 or 0 + + join = join + 0.05 * GetHeroSkillMastery(hero, SKILL_DIPLOMACY) + join = join + 0.05 * (HasArtefact(hero, ARTIFACT_CROWN_OF_LEADER, 1) or 0) + join = join + 0.01 * Fx_GovernorBonuses[player][SKILL_LEADERSHIP] + + Fx_Diplomacy(player,hero,ci,1-side,join) + + + ---- RESURRECTION ---- + + local resurrect = 0 + + resurrect = resurrect + 0.02 * (HasArtefact(hero,ARTIFACT_LIFE_01,1) or 0) + resurrect = resurrect + 0.03 * (HasArtefact(hero,ARTIFACT_LIFE_02,1) or 0) + resurrect = resurrect + 0.03 * (HasArtefact(hero,ARTIFACT_LIFE_03,1) or 0) + resurrect = resurrect + 0.04 * (HasArtefact(hero,ARTIFACT_LIFE_04,1) or 0) + resurrect = resurrect + 0.04 * (HasArtefact(hero,ARTIFACT_SANDALS_OF_THE_SAINT,1) or 0) + resurrect = resurrect + 0.05 * (HasArtefact(hero,ARTIFACT_MEDICAL01,1) or 0) + resurrect = resurrect + 0.05 * (HasArtefact(hero,ARTIFACT_MEDICAL02,1) or 0) + + resurrect = resurrect + 0.03 * (HasArtefact(hero,ARTIFACT_MEDICAL03,1) or 0) + resurrect = resurrect + 0.03 * (HasArtefact(hero,ARTIFACT_MEDICAL04,1) or 0) + resurrect = resurrect + 0.04 * (HasArtefact(hero,ARTIFACT_GEAR_02,1) or 0) + + resurrect = resurrect + 0.02 * GetHeroSkillMastery(hero,SKILL_NO_REST_FOR_THE_WICKED) + resurrect = resurrect + 0.04 * GetHeroSkillMastery(hero,SKILL_GUARDIAN_ANGEL) + resurrect = resurrect + 0.20 * GetHeroSkillMastery(hero,SKILL_SHATTER_SUMMONING_MAGIC) + + for _, racial in {SKILL_ARTIFICIER, SKILL_AVENGER, SKILL_DEMONIC_RAGE, SKILL_GATING, SKILL_NECROMANCY, SKILL_RUNELORE} do + resurrect = resurrect + 0.01 * Fx_GovernorBonuses[player][racial] + end + + if HasArtefact(hero,ARTIFACT_POTION03,1) then + RemoveArtefact(hero, ARTIFACT_POTION03) + resurrect = resurrect + 0.15 + end + + local raise = 0.1 * GetHeroSkillMastery(hero, SKILL_NECROMANCY) + raise = raise + 0.1 * GetHeroSkillMastery(hero, SKILL_CHILLING_BONES) + raise = raise + 0.4 * GetHeroSkillMastery(hero, SKILL_HERALD_OF_DEATH) + -- raise = raise + 0.05 * (HasArtefact(hero, ARTIFACT_NECRO) or 0) -- TODO + + Fx_ResurrectArmy(player,hero,ci,side,resurrect,raise) + +end + +function Fx_HeroArmy(hero) + local units, creatures = {}, {} + units[0], units[1], units[2], units[3], units[4], units[5], units[6] = GetHeroCreaturesTypes(hero) + for _, unit in units do + if unit and unit ~= 0 then + creatures[unit] = GetHeroCreatures(hero,unit) + end + end + return creatures +end + +function Fx_ObjectArmy(object) + local units, creatures = {}, {} + units[0], units[1], units[2], units[3], units[4], units[5], units[6] = GetObjectCreaturesTypes(object) + for _, unit in units do + if unit and unit ~= 0 then + creatures[unit] = GetObjectCreatures(object,unit) + end + end + return creatures +end + +function Fx_FactionsInArmy(hero) + local factions = {} + for creature, _ in Fx_HeroArmy(hero) do + factions[Fx_CreaturesInv[creature][1]] = 1 + end + return 0 + length(factions) +end + +function Fx_CreaturesInArmy(hero, town, tier, upgr) + local total = 0 + for creature, amount in Fx_HeroArmy(hero) do + local typ = Fx_CreaturesInv[creature] + if (not town or town == typ[1]) and (not tier or tier == typ[2]) and (not upgr or upgr == typ[3]) then + total = total + amount + end + end + return total +end + +function Fx_TeachRandomSpell(player, hero, school, level) + LOG = {'Fx_TeachRandomSpell', player, hero, school, level} + + local spells = Fx_Spells[school][level] + local N, rnd = length(spells), random(length(spells)) + for i = 1,N do + if not KnowHeroSpell(hero, spells[mod(rnd+i, N)+1]) then + Display(player, hero, {"/Text/Game/Scripts/Learnspell.txt"; level=level}) + TeachHeroSpell(hero, spells[mod(rnd+i, N)+1]) + return + end + end +end + +function Fx_TeachSpellOnSkill(hero, skill, spell) + if HasHeroSkill(hero, skill) then + TeachHeroSpell(hero, spell) + end +end + +function Fx_UpdateSpellOwner(hero, skill, circle) + local x = Update(Fx_SpellOwners[circle][hero], skill, HasHeroSkill(hero, skill)) + return x +end + +function Fx_HandleSpells(player, hero) + LOG = {'Fx_HandleSpells', player, hero} + + if H55_ChieftainsPhonebook[hero] then return end + + Fx_TeachSpellOnSkill(hero, SKILL_SET_AFIRE, SPELL_CONJURE_PHOENIX) + Fx_TeachSpellOnSkill(hero, SKILL_MASTER_OF_ICE, SPELL_ICE_BOLT) + Fx_TeachSpellOnSkill(hero, SKILL_MASTER_OF_FIRE, SPELL_FIREWALL) + Fx_TeachSpellOnSkill(hero, SKILL_MASTER_OF_LIGHTNINGS, SPELL_LIGHTNING_BOLT) + Fx_TeachSpellOnSkill(hero, SKILL_DEADLY_COLD, SPELL_FROST_RING) + + Fx_TeachSpellOnSkill(hero, SKILL_TWILIGHT, SPELL_REGENERATION) + Fx_TeachSpellOnSkill(hero, SKILL_MASTER_OF_BLESSING, SPELL_BLESS) + Fx_TeachSpellOnSkill(hero, SKILL_MASTER_OF_ABJURATION, SPELL_STONESKIN) + Fx_TeachSpellOnSkill(hero, SKILL_MASTER_OF_WRATH, SPELL_HASTE) + Fx_TeachSpellOnSkill(hero, SKILL_MASTER_OF_CURSES, SPELL_CURSE) + Fx_TeachSpellOnSkill(hero, SKILL_MASTER_OF_SICKNESS, SPELL_PLAGUE) + Fx_TeachSpellOnSkill(hero, SKILL_MASTER_OF_MIND, SPELL_FORGETFULNESS) + + Fx_TeachSpellOnSkill(hero, SKILL_MASTER_OF_QUAKES, SPELL_EARTHQUAKE) + Fx_TeachSpellOnSkill(hero, SKILL_DEAD_LUCK, SPELL_FORGETFULNESS) + Fx_TeachSpellOnSkill(hero, SKILL_WEAKENING_STRIKE, SPELL_CURSE) + Fx_TeachSpellOnSkill(hero, SKILL_DEAD_LUCK, SPELL_FORGETFULNESS) + Fx_TeachSpellOnSkill(hero, SKILL_CUNNING_OF_THE_WOODS, SPELL_MASS_DISRUPTING_RAY) +end + +function Fx_HandleSpellsDaily(player, hero) + LOG = {'Fx_HandleSpellsDaily', player, hero} + + if Fx_UpdateSpellOwner(hero, SKILL_WISDOM, 4) then + Fx_TeachRandomSpell(player, hero, Fx_Schools[1+random(4)], 4) + end + if Fx_UpdateSpellOwner(hero, SKILL_EAGLE_EYE, 5) then + Fx_TeachRandomSpell(player, hero, Fx_Schools[1+random(4)], 5) + Fx_TeachRandomSpell(player, hero, Fx_Schools[1+random(4)], 5) + end + + for _, school in Fx_Schools do + local mastery = GetHeroSkillMastery(hero, school) + + if mastery >= 1 then + TeachHeroSpell(hero, Fx_Spells[school][1][1]) + end + if mastery >= 2 and Fx_UpdateSpellOwner(hero, school, 1) then + Fx_TeachRandomSpell(player, hero, school, 1) + end + if mastery >= 3 and Fx_UpdateSpellOwner(hero, school, 2) then + Fx_TeachRandomSpell(player, hero, school, 2) + end + end + + if HasHeroSkill(hero,SKILL_SCHOLAR) then + for _, school in Fx_UnusualSchools[H55_GetHeroRaceNum(hero)] do + local mastery = GetHeroSkillMastery(hero, school) + if mastery >= 1 and GetHeroLevel(hero) >= 20 and Fx_UpdateSpellOwner(hero, school, 3) then + Fx_TeachRandomSpell(player, hero, school, 3) + end + if mastery >= 2 and GetHeroLevel(hero) >= 25 and Fx_UpdateSpellOwner(hero, school, 4) then + Fx_TeachRandomSpell(player, hero, school, 4) + end + if mastery >= 3 and GetHeroLevel(hero) >= 30 and Fx_UpdateSpellOwner(hero, school, 5) then + Fx_TeachRandomSpell(player, hero, school, 5) + end + end + end +end + +function Fx_HandleStats(player, hero) + LOG = {'Fx_HandleStats', player, hero} + + Fx_ChangeStatOnSkill(hero, SKILL_ABSOLUTE_LUCK, STAT_ATTACK, -6/3) + Fx_ChangeStatOnSkill(hero, SKILL_ABSOLUTE_PROTECTION, STAT_DEFENCE, -6/3) + Fx_ChangeStatOnSkill(hero, SKILL_WEAKEN_SUMMONING, STAT_ATTACK, -6/3) + Fx_ChangeStatOnSkill(hero, SKILL_RETRIBUTION, STAT_MORALE, 5/3) + + Fx_ChangeStatOnSkill(hero, SKILL_CUNNING_OF_THE_WOODS, STAT_KNOWLEDGE, 2) + Fx_ChangeStatOnSkill(hero, SKILL_FOREST_RAGE, STAT_LUCK, 1) + Fx_ChangeStatOnSkill(hero, SKILL_DEMONIC_FLAME, STAT_DEFENCE, 2) + + Fx_ChangeStatOnSkill(hero, SKILL_POWER_OF_HASTE, STAT_KNOWLEDGE, 1) + Fx_ChangeStatOnSkill(hero, SKILL_WEAKENING_STRIKE, STAT_SPELL_POWER, 3) + + Fx_ChangeStatOnSkill(hero, SKILL_DEMONIC_FIRE, STAT_SPELL_POWER, 2) + Fx_ChangeStatOnSkill(hero, SKILL_EMPOWERED_SPELLS, STAT_KNOWLEDGE, 3) + Fx_ChangeStatOnSkill(hero, SKILL_ELEMENTAL_BALANCE, STAT_SPELL_POWER, 2) + + Fx_ChangeStatOnSkill(hero, SKILL_MASTER_OF_QUAKES, STAT_KNOWLEDGE, 2) + Fx_ChangeStatOnSkill(hero, SKILL_COUNTERSPELL, STAT_KNOWLEDGE, 7) + + Fx_ChangeStatOnSkill(hero, SKILL_SCHOLAR, STAT_MORALE, Fx_FactionsInArmy(hero)) + + if H55_ChieftainsPhonebook[hero] then + Fx_ChangeStatOnSkill(hero, SKILL_POWER_OF_HASTE, STAT_ATTACK, 3) + Fx_ChangeStatOnSkill(hero, SKILL_POWER_OF_STONE, STAT_DEFENCE, 3) + Fx_ChangeStatOnSkill(hero, SKILL_MIGHT_OVER_MAGIC, STAT_ATTACK, GetHeroStat(hero, STAT_SPELL_POWER)/2) + end + + local scale = 0 + + scale = 1 + 0.05 * (Fx_GovernorBonuses[player][SKILL_OFFENCE] + Fx_GovernorBonuses[player][SKILL_RUSH]) + ScaleStatOn(hero, SKILL_OFFENCE, STAT_ATTACK, scale - 1) + + scale = 1 + 0.05 * (Fx_GovernorBonuses[player][SKILL_DEFENCE] + Fx_GovernorBonuses[player][SKILL_STAMINA] + Fx_GovernorBonuses[player][SKILL_TRAINING]) + scale = scale + scale * 0.5 / 3 * GetHeroSkillMastery(hero, SKILL_CORRUPT_DARK) + ScaleStatOn(hero, SKILL_DEFENCE, STAT_DEFENCE, scale - 1) + + scale = 1 + 0.05 * (Fx_GovernorBonuses[player][SKILL_INVOCATION] + Fx_GovernorBonuses[player][SKILL_SORCERY]) + scale = scale + scale * 0.1 * GetHeroSkillMastery(hero, SKILL_INVOCATION) + scale = scale - scale * 0.2 * GetHeroSkillMastery(hero, SKILL_MIGHT_OVER_MAGIC) * (H55_ChieftainsPhonebook[hero] or 0) + ScaleStatOn(hero, SKILL_INVOCATION, STAT_SPELL_POWER, scale - 1) + + scale = 1 + 0.05 * Fx_GovernorBonuses[player][SKILL_FAITH] + ScaleStatOn(hero, SKILL_FAITH, STAT_KNOWLEDGE, scale - 1) +end + +function Fx_HandleEvents(player, hero) + LOG = {'Fx_HandleEvents', player, hero} + + if GetHeroStat(hero, STAT_MOVE_POINTS) == 0 and (Fx_DarkRitual[hero] or 0) >= 3000 then + ChangeHeroStat(hero,STAT_MOVE_POINTS,1500 * (hero == "Arniel" or hero == "Hero2" and 20 or 1)) + end + + Fx_DarkRitual[hero] = GetHeroStat(hero, STAT_MOVE_POINTS) + if HasArtefact(hero, ARTIFACT_POTION02, 1) and GetHeroStat(hero,STAT_MOVE_POINTS) <= 100 then + ChangeHeroStat(hero,STAT_MOVE_POINTS,1500) + RemoveArtefact(hero, ARTIFACT_POTION02) + end + if HasArtefact(hero, ARTIFACT_POTION01, 1) and GetHeroStat(hero,STAT_MANA_POINTS) <= 2*GetHeroStat(hero, STAT_KNOWLEDGE) then + ChangeHeroStat(hero,STAT_MANA_POINTS,9999) + RemoveArtefact(hero, ARTIFACT_POTION01) + end + + local race = H55_GetHeroRaceNum(hero) + local army = Fx_HeroArmy(hero) + for creature, amount in army do + local tt = Fx_CreaturesInv[creature] + if creature == CREATURE_PHOENIX and not HasHeroSkill(hero, SKILL_MASTER_OF_CREATURES) then + ChangeHeroStat(hero, STAT_MANA_POINTS, -999) + end + if creature == CREATURE_SNOW_APE and not HasHeroSkill(hero, SKILL_RUNIC_ARMOR) then + ChangeHeroStat(hero, STAT_MANA_POINTS, -999) + end + if creature == CREATURE_BLACK_KNIGHT and not HasHeroSkill(hero, SKILL_SHATTER_LIGHT_MAGIC) then + ChangeHeroStat(hero, STAT_MANA_POINTS, -999) + end + if tt[1] == race and tt[2] == 6 and HasHeroSkill(hero, SKILL_MASTER_OF_CREATURES)then + RemoveHeroCreatures(hero, creature, amount) + AddHeroCreatures(hero, CREATURE_PHOENIX, amount) + end + if tt[1] == race and tt[2] == 6 and HasHeroSkill(hero, SKILL_RUNIC_ARMOR) then + RemoveHeroCreatures(hero, creature, amount) + AddHeroCreatures(hero, CREATURE_SNOW_APE, amount) + end + if tt[1] == race and tt[2] == 6 and HasHeroSkill(hero, SKILL_SHATTER_LIGHT_MAGIC) then + RemoveHeroCreatures(hero, creature, amount) + AddHeroCreatures(hero, CREATURE_BLACK_KNIGHT, amount) + end + end +end + +function DisabledMixStacks() + print("H55 Modifying Neutral stack sizes...") + -- BlockGame() + + local creatures = GetObjectNamesByType("CREATURE") + + for ix, object in creatures do + local creatures = MonsterInfo(object) + local power,unit,typ,stacks = 0, 1, {0,0,0}, 5 + local ix = 0 + for unit_, count in creatures do + ix = ix + 1 + local typ_ = Fx_CreaturesInv[unit_] + power = power + count / CreaturesGrowth[typ_[1]][typ_[2]] + if typ_[2] > typ[2] then + unit = unit_ + typ = typ_ + end + if ix > 1 then + RemoveObjectCreatures(object, unit_, count) + end + end + power = power * (typ[2] == 1 and 0.8 or 1) + RemoveObjectCreatures(object, unit, 1 + creatures[unit] * (ix == 1 and 2/3 or 0)) + local town2 = AlignedTowns[typ[1]][1+random(4)] + for i = 1,2 do + local town = i < 2 and typ[1] or town2 + local tier, up = 1+random(Fx_CreaturesInv[unit][2]), 2+random(2) + local amount = math.ceil(power / 3 * CreaturesGrowth[town][tier]) + if amount >= 1 then + AddObjectCreatures(object, Fx_Creatures[town][tier][up], amount) + end + end + + if mod(ix, 10) == 0 then print(ix) sleep(10) end + end + -- UnblockGame() + print("H55 Neutrals processed") +end + +function Fx_HandleArtifacts(player, hero) + LOG = {'Fx_HandleArtifacts', player, hero} + + if GetHeroSkillMastery(hero, SKILL_SHATTER_DARK_MAGIC) > Fx_Curses and not Fx_IsThisAIPlayer(player) and GetHeroLevel(hero) > 1 then + Fx_Curses = GetHeroSkillMastery(hero, SKILL_SHATTER_DARK_MAGIC) + end + + if Fx_IsThisAIPlayer(player) then + if HasArtefact(hero, ARTIFACT_HELM_OF_CHAOS) then + RemoveArtefact(hero, ARTIFACT_HELM_OF_CHAOS) + end + else + if Fx_Curses > GetHeroSkillMastery(hero, SKILL_SHATTER_DARK_MAGIC) then + if not Fx_Gifts[hero][ARTIFACT_HELM_OF_CHAOS] then + Fx_Gifts[hero][ARTIFACT_HELM_OF_CHAOS] = 1 + end + else + Fx_Gifts[hero][ARTIFACT_HELM_OF_CHAOS] = nil + if HasArtefact(hero, ARTIFACT_HELM_OF_CHAOS) then + RemoveArtefact(hero, ARTIFACT_HELM_OF_CHAOS) + end + end + end + + for artifact, value in Fx_Gifts[hero] do + -- weird behavior: value can be `nil` + if value and Update(Fx_Gifts[hero], artifact, 2) then + GiveArtefact(hero, artifact) + else + if value and not HasArtefact(hero, artifact) then + GiveArtifact(hero, artifact) + for _, badboy in (GetPlayerHeroes(player) or {}) do + if HasArtefact(badboy, artifact) then + RemoveArtefact(badboy, artifact) + sleep(1) + if Fx_Gifts[badboy][artifact] and not HasArtefact(badboy, artifact) then + GiveArtifact(badboy, artifact) + else + break + end + end + end + end + end + end +end + +function Fx_WeeklyEvents(player) + LOG = {'Fx_WeeklyEvents', player} + + for _, hero in (GetPlayerHeroes(player) or {}) do + Fx_WeeklyReinforcements(player, hero) + end +end + +function Fx_DailyEvents(player) + LOG = {'Fx_DailyEvents', player} + + for _, skill in Fx_Skills do + local bonus = 0 + for _, hero in (GetPlayerHeroes(player) or {}) do + bonus = bonus + (H55_Governors[hero] and GetHeroSkillMastery(hero,skill) == 3 or 0) + end + Fx_GovernorBonuses[player][skill] = bonus + end + + for _, hero in (GetPlayerHeroes(player) or {}) do + if Fx_OfferUltimates(player, hero) then + break + end + end + + for _, hero in (GetPlayerHeroes(player) or {}) do + Fx_DailyReinforcements(player, hero) + + local gold = 0 + + gold = gold + 0.5 * GetHeroSkillMastery(hero, SKILL_GOBLIN_SUPPORT) * Fx_CreaturesInArmy(hero, Stronghold, 1) + + H55_GlobalDailyGoldPayout[player] = H55_GlobalDailyGoldPayout[player]+gold + end +end + +function Fx_InstantEvents(player) + if Fx_Lock == 1 then return end + + LOG = {'Fx_InstantEvents', player} + + for _, hero in (GetPlayerHeroes(player) or {}) do + Fx_HandleStats(player, hero) + Fx_HandleSpells(player, hero) + Fx_HandleSpellsDaily(player, hero) + Fx_HandleEvents(player, hero) + startThread(Fx_HandleArtifacts, player, hero) + + local ci = GetLastSavedCombatIndex() + for side=0,1 do + if GetSavedCombatArmyHero(ci,side)==hero and Update(Fx_Battle[side], hero, ci) then + Fx_HandleVictory(player, hero, ci, side) + end + end + + end + + for _, hero in (GetPlayerHeroes(player) or {}) do + local cursed = Fx_Curses - GetHeroSkillMastery(hero, SKILL_SHATTER_DARK_MAGIC) + local badboy = cursed > 0 and not HasArtefact(hero, ARTIFACT_HELM_OF_CHAOS,1) or 0 + + Fx_ChangeStatOn(hero, SKILL_FAITH, STAT_MORALE, -2 * badboy) + Fx_ChangeStatOn(hero, SKILL_FAITH, STAT_LUCK, -2 * badboy) + end + + for resource = 0,6 do + Fx_Resources[player][resource] = GetPlayerResource(player, resource) + end +end + + +H55_GetHeroDragonblood = Fx_GetHeroDragonblood +H55_GetPlayerDragonblood = Fx_GetPlayerDragonblood +H55_PrisonersReward = Fx_PrisonersReward diff --git a/scripts/Frax/Mission.lua b/scripts/Frax/Mission.lua new file mode 100644 index 00000000..633547fe --- /dev/null +++ b/scripts/Frax/Mission.lua @@ -0,0 +1,39 @@ + +function Fx_MissionEnd(hero, missionName) + LOG = {'Fx_MissionEnd', hero} + + Fx_Lock = 1 + + for _, stat in {STAT_ATTACK, STAT_DEFENCE, STAT_SPELL_POWER, STAT_KNOWLEDGE} do + local amount = 0 + for _, num in Fx_Stats[stat][hero] do + if not (-1 < amount and amount < 1) then + amount = amount + num + end + end + SetGameVar(missionName..'.Stat.'..hero..'.'..stat, amount) + end + + for circle, owners in Fx_SpellOwners do + for _, skill in Fx_MagicSkills do + local name = missionName..'.SpellOwner.'..circle..'.'..hero..'.'..skill + SetGameVar(name, owners[hero][skill] and '1' or '0') + end + end +end + + +function Fx_MissionStart(hero, previousMissionName) + LOG = {'Fx_MissionStart', hero} + + for _, stat in {STAT_ATTACK, STAT_DEFENCE, STAT_SPELL_POWER, STAT_KNOWLEDGE} do + Fx_ChangeStat(hero, stat, 0 + GetGameVar(previousMissionName..'.Stat.'..hero..'.'..stat)) + end + + for circle, owners in Fx_SpellOwners do + for _, skill in Fx_MagicSkills do + local name = previousMissionName..'.SpellOwner.'..circle..'.'..hero..'.'..skill + owners[hero][skill] = GetGameVar(name) == '1' + end + end +end \ No newline at end of file diff --git a/scripts/Frax/Skills.lua b/scripts/Frax/Skills.lua new file mode 100644 index 00000000..7be66883 --- /dev/null +++ b/scripts/Frax/Skills.lua @@ -0,0 +1,114 @@ +SKILL_STAMINA = SKILL_EXPERT_TRAINER +SKILL_RUSH = SKILL_WARCRY_LEARNING +SKILL_FAITH = SKILL_SHATTER_DARK_MAGIC + +Fx_Skills = { + SKILL_OFFENCE, + SKILL_DEFENCE, + SKILL_LUCK, + SKILL_EXPERT_TRAINER, + SKILL_WARCRY_LEARNING, + SKILL_LOGISTICS, + SKILL_SHATTER_DARK_MAGIC, + SKILL_WAR_MACHINES, + SKILL_LEARNING, + SKILL_TRAINING, + SKILL_LEADERSHIP, + SKILL_SORCERY, + SKILL_INVOCATION, + SKILL_SUMMONING_MAGIC, + SKILL_DESTRUCTIVE_MAGIC, + SKILL_DARK_MAGIC, + SKILL_LIGHT_MAGIC, + SKILL_GATING, + SKILL_NECROMANCY, + SKILL_AVENGER, + SKILL_ARTIFICIER, + SKILL_RUNELORE, + SKILL_DEMONIC_RAGE, + SKILL_VOICE, +} + +Fx_Perks = { + [SKILL_OFFENCE] = { SKILL_FAST_AND_FURIOUS, SKILL_FRENZY, SKILL_TACTICS, SKILL_CHILLING_STEEL, SKILL_OFFENSIVE_FORMATION, SKILL_ARCHERY }, + [SKILL_DEFENCE] = { SKILL_DEFENSIVE_FORMATION, SKILL_HOLD_GROUND, SKILL_LAST_STAND, SKILL_EVASION, SKILL_PROTECTION, SKILL_SPELLPROOF_BONES }, + [SKILL_LUCK] = { SKILL_ELVEN_LUCK, SKILL_LUCKY_STRIKE, SKILL_DEAD_LUCK, SKILL_DARK_REVELATION, SKILL_CHAOTIC_SPELLS, SKILL_LUCKY_SPELLS }, + [SKILL_EXPERT_TRAINER] = { SKILL_TOUGHNESS, SKILL_PREPARATION, SKILL_RESISTANCE, SKILL_DWARVEN_LUCK, SKILL_POWER_OF_STONE, SKILL_BODYBUILDING }, + [SKILL_WARCRY_LEARNING] = { SKILL_POWER_OF_HASTE, SKILL_TELEPORT_ASSAULT, SKILL_SNATCH, SKILL_DEATH_TREAD, SKILL_RUNIC_MACHINES, SKILL_WILDFIRE }, + [SKILL_LOGISTICS] = { SKILL_DISGUISE_AND_RECKON, SKILL_REMOTE_CONTROL, SKILL_PATHFINDING, SKILL_NAVIGATION, SKILL_GRAIL_VISION, SKILL_ESTATES }, + [SKILL_SHATTER_DARK_MAGIC] = { SKILL_DETAIN_SUMMONING, SKILL_BARBARIAN_FOG_VEIL, SKILL_DETAIN_DESTRUCTIVE, SKILL_BARBARIAN_ANCIENT_SMITHY, SKILL_DETAIN_LIGHT, SKILL_BARBARIAN_STORM_WIND, SKILL_DETAIN_DARK, SKILL_BARBARIAN_SOIL_BURN }, + [SKILL_WAR_MACHINES] = { SKILL_BALLISTA, SKILL_TRIPLE_BALLISTA, SKILL_FIRST_AID, SKILL_LAST_AID, SKILL_CATAPULT, SKILL_TRIPLE_CATAPULT }, + [SKILL_LEARNING] = { SKILL_SCOUTING, SKILL_QUICKNESS_OF_MIND, SKILL_SCHOLAR, SKILL_MENTORING, SKILL_INTELLIGENCE, SKILL_COUNTERSPELL }, + [SKILL_TRAINING] = { SKILL_HOLY_CHARGE, SKILL_CRITICAL_STRIKE, SKILL_STUNNING_BLOW, SKILL_POWERFULL_BLOW, SKILL_DEMONIC_STRIKE, SKILL_BARBARIAN_WEAKENING_STRIKE }, + [SKILL_LEADERSHIP] = { SKILL_RECRUITMENT, SKILL_DIPLOMACY, SKILL_ENCOURAGE, SKILL_PRAYER, SKILL_RAISE_ARCHERS, SKILL_ROAD_HOME }, + [SKILL_SORCERY] = { SKILL_MAGIC_BOND, SKILL_ELITE_CASTERS, SKILL_WISDOM, SKILL_EAGLE_EYE, SKILL_DARK_RITUAL, SKILL_PAYBACK }, + [SKILL_INVOCATION] = { SKILL_WEAKENING_STRIKE, SKILL_DISTRACT, SKILL_ARCANE_TRAINING, SKILL_EMPOWERED_SPELLS, SKILL_CONSUME_CORPSE, SKILL_EXPLODING_CORPSES }, + [SKILL_SUMMONING_MAGIC] = { SKILL_ELEMENTAL_BALANCE, SKILL_FOG_VEIL, SKILL_SUN_FIRE, SKILL_FIRE_AFFINITY, SKILL_MASTER_OF_QUAKES, SKILL_SHAKE_GROUND }, + [SKILL_DESTRUCTIVE_MAGIC] = { SKILL_DEADLY_COLD, SKILL_MASTER_OF_ICE, SKILL_MASTER_OF_FIRE, SKILL_SET_AFIRE, SKILL_ANCIENT_SMITHY, SKILL_MASTER_OF_LIGHTNINGS }, + [SKILL_DARK_MAGIC] = { SKILL_MASTER_OF_SICKNESS, SKILL_SPIRIT_LINK, SKILL_PARIAH, SKILL_MASTER_OF_MIND, SKILL_MASTER_OF_CURSES, SKILL_SOIL_BURN }, + [SKILL_LIGHT_MAGIC] = { SKILL_MASTER_OF_ABJURATION, SKILL_ETERNAL_LIGHT, SKILL_TWILIGHT, SKILL_MASTER_OF_WRATH, SKILL_MASTER_OF_BLESSING, SKILL_GUARDIAN_ANGEL }, + [SKILL_GATING] = { SKILL_SPOILS_OF_WAR, SKILL_PATH_OF_WAR, SKILL_GATING_MASTERY, SKILL_CRITICAL_GATING, SKILL_DEMONIC_FIRE, SKILL_QUICK_GATING }, + [SKILL_NECROMANCY] = { SKILL_DEATH_SCREAM, SKILL_SHRUG_DARKNESS, SKILL_CHILLING_BONES, SKILL_HERALD_OF_DEATH, SKILL_NO_REST_FOR_THE_WICKED, SKILL_LORD_OF_UNDEAD }, + [SKILL_AVENGER] = { SKILL_FOREST_RAGE, SKILL_FOREST_GUARD_EMBLEM, SKILL_IMBUE_ARROW, SKILL_IMBUE_BALLISTA, SKILL_SNIPE_DEAD, SKILL_MULTISHOT }, + [SKILL_ARTIFICIER] = { SKILL_ACADEMY_AWARD, SKILL_SUPRESS_LIGHT, SKILL_MELT_ARTIFACT, SKILL_MAGIC_MIRROR, SKILL_ARTIFICIAL_GLORY, SKILL_MARCH_OF_THE_MACHINES }, + [SKILL_RUNELORE] = { SKILL_DEMONIC_FLAME, SKILL_RUNIC_ATTUNEMENT, SKILL_FINE_RUNE, SKILL_TAP_RUNES, SKILL_FORTUNATE_ADVENTURER, SKILL_STRONG_RUNE }, + [SKILL_DEMONIC_RAGE] = { SKILL_POWER_OF_BLOOD, SKILL_MIGHT_OVER_MAGIC, SKILL_BATTLE_ELATION, SKILL_MEMORY_OF_OUR_BLOOD, SKILL_GOBLIN_SUPPORT, SKILL_DEFEND_US_ALL }, + [SKILL_VOICE] = { SKILL_MIGHTY_VOICE, SKILL_VOICE_OF_RAGE, SKILL_BARBARIAN_MYSTICISM, SKILL_BARBARIAN_DISTRACT, SKILL_VOICE_TRAINING, SKILL_BARBARIAN_ELITE_CASTERS }, +} + +Fx_Ultimates = { + [SKILL_OFFENCE] = SKILL_WEAKEN_DESTRUCTIVE, + [SKILL_DEFENCE] = SKILL_SHATTER_SUMMONING_MAGIC, + [SKILL_LUCK] = SKILL_ABSOLUTE_LUCK, + [SKILL_EXPERT_TRAINER] = SKILL_CORRUPT_DARK, + [SKILL_WARCRY_LEARNING] = SKILL_EMPATHY, + [SKILL_LOGISTICS] = SKILL_CORRUPT_DESTRUCTIVE, + [SKILL_SHATTER_DARK_MAGIC] = SKILL_ABSOLUTE_PROTECTION, + [SKILL_WAR_MACHINES] = SKILL_WEAKEN_SUMMONING, + [SKILL_LEARNING] = SKILL_ABSOLUTE_WIZARDY, + [SKILL_TRAINING] = SKILL_ABSOLUTE_CHARGE, + [SKILL_LEADERSHIP] = SKILL_RETRIBUTION, + [SKILL_SORCERY] = SKILL_MYSTICISM, + [SKILL_INVOCATION] = SKILL_WEAKEN_DARK, + [SKILL_SUMMONING_MAGIC] = SKILL_MASTER_OF_CREATURES, + [SKILL_DESTRUCTIVE_MAGIC] = SKILL_SHATTER_DESTRUCTIVE_MAGIC, + [SKILL_DARK_MAGIC] = SKILL_SHATTER_LIGHT_MAGIC, + [SKILL_LIGHT_MAGIC] = SKILL_RUNIC_ARMOR, + [SKILL_GATING] = SKILL_WEAKEN_LIGHT, + [SKILL_NECROMANCY] = SKILL_WEAKEN_LIGHT, + [SKILL_AVENGER] = SKILL_WEAKEN_LIGHT, + [SKILL_ARTIFICIER] = SKILL_WEAKEN_LIGHT, + [SKILL_RUNELORE] = SKILL_WEAKEN_LIGHT, + [SKILL_VOICE] = SKILL_WEAKEN_DARK, + [SKILL_DEMONIC_RAGE] = SKILL_ABSOLUTE_RAGE, + [SKILL_ABSOLUTE_GATING] = SKILL_ABSOLUTE_GATING, + [SKILL_ABSOLUTE_FEAR] = SKILL_ABSOLUTE_FEAR, +} + +Fx_UltimateText = { + [SKILL_OFFENCE] = { "/Text/Game/Skills/BarbarianSpec/DestructiveMagic/WeakenDestructive/Name.txt", "/Text/Game/Skills/BarbarianSpec/DestructiveMagic/WeakenDestructive/Description.txt" }, + [SKILL_DEFENCE] = { "/Text/Game/Skills/BarbarianSpec/SummoningMagic/1/Name.txt", "/Text/Game/Skills/BarbarianSpec/SummoningMagic/1/Description.txt" }, + [SKILL_LUCK] = { "/Text/Game/Skills/Unique/Avenger/AbsoluteLuck/Name.txt", "/Text/Game/Skills/Unique/Avenger/AbsoluteLuck/Description.txt" }, + [SKILL_EXPERT_TRAINER] = { "/Text/Game/Skills/BarbarianSpec/DarkMagic/CorruptDark/Name.txt", "/Text/Game/Skills/BarbarianSpec/DarkMagic/CorruptDark/Description.txt" }, + [SKILL_WARCRY_LEARNING] = { "/Text/Game/Skills/Common/Leadership/Empathy/Name.txt", "/Text/Game/Skills/Common/Leadership/Empathy/Description.txt" }, + [SKILL_LOGISTICS] = { "/Text/Game/Skills/BarbarianSpec/DestructiveMagic/CorruptDestructive/Name.txt", "/Text/Game/Skills/BarbarianSpec/DestructiveMagic/CorruptDestructive/Description.txt" }, + [SKILL_SHATTER_DARK_MAGIC] = { "/Text/Game/Skills/Unique/Runelore/AbsoluteProtection/Name.txt", "/Text/Game/Skills/Unique/Runelore/AbsoluteProtection/Description.txt" }, + [SKILL_WAR_MACHINES] = { "/Text/Game/Skills/BarbarianSpec/SummoningMagic/WeakenSummoning/Name.txt", "/Text/Game/Skills/BarbarianSpec/SummoningMagic/WeakenSummoning/Description.txt" }, + [SKILL_LEARNING] = { "/Text/Game/Skills/Unique/Artificer/AbsoluteWizardy/Name.txt", "/Text/Game/Skills/Unique/Artificer/AbsoluteWizardy/Description.txt" }, + [SKILL_TRAINING] = { "/Text/Game/Skills/Unique/Training/AbsoluteCharge/Name.txt", "/Text/Game/Skills/Unique/Training/AbsoluteCharge/Description.txt" }, + [SKILL_LEADERSHIP] = { "/Text/Game/Skills/Common/Offence/Retribution/Name.txt", "/Text/Game/Skills/Common/Offence/Retribution/Description.txt" }, + [SKILL_SORCERY] = { "/Text/Game/Skills/Common/Sorcery/Mysticism/Name.txt", "/Text/Game/Skills/Common/Sorcery/Mysticism/Description.txt" }, + [SKILL_INVOCATION] = { "/Text/Game/Skills/BarbarianSpec/DarkMagic/WeakenDark/Name.txt", "/Text/Game/Skills/BarbarianSpec/DarkMagic/WeakenDark/Description.txt" }, + [SKILL_SUMMONING_MAGIC] = { "/Text/Game/Skills/Common/SummoningMagic/MasterOfCreatures/Name.txt", "/Text/Game/Skills/Common/SummoningMagic/MasterOfCreatures/Description.txt" }, + [SKILL_DESTRUCTIVE_MAGIC] = { "/Text/Game/Skills/BarbarianSpec/DestructiveMagic/1/Name.txt", "/Text/Game/Skills/BarbarianSpec/DestructiveMagic/1/Description.txt" }, + [SKILL_DARK_MAGIC] = { "/Text/Game/Skills/BarbarianSpec/LightMagic/1/Name.txt", "/Text/Game/Skills/BarbarianSpec/LightMagic/1/Description.txt" }, + [SKILL_LIGHT_MAGIC] = { "/Text/Game/Skills/Common/SummoningMagic/RunicArmor/Name.txt", "/Text/Game/Skills/Common/SummoningMagic/RunicArmor/Description.txt" }, + [SKILL_GATING] = { "/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Name.txt", "/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Description.txt" }, + [SKILL_NECROMANCY] = { "/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Name.txt", "/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Description.txt" }, + [SKILL_AVENGER] = { "/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Name.txt", "/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Description.txt" }, + [SKILL_ARTIFICIER] = { "/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Name.txt", "/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Description.txt" }, + [SKILL_RUNELORE] = { "/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Name.txt", "/Text/Game/Skills/BarbarianSpec/LightMagic/WeakenLight/Description.txt" }, + [SKILL_DEMONIC_RAGE] = { "/Text/Game/Skills/Unique/DemonicRage/AbsoluteRage/Name.txt", "/Text/Game/Skills/Unique/DemonicRage/AbsoluteRage/Description.txt" }, + [SKILL_VOICE] = { "/Text/Game/Skills/BarbarianSpec/DarkMagic/WeakenDark/Name.txt", "/Text/Game/Skills/BarbarianSpec/DarkMagic/WeakenDark/Description.txt" }, +} + diff --git a/scripts/Frax/Tables.lua b/scripts/Frax/Tables.lua new file mode 100644 index 00000000..90c6d278 --- /dev/null +++ b/scripts/Frax/Tables.lua @@ -0,0 +1,155 @@ +Fx_UltimatesAI = { + SKILL_DESTRUCTIVE_MAGIC, + SKILL_SORCERY, + SKILL_NECROMANCY, + SKILL_OFFENCE, + SKILL_SHATTER_DARK_MAGIC, + SKILL_LUCK, + SKILL_DEFENCE, + SKILL_WAR_MACHINES, + SKILL_TRAINING, + SKILL_INVOCATION, + SKILL_WARCRY_LEARNING, + SKILL_LEADERSHIP, + SKILL_DEMONIC_RAGE +} + +Fx_Casters = {5, 4, 6, 5, 4, 6, 5, 4} + + +Fx_Creatures = { + {{1,2,106},{3,4,107},{5,6,108},{7,8,109},{9,10,110},{11,12,111},{13,14,112}}, --Haven + {{43,44,145},{45,46,146},{47,48,147},{49,50,148},{51,52,149},{53,54,150},{55,56,151}}, --Sylvan + {{15,16,131},{17,18,132},{19,20,133},{21,22,134},{23,24,135},{25,26,136},{27,28,137}}, --Inferno + {{29,30,152},{31,32,153},{33,34,154},{35,36,155},{37,38,156},{39,40,157},{41,42,158}}, --Necropolis + {{57,58,159},{59,60,160},{61,62,161},{63,64,162},{65,66,163},{67,68,164},{69,70,165}}, --Academy + {{71,72,138},{73,74,139},{75,76,140},{77,78,141},{79,80,142},{81,82,143},{83,84,144}}, --Dungeon + {{92,93,166},{94,95,167},{96,97,168},{98,99,169},{100,101,170},{102,103,171},{104,105,172}}, --Fortress + {{117,118,173},{119,120,174},{121,122,175},{123,124,176},{125,126,177},{127,128,178},{129,130,179}}, --Stronghold + {{87,87,88}, {85,85,86}, {113,113,113}, {116,116,116}, {115,115,115}, {90,90,90}, {89,114,91}}, --Neutral +}; + +Fx_CreaturesInv = {} +for town = 1,9,1 do + for tier = 1,7,1 do + for upgrade = 1,3 do + Fx_CreaturesInv[Fx_Creatures[town][tier][upgrade]] = {town, tier, upgrade} + end + end +end + +Fx_Growth = { + {22, 12, 10, 5, 3, 2, 1}, --Haven + {12, 9, 7, 4, 3, 2, 1}, --Sylvan + {17, 15, 8, 5, 3, 2, 1}, --Inferno + {20, 15, 6, 5, 3, 2, 1}, --Necropolis + {20, 14, 9, 5, 3, 2, 1}, --Academy + {7, 5, 6, 4, 3, 2, 1}, --Dungeon + {16, 14, 7, 6, 3, 2, 1}, --Fortress + {25, 14, 11, 5, 5, 2, 1}, --Stronghold + {20, 20, 6, 3, 2, 2, 1} -- Neutral +} + +Fx_UnusualSchools = { + [1] = {SKILL_SUMMONING_MAGIC,SKILL_DESTRUCTIVE_MAGIC}, + [2] = {SKILL_DARK_MAGIC,SKILL_DESTRUCTIVE_MAGIC}, + [3] = {SKILL_LIGHT_MAGIC,SKILL_SUMMONING_MAGIC}, + [4] = {SKILL_LIGHT_MAGIC,SKILL_DESTRUCTIVE_MAGIC}, + [5] = {SKILL_LIGHT_MAGIC,SKILL_DARK_MAGIC}, + [6] = {SKILL_LIGHT_MAGIC,SKILL_SUMMONING_MAGIC}, + [7] = {SKILL_DARK_MAGIC,SKILL_SUMMONING_MAGIC}, + [8] = {SKILL_LIGHT_MAGIC,SKILL_SUMMONING_MAGIC,SKILL_DARK_MAGIC,SKILL_DESTRUCTIVE_MAGIC}, + [9] = {SKILL_DARK_MAGIC,SKILL_DESTRUCTIVE_MAGIC} +} + +Fx_Schools = { + SKILL_SUMMONING_MAGIC, + SKILL_DESTRUCTIVE_MAGIC, + SKILL_DARK_MAGIC, + SKILL_LIGHT_MAGIC +} + +Fx_MagicSkills = { + SKILL_SUMMONING_MAGIC, + SKILL_DESTRUCTIVE_MAGIC, + SKILL_DARK_MAGIC, + SKILL_LIGHT_MAGIC, + SKILL_EAGLE_EYE, + SKILL_WISDOM +} + +Fx_Spells = { + [SKILL_SUMMONING_MAGIC] = { + [1] = {SPELL_WASP_SWARM,SPELL_LAND_MINE,SPELL_ARCANE_CRYSTAL}, + [2] = {SPELL_EARTHQUAKE,SPELL_MAGIC_FIST}, + [3] = {SPELL_ANTI_MAGIC,SPELL_BLADE_BARRIER}, + [4] = {SPELL_SUMMON_HIVE,SPELL_FIREWALL}, + [5] = {SPELL_HYPNOTIZE,SPELL_CONJURE_PHOENIX} + }, + [SKILL_DESTRUCTIVE_MAGIC] = { + [1] = {SPELL_STONE_SPIKES,SPELL_ICE_BOLT}, + [2] = {SPELL_METEOR_SHOWER,SPELL_LIGHTNING_BOLT}, + [3] = {SPELL_FIREBALL,SPELL_FROST_RING}, + [4] = {SPELL_ARMAGEDDON,SPELL_IMPLOSION}, + [5] = {SPELL_DEEP_FREEZE,SPELL_CHAIN_LIGHTNING} + }, + [SKILL_DARK_MAGIC] = { + [1] = {SPELL_PLAGUE,SPELL_CURSE,SPELL_WEAKNESS}, + [2] = {SPELL_SLOW,SPELL_DISRUPTING_RAY}, + [3] = {SPELL_ANIMATE_DEAD,SPELL_SORROW}, + [4] = {SPELL_TELEPORT,SPELL_PHANTOM,SPELL_UNHOLY_WORD}, + [5] = {SPELL_BERSERK,SPELL_VAMPIRISM} + }, + [SKILL_LIGHT_MAGIC] = { + [1] = {SPELL_MAGIC_ARROW,SPELL_BLESS,SPELL_STONESKIN}, + [2] = {SPELL_BLOODLUST,SPELL_HASTE,SPELL_DEFLECT_ARROWS}, + [3] = {SPELL_DISPEL,SPELL_REGENERATION,SPELL_HOLY_WORD}, + [4] = {SPELL_DIVINE_VENGEANCE,SPELL_RESURRECT}, + [5] = {SPELL_CELESTIAL_SHIELD,SPELL_BLIND} + } +} + +Fx_Renegades = {"Mardigo","RedHeavenHero02","RedHeavenHero05","RedHeavenHero03","RedHeavenHero06" ,"Alaric","RedHeavenHero01","Laszlo"}; +Fx_Knights = {"Duncan","Sarge","Isabell","Orrin","Nicolai","GodricMP","Maeve","Nathaniel","Axel","Christian" ,"Brem","Ving","Godric","Freyda","Ornella","GhostFSLord","Giar","Glen","Isabell_A1","Saint Isabell"}; +Fx_Heretics = {"Jeddite","Markal","AlaricMP","RedHeavenHero04","OrlandoMP" ,"Orlando"}; +Fx_Rangers = {"Heam","Gillion","Linaas","Ossir","Melodia","Mephala"}; +Fx_Avengers = {"Kyrre","Nadaur","Arniel","Ildar","Jenova","Metlirn"}; +Fx_Druids = {"Vaniel","Elleshar","Vinrael","Itil","Diraya","Gem" ,"Tieru"}; +Fx_Demonlords = {"Marder","Malustar","Harkenraz","Grok","Calid","Jazaz" ,"Sheltem","Gamor","Guarg","Erasial","Kha-Beleth","Veyer","DMessiah"}; +Fx_Gatekeepers = {"Deleb","Ash","Nymus","Oddrema","Nelech","Calh" ,"Agrael"}; +Fx_Sorcerers = {"Sovereign","Efion","Calid2","Zydar","AgraelMP","Biara"}; +Fx_DeathKnights = {"Gles","Pelt","Tamika","OrnellaNecro","Straker","Xerxon"}; +Fx_Necromancers = {"Archilus","Nimbus","Aislinn","ArantirMP","Aberrar","Effig" ,"Arantir","Berein","Nikolay","Giovanni"}; +Fx_Nethermages = {"Thant","Vidomina","Nemor","Muscip","GiovanniMP","Sandro"}; +Fx_Enchanters = {"Isher","Rissa","Minasli","Davius","Josephine","Havez"}; +Fx_Conjurers = {"Zehir","Timerkhan","Nur","Cyrus","Emilia","Astral"}; +Fx_Wizards = {"Gurvilin","Razzak","Maahir","Faiz","Sufi","Tan"}; +Fx_Overlords = {"Agbeth","Ranleth","ThralsaiMP","Urunir","Menel","Ferigl"}; +Fx_Tricksters = {"Sephinroth","Eruina","Ohtarig","Sylsai","Darkstorm","AlmegirMP" ,"Thralsai","Almegir"}; +Fx_Warlocks = {"Raelag","Kastore","Kelodin","ShadwynMP","Dalom","Inagost" ,"Shadwyn","Raelag_A1","Segref","Ohtar","Eruina_A1"}; +Fx_Engineers = {"Wulfstan","Rolf","Maximus","Tazar","Ufretin","Skeggy"}; +Fx_Runemages = {"Hangvul","KingTolghar","Ingvar","Bersy","Ottar","Una"}; +Fx_Flamekeepers = {"Vilma","Bart","Hangvul2","Brand","Egil","Vegeyr"}; +Fx_Chieftains = {"Hero1","Hero4","Hero5","Hero6","Hero8","Hero9","Gottai","GottaiMP","Crag","Azar","Kraal","Kunyak","Matewa","Quroq"}; +Fx_Shamans = {"KujinMP","Shiva","Hero7","Mokka","Kujin"}; +Fx_Witches = {"Hero2","Hero3","Zouleika","Erika"}; + +Fx_ClassesCount = 24 + +Fx_ClassesList = { + Fx_Renegades, Fx_Knights, Fx_Heretics, + Fx_Rangers, Fx_Avengers, Fx_Druids, + Fx_Demonlords, Fx_Gatekeepers, Fx_Sorcerers, + Fx_DeathKnights, Fx_Necromancers, Fx_Nethermages, + Fx_Enchanters, Fx_Conjurers, Fx_Wizards, + Fx_Overlords, Fx_Tricksters, Fx_Warlocks, + Fx_Engineers, Fx_Runemages, Fx_Flamekeepers, + Fx_Chieftains, Fx_Shamans, Fx_Witches +}; + +Fx_Heroes = {} +for _, class in Fx_ClassesList do + for _, hero in class do + Fx_Heroes[length(Fx_Heroes)] = hero + end +end \ No newline at end of file diff --git a/scripts/Frax/Test.lua b/scripts/Frax/Test.lua new file mode 100644 index 00000000..f537b59d --- /dev/null +++ b/scripts/Frax/Test.lua @@ -0,0 +1,61 @@ +hero1 = GetPlayerHeroes(1)[0] + +function Fx_GiveAllArtefacts(hero) + for i = 1,200 do + GiveArtefact(hero, i) + end +end + +function Fx_GiveSkills(hero, skill, perk) + for i = skill,skill+4 do + local s = Fx_Skills[i] + GiveHeroSkill(hero, s) + GiveHeroSkill(hero, s) + GiveHeroSkill(hero, s) + sleep(1) + GiveHeroSkill(hero, Fx_Perks[s][perk*2-1]) + sleep(1) + GiveHeroSkill(hero, Fx_Perks[s][perk*2]) + end +end + +function Fx_FakeBoth() + Fx_FakeMastery() + Fx_FakeArtefacts() +end + +function Fx_FakeMastery() + _HasHeroSkill = HasHeroSkill + _GetHeroSkillMastery = GetHeroSkillMastery + + HasHeroSkill = function (hero, skill) + return 1 + end + GetHeroSkillMastery = function (hero, skill) + return Fx_Perks[skill] and 3 or 1 + end +end + +function Fx_FakeArtefacts() + _HasArtefact = HasArtefact + _RemoveArtefact = RemoveArtefact + + HasArtefact = function (hero, artifact, equip) + return 1 + end + RemoveArtefact = function (hero, artifact) + if _HasArtefact(hero, artifact) then + _RemoveArtefact(hero, artifact) + end + end +end + +function Fx_InitTestMap() + local heroes = GetPlayerHeroes(1) or {} + for skill = 0,1 do + for perk = 1,3 do + startThread(Fx_GiveSkills, heroes[skill*3 + perk - 1], (skill+2)*6 + 1, perk) + end + end + Fx_GiveAllArtefacts(heroes[1]) +end \ No newline at end of file diff --git a/scripts/Frax/Values.lua b/scripts/Frax/Values.lua new file mode 100644 index 00000000..4c8bae09 --- /dev/null +++ b/scripts/Frax/Values.lua @@ -0,0 +1,256 @@ +Haven = 1 +Sylvan = 2 +Inferno = 3 +Necropolis = 4 +Academy = 5 +Dungeon = 6 +Fortress = 7 +Stronghold = 8 + +ARTIFACT_WISPERING_RING = 66 +ARTIFACT_HELM_OF_CHAOS = 65 + +STAT_HEALTH = 9 -- 4 +STAT_INITIATIVE = 10 -- 5 +STAT_SPEED = 11 -- 6 +-- Skill type cannonical IDs +-- +-- Basic Skills +SKILL_LOGISTICS = 1 +SKILL_WAR_MACHINES = 2 +SKILL_LEARNING = 3 +SKILL_LEADERSHIP = 4 +SKILL_LUCK = 5 +SKILL_OFFENCE = 6 +SKILL_DEFENCE = 7 +SKILL_SORCERY = 8 +SKILL_DESTRUCTIVE_MAGIC = 9 +SKILL_DARK_MAGIC = 10 +SKILL_LIGHT_MAGIC = 11 +SKILL_SUMMONING_MAGIC = 12 +-- Class skills +SKILL_TRAINING = 13 +SKILL_GATING = 14 +SKILL_NECROMANCY = 15 +SKILL_AVENGER = 16 +SKILL_ARTIFICIER = 17 +SKILL_INVOCATION = 18 +-- Perks +SKILL_PATHFINDING = 19 +SKILL_SCOUTING = 20 +SKILL_NAVIGATION = 21 +SKILL_FIRST_AID = 22 +SKILL_BALLISTA = 23 +SKILL_CATAPULT = 24 +SKILL_INTELLIGENCE = 25 +SKILL_SCHOLAR = 26 +SKILL_EAGLE_EYE = 27 +SKILL_RECRUITMENT = 28 +SKILL_ESTATES = 29 +SKILL_DIPLOMACY = 30 +SKILL_RESISTANCE = 31 +SKILL_LUCKY_STRIKE = 32 +SKILL_FORTUNATE_ADVENTURER = 33 +SKILL_TACTICS = 34 +SKILL_ARCHERY = 35 +SKILL_FRENZY = 36 +SKILL_PROTECTION = 37 +SKILL_EVASION = 38 +SKILL_TOUGHNESS = 39 +SKILL_MYSTICISM = 40 +SKILL_WISDOM = 41 +SKILL_ARCANE_TRAINING = 42 +SKILL_MASTER_OF_ICE = 43 +SKILL_MASTER_OF_FIRE = 44 +SKILL_MASTER_OF_LIGHTNINGS = 45 +SKILL_MASTER_OF_CURSES = 46 +SKILL_MASTER_OF_MIND = 47 +SKILL_MASTER_OF_SICKNESS = 48 +SKILL_MASTER_OF_BLESSING = 49 +SKILL_MASTER_OF_ABJURATION = 50 +SKILL_MASTER_OF_WRATH = 51 +SKILL_MASTER_OF_QUAKES = 52 +SKILL_MASTER_OF_CREATURES = 53 +SKILL_MASTER_OF_ANIMATION = 54 +-- Knight perks +SKILL_HOLY_CHARGE = 55 +SKILL_PRAYER = 56 +SKILL_EXPERT_TRAINER = 57 +-- Demonlord perks +SKILL_CONSUME_CORPSE = 58 +SKILL_DEMONIC_FIRE = 59 +SKILL_DEMONIC_STRIKE = 60 +-- Necromancer perks +SKILL_RAISE_ARCHERS = 61 +SKILL_NO_REST_FOR_THE_WICKED = 62 +SKILL_DEATH_SCREAM = 63 +-- Ranger perks +SKILL_MULTISHOT = 64 +SKILL_SNIPE_DEAD = 65 +SKILL_IMBUE_ARROW = 66 +-- Wizard perks +SKILL_MAGIC_BOND = 67 +SKILL_MELT_ARTIFACT = 68 +SKILL_MAGIC_MIRROR = 69 +-- Warlock perks +SKILL_EMPOWERED_SPELLS = 70 +SKILL_DARK_RITUAL = 71 +SKILL_ELEMENTAL_VISION = 72 +-- Feats +-- Knight +SKILL_ROAD_HOME = 73 +SKILL_TRIPLE_BALLISTA = 74 +SKILL_ENCOURAGE = 75 +SKILL_RETRIBUTION = 76 +SKILL_HOLD_GROUND = 77 +SKILL_GUARDIAN_ANGEL = 78 +SKILL_STUDENT_AWARD = 79 +SKILL_GRAIL_VISION = 80 +SKILL_CASTER_CERTIFICATE = 81 +SKILL_ANCIENT_SMITHY = 82 +SKILL_PARIAH = 83 +SKILL_ELEMENTAL_BALANCE = 84 +SKILL_ABSOLUTE_CHARGE = 85 +-- Demon Lord +SKILL_QUICK_GATING = 86 +SKILL_MASTER_OF_SECRETS = 87 +SKILL_TRIPLE_CATAPULT = 88 +SKILL_GATING_MASTERY = 89 +SKILL_CRITICAL_GATING = 90 +SKILL_CRITICAL_STRIKE = 91 +SKILL_DEMONIC_RETALIATION = 92 +SKILL_EXPLODING_CORPSES = 93 +SKILL_DEMONIC_FLAME = 94 +SKILL_WEAKENING_STRIKE = 95 +SKILL_FIRE_PROTECTION = 96 +SKILL_FIRE_AFFINITY = 97 +SKILL_ABSOLUTE_GATING = 98 +-- Necromancer +SKILL_DEATH_TREAD = 99 +SKILL_LAST_AID = 100 +SKILL_LORD_OF_UNDEAD = 101 +SKILL_HERALD_OF_DEATH = 102 +SKILL_DEAD_LUCK = 103 +SKILL_CHILLING_STEEL = 104 +SKILL_CHILLING_BONES = 105 +SKILL_SPELLPROOF_BONES = 106 +SKILL_DEADLY_COLD = 107 +SKILL_SPIRIT_LINK = 108 +SKILL_TWILIGHT = 109 +SKILL_HAUNT_MINE = 110 +SKILL_ABSOLUTE_FEAR = 111 +-- Ranger +SKILL_DISGUISE_AND_RECKON = 112 +SKILL_IMBUE_BALLISTA = 113 +SKILL_CUNNING_OF_THE_WOODS = 114 +SKILL_FOREST_GUARD_EMBLEM = 115 +SKILL_ELVEN_LUCK = 116 +SKILL_FOREST_RAGE = 117 +SKILL_LAST_STAND = 118 +SKILL_INSIGHTS = 119 +SKILL_SUN_FIRE = 120 +SKILL_SOIL_BURN = 121 +SKILL_STORM_WIND = 122 +SKILL_FOG_VEIL = 123 +SKILL_ABSOLUTE_LUCK = 124 +-- Wizard +SKILL_MARCH_OF_THE_MACHINES = 125 +SKILL_REMOTE_CONTROL = 126 +SKILL_ACADEMY_AWARD = 127 +SKILL_ARTIFICIAL_GLORY = 128 +SKILL_SPOILS_OF_WAR = 129 +SKILL_WILDFIRE = 130 +SKILL_SEAL_OF_PROTECTION = 131 +SKILL_COUNTERSPELL = 132 +SKILL_MAGIC_CUSHION = 133 +SKILL_SUPRESS_DARK = 134 +SKILL_SUPRESS_LIGHT = 135 +SKILL_UNSUMMON = 136 +SKILL_ABSOLUTE_WIZARDY = 137 +-- warlock +SKILL_TELEPORT_ASSAULT = 138 +SKILL_SHAKE_GROUND = 139 +SKILL_DARK_REVELATION = 140 +SKILL_FAST_AND_FURIOUS = 141 +SKILL_LUCKY_SPELLS = 142 +SKILL_POWER_OF_HASTE = 143 +SKILL_POWER_OF_STONE = 144 +SKILL_CHAOTIC_SPELLS = 145 +SKILL_SECRETS_OF_DESTRUCTION = 146 +SKILL_PAYBACK = 147 +SKILL_ELITE_CASTERS = 148 +SKILL_ELEMENTAL_OVERKILL = 149 +SKILL_ABSOLUTE_CHAINS = 150 +-- runemage +SKILL_RUNELORE = 151 +SKILL_REFRESH_RUNE = 152 +SKILL_STRONG_RUNE = 153 +SKILL_FINE_RUNE = 154 +SKILL_QUICKNESS_OF_MIND = 155 +SKILL_RUNIC_MACHINES = 156 +SKILL_TAP_RUNES = 157 +SKILL_RUNIC_ATTUNEMENT = 158 +SKILL_DWARVEN_LUCK = 159 +SKILL_OFFENSIVE_FORMATION = 160 +SKILL_DEFENSIVE_FORMATION = 161 +SKILL_DISTRACT = 162 +SKILL_SET_AFIRE = 163 +SKILL_SHRUG_DARKNESS = 164 +SKILL_ETERNAL_LIGHT = 165 +SKILL_RUNIC_ARMOR = 166 +SKILL_ABSOLUTE_PROTECTION = 167 +-- runmage & barbarian cross-class +SKILL_SNATCH = 168 +SKILL_MENTORING = 169 +SKILL_EMPATHY = 170 +SKILL_PREPARATION = 171 +-- barbarian +SKILL_DEMONIC_RAGE = 172 +SKILL_MIGHT_OVER_MAGIC = 173 +SKILL_MEMORY_OF_OUR_BLOOD = 174 +SKILL_POWERFULL_BLOW = 175 +SKILL_ABSOLUTE_RAGE = 176 +SKILL_PATH_OF_WAR = 177 +SKILL_BATTLE_ELATION = 178 +SKILL_LUCK_OF_THE_BARBARIAN = 179 +SKILL_STUNNING_BLOW = 180 +SKILL_DEFEND_US_ALL = 181 +SKILL_GOBLIN_SUPPORT = 182 +SKILL_BARBARIAN_LEARNING = 183 +SKILL_POWER_OF_BLOOD = 184 +SKILL_WARCRY_LEARNING = 185 +SKILL_BODYBUILDING = 186 +SKILL_VOICE = 187 +SKILL_VOICE_TRAINING = 188 +SKILL_MIGHTY_VOICE = 189 +SKILL_VOICE_OF_RAGE = 190 +SKILL_SHATTER_DESTRUCTIVE_MAGIC = 191 +SKILL_CORRUPT_DESTRUCTIVE = 192 +SKILL_WEAKEN_DESTRUCTIVE = 193 +SKILL_DETAIN_DESTRUCTIVE = 194 +SKILL_SHATTER_DARK_MAGIC = 195 +SKILL_CORRUPT_DARK = 196 +SKILL_WEAKEN_DARK = 197 +SKILL_DETAIN_DARK = 198 +SKILL_SHATTER_LIGHT_MAGIC = 199 +SKILL_CORRUPT_LIGHT = 200 +SKILL_WEAKEN_LIGHT = 201 +SKILL_DETAIN_LIGHT = 202 +SKILL_SHATTER_SUMMONING_MAGIC = 203 +SKILL_CORRUPT_SUMMONING = 204 +SKILL_WEAKEN_SUMMONING = 205 +SKILL_DETAIN_SUMMONING = 206 +SKILL_DEATH_TO_NONEXISTENT = 207 +SKILL_BARBARIAN_ANCIENT_SMITHY = 208 +SKILL_BARBARIAN_WEAKENING_STRIKE = 209 +SKILL_BARBARIAN_SOIL_BURN = 210 +SKILL_BARBARIAN_FOG_VEIL = 211 +SKILL_BARBARIAN_INTELLIGENCE = 212 +SKILL_BARBARIAN_MYSTICISM = 213 +SKILL_BARBARIAN_ELITE_CASTERS = 214 +SKILL_BARBARIAN_STORM_WIND = 215 +SKILL_BARBARIAN_FIRE_PROTECTION = 216 +SKILL_BARBARIAN_SUN_FIRE = 217 +SKILL_BARBARIAN_DISTRACT = 218 +SKILL_BARBARIAN_DARK_REVELATION = 219 +SKILL_BARBARIAN_MENTORING = 220 \ No newline at end of file diff --git a/scripts/H55-AdvMap.lua b/scripts/H55-AdvMap.lua new file mode 100644 index 00000000..1fa8b4f4 --- /dev/null +++ b/scripts/H55-AdvMap.lua @@ -0,0 +1,8463 @@ +------------------------------------------------------------------------------------------------------------------------------------------------ +--MIGHT & MAGIC: HEROES 5.5 - ADVENTURE MAP +------------------------------------------------------------------------------------------------------------------------------------------------ + +--Author: Magnomagus + +------------------------------------------------------------------------------------------------------------------------------------------------ +--DYNAMIC TABLES +------------------------------------------------------------------------------------------------------------------------------------------------ + +--HillForts + +H55_HillFortBoostVisitors = {}; + +--Mentors + +H55_MentorBoostVisitors = {}; + +--Witch Huts + +H55_WitchHuts = GetObjectNamesByType("BUILDING_WITCH_HUT"); +H55_WitchHutsQty = table.length(H55_WitchHuts); +H55_WHChoice1 = {}; +H55_WHChoice2 = {}; +H55_WHVisited = {}; + +--Sphinx + +H55_Sphinxs = GetObjectNamesByType("BUILDING_SPHINX"); +H55_SphinxsQty = table.length(H55_Sphinxs); +H55_SphinxVisited = {}; +H55_SphinxExp = {}; + +--Magma Shrines (doesn't work) + +--H55_Magmas = GetObjectNamesByType("BUILDING_MAGMA_SHRINE"); +--H55_MagmasQty = table.length(H55_Magmas); +--H55_MagmaVisited = {}; + +--Obelisks + +H55_Obelisks = GetObjectNamesByType("BUILDING_LAKE_OF_SCARLET_SWAN"); +H55_ObelisksQty = table.length(H55_Obelisks); +H55_ObeliskArmies = {}; +H55_ObeliskVisited = {}; +H55_ObeliskTotalVisited = {}; +H55_ObeliskChallengeAccepted = {}; +H55_ObeliskGraalFound = {}; + +--Shantiri Disks + +H55_Shantiris = GetObjectNamesByType("BUILDING_EYE_OF_MAGI"); +H55_MagiHuts = GetObjectNamesByType("BUILDING_HUT_OF_MAGI"); +H55_MagiHutsQty = table.length(H55_MagiHuts); +H55_ShantirisQty = table.length(H55_Shantiris); +H55_ShantiriArmies = {}; +H55_ShantiriVisited = {}; +H55_ShantiriTotalVisited = {}; +H55_ShantiriChallengeAccepted = {}; +H55_ShantiriGraalFound = {}; + +--Seer huts + +H55_Mermaids = GetObjectNamesByType("BUILDING_MERMAIDS"); +H55_MermaidsQty = table.length(H55_Mermaids); +H55_MermaidChoices = {}; + +--Summoning temples + +H55_SummonTemples = GetObjectNamesByType("BUILDING_SIRENS"); +H55_SummonTemplesQty = table.length(H55_SummonTemples); +H55_SummonTempleChoices = {}; + +--Junk + +H55_Wagons = GetObjectNamesByType("BUILDING_WAGON"); +H55_WagonsQty = table.length(H55_Wagons); +H55_WagonVisited = {}; +H55_WagonChoices = {}; + +H55_Skeletons = GetObjectNamesByType("BUILDING_SKELETON"); +H55_SkeletonsQty = table.length(H55_Skeletons); +H55_SkeletonVisited = {}; +H55_SkeletonChoices = {}; + +--Moon Disc Quest + +H55_MoonDiscLocations = {}; +H55_MoonDiscLoc01 = 0; +H55_MoonDiscLoc02 = 0; +H55_MoonDiscLoc03 = 0; +H55_MoonDiscLoc04 = 0; +H55_MoonDiscFound01 = 0; +H55_MoonDiscFound02 = 0; +H55_MoonDiscFound03 = 0; +H55_MoonDiscFound04 = 0; +H55_MoonDiscPattern = {159,160,161,162,159,160,161,162}; +H55_MoonDiscPatternChoice = random(4)+1; +H55_MoonDiscChoice01 = H55_MoonDiscPatternChoice; +H55_MoonDiscChoice02 = H55_MoonDiscPatternChoice+1; +H55_MoonDiscChoice03 = H55_MoonDiscPatternChoice+2; +H55_MoonDiscChoice04 = H55_MoonDiscPatternChoice+3; + +if H55_WagonsQty ~= 0 then + for i,wagon in H55_Wagons do + table.inject(H55_MoonDiscLocations,wagon); + end; +end; +if H55_SkeletonsQty ~= 0 then + for i,skeleton in H55_Skeletons do + table.inject(H55_MoonDiscLocations,skeleton); + end; +end; +if table.length(H55_MoonDiscLocations) >= 2 then + H55_MoonDiscLoc01 = random(table.length(H55_MoonDiscLocations))+1 + H55_MoonDiscLoc02 = random(table.length(H55_MoonDiscLocations))+1 + H55_MoonDiscLoc03 = random(table.length(H55_MoonDiscLocations))+1 + H55_MoonDiscLoc04 = random(table.length(H55_MoonDiscLocations))+1 +end; + +--Banks + +H55_BankActions = {}; for i=1,8 do H55_BankActions[i] = 0 end; +H55_BankLastVisit = {}; +H55_BankPlayerLastVisit = {{},{},{},{},{},{},{},{}}; +H55_BankCurrentPlayerVisit = {}; +-- H55_MPCurrentPlayerVisit = {}; +H55_MineCurrentPlayerVisit = {}; +H55_PrisonRewardAmount = {20,16,12,8,6,4,2}; +H55_PrisonRewardAmountElves = {12,10,10,8,6,4,2}; + +H55_Crypts = GetObjectNamesByType("BUILDING_CRYPT"); +H55_CryptsQty = table.length(H55_Crypts); +H55_CryptArmies = {}; +H55_Utopias = GetObjectNamesByType("BUILDING_DRAGON_UTOPIA"); +H55_UtopiasQty = table.length(H55_Utopias); +H55_UtopiaArmies = {}; +H55_StoneVaults = GetObjectNamesByType("BUILDING_GARGOYLE_STONEVAULT"); +H55_StoneVaultsQty = table.length(H55_StoneVaults); +H55_StoneVaultArmies = {}; +H55_DwarvenTreasures = GetObjectNamesByType("BUILDING_DWARVEN_TREASURE"); +H55_DwarvenTreasuresQty = table.length(H55_DwarvenTreasures); +H55_DwarvenTreasureArmies = {}; +H55_Stockpiles = GetObjectNamesByType("BUILDING_CYCLOPS_STOCKPILE"); +H55_StockpilesQty = table.length(H55_Stockpiles); +H55_StockpileArmies = {}; +H55_SunkenTemples = GetObjectNamesByType("BUILDING_SUNKEN_TEMPLE"); +H55_SunkenTemplesQty = table.length(H55_SunkenTemples); +H55_SunkenTempleArmies = {}; +H55_WitchTemples = GetObjectNamesByType("BUILDING_BLOOD_TEMPLE"); +H55_WitchTemplesQty = table.length(H55_WitchTemples); +H55_WitchTempleArmies = {}; +H55_MageVaults = GetObjectNamesByType("BUILDING_NAGA_BANK"); +H55_MageVaultsQty = table.length(H55_MageVaults); +H55_MageVaultArmies = {}; +H55_Thickets = GetObjectNamesByType("BUILDING_TREANT_THICKET"); +H55_ThicketsQty = table.length(H55_Thickets); +H55_ThicketArmies = {}; +H55_Pyramids = GetObjectNamesByType("BUILDING_PYRAMID"); +H55_PyramidsQty = table.length(H55_Pyramids); +H55_PyramidArmies = {}; +H55_OrcTunnels = GetObjectNamesByType("BUILDING_NAGA_TEMPLE"); +H55_OrcTunnelsQty = table.length(H55_OrcTunnels); +H55_OrcTunnelArmies = {}; +H55_Unkempts = GetObjectNamesByType("BUILDING_UNKEMPT"); +H55_UnkemptsQty = table.length(H55_Unkempts); +H55_UnkemptArmies = {}; +H55_Demolishs = GetObjectNamesByType("BUILDING_DEMOLISH"); +H55_DemolishsQty = table.length(H55_Demolishs); +H55_DemolishArmies = {}; +H55_DemonTowers = GetObjectNamesByType("BUILDING_BUOY"); +H55_DemonTowersQty = table.length(H55_DemonTowers); +H55_DemonTowerArmies = {}; +H55_ForestTowers = GetObjectNamesByType("BUILDING_LEAN_TO"); +H55_ForestTowersQty = table.length(H55_ForestTowers); +H55_ForestTowerArmies = {}; + +--Mines + +H55_AbandonedMines = GetObjectNamesByType("BUILDING_ABANDONED_MINE"); +H55_AbandonedMinesQty = table.length(H55_AbandonedMines); +H55_AbandonedMineArmies = {}; + +H55_WoodMines = GetObjectNamesByType("BUILDING_SAWMILL"); +H55_OreMines = GetObjectNamesByType("BUILDING_ORE_PIT"); +H55_CrystalMines = GetObjectNamesByType("BUILDING_CRYSTAL_CAVERN"); +H55_GemMines = GetObjectNamesByType("BUILDING_GEM_POND"); +H55_SulphurMines = GetObjectNamesByType("BUILDING_SULFUR_DUNE"); +H55_MercuryMines = GetObjectNamesByType("BUILDING_ALCHEMIST_LAB"); +H55_GoldMines = GetObjectNamesByType("BUILDING_GOLD_MINE"); + +H55_AllMines = {}; +H55_AllMinesNotAbandoned = {}; +H55_CommonMines = {}; +H55_GuardedMines = {}; + +if table.length(H55_WoodMines) > 0 then + for i, woodmine in H55_WoodMines do + H55_CommonMines[woodmine] = 1; + table.inject(H55_AllMines, woodmine); + table.inject(H55_AllMinesNotAbandoned, woodmine); + end; +end; +if table.length(H55_OreMines) > 0 then + for i, oremine in H55_OreMines do + H55_CommonMines[oremine] = 1; + table.inject(H55_AllMines, oremine); + table.inject(H55_AllMinesNotAbandoned, oremine); + end; +end; +if table.length(H55_CrystalMines) > 0 then + for i, crystalmine in H55_CrystalMines do + table.inject(H55_AllMines, crystalmine); + table.inject(H55_AllMinesNotAbandoned, crystalmine); + end; +end; +if table.length(H55_SulphurMines) > 0 then + for i, sulphurmine in H55_SulphurMines do + table.inject(H55_AllMines, sulphurmine); + table.inject(H55_AllMinesNotAbandoned, sulphurmine); + end; +end; +if table.length(H55_MercuryMines) > 0 then + for i, mercurymine in H55_MercuryMines do + table.inject(H55_AllMines, mercurymine); + table.inject(H55_AllMinesNotAbandoned, mercurymine); + end; +end; +if table.length(H55_GemMines) > 0 then + for i, gemmine in H55_GemMines do + table.inject(H55_AllMines, gemmine); + table.inject(H55_AllMinesNotAbandoned, gemmine); + end; +end; +if table.length(H55_GoldMines) > 0 then + for i, goldmine in H55_GoldMines do + table.inject(H55_AllMines, goldmine); + table.inject(H55_AllMinesNotAbandoned, goldmine); + end; +end; +if H55_AbandonedMinesQty > 0 then + for i, abandonedmine in H55_AbandonedMines do + table.inject(H55_AllMines, abandonedmine); + H55_GuardedMines[abandonedmine] = {0,1}; + end; +end; + +if table.length(H55_AllMinesNotAbandoned) > 0 then + for i, mine in H55_AllMinesNotAbandoned do + SetObjectEnabled(mine,nil); + Trigger(OBJECT_TOUCH_TRIGGER,mine,"H55_MineVisit"); + H55_GuardedMines[mine] = {0,1}; + end; +end; + +--Duel Boosters + +H55_FOfYouth = GetObjectNamesByType("BUILDING_FONTAIN_OF_YOUTH"); +H55_FOfYouthQty = table.length(H55_FOfYouth); +H55_FOfFortune = GetObjectNamesByType("BUILDING_FONTAIN_OF_FORTUNE"); +H55_FOfFortuneQty = table.length(H55_FOfFortune); +H55_Temples = GetObjectNamesByType("BUILDING_TEMPLE"); +H55_TemplesQty = table.length(H55_Temples); +H55_RallyFlags = GetObjectNamesByType("BUILDING_RALLY_FLAG"); +H55_RallyFlagsQty = table.length(H55_RallyFlags); +H55_Oasae = GetObjectNamesByType("BUILDING_OASIS"); +H55_OasaeQty = table.length(H55_Oasae); +H55_Faeries = GetObjectNamesByType("BUILDING_FAERIE_RING"); +H55_FaeriesQty = table.length(H55_Faeries); +H55_Idols = GetObjectNamesByType("BUILDING_IDOL_OF_FORTUNE"); +H55_IdolsQty = table.length(H55_Idols); +H55_Wells = GetObjectNamesByType("BUILDING_MAGIC_WELL"); +H55_WellsQty = table.length(H55_Wells); +H55_MEShrines = GetObjectNamesByType("BUILDING_NOMADS_SHAMAN"); +H55_MEShrinesQty = table.length(H55_MEShrines); +H55_FSanctuaries = GetObjectNamesByType("BUILDING_FORTUITOUS_SANCTUARY"); +H55_FSanctuariesQty = table.length(H55_FSanctuaries); +H55_Stables = GetObjectNamesByType("BUILDING_STABLES"); +H55_StablesQty = table.length(H55_Stables); + +--Special Functions + +H55_TradingPosts = GetObjectNamesByType("BUILDING_TRADING_POST"); +H55_TradingPostsQty = table.length(H55_TradingPosts); +H55_RObservatories = GetObjectNamesByType("BUILDING_REDWOORD_OBSERVATORY"); +H55_RObservatoriesQty = table.length(H55_RObservatories); +H55_RObservatoryUsers = {}; +H55_MagiHutUsers = {}; + +-- H55_ManaObjectUsers = {}; +-- for i,fofy in H55_FOfYouth do + -- H55_ManaObjectUsers[fofy] = {}; +-- end; +-- for i,oasis in H55_Oasae do + -- H55_ManaObjectUsers[oasis] = {}; +-- end; +-- for i,faerie in H55_Faeries do + -- H55_ManaObjectUsers[faerie] = {}; +-- end; +-- for i,meshrine in H55_MEShrines do + -- H55_ManaObjectUsers[meshrine] = {}; +-- end; +-- for i,fsanct in H55_FSanctuaries do + -- H55_ManaObjectUsers[fsanct] = {}; +-- end; +-- for i,idol in H55_Idols do + -- H55_ManaObjectUsers[idol] = {}; +-- end; +-- for i,rally in H55_RallyFlags do + -- H55_ManaObjectUsers[rally] = {}; +-- end; +-- for i,stable in H55_Stables do + -- H55_ManaObjectUsers[stable] = {}; +-- end; + +------------------------------------------------------------------------------------------------------------------------------------------------------ +--TRIGGERS +------------------------------------------------------------------------------------------------------------------------------------------------------ + +function H55_PrepareAdvMap() + --errorHook(H55_AdvMapError); + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {101,"ShamanPatterns",1,"NoHero"};-------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + for i,shaman in H55_Shamans do + H55_ShamanPattern[shaman] = random(6)+1; + end; + for i,witch in H55_Witches do + H55_ShamanPattern[witch] = random(6)+1; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {102,"StartingBonus",1,"NoHero"};--------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_EnableModes == 1 then + local somebodygold = 0; + local somebodyres = 0; + local somebodyartifact = 0; + local amountai = table.containsamount(H55_PlayerStatus,1); + if H55_MapType ~= "Campaign" then + for i=1,8 do + if (GetPlayerState(i) == 1) and (H55_IsThisAIPlayer(i) ~= 1) then + local heroes = GetPlayerHeroes(i); + local goldtoken = GetPlayerResource(i,6); + local woodtoken = GetPlayerResource(i,0); + local oretoken = GetPlayerResource(i,1); + local mercurytoken = GetPlayerResource(i,2); + local crystaltoken = GetPlayerResource(i,3); + local sulphurtoken = GetPlayerResource(i,4); + local gemtoken = GetPlayerResource(i,5); + local chosegold = 0; + local choseres = 0; + local choseartifact = 0; + if table.contains(H55_StartBonusGold,goldtoken) then + -- H55_GiveResourcesSilent(i,6,2500); + chosegold = 1; + somebodygold = 1; + if H55_Difficulty == 0 then + SetPlayerResource(i,6,30000); + elseif H55_Difficulty == 3 then + SetPlayerResource(i,6,10000); + else + SetPlayerResource(i,6,20000); + end; + -- if heroes ~= nil then + -- H55_ArtifactStartBonus(heroes[0]); + -- end; + end; + if chosegold == 0 then + if H55_Difficulty == 0 then + if table.contains(H55_StartBonusNormalWO,woodtoken) then + SetPlayerResource(i,0,30); + choseres = 1; + somebodyres = 1; + -- if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + if table.contains(H55_StartBonusNormalWO,oretoken) then + SetPlayerResource(i,1,30); + end; + if table.contains(H55_StartBonusNormal,mercurytoken) then + SetPlayerResource(i,2,15); + choseres = 1; + somebodyres = 1; + -- if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + if table.contains(H55_StartBonusNormal,crystaltoken) then + SetPlayerResource(i,3,15); + choseres = 1; + somebodyres = 1; + -- if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + if table.contains(H55_StartBonusNormal,sulphurtoken) then + SetPlayerResource(i,4,15); + choseres = 1; + somebodyres = 1; + -- if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + if table.contains(H55_StartBonusNormal,gemtoken) then + SetPlayerResource(i,5,15); + choseres = 1; + somebodyres = 1; + -- if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + elseif H55_Difficulty == 3 then + if table.contains(H55_StartBonusImpossibleWO,woodtoken) then + SetPlayerResource(i,0,10); + choseres = 1; + somebodyres = 1; + -- if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + if table.contains(H55_StartBonusImpossibleWO,oretoken) then + SetPlayerResource(i,1,10); + end; + if table.contains(H55_StartBonusImpossible,mercurytoken) then + SetPlayerResource(i,2,5); + choseres = 1; + somebodyres = 1; + -- if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + if table.contains(H55_StartBonusImpossible,crystaltoken) then + SetPlayerResource(i,3,5); + choseres = 1; + -- if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + if table.contains(H55_StartBonusImpossible,sulphurtoken) then + SetPlayerResource(i,4,5); + choseres = 1; + somebodyres = 1; + --if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + if table.contains(H55_StartBonusImpossible,gemtoken) then + SetPlayerResource(i,5,5); + choseres = 1; + somebodyres = 1; + --if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + else + if table.contains(H55_StartBonusHardWO,woodtoken) then + SetPlayerResource(i,0,20); + choseres = 1; + somebodyres = 1; + --if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + if table.contains(H55_StartBonusHardWO,oretoken) then + SetPlayerResource(i,1,20); + end; + if table.contains(H55_StartBonusHard,mercurytoken) then + SetPlayerResource(i,2,10); + choseres = 1; + somebodyres = 1; + --if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + if table.contains(H55_StartBonusHard,crystaltoken) then + SetPlayerResource(i,3,10); + choseres = 1; + somebodyres = 1; + --if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + if table.contains(H55_StartBonusHard,sulphurtoken) then + SetPlayerResource(i,4,10); + choseres = 1; + somebodyres = 1; + --if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + if table.contains(H55_StartBonusHard,gemtoken) then + SetPlayerResource(i,5,10); + choseres = 1; + somebodyres = 1; + --if heroes ~= nil then H55_ArtifactStartBonus(heroes[0]) end; + end; + end; + end; + if choseres == 0 and chosegold == 0 then + if heroes ~= nil then + if HasArtefact(heroes[0],ARTIFACT_WAND_OF_X) == 1 then + choseartifact = 1; + somebodyartifact = 1; + RemoveArtefact(heroes[0],ARTIFACT_WAND_OF_X); + elseif HasArtefact(heroes[0],ARTIFACT_SCROLL_OF_SPELL_X) == 1 then + choseartifact = 1; + somebodyartifact = 1; + RemoveArtefact(heroes[0],ARTIFACT_SCROLL_OF_SPELL_X); + else + for i,minorartifact in H55_MinorArtifacts do + if HasArtefact(heroes[0],minorartifact) == 1 then + choseartifact = 1; + somebodyartifact = 1; + RemoveArtefact(heroes[0],minorartifact); + end; + end; + end; + --H55_StartCreatureBonus(i,heroes[0],1,4); + end; + end; + if choseres == 0 and chosegold == 0 and choseartifact == 0 then + --failsafe + choseartifact = 1; + somebodyartifact = 1; + end; + if heroes ~= nil then + H55_ArtifactStartBonus(heroes[0]); + end; + end; + end; + end; + if H55_MapType == "Scenario" then + if H55_GameMode == 0 then + print("H55 Player chose casual mode for scenario"); + else + H55_GameMode = 1; + print("H55 Force Default mode without cheating for scenario "); + end; + elseif H55_MapType == "Campaign" then + H55_GameMode = 1; + print("H55 Force Default mode without cheating for campaign"); + else + if amountai ~= 0 then + if H55_GameMode ~= 0 and somebodyartifact == 1 then + H55_GameMode = 1; + print("H55 Players chose Default mode"); + elseif H55_GameMode ~= 0 and somebodygold == 1 then + H55_GameMode = 2; + for i=1,8 do + if (GetPlayerState(i) == 1) and (H55_IsThisAIPlayer(i) == 1) then + DenyAIHeroesFlee(i,1); + -- if H55_Difficulty <= 1 then + -- SetPlayerResource(i,0,20); + -- SetPlayerResource(i,1,20); + -- SetPlayerResource(i,2,10); + -- SetPlayerResource(i,3,10); + -- SetPlayerResource(i,4,10); + -- SetPlayerResource(i,5,10); + -- SetPlayerResource(i,6,20000); + -- print("H55 AI starts with medium resources."); + -- end; + -- DenyAIHeroesFlee(playerID, isDenied, enemyHeroName = "" ); + end; + end; + print("H55 Players chose more difficult mode, AI heroes will fight to death"); + if H55_NoAutoTeamHumans == 1 then H55_TeamAI() else H55_TeamHumansvsAI() end; + elseif H55_GameMode ~= 0 and somebodyres == 1 then + H55_GameMode = 3; + for i=1,8 do + if (GetPlayerState(i) == 1) and (H55_IsThisAIPlayer(i) == 1) then + DenyAIHeroesFlee(i,1); + end; + end; + print("H55 Player chose most difficult mode, AI heroes are unlootable and fight to death"); + if H55_NoAutoTeamHumans == 1 then H55_TeamAI() else H55_TeamHumansvsAI() end; + else + --H55_GameMode = 0; + for i=1,8 do + if (GetPlayerState(i) == 1) and (H55_IsThisAIPlayer(i) == 1) then + H55_TakeResourcesSilent(i,0,10); + H55_TakeResourcesSilent(i,1,10); + H55_TakeResourcesSilent(i,2,5); + H55_TakeResourcesSilent(i,3,5); + H55_TakeResourcesSilent(i,4,5); + H55_TakeResourcesSilent(i,5,5); + H55_TakeResourcesSilent(i,6,10000); + end; + end; + print("H55 Players chose casual mode, AI loses all advantages and plays with less or equal resources"); + end; + else + H55_GameMode = 1; + H55_PvPBanks = 1; + print("H55 Game has only human players, Game mode set to default mode"); + end; + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {103,"StartingArmies",1,"NoHero"};-------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_MapType ~= "Campaign" then + for i=1,8 do + if (GetPlayerState(i) == 1) then + local heroes = GetPlayerHeroes(i); + + --Guild summoning + if heroes ~= nil then + if table.contains(heroes,"Xerxon") then + H55_BKnightSwitch[i] = 1; + end; + if table.contains(heroes,"AlaricMP") then + H55_FireSwitch[i] = 1; + end; + if table.contains(heroes,"Brand") then + H55_FireSwitch[i] = 1; + end; + if table.contains(heroes,"Azar") then + H55_WolfSwitch[i] = 1; + end; + if table.contains(heroes,"Kyrre") then + H55_WolfSwitch[i] = 1; + end; + + local hero = heroes[0]; + local fc = H55_GetHeroRaceNum(hero); + + --H55_MakeStartArmy(hero,fc,add_tier,add_qty,spec_tier,spec_swap) + --H55_MakeStartArmyNeutral(hero,fc,add_neut,add_qty,spec_tier,spec_swap) + --spec swap must be 1 or 2, or 0 if not used, add_qty must be worth more than 100 exp, and more than 150 for neutral (180 for inferno) + + if fc == 1 then + if hero == "Nicolai" then + H55_MakeStartArmy(hero,fc,5,2,0,0); + elseif hero == "Sarge" then + H55_MakeStartArmy(hero,fc,6,1,0,0); + elseif hero == "GodricMP" then + H55_MakeStartArmy(hero,fc,5,2,0,0); + elseif hero == "RedHeavenHero06" then + H55_MakeStartArmy(hero,fc,4,20,0,0); + elseif hero == "RedHeavenHero03" then + H55_MakeStartArmyNeutral(hero,fc,6,5,0,0); + elseif hero == "AlaricMP" then + H55_MakeStartArmyNeutral(hero,fc,1,3,0,0); + elseif hero == "Orrin" then + H55_MakeStartArmy(hero,fc,1,20,0,0); + elseif hero == "Nathaniel" then + H55_MakeStartArmy(hero,fc,1,20,0,0); + else + H55_MakeStartArmy(hero,fc,3,20,0,0); + end; + end; + + if fc == 2 then + if hero == "Jenova" then + H55_MakeStartArmy(hero,fc,5,2,3,1); + elseif hero == "Mephala" then + H55_MakeStartArmy(hero,fc,6,1,3,1); + elseif hero == "Itil" then + H55_MakeStartArmy(hero,fc,5,2,3,2); + elseif hero == "Ildar" then + H55_MakeStartArmy(hero,fc,4,45,0,0); + elseif hero == "Melodia" then + H55_MakeStartArmyNeutral(hero,fc,2,3,0,0); + elseif hero == "Kyrre" then + H55_MakeStartArmyNeutral(hero,fc,6,5,3,1); + elseif hero == "Ossir" then + local rnd = random(4)+3; + AddHeroCreatures(hero,H55_Creatures[fc][1][1],rnd); + elseif hero == "Gem" then + H55_MakeStartArmy(hero,fc,3,4,1,2); + else + H55_MakeStartArmy(hero,fc,3,20,0,0); + end; + end; + + if fc == 3 then + if hero == "Harkenraz" then + H55_MakeStartArmy(hero,fc,6,1,4,2); + elseif hero == "Malustar" then + H55_MakeStartArmy(hero,fc,6,1,4,1); + elseif hero == "Ash" then + H55_MakeStartArmy(hero,fc,5,2,4,2); + elseif hero == "Calid2" then + H55_MakeStartArmyNeutral(hero,fc,1,4,3,2); + elseif hero == "Calh" then + local rnd = random(3)+19; + H55_MakeStartArmy(hero,fc,1,rnd,4,2); + else + H55_MakeStartArmy(hero,fc,4,45,0,0); + end; + end; + + if fc == 4 then + if hero == "Archilus" then + H55_MakeStartArmy(hero,fc,7,1,0,0); + elseif hero == "Pelt" then + H55_MakeStartArmy(hero,fc,6,1,3,2); + elseif hero == "Vidomina" then + H55_MakeStartArmy(hero,fc,5,2,3,2); + elseif hero == "Tamika" then + H55_MakeStartArmy(hero,fc,4,4,3,2); + elseif hero == "Xerxon" then + H55_MakeStartArmyNeutral(hero,fc,10,1,4,2); + elseif hero == "Thant" then + H55_MakeStartArmyNeutral(hero,fc,9,3,0,0); + elseif hero == "Nemor" then + local rnd = random(3)+4; + H55_MakeStartArmy(hero,fc,3,rnd,3,2); + elseif hero == "Straker" then + H55_MakeStartArmy(hero,fc,1,20,0,0); + elseif hero == "Nimbus" then + local rnd = random(2)+5; + H55_MakeStartArmy(hero,fc,3,rnd,1,2); + else + H55_MakeStartArmy(hero,fc,3,20,0,0); + end; + end; + + if fc == 5 then + if hero == "Rissa" then + H55_MakeStartArmy(hero,fc,4,3,3,2); + elseif hero == "Davius" then + H55_MakeStartArmy(hero,fc,6,1,3,2); + elseif hero == "Cyrus" then + H55_MakeStartArmy(hero,fc,5,3,4,1); + elseif hero == "Razzak" then + H55_MakeStartArmy(hero,fc,4,3,0,0); + elseif hero == "Emilia" then + H55_MakeStartArmyNeutral(hero,fc,7,1,4,1); + elseif hero == "Isher" then + H55_MakeStartArmy(hero,fc,1,40,0,0); + elseif hero == "Gurvilin" then + local rnd = random(2)+3; + H55_MakeStartArmy(hero,fc,4,rnd,2,1); + elseif hero == "Havez" then + H55_MakeStartArmy(hero,fc,2,0,0,0); + else + H55_MakeStartArmy(hero,fc,3,20,0,0); + end; + end; + + if fc == 6 then + if hero == "Agbeth" then + H55_MakeStartArmy(hero,fc,5,2,0,0); + elseif hero == "Eruina" then + H55_MakeStartArmy(hero,fc,6,1,0,0); + elseif hero == "ShadwynMP" then + H55_MakeStartArmy(hero,fc,6,1,0,0); + elseif hero == "ThralsaiMP" then + H55_MakeStartArmy(hero,fc,5,2,0,0); + elseif hero == "Ferigl" then + H55_MakeStartArmy(hero,fc,4,40,0,0); + elseif hero == "Darkstorm" then + H55_MakeStartArmy(hero,fc,1,40,0,0); + elseif hero == "Menel" then + H55_MakeStartArmyNeutral(hero,fc,8,1,0,0); + elseif hero == "Urunir" then + H55_MakeStartArmy(hero,fc,1,30,0,0); + elseif hero == "Ohtarig" then + H55_MakeStartArmy(hero,fc,2,30,0,0); + else + H55_MakeStartArmy(hero,fc,3,20,0,0); + end; + end; + + if fc == 7 then + if hero == "Hangvul2" then + H55_MakeStartArmy(hero,fc,5,2,0,0); + elseif hero == "Ufretin" then + H55_MakeStartArmy(hero,fc,6,1,0,0); + elseif hero == "Egil" then + H55_MakeStartArmy(hero,fc,5,2,0,0); + elseif hero == "Maximus" then + H55_MakeStartArmy(hero,fc,4,70,0,0); + elseif hero == "Bersy" then + H55_MakeStartArmy(hero,fc,2,20,0,0); + elseif hero == "KingTolghar" then + H55_MakeStartArmyNeutral(hero,fc,4,3,5,2); + elseif hero == "Brand" then + H55_MakeStartArmyNeutral(hero,fc,1,3,0,0); + elseif hero == "Skeggy" then + H55_MakeStartArmy(hero,fc,1,20,0,0); + elseif hero == "Ingvar" then + H55_MakeStartArmy(hero,fc,2,20,0,0); + -- elseif hero == "Bart" then + -- ChangeHeroStat(hero,STAT_DEFENCE,1); + -- ChangeHeroStat(hero,STAT_SPELL_POWER,1); + -- ChangeHeroStat(hero,STAT_KNOWLEDGE,1); + -- H55_MakeStartArmyElementalist(hero,fc); + else + H55_MakeStartArmy(hero,fc,3,20,0,0); + end; + end; + + if fc == 8 then + if hero == "GottaiMP" then + H55_MakeStartArmy(hero,fc,5,3,0,0); + elseif hero == "Hero6" then + H55_MakeStartArmy(hero,fc,4,30,0,0); + elseif hero == "Hero4" then + H55_MakeStartArmy(hero,fc,5,3,0,0); + elseif hero == "Hero8" then + H55_MakeStartArmy(hero,fc,2,40,0,0);--Telsek + elseif hero == "Kunyak" then + H55_MakeStartArmyNeutral(hero,fc,3,3,0,0); + elseif hero == "Azar" then + H55_MakeStartArmyNeutral(hero,fc,6,5,0,0); + elseif hero == "Hero1" then + H55_MakeStartArmy(hero,fc,3,20,0,0);--Kragh + elseif hero == "Hero9" then + H55_MakeStartArmy(hero,fc,1,20,0,0);--Kilghan + elseif hero == "Matewa" then + H55_MakeStartArmy(hero,fc,3,20,0,0); + elseif hero == "Crag" then + H55_MakeStartArmy(hero,fc,3,20,0,0); + elseif hero == "Kraal" then + H55_MakeStartArmy(hero,fc,3,20,0,0); + elseif hero == "Quroq" then + H55_MakeStartArmy(hero,fc,1,20,0,0); + else + H55_MakeStartArmy(hero,fc,4,30,0,0); + end; + end; + + end; + end; + -- sleep(0.1); + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {104,"AICompensation",1,"NoHero"};------------------------------------------------------------------------------------------------ + ------------------------------------------------------------------------------------------------------------------------------------------------ + + -- if H55_GameMode == 0 and H55_Difficulty == 0 then + -- print("H55 skip AI compensation for not visiting Witch Huts"); + -- else + -- for i=1,8 do + -- if (GetPlayerState(i) == 1) and (H55_IsThisAIPlayer(i) == 1) then + -- local heroes = GetPlayerHeroes(i); + -- if heroes ~= nil then + -- for i,hero in heroes do + -- if H55_GetHeroClassType(hero) == "Might" or H55_GetHeroClassType(hero) == "Chieftain" then + -- GiveHeroSkill(hero,1);--2 + -- GiveHeroSkill(hero,1);--2 + -- elseif H55_GetHeroClassType(hero) == "Magic" then + -- GiveHeroSkill(hero,1);--3 + -- GiveHeroSkill(hero,1);--3 + -- else + -- GiveHeroSkill(hero,1);--6 + -- GiveHeroSkill(hero,1);--6 + -- end; + -- end; + -- end; + -- end; + -- end; + -- end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {105,"ArtifactMerchants",1,"NoHero"};----------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_NoArtifactMerchantsInTowns == 1 then + for i, academy in (GetObjectNamesByType("TOWN_ACADEMY")) do + DestroyTownBuildingToLevel(academy,TOWN_BUILDING_SPECIAL_3,0,0); + end; + for i, dungeon in (GetObjectNamesByType("TOWN_DUNGEON")) do + DestroyTownBuildingToLevel(dungeon,TOWN_BUILDING_SPECIAL_4,0,0); + end; + else + for i, academy in (GetObjectNamesByType("TOWN_ACADEMY")) do + local owner = GetObjectOwner(academy); + if owner == 0 then + DestroyTownBuildingToLevel(academy,TOWN_BUILDING_SPECIAL_3,0,0); + elseif owner >= 1 then + if H55_IsThisAIPlayer(owner) == 1 then + DestroyTownBuildingToLevel(academy,TOWN_BUILDING_SPECIAL_3,0,0); + end; + end; + end; + for i, dungeon in (GetObjectNamesByType("TOWN_DUNGEON")) do + local owner = GetObjectOwner(dungeon); + if owner == 0 then + DestroyTownBuildingToLevel(dungeon,TOWN_BUILDING_SPECIAL_4,0,0); + elseif owner >= 1 then + if H55_IsThisAIPlayer(owner) == 1 then + DestroyTownBuildingToLevel(dungeon,TOWN_BUILDING_SPECIAL_4,0,0); + end; + end; + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {107,"Update Campaign Bank Difficulty",1,"NoHero"};------------------------------------------------------------------------------ + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_MapType == "Campaign" then + local map = GetMapDataPath(); + -- local bonus = 0; + -- if H55_Difficulty == 1 then + -- bonus = 0.05; + -- elseif H55_Difficulty == 2 then + -- bonus = 0.1; + -- elseif H55_Difficulty == 3 then + -- bonus = 0.2; + -- else + -- bonus = 0; + -- end; + -- if table.contains(H55_CampaignsM2,map) then + -- H55_BanksDifficulty = 1.1; + -- end; + if table.contains(H55_CampaignsM3,map) then + H55_BanksDifficulty = 1.1; + end; + if table.contains(H55_CampaignsM4,map) then + H55_BanksDifficulty = 1.2; + end; + if table.contains(H55_CampaignsM5,map) then + H55_BanksDifficulty = 1.3; + end; + if map == "Maps/Scenario/C1M5/" then + H55_BanksDifficulty = 1.1; + end; + --H55_BanksDifficulty = H55_BanksDifficulty + bonus; + print("H55 Campaign Battle Site Difficulty set to "..H55_BanksDifficulty); + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {108,"SpecialObjects",1,"NoHero"};-------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + -- if H55_MagmasQty ~= 0 then + -- for i, magma in H55_Magmas do + -- SetObjectEnabled(magma,nil); + -- H55_MagmaVisited[magma] = {}; + -- Trigger(OBJECT_TOUCH_TRIGGER,magma,"H55_MagmaVisit"); + -- end; + -- end; + if H55_MapType == "Scenario" or H55_MapType == "Campaign" or H55_RPGPotions == 1 then + if H55_TradingPostsQty ~= 0 then + for i, object in H55_TradingPosts do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_TradingPostVisit"); + OverrideObjectTooltipNameAndDescription(object,H55_PotionShop_Name,H55_PotionShop_Txt); + end; + end; + end; + if H55_MapType == "RMG" then + if H55_MoonDiscOnARMGMaps == 1 and H55_MoonDiscCoef() < 12 then + H55_MoonDiscQuest = 1; + end; + if H55_ManaObservatories == 1 then + if H55_RObservatoriesQty ~= 0 then + for i, object in H55_RObservatories do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_RObservatoryVisit"); + OverrideObjectTooltipNameAndDescription(object,H55_Observatory_Name,H55_Observatory_Txt); + end; + end; + end; + if H55_ObelisksQty > 0 then + for i,Obelisk in H55_Obelisks do + H55_ObeliskArmies[Obelisk] = {}; + for i = 1,14 do + H55_ObeliskArmies[Obelisk][i] = random(3)+1; + end; + for i = 15,20 do + H55_ObeliskArmies[Obelisk][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_ObeliskArmies[Obelisk][i] = random(2)+1+(i-21); + end; + H55_ObeliskArmies[Obelisk][27] = random(7)+1; + H55_ObeliskArmies[Obelisk][28] = random(8)+1; + H55_ObeliskArmies[Obelisk][29] = random(9)+1; + H55_ObeliskArmies[Obelisk][30] = random(8)+1; + SetObjectEnabled(Obelisk,nil); + H55_ObeliskVisited[Obelisk] = {}; + Trigger(OBJECT_TOUCH_TRIGGER,Obelisk,"H55_ObeliskVisit"); + end; + end; + if H55_ShantirisQty > 0 then + for i,Shantiri in H55_Shantiris do + H55_ShantiriArmies[Shantiri] = {}; + for i = 1,14 do + H55_ShantiriArmies[Shantiri][i] = random(3)+1; + end; + for i = 15,20 do + H55_ShantiriArmies[Shantiri][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_ShantiriArmies[Shantiri][i] = random(2)+1+(i-21); + end; + H55_ShantiriArmies[Shantiri][27] = random(7)+1; + H55_ShantiriArmies[Shantiri][28] = random(8)+1; + H55_ShantiriArmies[Shantiri][29] = random(9)+1; + H55_ShantiriArmies[Shantiri][30] = random(8)+1; + SetObjectEnabled(Shantiri,nil); + H55_ShantiriVisited[Shantiri] = {}; + Trigger(OBJECT_TOUCH_TRIGGER,Shantiri,"H55_ShantiriVisit"); + end; + end; + if H55_MagiHutsQty > 0 then + for i, object in H55_MagiHuts do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_MagiHutVisit"); + --OverrideObjectTooltipNameAndDescription(object,H55_MagiHut_Name,H55_MagiHut_Txt); + end; + end; + -- if H55_FOfYouthQty ~= 0 then + -- for i, object in H55_FOfYouth do + -- SetObjectEnabled(object,nil); + -- Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_ManaObjectVisit"); + -- end; + -- end; + -- -- if H55_FOfFortuneQty ~= 0 then + -- -- for i, object in H55_FOfFortune do + -- -- SetObjectEnabled(object,nil); + -- -- Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_ManaObjectVisit"); + -- -- end; + -- -- end; + -- if H55_OasaeQty ~= 0 then + -- for i, object in H55_Oasae do + -- SetObjectEnabled(object,nil); + -- Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_ManaObjectVisit"); + -- end; + -- end; + -- if H55_FSanctuariesQty ~= 0 then + -- for i, object in H55_FSanctuaries do + -- SetObjectEnabled(object,nil); + -- Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_ManaObjectVisit"); + -- end; + -- end; + -- -- if H55_TemplesQty ~= 0 then + -- -- for i, object in H55_Temples do + -- -- SetObjectEnabled(object,nil); + -- -- Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_ManaObjectVisit"); + -- -- end; + -- -- end; + -- if H55_RallyFlagsQty ~= 0 then + -- for i, object in H55_RallyFlags do + -- SetObjectEnabled(object,nil); + -- Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_ManaObjectVisit"); + -- end; + -- end; + -- if H55_MEShrinesQty ~= 0 then + -- for i, object in H55_MEShrines do + -- SetObjectEnabled(object,nil); + -- Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_ManaObjectVisit"); + -- end; + -- end; + -- if H55_IdolsQty ~= 0 then + -- for i, object in H55_Idols do + -- SetObjectEnabled(object,nil); + -- Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_ManaObjectVisit"); + -- end; + -- end; + -- if H55_FaeriesQty ~= 0 then + -- for i, object in H55_Faeries do + -- SetObjectEnabled(object,nil); + -- Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_ManaObjectVisit"); + -- end; + -- end; + end; + if H55_MapType ~= "Campaign" and H55_MapType ~= "RMG" then + if H55_ObelisksQty > 0 then + for i,Obelisk in H55_Obelisks do + H55_ObeliskArmies[Obelisk] = {}; + for i = 1,14 do + H55_ObeliskArmies[Obelisk][i] = random(3)+1; + end; + for i = 15,20 do + H55_ObeliskArmies[Obelisk][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_ObeliskArmies[Obelisk][i] = random(2)+1+(i-21); + end; + H55_ObeliskArmies[Obelisk][27] = random(7)+1; + H55_ObeliskArmies[Obelisk][28] = random(8)+1; + H55_ObeliskArmies[Obelisk][29] = random(9)+1; + H55_ObeliskArmies[Obelisk][30] = random(8)+1; + SetObjectEnabled(Obelisk,nil); + H55_ObeliskVisited[Obelisk] = {}; + Trigger(OBJECT_TOUCH_TRIGGER,Obelisk,"H55_ObeliskVisit"); + end; + end; + if table.length(H55_MagiHuts) == 0 and H55_ShantirisQty > 0 then + for i,Shantiri in H55_Shantiris do + H55_ShantiriArmies[Shantiri] = {}; + for i = 1,14 do + H55_ShantiriArmies[Shantiri][i] = random(3)+1; + end; + for i = 15,20 do + H55_ShantiriArmies[Shantiri][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_ShantiriArmies[Shantiri][i] = random(2)+1+(i-21); + end; + H55_ShantiriArmies[Shantiri][27] = random(7)+1; + H55_ShantiriArmies[Shantiri][28] = random(8)+1; + H55_ShantiriArmies[Shantiri][29] = random(9)+1; + H55_ShantiriArmies[Shantiri][30] = random(8)+1; + SetObjectEnabled(Shantiri,nil); + H55_ShantiriVisited[Shantiri] = {}; + Trigger(OBJECT_TOUCH_TRIGGER,Shantiri,"H55_ShantiriVisit"); + end; + end; + end; + if H55_SphinxsQty ~= 0 then + for i, sphinx in H55_Sphinxs do + SetObjectEnabled(sphinx,nil); + H55_SphinxVisited[sphinx] = {}; + Trigger(OBJECT_TOUCH_TRIGGER,sphinx,"H55_SphinxVisit"); + end; + end; + if H55_MermaidsQty ~= 0 then + for i, mermaid in H55_Mermaids do + H55_MermaidChoices[mermaid] = {}; + H55_MermaidChoices[mermaid][1] = random(15)+1; + H55_MermaidChoices[mermaid][2] = random(2)+1; + H55_MermaidChoices[mermaid][3] = random(5)+1; + H55_MermaidChoices[mermaid][4] = random(2)+1; + H55_MermaidChoices[mermaid][5] = random(2)+1; + SetObjectEnabled(mermaid,nil); + Trigger(OBJECT_TOUCH_TRIGGER,mermaid,"H55_MermaidVisit"); + end; + end; + if H55_SummonTemplesQty ~= 0 then + for i, temple in H55_SummonTemples do + H55_SummonTempleChoices[temple] = {}; + H55_SummonTempleChoices[temple][1] = random(6); + H55_SummonTempleChoices[temple][2] = random(7)+1; + for i=1,8 do + if GetPlayerState(i) == 1 then + SetAIPlayerAttractor(temple,i,-1); + end; + end; + SetObjectEnabled(temple,nil); + Trigger(OBJECT_TOUCH_TRIGGER,temple,"H55_SummonTempleVisit"); + end; + end; + if H55_WitchHutsQty ~= 0 then + if H55_ARMG_Duel == 1 then + for i, hut in H55_WitchHuts do + SetObjectEnabled(hut,nil); + Trigger(OBJECT_TOUCH_TRIGGER,hut,"H55_WitchVisitDuel"); + end; + else + for i, hut in H55_WitchHuts do + local choice1 = random(12)+1 + local choice2 = random(12)+1 + if choice1 == choice2 and choice2 <= 11 then + choice2 = choice2+1; + end; + if choice1 == choice2 and choice2 == 12 then + choice2 = 1; + end; + H55_WHChoice1[hut] = choice1; + H55_WHChoice2[hut] = choice2; + H55_WHVisited[hut] = {}; + SetObjectEnabled(hut,nil); + Trigger(OBJECT_TOUCH_TRIGGER,hut,"H55_WitchVisit"); + end; + end; + end; + if H55_ARMG_Duel == 1 then + if H55_FOfYouthQty ~= 0 then + for i, object in H55_FOfYouth do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_IllegalVisit"); + end; + end; + if H55_FOfFortuneQty ~= 0 then + for i, object in H55_FOfFortune do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_IllegalVisit"); + end; + end; + if H55_TemplesQty ~= 0 then + for i, object in H55_Temples do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_IllegalVisit"); + end; + end; + if H55_RallyFlagsQty ~= 0 then + for i, object in H55_RallyFlags do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_IllegalVisit"); + end; + end; + if H55_OasaeQty ~= 0 then + for i, object in H55_Oasae do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_IllegalVisit"); + end; + end; + if H55_WellsQty ~= 0 then + for i, object in H55_Wells do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_IllegalVisit"); + end; + end; + if H55_MEShrinesQty ~= 0 then + for i, object in H55_MEShrines do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_IllegalVisit"); + end; + end; + if H55_IdolsQty ~= 0 then + for i, object in H55_Idols do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_IllegalVisit"); + end; + end; + if H55_FaeriesQty ~= 0 then + for i, object in H55_Faeries do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_IllegalVisit"); + end; + end; + if H55_FSanctuariesQty ~= 0 then + for i, object in H55_FSanctuaries do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_IllegalVisit"); + end; + end; + if H55_RObservatoriesQty ~= 0 then + for i, object in H55_RObservatories do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_RObservatoryVisit"); + end; + end; + else + -- if H55_FOfYouthQty ~= 0 then + -- for i, object in H55_FOfYouth do + -- SetObjectEnabled(object,nil); + -- Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_FountainYouthVisit"); + -- end; + -- end; + if H55_FOfFortuneQty ~= 0 then + for i, object in H55_FOfFortune do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_FountainFortuneVisit"); + end; + end; + if H55_TemplesQty ~= 0 then + for i, object in H55_Temples do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_RegularTempleVisit"); + end; + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {109,"Junk",1,"NoHero"};------------------------------------------------------------------------------------------------------------ + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_WagonsQty ~= 0 then + for i, wagon in H55_Wagons do + H55_WagonChoices[wagon] = {}; + H55_WagonChoices[wagon][1] = random(6)+3; + H55_WagonChoices[wagon][2] = random(12)+1; + H55_WagonChoices[wagon][3] = random(table.length(H55_MinorArtifacts))+1; + H55_WagonChoices[wagon][4] = random(7); + H55_WagonChoices[wagon][5] = random(4)+2; + -- H55_WagonChoices[wagon][6] = random(100)+1; + -- H55_WagonChoices[wagon][7] = random(100)+1; + -- H55_WagonChoices[wagon][8] = random(100)+1; + SetObjectEnabled(wagon,nil); + Trigger(OBJECT_TOUCH_TRIGGER,wagon,"H55_WagonVisit"); + end; + end; + if H55_SkeletonsQty ~= 0 then + for i, skeleton in H55_Skeletons do + H55_SkeletonChoices[skeleton] = {}; + H55_SkeletonChoices[skeleton][1] = random(3)+1; + H55_SkeletonChoices[skeleton][2] = random(12)+1; + H55_SkeletonChoices[skeleton][3] = random(table.length(H55_MinorArtifacts))+1; + H55_SkeletonChoices[skeleton][4] = random(3); + H55_SkeletonChoices[skeleton][5] = random(4)+2; + -- H55_SkeletonChoices[skeleton][6] = random(100)+1; + -- H55_SkeletonChoices[skeleton][7] = random(100)+1; + -- H55_SkeletonChoices[skeleton][8] = random(100)+1; + SetObjectEnabled(skeleton,nil); + Trigger(OBJECT_TOUCH_TRIGGER,skeleton,"H55_SkeletonVisit"); + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {110,"Banks",1,"NoHero"};----------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_CryptsQty ~= 0 then + for i,crypt in H55_Crypts do + H55_CryptArmies[crypt] = {}; + for i = 1,14 do + H55_CryptArmies[crypt][i] = random(3)+1; + end; + for i = 15,20 do + H55_CryptArmies[crypt][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_CryptArmies[crypt][i] = random(2)+1+(i-21); + end; + H55_CryptArmies[crypt][27] = random(7)+1; + H55_CryptArmies[crypt][28] = random(11)+1; + H55_CryptArmies[crypt][29] = random(12)+1; + SetObjectEnabled(crypt,nil); + Trigger(OBJECT_TOUCH_TRIGGER,crypt,"H55_CryptVisit"); + end; + end; + if H55_DemonTowersQty > 0 then + for i,DemonTower in H55_DemonTowers do + H55_DemonTowerArmies[DemonTower] = {}; + for i = 1,14 do + H55_DemonTowerArmies[DemonTower][i] = random(3)+1; + end; + for i = 15,20 do + H55_DemonTowerArmies[DemonTower][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_DemonTowerArmies[DemonTower][i] = random(2)+1+(i-21); + end; + H55_DemonTowerArmies[DemonTower][27] = random(7)+1; + H55_DemonTowerArmies[DemonTower][28] = random(8)+1; + H55_DemonTowerArmies[DemonTower][29] = random(9)+1; + SetObjectEnabled(DemonTower,nil); + Trigger(OBJECT_TOUCH_TRIGGER,DemonTower,"H55_DemonTowerVisit"); + end; + end; + if H55_ForestTowersQty > 0 then + for i,ForestTower in H55_ForestTowers do + H55_ForestTowerArmies[ForestTower] = {}; + for i = 1,14 do + H55_ForestTowerArmies[ForestTower][i] = random(3)+1; + end; + for i = 15,20 do + H55_ForestTowerArmies[ForestTower][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_ForestTowerArmies[ForestTower][i] = random(2)+1+(i-21); + end; + H55_ForestTowerArmies[ForestTower][27] = random(7)+1; + H55_ForestTowerArmies[ForestTower][28] = random(8)+1; + H55_ForestTowerArmies[ForestTower][29] = random(9)+1; + SetObjectEnabled(ForestTower,nil); + Trigger(OBJECT_TOUCH_TRIGGER,ForestTower,"H55_ForestTowerVisit"); + end; + end; + if H55_StoneVaultsQty > 0 then + for i,StoneVault in H55_StoneVaults do + H55_StoneVaultArmies[StoneVault] = {} + for i = 1,14 do + H55_StoneVaultArmies[StoneVault][i] = random(3)+1; + end; + for i = 15,20 do + H55_StoneVaultArmies[StoneVault][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_StoneVaultArmies[StoneVault][i] = random(2)+1+(i-21); + end; + H55_StoneVaultArmies[StoneVault][27] = random(7)+1; + H55_StoneVaultArmies[StoneVault][28] = random(8)+1; + H55_StoneVaultArmies[StoneVault][29] = random(9)+1; + SetObjectEnabled(StoneVault,nil); + Trigger(OBJECT_TOUCH_TRIGGER,StoneVault,"H55_StoneVaultVisit"); + end; + end; + if H55_MageVaultsQty > 0 then + for i,MageVault in H55_MageVaults do + H55_MageVaultArmies[MageVault] = {}; + for i = 1,14 do + H55_MageVaultArmies[MageVault][i] = random(3)+1; + end; + for i = 15,20 do + H55_MageVaultArmies[MageVault][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_MageVaultArmies[MageVault][i] = random(2)+1+(i-21); + end; + H55_MageVaultArmies[MageVault][27] = random(7)+1; + H55_MageVaultArmies[MageVault][28] = random(8)+1; + H55_MageVaultArmies[MageVault][29] = random(9)+1; + SetObjectEnabled(MageVault,nil); + Trigger(OBJECT_TOUCH_TRIGGER,MageVault,"H55_MageVaultVisit"); + end; + end; + if H55_DwarvenTreasuresQty > 0 then + for i,DwarvenTreasure in H55_DwarvenTreasures do + H55_DwarvenTreasureArmies[DwarvenTreasure] = {}; + for i = 1,14 do + H55_DwarvenTreasureArmies[DwarvenTreasure][i] = random(3)+1; + end; + for i = 15,20 do + H55_DwarvenTreasureArmies[DwarvenTreasure][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_DwarvenTreasureArmies[DwarvenTreasure][i] = random(2)+1+(i-21); + end; + H55_DwarvenTreasureArmies[DwarvenTreasure][27] = random(7)+1; + H55_DwarvenTreasureArmies[DwarvenTreasure][28] = random(8)+1; + H55_DwarvenTreasureArmies[DwarvenTreasure][29] = random(9)+1; + SetObjectEnabled(DwarvenTreasure,nil); + Trigger(OBJECT_TOUCH_TRIGGER,DwarvenTreasure,"H55_DwarvenTreasureVisit"); + end; + end; + if H55_WitchTemplesQty > 0 then + for i,WitchTemple in H55_WitchTemples do + H55_WitchTempleArmies[WitchTemple] = {}; + for i = 1,14 do + H55_WitchTempleArmies[WitchTemple][i] = random(3)+1; + end; + for i = 15,20 do + H55_WitchTempleArmies[WitchTemple][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_WitchTempleArmies[WitchTemple][i] = random(2)+1+(i-21); + end; + H55_WitchTempleArmies[WitchTemple][27] = random(7)+1; + H55_WitchTempleArmies[WitchTemple][28] = random(8)+1; + H55_WitchTempleArmies[WitchTemple][29] = random(9)+1; + SetObjectEnabled(WitchTemple,nil); + Trigger(OBJECT_TOUCH_TRIGGER,WitchTemple,"H55_WitchTempleVisit"); + end; + end; + if H55_ThicketsQty > 0 then + for i,Thicket in H55_Thickets do + H55_ThicketArmies[Thicket] = {} + for i = 1,14 do + H55_ThicketArmies[Thicket][i] = random(3)+1; + end; + for i = 15,20 do + H55_ThicketArmies[Thicket][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_ThicketArmies[Thicket][i] = random(2)+1+(i-21); + end; + H55_ThicketArmies[Thicket][27] = random(7)+1; + H55_ThicketArmies[Thicket][28] = random(8)+1; + H55_ThicketArmies[Thicket][29] = random(9)+1; + SetObjectEnabled(Thicket,nil); + Trigger(OBJECT_TOUCH_TRIGGER,Thicket,"H55_ThicketVisit"); + end; + end; + if H55_PyramidsQty > 0 then + for i,Pyramid in H55_Pyramids do + H55_PyramidArmies[Pyramid] = {}; + for i = 1,14 do + H55_PyramidArmies[Pyramid][i] = random(3)+1; + end; + for i = 15,20 do + H55_PyramidArmies[Pyramid][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_PyramidArmies[Pyramid][i] = random(2)+1+(i-21); + end; + H55_PyramidArmies[Pyramid][27] = random(7)+1; + H55_PyramidArmies[Pyramid][28] = random(8)+1; + H55_PyramidArmies[Pyramid][29] = random(9)+1; + SetObjectEnabled(Pyramid,nil); + Trigger(OBJECT_TOUCH_TRIGGER,Pyramid,"H55_PyramidVisit"); + end; + end; + if H55_OrcTunnelsQty > 0 then + for i,OrcTunnel in H55_OrcTunnels do + H55_OrcTunnelArmies[OrcTunnel] = {}; + for i = 1,14 do + H55_OrcTunnelArmies[OrcTunnel][i] = random(3)+1; + end; + for i = 15,20 do + H55_OrcTunnelArmies[OrcTunnel][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_OrcTunnelArmies[OrcTunnel][i] = random(2)+1+(i-21); + end; + H55_OrcTunnelArmies[OrcTunnel][27] = random(7)+1; + H55_OrcTunnelArmies[OrcTunnel][28] = random(8)+1; + H55_OrcTunnelArmies[OrcTunnel][29] = random(9)+1; + SetObjectEnabled(OrcTunnel,nil); + Trigger(OBJECT_TOUCH_TRIGGER,OrcTunnel,"H55_OrcTunnelVisit"); + end; + end; + if H55_StockpilesQty > 0 then + for i,Stockpile in H55_Stockpiles do + H55_StockpileArmies[Stockpile] = {}; + for i = 1,7 do + H55_StockpileArmies[Stockpile][i] = random(3)+1; + end; + H55_StockpileArmies[Stockpile][8] = random(5)+1; + SetObjectEnabled(Stockpile,nil); + Trigger(OBJECT_TOUCH_TRIGGER,Stockpile,"H55_StockpileVisit"); + end; + end; + if H55_UtopiasQty > 0 then + for i,Utopia in H55_Utopias do + H55_UtopiaArmies[Utopia] = {}; + for i = 1,6 do + H55_UtopiaArmies[Utopia][i] = random(3)+1; + end; + H55_UtopiaArmies[Utopia][7] = random(8)+1; + SetObjectEnabled(Utopia,nil); + Trigger(OBJECT_TOUCH_TRIGGER,Utopia,"H55_UtopiaVisit"); + end; + end; + if H55_AbandonedMinesQty > 0 then + if H55_ARMG_Duel == 1 then + for i,AbandonedMine in H55_AbandonedMines do + SetObjectEnabled(AbandonedMine,nil); + Trigger(OBJECT_TOUCH_TRIGGER,AbandonedMine,"H55_AbandonedMineVisitDuel"); + end; + else + for i,AbandonedMine in H55_AbandonedMines do + H55_AbandonedMineArmies[AbandonedMine] = {}; + for i = 1,14 do + H55_AbandonedMineArmies[AbandonedMine][i] = random(3)+1; + end; + for i = 15,20 do + H55_AbandonedMineArmies[AbandonedMine][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_AbandonedMineArmies[AbandonedMine][i] = random(2)+1+(i-21); + end; + H55_AbandonedMineArmies[AbandonedMine][27] = random(7)+1; + H55_AbandonedMineArmies[AbandonedMine][28] = random(8)+1; + H55_AbandonedMineArmies[AbandonedMine][29] = random(9)+1; + H55_AbandonedMineArmies[AbandonedMine][30] = random(8)+1; + SetObjectEnabled(AbandonedMine,nil); + Trigger(OBJECT_TOUCH_TRIGGER,AbandonedMine,"H55_AbandonedMineVisit"); + end; + end; + end; + if H55_UnkemptsQty > 0 then + for i,Unkempt in H55_Unkempts do + H55_UnkemptArmies[Unkempt] = {}; + for i = 1,14 do + H55_UnkemptArmies[Unkempt][i] = random(3)+1; + end; + for i = 15,20 do + H55_UnkemptArmies[Unkempt][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_UnkemptArmies[Unkempt][i] = random(2)+1+(i-21); + end; + H55_UnkemptArmies[Unkempt][27] = random(7)+1; + H55_UnkemptArmies[Unkempt][28] = random(8)+1; + H55_UnkemptArmies[Unkempt][29] = random(9)+1; + H55_UnkemptArmies[Unkempt][30] = random(8)+1; + SetObjectEnabled(Unkempt,nil); + Trigger(OBJECT_TOUCH_TRIGGER,Unkempt,"H55_UnkemptVisit"); + end; + end; + if H55_DemolishsQty > 0 then + for i,Demolish in H55_Demolishs do + H55_DemolishArmies[Demolish] = {}; + for i = 1,14 do + H55_DemolishArmies[Demolish][i] = random(3)+1; + end; + for i = 15,20 do + H55_DemolishArmies[Demolish][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_DemolishArmies[Demolish][i] = random(2)+1+(i-21); + end; + H55_DemolishArmies[Demolish][27] = random(7)+1; + H55_DemolishArmies[Demolish][28] = random(8)+1; + H55_DemolishArmies[Demolish][29] = random(9)+1; + H55_DemolishArmies[Demolish][30] = random(8)+1; + SetObjectEnabled(Demolish,nil); + Trigger(OBJECT_TOUCH_TRIGGER,Demolish,"H55_DemolishVisit"); + end; + end; + if H55_SunkenTemplesQty > 0 then + for i,SunkenTemple in H55_SunkenTemples do + H55_SunkenTempleArmies[SunkenTemple] = {}; + for i = 1,14 do + H55_SunkenTempleArmies[SunkenTemple][i] = random(3)+1; + end; + for i = 15,20 do + H55_SunkenTempleArmies[SunkenTemple][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_SunkenTempleArmies[SunkenTemple][i] = random(2)+1+(i-21); + end; + H55_SunkenTempleArmies[SunkenTemple][27] = random(7)+1; + H55_SunkenTempleArmies[SunkenTemple][28] = random(8)+1; + H55_SunkenTempleArmies[SunkenTemple][29] = random(9)+1; + H55_SunkenTempleArmies[SunkenTemple][30] = random(8)+1; + SetObjectEnabled(SunkenTemple,nil); + Trigger(OBJECT_TOUCH_TRIGGER,SunkenTemple,"H55_SunkenTempleVisit"); + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {111,"ArtifactQuests",1,"NoHero"};-------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + H55_TriggerToObjectType("BUILDING_ASTROLOGER_TOWER",OBJECT_TOUCH_TRIGGER,"H55_AstrologerVisit",nil); + H55_TriggerToObjectType("BUILDING_SPELL_SHOP",OBJECT_TOUCH_TRIGGER,"H55_SpellShopVisit",nil); + H55_TriggerToObjectType("BUILDING_MEMORY_MENTOR",OBJECT_TOUCH_TRIGGER,"H55_MemoryMentorVisit",nil); + H55_TriggerToObjectType("BUILDING_BLACK_MARKET",OBJECT_TOUCH_TRIGGER,"H55_BlackMarketVisit",nil); + H55_TriggerToObjectType("BUILDING_SACRIFICIAL_ALTAR",OBJECT_TOUCH_TRIGGER,"H55_SacrificialAltarVisit",nil); + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {111a,"HillFort",1,"NoHero"};-------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + H55_TriggerToObjectType("BUILDING_HILL_FORT",OBJECT_TOUCH_TRIGGER,"H55_HillFortVisit",nil); + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {112,"Suppliers",1,"NoHero"};------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_MysticalGardens ~= nil then + for i,garden in H55_MysticalGardens do + H55_WeeklyMysticalGardenRes[garden] = random(2); + H55_MysticalGardensOwned[garden] = 0; + Trigger(OBJECT_TOUCH_TRIGGER,garden,"H55_MysticalGardenVisit"); + SetObjectEnabled(garden,nil); + end; + end; + + if H55_SiegeWorkshops ~= nil then + for i,workshop in H55_SiegeWorkshops do + H55_WeeklySiegeWorkshopResQty[workshop] = 3+random(5); + H55_SiegeWorkshopsOwned[workshop] = 0; + Trigger(OBJECT_TOUCH_TRIGGER,workshop,"H55_SiegeWorkshopVisit"); + SetObjectEnabled(workshop,nil); + end; + end; + + if H55_Windmills ~= nil then + for i,mill in H55_Windmills do + H55_WeeklyWindmillRes[mill] = 1+random(5); + H55_WeeklyWindmillResQty[mill] = 3+random(5); + H55_WindmillsOwned[mill] = 0; + Trigger(OBJECT_TOUCH_TRIGGER,mill,"H55_WindmillVisit"); + SetObjectEnabled(mill,nil); + end; + end; + + if H55_Waterwheels ~= nil then + for i,wheel in H55_Waterwheels do + H55_WaterwheelsOwned[wheel] = 0; + Trigger(OBJECT_TOUCH_TRIGGER,wheel,"H55_WaterwheelVisit"); + SetObjectEnabled(wheel,nil); + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {113,"DwellingConversion",1,"NoHero"};---------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_MapType ~= "Campaign" then + for i=1,8 do + H55_TriggerToObjectType(H55_T1DwellingTypes[i],OBJECT_TOUCH_TRIGGER,"H55_T1DwellingVisit",nil); + end; + for i=1,8 do + H55_TriggerToObjectType(H55_T2DwellingTypes[i],OBJECT_TOUCH_TRIGGER,"H55_T2DwellingVisit",nil); + end; + for i=1,8 do + H55_TriggerToObjectType(H55_T3DwellingTypes[i],OBJECT_TOUCH_TRIGGER,"H55_T3DwellingVisit",nil); + end; + for i=1,8 do + H55_TriggerToObjectType(H55_T4DwellingTypes[i],OBJECT_TOUCH_TRIGGER,"H55_T4DwellingVisit",nil); + end; + end; + + H55_AdvMapProcessed = 1; + print("H55 Adventure Map initialized"); +end; + +------------------------------------------------------------------------------------------------------------------------------------------------------ +--MINE CONTROL +------------------------------------------------------------------------------------------------------------------------------------------------------ + +function H55_MineVisit(hero,mine) + if H55_MineControl == 1 then + local owner = GetObjectOwner(mine); + local player = GetObjectOwner(hero); + local units, count = H55_StackInfo(mine); + if H55_IsThisAIPlayer(player) ~= 1 then + if owner ~= 0 and owner ~= player then + --if count[0] == 0 and count[1] == 0 and count[2] == 0 and count[3] == 0 and count[4] == 0 and count[5] == 0 and count[6] == 0 then + if count[0] == 0 then + H55_VisitMine(hero,mine); + else + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Mines/AttackMine.txt"}, + "H55_VisitMine('"..hero.."','"..mine.."')","H55_VisitMineRefuse('"..hero.."','"..mine.."')"); + end; + elseif owner == player then + if H55_GuardedMines[mine][1] ~= owner then --count[0] == 0 + local amount = 1250; + if H55_CommonMines[mine] == 1 then + amount = 750 --elseif H55_RareMines[mine] == 1 then amount = 1500 + elseif table.contains(H55_GoldMines,mine) then + amount = 2500 --else amount = 1500 + end; + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Mines/QuestionGuardMine.txt"; num=amount}, + "H55_GuardMine('"..hero.."','"..mine.."')","H55_VisitMineRefuse('"..hero.."','"..mine.."')"); + else + MessageBoxForPlayers(GetPlayerFilter(player),"/Text/Game/Scripts/Mines/OwnGuardedMine.txt","H55_VisitMineRefuse"); + end; + else --owner == 0 + H55_VisitMine(hero,mine); + end; + else + H55_VisitMine(hero,mine); + end; + else + H55_VisitMineRemoveTrigger(hero,mine); + end; +end; + +function H55_GuardMine(hero,mine) + local owner = GetObjectOwner(mine); + local player = GetObjectOwner(hero); + local amount = 1250; + if H55_CommonMines[mine] == 1 then + amount = 750; + elseif table.contains(H55_GoldMines,mine) then + amount = 2500; + end; + if GetPlayerResource(player,6) >= amount then + H55_TakeResourcesSilent(player,6,amount); + H55_GuardedMines[mine] = {owner,H55_Day}; + MessageBoxForPlayers(GetPlayerFilter(player),"/Text/Game/Scripts/Mines/MineIsGuarded.txt","H55_VisitMineRefuse"); + --OverrideObjectTooltipNameAndDescription(building,H55_Supply_Txt[player],H55_Supply_Txt_Warren); + else + ShowFlyingSign("/Text/Game/Scripts/Supply/NoGold.txt", hero, player, 5); + end; +end; + +function H55_VisitMineRemoveTrigger(hero,mine) + Trigger(OBJECT_TOUCH_TRIGGER,mine,nil); + SetObjectEnabled(mine,not nil); + MakeHeroInteractWithObject(hero,mine); +end; + +function H55_VisitMine(hero,mine) + Trigger(OBJECT_TOUCH_TRIGGER,mine,nil); + SetObjectEnabled(mine,not nil); + MakeHeroInteractWithObject(hero,mine); + Trigger(OBJECT_TOUCH_TRIGGER,mine,"H55_MineVisit"); + SetObjectEnabled(mine,nil); +end; + +function H55_VisitMineRefuse(hero,mine) + print("H55 End of interaction with object"); +end; + +------------------------------------------------------------------------------------------------------------------------------------------------------ +--DWELLING CONVERSION +------------------------------------------------------------------------------------------------------------------------------------------------------ + +function H55_GetT1DwellingRace(dwelling) + local dwellingrace = 0; + for i=1,8 do + if table.contains(GetObjectNamesByType(H55_T1DwellingTypes[i]),dwelling) then + dwellingrace = i; + end; + end; + return dwellingrace; +end; + +function H55_GetT2DwellingRace(dwelling) + local dwellingrace = 0; + for i=1,8 do + if table.contains(GetObjectNamesByType(H55_T2DwellingTypes[i]),dwelling) then + dwellingrace = i; + end; + end; + return dwellingrace; +end; + +function H55_GetT3DwellingRace(dwelling) + local dwellingrace = 0; + for i=1,8 do + if table.contains(GetObjectNamesByType(H55_T3DwellingTypes[i]),dwelling) then + dwellingrace = i; + end; + end; + return dwellingrace; +end; + +function H55_GetT4DwellingRace(dwelling) + local dwellingrace = 0; + for i=1,8 do + if table.contains(GetObjectNamesByType(H55_T4DwellingTypes[i]),dwelling) then + dwellingrace = i; + end; + end; + return dwellingrace; +end; + +function H55_T1DwellingVisit(hero,dwelling) + local player = GetObjectOwner(hero); + local playerrace = H55_GetPlayerRace(player); + local dwellingrace = H55_GetT1DwellingRace(dwelling); + if H55_TownManageOwners[hero] == 1 and H55_TownConvEnabled == 1 and playerrace ~= dwellingrace and GetObjectOwner(dwelling) == player and H55_IsThisAIPlayer(player) ~= 1 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/DwellingConversion.txt";gold=H55_DwellingT1ConvCosts[1],wood=H55_DwellingT1ConvCosts[2],ore=H55_DwellingT1ConvCosts[2]}, + "H55_T1DwellingVisitConvert('"..hero.."','"..dwelling.."')","H55_T1DwellingVisitNoAction('"..hero.."','"..dwelling.."')"); + else + H55_T1DwellingVisitNoAction(hero,dwelling); + end; +end; + +function H55_T2DwellingVisit(hero,dwelling) + local player = GetObjectOwner(hero); + local playerrace = H55_GetPlayerRace(player); + local dwellingrace = H55_GetT2DwellingRace(dwelling); + if H55_TownManageOwners[hero] == 1 and H55_TownConvEnabled == 1 and playerrace ~= dwellingrace and GetObjectOwner(dwelling) == player and H55_IsThisAIPlayer(player) ~= 1 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/DwellingConversion.txt";gold=H55_DwellingT2ConvCosts[1],wood=H55_DwellingT2ConvCosts[2],ore=H55_DwellingT2ConvCosts[2]}, + "H55_T2DwellingVisitConvert('"..hero.."','"..dwelling.."')","H55_T2DwellingVisitNoAction('"..hero.."','"..dwelling.."')"); + else + H55_T2DwellingVisitNoAction(hero,dwelling); + end; +end; + +function H55_T3DwellingVisit(hero,dwelling) + local player = GetObjectOwner(hero); + local playerrace = H55_GetPlayerRace(player); + local dwellingrace = H55_GetT3DwellingRace(dwelling); + if H55_TownManageOwners[hero] == 1 and H55_TownConvEnabled == 1 and playerrace ~= dwellingrace and GetObjectOwner(dwelling) == player and H55_IsThisAIPlayer(player) ~= 1 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/DwellingConversion.txt";gold=H55_DwellingT3ConvCosts[1],wood=H55_DwellingT3ConvCosts[2],ore=H55_DwellingT3ConvCosts[2]}, + "H55_T3DwellingVisitConvert('"..hero.."','"..dwelling.."')","H55_T3DwellingVisitNoAction('"..hero.."','"..dwelling.."')"); + else + H55_T3DwellingVisitNoAction(hero,dwelling); + end; +end; + +function H55_T4DwellingVisit(hero,dwelling) + local player = GetObjectOwner(hero); + local playerrace = H55_GetPlayerRace(player); + local dwellingrace = H55_GetT4DwellingRace(dwelling); + if H55_TownManageOwners[hero] == 1 and H55_TownConvEnabled == 1 and playerrace ~= dwellingrace and GetObjectOwner(dwelling) == player and H55_IsThisAIPlayer(player) ~= 1 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/DwellingConversion.txt";gold=H55_DwellingT4ConvCosts[1],wood=H55_DwellingT4ConvCosts[2],ore=H55_DwellingT4ConvCosts[2]}, + "H55_T4DwellingVisitConvert('"..hero.."','"..dwelling.."')","H55_T4DwellingVisitNoAction('"..hero.."','"..dwelling.."')"); + else + H55_T4DwellingVisitNoAction(hero,dwelling); + end; +end; + +--and HasArtefact(hero,103,0) + +function H55_T1DwellingVisitConvert(hero,dwelling) + local player = GetObjectOwner(hero); + local playerrace = H55_GetPlayerRace(player); + local dwellingrace = H55_GetTownRaceID(playerrace); + local amountT1dwellings = table.length(GetObjectNamesByType(H55_T1DwellingTypes[playerrace])); + if amountT1dwellings < H55_MaxDwellingsT1 then + if GetPlayerResource(player,0) < H55_DwellingT1ConvCosts[2] then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TCNoRes.txt", hero, player, 5); + elseif GetPlayerResource(player,1) < H55_DwellingT1ConvCosts[2] then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TCNoRes.txt", hero, player, 5); + elseif GetPlayerResource(player,6) < H55_DwellingT1ConvCosts[1] then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TCNoRes.txt", hero, player, 5); + else + local x,y,z = GetObjectPosition(dwelling); + H55_TakeResourcesSilent(player,0,H55_DwellingT1ConvCosts[2]); + H55_TakeResourcesSilent(player,1,H55_DwellingT1ConvCosts[2]); + H55_TakeResourcesSilent(player,6,H55_DwellingT1ConvCosts[1]); + Play3DSoundForPlayers(GetPlayerFilter(player),H55_SndCrash,x,y,z); + ReplaceDwelling(dwelling,dwellingrace); + end; + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TC_Limit.txt", hero, player, 5); + end; +end; + +function H55_T2DwellingVisitConvert(hero,dwelling) + local player = GetObjectOwner(hero); + local playerrace = H55_GetPlayerRace(player); + local dwellingrace = H55_GetTownRaceID(playerrace); + local amountT2dwellings = table.length(GetObjectNamesByType(H55_T2DwellingTypes[playerrace])); + if amountT2dwellings < H55_MaxDwellingsT2 then + if GetPlayerResource(player,0) < H55_DwellingT2ConvCosts[2] then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TCNoRes.txt", hero, player, 5); + elseif GetPlayerResource(player,1) < H55_DwellingT2ConvCosts[2] then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TCNoRes.txt", hero, player, 5); + elseif GetPlayerResource(player,6) < H55_DwellingT2ConvCosts[1] then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TCNoRes.txt", hero, player, 5); + else + local x,y,z = GetObjectPosition(dwelling); + H55_TakeResourcesSilent(player,0,H55_DwellingT2ConvCosts[2]); + H55_TakeResourcesSilent(player,1,H55_DwellingT2ConvCosts[2]); + H55_TakeResourcesSilent(player,6,H55_DwellingT2ConvCosts[1]); + Play3DSoundForPlayers(GetPlayerFilter(player),H55_SndCrash,x,y,z); + ReplaceDwelling(dwelling,dwellingrace); + end; + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TC_Limit.txt", hero, player, 5); + end; +end; + +function H55_T3DwellingVisitConvert(hero,dwelling) + local player = GetObjectOwner(hero); + local playerrace = H55_GetPlayerRace(player); + local dwellingrace = H55_GetTownRaceID(playerrace); + local amountT3dwellings = table.length(GetObjectNamesByType(H55_T3DwellingTypes[playerrace])); + if amountT3dwellings < H55_MaxDwellingsT3 then + if GetPlayerResource(player,0) < H55_DwellingT3ConvCosts[2] then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TCNoRes.txt", hero, player, 5); + elseif GetPlayerResource(player,1) < H55_DwellingT3ConvCosts[2] then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TCNoRes.txt", hero, player, 5); + elseif GetPlayerResource(player,6) < H55_DwellingT3ConvCosts[1] then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TCNoRes.txt", hero, player, 5); + else + local x,y,z = GetObjectPosition(dwelling); + H55_TakeResourcesSilent(player,0,H55_DwellingT3ConvCosts[2]); + H55_TakeResourcesSilent(player,1,H55_DwellingT3ConvCosts[2]); + H55_TakeResourcesSilent(player,6,H55_DwellingT3ConvCosts[1]); + Play3DSoundForPlayers(GetPlayerFilter(player),H55_SndCrash,x,y,z); + ReplaceDwelling(dwelling,dwellingrace); + end; + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TC_Limit.txt", hero, player, 5); + end; +end; + +function H55_T4DwellingVisitConvert(hero,dwelling) + local player = GetObjectOwner(hero); + local playerrace = H55_GetPlayerRace(player); + local dwellingrace = H55_GetTownRaceID(playerrace); + local amountT4dwellings = table.length(GetObjectNamesByType(H55_T4DwellingTypes[playerrace])); + if amountT4dwellings < H55_MaxDwellingsT4 then + if GetPlayerResource(player,0) < H55_DwellingT4ConvCosts[2] then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TCNoRes.txt", hero, player, 5); + elseif GetPlayerResource(player,1) < H55_DwellingT4ConvCosts[2] then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TCNoRes.txt", hero, player, 5); + elseif GetPlayerResource(player,6) < H55_DwellingT4ConvCosts[1] then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TCNoRes.txt", hero, player, 5); + else + local x,y,z = GetObjectPosition(dwelling); + H55_TakeResourcesSilent(player,0,H55_DwellingT4ConvCosts[2]); + H55_TakeResourcesSilent(player,1,H55_DwellingT4ConvCosts[2]); + H55_TakeResourcesSilent(player,6,H55_DwellingT4ConvCosts[1]); + Play3DSoundForPlayers(GetPlayerFilter(player),H55_SndCrash,x,y,z); + ReplaceDwelling(dwelling,dwellingrace); + end; + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TC_Limit.txt", hero, player, 5); + end; +end; + +function H55_T1DwellingVisitNoAction(hero,dwelling) + Trigger(OBJECT_TOUCH_TRIGGER,dwelling,nil); + SetObjectEnabled(dwelling,not nil); + MakeHeroInteractWithObject(hero,dwelling); + Trigger(OBJECT_TOUCH_TRIGGER,dwelling,"H55_T1DwellingVisit"); + SetObjectEnabled(dwelling,nil); +end; + +function H55_T2DwellingVisitNoAction(hero,dwelling) + Trigger(OBJECT_TOUCH_TRIGGER,dwelling,nil); + SetObjectEnabled(dwelling,not nil); + MakeHeroInteractWithObject(hero,dwelling); + Trigger(OBJECT_TOUCH_TRIGGER,dwelling,"H55_T2DwellingVisit"); + SetObjectEnabled(dwelling,nil); +end; + +function H55_T3DwellingVisitNoAction(hero,dwelling) + Trigger(OBJECT_TOUCH_TRIGGER,dwelling,nil); + SetObjectEnabled(dwelling,not nil); + MakeHeroInteractWithObject(hero,dwelling); + Trigger(OBJECT_TOUCH_TRIGGER,dwelling,"H55_T3DwellingVisit"); + SetObjectEnabled(dwelling,nil); +end; + +function H55_T4DwellingVisitNoAction(hero,dwelling) + Trigger(OBJECT_TOUCH_TRIGGER,dwelling,nil); + SetObjectEnabled(dwelling,not nil); + MakeHeroInteractWithObject(hero,dwelling); + Trigger(OBJECT_TOUCH_TRIGGER,dwelling,"H55_T4DwellingVisit"); + SetObjectEnabled(dwelling,nil); +end; + +------------------------------------------------------------------------------------------------------------------------------------------------------ +--SUPPLIERS +------------------------------------------------------------------------------------------------------------------------------------------------------ + +function H55_MysticalGardenVisit(hero,building) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + if H55_MysticalGardensOwned[building] == player then + H55_MysticalGardenRefuse(hero,building); + else + H55_MysticalGardensOwned[building] = player; + OverrideObjectTooltipNameAndDescription(building,H55_Supply_Txt[player],H55_Supply_Txt_Garden); + H55_MysticalGardenRefuse(hero,building); + end; + else + if H55_MysticalGardensOwned[building] ~= player then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Supply/SupplyQuestion.txt"; num=H55_SupplierCost}, + "H55_MysticalGardenAccept('"..hero.."','"..building.."')","H55_MysticalGardenRefuse('"..hero.."','"..building.."')"); + else + ShowFlyingSign("/Text/Game/Scripts/Supply/AlreadyNetwork.txt", hero, player, 5); + end; + end; +end; + +function H55_MysticalGardenAccept(hero,building) + local player = GetObjectOwner(hero); + local ownertxt = H55_Supply_Txt[player]; + if GetPlayerResource(player,6) >= H55_SupplierCost then + H55_TakeResourcesSilent(player,6,H55_SupplierCost); + H55_MysticalGardensOwned[building] = player; + OverrideObjectTooltipNameAndDescription(building,H55_Supply_Txt[player],H55_Supply_Txt_Garden); + MarkObjectAsVisited(building,hero); + H55_MysticalGardenRefuse(hero,building); + else + ShowFlyingSign("/Text/Game/Scripts/Supply/NoGold.txt", hero, player, 5); + H55_MysticalGardenRefuse(hero,building); + end; +end; + +function H55_MysticalGardenRefuse(hero,building) + Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + SetObjectEnabled(building,not nil); + MakeHeroInteractWithObject(hero,building); + Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_MysticalGardenVisit"); + SetObjectEnabled(building,nil); +end; + +function H55_WindmillVisit(hero,building) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + if H55_WindmillsOwned[building] == player then + H55_WindmillRefuse(hero,building); + else + H55_WindmillsOwned[building] = player; + OverrideObjectTooltipNameAndDescription(building,H55_Supply_Txt[player],H55_Supply_Txt_Warren); + H55_WindmillRefuse(hero,building); + end; + else + if H55_WindmillsOwned[building] ~= player then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Supply/SupplyQuestion.txt"; num=H55_SupplierCost}, + "H55_WindmillAccept('"..hero.."','"..building.."')","H55_WindmillRefuse('"..hero.."','"..building.."')"); + else + ShowFlyingSign("/Text/Game/Scripts/Supply/AlreadyNetwork.txt", hero, player, 5); + end; + end; +end; + +function H55_WindmillAccept(hero,building) + local player = GetObjectOwner(hero); + local ownertxt = H55_Supply_Txt[player]; + if GetPlayerResource(player,6) >= H55_SupplierCost then + H55_TakeResourcesSilent(player,6,H55_SupplierCost); + H55_WindmillsOwned[building] = player; + OverrideObjectTooltipNameAndDescription(building,H55_Supply_Txt[player],H55_Supply_Txt_Warren); + MarkObjectAsVisited(building,hero); + H55_WindmillRefuse(hero,building); + else + ShowFlyingSign("/Text/Game/Scripts/Supply/NoGold.txt", hero, player, 5); + H55_WindmillRefuse(hero,building); + end; +end; + +function H55_WindmillRefuse(hero,building) + Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + SetObjectEnabled(building,not nil); + MakeHeroInteractWithObject(hero,building); + Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_WindmillVisit"); + SetObjectEnabled(building,nil); +end; + +function H55_WaterwheelVisit(hero,building) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + if H55_WaterwheelsOwned[building] == player then + H55_WaterwheelRefuse(hero,building); + else + H55_WaterwheelsOwned[building] = player; + OverrideObjectTooltipNameAndDescription(building,H55_Supply_Txt[player],H55_Supply_Txt_Mill); + H55_WaterwheelRefuse(hero,building); + end; + else + if H55_WaterwheelsOwned[building] ~= player then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Supply/SupplyQuestion.txt"; num=H55_SupplierCost}, + "H55_WaterwheelAccept('"..hero.."','"..building.."')","H55_WaterwheelRefuse('"..hero.."','"..building.."')"); + else + ShowFlyingSign("/Text/Game/Scripts/Supply/AlreadyNetwork.txt", hero, player, 5); + end; + end; +end; + +function H55_WaterwheelAccept(hero,building) + local player = GetObjectOwner(hero); + local ownertxt = H55_Supply_Txt[player]; + if GetPlayerResource(player,6) >= H55_SupplierCost then + H55_TakeResourcesSilent(player,6,H55_SupplierCost); + H55_WaterwheelsOwned[building] = player; + OverrideObjectTooltipNameAndDescription(building,H55_Supply_Txt[player],H55_Supply_Txt_Mill); + MarkObjectAsVisited(building,hero); + H55_WaterwheelRefuse(hero,building); + else + ShowFlyingSign("/Text/Game/Scripts/Supply/NoGold.txt", hero, player, 5); + H55_WaterwheelRefuse(hero,building); + end; +end; + +function H55_WaterwheelRefuse(hero,building) + Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + SetObjectEnabled(building,not nil); + MakeHeroInteractWithObject(hero,building); + Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_WaterwheelVisit"); + SetObjectEnabled(building,nil); +end; + +function H55_SiegeWorkshopVisit(hero,building) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + if H55_SiegeWorkshopsOwned[building] == player then + H55_SiegeWorkshopRefuse(hero,building); + else + H55_SiegeWorkshopsOwned[building] = player; + OverrideObjectTooltipNameAndDescription(building,H55_Supply_Txt[player],H55_Supply_Txt_Workshop); + H55_SiegeWorkshopRefuse(hero,building); + end; + else + if H55_SiegeWorkshopsOwned[building] ~= player then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Supply/WorkshopQuestion.txt"; num=H55_SupplierCost}, + "H55_SiegeWorkshopAccept('"..hero.."','"..building.."')","H55_SiegeWorkshopRefuse('"..hero.."','"..building.."')"); + else + H55_SiegeWorkshopRefuse(hero,building); + end; + end; +end; + +function H55_SiegeWorkshopAccept(hero,building) + local player = GetObjectOwner(hero); + local ownertxt = H55_Supply_Txt[player]; + if GetPlayerResource(player,6) >= H55_SupplierCost then + H55_TakeResourcesSilent(player,6,H55_SupplierCost); + H55_SiegeWorkshopsOwned[building] = player; + OverrideObjectTooltipNameAndDescription(building,H55_Supply_Txt[player],H55_Supply_Txt_Workshop); + MarkObjectAsVisited(building,hero); + H55_SiegeWorkshopRefuse(hero,building); + else + ShowFlyingSign("/Text/Game/Scripts/Supply/NoGold.txt", hero, player, 5); + H55_SiegeWorkshopRefuse(hero,building); + end; +end; + +function H55_SiegeWorkshopRefuse(hero,building) + Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + SetObjectEnabled(building,not nil); + MakeHeroInteractWithObject(hero,building); + Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_SiegeWorkshopVisit"); + SetObjectEnabled(building,nil); +end; + +------------------------------------------------------------------------------------------------------------------------------------------------------ +--ARTIFACT QUESTS +------------------------------------------------------------------------------------------------------------------------------------------------------ + +function H55_SacrificialAltarVisit(hero,building) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + H55_SacrificialAltarRefuse(hero,building); + else + if H55_GetLegionOwnCount(hero) == 7 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/LegionQuestion.txt"}, + "H55_SacrificialAltarAccept2('"..hero.."','"..building.."')","H55_SacrificialAltarRefuse('"..hero.."','"..building.."')"); + elseif H55_GetDragonishOwnCount(hero) == 8 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/DragonQuestion.txt"}, + "H55_SacrificialAltarAccept('"..hero.."','"..building.."')","H55_SacrificialAltarRefuse('"..hero.."','"..building.."')"); + elseif ((H55_GetHeroRaceNum(hero) == 3) or (H55_GetHeroRaceNum(hero) == 4) or (H55_GetHeroRaceNum(hero) == 6) or (H55_GetHeroRaceNum(hero) == 8)) and HasArtefact(hero,89,0) then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/EggQuestion.txt"}, + "H55_SacrificialAltarAccept3('"..hero.."','"..building.."')","H55_SacrificialAltarRefuse('"..hero.."','"..building.."')"); + else + H55_SacrificialAltarRefuse(hero,building); + end; + end; +end; + +function H55_SacrificialAltarAccept(hero,building) + H55_ExchangeDragonishSet(hero); +end; + +function H55_SacrificialAltarAccept2(hero,building) + H55_ExchangeLegionSet(hero); +end; + +function H55_SacrificialAltarAccept3(hero,building) + RemoveArtefact(hero,89); + GiveExp(hero,50000); +end; + +function H55_SacrificialAltarRefuse(hero,building) + Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + SetObjectEnabled(building,not nil); + MakeHeroInteractWithObject(hero,building); + Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_SacrificialAltarVisit"); + SetObjectEnabled(building,nil); +end; + +function H55_TradingPostVisit(hero,building) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + H55_PotionBuyRefuse(hero,building); + elseif H55_RPGPotions == 1 or H55_MapType == "Campaign" then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/PotionQuestion.txt"}, + "H55_PotionBuyAccept('"..hero.."','"..building.."')","H55_PotionBuyRefuse('"..hero.."','"..building.."')"); + else + H55_PotionBuyRefuse(hero,building); + end; +end; + +function H55_PotionBuyAccept(hero,building) + local player = GetObjectOwner(hero); + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/PotionChoose.txt"}, + "H55_PotionManaAccept('"..hero.."','"..building.."')","H55_PotionMoveAccept('"..hero.."','"..building.."')"); +end; + +function H55_PotionManaAccept(hero,building) + local player = GetObjectOwner(hero); + local cost = 5000; + if GetPlayerResource(player,6) >= cost then + H55_TakeResourcesSilent(player,6,cost); + GiveArtefact(hero,ARTIFACT_POTION01,0); + else + ShowFlyingSign("/Text/Game/Scripts/Witch/Nogold.txt",hero,player,7); + end; +end; + +function H55_PotionMoveAccept(hero,building) + local player = GetObjectOwner(hero); + local cost = 10000; + if GetPlayerResource(player,6) >= cost then + H55_TakeResourcesSilent(player,6,cost); + GiveArtefact(hero,ARTIFACT_POTION02,0); + else + ShowFlyingSign("/Text/Game/Scripts/Witch/Nogold.txt",hero,player,7); + end; +end; + +function H55_PotionBuyRefuse(hero,building) + Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + SetObjectEnabled(building,not nil); + MakeHeroInteractWithObject(hero,building); + Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_TradingPostVisit"); + SetObjectEnabled(building,nil); +end; + +function H55_SpellShopVisit(hero,building) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + H55_SpellShopRefuse(hero,building); + elseif H55_GetCornucopiaOwnCount(hero) == 6 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/SpellShopQuestion.txt"}, + "H55_SpellShopAccept('"..hero.."','"..building.."')","H55_SpellShopRefuse('"..hero.."','"..building.."')"); + elseif H55_GetEndGoldOwnCount(hero) == 3 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/SpellShopQuestionB.txt"}, + "H55_SpellShopAcceptB('"..hero.."','"..building.."')","H55_SpellShopRefuse('"..hero.."','"..building.."')"); + elseif H55_GetMoonDiscOwnCount(hero) == 4 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/SpellShopQuestionC.txt"}, + "H55_SpellShopAcceptC('"..hero.."','"..building.."')","H55_SpellShopRefuse('"..hero.."','"..building.."')"); + else + H55_SpellShopRefuse(hero,building); + end; +end; + +function H55_SpellShopAccept(hero,building) + H55_ExchangeCornucopia(hero); +end; + +function H55_SpellShopAcceptB(hero,building) + H55_ExchangeEndGoldSet(hero); +end; + +function H55_SpellShopAcceptC(hero,building) + H55_ExchangeMoonDisc(hero); +end; + +function H55_SpellShopRefuse(hero,building) + Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + SetObjectEnabled(building,not nil); + MakeHeroInteractWithObject(hero,building); + Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_SpellShopVisit"); + SetObjectEnabled(building,nil); +end; + +function H55_AstrologerVisit(hero,building) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + H55_AstrologerRefuse(hero,building); + elseif H55_GetSarIssusOwnCount(hero) == 4 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/AstrologerQuestion.txt"}, + "H55_AstrologerAccept('"..hero.."','"..building.."')","H55_AstrologerRefuse('"..hero.."','"..building.."')"); + else + H55_AstrologerRefuse(hero,building); + end; +end; + +function H55_AstrologerAccept(hero,building) + local player = GetObjectOwner(hero); + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/AstrologerFQuestion.txt"}, + "H55_AstrologerAccept2('"..hero.."','"..building.."')","H55_AstrologerRefuse2('"..hero.."','"..building.."')"); +end; + +function H55_AstrologerAccept2(hero,building) + H55_ExchangeSarIssusSet(hero); +end; + +function H55_AstrologerRefuse2(hero,building) + H55_ExchangeSarIssusSetB(hero); +end; + +function H55_AstrologerRefuse(hero,building) + Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + SetObjectEnabled(building,not nil); + MakeHeroInteractWithObject(hero,building); + Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_AstrologerVisit"); + SetObjectEnabled(building,nil); +end; + +function H55_MemoryMentorVisit(hero,building) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + H55_MemoryMentorRefuseAI(hero,building); + elseif H55_GetTomesOwnCount(hero) == 4 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/MemoryMentorQuestion.txt"}, + "H55_MemoryMentorAccept('"..hero.."','"..building.."')","H55_MemoryMentorRefuse('"..hero.."','"..building.."')"); + else + H55_MemoryMentorRefuse(hero,building); + end; +end; + +function H55_MemoryMentorAccept(hero,building) + H55_ExchangeTomesSet(hero); +end; + +function H55_MemoryMentorRefuse(hero,building) + local player = GetObjectOwner(hero); + if H55_NoMentoring == 0 then + Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + SetObjectEnabled(building,not nil); + MakeHeroInteractWithObject(hero,building); + Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_MemoryMentorVisit"); + SetObjectEnabled(building,nil); + else + if H55_MentorBoostVisitors[hero] == nil then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/MemoryMentorSkillBoost.txt"}, + "H55_MemoryMentorSP('"..hero.."','"..building.."')","H55_MemoryMentorKN('"..hero.."','"..building.."')"); + else + ShowFlyingSign("/Text/Game/Scripts/MemoryMentorAlready.txt",hero,player,8); + end; + end; +end; + +function H55_MemoryMentorRefuseAI(hero,building) + Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + SetObjectEnabled(building,not nil); + MakeHeroInteractWithObject(hero,building); + Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_MemoryMentorVisit"); + SetObjectEnabled(building,nil); +end; + +function H55_MemoryMentorSP(hero,building) + local player = GetObjectOwner(hero); + H55_MentorBoostVisitors[hero] = 1; + ChangeHeroStat(hero,STAT_SPELL_POWER,2); + ShowFlyingSign("/Text/Game/Scripts/Spellpower.txt",hero,player,5); +end; + +function H55_MemoryMentorKN(hero,building) + local player = GetObjectOwner(hero); + H55_MentorBoostVisitors[hero] = 1; + ChangeHeroStat(hero,STAT_KNOWLEDGE,2); + ShowFlyingSign("/Text/Game/Scripts/Knowledge.txt",hero,player,5); +end; + +function H55_HillFortVisit(hero,building) + local player = GetObjectOwner(hero); + if H55_NoHillFortsOnARMG == 0 then + Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + SetObjectEnabled(building,not nil); + MakeHeroInteractWithObject(hero,building); + --Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_HillFortVisit"); + --SetObjectEnabled(building,nil); + else + if H55_HillFortBoostVisitors[hero] == nil then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/HillFortSkillBoost.txt"}, + "H55_HillFortAT('"..hero.."','"..building.."')","H55_HillFortDF('"..hero.."','"..building.."')"); + else + ShowFlyingSign("/Text/Game/Scripts/HillFortAlready.txt",hero,player,8); + end; + end; +end; + +function H55_HillFortAT(hero,building) + local player = GetObjectOwner(hero); + H55_HillFortBoostVisitors[hero] = 1; + ChangeHeroStat(hero,STAT_ATTACK,1); + ShowFlyingSign("/Text/Game/Scripts/Attack.txt",hero,player,5); +end; + +function H55_HillFortDF(hero,building) + local player = GetObjectOwner(hero); + H55_HillFortBoostVisitors[hero] = 1; + ChangeHeroStat(hero,STAT_DEFENSE,1); + ShowFlyingSign("/Text/Game/Scripts/Defense.txt",hero,player,5); +end; + +function H55_BlackMarketVisit(hero,building) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + H55_BlackMarketRefuseAI(hero,building); + elseif H55_GetGuardianOwnCount(hero) == 4 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/BlackMarketQuestion.txt"}, + "H55_BlackMarketAccept('"..hero.."','"..building.."')","H55_BlackMarketRefuse('"..hero.."','"..building.."')"); + else + H55_BlackMarketRefuse(hero,building); + end; +end; + +function H55_BlackMarketAccept(hero,building) + local player = GetObjectOwner(hero); + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/BlackMarketFQuestion.txt"}, + "H55_BlackMarketAccept2('"..hero.."','"..building.."')","H55_BlackMarketRefuse2('"..hero.."','"..building.."')"); +end; + +function H55_BlackMarketAccept2(hero,building) + H55_ExchangeGuardianSet(hero); +end; + +function H55_BlackMarketRefuse2(hero,building) + H55_ExchangeGuardianSetB(hero); +end; + +function H55_BlackMarketRefuse(hero,building) + Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + SetObjectEnabled(building,not nil); + MakeHeroInteractWithObject(hero,building); + Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_BlackMarketVisit"); + SetObjectEnabled(building,nil); +end; + +function H55_BlackMarketRefuseAI(hero,building) + print("H55 Blocked AI from visiting Artifact Merchant"); +end; + +------------------------------------------------------------------------------------------------------------------------------------------ +--SPHINX +------------------------------------------------------------------------------------------------------------------------------------------ + +function H55_SphinxVisit(hero,sphinx) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + if H55_SphinxVisited[sphinx][hero] ~= 1 then + if H55_SphinxExp[hero] == nil then + GiveExp(hero,5000); + H55_SphinxExp[hero] = 5000; + H55_SphinxVisited[sphinx][hero] = 1; + MarkObjectAsVisited(sphinx,hero); + else + GiveExp(hero,(H55_SphinxExp[hero]+5000)); + H55_SphinxExp[hero] = (H55_SphinxExp[hero]+5000); + H55_SphinxVisited[sphinx][hero] = 1; + MarkObjectAsVisited(sphinx,hero); + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then ShowFlyingSign("/Text/Game/Scripts/Sphinxdead.txt",hero,player,5) end; + end; +end; + +function H55_WitchVisitDuel(hero,witch) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + if H55_DuelExperienceReceived[player] ~= 1 then + GiveExp(hero,H55_ExpTable[H55_Duel_HeroLevel]); + H55_DuelExperienceReceived[player] = 1; + MarkObjectAsVisited(witch,hero); + else + if H55_IsThisAIPlayer(player) ~= 1 then ShowFlyingSign("/Text/Game/Scripts/Witch/Already.txt",hero,player,5) end; + end; +end; + +function H55_AbandonedMineVisitDuel(hero,mine) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + if H55_Duel_Relics == 0 and H55_Duel_Majors == 0 and H55_Minors == 0 then + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + else + if H55_DuelArtifactsReceived[player] ~= 1 then + local x,y,z = GetObjectPosition(hero); + if H55_Duel_Relics >= 1 then + for i=1,H55_Duel_Relics do + H55_ArtifactAwardDuel(hero,3); + end; + end; + if H55_Duel_Majors >= 1 then + for i=1,H55_Duel_Majors do + H55_ArtifactAwardDuel(hero,2); + end; + end; + if H55_Duel_Minors >= 1 then + for i=1,H55_Duel_Minors do + H55_ArtifactAwardDuel(hero,1); + end; + end; + H55_DuelArtifactsReceived[player] = 1; + MarkObjectAsVisited(mine,hero); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArtifact,x,y,z); + if H55_IsThisAIPlayer(player) ~= 1 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Giveartifact.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; + end; +end; + +function H55_IllegalVisit(hero,object) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then + ShowFlyingSign("/Text/Game/Scripts/Duel/Booster.txt",hero,player,5); + sleep(5); + end; + MarkObjectAsVisited(object,hero); +end; + +function H55_MagiHutVisit(hero,building) + H55_EndDoorSpin[hero] = 0; + H55_BreakDoorSpin[hero] = 0; + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + H55_MagiHutRefuseAI(hero,building); + elseif H55_DimensionDoorsOnThisMap == 1 and H55_InterfacingStatus[hero] == 0 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/TownPortal/DD_Question.txt"}, + "H55_MagiHutAccept('"..hero.."','"..building.."')","H55_MagiHutRefuse('"..hero.."','"..building.."')"); + elseif H55_DimensionDoorsOnThisMap == 1 and H55_InterfacingStatus[hero] == 1 then + H55_CancelDimensionDoor(hero); + ShowFlyingSign("/Text/Game/Scripts/TownPortal/DD_VisitEnded.txt",hero,player,5); + else + MessageBoxForPlayers(GetPlayerFilter(player),"/Text/Game/Scripts/TownPortal/DD_Disabled.txt", + "H55_MagiHutRefuse('"..hero.."','"..building.."')"); + end; +end; + +function H55_MagiHutRefuse(hero,building) + local player = GetObjectOwner(hero); + if H55_HasTownWithGuild(player) then + if H55_MagiHutUsers[hero] ~= H55_Day then + local mana = GetHeroStat(hero,STAT_MANA_POINTS); + local manatotal = H55_GetMaxMana(hero); + local amount = 0; + if mana < manatotal then + amount = (manatotal-mana); + H55_ModifyMana(hero,amount); + ShowFlyingSign({"/Text/Game/Scripts/TownPortal/DD_Mana.txt";mana=amount},hero,player,5); + H55_MagiHutUsers[hero] = H55_Day; + MarkObjectAsVisited(building,hero); + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/DD_FullMana.txt",hero,player,5); + end; + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/DD_Already.txt",hero,player,5); + end; + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/DD_NoGuild.txt",hero,player,5); + end; +end; + +function H55_MagiHutRefuseAI(hero,building) + Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + SetObjectEnabled(building,not nil); + MakeHeroInteractWithObject(hero,building); + Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_MagiHutVisit"); + SetObjectEnabled(building,nil); + print("H55 AI visited Magi Hut!"); +end; + +function H55_MagiHutAccept(hero,building) + local player = GetObjectOwner(hero); + local towns = GetObjectNamesByType("TOWN"); + local targets = 0; + if H55_IsEnemyNearby(hero,8)==0 then + for i,town in towns do + if player == GetObjectOwner(town)then + targets = targets+1; + end; + end; + if targets > 1 then + for i,town in towns do + if (player == GetObjectOwner(town)) then + local x,y,z=H55_GetTownActiveTile(town); + MoveCameraForPlayers(GetPlayerFilter(player),x,y,z,50,math.pi/2,1,1,1,1); + sleep(4); + QuestionBoxForPlayers(GetPlayerFilter(player),"/Text/Game/Scripts/TownPortal/DD_VisitQuestion.txt", + "H55_InterfaceNow('"..hero.."','"..town.."')","H55_UnlockNextDoor('"..hero.."')"); + repeat sleep(1); until H55_EndDoorSpin[hero] == 1; + if H55_BreakDoorSpin[hero] == 1 then break end; + end; + end; + elseif targets == 1 then + for i,town in towns do + if (player == GetObjectOwner(town)) then + H55_InterfaceNow(hero,town); + end; + end; + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/DD_NoTown.txt",hero,player,5); + end; + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/DD_Enemy.txt",hero,player,5); + end; +end; + +function H55_UnlockNextDoor(hero) + H55_EndDoorSpin[hero] = 1; +end; + +function H55_InterfaceNow(hero,town) + H55_BreakDoorSpin[hero] = 1; + + local player = GetObjectOwner(hero); + local movepoints = GetHeroStat(hero,STAT_MOVE_POINTS); + if H55_HasTownWithGuild(player) then + if H55_MagiHutUsers[hero] ~= H55_Day then + local mana = GetHeroStat(hero,STAT_MANA_POINTS); + local manatotal = H55_GetMaxMana(hero); + local amount = 0; + if mana < manatotal then + amount = (manatotal-mana) + H55_ModifyMana(hero,amount); + H55_MagiHutUsers[hero] = H55_Day + end; + end; + end; + + local x,y,z = H55_GetTownActiveTile(town); + local xx,yy,zz = GetObjectPosition(hero); + if H55_IsAnyHeroInGateTile(town,x,y,z) == 1 then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/DD_GateFull.txt",hero,player,5); + H55_EndDoorSpin[hero] = 1; + elseif H55_IsEnemyNearby(town,8)==1 then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/DD_TownEnemy.txt",hero,player,5); + H55_EndDoorSpin[hero] = 1; + else + -- if movepoints < 156 then + -- local add = (156-movepoints); + -- ChangeHeroStat(hero,STAT_MOVE_POINTS,add); + -- end; + H55_InterfacingStatus[hero] = 1; + H55_InterfacingTown[hero] = town; + H55_InterfacingPosition[hero] = {["x"]=xx,["y"]=yy,["z"]=zz}; + H55_EndDoorSpin[hero] = 1; + MakeHeroInteractWithObject(hero,town); + end; +end; + +-- function H55_RObservatoryVisit(hero,observatory) + -- local player = GetObjectOwner(hero); + -- if H55_RObservatoryUsers[hero] ~= H55_Day then + -- local x,y,z = GetObjectPosition(observatory) + -- local mana = GetHeroStat(hero,STAT_MANA_POINTS); + -- local manatotal = H55_GetMaxMana(hero); + -- OpenCircleFog(x,y,z,30,player); + -- if mana < manatotal then + -- H55_ModifyMana(hero,900); + -- end; + -- if H55_IsThisAIPlayer(player) ~= 1 then + -- ShowFlyingSign("/Text/Game/Scripts/Duel/ManaObservatory.txt",hero,player,5); + -- sleep(5); + -- end; + -- H55_RObservatoryUsers[hero] = H55_Day + -- MarkObjectAsVisited(observatory,hero); + -- else + -- if H55_IsThisAIPlayer(player) ~= 1 then + -- ShowFlyingSign("/Text/Game/Scripts/Duel/Already.txt",hero,player,5); + -- sleep(1); + -- end; + -- end; +-- end; + +function H55_RObservatoryVisit(hero,object) + local player = GetObjectOwner(hero); + -- startThread(H55_ScriptLog); + -- if H55_IsThisAIPlayer(player) == 1 then + -- else + if H55_RObservatoryUsers[hero] ~= H55_Day then + local mana = GetHeroStat(hero,STAT_MANA_POINTS); + local manatotal = H55_GetMaxMana(hero); + local amount = 0; + if mana < manatotal then + amount = (manatotal-mana) + H55_ModifyMana(hero,amount); + H55_RObservatoryUsers[hero] = H55_Day + --MarkObjectAsVisited(building,hero); + if H55_IsThisAIPlayer(player) ~= 1 then + ShowFlyingSign({"/Text/Game/Scripts/TownPortal/DD_Mana.txt";mana=amount},hero,player,5); + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/DD_FullMana.txt",hero,player,5); + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/DD_Already.txt",hero,player,5); + end; + end; + Trigger(OBJECT_TOUCH_TRIGGER,object,nil); + SetObjectEnabled(object,not nil); + MakeHeroInteractWithObject(hero,object); + --sleep(1); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_RObservatoryVisit"); + SetObjectEnabled(object,nil); + --MarkObjectAsVisited(object,hero); + --end; +end; + +-- function H55_ManaObjectVisit(hero,object) + -- local player = GetObjectOwner(hero); + -- -- if H55_IsThisAIPlayer(player) == 1 then + -- -- Trigger(OBJECT_TOUCH_TRIGGER,object,nil); + -- -- -- SetObjectEnabled(building,not nil); + -- -- MakeHeroInteractWithObject(hero,object); + -- -- MarkObjectAsVisited(object,hero); + -- -- Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_ManaObjectVisit"); + -- -- else + -- if H55_ManaObjectUsers[object][hero] ~= H55_Day then + -- local mana = GetHeroStat(hero,STAT_MANA_POINTS); + -- local manatotal = H55_GetMaxMana(hero); + -- local amount = 10 + (2 * GetHeroLevel(hero)); + -- if mana < manatotal then + -- H55_ModifyMana(hero,amount); + -- end; + -- H55_ManaObjectUsers[object][hero] = H55_Day; + -- if H55_IsThisAIPlayer(player) ~= 1 then + -- ShowFlyingSign("/Text/Game/Scripts/Duel/ManaObservatory.txt",hero,player,5); + -- sleep(2); + -- end; + -- else + -- if H55_IsThisAIPlayer(player) ~= 1 then + -- ShowFlyingSign("/Text/Game/Scripts/Duel/Already.txt",hero,player,5); + -- sleep(1); + -- end; + -- end; + -- Trigger(OBJECT_TOUCH_TRIGGER,object,nil); + -- SetObjectEnabled(object,not nil); + -- MakeHeroInteractWithObject(hero,object); + -- sleep(2); + -- SetObjectEnabled(object,nil); + -- Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_ManaObjectVisit"); + -- --MarkObjectAsVisited(object,hero); + -- --end; +-- end; + +------------------------------------------------------------------------------------------------------------------------------------------ +--MAGMA SHRINES +------------------------------------------------------------------------------------------------------------------------------------------ + +-- function H55_MagmaVisit(hero,magma) + -- local player = GetObjectOwner(hero); + -- if H55_MagmaVisited[magma][hero] ~= 1 then + -- GiveExp(hero,2000); + -- H55_MagmaVisited[magma][hero] = 1; + -- H55_MagmaReactivate(hero,building); + -- MarkObjectAsVisited(magma,hero); + -- else + -- if H55_IsThisAIPlayer(player) ~= 1 then ShowFlyingSign("/Text/Game/Scripts/Sphinxdead.txt",hero,player,5) end; + -- end; +-- end; + +-- function H55_MagmaReactivate(hero,building) + -- Trigger(OBJECT_TOUCH_TRIGGER,building,nil); + -- SetObjectEnabled(building,not nil); + -- MakeHeroInteractWithObject(hero,building); + -- Trigger(OBJECT_TOUCH_TRIGGER,building,"H55_MagmaVisit"); + -- SetObjectEnabled(building,nil); +-- end; + +------------------------------------------------------------------------------------------------------------------------------------------ +--OBELISK +------------------------------------------------------------------------------------------------------------------------------------------ + +function H55_ObeliskVisit(hero,obelisk) + local player = GetObjectOwner(hero); + if H55_PuzzleQuest == 0 then + if H55_IsThisAIPlayer(player) == 1 then + H55_ObeliskVisitAI(hero,obelisk); + elseif H55_ObelisksQty == 1 then + if H55_ObeliskVisited[obelisk][player] == nil then + H55_ObeliskVisited[obelisk][player] = 1; + MarkObjectAsVisited(obelisk,hero); + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Obelisk/ObeliskOnlyOne.txt"}, + "H55_OneObeliskChallenge('"..hero.."','"..obelisk.."')","H55_ObeliskRefuse('"..hero.."','"..obelisk.."')"); + elseif H55_ObeliskVisited[obelisk][player] == 1 and H55_ObeliskChallengeAccepted[player] ~= 1 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Obelisk/ObeliskOnlyOne.txt"}, + "H55_OneObeliskChallenge('"..hero.."','"..obelisk.."')","H55_ObeliskRefuse('"..hero.."','"..obelisk.."')"); + elseif H55_ObeliskVisited[obelisk][player] == 1 and H55_ObeliskChallengeAccepted[player] == 1 and H55_ObeliskGraalFound[player] == 1 then + ShowFlyingSign("/Text/Game/Scripts/Obelisk/ObeliskQuestComplete.txt",hero,player,5); + else + ShowFlyingSign({"/Text/Game/Scripts/Obelisk/ObeliskCryptFail.txt"},hero,player,5); + end; + elseif H55_ObelisksQty >= 2 then + if H55_ObeliskTotalVisited[player] == nil then + H55_ObeliskVisited[obelisk][player] = 1; + H55_ObeliskTotalVisited[player] = 1; + ShowFlyingSign({"/Text/Game/Scripts/Obelisk/ObeliskVisit.txt";amount=H55_ObeliskTotalVisited[player],total=H55_ObelisksQty},hero,player,5); + MarkObjectAsVisited(obelisk,hero); + elseif H55_ObeliskVisited[obelisk][player] == nil then + H55_ObeliskVisited[obelisk][player] = 1; + H55_ObeliskTotalVisited[player] = H55_ObeliskTotalVisited[player]+1; + MarkObjectAsVisited(obelisk,hero); + if H55_ObeliskTotalVisited[player] == H55_ObelisksQty then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Obelisk/ObeliskQuestion.txt"}, + "H55_ObeliskChallenge('"..hero.."','"..obelisk.."')","H55_ObeliskRefuse('"..hero.."','"..obelisk.."')"); + else + ShowFlyingSign({"/Text/Game/Scripts/Obelisk/ObeliskVisit.txt";amount=H55_ObeliskTotalVisited[player],total=H55_ObelisksQty},hero,player,5); + end; + elseif H55_ObeliskTotalVisited[player] == H55_ObelisksQty and H55_ObeliskChallengeAccepted[player] ~= 1 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Obelisk/ObeliskQuestion.txt"}, + "H55_ObeliskChallenge('"..hero.."','"..obelisk.."')","H55_ObeliskRefuse('"..hero.."','"..obelisk.."')"); + elseif H55_ObeliskTotalVisited[player] == H55_ObelisksQty and H55_ObeliskChallengeAccepted[player] == 1 and H55_ObeliskGraalFound[player] == 1 then + ShowFlyingSign("/Text/Game/Scripts/Obelisk/ObeliskQuestComplete.txt",hero,player,5); + elseif H55_ObeliskTotalVisited[player] == H55_ObelisksQty and H55_ObeliskChallengeAccepted[player] == 1 and H55_ObeliskGraalFound[player] ~= 1 then + ShowFlyingSign({"/Text/Game/Scripts/Obelisk/ObeliskFail.txt"},hero,player,5); + else + ShowFlyingSign({"/Text/Game/Scripts/Obelisk/ObeliskAlready.txt";amount=H55_ObeliskTotalVisited[player],total=H55_ObelisksQty},hero,player,5); + end; + end; + elseif H55_IsThisAIPlayer(player) == 1 then + H55_ObeliskVisitAI(hero,obelisk); + + --User Made Puzzle Quest + elseif H55_ObeliskVisited[obelisk][player] == nil then + H55_ObeliskVisited[obelisk][player] = 1; + OpenPuzzleMap(player,1); + MarkObjectAsVisited(obelisk,hero); + else + ShowFlyingSign({"/Text/Game/Scripts/Obelisk/ObeliskAlready.txt";amount=H55_ObeliskTotalVisited[player],total=H55_ObelisksQty},hero,player,5); + end; +end; + +function H55_ObeliskRefuse(hero) + print("Challenge refused by player"); +end; + +function H55_ObeliskVisitAI(hero,obelisk) + Trigger(OBJECT_TOUCH_TRIGGER,obelisk,nil); + SetObjectEnabled(obelisk,not nil); + MakeHeroInteractWithObject(hero,obelisk); + Trigger(OBJECT_TOUCH_TRIGGER,obelisk,"H55_ObeliskVisit"); + SetObjectEnabled(obelisk,nil); +end; + +function H55_ObeliskChallenge(hero,obelisk) + local player = GetObjectOwner(hero); + H55_ObeliskChallengeAccepted[player] = 1; + local alignment = H55_ObeliskArmies[obelisk][30]; + local faction1 = 1; + local faction2 = 1; + if alignment == 1 then faction1 = 3 faction2 = 8 end; + if alignment == 2 then faction1 = 4 faction2 = 6 end; + if alignment == 3 then faction1 = 3 faction2 = 4 end; + if alignment == 4 then faction1 = 8 faction2 = 6 end; + if alignment == 5 then faction1 = 8 faction2 = 3 end; + if alignment == 6 then faction1 = 6 faction2 = 4 end; + if alignment == 7 then faction1 = 4 faction2 = 3 end; + if alignment == 8 then faction1 = 6 faction2 = 8 end; + + local rnd01 = H55_ObeliskArmies[obelisk][1] local rnd02 = H55_ObeliskArmies[obelisk][2] local rnd03 = H55_ObeliskArmies[obelisk][3]; + local rnd04 = H55_ObeliskArmies[obelisk][4] local rnd05 = H55_ObeliskArmies[obelisk][5] local rnd06 = H55_ObeliskArmies[obelisk][6]; + local rnd07 = H55_ObeliskArmies[obelisk][7] local rnd08 = H55_ObeliskArmies[obelisk][8] local rnd09 = H55_ObeliskArmies[obelisk][9]; + local rnd10 = H55_ObeliskArmies[obelisk][10] local rnd11 = H55_ObeliskArmies[obelisk][11] local rnd12 = H55_ObeliskArmies[obelisk][12]; + local rnd13 = H55_ObeliskArmies[obelisk][13] local rnd14 = H55_ObeliskArmies[obelisk][14]; + + local rnd12a = H55_ObeliskArmies[obelisk][15] local rnd23a = H55_ObeliskArmies[obelisk][16] local rnd34a = H55_ObeliskArmies[obelisk][17]; + local rnd45a = H55_ObeliskArmies[obelisk][18] local rnd56a = H55_ObeliskArmies[obelisk][19] local rnd67a = H55_ObeliskArmies[obelisk][20]; + + local rnd12b = H55_ObeliskArmies[obelisk][21] local rnd23b = H55_ObeliskArmies[obelisk][22] local rnd34b = H55_ObeliskArmies[obelisk][23]; + local rnd45b = H55_ObeliskArmies[obelisk][24] local rnd56b = H55_ObeliskArmies[obelisk][25] local rnd67b = H55_ObeliskArmies[obelisk][26]; + + local combat01 = H55_ObeliskArmies[obelisk][27] local combat02 = H55_ObeliskArmies[obelisk][28] local combat03 = H55_ObeliskArmies[obelisk][29]; + + local t01a = H55_Creatures[faction1][1][rnd01]; + local t02a = H55_Creatures[faction2][2][rnd02]; + local t03a = H55_Creatures[faction1][3][rnd03]; + local t04a = H55_Creatures[faction2][4][rnd04]; + local t05a = H55_Creatures[faction1][5][rnd05]; + local t06a = H55_Creatures[faction2][6][rnd06]; + local t07a = H55_Creatures[faction1][7][rnd07]; + + local t01b = H55_Creatures[faction2][1][rnd08]; + local t02b = H55_Creatures[faction1][2][rnd09]; + local t03b = H55_Creatures[faction2][3][rnd10]; + local t04b = H55_Creatures[faction1][4][rnd11]; + local t05b = H55_Creatures[faction2][5][rnd12]; + local t06b = H55_Creatures[faction1][6][rnd13]; + local t07b = H55_Creatures[faction2][7][rnd14]; + + local t12a = H55_Creatures[faction1][rnd12a][rnd08]; + local t12b = H55_Creatures[faction2][rnd12b][rnd07]; + local t23a = H55_Creatures[faction1][rnd23a][rnd06]; + local t23b = H55_Creatures[faction2][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction2][rnd34a][rnd12]; + local t34b = H55_Creatures[faction1][rnd34b][rnd11]; + local t45a = H55_Creatures[faction2][rnd45a][rnd10]; + local t45b = H55_Creatures[faction1][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction2][rnd56a][rnd04]; + local t56b = H55_Creatures[faction1][rnd56b][rnd03]; + local t67a = H55_Creatures[faction1][rnd67a][rnd02]; + local t67b = H55_Creatures[faction2][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + local boss = 1.3; + + local cnt01 = boss*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction1][1]))); + local cnt02 = boss*(random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction1][2]))); + local cnt03 = boss*(random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction1][3]))); + local cnt04 = boss*(random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction1][4]))); + local cnt05 = boss*(random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction1][5]))); + local cnt06 = boss*(random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction1][6]))); + local cnt07 = boss*(random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction1][7]))); + local cntcr = boss*(5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction1][1])))); + + if H55_BankDay <= 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_ObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Void.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_ObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Void.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_ObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Void.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_ObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Void.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_ObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Void.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_ObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Void.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_ObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Void.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_ObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Void.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_ObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Void.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_ObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Void.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_ObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Void.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_ObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Void.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; +end; + +function H55_OneObeliskChallenge(hero,obelisk) + local player = GetObjectOwner(hero); + H55_ObeliskChallengeAccepted[player] = 1; + local faction = 4; + + local rnd01 = H55_ObeliskArmies[obelisk][1] local rnd02 = H55_ObeliskArmies[obelisk][2] local rnd03 = H55_ObeliskArmies[obelisk][3]; + local rnd04 = H55_ObeliskArmies[obelisk][4] local rnd05 = H55_ObeliskArmies[obelisk][5] local rnd06 = H55_ObeliskArmies[obelisk][6]; + local rnd07 = H55_ObeliskArmies[obelisk][7] local rnd08 = H55_ObeliskArmies[obelisk][8] local rnd09 = H55_ObeliskArmies[obelisk][9]; + local rnd10 = H55_ObeliskArmies[obelisk][10] local rnd11 = H55_ObeliskArmies[obelisk][11] local rnd12 = H55_ObeliskArmies[obelisk][12]; + local rnd13 = H55_ObeliskArmies[obelisk][13] local rnd14 = H55_ObeliskArmies[obelisk][14]; + + local rnd12a = H55_ObeliskArmies[obelisk][15] local rnd23a = H55_ObeliskArmies[obelisk][16] local rnd34a = H55_ObeliskArmies[obelisk][17]; + local rnd45a = H55_ObeliskArmies[obelisk][18] local rnd56a = H55_ObeliskArmies[obelisk][19] local rnd67a = H55_ObeliskArmies[obelisk][20]; + + local rnd12b = H55_ObeliskArmies[obelisk][21] local rnd23b = H55_ObeliskArmies[obelisk][22] local rnd34b = H55_ObeliskArmies[obelisk][23]; + local rnd45b = H55_ObeliskArmies[obelisk][24] local rnd56b = H55_ObeliskArmies[obelisk][25] local rnd67b = H55_ObeliskArmies[obelisk][26]; + + local combat01 = H55_ObeliskArmies[obelisk][27] local combat02 = H55_ObeliskArmies[obelisk][28] local combat03 = H55_ObeliskArmies[obelisk][29]; + + local t01a = H55_Creatures[faction][1][rnd01]; + local t02a = H55_Creatures[faction][2][rnd02]; + local t03a = H55_Creatures[faction][3][rnd03]; + local t04a = H55_Creatures[faction][4][rnd04]; + local t05a = H55_Creatures[faction][5][rnd05]; + local t06a = H55_Creatures[faction][6][rnd06]; + local t07a = H55_Creatures[faction][7][rnd07]; + + local t01b = H55_Creatures[faction][1][rnd08]; + local t02b = H55_Creatures[faction][2][rnd09]; + local t03b = H55_Creatures[faction][3][rnd10]; + local t04b = H55_Creatures[faction][4][rnd11]; + local t05b = H55_Creatures[faction][5][rnd12]; + local t06b = H55_Creatures[faction][6][rnd13]; + local t07b = H55_Creatures[faction][7][rnd14]; + + local t12a = H55_Creatures[faction][rnd12a][rnd08]; + local t12b = H55_Creatures[faction][rnd12b][rnd07]; + local t23a = H55_Creatures[faction][rnd23a][rnd06]; + local t23b = H55_Creatures[faction][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction][rnd34a][rnd12]; + local t34b = H55_Creatures[faction][rnd34b][rnd11]; + local t45a = H55_Creatures[faction][rnd45a][rnd10]; + local t45b = H55_Creatures[faction][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction][rnd56a][rnd04]; + local t56b = H55_Creatures[faction][rnd56b][rnd03]; + local t67a = H55_Creatures[faction][rnd67a][rnd02]; + local t67b = H55_Creatures[faction][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1]))); + + if H55_BankDay <= 56 then + if combat01 == 1 or combat01 == 2 then + StartCombat(hero,nil,4,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt04,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 3 or combat01 == 4 then + StartCombat(hero,nil,4,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 5 or combat01 == 6 then + StartCombat(hero,nil,4,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 7 then + StartCombat(hero,nil,5,t01a,cnt01,t01a,cnt01,t01b,cnt01,t01b,cnt01,t01a,cnt01,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 56 and H55_BankDay <= 112 then + if combat02 == 1 or combat02 == 2 or combat02 == 3 then + StartCombat(hero,nil,5,t12a,cnt01,t12b,cnt02,t23a,cnt02,t34a,cnt03,t56a,cnt05,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 4 or combat02 == 5 or combat02 == 6 then + StartCombat(hero,nil,5,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,t45a,cnt04,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 7 or combat02 == 8 or combat02 == 9 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 10 then + StartCombat(hero,nil,6,t02a,cnt02,t02a,cnt02,t02b,cnt02,t02b,cnt02,t02a,cnt02,t02b,cnt02,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 11 then + StartCombat(hero,nil,5,t03a,cnt03,t03a,cnt03,t03b,cnt03,t03b,cnt03,t03a,cnt03,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_OneObeliskWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil, + "H55_OneObeliskWin","/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; +end; + +function H55_ShantiriVisit(hero,shantiri) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + H55_ShantiriVisitAI(hero,shantiri); + elseif H55_ShantirisQty == 1 then + if H55_ShantiriVisited[shantiri][player] == nil then + H55_ShantiriVisited[shantiri][player] = 1; + MarkObjectAsVisited(shantiri,hero); + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Obelisk/ShantiriOnlyOne.txt"}, + "H55_OneShantiriChallenge('"..hero.."','"..shantiri.."')","H55_ShantiriRefuse('"..hero.."','"..shantiri.."')"); + elseif H55_ShantiriVisited[shantiri][player] == 1 and H55_ShantiriChallengeAccepted[player] ~= 1 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Obelisk/ShantiriOnlyOne.txt"}, + "H55_OneShantiriChallenge('"..hero.."','"..shantiri.."')","H55_ShantiriRefuse('"..hero.."','"..shantiri.."')"); + elseif H55_ShantiriVisited[shantiri][player] == 1 and H55_ShantiriChallengeAccepted[player] == 1 and H55_ShantiriGraalFound[player] == 1 then + ShowFlyingSign("/Text/Game/Scripts/Obelisk/ShantiriQuestComplete.txt",hero,player,5); + else + ShowFlyingSign({"/Text/Game/Scripts/Obelisk/ShantiriCryptFail.txt"},hero,player,5); + end; + elseif H55_ShantirisQty >= 2 then + if H55_ShantiriTotalVisited[player] == nil then + H55_ShantiriVisited[shantiri][player] = 1; + H55_ShantiriTotalVisited[player] = 1; + ShowFlyingSign({"/Text/Game/Scripts/Obelisk/ShantiriVisit.txt";amount=H55_ShantiriTotalVisited[player],total=H55_ShantirisQty},hero,player,5); + MarkObjectAsVisited(shantiri,hero); + elseif H55_ShantiriVisited[shantiri][player] == nil then + H55_ShantiriVisited[shantiri][player] = 1; + H55_ShantiriTotalVisited[player] = H55_ShantiriTotalVisited[player]+1; + MarkObjectAsVisited(shantiri,hero); + if H55_ShantiriTotalVisited[player] == H55_ShantirisQty then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Obelisk/ShantiriQuestion.txt"}, + "H55_ShantiriChallenge('"..hero.."','"..shantiri.."')","H55_ShantiriRefuse('"..hero.."','"..shantiri.."')"); + else + ShowFlyingSign({"/Text/Game/Scripts/Obelisk/ShantiriVisit.txt";amount=H55_ShantiriTotalVisited[player],total=H55_ShantirisQty},hero,player,5); + end; + elseif H55_ShantiriTotalVisited[player] == H55_ShantirisQty and H55_ShantiriChallengeAccepted[player] ~= 1 then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Obelisk/ShantiriQuestion.txt"}, + "H55_ShantiriChallenge('"..hero.."','"..shantiri.."')","H55_ShantiriRefuse('"..hero.."','"..shantiri.."')"); + elseif H55_ShantiriTotalVisited[player] == H55_ShantirisQty and H55_ShantiriChallengeAccepted[player] == 1 and H55_ShantiriGraalFound[player] == 1 then + ShowFlyingSign("/Text/Game/Scripts/Obelisk/ShantiriQuestComplete.txt",hero,player,5); + elseif H55_ShantiriTotalVisited[player] == H55_ShantirisQty and H55_ShantiriChallengeAccepted[player] == 1 and H55_ShantiriGraalFound[player] ~= 1 then + ShowFlyingSign({"/Text/Game/Scripts/Obelisk/ShantiriFail.txt"},hero,player,5); + else + ShowFlyingSign({"/Text/Game/Scripts/Obelisk/ShantiriAlready.txt";amount=H55_ShantiriTotalVisited[player],total=H55_ShantirisQty},hero,player,5); + end; + end; +end; + +function H55_ShantiriRefuse(hero) + print("Challenge refused by player"); +end; + +function H55_ShantiriVisitAI(hero,shantiri) + Trigger(OBJECT_TOUCH_TRIGGER,shantiri,nil); + SetObjectEnabled(shantiri,not nil); + MakeHeroInteractWithObject(hero,shantiri); + Trigger(OBJECT_TOUCH_TRIGGER,shantiri,"H55_ShantiriVisit"); + SetObjectEnabled(shantiri,nil); +end; + +function H55_ShantiriChallenge(hero,shantiri) + local player = GetObjectOwner(hero); + H55_ShantiriChallengeAccepted[player] = 1; + local alignment = H55_ShantiriArmies[shantiri][30]; + local faction1 = 1; + local faction2 = 1; + if alignment == 1 then faction1 = 1 faction2 = 2 end; + if alignment == 2 then faction1 = 5 faction2 = 7 end; + if alignment == 3 then faction1 = 1 faction2 = 7 end; + if alignment == 4 then faction1 = 2 faction2 = 5 end; + if alignment == 5 then faction1 = 2 faction2 = 1 end; + if alignment == 6 then faction1 = 7 faction2 = 5 end; + if alignment == 7 then faction1 = 7 faction2 = 1 end; + if alignment == 8 then faction1 = 5 faction2 = 2 end; + + local rnd01 = H55_ShantiriArmies[shantiri][1] local rnd02 = H55_ShantiriArmies[shantiri][2] local rnd03 = H55_ShantiriArmies[shantiri][3]; + local rnd04 = H55_ShantiriArmies[shantiri][4] local rnd05 = H55_ShantiriArmies[shantiri][5] local rnd06 = H55_ShantiriArmies[shantiri][6]; + local rnd07 = H55_ShantiriArmies[shantiri][7] local rnd08 = H55_ShantiriArmies[shantiri][8] local rnd09 = H55_ShantiriArmies[shantiri][9]; + local rnd10 = H55_ShantiriArmies[shantiri][10] local rnd11 = H55_ShantiriArmies[shantiri][11] local rnd12 = H55_ShantiriArmies[shantiri][12]; + local rnd13 = H55_ShantiriArmies[shantiri][13] local rnd14 = H55_ShantiriArmies[shantiri][14]; + + local rnd12a = H55_ShantiriArmies[shantiri][15] local rnd23a = H55_ShantiriArmies[shantiri][16] local rnd34a = H55_ShantiriArmies[shantiri][17]; + local rnd45a = H55_ShantiriArmies[shantiri][18] local rnd56a = H55_ShantiriArmies[shantiri][19] local rnd67a = H55_ShantiriArmies[shantiri][20]; + + local rnd12b = H55_ShantiriArmies[shantiri][21] local rnd23b = H55_ShantiriArmies[shantiri][22] local rnd34b = H55_ShantiriArmies[shantiri][23]; + local rnd45b = H55_ShantiriArmies[shantiri][24] local rnd56b = H55_ShantiriArmies[shantiri][25] local rnd67b = H55_ShantiriArmies[shantiri][26]; + + local combat01 = H55_ShantiriArmies[shantiri][27] local combat02 = H55_ShantiriArmies[shantiri][28] local combat03 = H55_ShantiriArmies[shantiri][29]; + + local t01a = H55_Creatures[faction1][1][rnd01]; + local t02a = H55_Creatures[faction2][2][rnd02]; + local t03a = H55_Creatures[faction1][3][rnd03]; + local t04a = H55_Creatures[faction2][4][rnd04]; + local t05a = H55_Creatures[faction1][5][rnd05]; + local t06a = H55_Creatures[faction2][6][rnd06]; + local t07a = H55_Creatures[faction1][7][rnd07]; + + local t01b = H55_Creatures[faction2][1][rnd08]; + local t02b = H55_Creatures[faction1][2][rnd09]; + local t03b = H55_Creatures[faction2][3][rnd10]; + local t04b = H55_Creatures[faction1][4][rnd11]; + local t05b = H55_Creatures[faction2][5][rnd12]; + local t06b = H55_Creatures[faction1][6][rnd13]; + local t07b = H55_Creatures[faction2][7][rnd14]; + + local t12a = H55_Creatures[faction1][rnd12a][rnd08]; + local t12b = H55_Creatures[faction2][rnd12b][rnd07]; + local t23a = H55_Creatures[faction1][rnd23a][rnd06]; + local t23b = H55_Creatures[faction2][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction2][rnd34a][rnd12]; + local t34b = H55_Creatures[faction1][rnd34b][rnd11]; + local t45a = H55_Creatures[faction2][rnd45a][rnd10]; + local t45b = H55_Creatures[faction1][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction2][rnd56a][rnd04]; + local t56b = H55_Creatures[faction1][rnd56b][rnd03]; + local t67a = H55_Creatures[faction1][rnd67a][rnd02]; + local t67b = H55_Creatures[faction2][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + local boss = 1.3; + + local cnt01 = boss*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction1][1]))); + local cnt02 = boss*(random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction1][2]))); + local cnt03 = boss*(random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction1][3]))); + local cnt04 = boss*(random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction1][4]))); + local cnt05 = boss*(random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction1][5]))); + local cnt06 = boss*(random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction1][6]))); + local cnt07 = boss*(random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction1][7]))); + local cntcr = boss*(5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction1][1])))); + + if H55_BankDay <= 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_ShantiriWin", + "/Arenas/CombatArena/FinalCombat/Bank_Shantiri.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_ShantiriWin", + "/Arenas/CombatArena/FinalCombat/Bank_Shantiri.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_ShantiriWin", + "/Arenas/CombatArena/FinalCombat/Bank_Shantiri.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_ShantiriWin", + "/Arenas/CombatArena/FinalCombat/Bank_Shantiri.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_ShantiriWin", + "/Arenas/CombatArena/FinalCombat/Bank_Shantiri.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_ShantiriWin", + "/Arenas/CombatArena/FinalCombat/Bank_Shantiri.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_ShantiriWin", + "/Arenas/CombatArena/FinalCombat/Bank_Shantiri.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_ShantiriWin", + "/Arenas/CombatArena/FinalCombat/Bank_Shantiri.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_ShantiriWin", + "/Arenas/CombatArena/FinalCombat/Bank_Shantiri.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_ShantiriWin", + "/Arenas/CombatArena/FinalCombat/Bank_Shantiri.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_ShantiriWin", + "/Arenas/CombatArena/FinalCombat/Bank_Shantiri.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_ShantiriWin", + "/Arenas/CombatArena/FinalCombat/Bank_Shantiri.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; +end; + +function H55_OneShantiriChallenge(hero,shantiri) + local player = GetObjectOwner(hero); + H55_ShantiriChallengeAccepted[player] = 1; + local faction = 6; + + local rnd01 = H55_ShantiriArmies[shantiri][1] local rnd02 = H55_ShantiriArmies[shantiri][2] local rnd03 = H55_ShantiriArmies[shantiri][3]; + local rnd04 = H55_ShantiriArmies[shantiri][4] local rnd05 = H55_ShantiriArmies[shantiri][5] local rnd06 = H55_ShantiriArmies[shantiri][6]; + local rnd07 = H55_ShantiriArmies[shantiri][7] local rnd08 = H55_ShantiriArmies[shantiri][8] local rnd09 = H55_ShantiriArmies[shantiri][9]; + local rnd10 = H55_ShantiriArmies[shantiri][10] local rnd11 = H55_ShantiriArmies[shantiri][11] local rnd12 = H55_ShantiriArmies[shantiri][12]; + local rnd13 = H55_ShantiriArmies[shantiri][13] local rnd14 = H55_ShantiriArmies[shantiri][14]; + + local rnd12a = H55_ShantiriArmies[shantiri][15] local rnd23a = H55_ShantiriArmies[shantiri][16] local rnd34a = H55_ShantiriArmies[shantiri][17]; + local rnd45a = H55_ShantiriArmies[shantiri][18] local rnd56a = H55_ShantiriArmies[shantiri][19] local rnd67a = H55_ShantiriArmies[shantiri][20]; + + local rnd12b = H55_ShantiriArmies[shantiri][21] local rnd23b = H55_ShantiriArmies[shantiri][22] local rnd34b = H55_ShantiriArmies[shantiri][23]; + local rnd45b = H55_ShantiriArmies[shantiri][24] local rnd56b = H55_ShantiriArmies[shantiri][25] local rnd67b = H55_ShantiriArmies[shantiri][26]; + + local combat01 = H55_ShantiriArmies[shantiri][27] local combat02 = H55_ShantiriArmies[shantiri][28] local combat03 = H55_ShantiriArmies[shantiri][29]; + + local t01a = H55_Creatures[faction][1][rnd01]; + local t02a = H55_Creatures[faction][2][rnd02]; + local t03a = H55_Creatures[faction][3][rnd03]; + local t04a = H55_Creatures[faction][4][rnd04]; + local t05a = H55_Creatures[faction][5][rnd05]; + local t06a = H55_Creatures[faction][6][rnd06]; + local t07a = H55_Creatures[faction][7][rnd07]; + + local t01b = H55_Creatures[faction][1][rnd08]; + local t02b = H55_Creatures[faction][2][rnd09]; + local t03b = H55_Creatures[faction][3][rnd10]; + local t04b = H55_Creatures[faction][4][rnd11]; + local t05b = H55_Creatures[faction][5][rnd12]; + local t06b = H55_Creatures[faction][6][rnd13]; + local t07b = H55_Creatures[faction][7][rnd14]; + + local t12a = H55_Creatures[faction][rnd12a][rnd08]; + local t12b = H55_Creatures[faction][rnd12b][rnd07]; + local t23a = H55_Creatures[faction][rnd23a][rnd06]; + local t23b = H55_Creatures[faction][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction][rnd34a][rnd12]; + local t34b = H55_Creatures[faction][rnd34b][rnd11]; + local t45a = H55_Creatures[faction][rnd45a][rnd10]; + local t45b = H55_Creatures[faction][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction][rnd56a][rnd04]; + local t56b = H55_Creatures[faction][rnd56b][rnd03]; + local t67a = H55_Creatures[faction][rnd67a][rnd02]; + local t67b = H55_Creatures[faction][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1]))); + + if H55_BankDay <= 56 then + if combat01 == 1 or combat01 == 2 then + StartCombat(hero,nil,4,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt04,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat01 == 3 or combat01 == 4 then + StartCombat(hero,nil,4,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat01 == 5 or combat01 == 6 then + StartCombat(hero,nil,4,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat01 == 7 then + StartCombat(hero,nil,5,t01a,cnt01,t01a,cnt01,t01b,cnt01,t01b,cnt01,t01a,cnt01,nil,"H55_OneShantiriWin", + nil,1); + end; + end; + if H55_BankDay > 56 and H55_BankDay <= 112 then + if combat02 == 1 or combat02 == 2 or combat02 == 3 then + StartCombat(hero,nil,5,t12a,cnt01,t12b,cnt02,t23a,cnt02,t34a,cnt03,t56a,cnt05,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat02 == 4 or combat02 == 5 or combat02 == 6 then + StartCombat(hero,nil,5,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,t45a,cnt04,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat02 == 7 or combat02 == 8 or combat02 == 9 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat02 == 10 then + StartCombat(hero,nil,6,t02a,cnt02,t02a,cnt02,t02b,cnt02,t02b,cnt02,t02a,cnt02,t02b,cnt02,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat02 == 11 then + StartCombat(hero,nil,5,t03a,cnt03,t03a,cnt03,t03b,cnt03,t03b,cnt03,t03a,cnt03,nil,"H55_OneShantiriWin", + nil,1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_OneShantiriWin", + nil,1); + end; + end; + if H55_BankDay > 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_OneShantiriWin", + nil,1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil, + "H55_OneShantiriWin",nil,1); + end; + end; +end; + +function H55_ObeliskWin(hero,result) + local player = GetObjectOwner(hero); + local floorsize = GetMaxFloor(); + local mapsize = GetTerrainSize(); + if result ~= nil then + if H55_ObelisksQty == 2 then + H55_ArtifactAward(hero,1); + end; + if H55_ObelisksQty >= 3 and H55_ObelisksQty < 5 then + H55_ArtifactAward(hero,2); + end; + if mapsize == 256 and floorsize == 0 then + if H55_ObelisksQty >= 6 and H55_ObelisksQty < 8 then + if H55_ForcedObelisk >= 1 then + H55_StaticObeliskAward(hero); + else + H55_RandomUltimateAward(hero); + end; + end; + elseif mapsize == 176 and floorsize == 1 then + if H55_ObelisksQty >= 6 and H55_ObelisksQty < 8 then + if H55_ForcedObelisk >= 1 then + H55_StaticObeliskAward(hero); + else + H55_RandomUltimateAward(hero); + end; + end; + else + if H55_ObelisksQty >= 6 and H55_ObelisksQty < 8 then + H55_ArtifactAward(hero,3); + end; + end; + if H55_ObelisksQty >= 8 then + H55_RandomUltimateAward(hero); + end; + H55_ObeliskGraalFound[player]=1; + end; +end; + +function H55_OneObeliskWin(hero,result) + local player = GetObjectOwner(hero); + if result ~= nil then + H55_ArtifactAward(hero,1); + H55_ObeliskGraalFound[player]=1; + end; +end; + +function H55_ShantiriWin(hero,result) + local player = GetObjectOwner(hero); + local floorsize = GetMaxFloor(); + local mapsize = GetTerrainSize(); + if result ~= nil then + if H55_ShantirisQty == 2 then + H55_ArtifactAward(hero,1); + end; + if H55_ShantirisQty >= 3 and H55_ShantirisQty < 5 then + H55_ArtifactAward(hero,2); + end; + if mapsize == 256 and floorsize == 0 then + if H55_ShantirisQty >= 6 and H55_ShantirisQty < 8 then + if H55_ForcedShantiri >= 1 then + H55_StaticShantiriAward(hero); + else + H55_RandomUltimateAward(hero); + end; + end; + elseif mapsize == 176 and floorsize == 1 then + if H55_ShantirisQty >= 6 and H55_ShantirisQty < 8 then + if H55_ForcedShantiri >= 1 then + H55_StaticShantiriAward(hero); + else + H55_RandomUltimateAward(hero); + end; + end; + else + if H55_ShantirisQty >= 6 and H55_ShantirisQty < 8 then + H55_ArtifactAward(hero,3); + end; + end; + if H55_ShantirisQty >= 8 then + H55_RandomUltimateAward(hero); + end; + H55_ShantiriGraalFound[player]=1; + end; +end; + +function H55_OneShantiriWin(hero,result) + local player = GetObjectOwner(hero); + if result ~= nil then + H55_ArtifactAward(hero,1); + H55_ShantiriGraalFound[player]=1; + end; +end; + +------------------------------------------------------------------------------------------------------------------------------------------- +--SEER HUT +------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_MermaidVisit(hero,mermaid) + local player = GetObjectOwner(hero); + if IsHeroInBoat(hero) == nil then + if H55_IsThisAIPlayer(player) ~= 1 then + local minor = H55_MermaidChoices[mermaid][1]; + local minorart = H55_MinorSeerArtifacts[minor]; + local minoramount = H55_MermaidChoices[mermaid][2]; + local reward = H55_MermaidChoices[mermaid][3]; + local herohasminor = GetHeroArtifactsCount(hero,minorart); + if herohasminor < minoramount then + MessageBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/SeerIntro.txt";qty=minoramount,type=H55_MinorSeerArtifactsText[minor]}, + "H55_SeerHutRefuse('"..hero.."','"..mermaid.."')"); + elseif herohasminor >= minoramount then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/SeerArtifactQuestion.txt";qty=minoramount,type=H55_MinorSeerArtifactsText[minor]}, + "H55_SeerHutAccept('"..hero.."','"..mermaid.."','"..minoramount.."','"..minorart.."')","H55_SeerHutRefuse('"..hero.."','"..mermaid.."')"); + end; + MarkObjectAsVisited(mermaid,hero); + else + print("AI visits Seer hut!"); + MarkObjectAsVisited(mermaid,hero); + --MakeHeroInteractWithObject(hero,mermaid); --cause of flickering cursor bug + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then + Trigger(OBJECT_TOUCH_TRIGGER,mermaid,nil); + SetObjectEnabled(mermaid,not nil); + MakeHeroInteractWithObject(hero,mermaid); + print("Mermaids activated"); + else + print("AI visits Seer hut!"); + MarkObjectAsVisited(mermaid,hero); + end; + end; +end; + +function H55_SeerHutAccept(hero,mermaid,minoramount,minorart) + local player = GetObjectOwner(hero); + local level = GetHeroLevel(hero); + --local skill = H55_MermaidChoices[mermaid][3]; + local choice1 = H55_MermaidChoices[mermaid][4]; + local choice2 = H55_MermaidChoices[mermaid][5]; + local amount1 = 1; + local amount2 = 1; + if choice1 == 2 then amount1 = 2 end; + if choice2 == 2 then amount2 = (level*1000) end; + local reward1 = H55_SeerRewardText1[choice1]; + local reward2 = H55_SeerRewardText2[choice2]; + for i=1,minoramount do + RemoveArtefact(hero,minorart) + end; + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/SeerRewardChoice.txt";qty_a=amount1,type_a=reward1,qty_b=amount2,type_b=reward2}, + "H55_SeerHutRewardA('"..hero.."','"..mermaid.."')","H55_SeerHutRewardB('"..hero.."','"..mermaid.."')"); +end; + +function H55_SeerHutRewardA(hero,mermaid) + local player = GetObjectOwner(hero); + local level = GetHeroLevel(hero); + local skill = H55_MermaidChoices[mermaid][3]; + local choice1 = H55_MermaidChoices[mermaid][4]; + local amount1 = 1; + if choice1 == 2 then amount1 = 2 end; + if choice1 == 2 then + ChangeHeroStat(hero,H55_StatAwards[skill],amount1); + if H55_IsThisAIPlayer(player) ~= 1 then + ShowFlyingSign({H55_BankStatText[skill];param=amount1},hero,player,7); + end; + else + if level < 50 then + local levelup = H55_ExpTable[level+1] - H55_ExpTable[level]; + GiveExp(hero,levelup); + else + GiveExp(hero,H55_ExpTable[50]); + end; + end; + H55_ResetMermaid(mermaid) +end; + +function H55_SeerHutRewardB(hero,mermaid) + local player = GetObjectOwner(hero); + local level = GetHeroLevel(hero); + local choice2 = H55_MermaidChoices[mermaid][5]; + local amount2 = 1; + if choice2 == 2 then amount2 = (level*1000) end; + if choice2 == 2 then + H55_GiveResources(player,6,amount2,hero); + else + H55_ArtifactAward(hero,2); + end; + H55_ResetMermaid(mermaid) +end; + +function H55_SeerHutRefuse(hero,mermaid) + MarkObjectAsVisited(mermaid,hero); +end; + +function H55_ResetMermaid(mermaid) + H55_MermaidChoices[mermaid][1] = random(20)+1; + H55_MermaidChoices[mermaid][2] = 2+random(2); + H55_MermaidChoices[mermaid][3] = random(4)+1; + H55_MermaidChoices[mermaid][4] = random(2)+1; + H55_MermaidChoices[mermaid][5] = random(2)+1; +end; + +---------------------------------------------------------------------------------------------------------------------------------------------- +--TEMPLE OF SHALASSA - RESOURCES ONLY +---------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_MapSizeSummoningAmount() + local floorsize = GetMaxFloor(); + local mapsize = GetTerrainSize(); + local amount = 40; + if floorsize == 0 then + if mapsize == 320 then amount = 80 end; + if mapsize == 256 then amount = 60 end; + if mapsize == 216 then amount = 50 end; + if mapsize == 176 then amount = 50 end; + end; + if floorsize == 1 then + if mapsize == 320 then amount = 120 end; + if mapsize == 256 then amount = 100 end; + if mapsize == 216 then amount = 80 end; + if mapsize == 176 then amount = 60 end; + if mapsize == 136 then amount = 50 end; + end; + return amount +end; + +function H55_SummonTempleVisit(hero,temple) + local player = GetObjectOwner(hero); + local reschoice = H55_SummonTempleChoices[temple][1]; + local armychoice = H55_SummonTempleChoices[temple][2]; + local amount = H55_MapSizeSummoningAmount(); + if reschoice == 0 or reschoice == 1 then amount = (2*amount) end; + if IsHeroInBoat(hero) == nil then + if H55_IsThisAIPlayer(player) == 1 then + print("AI Visits Summoning Temple!"); + MarkObjectAsVisited(temple,hero); + else + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Summon/Question.txt";qty=amount,type=H55_SummonResourceText[reschoice]}, + "H55_SummonAccept('"..hero.."','"..temple.."')","H55_SummonSRefuse('"..hero.."','"..temple.."')"); + end; + else + if H55_IsThisAIPlayer(player) == 1 then + print("AI Visits Sirens!"); + MarkObjectAsVisited(temple,hero); + else + Trigger(OBJECT_TOUCH_TRIGGER,temple,nil); + SetObjectEnabled(temple,not nil); + MakeHeroInteractWithObject(hero,temple); + print("Sirens activated"); + end; + end; +end; + +function H55_SummonAccept(hero,temple) + local player = GetObjectOwner(hero); + local reschoice = H55_SummonTempleChoices[temple][1]; + local armychoice = H55_SummonTempleChoices[temple][2]; + local amount = H55_MapSizeSummoningAmount(); + if reschoice == 0 or reschoice == 1 then + amount = (2*amount); + end; + if GetPlayerResource(player,reschoice) >= amount then + H55_TakeResources(player,reschoice,amount,hero); + H55_SummonTempleReward(hero,3,armychoice); + else + ShowFlyingSign("/Text/Game/Scripts/Summon/Fail.txt",hero,player,5); + end; + H55_SummonTempleChoices[temple][1] = random(6); + H55_SummonTempleChoices[temple][2] = random(7)+1; + MarkObjectAsVisited(temple,hero); +end; + +function H55_SummonSRefuse(hero,temple) + local player = GetObjectOwner(hero); + ShowFlyingSign("/Text/Game/Scripts/Summon/Refuse.txt",hero,player,5); + MarkObjectAsVisited(temple,hero); +end; + +---------------------------------------------------------------------------------------------------------------------------------------------- +--FOUNTAIN SUMMONING +---------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_FountainFortuneVisit(hero,fountain) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + H55_FountainFortuneRefuse(hero,fountain); + elseif HasArtefact(hero,ARTIFACT_ORB_03,0) or HasArtefact(hero,ARTIFACT_ORB_04,0) or HasArtefact(hero,ARTIFACT_ORB_01,0) or HasArtefact(hero,ARTIFACT_ORB_02,0) or HasArtefact(hero,ARTIFACT_GOVERNOR_02,0) then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Summon/Orbs.txt"}, + "H55_FountainFortuneAccept('"..hero.."','"..fountain.."')","H55_FountainFortuneRefuse('"..hero.."','"..fountain.."')"); + else + H55_FountainFortuneRefuse(hero,fountain) + end; +end; + +function H55_FountainFortuneRefuse(hero,fountain) + Trigger(OBJECT_TOUCH_TRIGGER,fountain,nil); + SetObjectEnabled(fountain,not nil); + MakeHeroInteractWithObject(hero,fountain); + --MarkObjectAsVisited(temple,hero); ??? + Trigger(OBJECT_TOUCH_TRIGGER,fountain,"H55_FountainFortuneVisit"); + SetObjectEnabled(fountain,nil); +end; + +function H55_FountainFortuneAccept(hero,fountain) + local player = GetObjectOwner(hero); + if HasArtefact(hero,ARTIFACT_GOVERNOR_02,0) then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Summon/Phoenix.txt"}, + "H55_SummonPhoenixAccept('"..hero.."','"..fountain.."')","H55_SummonFRefuse('"..hero.."','"..fountain.."')"); + end; + if HasArtefact(hero,ARTIFACT_ORB_03,0) then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Summon/Fire.txt"}, + "H55_SummonFireAccept('"..hero.."','"..fountain.."')","H55_SummonFRefuse('"..hero.."','"..fountain.."')"); + end; + if HasArtefact(hero,ARTIFACT_ORB_04,0) then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Summon/Water.txt"}, + "H55_SummonWaterAccept('"..hero.."','"..fountain.."')","H55_SummonFRefuse('"..hero.."','"..fountain.."')"); + end; + if HasArtefact(hero,ARTIFACT_ORB_01,0) then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Summon/Air.txt"}, + "H55_SummonAirAccept('"..hero.."','"..fountain.."')","H55_SummonFRefuse('"..hero.."','"..fountain.."')"); + end; + if HasArtefact(hero,ARTIFACT_ORB_02,0) then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Summon/Earth.txt"}, + "H55_SummonEarthAccept('"..hero.."','"..fountain.."')","H55_SummonFRefuse('"..hero.."','"..fountain.."')"); + end; +end; + +function H55_SummonPhoenixAccept(hero,fountain) + local player = GetObjectOwner(hero); + local amount = math.round(1+(1*(H55_Day/7))); + RemoveArtefact(hero,ARTIFACT_GOVERNOR_02); + AddHeroCreatures(hero,91,amount); + ShowFlyingSign({"/Text/Game/Scripts/Summon/Phoenixes.txt";num=amount},hero,player,7); +end; + +function H55_SummonFireAccept(hero,fountain) + local player = GetObjectOwner(hero); + local amount = math.round(1+(4*(H55_Day/7))); + RemoveArtefact(hero,ARTIFACT_ORB_03); + AddHeroCreatures(hero,85,amount); + ShowFlyingSign({"/Text/Game/Scripts/Summon/Elementals.txt";num=amount},hero,player,7); +end; + +function H55_SummonWaterAccept(hero,fountain) + local player = GetObjectOwner(hero); + local amount = math.round(1+(4*(H55_Day/7))); + RemoveArtefact(hero,ARTIFACT_ORB_04); + AddHeroCreatures(hero,86,amount); + ShowFlyingSign({"/Text/Game/Scripts/Summon/Elementals.txt";num=amount},hero,player,7); +end; + +function H55_SummonAirAccept(hero,fountain) + local player = GetObjectOwner(hero); + local amount = math.round(1+(4*(H55_Day/7))); + RemoveArtefact(hero,ARTIFACT_ORB_01); + AddHeroCreatures(hero,88,amount); + ShowFlyingSign({"/Text/Game/Scripts/Summon/Elementals.txt";num=amount},hero,player,7); +end; + +function H55_SummonEarthAccept(hero,fountain) + local player = GetObjectOwner(hero); + local amount = math.round(1+(4*(H55_Day/7))); + RemoveArtefact(hero,ARTIFACT_ORB_02); + AddHeroCreatures(hero,87,amount); + ShowFlyingSign({"/Text/Game/Scripts/Summon/Elementals.txt";num=amount},hero,player,7); +end; + +function H55_SummonFRefuse(hero,fountain) + print("H55 Summoning of creatures was canceled"); +end; + +---------------------------------------------------------------------------------------------------------------------------------------------- +--TEMPLE SUMMONING +---------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_RegularTempleVisit(hero,temple) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + H55_RegularTempleRefuse(hero,temple); + elseif HasArtefact(hero,ARTIFACT_MOONBLADE,0) or HasArtefact(hero,ARTIFACT_GEAR_06,0) or HasArtefact(hero,ARTIFACT_SHAWL_OF_GREAT_LICH,0) or HasArtefact(hero,ARTIFACT_BONESTUDDED_LEATHER,0) or HasArtefact(hero,ARTIFACT_WEREWOLF_CLAW_NECKLACE,0) then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Summon/Temple.txt"}, + "H55_RegularTempleAccept('"..hero.."','"..temple.."')","H55_RegularTempleRefuse('"..hero.."','"..temple.."')"); + else + H55_RegularTempleRefuse(hero,temple); + end; +end; + +function H55_RegularTempleRefuse(hero,temple) + Trigger(OBJECT_TOUCH_TRIGGER,temple,nil); + SetObjectEnabled(temple,not nil); + MakeHeroInteractWithObject(hero,temple); + --MarkObjectAsVisited(temple,hero); ??? + Trigger(OBJECT_TOUCH_TRIGGER,temple,"H55_RegularTempleVisit"); + SetObjectEnabled(temple,nil); +end; + +function H55_RegularTempleAccept(hero,temple) + local player = GetObjectOwner(hero); + if HasArtefact(hero,ARTIFACT_MOONBLADE,0) then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Summon/Manticore.txt"}, + "H55_SummonManticoreAccept('"..hero.."','"..temple.."')","H55_SummonTRefuse('"..hero.."','"..temple.."')"); + end; + if HasArtefact(hero,ARTIFACT_GEAR_06,0) then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Summon/Eagle.txt"}, + "H55_SummonEagleAccept('"..hero.."','"..temple.."')","H55_SummonTRefuse('"..hero.."','"..temple.."')"); + end; + if HasArtefact(hero,ARTIFACT_SHAWL_OF_GREAT_LICH,0) then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Summon/Dreadknight.txt"}, + "H55_SummonDreadKnightAccept('"..hero.."','"..temple.."')","H55_SummonTRefuse('"..hero.."','"..temple.."')"); + end; + if HasArtefact(hero,ARTIFACT_BONESTUDDED_LEATHER,0) then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Summon/Mummy.txt"}, + "H55_SummonMummyAccept('"..hero.."','"..temple.."')","H55_SummonTRefuse('"..hero.."','"..temple.."')"); + end; + if HasArtefact(hero,ARTIFACT_WEREWOLF_CLAW_NECKLACE,0) then + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/Summon/Wolves.txt"}, + "H55_SummonWolvesAccept('"..hero.."','"..temple.."')","H55_SummonTRefuse('"..hero.."','"..temple.."')"); + end; +end; + +function H55_SummonManticoreAccept(hero,temple) + local player = GetObjectOwner(hero); + local amount = math.round(1+(2*(H55_Day/7))); + RemoveArtefact(hero,ARTIFACT_MOONBLADE); + AddHeroCreatures(hero,115,amount); + ShowFlyingSign({"/Text/Game/Scripts/Summon/Manticores.txt";num=amount},hero,player,7); +end; + +function H55_SummonEagleAccept(hero,temple) + local player = GetObjectOwner(hero); + local amount = math.round(1+(2*(H55_Day/7))); + RemoveArtefact(hero,ARTIFACT_GEAR_06); + AddHeroCreatures(hero,114,amount); + ShowFlyingSign({"/Text/Game/Scripts/Summon/Eagles.txt";num=amount},hero,player,7); +end; + +function H55_SummonWolvesAccept(hero,temple) + local player = GetObjectOwner(hero); + local amount = math.round(1+(6*(H55_Day/7))); + RemoveArtefact(hero,ARTIFACT_WEREWOLF_CLAW_NECKLACE); + AddHeroCreatures(hero,113,amount); + ShowFlyingSign({"/Text/Game/Scripts/Summon/Wolfpack.txt";num=amount},hero,player,7); +end; + +function H55_SummonMummyAccept(hero,temple) + local player = GetObjectOwner(hero); + local amount = math.round(1+(3*(H55_Day/7))); + RemoveArtefact(hero,ARTIFACT_BONESTUDDED_LEATHER); + AddHeroCreatures(hero,116,amount); + ShowFlyingSign({"/Text/Game/Scripts/Summon/MReceive.txt";num=amount},hero,player,7); +end; + +function H55_SummonDreadKnightAccept(hero,temple) + local player = GetObjectOwner(hero); + local amount = math.round(1+(2*(H55_Day/7))); + RemoveArtefact(hero,ARTIFACT_SHAWL_OF_GREAT_LICH); + AddHeroCreatures(hero,90,amount); + ShowFlyingSign({"/Text/Game/Scripts/Summon/DKReceive.txt";num=amount},hero,player,7); +end; + +function H55_SummonTRefuse(hero,temple) + print("H55 Summoning of creatures was canceled"); +end; + +---------------------------------------------------------------------------------------------------------------------------------------------- +--WITCH HUT +---------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_WitchVisit(hero,hut) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) == 1 then + print("H55 AI Visits Witch Hut!"); + elseif H55_WHVisited[hut][hero] then + ShowFlyingSign("/Text/Game/Scripts/Witch/Already.txt",hero,player,5); + else + if Fx_WitchVisit(player, hero, hut) then + H55_WHVisited[hut][hero] = 1 + MarkObjectAsVisited(hero, hut) + end + end; +end; + +---------------------------------------------------------------------------------------------------------------------------------------------- +--BANKS +---------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_SetBankDay(day) + H55_StaticBanks = 1; + H55_BankDay = day; +end; + +function H55_BanksOnTimer() + H55_StaticBanks = 0; +end; + +function H55_GetBankDifMultiplier() + local multiplier = 1; + local add = H55_TownQtyBankDifficulty; + local weeks = (H55_BankDay/7)+1; + local normal = 1+((H55_BankDay/7)*(0.03+add)); + local hard = 1+((H55_BankDay/7)*(0.04+add)); + local heroic = 1+((H55_BankDay/7)*(0.05+add)); + local impossible = 1+((H55_BankDay/7)*(0.06+add)); + if H55_AveragePowerRating > 2500 then + H55_MonsterSettingAdjust = 0.7 + (((H55_AveragePowerRating-2500)/10)/1000); + elseif H55_AveragePowerRating < 2500 then + H55_MonsterSettingAdjust = 0.7 - (((2500-H55_AveragePowerRating)/10)/1000); + else + H55_MonsterSettingAdjust = 0.7; + end; + local reduction = H55_MonsterSettingAdjust + ((H55_BankDay/28)*0.1); + if H55_PvPBanks == 1 then reduction = reduction + 0.1 end; + if H55_GovernanceEnabled == 1 then reduction = reduction + 0.05 end; + if H55_GameMode == 3 then reduction = reduction + 0.1 end; + if H55_GameMode == 2 then reduction = reduction + 0.05 end; + if H55_GameMode == 0 then reduction = reduction - 0.1 end; + -- if H55_Difficulty == 0 then reduction = reduction - 0.05 end; + -- if H55_GameMode ~= 0 then + -- if H55_MapType == "Campaign" or H55_MapType == "Scenario" then reduction = reduction - 0.05 end; + -- end; + -- if H55_PvPBanks == 1 and H55_Difficulty == 2 then reduction = reduction + 0.05 end; + -- if H55_PvPBanks == 1 and H55_Difficulty == 3 then reduction = reduction + 0.1 end; + if H55_Difficulty == 3 then + multiplier = reduction*(impossible*weeks); + elseif H55_Difficulty == 2 then + multiplier = reduction*(heroic*weeks); + elseif H55_Difficulty == 1 then + multiplier = reduction*(hard*weeks); + else + multiplier = reduction*(normal*weeks); + end; + if H55_BanksDifficulty <= 0.3 then + H55_BanksDifficulty = 0.3; + end; + multiplier = (H55_BanksDifficulty-0.16)*multiplier; + return multiplier; +end; + +function H55_GetLastVisited(bank) + local day = GetDate(DAY); + local result = 9999; + if H55_BankLastVisit[bank] ~= nil then + result = (day - H55_BankLastVisit[bank]) + end; + return result +end; + +function H55_GetPlayerLastVisited(player,bank) + local day = GetDate(DAY); + local result = 9999; + if H55_BankPlayerLastVisit[player][bank] ~= nil then + result = (day - H55_BankPlayerLastVisit[player][bank]); + end; + return result +end; + +function H55_CheckAdvMapObjQueue(player) + if H55_BankActions[player] == 0 then + H55_BankActions[player] = 1; + sleep(8); + H55_BankActions[player] = 0; + else return end; +end; + +---------------------------------------------------------------------------------------------------------------------------------------------- +--JUNK +---------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_WagonVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + -- startThread(H55_CheckAdvMapObjQueue); + -- if H55_BankAction == 1 then return nil end; + -- local player = GetObjectOwner(hero); + local x,y,z = GetObjectPosition(bank); + local founddisc = 0; + if H55_MoonDiscQuest == 1 and H55_IsThisAIPlayer(player) ~= 1 then + if bank == H55_MoonDiscLocations[H55_MoonDiscLoc01] and H55_MoonDiscFound01 ~= 1 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + GiveArtefact(hero,H55_MoonDiscPattern[H55_MoonDiscChoice01],0); + H55_MoonDiscFound01 = 1; + founddisc = 1; + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Givefragment.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + end; + if bank == H55_MoonDiscLocations[H55_MoonDiscLoc02] and H55_MoonDiscFound02 ~= 1 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + GiveArtefact(hero,H55_MoonDiscPattern[H55_MoonDiscChoice02],0); + H55_MoonDiscFound02 = 1; + founddisc = 1; + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Givefragment.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + end; + if bank == H55_MoonDiscLocations[H55_MoonDiscLoc03] and H55_MoonDiscFound03 ~= 1 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + GiveArtefact(hero,H55_MoonDiscPattern[H55_MoonDiscChoice03],0); + H55_MoonDiscFound03 = 1; + founddisc = 1; + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Givefragment.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + end; + if bank == H55_MoonDiscLocations[H55_MoonDiscLoc04] and H55_MoonDiscFound04 ~= 1 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + GiveArtefact(hero,H55_MoonDiscPattern[H55_MoonDiscChoice04],0); + H55_MoonDiscFound04 = 1; + founddisc = 1; + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Givefragment.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + end; + end; + if founddisc == 0 then + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + local faction = H55_WagonChoices[bank][1]; + local rndevent = H55_WagonChoices[bank][2]; + local rndartifact = H55_WagonChoices[bank][3]; + local rndrestype = H55_WagonChoices[bank][4]; + local rndamount = H55_WagonChoices[bank][5]; + -- if HasHeroSkill(hero,PERK_LUCKY_STRIKE) then + -- rndamount = rndamount+1; + -- end; + local rndtext = random(5)+1; + local day = GetDate(DAY); + if faction == 4 then faction = 1 end; + if rndrestype == 6 then rndamount = rndamount*100 end; + if rndevent == 1 or rndevent == 2 or rndevent == 3 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + elseif rndevent == 4 or rndevent == 5 or rndevent == 6 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + H55_GiveResources(player,rndrestype,rndamount,hero); + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + elseif rndevent == 7 then + -- if H55_RPGPotions == 1 and H55_IsThisAIPlayer(player) ~= 1 then + -- GiveArtefact(hero,ARTIFACT_FREIDA); + -- ShowFlyingSign("/Text/Game/Scripts/Banks/Giveartifact.txt",hero,player,5); + -- H55_BankLastVisit[bank] = day; + -- H55_BankPlayerLastVisit[player][bank] = day; + -- MarkObjectAsVisited(bank,hero); + -- else + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + H55_GiveResources(player,rndrestype,rndamount,hero); + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + --end; + elseif rndevent == 8 then + if H55_IsThisAIPlayer(player) == 1 then + H55_WagonWin03(hero,1); + else + ShowFlyingSign(H55_WagonEnterText[rndtext],hero,player,5); + sleep(1); + local t01a = H55_Creatures[faction][1][1]; + local t01b = H55_Creatures[faction][1][2]; + local t01c = H55_Creatures[faction][1][3]; + local multiplier = H55_GetBankDifMultiplier(); + local cnt01a = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][1])); + local cnt01b = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][1])); + local cnt01c = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][1])); + StartCombat(hero,nil,3,t01a,cnt01a,t01b,cnt01b,t01c,cnt01c,nil,"H55_WagonWin03",nil,1); + end; + elseif rndevent == 9 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + H55_GoldReward(hero,0.1); + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + elseif rndevent == 10 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + GiveArtefact(hero,H55_MinorArtifacts[rndartifact],0); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Giveartifact.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + elseif rndevent == 11 then + if H55_IsThisAIPlayer(player) == 1 then + H55_WagonWin01(hero,1); + else + ShowFlyingSign(H55_WagonEnterText[rndtext],hero,player,5); + sleep(1); + local t01a = H55_Creatures[faction][1][1]; + local t01b = H55_Creatures[faction][1][2]; + local t01c = H55_Creatures[faction][1][3]; + local multiplier = H55_GetBankDifMultiplier(); + local cnt01a = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][1])); + local cnt01b = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][1])); + local cnt01c = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][1])); + StartCombat(hero,nil,3,t01a,cnt01a,t01b,cnt01b,t01c,cnt01c,nil,"H55_WagonWin01",nil,1); + end; + else + if H55_IsThisAIPlayer(player) == 1 then + H55_WagonWin02(hero,1); + else + ShowFlyingSign(H55_WagonEnterText[rndtext],hero,player,5); + sleep(1); + local t01a = H55_Creatures[faction][1][1]; + local t01b = H55_Creatures[faction][1][2]; + local t01c = H55_Creatures[faction][1][3]; + local multiplier = H55_GetBankDifMultiplier() + local cnt01a = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][1])); + local cnt01b = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][1])); + local cnt01c = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][1])); + StartCombat(hero,nil,3,t01a,cnt01a,t01b,cnt01b,t01c,cnt01c,nil,"H55_WagonWin02",nil,1); + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; + end; +end; + +function H55_SkeletonVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local x,y,z = GetObjectPosition(bank); + local founddisc = 0; + if H55_MoonDiscQuest == 1 and H55_IsThisAIPlayer(player) ~= 1 then + if bank == H55_MoonDiscLocations[H55_MoonDiscLoc01] and H55_MoonDiscFound01 ~= 1 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + GiveArtefact(hero,H55_MoonDiscPattern[H55_MoonDiscChoice01],0); + H55_MoonDiscFound01 = 1; + founddisc = 1; + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Givefragment.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + end; + if bank == H55_MoonDiscLocations[H55_MoonDiscLoc02] and H55_MoonDiscFound02 ~= 1 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + GiveArtefact(hero,H55_MoonDiscPattern[H55_MoonDiscChoice02],0); + H55_MoonDiscFound02 = 1; + founddisc = 1; + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Givefragment.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + end; + if bank == H55_MoonDiscLocations[H55_MoonDiscLoc03] and H55_MoonDiscFound03 ~= 1 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + GiveArtefact(hero,H55_MoonDiscPattern[H55_MoonDiscChoice03],0); + H55_MoonDiscFound03 = 1; + founddisc = 1; + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Givefragment.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + end; + if bank == H55_MoonDiscLocations[H55_MoonDiscLoc04] and H55_MoonDiscFound04 ~= 1 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + GiveArtefact(hero,H55_MoonDiscPattern[H55_MoonDiscChoice04],0); + H55_MoonDiscFound04 = 1; + founddisc = 1; + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Givefragment.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + end; + end; + if founddisc == 0 then + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + local faction = 4 + local rndtier = H55_SkeletonChoices[bank][1]; + local rndevent = H55_SkeletonChoices[bank][2]; + local rndartifact = H55_SkeletonChoices[bank][3]; + local rndrestype = H55_SkeletonChoices[bank][4]; + local rndamount = H55_SkeletonChoices[bank][5]; + -- if HasHeroSkill(hero,PERK_LUCKY_STRIKE) then + -- rndamount = rndamount+1; + -- end; + local rndtext = random(5)+1; + local day = GetDate(DAY); + if rndrestype == 2 then rndrestype = 6 rndamount = rndamount*100 end; + if rndevent == 1 or rndevent == 2 or rndevent == 3 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + elseif rndevent == 4 then + if H55_IsThisAIPlayer(player) == 1 then + H55_SkeletonWin03(hero,1); + else + ShowFlyingSign(H55_GraveEnterText[rndtext],hero,player,5); + sleep(1); + local t01a = H55_Creatures[faction][rndtier][1]; + local t01b = H55_Creatures[faction][rndtier][2]; + local t01c = H55_Creatures[faction][rndtier][3]; + local multiplier = H55_GetBankDifMultiplier(); + local cnt01a = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][rndtier])); + local cnt01b = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][rndtier])); + local cnt01c = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][rndtier])); + StartCombat(hero,nil,3,t01a,cnt01a,t01b,cnt01b,t01c,cnt01c,nil,"H55_SkeletonWin03",nil,1); + end; + elseif rndevent == 5 or rndevent == 6 or rndevent == 7 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + H55_GiveResources(player,rndrestype,rndamount,hero); + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + elseif rndevent == 8 then + -- if H55_RPGPotions == 1 and H55_IsThisAIPlayer(player) ~= 1 then + -- GiveArtefact(hero,ARTIFACT_FREIDA); + -- ShowFlyingSign("/Text/Game/Scripts/Banks/Giveartifact.txt",hero,player,5); + -- H55_BankLastVisit[bank] = day; + -- H55_BankPlayerLastVisit[player][bank] = day; + -- MarkObjectAsVisited(bank,hero); + -- else + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + H55_GiveResources(player,rndrestype,rndamount,hero); + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + --end; + elseif rndevent == 9 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + H55_GoldReward(hero,0.1); + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + elseif rndevent == 10 then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + GiveArtefact(hero,H55_MinorArtifacts[rndartifact],0); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Giveartifact.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + elseif rndevent == 11 then + if H55_IsThisAIPlayer(player) == 1 then + H55_SkeletonWin01(hero,1); + else + ShowFlyingSign(H55_GraveEnterText[rndtext],hero,player,5); + sleep(1); + local t01a = H55_Creatures[faction][rndtier][1]; + local t01b = H55_Creatures[faction][rndtier][2]; + local t01c = H55_Creatures[faction][rndtier][3]; + local multiplier = H55_GetBankDifMultiplier(); + local cnt01a = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][rndtier])); + local cnt01b = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][rndtier])); + local cnt01c = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][rndtier])); + StartCombat(hero,nil,3,t01a,cnt01a,t01b,cnt01b,t01c,cnt01c,nil,"H55_SkeletonWin01",nil,1); + end; + else + if H55_IsThisAIPlayer(player) == 1 then + H55_SkeletonWin02(hero,1); + else + ShowFlyingSign(H55_GraveEnterText[rndtext],hero,player,5); + sleep(1); + local t01a = H55_Creatures[faction][rndtier][1]; + local t01b = H55_Creatures[faction][rndtier][2]; + local t01c = H55_Creatures[faction][rndtier][3]; + local multiplier = H55_GetBankDifMultiplier(); + local cnt01a = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][rndtier])); + local cnt01b = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][rndtier])); + local cnt01c = random(5)+ math.round(0.5*(multiplier*H55_CreaturesGrowth[faction][rndtier])); + StartCombat(hero,nil,3,t01a,cnt01a,t01b,cnt01b,t01c,cnt01c,nil,"H55_SkeletonWin02",nil,1); + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; + end; +end; + +------------------------------------------------------------------------------------------------------------------------------------------------ +--COMBAT +------------------------------------------------------------------------------------------------------------------------------------------------ + +function H55_CryptVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local faction = 4; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_CryptVisit"); + SetObjectEnabled(bank,nil); + H55_CryptWin(hero,1); + else + local rnd01 = H55_CryptArmies[bank][1] local rnd02 = H55_CryptArmies[bank][2] local rnd03 = H55_CryptArmies[bank][3]; + local rnd04 = H55_CryptArmies[bank][4] local rnd05 = H55_CryptArmies[bank][5] local rnd06 = H55_CryptArmies[bank][6]; + local rnd07 = H55_CryptArmies[bank][7] local rnd08 = H55_CryptArmies[bank][8] local rnd09 = H55_CryptArmies[bank][9]; + local rnd10 = H55_CryptArmies[bank][10] local rnd11 = H55_CryptArmies[bank][11] local rnd12 = H55_CryptArmies[bank][12]; + local rnd13 = H55_CryptArmies[bank][13] local rnd14 = H55_CryptArmies[bank][14]; + + local rnd12a = H55_CryptArmies[bank][15] local rnd23a = H55_CryptArmies[bank][16] local rnd34a = H55_CryptArmies[bank][17]; + local rnd45a = H55_CryptArmies[bank][18] local rnd56a = H55_CryptArmies[bank][19] local rnd67a = H55_CryptArmies[bank][20]; + + local rnd12b = H55_CryptArmies[bank][21] local rnd23b = H55_CryptArmies[bank][22] local rnd34b = H55_CryptArmies[bank][23]; + local rnd45b = H55_CryptArmies[bank][24] local rnd56b = H55_CryptArmies[bank][25] local rnd67b = H55_CryptArmies[bank][26]; + + local combat01 = H55_CryptArmies[bank][27] local combat02 = H55_CryptArmies[bank][28] local combat03 = H55_CryptArmies[bank][29]; + + local t01a = H55_Creatures[faction][1][rnd01]; + local t02a = H55_Creatures[faction][2][rnd02]; + local t03a = H55_Creatures[faction][3][rnd03]; + local t04a = H55_Creatures[faction][4][rnd04]; + local t05a = H55_Creatures[faction][5][rnd05]; + local t06a = H55_Creatures[faction][6][rnd06]; + local t07a = H55_Creatures[faction][7][rnd07]; + + local t01b = H55_Creatures[faction][1][rnd08]; + local t02b = H55_Creatures[faction][2][rnd09]; + local t03b = H55_Creatures[faction][3][rnd10]; + local t04b = H55_Creatures[faction][4][rnd11]; + local t05b = H55_Creatures[faction][5][rnd12]; + local t06b = H55_Creatures[faction][6][rnd13]; + local t07b = H55_Creatures[faction][7][rnd14]; + + local t12a = H55_Creatures[faction][rnd12a][rnd08]; + local t12b = H55_Creatures[faction][rnd12b][rnd07]; + local t23a = H55_Creatures[faction][rnd23a][rnd06]; + local t23b = H55_Creatures[faction][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction][rnd34a][rnd12]; + local t34b = H55_Creatures[faction][rnd34b][rnd11]; + local t45a = H55_Creatures[faction][rnd45a][rnd10]; + local t45b = H55_Creatures[faction][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction][rnd56a][rnd04]; + local t56b = H55_Creatures[faction][rnd56b][rnd03]; + local t67a = H55_Creatures[faction][rnd67a][rnd02]; + local t67b = H55_Creatures[faction][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1]))); + + if H55_BankDay <= 56 then + if combat01 == 1 or combat01 == 2 then + StartCombat(hero,nil,4,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt04,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 3 or combat01 == 4 then + StartCombat(hero,nil,4,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 5 or combat01 == 6 then + StartCombat(hero,nil,4,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 7 then + StartCombat(hero,nil,5,t01a,cnt01,t01a,cnt01,t01b,cnt01,t01b,cnt01,t01a,cnt01,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 56 and H55_BankDay <= 112 then + if combat02 == 1 or combat02 == 2 or combat02 == 3 then + StartCombat(hero,nil,5,t12a,cnt01,t12b,cnt02,t23a,cnt02,t34a,cnt03,t56a,cnt05,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 4 or combat02 == 5 or combat02 == 6 then + StartCombat(hero,nil,5,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,t45a,cnt04,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 7 or combat02 == 8 or combat02 == 9 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 10 then + StartCombat(hero,nil,6,t02a,cnt02,t02a,cnt02,t02b,cnt02,t02b,cnt02,t02a,cnt02,t02b,cnt02,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 11 then + StartCombat(hero,nil,5,t03a,cnt03,t03a,cnt03,t03b,cnt03,t03b,cnt03,t03a,cnt03,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_CryptWin", + "/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil, + "H55_CryptWin","/Arenas/CombatArena/FinalCombat/Bank_Crypt.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_StoneVaultVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local faction = 3; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_StoneVaultVisit"); + SetObjectEnabled(bank,nil); + H55_StoneVaultWin(hero,1); + else + local rnd01 = H55_StoneVaultArmies[bank][1] local rnd02 = H55_StoneVaultArmies[bank][2] local rnd03 = H55_StoneVaultArmies[bank][3]; + local rnd04 = H55_StoneVaultArmies[bank][4] local rnd05 = H55_StoneVaultArmies[bank][5] local rnd06 = H55_StoneVaultArmies[bank][6]; + local rnd07 = H55_StoneVaultArmies[bank][7] local rnd08 = H55_StoneVaultArmies[bank][8] local rnd09 = H55_StoneVaultArmies[bank][9]; + local rnd10 = H55_StoneVaultArmies[bank][10] local rnd11 = H55_StoneVaultArmies[bank][11] local rnd12 = H55_StoneVaultArmies[bank][12]; + local rnd13 = H55_StoneVaultArmies[bank][13] local rnd14 = H55_StoneVaultArmies[bank][14]; + + local rnd12a = H55_StoneVaultArmies[bank][15] local rnd23a = H55_StoneVaultArmies[bank][16] local rnd34a = H55_StoneVaultArmies[bank][17]; + local rnd45a = H55_StoneVaultArmies[bank][18] local rnd56a = H55_StoneVaultArmies[bank][19] local rnd67a = H55_StoneVaultArmies[bank][20]; + + local rnd12b = H55_StoneVaultArmies[bank][21] local rnd23b = H55_StoneVaultArmies[bank][22] local rnd34b = H55_StoneVaultArmies[bank][23]; + local rnd45b = H55_StoneVaultArmies[bank][24] local rnd56b = H55_StoneVaultArmies[bank][25] local rnd67b = H55_StoneVaultArmies[bank][26]; + + local combat01 = H55_StoneVaultArmies[bank][27] local combat02 = H55_StoneVaultArmies[bank][28] local combat03 = H55_StoneVaultArmies[bank][29]; + + local t01a = H55_Creatures[faction][1][rnd01]; + local t02a = H55_Creatures[faction][2][rnd02]; + local t03a = H55_Creatures[faction][3][rnd03]; + local t04a = H55_Creatures[faction][4][rnd04]; + local t05a = H55_Creatures[faction][5][rnd05]; + local t06a = H55_Creatures[faction][6][rnd06]; + local t07a = H55_Creatures[faction][7][rnd07]; + + local t01b = H55_Creatures[faction][1][rnd08]; + local t02b = H55_Creatures[faction][2][rnd09]; + local t03b = H55_Creatures[faction][3][rnd10]; + local t04b = H55_Creatures[faction][4][rnd11]; + local t05b = H55_Creatures[faction][5][rnd12]; + local t06b = H55_Creatures[faction][6][rnd13]; + local t07b = H55_Creatures[faction][7][rnd14]; + + local t12a = H55_Creatures[faction][rnd12a][rnd08]; + local t12b = H55_Creatures[faction][rnd12b][rnd07]; + local t23a = H55_Creatures[faction][rnd23a][rnd06]; + local t23b = H55_Creatures[faction][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction][rnd34a][rnd12]; + local t34b = H55_Creatures[faction][rnd34b][rnd11]; + local t45a = H55_Creatures[faction][rnd45a][rnd10]; + local t45b = H55_Creatures[faction][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction][rnd56a][rnd04]; + local t56b = H55_Creatures[faction][rnd56b][rnd03]; + local t67a = H55_Creatures[faction][rnd67a][rnd02]; + local t67b = H55_Creatures[faction][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1]))); + + if H55_BankDay <= 56 then + if combat01 == 1 or combat01 == 2 then + StartCombat(hero,nil,4,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt04,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 3 or combat01 == 4 then + StartCombat(hero,nil,4,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 5 or combat01 == 6 then + StartCombat(hero,nil,4,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 7 then + StartCombat(hero,nil,5,t02a,cnt02,t02a,cnt02,t01b,cnt01,t01a,cnt01,t01a,cnt01,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 56 and H55_BankDay <= 112 then + if combat02 == 1 or combat02 == 2 or combat02 == 3 then + StartCombat(hero,nil,5,t12a,cnt01,t12b,cnt02,t23a,cnt02,t34a,cnt03,t56a,cnt05,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 4 or combat02 == 5 or combat02 == 6 then + StartCombat(hero,nil,5,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,t45a,cnt04,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 7 or combat02 == 8 or combat02 == 9 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 10 then + StartCombat(hero,nil,6,t02a,cnt02,t02a,cnt02,t02b,cnt02,t02b,cnt02,t02a,cnt02,t02b,cnt02,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 11 then + StartCombat(hero,nil,5,t03a,cnt03,t03a,cnt03,t03b,cnt03,t03b,cnt03,t03a,cnt03,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_StoneVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Demon.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_MageVaultVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local faction = 5; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_MageVaultVisit"); + SetObjectEnabled(bank,nil); + H55_MageVaultWin(hero,1); + else + local rnd01 = H55_MageVaultArmies[bank][1] local rnd02 = H55_MageVaultArmies[bank][2] local rnd03 = H55_MageVaultArmies[bank][3]; + local rnd04 = H55_MageVaultArmies[bank][4] local rnd05 = H55_MageVaultArmies[bank][5] local rnd06 = H55_MageVaultArmies[bank][6]; + local rnd07 = H55_MageVaultArmies[bank][7] local rnd08 = H55_MageVaultArmies[bank][8] local rnd09 = H55_MageVaultArmies[bank][9]; + local rnd10 = H55_MageVaultArmies[bank][10] local rnd11 = H55_MageVaultArmies[bank][11] local rnd12 = H55_MageVaultArmies[bank][12]; + local rnd13 = H55_MageVaultArmies[bank][13] local rnd14 = H55_MageVaultArmies[bank][14]; + + local rnd12a = H55_MageVaultArmies[bank][15] local rnd23a = H55_MageVaultArmies[bank][16] local rnd34a = H55_MageVaultArmies[bank][17]; + local rnd45a = H55_MageVaultArmies[bank][18] local rnd56a = H55_MageVaultArmies[bank][19] local rnd67a = H55_MageVaultArmies[bank][20]; + + local rnd12b = H55_MageVaultArmies[bank][21] local rnd23b = H55_MageVaultArmies[bank][22] local rnd34b = H55_MageVaultArmies[bank][23]; + local rnd45b = H55_MageVaultArmies[bank][24] local rnd56b = H55_MageVaultArmies[bank][25] local rnd67b = H55_MageVaultArmies[bank][26]; + + local combat01 = H55_MageVaultArmies[bank][27] local combat02 = H55_MageVaultArmies[bank][28] local combat03 = H55_MageVaultArmies[bank][29]; + + local t01a = H55_Creatures[faction][1][rnd01]; + local t02a = H55_Creatures[faction][2][rnd02]; + local t03a = H55_Creatures[faction][3][rnd03]; + local t04a = H55_Creatures[faction][4][rnd04]; + local t05a = H55_Creatures[faction][5][rnd05]; + local t06a = H55_Creatures[faction][6][rnd06]; + local t07a = H55_Creatures[faction][7][rnd07]; + + local t01b = H55_Creatures[faction][1][rnd08]; + local t02b = H55_Creatures[faction][2][rnd09]; + local t03b = H55_Creatures[faction][3][rnd10]; + local t04b = H55_Creatures[faction][4][rnd11]; + local t05b = H55_Creatures[faction][5][rnd12]; + local t06b = H55_Creatures[faction][6][rnd13]; + local t07b = H55_Creatures[faction][7][rnd14]; + + local t12a = H55_Creatures[faction][rnd12a][rnd08]; + local t12b = H55_Creatures[faction][rnd12b][rnd07]; + local t23a = H55_Creatures[faction][rnd23a][rnd06]; + local t23b = H55_Creatures[faction][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction][rnd34a][rnd12]; + local t34b = H55_Creatures[faction][rnd34b][rnd11]; + local t45a = H55_Creatures[faction][rnd45a][rnd10]; + local t45b = H55_Creatures[faction][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction][rnd56a][rnd04]; + local t56b = H55_Creatures[faction][rnd56b][rnd03]; + local t67a = H55_Creatures[faction][rnd67a][rnd02]; + local t67b = H55_Creatures[faction][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1]))); + + if H55_BankDay <= 56 then + if combat01 == 1 or combat01 == 2 then + StartCombat(hero,nil,4,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt04,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 3 or combat01 == 4 then + StartCombat(hero,nil,4,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 5 or combat01 == 6 then + StartCombat(hero,nil,4,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 7 then + StartCombat(hero,nil,5,t02a,cnt02,t02a,cnt02,t01b,cnt01,t01a,cnt01,t01a,cnt01,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 56 and H55_BankDay <= 112 then + if combat02 == 1 or combat02 == 2 or combat02 == 3 then + StartCombat(hero,nil,5,t12a,cnt01,t12b,cnt02,t23a,cnt02,t34a,cnt03,t56a,cnt05,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 4 or combat02 == 5 or combat02 == 6 then + StartCombat(hero,nil,5,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,t45a,cnt04,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 7 or combat02 == 8 or combat02 == 9 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 10 then + StartCombat(hero,nil,6,t02a,cnt02,t02a,cnt02,t02b,cnt02,t02b,cnt02,t02a,cnt02,t02b,cnt02,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 11 then + StartCombat(hero,nil,6,t03a,cnt03,t03a,cnt03,t03b,cnt03,t03b,cnt03,t03a,cnt03,t01b,cnt01,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t04a,cnt04,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,4,t07a,cnt07,t07a,cnt07,t07b,cnt07,t04a,cnt04,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,5,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,t04a,cnt04,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_MageVaultWin","/Arenas/CombatArena/FinalCombat/Bank_Artifact.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_DwarvenTreasureVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local faction = 7; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_DwarvenTreasureVisit"); + SetObjectEnabled(bank,nil); + H55_DwarvenTreasureWin(hero,1); + else + local rnd01 = H55_DwarvenTreasureArmies[bank][1] local rnd02 = H55_DwarvenTreasureArmies[bank][2] local rnd03 = H55_DwarvenTreasureArmies[bank][3]; + local rnd04 = H55_DwarvenTreasureArmies[bank][4] local rnd05 = H55_DwarvenTreasureArmies[bank][5] local rnd06 = H55_DwarvenTreasureArmies[bank][6]; + local rnd07 = H55_DwarvenTreasureArmies[bank][7] local rnd08 = H55_DwarvenTreasureArmies[bank][8] local rnd09 = H55_DwarvenTreasureArmies[bank][9]; + local rnd10 = H55_DwarvenTreasureArmies[bank][10] local rnd11 = H55_DwarvenTreasureArmies[bank][11] local rnd12 = H55_DwarvenTreasureArmies[bank][12]; + local rnd13 = H55_DwarvenTreasureArmies[bank][13] local rnd14 = H55_DwarvenTreasureArmies[bank][14]; + + local rnd12a = H55_DwarvenTreasureArmies[bank][15] local rnd23a = H55_DwarvenTreasureArmies[bank][16] local rnd34a = H55_DwarvenTreasureArmies[bank][17]; + local rnd45a = H55_DwarvenTreasureArmies[bank][18] local rnd56a = H55_DwarvenTreasureArmies[bank][19] local rnd67a = H55_DwarvenTreasureArmies[bank][20]; + + local rnd12b = H55_DwarvenTreasureArmies[bank][21] local rnd23b = H55_DwarvenTreasureArmies[bank][22] local rnd34b = H55_DwarvenTreasureArmies[bank][23]; + local rnd45b = H55_DwarvenTreasureArmies[bank][24] local rnd56b = H55_DwarvenTreasureArmies[bank][25] local rnd67b = H55_DwarvenTreasureArmies[bank][26]; + + local combat01 = H55_DwarvenTreasureArmies[bank][27] local combat02 = H55_DwarvenTreasureArmies[bank][28] local combat03 = H55_DwarvenTreasureArmies[bank][29]; + + local t01a = H55_Creatures[faction][1][rnd01]; + local t02a = H55_Creatures[faction][2][rnd02]; + local t03a = H55_Creatures[faction][3][rnd03]; + local t04a = H55_Creatures[faction][4][rnd04]; + local t05a = H55_Creatures[faction][5][rnd05]; + local t06a = H55_Creatures[faction][6][rnd06]; + local t07a = H55_Creatures[faction][7][rnd07]; + + local t01b = H55_Creatures[faction][1][rnd08]; + local t02b = H55_Creatures[faction][2][rnd09]; + local t03b = H55_Creatures[faction][3][rnd10]; + local t04b = H55_Creatures[faction][4][rnd11]; + local t05b = H55_Creatures[faction][5][rnd12]; + local t06b = H55_Creatures[faction][6][rnd13]; + local t07b = H55_Creatures[faction][7][rnd14]; + + local t12a = H55_Creatures[faction][rnd12a][rnd08]; + local t12b = H55_Creatures[faction][rnd12b][rnd07]; + local t23a = H55_Creatures[faction][rnd23a][rnd06]; + local t23b = H55_Creatures[faction][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction][rnd34a][rnd12]; + local t34b = H55_Creatures[faction][rnd34b][rnd11]; + local t45a = H55_Creatures[faction][rnd45a][rnd10]; + local t45b = H55_Creatures[faction][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction][rnd56a][rnd04]; + local t56b = H55_Creatures[faction][rnd56b][rnd03]; + local t67a = H55_Creatures[faction][rnd67a][rnd02]; + local t67b = H55_Creatures[faction][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1]))); + + if H55_BankDay <= 56 then + if combat01 == 1 or combat01 == 2 then + StartCombat(hero,nil,4,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt04,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 3 or combat01 == 4 then + StartCombat(hero,nil,4,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 5 or combat01 == 6 then + StartCombat(hero,nil,4,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 7 then + StartCombat(hero,nil,5,t02a,cnt02,t02a,cnt02,t01b,cnt01,t01a,cnt01,t01a,cnt01,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 56 and H55_BankDay <= 112 then + if combat02 == 1 or combat02 == 2 or combat02 == 3 then + StartCombat(hero,nil,5,t12a,cnt01,t12b,cnt02,t23a,cnt02,t34a,cnt03,t56a,cnt05,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 4 or combat02 == 5 or combat02 == 6 then + StartCombat(hero,nil,5,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,t45a,cnt04,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 7 or combat02 == 8 or combat02 == 9 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 10 then + StartCombat(hero,nil,6,t02a,cnt02,t02a,cnt02,t02b,cnt02,t01b,cnt01,t01b,cnt01,t01a,cnt01,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 11 then + StartCombat(hero,nil,5,t03a,cnt03,t03a,cnt03,t03b,cnt03,t03b,cnt03,t03a,cnt03,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,6,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,t04b,cnt04,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,4,t07a,cnt07,t07a,cnt07,t07b,cnt07,t05a,cnt05,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_DwarvenTreasureWin","/Arenas/CombatArena/FinalCombat/Bank_Dwarf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_WitchTempleVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local faction = 6; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_WitchTempleVisit"); + SetObjectEnabled(bank,nil); + H55_WitchTempleWin(hero,1); + else + local rnd01 = H55_WitchTempleArmies[bank][1] local rnd02 = H55_WitchTempleArmies[bank][2] local rnd03 = H55_WitchTempleArmies[bank][3]; + local rnd04 = H55_WitchTempleArmies[bank][4] local rnd05 = H55_WitchTempleArmies[bank][5] local rnd06 = H55_WitchTempleArmies[bank][6]; + local rnd07 = H55_WitchTempleArmies[bank][7] local rnd08 = H55_WitchTempleArmies[bank][8] local rnd09 = H55_WitchTempleArmies[bank][9]; + local rnd10 = H55_WitchTempleArmies[bank][10] local rnd11 = H55_WitchTempleArmies[bank][11] local rnd12 = H55_WitchTempleArmies[bank][12]; + local rnd13 = H55_WitchTempleArmies[bank][13] local rnd14 = H55_WitchTempleArmies[bank][14]; + + local rnd12a = H55_WitchTempleArmies[bank][15] local rnd23a = H55_WitchTempleArmies[bank][16] local rnd34a = H55_WitchTempleArmies[bank][17]; + local rnd45a = H55_WitchTempleArmies[bank][18] local rnd56a = H55_WitchTempleArmies[bank][19] local rnd67a = H55_WitchTempleArmies[bank][20]; + + local rnd12b = H55_WitchTempleArmies[bank][21] local rnd23b = H55_WitchTempleArmies[bank][22] local rnd34b = H55_WitchTempleArmies[bank][23]; + local rnd45b = H55_WitchTempleArmies[bank][24] local rnd56b = H55_WitchTempleArmies[bank][25] local rnd67b = H55_WitchTempleArmies[bank][26]; + + local combat01 = H55_WitchTempleArmies[bank][27] local combat02 = H55_WitchTempleArmies[bank][28] local combat03 = H55_WitchTempleArmies[bank][29]; + + local t01a = H55_Creatures[faction][1][rnd01]; + local t02a = H55_Creatures[faction][2][rnd02]; + local t03a = H55_Creatures[faction][3][rnd03]; + local t04a = H55_Creatures[faction][4][rnd04]; + local t05a = H55_Creatures[faction][5][rnd05]; + local t06a = H55_Creatures[faction][6][rnd06]; + local t07a = H55_Creatures[faction][7][rnd07]; + + local t01b = H55_Creatures[faction][1][rnd08]; + local t02b = H55_Creatures[faction][2][rnd09]; + local t03b = H55_Creatures[faction][3][rnd10]; + local t04b = H55_Creatures[faction][4][rnd11]; + local t05b = H55_Creatures[faction][5][rnd12]; + local t06b = H55_Creatures[faction][6][rnd13]; + local t07b = H55_Creatures[faction][7][rnd14]; + + local t12a = H55_Creatures[faction][rnd12a][rnd08]; + local t12b = H55_Creatures[faction][rnd12b][rnd07]; + local t23a = H55_Creatures[faction][rnd23a][rnd06]; + local t23b = H55_Creatures[faction][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction][rnd34a][rnd12]; + local t34b = H55_Creatures[faction][rnd34b][rnd11]; + local t45a = H55_Creatures[faction][rnd45a][rnd10]; + local t45b = H55_Creatures[faction][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction][rnd56a][rnd04]; + local t56b = H55_Creatures[faction][rnd56b][rnd03]; + local t67a = H55_Creatures[faction][rnd67a][rnd02]; + local t67b = H55_Creatures[faction][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1]))); + + if H55_BankDay <= 56 then + if combat01 == 1 or combat01 == 2 then + StartCombat(hero,nil,4,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt04,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 3 or combat01 == 4 then + StartCombat(hero,nil,4,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 5 or combat01 == 6 then + StartCombat(hero,nil,4,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 7 then + StartCombat(hero,nil,5,t02a,cnt02,t02a,cnt02,t01b,cnt01,t01a,cnt01,t01a,cnt01,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 56 and H55_BankDay <= 112 then + if combat02 == 1 or combat02 == 2 or combat02 == 3 then + StartCombat(hero,nil,5,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt03,t06a,cnt06,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 4 or combat02 == 5 or combat02 == 6 then + StartCombat(hero,nil,5,t12a,cnt01,t23a,cnt02,t23b,cnt03,t45a,cnt03,t06b,cnt06,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 7 or combat02 == 8 or combat02 == 9 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,t03a,cnt03,t06a,cnt06,t05a,cnt05,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 10 then + StartCombat(hero,nil,6,t02a,cnt02,t02a,cnt02,t02b,cnt02,t02b,cnt02,t02a,cnt02,t02b,cnt02,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 11 then + StartCombat(hero,nil,6,t03a,cnt03,t03a,cnt03,t03b,cnt03,t03b,cnt03,t03a,cnt03,t02b,cnt02,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t45b,cnt04,t06a,cnt06,t56a,cnt05,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t06a,cnt06,t67a,cnt06,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t02a,cnt02,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,5,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,t02a,cnt02,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,5,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t02a,cntcr,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,4,t07a,cnt07,t07a,cnt07,t07b,cnt07,t06a,cnt06,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_WitchTempleWin","/Arenas/CombatArena/FinalCombat/Bank_Witch.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_ThicketVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local faction = 2; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_ThicketVisit"); + SetObjectEnabled(bank,nil); + H55_ThicketWin(hero,1); + else + local rnd01 = H55_ThicketArmies[bank][1] local rnd02 = H55_ThicketArmies[bank][2] local rnd03 = H55_ThicketArmies[bank][3]; + local rnd04 = H55_ThicketArmies[bank][4] local rnd05 = H55_ThicketArmies[bank][5] local rnd06 = H55_ThicketArmies[bank][6]; + local rnd07 = H55_ThicketArmies[bank][7] local rnd08 = H55_ThicketArmies[bank][8] local rnd09 = H55_ThicketArmies[bank][9]; + local rnd10 = H55_ThicketArmies[bank][10] local rnd11 = H55_ThicketArmies[bank][11] local rnd12 = H55_ThicketArmies[bank][12]; + local rnd13 = H55_ThicketArmies[bank][13] local rnd14 = H55_ThicketArmies[bank][14]; + + local rnd12a = H55_ThicketArmies[bank][15] local rnd23a = H55_ThicketArmies[bank][16] local rnd34a = H55_ThicketArmies[bank][17]; + local rnd45a = H55_ThicketArmies[bank][18] local rnd56a = H55_ThicketArmies[bank][19] local rnd67a = H55_ThicketArmies[bank][20]; + + local rnd12b = H55_ThicketArmies[bank][21] local rnd23b = H55_ThicketArmies[bank][22] local rnd34b = H55_ThicketArmies[bank][23]; + local rnd45b = H55_ThicketArmies[bank][24] local rnd56b = H55_ThicketArmies[bank][25] local rnd67b = H55_ThicketArmies[bank][26]; + + local combat01 = H55_ThicketArmies[bank][27] local combat02 = H55_ThicketArmies[bank][28] local combat03 = H55_ThicketArmies[bank][29]; + + local t01a = H55_Creatures[faction][1][rnd01]; + local t02a = H55_Creatures[faction][2][rnd02]; + local t03a = H55_Creatures[faction][3][rnd03]; + local t04a = H55_Creatures[faction][4][rnd04]; + local t05a = H55_Creatures[faction][5][rnd05]; + local t06a = H55_Creatures[faction][6][rnd06]; + local t07a = H55_Creatures[faction][7][rnd07]; + + local t01b = H55_Creatures[faction][1][rnd08]; + local t02b = H55_Creatures[faction][2][rnd09]; + local t03b = H55_Creatures[faction][3][rnd10]; + local t04b = H55_Creatures[faction][4][rnd11]; + local t05b = H55_Creatures[faction][5][rnd12]; + local t06b = H55_Creatures[faction][6][rnd13]; + local t07b = H55_Creatures[faction][7][rnd14]; + + local t12a = H55_Creatures[faction][rnd12a][rnd08]; + local t12b = H55_Creatures[faction][rnd12b][rnd07]; + local t23a = H55_Creatures[faction][rnd23a][rnd06]; + local t23b = H55_Creatures[faction][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction][rnd34a][rnd12]; + local t34b = H55_Creatures[faction][rnd34b][rnd11]; + local t45a = H55_Creatures[faction][rnd45a][rnd10]; + local t45b = H55_Creatures[faction][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction][rnd56a][rnd04]; + local t56b = H55_Creatures[faction][rnd56b][rnd03]; + local t67a = H55_Creatures[faction][rnd67a][rnd02]; + local t67b = H55_Creatures[faction][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1]))); + + if H55_BankDay <= 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_ThicketWin","/Arenas/CombatArena/FinalCombat/Bank_Treant.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_ThicketWin","/Arenas/CombatArena/FinalCombat/Bank_Treant.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_ThicketWin","/Arenas/CombatArena/FinalCombat/Bank_Treant.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_ThicketWin","/Arenas/CombatArena/FinalCombat/Bank_Treant.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_ThicketWin","/Arenas/CombatArena/FinalCombat/Bank_Treant.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_ThicketWin","/Arenas/CombatArena/FinalCombat/Bank_Treant.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_ThicketWin","/Arenas/CombatArena/FinalCombat/Bank_Treant.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_ThicketWin","/Arenas/CombatArena/FinalCombat/Bank_Treant.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_ThicketWin","/Arenas/CombatArena/FinalCombat/Bank_Treant.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_ThicketWin","/Arenas/CombatArena/FinalCombat/Bank_Treant.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_ThicketWin","/Arenas/CombatArena/FinalCombat/Bank_Treant.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_ThicketWin","/Arenas/CombatArena/FinalCombat/Bank_Treant.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_ForestTowerVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local faction = 2; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_ForestTowerVisit"); + SetObjectEnabled(bank,nil); + H55_ForestTowerWin(hero,1); + else + local rnd01 = H55_ForestTowerArmies[bank][1] local rnd02 = H55_ForestTowerArmies[bank][2] local rnd03 = H55_ForestTowerArmies[bank][3]; + local rnd04 = H55_ForestTowerArmies[bank][4] local rnd05 = H55_ForestTowerArmies[bank][5] local rnd06 = H55_ForestTowerArmies[bank][6]; + local rnd07 = H55_ForestTowerArmies[bank][7] local rnd08 = H55_ForestTowerArmies[bank][8] local rnd09 = H55_ForestTowerArmies[bank][9]; + local rnd10 = H55_ForestTowerArmies[bank][10] local rnd11 = H55_ForestTowerArmies[bank][11] local rnd12 = H55_ForestTowerArmies[bank][12]; + local rnd13 = H55_ForestTowerArmies[bank][13] local rnd14 = H55_ForestTowerArmies[bank][14]; + + local rnd12a = H55_ForestTowerArmies[bank][15] local rnd23a = H55_ForestTowerArmies[bank][16] local rnd34a = H55_ForestTowerArmies[bank][17]; + local rnd45a = H55_ForestTowerArmies[bank][18] local rnd56a = H55_ForestTowerArmies[bank][19] local rnd67a = H55_ForestTowerArmies[bank][20]; + + local rnd12b = H55_ForestTowerArmies[bank][21] local rnd23b = H55_ForestTowerArmies[bank][22] local rnd34b = H55_ForestTowerArmies[bank][23]; + local rnd45b = H55_ForestTowerArmies[bank][24] local rnd56b = H55_ForestTowerArmies[bank][25] local rnd67b = H55_ForestTowerArmies[bank][26]; + + local combat01 = H55_ForestTowerArmies[bank][27] local combat02 = H55_ForestTowerArmies[bank][28] local combat03 = H55_ForestTowerArmies[bank][29]; + + local t01a = H55_Creatures[faction][1][rnd01]; + local t02a = H55_Creatures[faction][2][rnd02]; + local t03a = H55_Creatures[faction][3][rnd03]; + local t04a = H55_Creatures[faction][4][rnd04]; + local t05a = H55_Creatures[faction][5][rnd05]; + local t06a = H55_Creatures[faction][6][rnd06]; + local t07a = H55_Creatures[faction][7][rnd07]; + + local t01b = H55_Creatures[faction][1][rnd08]; + local t02b = H55_Creatures[faction][2][rnd09]; + local t03b = H55_Creatures[faction][3][rnd10]; + local t04b = H55_Creatures[faction][4][rnd11]; + local t05b = H55_Creatures[faction][5][rnd12]; + local t06b = H55_Creatures[faction][6][rnd13]; + local t07b = H55_Creatures[faction][7][rnd14]; + + local t12a = H55_Creatures[faction][rnd12a][rnd08]; + local t12b = H55_Creatures[faction][rnd12b][rnd07]; + local t23a = H55_Creatures[faction][rnd23a][rnd06]; + local t23b = H55_Creatures[faction][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction][rnd34a][rnd12]; + local t34b = H55_Creatures[faction][rnd34b][rnd11]; + local t45a = H55_Creatures[faction][rnd45a][rnd10]; + local t45b = H55_Creatures[faction][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction][rnd56a][rnd04]; + local t56b = H55_Creatures[faction][rnd56b][rnd03]; + local t67a = H55_Creatures[faction][rnd67a][rnd02]; + local t67b = H55_Creatures[faction][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1]))); + + if H55_BankDay <= 56 then + if combat01 == 1 or combat01 == 2 then + StartCombat(hero,nil,4,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt04,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 3 or combat01 == 4 then + StartCombat(hero,nil,4,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 5 or combat01 == 6 then + StartCombat(hero,nil,4,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 7 then + StartCombat(hero,nil,5,t02a,cnt02,t02a,cnt02,t01b,cnt01,t01a,cnt01,t01a,cnt01,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 56 and H55_BankDay <= 112 then + if combat02 == 1 or combat02 == 2 or combat02 == 3 then + StartCombat(hero,nil,5,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt03,t06a,cnt06,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 4 or combat02 == 5 or combat02 == 6 then + StartCombat(hero,nil,5,t12a,cnt01,t23a,cnt02,t23b,cnt03,t45a,cnt03,t06b,cnt06,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 7 or combat02 == 8 or combat02 == 9 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 10 then + StartCombat(hero,nil,6,t01a,cnt01,t01a,cnt01,t01b,cnt01,t01b,cnt01,t01a,cnt01,t06a,cnt06,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 11 then + StartCombat(hero,nil,6,t02a,cnt02,t02a,cnt02,t03b,cnt03,t03b,cnt03,t03a,cnt03,t06b,cnt06,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t45b,cnt04,t56a,cnt06,t56a,cnt05,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt06,t67a,cnt06,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t06a,cnt06,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,5,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,t06a,cnt06,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,5,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t06a,cnt05,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,4,t07a,cnt07,t07a,cnt07,t07b,cnt07,t06a,cnt06,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,t04b,cnt04,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t06b,cnt05,nil,"H55_ForestTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Elf.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_PyramidVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local faction = 4; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_PyramidVisit"); + SetObjectEnabled(bank,nil); + H55_PyramidWin(hero,1); + else + local rnd01 = H55_PyramidArmies[bank][1] local rnd02 = H55_PyramidArmies[bank][2] local rnd03 = H55_PyramidArmies[bank][3]; + local rnd04 = H55_PyramidArmies[bank][4] local rnd05 = H55_PyramidArmies[bank][5] local rnd06 = H55_PyramidArmies[bank][6]; + local rnd07 = H55_PyramidArmies[bank][7] local rnd08 = H55_PyramidArmies[bank][8] local rnd09 = H55_PyramidArmies[bank][9]; + local rnd10 = H55_PyramidArmies[bank][10] local rnd11 = H55_PyramidArmies[bank][11] local rnd12 = H55_PyramidArmies[bank][12]; + local rnd13 = H55_PyramidArmies[bank][13] local rnd14 = H55_PyramidArmies[bank][14]; + + local rnd12a = H55_PyramidArmies[bank][15] local rnd23a = H55_PyramidArmies[bank][16] local rnd34a = H55_PyramidArmies[bank][17]; + local rnd45a = H55_PyramidArmies[bank][18] local rnd56a = H55_PyramidArmies[bank][19] local rnd67a = H55_PyramidArmies[bank][20]; + + local rnd12b = H55_PyramidArmies[bank][21] local rnd23b = H55_PyramidArmies[bank][22] local rnd34b = H55_PyramidArmies[bank][23]; + local rnd45b = H55_PyramidArmies[bank][24] local rnd56b = H55_PyramidArmies[bank][25] local rnd67b = H55_PyramidArmies[bank][26]; + + local combat01 = H55_PyramidArmies[bank][27] local combat02 = H55_PyramidArmies[bank][28] local combat03 = H55_PyramidArmies[bank][29]; + + local t01a = H55_Creatures[faction][1][rnd01]; + local t02a = H55_Creatures[faction][2][rnd02]; + local t03a = H55_Creatures[faction][3][rnd03]; + local t04a = H55_Creatures[faction][4][rnd04]; + local t05a = H55_Creatures[faction][5][rnd05]; + local t06a = H55_Creatures[faction][6][rnd06]; + local t07a = H55_Creatures[faction][7][rnd07]; + + local t01b = H55_Creatures[faction][1][rnd08]; + local t02b = H55_Creatures[faction][2][rnd09]; + local t03b = H55_Creatures[faction][3][rnd10]; + local t04b = H55_Creatures[faction][4][rnd11]; + local t05b = H55_Creatures[faction][5][rnd12]; + local t06b = H55_Creatures[faction][6][rnd13]; + local t07b = H55_Creatures[faction][7][rnd14]; + + local t12a = H55_Creatures[faction][rnd12a][rnd08]; + local t12b = H55_Creatures[faction][rnd12b][rnd07]; + local t23a = H55_Creatures[faction][rnd23a][rnd06]; + local t23b = H55_Creatures[faction][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction][rnd34a][rnd12]; + local t34b = H55_Creatures[faction][rnd34b][rnd11]; + local t45a = H55_Creatures[faction][rnd45a][rnd10]; + local t45b = H55_Creatures[faction][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction][rnd56a][rnd04]; + local t56b = H55_Creatures[faction][rnd56b][rnd03]; + local t67a = H55_Creatures[faction][rnd67a][rnd02]; + local t67b = H55_Creatures[faction][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1]))); + + if H55_BankDay <= 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_PyramidWin","/Arenas/CombatArena/FinalCombat/Bank_Pyramid.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_PyramidWin","/Arenas/CombatArena/FinalCombat/Bank_Pyramid.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_PyramidWin","/Arenas/CombatArena/FinalCombat/Bank_Pyramid.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_PyramidWin","/Arenas/CombatArena/FinalCombat/Bank_Pyramid.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_PyramidWin","/Arenas/CombatArena/FinalCombat/Bank_Pyramid.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_PyramidWin","/Arenas/CombatArena/FinalCombat/Bank_Pyramid.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_PyramidWin","/Arenas/CombatArena/FinalCombat/Bank_Pyramid.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_PyramidWin","/Arenas/CombatArena/FinalCombat/Bank_Pyramid.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_PyramidWin","/Arenas/CombatArena/FinalCombat/Bank_Pyramid.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_PyramidWin","/Arenas/CombatArena/FinalCombat/Bank_Pyramid.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_PyramidWin","/Arenas/CombatArena/FinalCombat/Bank_Pyramid.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_PyramidWin","/Arenas/CombatArena/FinalCombat/Bank_Pyramid.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_OrcTunnelVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local faction = 8; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + -- H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + -- Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + -- SetObjectEnabled(bank,not nil); + -- MakeHeroInteractWithObject(hero,bank); + -- Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_OrcTunnelVisit"); + -- SetObjectEnabled(bank,nil); + H55_OrcTunnelWin(hero,1); + else + local rnd01 = H55_OrcTunnelArmies[bank][1] local rnd02 = H55_OrcTunnelArmies[bank][2] local rnd03 = H55_OrcTunnelArmies[bank][3]; + local rnd04 = H55_OrcTunnelArmies[bank][4] local rnd05 = H55_OrcTunnelArmies[bank][5] local rnd06 = H55_OrcTunnelArmies[bank][6]; + local rnd07 = H55_OrcTunnelArmies[bank][7] local rnd08 = H55_OrcTunnelArmies[bank][8] local rnd09 = H55_OrcTunnelArmies[bank][9]; + local rnd10 = H55_OrcTunnelArmies[bank][10] local rnd11 = H55_OrcTunnelArmies[bank][11] local rnd12 = H55_OrcTunnelArmies[bank][12]; + local rnd13 = H55_OrcTunnelArmies[bank][13] local rnd14 = H55_OrcTunnelArmies[bank][14]; + + local rnd12a = H55_OrcTunnelArmies[bank][15] local rnd23a = H55_OrcTunnelArmies[bank][16] local rnd34a = H55_OrcTunnelArmies[bank][17]; + local rnd45a = H55_OrcTunnelArmies[bank][18] local rnd56a = H55_OrcTunnelArmies[bank][19] local rnd67a = H55_OrcTunnelArmies[bank][20]; + + local rnd12b = H55_OrcTunnelArmies[bank][21] local rnd23b = H55_OrcTunnelArmies[bank][22] local rnd34b = H55_OrcTunnelArmies[bank][23]; + local rnd45b = H55_OrcTunnelArmies[bank][24] local rnd56b = H55_OrcTunnelArmies[bank][25] local rnd67b = H55_OrcTunnelArmies[bank][26]; + + local combat01 = H55_OrcTunnelArmies[bank][27] local combat02 = H55_OrcTunnelArmies[bank][28] local combat03 = H55_OrcTunnelArmies[bank][29]; + + local t01a = H55_Creatures[faction][1][rnd01]; + local t02a = H55_Creatures[faction][2][rnd02]; + local t03a = H55_Creatures[faction][3][rnd03]; + local t04a = H55_Creatures[faction][4][rnd04]; + local t05a = H55_Creatures[faction][5][rnd05]; + local t06a = H55_Creatures[faction][6][rnd06]; + local t07a = H55_Creatures[faction][7][rnd07]; + + local t01b = H55_Creatures[faction][1][rnd08]; + local t02b = H55_Creatures[faction][2][rnd09]; + local t03b = H55_Creatures[faction][3][rnd10]; + local t04b = H55_Creatures[faction][4][rnd11]; + local t05b = H55_Creatures[faction][5][rnd12]; + local t06b = H55_Creatures[faction][6][rnd13]; + local t07b = H55_Creatures[faction][7][rnd14]; + + local t12a = H55_Creatures[faction][rnd12a][rnd08]; + local t12b = H55_Creatures[faction][rnd12b][rnd07]; + local t23a = H55_Creatures[faction][rnd23a][rnd06]; + local t23b = H55_Creatures[faction][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction][rnd34a][rnd12]; + local t34b = H55_Creatures[faction][rnd34b][rnd11]; + local t45a = H55_Creatures[faction][rnd45a][rnd10]; + local t45b = H55_Creatures[faction][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction][rnd56a][rnd04]; + local t56b = H55_Creatures[faction][rnd56b][rnd03]; + local t67a = H55_Creatures[faction][rnd67a][rnd02]; + local t67b = H55_Creatures[faction][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1]))); + + if H55_BankDay <= 42 then + if combat01 == 1 or combat01 == 2 then + StartCombat(hero,nil,4,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt04,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 3 or combat01 == 4 then + StartCombat(hero,nil,4,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 5 or combat01 == 6 then + StartCombat(hero,nil,4,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 7 then + StartCombat(hero,nil,5,t02a,cnt02,t02a,cnt02,t01b,cnt01,t01a,cnt01,t01a,cnt01,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 42 and H55_BankDay <= 112 then + if combat02 == 1 or combat02 == 2 or combat02 == 3 then + StartCombat(hero,nil,5,t12a,cnt01,t12b,cnt02,t23a,cnt02,t34a,cnt03,t56a,cnt05,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 4 or combat02 == 5 or combat02 == 6 then + StartCombat(hero,nil,5,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,t45a,cnt04,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 7 or combat02 == 8 or combat02 == 9 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 10 then + StartCombat(hero,nil,6,t02a,cnt02,t02a,cnt02,t02b,cnt02,t02b,cnt02,t02a,cnt02,t02b,cnt02,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 11 then + StartCombat(hero,nil,5,t03a,cnt03,t03a,cnt03,t03b,cnt03,t03b,cnt03,t03a,cnt03,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_OrcTunnelWin","/Arenas/CombatArena/FinalCombat/Bank_Orc.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_DemonTowerVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + if IsHeroInBoat(hero) == nil then + local faction = 3; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_DemonTowerVisit"); + SetObjectEnabled(bank,nil); + H55_DemonTowerWin(hero,1); + else + local rnd01 = H55_DemonTowerArmies[bank][1] local rnd02 = H55_DemonTowerArmies[bank][2] local rnd03 = H55_DemonTowerArmies[bank][3]; + local rnd04 = H55_DemonTowerArmies[bank][4] local rnd05 = H55_DemonTowerArmies[bank][5] local rnd06 = H55_DemonTowerArmies[bank][6]; + local rnd07 = H55_DemonTowerArmies[bank][7] local rnd08 = H55_DemonTowerArmies[bank][8] local rnd09 = H55_DemonTowerArmies[bank][9]; + local rnd10 = H55_DemonTowerArmies[bank][10] local rnd11 = H55_DemonTowerArmies[bank][11] local rnd12 = H55_DemonTowerArmies[bank][12]; + local rnd13 = H55_DemonTowerArmies[bank][13] local rnd14 = H55_DemonTowerArmies[bank][14]; + + local rnd12a = H55_DemonTowerArmies[bank][15] local rnd23a = H55_DemonTowerArmies[bank][16] local rnd34a = H55_DemonTowerArmies[bank][17]; + local rnd45a = H55_DemonTowerArmies[bank][18] local rnd56a = H55_DemonTowerArmies[bank][19] local rnd67a = H55_DemonTowerArmies[bank][20]; + + local rnd12b = H55_DemonTowerArmies[bank][21] local rnd23b = H55_DemonTowerArmies[bank][22] local rnd34b = H55_DemonTowerArmies[bank][23]; + local rnd45b = H55_DemonTowerArmies[bank][24] local rnd56b = H55_DemonTowerArmies[bank][25] local rnd67b = H55_DemonTowerArmies[bank][26]; + + local combat01 = H55_DemonTowerArmies[bank][27] local combat02 = H55_DemonTowerArmies[bank][28] local combat03 = H55_DemonTowerArmies[bank][29]; + + local t01a = H55_Creatures[faction][1][rnd01]; + local t02a = H55_Creatures[faction][2][rnd02]; + local t03a = H55_Creatures[faction][3][rnd03]; + local t04a = H55_Creatures[faction][4][rnd04]; + local t05a = H55_Creatures[faction][5][rnd05]; + local t06a = H55_Creatures[faction][6][rnd06]; + local t07a = H55_Creatures[faction][7][rnd07]; + + local t01b = H55_Creatures[faction][1][rnd08]; + local t02b = H55_Creatures[faction][2][rnd09]; + local t03b = H55_Creatures[faction][3][rnd10]; + local t04b = H55_Creatures[faction][4][rnd11]; + local t05b = H55_Creatures[faction][5][rnd12]; + local t06b = H55_Creatures[faction][6][rnd13]; + local t07b = H55_Creatures[faction][7][rnd14]; + + local t12a = H55_Creatures[faction][rnd12a][rnd08]; + local t12b = H55_Creatures[faction][rnd12b][rnd07]; + local t23a = H55_Creatures[faction][rnd23a][rnd06]; + local t23b = H55_Creatures[faction][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction][rnd34a][rnd12]; + local t34b = H55_Creatures[faction][rnd34b][rnd11]; + local t45a = H55_Creatures[faction][rnd45a][rnd10]; + local t45b = H55_Creatures[faction][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction][rnd56a][rnd04]; + local t56b = H55_Creatures[faction][rnd56b][rnd03]; + local t67a = H55_Creatures[faction][rnd67a][rnd02]; + local t67b = H55_Creatures[faction][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction][1]))); + + if H55_BankDay <= 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_DemonTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Urgash.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_DemonTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Urgash.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_DemonTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Urgash.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_DemonTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Urgash.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_DemonTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Urgash.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_DemonTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Urgash.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_DemonTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Urgash.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_DemonTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Urgash.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_DemonTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Urgash.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_DemonTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Urgash.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_DemonTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Urgash.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_DemonTowerWin","/Arenas/CombatArena/FinalCombat/Bank_Urgash.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; + else + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + print("Buoy activated"); + end; +end; + +function H55_StockpileVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local efaction = H55_StockpileArmies[bank][8]; + if efaction == 1 then + efaction = 8; + end; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_StockpileVisit"); + SetObjectEnabled(bank,nil); + H55_StockpileWin(hero,1); + else + local rnd01 = H55_StockpileArmies[bank][1] local rnd02 = H55_StockpileArmies[bank][2] local rnd03 = H55_StockpileArmies[bank][3]; + local rnd04 = H55_StockpileArmies[bank][4] local rnd05 = H55_StockpileArmies[bank][5] local rnd06 = H55_StockpileArmies[bank][6]; + local rnd07 = H55_StockpileArmies[bank][7]; + + local tef = H55_NeutralCreatures[1]; + local tew = H55_NeutralCreatures[2]; + local tee = H55_NeutralCreatures[3]; + local tea = H55_NeutralCreatures[4]; + local tep = H55_NeutralCreatures[5]; + + local t01a = H55_Creatures[efaction][1][rnd01]; + local t02a = H55_Creatures[efaction][2][rnd02]; + local t03a = H55_Creatures[efaction][3][rnd03]; + local t04a = H55_Creatures[efaction][4][rnd04]; + local t05a = H55_Creatures[efaction][5][rnd05]; + local t06a = H55_Creatures[efaction][6][rnd06]; + local t07a = H55_Creatures[efaction][7][rnd07]; + + local multiplier = H55_GetBankDifMultiplier(); + + local cntef = random(4)+ math.round(0.8*((multiplier*H55_NeutralCreaturesGrowth[1]))); + local cntew = random(4)+ math.round(0.8*((multiplier*H55_NeutralCreaturesGrowth[2]))); + local cntee = random(4)+ math.round(0.8*((multiplier*H55_NeutralCreaturesGrowth[3]))); + local cntea = random(4)+ math.round(0.8*((multiplier*H55_NeutralCreaturesGrowth[4]))); + + local cnt01 = random(8)+ math.round(0.8*((multiplier*H55_CreaturesGrowth[efaction][1]))); + local cnt02 = random(7)+ math.round(0.8*((multiplier*H55_CreaturesGrowth[efaction][2]))); + local cnt03 = random(6)+ math.round(0.8*((multiplier*H55_CreaturesGrowth[efaction][3]))); + local cnt04 = random(5)+ math.round(0.8*((multiplier*H55_CreaturesGrowth[efaction][4]))); + local cnt05 = random(4)+ math.round(0.8*((multiplier*H55_CreaturesGrowth[efaction][5]))); + local cnt06 = random(3)+ math.round(0.8*((multiplier*H55_CreaturesGrowth[efaction][6]))); + local cnt07 = random(2)+ math.round(0.6*((multiplier*H55_CreaturesGrowth[efaction][7]))); + local cnt08 = random(2)+ math.round(0.9*((multiplier*H55_CreaturesGrowth[efaction][7]))); + + if H55_BankDay <= 112 then + if efaction == 3 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,tef,cntef,tef,cntef,t05a,cnt05,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if efaction == 2 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,tew,cntew,tew,cntew,t05a,cnt05,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if efaction == 8 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,tee,cntee,tee,cntee,t05a,cnt05,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if efaction == 5 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,tea,cntea,tea,cntea,t05a,cnt05,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if efaction == 4 then + StartCombat(hero,nil,4,tef,cntef,tew,cntew,tee,cntee,tea,cntea,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if efaction == 3 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,tef,cntef,tef,cntef,t05a,cnt05,t06a,cnt06,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if efaction == 2 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,tew,cntew,tew,cntew,t05a,cnt05,t06a,cnt06,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if efaction == 8 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,tee,cntee,tee,cntee,t05a,cnt05,t06a,cnt06,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if efaction == 5 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,tea,cntea,tea,cntea,t05a,cnt05,t06a,cnt06,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if efaction == 4 then + StartCombat(hero,nil,5,tef,cntef,tew,cntew,tee,cntee,tea,cntea,tep,cnt07,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 224 then + if efaction == 3 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,tef,cntef,tef,cntef,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if efaction == 2 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,tew,cntew,tew,cntew,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if efaction == 8 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,tee,cntee,tee,cntee,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if efaction == 5 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,tea,cntea,tea,cntea,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if efaction == 4 then + StartCombat(hero,nil,5,tef,cntef,tew,cntew,tee,cntee,tea,cntea,tep,cnt08,nil,"H55_StockpileWin","/Arenas/CombatArena/FinalCombat/Bank_Stockpile.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_UtopiaVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_UtopiaVisit"); + SetObjectEnabled(bank,nil); + H55_UtopiaWin(hero,1); + else + local rnd01 = H55_UtopiaArmies[bank][1] local rnd02 = H55_UtopiaArmies[bank][2] local rnd03 = H55_UtopiaArmies[bank][3]; + local rnd04 = H55_UtopiaArmies[bank][4] local rnd05 = H55_UtopiaArmies[bank][5] local rnd06 = H55_UtopiaArmies[bank][6]; + local combat = H55_UtopiaArmies[bank][7]; + + local tef = H55_NeutralCreatures[1]; + local tew = H55_NeutralCreatures[2]; + local tee = H55_NeutralCreatures[3]; + local tea = H55_NeutralCreatures[4]; + local tep = H55_NeutralCreatures[5]; + + local t05a = H55_Creatures[2][5][rnd01]; + local t05b = H55_Creatures[6][5][rnd02]; + local t07a = H55_Creatures[2][7][rnd03]; + local t07b = H55_Creatures[4][7][rnd04]; + local t07c = H55_Creatures[6][7][rnd05]; + local t07d = H55_Creatures[7][7][rnd06]; + + local multiplier = math.round(H55_GetBankDifMultiplier()); + local increase = 1+(H55_BankDay/560); + + local cntef = random(4)+ math.round((increase*(multiplier*H55_NeutralCreaturesGrowth[1]))); + local cntew = random(4)+ math.round((increase*(multiplier*H55_NeutralCreaturesGrowth[2]))); + local cntee = random(4)+ math.round((increase*(multiplier*H55_NeutralCreaturesGrowth[3]))); + local cntea = random(4)+ math.round((increase*(multiplier*H55_NeutralCreaturesGrowth[4]))); + + local cnt04 = random(5)+ math.round((increase*(multiplier*5))); + local cnt05 = random(4)+ math.round((increase*(multiplier*3))); + local cnt06 = random(3)+ math.round((increase*(multiplier*2))); + local cnt07 = random(3)+ 2 + math.round((increase*(multiplier*1))); + + if combat == 1 then + StartCombat(hero,nil,5,104,cnt07,105,cnt07,172,cnt07,tef,cntef,tef,cntef,nil,"H55_UtopiaWin","/Arenas/CombatArena/FinalCombat/Bank_Utopia.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat == 2 then + StartCombat(hero,nil,5,55,cnt07,56,cnt07,151,cnt07,t05a,cnt05,t05a,cnt05,nil,"H55_UtopiaWin","/Arenas/CombatArena/FinalCombat/Bank_Utopia.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat == 3 then + StartCombat(hero,nil,5,83,cnt07,84,cnt07,144,cnt07,t05b,cnt05,t05b,cnt05,nil,"H55_UtopiaWin","/Arenas/CombatArena/FinalCombat/Bank_Utopia.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat == 4 then + StartCombat(hero,nil,5,41,cnt06,42,cnt06,158,cnt06,116,cnt05,116,cnt05,nil,"H55_UtopiaWin","/Arenas/CombatArena/FinalCombat/Bank_Utopia.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat == 5 then + StartCombat(hero,nil,4,83,cnt07,84,cnt07,41,cnt06,42,cnt06,nil,"H55_UtopiaWin","/Arenas/CombatArena/FinalCombat/Bank_Utopia.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat == 6 then + StartCombat(hero,nil,5,83,cnt07,84,cnt07,144,cnt07,115,cnt06,115,cnt06,nil,"H55_UtopiaWin","/Arenas/CombatArena/FinalCombat/Bank_Utopia.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat == 7 then + StartCombat(hero,nil,4,104,cnt07,105,cnt07,172,cnt07,91,cnt07,nil,"H55_UtopiaWin","/Arenas/CombatArena/FinalCombat/Bank_Utopia.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat == 8 then + StartCombat(hero,nil,5,151,cnt07,56,cnt07,55,cnt07,tew,cntew,tew,cntew,nil,"H55_UtopiaWin","/Arenas/CombatArena/FinalCombat/Bank_Utopia.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_AbandonedMineVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local alignment = H55_AbandonedMineArmies[bank][30]; + local faction1 = 1; + local faction2 = 2; + if alignment == 1 then faction1 = 3 faction2 = 8 end; + if alignment == 2 then faction1 = 4 faction2 = 6 end; + if alignment == 3 then faction1 = 3 faction2 = 4 end; + if alignment == 4 then faction1 = 8 faction2 = 6 end; + if alignment == 5 then faction1 = 8 faction2 = 3 end; + if alignment == 6 then faction1 = 6 faction2 = 4 end; + if alignment == 7 then faction1 = 4 faction2 = 3 end; + if alignment == 8 then faction1 = 6 faction2 = 8 end; + if H55_GetLastVisited(bank) > 1 and H55_GetPlayerLastVisited(player,bank) > 1 then + H55_MineCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + H55_AbandonedMineWin(hero,1); + else + local rnd01 = H55_AbandonedMineArmies[bank][1] local rnd02 = H55_AbandonedMineArmies[bank][2] local rnd03 = H55_AbandonedMineArmies[bank][3]; + local rnd04 = H55_AbandonedMineArmies[bank][4] local rnd05 = H55_AbandonedMineArmies[bank][5] local rnd06 = H55_AbandonedMineArmies[bank][6]; + local rnd07 = H55_AbandonedMineArmies[bank][7] local rnd08 = H55_AbandonedMineArmies[bank][8] local rnd09 = H55_AbandonedMineArmies[bank][9]; + local rnd10 = H55_AbandonedMineArmies[bank][10] local rnd11 = H55_AbandonedMineArmies[bank][11] local rnd12 = H55_AbandonedMineArmies[bank][12]; + local rnd13 = H55_AbandonedMineArmies[bank][13] local rnd14 = H55_AbandonedMineArmies[bank][14]; + + local rnd12a = H55_AbandonedMineArmies[bank][15] local rnd23a = H55_AbandonedMineArmies[bank][16] local rnd34a = H55_AbandonedMineArmies[bank][17]; + local rnd45a = H55_AbandonedMineArmies[bank][18] local rnd56a = H55_AbandonedMineArmies[bank][19] local rnd67a = H55_AbandonedMineArmies[bank][20]; + + local rnd12b = H55_AbandonedMineArmies[bank][21] local rnd23b = H55_AbandonedMineArmies[bank][22] local rnd34b = H55_AbandonedMineArmies[bank][23]; + local rnd45b = H55_AbandonedMineArmies[bank][24] local rnd56b = H55_AbandonedMineArmies[bank][25] local rnd67b = H55_AbandonedMineArmies[bank][26]; + + local combat01 = H55_AbandonedMineArmies[bank][27] local combat02 = H55_AbandonedMineArmies[bank][28] local combat03 = H55_AbandonedMineArmies[bank][29]; + + local t01a = H55_Creatures[faction1][1][rnd01]; + local t02a = H55_Creatures[faction2][2][rnd02]; + local t03a = H55_Creatures[faction1][3][rnd03]; + local t04a = H55_Creatures[faction2][4][rnd04]; + local t05a = H55_Creatures[faction1][5][rnd05]; + local t06a = H55_Creatures[faction2][6][rnd06]; + local t07a = H55_Creatures[faction1][7][rnd07]; + + local t01b = H55_Creatures[faction2][1][rnd08]; + local t02b = H55_Creatures[faction1][2][rnd09]; + local t03b = H55_Creatures[faction2][3][rnd10]; + local t04b = H55_Creatures[faction1][4][rnd11]; + local t05b = H55_Creatures[faction2][5][rnd12]; + local t06b = H55_Creatures[faction1][6][rnd13]; + local t07b = H55_Creatures[faction2][7][rnd14]; + + local t12a = H55_Creatures[faction1][rnd12a][rnd08]; + local t12b = H55_Creatures[faction2][rnd12b][rnd07]; + local t23a = H55_Creatures[faction1][rnd23a][rnd06]; + local t23b = H55_Creatures[faction2][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction2][rnd34a][rnd12]; + local t34b = H55_Creatures[faction1][rnd34b][rnd11]; + local t45a = H55_Creatures[faction2][rnd45a][rnd10]; + local t45b = H55_Creatures[faction1][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction2][rnd56a][rnd04]; + local t56b = H55_Creatures[faction1][rnd56b][rnd03]; + local t67a = H55_Creatures[faction1][rnd67a][rnd02]; + local t67b = H55_Creatures[faction2][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction1][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction1][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction1][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction1][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction1][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction1][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction1][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction1][1]))); + + if H55_BankDay <= 56 then + if combat01 == 1 or combat01 == 2 then + StartCombat(hero,nil,4,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt04,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 3 or combat01 == 4 then + StartCombat(hero,nil,4,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 5 or combat01 == 6 then + StartCombat(hero,nil,4,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 7 then + StartCombat(hero,nil,5,t01a,cnt01,t01a,cnt01,t01b,cnt01,t01b,cnt01,t01a,cnt01,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 56 and H55_BankDay <= 112 then + if combat02 == 1 or combat02 == 2 or combat02 == 3 then + StartCombat(hero,nil,5,t12a,cnt01,t12b,cnt02,t23a,cnt02,t34a,cnt03,t56a,cnt05,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 4 or combat02 == 5 or combat02 == 6 then + StartCombat(hero,nil,5,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,t45a,cnt04,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 7 or combat02 == 8 or combat02 == 9 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 10 then + StartCombat(hero,nil,6,t02a,cnt02,t02a,cnt02,t02b,cnt02,t02b,cnt02,t02a,cnt02,t02b,cnt02,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 11 then + StartCombat(hero,nil,5,t03a,cnt03,t03a,cnt03,t03b,cnt03,t03b,cnt03,t03a,cnt03,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_AbandonedMineWin","/Arenas/CombatArena/FinalCombat/Bank_Mine.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_UnkemptVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local alignment = H55_UnkemptArmies[bank][30]; + local faction1 = 1; + local faction2 = 1; + if IsHeroInBoat(hero) then + if alignment == 1 then faction1 = 1 faction2 = 2 end; + if alignment == 2 then faction1 = 5 faction2 = 7 end; + if alignment == 3 then faction1 = 1 faction2 = 7 end; + if alignment == 4 then faction1 = 2 faction2 = 5 end; + if alignment == 5 then faction1 = 2 faction2 = 1 end; + if alignment == 6 then faction1 = 7 faction2 = 5 end; + if alignment == 7 then faction1 = 7 faction2 = 1 end; + if alignment == 8 then faction1 = 5 faction2 = 2 end; + end; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_UnkemptVisit"); + SetObjectEnabled(bank,nil); + H55_UnkemptWin(hero,1); + else + local rnd01 = H55_UnkemptArmies[bank][1] local rnd02 = H55_UnkemptArmies[bank][2] local rnd03 = H55_UnkemptArmies[bank][3]; + local rnd04 = H55_UnkemptArmies[bank][4] local rnd05 = H55_UnkemptArmies[bank][5] local rnd06 = H55_UnkemptArmies[bank][6]; + local rnd07 = H55_UnkemptArmies[bank][7] local rnd08 = H55_UnkemptArmies[bank][8] local rnd09 = H55_UnkemptArmies[bank][9]; + local rnd10 = H55_UnkemptArmies[bank][10] local rnd11 = H55_UnkemptArmies[bank][11] local rnd12 = H55_UnkemptArmies[bank][12]; + local rnd13 = H55_UnkemptArmies[bank][13] local rnd14 = H55_UnkemptArmies[bank][14]; + + local rnd12a = H55_UnkemptArmies[bank][15] local rnd23a = H55_UnkemptArmies[bank][16] local rnd34a = H55_UnkemptArmies[bank][17]; + local rnd45a = H55_UnkemptArmies[bank][18] local rnd56a = H55_UnkemptArmies[bank][19] local rnd67a = H55_UnkemptArmies[bank][20]; + + local rnd12b = H55_UnkemptArmies[bank][21] local rnd23b = H55_UnkemptArmies[bank][22] local rnd34b = H55_UnkemptArmies[bank][23]; + local rnd45b = H55_UnkemptArmies[bank][24] local rnd56b = H55_UnkemptArmies[bank][25] local rnd67b = H55_UnkemptArmies[bank][26]; + + local combat01 = H55_UnkemptArmies[bank][27] local combat02 = H55_UnkemptArmies[bank][28] local combat03 = H55_UnkemptArmies[bank][29]; + + local t01a = H55_Creatures[faction1][1][rnd01]; + local t02a = H55_Creatures[faction2][2][rnd02]; + local t03a = H55_Creatures[faction1][3][rnd03]; + local t04a = H55_Creatures[faction2][4][rnd04]; + local t05a = H55_Creatures[faction1][5][rnd05]; + local t06a = H55_Creatures[faction2][6][rnd06]; + local t07a = H55_Creatures[faction1][7][rnd07]; + + local t01b = H55_Creatures[faction2][1][rnd08]; + local t02b = H55_Creatures[faction1][2][rnd09]; + local t03b = H55_Creatures[faction2][3][rnd10]; + local t04b = H55_Creatures[faction1][4][rnd11]; + local t05b = H55_Creatures[faction2][5][rnd12]; + local t06b = H55_Creatures[faction1][6][rnd13]; + local t07b = H55_Creatures[faction2][7][rnd14]; + + local t12a = H55_Creatures[faction1][rnd12a][rnd08]; + local t12b = H55_Creatures[faction2][rnd12b][rnd07]; + local t23a = H55_Creatures[faction1][rnd23a][rnd06]; + local t23b = H55_Creatures[faction2][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction2][rnd34a][rnd12]; + local t34b = H55_Creatures[faction1][rnd34b][rnd11]; + local t45a = H55_Creatures[faction2][rnd45a][rnd10]; + local t45b = H55_Creatures[faction1][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction2][rnd56a][rnd04]; + local t56b = H55_Creatures[faction1][rnd56b][rnd03]; + local t67a = H55_Creatures[faction1][rnd67a][rnd02]; + local t67b = H55_Creatures[faction2][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction1][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction1][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction1][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction1][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction1][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction1][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction1][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction1][1]))); + + if IsHeroInBoat(hero) then + if H55_BankDay <= 56 then + if combat01 == 1 or combat01 == 2 then + StartCombat(hero,nil,4,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt04,nil,"H55_UnkemptWin",nil,1); + end; + if combat01 == 3 or combat01 == 4 then + StartCombat(hero,nil,4,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,nil,"H55_UnkemptWin",nil,1); + end; + if combat01 == 5 or combat01 == 6 then + StartCombat(hero,nil,4,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,nil,"H55_UnkemptWin",nil,1); + end; + if combat01 == 7 then + StartCombat(hero,nil,5,t01a,cnt01,t01a,cnt01,t01b,cnt01,t01b,cnt01,t01a,cnt01,nil,"H55_UnkemptWin",nil,1); + end; + end; + if H55_BankDay > 56 and H55_BankDay <= 112 then + if combat02 == 1 or combat02 == 2 or combat02 == 3 then + StartCombat(hero,nil,5,t12a,cnt01,t12b,cnt02,t23a,cnt02,t34a,cnt03,t56a,cnt05,nil,"H55_UnkemptWin",nil,1); + end; + if combat02 == 4 or combat02 == 5 or combat02 == 6 then + StartCombat(hero,nil,5,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,t45a,cnt04,nil,"H55_UnkemptWin",nil,1); + end; + if combat02 == 7 or combat02 == 8 or combat02 == 9 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,nil,"H55_UnkemptWin",nil,1); + end; + if combat02 == 10 then + StartCombat(hero,nil,6,t02a,cnt02,t02a,cnt02,t02b,cnt02,t02b,cnt02,t02a,cnt02,t02b,cnt02,nil,"H55_UnkemptWin",nil,1); + end; + if combat02 == 11 then + StartCombat(hero,nil,5,t03a,cnt03,t03a,cnt03,t03b,cnt03,t03b,cnt03,t03a,cnt03,nil,"H55_UnkemptWin",nil,1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_UnkemptWin",nil,1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_UnkemptWin",nil,1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_UnkemptWin",nil,1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_UnkemptWin",nil,1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_UnkemptWin",nil,1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_UnkemptWin",nil,1); + end; + end; + if H55_BankDay > 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_UnkemptWin",nil,1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_UnkemptWin",nil,1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_UnkemptWin",nil,1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_UnkemptWin",nil,1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_UnkemptWin",nil,1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_UnkemptWin",nil,1); + end; + end; + else + if H55_BankDay <= 56 then + if combat01 == 1 or combat01 == 2 then + StartCombat(hero,nil,4,t12a,cnt01,t12b,cnt02,t23a,cnt02,t45a,cnt04,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 3 or combat01 == 4 then + StartCombat(hero,nil,4,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 5 or combat01 == 6 then + StartCombat(hero,nil,4,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat01 == 7 then + StartCombat(hero,nil,5,t02a,cnt02,t02a,cnt02,t01b,cnt01,t01a,cnt01,t01a,cnt01,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 56 and H55_BankDay <= 112 then + if combat02 == 1 or combat02 == 2 or combat02 == 3 then + StartCombat(hero,nil,5,t12a,cnt01,t12b,cnt02,t23a,cnt02,t34a,cnt03,t56a,cnt05,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 4 or combat02 == 5 or combat02 == 6 then + StartCombat(hero,nil,5,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,t45a,cnt04,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 7 or combat02 == 8 or combat02 == 9 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 10 then + StartCombat(hero,nil,6,t02a,cnt02,t02a,cnt02,t02b,cnt02,t02b,cnt02,t02a,cnt02,t02b,cnt02,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat02 == 11 then + StartCombat(hero,nil,5,t03a,cnt03,t03a,cnt03,t03b,cnt03,t03b,cnt03,t03a,cnt03,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_TowerWin","/Arenas/CombatArena/FinalCombat/Bank_Tower.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_DemolishVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local alignment = H55_DemolishArmies[bank][30]; + local faction1 = 4; + local faction2 = 4; + if alignment == 1 then faction1 = 3 faction2 = 8 end; + if alignment == 2 then faction1 = 4 faction2 = 6 end; + if alignment == 3 then faction1 = 3 faction2 = 4 end; + if alignment == 4 then faction1 = 8 faction2 = 6 end; + if alignment == 5 then faction1 = 8 faction2 = 3 end; + if alignment == 6 then faction1 = 6 faction2 = 4 end; + if alignment == 7 then faction1 = 4 faction2 = 3 end; + if alignment == 8 then faction1 = 6 faction2 = 8 end; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_DemolishVisit"); + SetObjectEnabled(bank,nil); + H55_DemolishWin(hero,1); + else + local rnd01 = H55_DemolishArmies[bank][1] local rnd02 = H55_DemolishArmies[bank][2] local rnd03 = H55_DemolishArmies[bank][3]; + local rnd04 = H55_DemolishArmies[bank][4] local rnd05 = H55_DemolishArmies[bank][5] local rnd06 = H55_DemolishArmies[bank][6]; + local rnd07 = H55_DemolishArmies[bank][7] local rnd08 = H55_DemolishArmies[bank][8] local rnd09 = H55_DemolishArmies[bank][9]; + local rnd10 = H55_DemolishArmies[bank][10] local rnd11 = H55_DemolishArmies[bank][11] local rnd12 = H55_DemolishArmies[bank][12]; + local rnd13 = H55_DemolishArmies[bank][13] local rnd14 = H55_DemolishArmies[bank][14]; + + local rnd12a = H55_DemolishArmies[bank][15] local rnd23a = H55_DemolishArmies[bank][16] local rnd34a = H55_DemolishArmies[bank][17]; + local rnd45a = H55_DemolishArmies[bank][18] local rnd56a = H55_DemolishArmies[bank][19] local rnd67a = H55_DemolishArmies[bank][20]; + + local rnd12b = H55_DemolishArmies[bank][21] local rnd23b = H55_DemolishArmies[bank][22] local rnd34b = H55_DemolishArmies[bank][23]; + local rnd45b = H55_DemolishArmies[bank][24] local rnd56b = H55_DemolishArmies[bank][25] local rnd67b = H55_DemolishArmies[bank][26]; + + local combat01 = H55_DemolishArmies[bank][27] local combat02 = H55_DemolishArmies[bank][28] local combat03 = H55_DemolishArmies[bank][29]; + + local t01a = H55_Creatures[faction1][1][rnd01]; + local t02a = H55_Creatures[faction2][2][rnd02]; + local t03a = H55_Creatures[faction1][3][rnd03]; + local t04a = H55_Creatures[faction2][4][rnd04]; + local t05a = H55_Creatures[faction1][5][rnd05]; + local t06a = H55_Creatures[faction2][6][rnd06]; + local t07a = H55_Creatures[faction1][7][rnd07]; + + local t01b = H55_Creatures[faction2][1][rnd08]; + local t02b = H55_Creatures[faction1][2][rnd09]; + local t03b = H55_Creatures[faction2][3][rnd10]; + local t04b = H55_Creatures[faction1][4][rnd11]; + local t05b = H55_Creatures[faction2][5][rnd12]; + local t06b = H55_Creatures[faction1][6][rnd13]; + local t07b = H55_Creatures[faction2][7][rnd14]; + + local t12a = H55_Creatures[faction1][rnd12a][rnd08]; + local t12b = H55_Creatures[faction2][rnd12b][rnd07]; + local t23a = H55_Creatures[faction1][rnd23a][rnd06]; + local t23b = H55_Creatures[faction2][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction2][rnd34a][rnd12]; + local t34b = H55_Creatures[faction1][rnd34b][rnd11]; + local t45a = H55_Creatures[faction2][rnd45a][rnd10]; + local t45b = H55_Creatures[faction1][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction2][rnd56a][rnd04]; + local t56b = H55_Creatures[faction1][rnd56b][rnd03]; + local t67a = H55_Creatures[faction1][rnd67a][rnd02]; + local t67b = H55_Creatures[faction2][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction1][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction1][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction1][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction1][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction1][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction1][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction1][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction1][1]))); + + if IsHeroInBoat(hero) then + if H55_BankDay <= 112 then + if combat02 == 1 or combat02 == 2 or combat02 == 3 then + StartCombat(hero,nil,5,t12a,cnt01,t12b,cnt02,t23a,cnt02,t34a,cnt03,t56a,cnt05,nil,"H55_DemolishWin",nil,1); + end; + if combat02 == 4 or combat02 == 5 or combat02 == 6 then + StartCombat(hero,nil,5,t12a,cnt01,t23a,cnt02,t23b,cnt03,t34a,cnt03,t45a,cnt04,nil,"H55_DemolishWin",nil,1); + end; + if combat02 == 7 or combat02 == 8 or combat02 == 9 then + StartCombat(hero,nil,5,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,nil,"H55_DemolishWin",nil,1); + end; + if combat02 == 10 then + StartCombat(hero,nil,6,t02a,cnt02,t02a,cnt02,t02b,cnt02,t02b,cnt02,t02a,cnt02,t02b,cnt02,nil,"H55_DemolishWin",nil,1); + end; + if combat02 == 11 then + StartCombat(hero,nil,5,t03a,cnt03,t03a,cnt03,t03b,cnt03,t03b,cnt03,t03a,cnt03,nil,"H55_DemolishWin",nil,1); + end; + end; + if H55_BankDay > 112 and H55_BankDay <= 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_DemolishWin",nil,1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_DemolishWin",nil,1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_DemolishWin",nil,1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_DemolishWin",nil,1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_DemolishWin",nil,1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_DemolishWin",nil,1); + end; + end; + if H55_BankDay > 224 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_DemolishWin",nil,1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_DemolishWin",nil,1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_DemolishWin",nil,1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_DemolishWin",nil,1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_DemolishWin",nil,1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_DemolishWin",nil,1); + end; + end; + else + if H55_BankDay <= 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_MausoleumWin","/Arenas/CombatArena/FinalCombat/Bank_Mausoleum.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_MausoleumWin","/Arenas/CombatArena/FinalCombat/Bank_Mausoleum.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_MausoleumWin","/Arenas/CombatArena/FinalCombat/Bank_Mausoleum.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_MausoleumWin","/Arenas/CombatArena/FinalCombat/Bank_Mausoleum.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_MausoleumWin","/Arenas/CombatArena/FinalCombat/Bank_Mausoleum.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_MausoleumWin","/Arenas/CombatArena/FinalCombat/Bank_Mausoleum.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_MausoleumWin","/Arenas/CombatArena/FinalCombat/Bank_Mausoleum.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_MausoleumWin","/Arenas/CombatArena/FinalCombat/Bank_Mausoleum.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_MausoleumWin","/Arenas/CombatArena/FinalCombat/Bank_Mausoleum.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_MausoleumWin","/Arenas/CombatArena/FinalCombat/Bank_Mausoleum.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_MausoleumWin","/Arenas/CombatArena/FinalCombat/Bank_Mausoleum.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_MausoleumWin","/Arenas/CombatArena/FinalCombat/Bank_Mausoleum.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +function H55_SunkenTempleVisit(hero,bank) + local player = GetObjectOwner(hero); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_CheckAdvMapObjQueue,player) else H55_BankActions[player] = 0 end; + if H55_BankActions[player] == 1 then return nil end; + local alignment = H55_SunkenTempleArmies[bank][30]; + local faction1 = 5; + local faction2 = 5; + if alignment == 1 then faction1 = 1 faction2 = 2 end; + if alignment == 2 then faction1 = 5 faction2 = 7 end; + if alignment == 3 then faction1 = 1 faction2 = 7 end; + if alignment == 4 then faction1 = 2 faction2 = 5 end; + if alignment == 5 then faction1 = 2 faction2 = 1 end; + if alignment == 6 then faction1 = 7 faction2 = 5 end; + if alignment == 7 then faction1 = 7 faction2 = 1 end; + if alignment == 8 then faction1 = 5 faction2 = 2 end; + if H55_GetLastVisited(bank) > 6 and H55_GetPlayerLastVisited(player,bank) > 55 then + H55_BankCurrentPlayerVisit[player] = bank; + if H55_IsThisAIPlayer(player) == 1 then + --SetAIHeroAttractor(bank,hero,-1); + H55_AmountAIBankVisits = H55_AmountAIBankVisits+1; + Trigger(OBJECT_TOUCH_TRIGGER,bank,nil); + SetObjectEnabled(bank,not nil); + MakeHeroInteractWithObject(hero,bank); + Trigger(OBJECT_TOUCH_TRIGGER,bank,"H55_SunkenTempleVisit"); + SetObjectEnabled(bank,nil); + H55_SunkenTempleWin(hero,1); + else + local rnd01 = H55_SunkenTempleArmies[bank][1] local rnd02 = H55_SunkenTempleArmies[bank][2] local rnd03 = H55_SunkenTempleArmies[bank][3]; + local rnd04 = H55_SunkenTempleArmies[bank][4] local rnd05 = H55_SunkenTempleArmies[bank][5] local rnd06 = H55_SunkenTempleArmies[bank][6]; + local rnd07 = H55_SunkenTempleArmies[bank][7] local rnd08 = H55_SunkenTempleArmies[bank][8] local rnd09 = H55_SunkenTempleArmies[bank][9]; + local rnd10 = H55_SunkenTempleArmies[bank][10] local rnd11 = H55_SunkenTempleArmies[bank][11] local rnd12 = H55_SunkenTempleArmies[bank][12]; + local rnd13 = H55_SunkenTempleArmies[bank][13] local rnd14 = H55_SunkenTempleArmies[bank][14]; + + local rnd12a = H55_SunkenTempleArmies[bank][15] local rnd23a = H55_SunkenTempleArmies[bank][16] local rnd34a = H55_SunkenTempleArmies[bank][17]; + local rnd45a = H55_SunkenTempleArmies[bank][18] local rnd56a = H55_SunkenTempleArmies[bank][19] local rnd67a = H55_SunkenTempleArmies[bank][20]; + + local rnd12b = H55_SunkenTempleArmies[bank][21] local rnd23b = H55_SunkenTempleArmies[bank][22] local rnd34b = H55_SunkenTempleArmies[bank][23]; + local rnd45b = H55_SunkenTempleArmies[bank][24] local rnd56b = H55_SunkenTempleArmies[bank][25] local rnd67b = H55_SunkenTempleArmies[bank][26]; + + local combat01 = H55_SunkenTempleArmies[bank][27] local combat02 = H55_SunkenTempleArmies[bank][28] local combat03 = H55_SunkenTempleArmies[bank][29]; + + local t01a = H55_Creatures[faction1][1][rnd01]; + local t02a = H55_Creatures[faction2][2][rnd02]; + local t03a = H55_Creatures[faction1][3][rnd03]; + local t04a = H55_Creatures[faction2][4][rnd04]; + local t05a = H55_Creatures[faction1][5][rnd05]; + local t06a = H55_Creatures[faction2][6][rnd06]; + local t07a = H55_Creatures[faction1][7][rnd07]; + + local t01b = H55_Creatures[faction2][1][rnd08]; + local t02b = H55_Creatures[faction1][2][rnd09]; + local t03b = H55_Creatures[faction2][3][rnd10]; + local t04b = H55_Creatures[faction1][4][rnd11]; + local t05b = H55_Creatures[faction2][5][rnd12]; + local t06b = H55_Creatures[faction1][6][rnd13]; + local t07b = H55_Creatures[faction2][7][rnd14]; + + local t12a = H55_Creatures[faction1][rnd12a][rnd08]; + local t12b = H55_Creatures[faction2][rnd12b][rnd07]; + local t23a = H55_Creatures[faction1][rnd23a][rnd06]; + local t23b = H55_Creatures[faction2][rnd23b][rnd05]; + + local t34a = H55_Creatures[faction2][rnd34a][rnd12]; + local t34b = H55_Creatures[faction1][rnd34b][rnd11]; + local t45a = H55_Creatures[faction2][rnd45a][rnd10]; + local t45b = H55_Creatures[faction1][rnd45b][rnd09]; + + local t56a = H55_Creatures[faction2][rnd56a][rnd04]; + local t56b = H55_Creatures[faction1][rnd56b][rnd03]; + local t67a = H55_Creatures[faction1][rnd67a][rnd02]; + local t67b = H55_Creatures[faction2][rnd67b][rnd01]; + + local multiplier = H55_GetBankDifMultiplier() + + local cnt01 = random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction1][1])); + local cnt02 = random(7)+ math.round((multiplier*H55_CreaturesGrowth[faction1][2])); + local cnt03 = random(6)+ math.round((multiplier*H55_CreaturesGrowth[faction1][3])); + local cnt04 = random(5)+ math.round((multiplier*H55_CreaturesGrowth[faction1][4])); + local cnt05 = random(4)+ math.round((multiplier*H55_CreaturesGrowth[faction1][5])); + local cnt06 = random(3)+ math.round((multiplier*H55_CreaturesGrowth[faction1][6])); + local cnt07 = random(2)+ math.round((multiplier*H55_CreaturesGrowth[faction1][7])); + local cntcr = 5*(random(8)+ math.round((multiplier*H55_CreaturesGrowth[faction1][1]))); + + if IsHeroInBoat(hero) then + if H55_BankDay <= 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenW.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenW.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenW.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenW.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenW.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenW.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenW.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenW.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenW.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenW.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenW.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenW.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + else + if H55_BankDay <= 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,6,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34b,cnt04,t45a,cnt04,t56a,cnt05,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenL.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,6,t12a,cnt01,t12b,cnt01,t23a,cnt02,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenL.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,6,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenL.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,5,t04a,cnt04,t04a,cnt04,t04b,cnt04,t04b,cnt04,t04a,cnt04,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenL.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t05a,cnt05,t05a,cnt05,t05b,cnt05,t05b,cnt05,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenL.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t01a,cntcr,t01a,cntcr,t01b,cntcr,t01b,cntcr,t01a,cntcr,t01b,cntcr,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenL.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + if H55_BankDay > 112 then + if combat03 == 1 or combat03 == 2 or combat03 == 3 then + StartCombat(hero,nil,7,t12a,cnt01,t23a,cnt02,t34a,cnt03,t34a,cnt03,t45a,cnt04,t56a,cnt05,t67a,cnt06,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenL.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 4 or combat03 == 5 or combat03 == 6 then + StartCombat(hero,nil,7,t12a,cnt01,t12b,cnt01,t23a,cnt02,t34a,cnt03,t45a,cnt04,t67a,cnt06,t67b,cnt07,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenL.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 7 or combat03 == 8 or combat03 == 9 then + StartCombat(hero,nil,7,t01a,cnt01,t02a,cnt02,t03a,cnt03,t04a,cnt04,t05a,cnt05,t06a,cnt06,t07a,cnt07,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenL.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 10 then + StartCombat(hero,nil,3,t07a,cnt07,t07a,cnt07,t07b,cnt07,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenL.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 11 then + StartCombat(hero,nil,4,t06a,cnt06,t06a,cnt06,t06b,cnt06,t06b,cnt06,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenL.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + if combat03 == 12 then + StartCombat(hero,nil,6,t02a,cntcr,t02a,cntcr,t02b,cntcr,t02b,cntcr,t02a,cntcr,t02b,cntcr,nil,"H55_SunkenTempleWin", + "/Arenas/CombatArena/FinalCombat/Bank_SunkenL.(AdvMapTownCombat).xdb#xpointer(/AdvMapTownCombat)",1); + end; + end; + end; + end; + else + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; +end; + +--Combat scripts for Military posts + +-- function H55_FortressMPVisit(hero,bank) + -- H55_MPFight(hero,bank,7); +-- end; + +-- function H55_SylvanMPVisit(hero,bank) + -- H55_MPFight(hero,bank,2); +-- end; + +-- function H55_HavenMPVisit(hero,bank) + -- H55_MPFight(hero,bank,1); +-- end; + +-- function H55_StrongholdMPVisit(hero,bank) + -- H55_MPFight(hero,bank,8); +-- end; + +-- function H55_AcademyMPVisit(hero,bank) + -- H55_MPFight(hero,bank,5); +-- end; + +-- function H55_DungeonMPVisit(hero,bank) + -- H55_MPFight(hero,bank,6); +-- end; + +-- function H55_InfernoMPVisit(hero,bank) + -- H55_MPFight(hero,bank,3); +-- end; + +-- function H55_NecropolisMPVisit(hero,bank) + -- H55_MPFight(hero,bank,4); +-- end; + +-- function H55_MPFight(hero,bank,faction) + -- local player = GetObjectOwner(hero); + -- H55_MPCurrentPlayerVisit[player] = bank; + -- if H55_IsThisAIPlayer(player) == 1 then + -- H55_MPFightWin(hero,1); + -- else + -- local rnd01 = H55_MPFightArmies[bank][1] local rnd02 = H55_MPFightArmies[bank][2] local rnd03 = H55_MPFightArmies[bank][3]; + -- local rnd04 = H55_MPFightArmies[bank][4] local rnd05 = H55_MPFightArmies[bank][5] local rnd06 = H55_MPFightArmies[bank][6]; + -- local rnd07 = H55_MPFightArmies[bank][7]; + + -- local rnd01 = random(3)+1; + -- local rnd02 = random(3)+1; + -- local rnd03 = random(3)+1; + -- local rnd04 = random(3)+1; + -- local rnd05 = random(3)+1; + -- local rnd06 = random(3)+1; + -- local rnd07 = random(3)+1; + -- local combat = random(4)+1; + + -- local t01a = H55_Creatures[faction][1][rnd01]; + -- local t02a = H55_Creatures[faction][2][rnd02]; + -- local t03a = H55_Creatures[faction][3][rnd03]; + -- local t04a = H55_Creatures[faction][4][rnd04]; + -- local t05a = H55_Creatures[faction][5][rnd05]; + -- local t06a = H55_Creatures[faction][6][rnd06]; + -- local t07a = H55_Creatures[faction][7][rnd07]; + + -- local multiplier = H55_GetBankDifMultiplier() + + -- local cnt01 = random(8)+(0.5*(math.round((multiplier*H55_CreaturesGrowth[faction][1])))); + -- local cnt02 = random(7)+(0.5*(math.round((multiplier*H55_CreaturesGrowth[faction][2])))); + -- local cnt03 = random(6)+(0.5*(math.round((multiplier*H55_CreaturesGrowth[faction][3])))); + -- local cnt04 = random(5)+(0.5*(math.round((multiplier*H55_CreaturesGrowth[faction][4])))); + -- local cnt05 = random(4)+(0.5*(math.round((multiplier*H55_CreaturesGrowth[faction][5])))); + -- local cnt06 = random(3)+(0.5*(math.round((multiplier*H55_CreaturesGrowth[faction][6])))); + -- local cnt07 = random(2)+(0.5*(math.round((multiplier*H55_CreaturesGrowth[faction][7])))); + + -- if combat == 1 then + -- StartCombat(hero,nil,4,t01a,cnt01,t02a,cnt02,t05a,cnt05,t07a,cnt07,nil,"H55_MPFightWin",nil,1); + -- end; + -- if combat == 2 then + -- StartCombat(hero,nil,4,t01a,cnt01,t03a,cnt03,t04a,cnt04,t07a,cnt07,nil,"H55_MPFightWin",nil,1); + -- end; + -- if combat == 3 then + -- StartCombat(hero,nil,4,t01a,cnt01,t04a,cnt04,t05a,cnt05,t06a,cnt06,nil,"H55_MPFightWin",nil,1); + -- end; + -- if combat == 4 then + -- StartCombat(hero,nil,4,t02a,cnt02,t03a,cnt03,t05a,cnt05,t06a,cnt06,nil,"H55_MPFightWin",nil,1); + -- end; + -- end; +-- end; + +-------------------------------------------------------------------------------------------------------------------------------------------- +--AFTERMATH +-------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_WagonWin01(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + local x,y,z = GetObjectPosition(bank); + if result ~= nil then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + H55_ArtifactAward(hero,1); + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_WagonWin02(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + local x,y,z = GetObjectPosition(bank); + if result ~= nil then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + H55_GoldReward(hero,0.1); + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_WagonWin03(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local rndrestype = H55_WagonChoices[bank][4]; + local rndamount = H55_WagonChoices[bank][5]; + -- if HasHeroSkill(hero,PERK_LUCKY_STRIKE) then + -- rndamount = rndamount+1; + -- end; + local day = GetDate(DAY); + local x,y,z = GetObjectPosition(bank); + if rndrestype == 6 then rndamount = rndamount*100 end; + if result ~= nil then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + H55_GiveResources(player,rndrestype,rndamount,hero); + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_SkeletonWin01(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + local x,y,z = GetObjectPosition(bank); + if result ~= nil then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + H55_ArtifactAward(hero,1); + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_SkeletonWin02(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + local x,y,z = GetObjectPosition(bank); + if result ~= nil then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + H55_GoldReward(hero,0.1); + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_SkeletonWin03(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + local x,y,z = GetObjectPosition(bank); + if result ~= nil then + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndInteract,x,y,z); + if H55_IsThisAIPlayer(player) ~= 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Already.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + else + MarkObjectAsVisited(bank,hero); + end; +end; + +-- function H55_MPFightWin(hero,result) + -- if result ~= nil then + -- local player = GetObjectOwner(hero); + -- local mp = H55_MPCurrentPlayerVisit[player]; + -- Trigger(OBJECT_TOUCH_TRIGGER,mp,nil); + -- SetObjectEnabled(mp,not nil); + -- MakeHeroInteractWithObject(hero,mp); + -- end; +-- end; + +function H55_AbandonedMineWin(hero,result) + if result ~= nil then + local player = GetObjectOwner(hero); + local mine = H55_MineCurrentPlayerVisit[player]; + Trigger(OBJECT_TOUCH_TRIGGER,mine,nil); + SetObjectEnabled(mine,not nil); + MakeHeroInteractWithObject(hero,mine); + Trigger(OBJECT_TOUCH_TRIGGER,mine,"H55_MineVisit"); + SetObjectEnabled(mine,nil); + end; +end; + +function H55_WitchTempleWin(hero,result) + local player = GetObjectOwner(hero) + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + if day <= 84 then + local rnd1 = random(3)+1; + H55_GoldReward(hero,2); + H55_ResourceReward(hero,2,1); + H55_ResourceReward(hero,4,1); + if rnd1 == 1 then + H55_RandomArtifactAward(hero,0,70,30); + elseif rnd1 == 2 then + H55_SpellAward(hero,2); + else + H55_PrisonersReward(hero,2,5); + end; + else + local rnd2 = random(3)+1; + H55_GoldReward(hero,2); + H55_ResourceReward(hero,2,2); + H55_ResourceReward(hero,4,2); + if rnd2 == 1 then + H55_RandomArtifactAward(hero,0,70,30); + elseif rnd2 == 2 then + H55_SpellAward(hero,2); + else + H55_PrisonersReward(hero,3,6); + end; + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_WitchTempleArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_WitchTempleArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_WitchTempleArmies[bank][i] = random(2)+1+(i-21); + end; + H55_WitchTempleArmies[bank][27] = random(7)+1; + H55_WitchTempleArmies[bank][28] = random(8)+1; + H55_WitchTempleArmies[bank][29] = random(9)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_CryptWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + if day <= 84 then + local rnd1 = random(4)+1; + H55_GoldReward(hero,1); + H55_RandomArtifactAward(hero,20,70,10); + if rnd1 == 1 then + H55_PrisonersReward(hero,2,4); + elseif rnd1 == 2 then + H55_SpellAward(hero,1); + elseif rnd1 == 3 then + H55_ResourceReward(hero,0,1); + H55_ResourceReward(hero,4,1); + else + H55_DocumentAward(hero,1); + end; + else + local rnd2 = random(4)+1; + H55_GoldReward(hero,2); + H55_RandomArtifactAward(hero,20,60,20); + if rnd2 == 1 then + H55_PrisonersReward(hero,3,5); + elseif rnd2 == 2 then + H55_DocumentAward(hero,1); + else + H55_ResourceReward(hero,0,2); + H55_ResourceReward(hero,4,2); + end; + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_CryptArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_CryptArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_CryptArmies[bank][i] = random(2)+1+(i-21); + end; + H55_CryptArmies[bank][27] = random(7)+1; + H55_CryptArmies[bank][28] = random(11)+1; + H55_CryptArmies[bank][29] = random(12)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_StoneVaultWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + if day <= 84 then + local rnd1 = random(4)+1; + H55_GoldReward(hero,1); + H55_ResourceReward(hero,1,2); + if rnd1 == 1 then + H55_PrisonersReward(hero,2,4); + elseif rnd1 == 2 then + H55_ResourceReward(hero,4,1); + H55_SpellAward(hero,1); + elseif rnd1 == 3 then + H55_RandomArtifactAward(hero,20,70,10); + else + H55_ResourceReward(hero,4,1); + H55_DocumentAward(hero,1); + end; + else + local rnd2 = random(4)+1; + H55_GoldReward(hero,2); + H55_ResourceReward(hero,1,3); + if rnd2 == 1 then + H55_ResourceReward(hero,4,2); + H55_DocumentAward(hero,1); + elseif rnd2 == 2 then + H55_RandomArtifactAward(hero,20,60,20); + else + H55_PrisonersReward(hero,3,5); + end; + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_StoneVaultArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_StoneVaultArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_StoneVaultArmies[bank][i] = random(2)+1+(i-21); + end; + H55_StoneVaultArmies[bank][27] = random(7)+1; + H55_StoneVaultArmies[bank][28] = random(8)+1; + H55_StoneVaultArmies[bank][29] = random(9)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_MageVaultWin(hero,result) + local player = GetObjectOwner(hero) + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + if day <= 84 then + local rnd1 = random(4)+1; + H55_GoldReward(hero,2); + H55_SpellAward(hero,2); + if rnd1 == 1 then + H55_RandomArtifactAward(hero,20,70,10); + elseif rnd1 == 2 then + H55_ResourceReward(hero,3,1); + H55_ResourceReward(hero,5,1); + elseif rnd1 == 3 then + local rnddoc = random(2)+1 + if rnddoc == 1 then + H55_DocumentAward(hero,1); + else + H55_DocumentAward(hero,2); + end; + else + H55_RandomArtifactAward(hero,0,70,30); + end; + else + local rnd2 = random(4)+1; + H55_GoldReward(hero,3); + H55_SpellAward(hero,2); + if rnd2 == 1 then + H55_RandomArtifactAward(hero,0,70,30); + elseif rnd2 == 2 then + H55_ResourceReward(hero,3,2); + H55_ResourceReward(hero,5,2); + elseif rnd2 == 3 then + H55_RandomArtifactAward(hero,20,60,20); + else + H55_DocumentAward(hero,2); + end; + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_MageVaultArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_MageVaultArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_MageVaultArmies[bank][i] = random(2)+1+(i-21); + end; + H55_MageVaultArmies[bank][27] = random(7)+1; + H55_MageVaultArmies[bank][28] = random(8)+1; + H55_MageVaultArmies[bank][29] = random(9)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_DwarvenTreasureWin(hero,result) + local player = GetObjectOwner(hero) + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + if day <= 84 then + local rnd1 = random(4)+1; + H55_GoldReward(hero,1); + H55_ResourceReward(hero,3,1); + H55_ResourceReward(hero,5,1); + if rnd1 == 1 then + H55_RandomArtifactAward(hero,20,70,10); + elseif rnd1 == 2 then + H55_ResourceReward(hero,1,1); + H55_RandomArtifactAward(hero,50,45,5); + elseif rnd1 == 3 then + H55_ResourceReward(hero,1,1); + H55_DocumentAward(hero,1); + else + H55_PrisonersReward(hero,2,5); + end; + else + local rnd2 = random(4)+1; + H55_GoldReward(hero,2); + H55_ResourceReward(hero,3,2); + H55_ResourceReward(hero,5,2); + if rnd2 == 1 then + H55_RandomArtifactAward(hero,20,60,20); + elseif rnd2 == 2 then + H55_ResourceReward(hero,1,2); + H55_RandomArtifactAward(hero,50,45,5); + elseif rnd2 == 3 then + local rnddoc = random(2)+1 + H55_ResourceReward(hero,1,2); + if rnddoc == 1 then + H55_DocumentAward(hero,1); + else + H55_DocumentAward(hero,2); + end; + else + H55_PrisonersReward(hero,3,6); + end; + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_DwarvenTreasureArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_DwarvenTreasureArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_DwarvenTreasureArmies[bank][i] = random(2)+1+(i-21); + end; + H55_DwarvenTreasureArmies[bank][27] = random(7)+1; + H55_DwarvenTreasureArmies[bank][28] = random(8)+1; + H55_DwarvenTreasureArmies[bank][29] = random(9)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_ForestTowerWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + if day <= 84 then + local rnd1 = random(4)+1; + H55_GoldReward(hero,3); + H55_ResourceReward(hero,0,3); + if rnd1 == 1 then + H55_RandomArtifactAward(hero,20,70,10); + elseif rnd1 == 2 then + H55_ResourceReward(hero,5,2); + H55_PrisonersReward(hero,2,4); + elseif rnd1 == 3 then + H55_ResourceReward(hero,3,2); + H55_SpellAward(hero,1); + else + H55_PrisonersReward(hero,2,5); + end; + else + local rnd2 = random(4)+1; + H55_GoldReward(hero,4); + H55_ResourceReward(hero,0,4); + if rnd2 == 1 then + H55_RandomArtifactAward(hero,20,50,30); + elseif rnd2 == 2 then + H55_ResourceReward(hero,5,3); + H55_PrisonersReward(hero,2,4); + elseif rnd2 == 3 then + H55_ResourceReward(hero,3,3); + local rnddoc = random(2)+1 + if rnddoc == 1 then + H55_DocumentAward(hero,1); + else + H55_DocumentAward(hero,2); + end; + else + H55_PrisonersReward(hero,3,6); + end; + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_ForestTowerArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_ForestTowerArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_ForestTowerArmies[bank][i] = random(2)+1+(i-21); + end; + H55_ForestTowerArmies[bank][27] = random(7)+1; + H55_ForestTowerArmies[bank][28] = random(8)+1; + H55_ForestTowerArmies[bank][29] = random(9)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_OrcTunnelWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + if day <= 84 then + local rnd1 = random(4)+1; + H55_GoldReward(hero,1); + H55_PrisonersReward(hero,2,5); + if rnd1 == 1 then + H55_RandomArtifactAward(hero,70,30,0); + elseif rnd1 == 2 then + H55_ResourceReward(hero,0,1); + H55_ResourceReward(hero,2,1); + elseif rnd1 == 3 then + H55_DocumentAward(hero,1); + else + H55_PrisonersReward(hero,1,4); + end; + else + local rnd2 = random(4)+1; + H55_GoldReward(hero,2); + H55_PrisonersReward(hero,2,6); + if rnd2 == 1 then + H55_RandomArtifactAward(hero,50,45,5); + elseif rnd2 == 2 then + H55_ResourceReward(hero,0,2); + H55_ResourceReward(hero,2,2); + elseif rnd2 == 3 then + H55_DocumentAward(hero,1); + else + H55_PrisonersReward(hero,2,7); + end; + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_OrcTunnelArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_OrcTunnelArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_OrcTunnelArmies[bank][i] = random(2)+1+(i-21); + end; + H55_OrcTunnelArmies[bank][27] = random(7)+1; + H55_OrcTunnelArmies[bank][28] = random(8)+1; + H55_OrcTunnelArmies[bank][29] = random(9)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_TowerWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + if day <= 84 then + local rnd1 = random(4)+1; + H55_GoldReward(hero,1); + H55_PrisonersReward(hero,2,5); + if rnd1 == 1 then + H55_RandomArtifactAward(hero,70,30,0); + elseif rnd1 == 2 then + H55_ResourceReward(hero,0,2); + H55_ResourceReward(hero,1,2); + elseif rnd1 == 3 then + H55_DocumentAward(hero,1); + else + H55_PrisonersReward(hero,1,4); + end; + else + local rnd2 = random(4)+1; + H55_GoldReward(hero,2); + H55_PrisonersReward(hero,2,6); + if rnd2 == 1 then + H55_RandomArtifactAward(hero,50,45,5); + elseif rnd2 == 2 then + H55_ResourceReward(hero,0,2); + H55_ResourceReward(hero,1,2); + elseif rnd2 == 3 then + H55_DocumentAward(hero,1); + else + H55_PrisonersReward(hero,2,7); + end; + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_UnkemptArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_UnkemptArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_UnkemptArmies[bank][i] = random(2)+1+(i-21); + end; + H55_UnkemptArmies[bank][27] = random(7)+1; + H55_UnkemptArmies[bank][28] = random(8)+1; + H55_UnkemptArmies[bank][29] = random(9)+1; + H55_UnkemptArmies[bank][30] = random(8)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_StockpileWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + if day <= 84 then + local rnd1 = random(2)+1; + local rnd3 = random(2)+1; + H55_ResourceReward(hero,0,rnd1); + H55_ResourceReward(hero,1,rnd1); + H55_ResourceReward(hero,2,rnd1); + H55_ResourceReward(hero,3,rnd1); + H55_ResourceReward(hero,4,rnd1); + H55_ResourceReward(hero,5,rnd1); + if rnd3 == 2 then + H55_RandomArtifactAward(hero,20,60,20); + end; + else + local rnd2 = random(2)+2; + local rnd4 = random(2)+1; + H55_ResourceReward(hero,0,rnd2); + H55_ResourceReward(hero,1,rnd2); + H55_ResourceReward(hero,2,rnd2); + H55_ResourceReward(hero,3,rnd2); + H55_ResourceReward(hero,4,rnd2); + H55_ResourceReward(hero,5,rnd2); + if rnd4 == 2 then + H55_RandomArtifactAward(hero,20,50,30); + end; + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,7 do + H55_StockpileArmies[bank][i] = random(3)+1 + end; + H55_StockpileArmies[bank][8] = random(5)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_ThicketWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + if day <= 84 then + local rnd1 = random(4)+1; + H55_GoldReward(hero,4); + H55_ArtifactAward(hero,3); + if rnd1 == 1 then + H55_ArtifactAward(hero,2); + elseif rnd1 == 2 then + H55_PrisonersReward(hero,2,5); + H55_ResourceReward(hero,5,2); + H55_ResourceReward(hero,0,3); + elseif rnd1 == 3 then + H55_DocumentAward(hero,2); + else + H55_PrisonersReward(hero,3,6); + end; + else + local rnd2 = random(4)+1; + H55_GoldReward(hero,4); + H55_ArtifactAward(hero,3); + if rnd2 == 1 then + H55_ArtifactAward(hero,2); + elseif rnd2 == 2 then + H55_PrisonersReward(hero,2,6); + H55_ResourceReward(hero,5,3); + H55_ResourceReward(hero,0,4); + elseif rnd2 == 3 then + local rnddoc = random(3)+1 + if rnddoc == 1 then + H55_DocumentAward(hero,3); + else + H55_DocumentAward(hero,2); + end; + else + H55_PrisonersReward(hero,3,7); + end; + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_ThicketArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_ThicketArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_ThicketArmies[bank][i] = random(2)+1+(i-21); + end; + H55_ThicketArmies[bank][27] = random(7)+1; + H55_ThicketArmies[bank][28] = random(8)+1; + H55_ThicketArmies[bank][29] = random(9)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_PyramidWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + local rnd1 = random(4)+1; + H55_GoldReward(hero,3); + H55_SpellAward(hero,2); + if rnd1 == 1 then + H55_RandomArtifactAward(hero,0,20,80); + elseif rnd1 == 2 then + H55_RandomArtifactAward(hero,20,70,10); + H55_ResourceReward(hero,5,3); + H55_ResourceReward(hero,2,3); + elseif rnd1 == 3 then + local rnddoc = random(3)+1 + H55_RandomArtifactAward(hero,20,70,10); + if rnddoc == 1 then + H55_DocumentAward(hero,3); + else + H55_DocumentAward(hero,2); + end; + else + H55_RandomArtifactAward(hero,20,70,10); + H55_PrisonersReward(hero,3,7); + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_PyramidArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_PyramidArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_PyramidArmies[bank][i] = random(2)+1+(i-21); + end; + H55_PyramidArmies[bank][27] = random(7)+1; + H55_PyramidArmies[bank][28] = random(8)+1; + H55_PyramidArmies[bank][29] = random(9)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_DemonTowerWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + local rnd1 = random(4)+1; + H55_GoldReward(hero,3); + H55_PrisonersReward(hero,3,7); + if rnd1 == 1 then + H55_ArtifactAward(hero,2); + H55_PrisonersReward(hero,1,4); + --H55_SpellAward(hero,2); + elseif rnd1 == 2 then + H55_ArtifactAward(hero,3); + H55_ResourceReward(hero,4,3); + H55_ResourceReward(hero,2,3); + elseif rnd1 == 3 then + local rnddoc = random(3)+1 + H55_ArtifactAward(hero,2); + if rnddoc == 1 then + H55_DocumentAward(hero,3); + else + H55_DocumentAward(hero,2); + end; + else + H55_ArtifactAward(hero,3); + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_DemonTowerArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_DemonTowerArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_DemonTowerArmies[bank][i] = random(2)+1+(i-21); + end; + H55_DemonTowerArmies[bank][27] = random(7)+1; + H55_DemonTowerArmies[bank][28] = random(8)+1; + H55_DemonTowerArmies[bank][29] = random(9)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_UtopiaWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + local rnd1 = random(4)+1; + H55_GoldReward(hero,4); + H55_ArtifactAward(hero,3); + H55_ArtifactAward(hero,2); + if rnd1 == 1 then + H55_ArtifactAward(hero,1); + elseif rnd1 == 2 then + H55_ResourceReward(hero,4,4); + elseif rnd1 == 3 then + local rnddoc = random(2)+1 + if rnddoc == 1 then + H55_DocumentAward(hero,3); + else + H55_DocumentAward(hero,2); + end; + else + H55_PrisonersReward(hero,3,7); + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,6 do + H55_UtopiaArmies[bank][i] = random(3)+1; + end; + H55_UtopiaArmies[bank][7] = random(8)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_SunkenTempleWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + local rnd1 = random(4)+1; + H55_GoldReward(hero,3); + H55_ArtifactAward(hero,3); + if rnd1 == 1 then + H55_RandomArtifactAward(hero,30,70,0); + H55_SpellAward(hero,2); + elseif rnd1 == 2 then + H55_RandomArtifactAward(hero,30,70,0); + H55_ResourceReward(hero,3,3); + H55_ResourceReward(hero,5,3); + elseif rnd1 == 3 then + local rnddoc = random(3)+1 + H55_RandomArtifactAward(hero,30,70,0); + if rnddoc == 1 then + H55_DocumentAward(hero,3); + else + H55_DocumentAward(hero,2); + end; + else + H55_RandomArtifactAward(hero,30,70,0); + H55_PrisonersReward(hero,3,7); + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_SunkenTempleArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_SunkenTempleArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_SunkenTempleArmies[bank][i] = random(2)+1+(i-21); + end; + H55_SunkenTempleArmies[bank][27] = random(7)+1; + H55_SunkenTempleArmies[bank][28] = random(8)+1; + H55_SunkenTempleArmies[bank][29] = random(9)+1; + H55_SunkenTempleArmies[bank][30] = random(8)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_MausoleumWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + local rnd1 = random(4)+1; + H55_GoldReward(hero,3); + H55_RandomArtifactAward(hero,0,20,80); + if rnd1 == 1 then + H55_RandomArtifactAward(hero,50,50,0); + H55_PrisonersReward(hero,3,6); + --H55_SpellAward(hero,2); + elseif rnd1 == 2 then + H55_RandomArtifactAward(hero,30,70,0); + H55_ResourceReward(hero,3,3); + H55_ResourceReward(hero,2,3); + elseif rnd1 == 3 then + local rnddoc = random(3)+1 + H55_RandomArtifactAward(hero,50,50,0); + if rnddoc == 1 then + H55_DocumentAward(hero,3); + else + H55_DocumentAward(hero,2); + end; + else + H55_RandomArtifactAward(hero,50,50,0); + H55_PrisonersReward(hero,3,7); + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_DemolishArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_DemolishArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_DemolishArmies[bank][i] = random(2)+1+(i-21); + end; + H55_DemolishArmies[bank][27] = random(7)+1; + H55_DemolishArmies[bank][28] = random(8)+1; + H55_DemolishArmies[bank][29] = random(9)+1; + H55_DemolishArmies[bank][30] = random(8)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_UnkemptWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + if day <= 84 then + local rnd1 = random(4)+1; + H55_GoldReward(hero,1); + H55_ResourceReward(hero,0,1); + if rnd1 == 1 then + H55_PrisonersReward(hero,2,4); + elseif rnd1 == 2 then + H55_SpellAward(hero,1); + elseif rnd1 == 3 then + H55_RandomArtifactAward(hero,75,25,0); + else + H55_DocumentAward(hero,1); + end; + else + local rnd2 = random(4)+1; + H55_GoldReward(hero,2); + H55_ResourceReward(hero,0,2); + if rnd2 == 1 then + H55_PrisonersReward(hero,3,5); + elseif rnd2 == 2 then + H55_DocumentAward(hero,1); + else + H55_RandomArtifactAward(hero,50,45,5); + end; + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_UnkemptArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_UnkemptArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_UnkemptArmies[bank][i] = random(2)+1+(i-21); + end; + H55_UnkemptArmies[bank][27] = random(7)+1; + H55_UnkemptArmies[bank][28] = random(8)+1; + H55_UnkemptArmies[bank][29] = random(9)+1; + H55_UnkemptArmies[bank][30] = random(8)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +function H55_DemolishWin(hero,result) + local player = GetObjectOwner(hero); + local bank = H55_BankCurrentPlayerVisit[player]; + local day = GetDate(DAY); + if result ~= nil then + if day <= 84 then + local rnd1 = random(4)+1; + H55_GoldReward(hero,1); + H55_RandomArtifactAward(hero,50,50,0); + if rnd1 == 1 then + H55_PrisonersReward(hero,2,4); + elseif rnd1 == 2 then + H55_SpellAward(hero,1); + elseif rnd1 == 3 then + H55_ResourceReward(hero,0,1); + else + H55_DocumentAward(hero,1); + end; + else + local rnd2 = random(4)+1; + H55_GoldReward(hero,2); + H55_RandomArtifactAward(hero,20,60,20); + if rnd2 == 1 then + H55_DocumentAward(hero,1); + elseif rnd2 == 2 then + H55_ResourceReward(hero,0,2); + else + H55_PrisonersReward(hero,3,5); + end; + end; + H55_BankLastVisit[bank] = day; + H55_BankPlayerLastVisit[player][bank] = day; + MarkObjectAsVisited(bank,hero); + for i = 1,14 do + H55_DemolishArmies[bank][i] = random(3)+1; + end; + for i = 15,20 do + H55_DemolishArmies[bank][i] = random(2)+1+(i-15); + end; + for i = 21,26 do + H55_DemolishArmies[bank][i] = random(2)+1+(i-21); + end; + H55_DemolishArmies[bank][27] = random(7)+1; + H55_DemolishArmies[bank][28] = random(8)+1; + H55_DemolishArmies[bank][29] = random(9)+1; + H55_DemolishArmies[bank][30] = random(8)+1; + else + MarkObjectAsVisited(bank,hero); + end; +end; + +------------------------------------------------------------------------------------------------------------------------------------------------- +--REWARDS +------------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_GoldReward(hero,level) + local player = GetObjectOwner(hero); + local rnd = random(2000)+500; + local amount = (level*2000)+rnd; + if level == 4 then amount = amount+3000 end; + -- if HasHeroSkill(hero,PERK_LUCKY_STRIKE) then + -- local lucky = 1+(0.1+((random(20)+1)/100)); + -- amount = math.round(amount*lucky); + -- end; + H55_GiveResources(player,6,amount,hero); +end; + +function H55_ResourceReward(hero,typ,level) + local player = GetObjectOwner(hero); + local rnd = random(5)+1; + local amount = (level*3)+rnd; + -- if HasHeroSkill(hero,PERK_LUCKY_STRIKE) then + -- local lucky = 1+(0.1+((random(20)+1)/100)); + -- amount = math.round(amount*lucky); + -- end; + H55_GiveResources(player,typ,amount,hero); +end; + +function H55_ArtifactAwardDuel(hero,level) + local player = GetObjectOwner(hero); + local rnda = random(table.length(H55_MinorArtifactsDuel))+1; + local rndb = random(table.length(H55_MajorArtifactsDuel))+1; + local rndc = random(table.length(H55_RelicArtifactsDuel))+1; + if level == 3 then + GiveArtefact(hero,H55_RelicArtifactsDuel[rndc],0); + elseif level == 2 then + GiveArtefact(hero,H55_MajorArtifactsDuel[rndb],0); + else + GiveArtefact(hero,H55_MinorArtifactsDuel[rnda],0); + end; +end; + +function H55_ArtifactAward(hero,level) + local player = GetObjectOwner(hero); + local x,y,z = GetObjectPosition(hero); + if H55_Day == 1 then + local rnda = random(table.length(H55_MinorArtifacts))+1; + local rndb = random(table.length(H55_MajorArtifacts))+1; + local rndc = random(table.length(H55_RelicArtifacts))+1; + if level == 3 then + GiveArtefact(hero,H55_RelicArtifacts[rndc],0); + elseif level == 2 then + GiveArtefact(hero,H55_MajorArtifacts[rndb],0); + else + GiveArtefact(hero,H55_MinorArtifacts[rnda],0); + end; + else + local rnd1 = random(table.length(H55_MinorArtifactsUsed)); + local rnd2 = random(table.length(H55_MajorArtifactsUsed)); + local rnd3 = random(table.length(H55_RelicArtifactsUsed)); + if level == 3 then + GiveArtefact(hero,H55_RelicArtifactsUsed[rnd3],0); + elseif level == 2 then + GiveArtefact(hero,H55_MajorArtifactsUsed[rnd2],0); + else + GiveArtefact(hero,H55_MinorArtifactsUsed[rnd1],0); + end; + end; + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArtifact,x,y,z); + if H55_IsThisAIPlayer(player) ~= 1 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Giveartifact.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; +end; + +function H55_ArtifactStartBonus(hero) + if hero ~= nil then + local rnd = random(table.length(H55_MinorArtifacts))+1; + GiveArtefact(hero,H55_MinorArtifacts[rnd],0); + else + print("H55 Artifact Start Bonus could not be provided!"); + end; +end; + +function H55_RandomArtifactAward(hero,minorchance,majorchance,relicchance) + local player = GetObjectOwner(hero); + local choice = random(100)+1; + local x,y,z = GetObjectPosition(hero); + if H55_Day == 1 then + local rnda = random(table.length(H55_MinorArtifacts))+1; + local rndb = random(table.length(H55_MajorArtifacts))+1; + local rndc = random(table.length(H55_RelicArtifacts))+1; + if choice <= minorchance then + GiveArtefact(hero,H55_MinorArtifacts[rnda],0); + elseif choice > minorchance and choice <= (majorchance+minorchance) then + GiveArtefact(hero,H55_MajorArtifacts[rndb],0); + else + GiveArtefact(hero,H55_RelicArtifacts[rndc],0); + end; + else + local rnd1 = random(table.length(H55_MinorArtifactsUsed)); + local rnd2 = random(table.length(H55_MajorArtifactsUsed)); + local rnd3 = random(table.length(H55_RelicArtifactsUsed)); + if choice <= minorchance then + GiveArtefact(hero,H55_MinorArtifactsUsed[rnd1],0); + elseif choice > minorchance and choice <= (majorchance+minorchance) then + GiveArtefact(hero,H55_MajorArtifactsUsed[rnd2],0); + else + GiveArtefact(hero,H55_RelicArtifactsUsed[rnd3],0); + end; + end; + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArtifact,x,y,z); + if H55_IsThisAIPlayer(player) ~= 1 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Giveartifact.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; +end; + +function H55_GraalAward(hero,result) + local player = GetObjectOwner(hero); + local x,y,z = GetObjectPosition(hero); + GiveArtefact(hero,53); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArtifact,x,y,z); + if H55_IsThisAIPlayer(player) ~= 1 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Giveartifact.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; +end; + +function H55_RandomUltimateAward(hero) + local player = GetObjectOwner(hero); + local x,y,z = GetObjectPosition(hero); + if H55_Day == 1 then + local rnda = random(table.length(H55_UltimateArtifacts))+1; + GiveArtefact(hero,H55_UltimateArtifacts[rnda],0); + else + local rnd1 = random(table.length(H55_UltimateArtifactsUsed))+1; + GiveArtefact(hero,H55_UltimateArtifactsUsed[rnd1],0); + end; + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArtifact,x,y,z); + if H55_IsThisAIPlayer(player) ~= 1 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Giveartifact.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; +end; + +function H55_StaticObeliskAward(hero) + local player = GetObjectOwner(hero); + local x,y,z = GetObjectPosition(hero); + GiveArtefact(hero,H55_UltimateArtifacts[H55_ForcedObelisk],0); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArtifact,x,y,z); + if H55_IsThisAIPlayer(player) ~= 1 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Giveartifact.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; +end; + +function H55_StaticShantiriAward(hero) + local player = GetObjectOwner(hero); + local x,y,z = GetObjectPosition(hero); + GiveArtefact(hero,H55_UltimateArtifacts[H55_ForcedShantiri],0); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArtifact,x,y,z); + if H55_IsThisAIPlayer(player) ~= 1 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Giveartifact.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; +end; + +function H55_SummonTempleReward(hero,multiplier,maxtier) + local player = GetObjectOwner(hero); + local tier = maxtier; + local faction = H55_GetHeroRaceNum(hero); + local amount = random(4)+(multiplier*H55_CreaturesGrowthReal[faction][tier]); + -- if HasHeroSkill(hero,PERK_LUCKY_STRIKE) then + -- local lucky = 1+(0.1+((random(10)+1)/100)); + -- amount = math.round(amount*lucky); + -- end; + local units = H55_ArmyInfoSimple(hero); + local released = 0; + local x,y,z = GetObjectPosition(hero); + for i = 0,6 do + if units[i] == H55_Creatures[faction][tier][2] and released == 0 then + AddHeroCreatures(hero,H55_Creatures[faction][tier][2],amount); + startThread(H55_ProtectedSignPrisoners,"/Text/Game/Scripts/Summon/Summons.txt",amount,tier,hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArmy,x,y,z); + released = 1; + end; + if units[i] == H55_Creatures[faction][tier][3] and released == 0 then + AddHeroCreatures(hero,H55_Creatures[faction][tier][3],amount); + startThread(H55_ProtectedSignPrisoners,"/Text/Game/Scripts/Summon/Summons.txt",amount,tier,hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArmy,x,y,z); + released = 1; + end; + if units[i] == H55_Creatures[faction][tier][1] and released == 0 then + AddHeroCreatures(hero,H55_Creatures[faction][tier][1],amount); + startThread(H55_ProtectedSignPrisoners,"/Text/Game/Scripts/Summon/Summons.txt",amount,tier,hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArmy,x,y,z); + released = 1; + end; + end; + if released == 0 then + for i = 0,6 do + if (units[i] == 0 or units[i] == nil) and released == 0 then + AddHeroCreatures(hero,H55_Creatures[faction][tier][1],amount); + startThread(H55_ProtectedSignPrisoners,"/Text/Game/Scripts/Summon/Summons.txt",amount,tier,hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArmy,x,y,z); + released = 1; + end; + end; + end; +end; + +function H55_SpellAward(hero,level) + local player = GetObjectOwner(hero); + local rnd5 = random(table.length(H55_SpellsL5))+1; + local rnd4 = random(table.length(H55_SpellsL4))+1; + local rnd3 = random(table.length(H55_SpellsL3))+1; + local rnd2 = random(table.length(H55_SpellsL2))+1; + local rnd1 = random(table.length(H55_SpellsL1))+1; + local rnm5 = random(table.length(H55_SpellsL5))+1; + local rnm4 = random(table.length(H55_SpellsL4))+1; + local rnm3 = random(table.length(H55_SpellsL3))+1; + local rnm2 = random(table.length(H55_SpellsL2))+1; + local rnm1 = random(table.length(H55_SpellsL1))+1; + local rndchief = random(3); + local teached = 0; + local x,y,z = GetObjectPosition(hero); + if level == 2 then + if H55_ChieftainsPhonebook[hero] == 1 then + if rndchief >= 1 then + H55_ArtifactAward(hero,1); + else + GiveArtefact(hero,ARTIFACT_SCROLL_OF_SPELL_X); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArtifact,x,y,z); + end; + else + if KnowHeroSpell(hero,H55_SpellsL5[rnd5]) == nil then + if H55_RequiredSkill[H55_SpellsL5[rnd5]] == SKILL_LIGHT_MAGIC then + if HasHeroSkill(hero,SKILL_LIGHT_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL5[rnd5]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL5[rnd5],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL5[rnd5]] == SKILL_DARK_MAGIC then + if HasHeroSkill(hero,SKILL_DARK_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL5[rnd5]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL5[rnd5],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL5[rnd5]] == SKILL_DESTRUCTIVE_MAGIC then + if HasHeroSkill(hero,SKILL_DESTRUCTIVE_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL5[rnd5]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL5[rnd5],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL5[rnd5]] == SKILL_SUMMONING_MAGIC then + if HasHeroSkill(hero,SKILL_SUMMONING_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL5[rnd5]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL5[rnd5],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + end; + elseif KnowHeroSpell(hero,H55_SpellsL4[rnd4]) == nil then + if H55_RequiredSkill[H55_SpellsL4[rnd4]] == SKILL_LIGHT_MAGIC then + if HasHeroSkill(hero,SKILL_LIGHT_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL4[rnd4]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL4[rnd4],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL4[rnd4]] == SKILL_DARK_MAGIC then + if HasHeroSkill(hero,SKILL_DARK_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL4[rnd4]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL4[rnd4],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL4[rnd4]] == SKILL_DESTRUCTIVE_MAGIC then + if HasHeroSkill(hero,SKILL_DESTRUCTIVE_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL4[rnd4]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL4[rnd4],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL4[rnd4]] == SKILL_SUMMONING_MAGIC then + if HasHeroSkill(hero,SKILL_SUMMONING_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL4[rnd4]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL4[rnd4],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + end; + elseif KnowHeroSpell(hero,H55_SpellsL3[rnd3]) == nil then + if H55_RequiredSkill[H55_SpellsL3[rnd3]] == SKILL_LIGHT_MAGIC then + if HasHeroSkill(hero,SKILL_LIGHT_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL3[rnd3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnd3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL3[rnd3]] == SKILL_DARK_MAGIC then + if HasHeroSkill(hero,SKILL_DARK_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL3[rnd3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnd3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL3[rnd3]] == SKILL_DESTRUCTIVE_MAGIC then + if HasHeroSkill(hero,SKILL_DESTRUCTIVE_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL3[rnd3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnd3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL3[rnd3]] == SKILL_SUMMONING_MAGIC then + if HasHeroSkill(hero,SKILL_SUMMONING_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL3[rnd3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnd3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif HasHeroSkill(hero,PERK_WISDOM) then + TeachHeroSpell(hero,H55_SpellsL3[rnd3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnd3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif KnowHeroSpell(hero,H55_SpellsL5[rnm5]) == nil then + if H55_RequiredSkill[H55_SpellsL5[rnm5]] == SKILL_LIGHT_MAGIC then + if HasHeroSkill(hero,SKILL_LIGHT_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL5[rnm5]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL5[rnm5],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL5[rnm5]] == SKILL_DARK_MAGIC then + if HasHeroSkill(hero,SKILL_DARK_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL5[rnm5]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL5[rnm5],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL5[rnm5]] == SKILL_DESTRUCTIVE_MAGIC then + if HasHeroSkill(hero,SKILL_DESTRUCTIVE_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL5[rnm5]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL5[rnm5],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL5[rnm5]] == SKILL_SUMMONING_MAGIC then + if HasHeroSkill(hero,SKILL_SUMMONING_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL5[rnm5]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL5[rnm5],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + end; + elseif KnowHeroSpell(hero,H55_SpellsL4[rnm4]) == nil then + if H55_RequiredSkill[H55_SpellsL4[rnm4]] == SKILL_LIGHT_MAGIC then + if HasHeroSkill(hero,SKILL_LIGHT_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL4[rnm4]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL4[rnm4],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL4[rnm4]] == SKILL_DARK_MAGIC then + if HasHeroSkill(hero,SKILL_DARK_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL4[rnm4]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL4[rnm4],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL4[rnm4]] == SKILL_DESTRUCTIVE_MAGIC then + if HasHeroSkill(hero,SKILL_DESTRUCTIVE_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL4[rnm4]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL4[rnm4],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL4[rnm4]] == SKILL_SUMMONING_MAGIC then + if HasHeroSkill(hero,SKILL_SUMMONING_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL4[rnm4]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL4[rnm4],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + end; + elseif KnowHeroSpell(hero,H55_SpellsL3[rnm3]) == nil then + if H55_RequiredSkill[H55_SpellsL3[rnm3]] == SKILL_LIGHT_MAGIC then + if HasHeroSkill(hero,SKILL_LIGHT_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL3[rnm3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnm3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL3[rnm3]] == SKILL_DARK_MAGIC then + if HasHeroSkill(hero,SKILL_DARK_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL3[rnm3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnm3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL3[rnm3]] == SKILL_DESTRUCTIVE_MAGIC then + if HasHeroSkill(hero,SKILL_DESTRUCTIVE_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL3[rnm3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnm3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL3[rnm3]] == SKILL_SUMMONING_MAGIC then + if HasHeroSkill(hero,SKILL_SUMMONING_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL3[rnm3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnm3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif HasHeroSkill(hero,PERK_WISDOM) then + TeachHeroSpell(hero,H55_SpellsL3[rnm3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnm3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + end; + if teached == 0 then + if KnowHeroSpell(hero,H55_SpellsL2[rnd2]) == nil then + TeachHeroSpell(hero,H55_SpellsL2[rnd2]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL2[rnd2],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + -- elseif KnowHeroSpell(hero,H55_SpellsL1[rnd1]) == nil then + -- TeachHeroSpell(hero,H55_SpellsL1[rnd1]); + -- if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL1[rnd1],hero,player,H55_MsgSleep,H55_MsgTime); + -- Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + -- teached = 1; + end; + end; + if teached == 0 then + GiveArtefact(hero,ARTIFACT_SCROLL_OF_SPELL_X); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArtifact,x,y,z) + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Giveartifact.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + else + if H55_ChieftainsPhonebook[hero] == 1 then + if rndchief >= 1 then + H55_PrisonersReward(hero,2,4); + else + GiveArtefact(hero,ARTIFACT_WAND_OF_X); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArtifact,x,y,z); + end; + else + if KnowHeroSpell(hero,H55_SpellsL3[rnd3]) == nil then + if HasHeroSkill(hero,PERK_WISDOM) then + TeachHeroSpell(hero,H55_SpellsL3[rnd3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnd3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + elseif H55_RequiredSkill[H55_SpellsL3[rnd3]] == SKILL_LIGHT_MAGIC then + if HasHeroSkill(hero,SKILL_LIGHT_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL3[rnd3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnd3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL3[rnd3]] == SKILL_DARK_MAGIC then + if HasHeroSkill(hero,SKILL_DARK_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL3[rnd3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnd3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL3[rnd3]] == SKILL_DESTRUCTIVE_MAGIC then + if HasHeroSkill(hero,SKILL_DESTRUCTIVE_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL3[rnd3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnd3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL3[rnd3]] == SKILL_SUMMONING_MAGIC then + if HasHeroSkill(hero,SKILL_SUMMONING_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL3[rnd3]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL3[rnd3],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + end; + elseif KnowHeroSpell(hero,H55_SpellsL2[rnd2]) == nil then + TeachHeroSpell(hero,H55_SpellsL2[rnd2]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL2[rnd2],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + elseif KnowHeroSpell(hero,H55_SpellsL4[rnd4]) == nil then + if H55_RequiredSkill[H55_SpellsL4[rnd4]] == SKILL_LIGHT_MAGIC then + if HasHeroSkill(hero,SKILL_LIGHT_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL4[rnd4]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL4[rnd4],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL4[rnd4]] == SKILL_DARK_MAGIC then + if HasHeroSkill(hero,SKILL_DARK_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL4[rnd4]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL4[rnd4],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL4[rnd4]] == SKILL_DESTRUCTIVE_MAGIC then + if HasHeroSkill(hero,SKILL_DESTRUCTIVE_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL4[rnd4]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL4[rnd4],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL4[rnd4]] == SKILL_SUMMONING_MAGIC then + if HasHeroSkill(hero,SKILL_SUMMONING_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL4[rnd4]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL4[rnd4],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + end; + elseif KnowHeroSpell(hero,H55_SpellsL5[rnd5]) == nil then + if H55_RequiredSkill[H55_SpellsL5[rnd5]] == SKILL_LIGHT_MAGIC then + if HasHeroSkill(hero,SKILL_LIGHT_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL5[rnd5]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL5[rnd5],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL5[rnd5]] == SKILL_DARK_MAGIC then + if HasHeroSkill(hero,SKILL_DARK_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL5[rnd5]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL5[rnd5],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL5[rnd5]] == SKILL_DESTRUCTIVE_MAGIC then + if HasHeroSkill(hero,SKILL_DESTRUCTIVE_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL5[rnd5]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL5[rnd5],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + elseif H55_RequiredSkill[H55_SpellsL5[rnd5]] == SKILL_SUMMONING_MAGIC then + if HasHeroSkill(hero,SKILL_SUMMONING_MAGIC) then + TeachHeroSpell(hero,H55_SpellsL5[rnd5]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL5[rnd5],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + end; + elseif KnowHeroSpell(hero,H55_SpellsL1[rnd1]) == nil then + TeachHeroSpell(hero,H55_SpellsL1[rnd1]); + if H55_IsThisAIPlayer(player) ~= 1 then H55_ProtectedSignSpell("/Text/Game/Scripts/Banks/Givespell.txt",H55_SpellsTextL1[rnd1],hero,player,H55_MsgSleep,H55_MsgTime); + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndSpell,x,y,z) end; + teached = 1; + end; + if teached == 0 then + GiveArtefact(hero,ARTIFACT_WAND_OF_X); + Play3DSoundForPlayers(GetPlayerFilter(player),H55_SndArtifact,x,y,z) + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Giveartifact.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; +end; + +function H55_DocumentAward(hero,level) + local player = GetObjectOwner(hero); + local x,y,z = GetObjectPosition(hero); + local rndprank = random(100)+1; + if H55_IsThisAIPlayer(player) ~= 1 then + if H55_MapType ~= "Campaign" and H55_MapType ~= "Scenario" and H55_NegativeArtifacts == 1 and rndprank >= 98 then + local rndx = random(table.length(H55_PrankArtifacts))+1; + -- local humanplayers = table.containsamount(H55_PlayerStatus,0); + -- if humanplayers >= 2 then + -- GiveArtefact(hero,H55_PrankArtifacts[rndx]); + -- else + GiveArtefact(hero,H55_PrankArtifacts[rndx]); + -- end; + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArtifact,x,y,z); + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Badartifact.txt",hero,player,H55_MsgSleep,H55_MsgTime); + else + if level == 3 then + local rnda = random(table.length(H55_RelicBookArtifacts))+1; + local rndp = random(table.length(H55_RelicBookArtifacts))+1; + if HasArtefact(hero,H55_RelicBookArtifacts[rnda],0) == nil then + GiveArtefact(hero,H55_RelicBookArtifacts[rnda],0); + elseif HasArtefact(hero,H55_RelicBookArtifacts[rndp],0) == nil then + GiveArtefact(hero,H55_RelicBookArtifacts[rndp],0); + else + H55_ArtifactAward(hero,3); + end; + elseif level == 2 then + local rndb = random(table.length(H55_MajorBookArtifacts))+1; + local rndq = random(table.length(H55_MajorBookArtifacts))+1; + if HasArtefact(hero,H55_MajorBookArtifacts[rndb],0) == nil then + GiveArtefact(hero,H55_MajorBookArtifacts[rndb],0); + elseif HasArtefact(hero,H55_MajorBookArtifacts[rndq],0) == nil then + GiveArtefact(hero,H55_MajorBookArtifacts[rndq],0); + else + H55_ArtifactAward(hero,2); + end; + else + local rndc = random(table.length(H55_MinorBookArtifacts))+1; + local rndr = random(table.length(H55_MinorBookArtifacts))+1; + if HasArtefact(hero,H55_MinorBookArtifacts[rndc],0) == nil then + GiveArtefact(hero,H55_MinorBookArtifacts[rndc],0); + elseif HasArtefact(hero,H55_MinorBookArtifacts[rndr],0) == nil then + GiveArtefact(hero,H55_MinorBookArtifacts[rndr],0); + else + H55_ArtifactAward(hero,1); + end; + end; + Play3DSoundForPlayers(GetPlayerFilter(player), H55_SndArtifact,x,y,z); + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Banks/Givebook.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif H55_IsThisAIPlayer(player) == 1 then + local rnd = random(4)+1; + if level == 2 or level == 3 then + ChangeHeroStat(hero,H55_StatAwards[rnd],2); + else + ChangeHeroStat(hero,H55_StatAwards[rnd],1); + end; + end; +end; + +function H55_SeerAward(hero,level,skill) + local player = GetObjectOwner(hero); + ChangeHeroStat(hero,H55_StatAwards[skill],level); + if H55_IsThisAIPlayer(player) ~= 1 then + ShowFlyingSign({H55_BankStatText[skill];param=level},hero,player,7); + sleep(8); + end; +end; + +--------------------------------------------------------------------------------------------------------------------------------------------- +--ACTIVATOR +--------------------------------------------------------------------------------------------------------------------------------------------- + +startThread(H55_PrepareAdvMap); + +--------------------------------------------------------------------------------------------------------------------------------------------- +--APPENDIX +--------------------------------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/scripts/H55-Combat.lua b/scripts/H55-Combat.lua new file mode 100644 index 00000000..d835a156 --- /dev/null +++ b/scripts/H55-Combat.lua @@ -0,0 +1,502 @@ +------------------------------------------------------------------------------------------------------------------------------------------------ +--MIGHT & MAGIC: HEROES 5.5 - COMBAT MAP +------------------------------------------------------------------------------------------------------------------------------------------------ + +--Author: Magnomagus + +------------------------------------------------------------------------------------------------------------------------------------------------ +--TABLES +------------------------------------------------------------------------------------------------------------------------------------------------ + +C55_Acted = {}; +C55_FirstMover = {}; +--C55_BallistaMover = {}; +--C55_TankMover = {}; +C55_Pounding = {}; +C55_ThreadedAimedSpellDone = {}; +C55_ThreadedAreaSpellDone = {}; + +C55_FastActors = { +["Isabell"]=1,["OrlandoMP"]=1,["Mephala"]=1,["Vaniel"]=1,["Nymus"]=1,["Malustar"]=1,["Ash"]=1, +["Muscip"]=1,["Isher"]=1,["Cyrus"]=1,["Davius"]=1,["Gurvilin"]=1,["Zehir"]=1, +["Nur"]=1,["Darkstorm"]=1,["Bersy"]=1,["Ufretin"]=1,["Hangvul2"]=1,["Bart"]=1,["Maximus"]=1, +["Hero8"]=1,["Hero9"]=1,["GottaiMP"]=1,["Hero1"]=1 +}; + +--["Nathaniel"]=1,["Laszlo"]=1,["Mardigo"]=1,["ThralsaiMP"]=1,["Ohtarig"]=1,["Rissa"]=1,["RedHeavenHero05"]=1,["Heam"]=1,["Jazaz"]=1,["Gillion"]=1,["Nimbus"]=1,["Gem"]=1}; + +C55_Reverse = {[0]=1,[1]=0}; + +C55_StrongATB = {0.81,0.82,0.83,0.84,0.85,0.88,0.88,0.88,0.89,0.90}; +C55_MediumATB = {0.71,0.72,0.73,0.74,0.75,0.76,0.77,0.78,0.79,0.80}; +C55_WeakATB = {0.61,0.62,0.63,0.64,0.65,0.66,0.67,0.68,0.69,0.70}; + +C55_Creatures = { +{{1,2,106},{3,4,107},{5,6,108},{7,8,109},{9,10,110},{11,12,111},{13,14,112}}, --Haven +{{43,44,145},{45,46,146},{47,48,147},{49,50,148},{51,52,149},{53,54,150},{55,56,151}}, --Sylvan +{{15,16,131},{17,18,132},{19,20,133},{21,22,134},{23,24,135},{25,26,136},{27,28,137}}, --Inferno +{{29,30,152},{31,32,153},{33,34,154},{35,36,155},{37,38,156},{39,40,157},{41,42,158}}, --Necropolis +{{57,58,159},{59,60,160},{61,62,161},{63,64,162},{65,66,163},{67,68,164},{69,70,165}}, --Academy +{{71,72,138},{73,74,139},{75,76,140},{77,78,141},{79,80,142},{81,82,143},{83,84,144}}, --Dungeon +{{92,93,166},{94,95,167},{96,97,168},{98,99,169},{100,101,170},{102,103,171},{104,105,172}}, --Fortress +{{117,118,173},{119,120,174},{121,122,175},{123,124,176},{125,126,177},{127,128,178},{129,130,179}} --Stronghold +}; + +------------------------------------------------------------------------------------------------------------------------------------------------ +--FUNCTIONS +------------------------------------------------------------------------------------------------------------------------------------------------ + +function C55_PoundEnemy(side) + SetControlMode(side,MODE_AUTO); + sleep(1); + SetControlMode(side,MODE_MANUAL); + SetControlMode(side,MODE_NORMAL); +end; + +function C55_BoostATB(unitName,side,faction,tier,qty1,qty2,qty3) + local creatures = GetUnits(side,CREATURE); + for i,cr in creatures do + if qty1 ~= 0 then + if GetCreatureType(cr) == C55_Creatures[faction][tier][1] then + setATB(unitName,0.99); + setATB(cr,qty1); + end; + end; + if qty2 ~= 0 then + if GetCreatureType(cr) == C55_Creatures[faction][tier][2] then + setATB(unitName,0.99); + setATB(cr,qty2); + end; + end; + if qty3 ~= 0 then + if GetCreatureType(cr) == C55_Creatures[faction][tier][3] then + setATB(unitName,0.99); + setATB(cr,qty3); + end; + end; + end; +end; + +function C55_FreeSpecial(side,special,faction,tier) + local creatures = GetUnits(side,CREATURE); + for i,cr in creatures do + if GetCreatureNumber(cr) >= 2 then + if GetCreatureType(cr) == C55_Creatures[faction][tier][1] or + GetCreatureType(cr) == C55_Creatures[faction][tier][2] or + GetCreatureType(cr) == C55_Creatures[faction][tier][3] then + UseCombatAbility(cr,special); + break; + end; + end; + end; +end; + +function C55_ThreadedAimedSpell(hero_id,spell,cr) + repeat sleep(1) until GetUnitManaPoints(hero_id) >= 50; + UnitCastAimedSpell(hero_id,spell,cr) + C55_ThreadedAimedSpellDone[hero_id] = 1; +end; + +function C55_FreeSpell(unitName,side,hero_id,spell,atb,faction,tier) + local creatures = GetUnits(side,CREATURE); + for i,cr in creatures do + if GetCreatureNumber(cr) >= 2 then + if GetCreatureType(cr) == C55_Creatures[faction][tier][1] or + GetCreatureType(cr) == C55_Creatures[faction][tier][2] or + GetCreatureType(cr) == C55_Creatures[faction][tier][3] then + setATB(unitName,0.99); + local mana = GetUnitManaPoints(hero_id); + if mana < 50 then SetUnitManaPoints(hero_id,50) end; + startThread(C55_ThreadedAimedSpell,hero_id,spell,cr); + repeat sleep(1) until C55_ThreadedAimedSpellDone[hero_id] == 1; + SetUnitManaPoints(hero_id,mana); + setATB(hero_id,atb); + C55_ThreadedAimedSpellDone[hero_id] = 0; + break; + end; + end; + end; +end; + +function C55_ThreadedAreaSpell(hero_id,spell,x,y) + repeat sleep(1) until GetUnitManaPoints(hero_id) >= 20; + UnitCastAreaSpell(hero_id,spell,x,y) + C55_ThreadedAreaSpellDone[hero_id] = 1; +end; + +function C55_FreeMines(unitName,side,hero_id,atb,faction,tier) + local creatures = GetUnits(side,CREATURE); + for i,cr in creatures do + if GetCreatureNumber(cr) >= 2 then + if GetCreatureType(cr) == C55_Creatures[faction][tier][1] or + GetCreatureType(cr) == C55_Creatures[faction][tier][2] or + GetCreatureType(cr) == C55_Creatures[faction][tier][3] then + setATB(unitName,0.99); + local mana = GetUnitManaPoints(hero_id); + local x,y = GetUnitPosition(cr); + if side == 0 then x=x+1 else x=x-1 end; + if mana < 20 then SetUnitManaPoints(hero_id,20) end; + startThread(C55_ThreadedAreaSpell,hero_id,38,x,y); + repeat sleep(1) until C55_ThreadedAreaSpellDone[hero_id] == 1; + SetUnitManaPoints(hero_id,mana); + setATB(hero_id,atb); + C55_ThreadedAreaSpellDone[hero_id] = 0; + break; + end; + end; + end; +end; + +function C55_FreeSummon(side,heroname,faction,tier,power) + local creatures = GetUnits(side,CREATURE); + local amount = 0; + for i,cr in creatures do + if GetCreatureType(cr) == C55_Creatures[faction][tier][1] or + GetCreatureType(cr) == C55_Creatures[faction][tier][2] or + GetCreatureType(cr) == C55_Creatures[faction][tier][3] then + amount = amount + GetCreatureNumber(cr); + end; + end; + if amount > 0 then + local x,y = 3,7; + if side == 1 then x=14 end; + local qty = math.floor(amount/power); + if qty >= 2 and GetHero(C55_Reverse[side]) and GetHost(C55_Reverse[side]) == HUMAN then + qty = math.ceil(qty/2); + end; + if qty > 0 then + SummonCreature(side,C55_Creatures[faction][tier][1],qty,x,y); + end; + end; +end; + +function C55_ElementalSummon(side,hero_id,heroname) + local x,y = 3,7; + local elemental = 88; + if side == 1 then x=14 end; + if side == 1 then elemental = 85 end; + local maxmana = GetUnitMaxManaPoints(hero_id); + local amount = 1+ math.floor(math.sqrt(maxmana)*(maxmana/200)); + --local amount = 1 + math.floor((maxmana/2500)*maxmana); + if amount >= 2 and GetHost(C55_Reverse[side]) == HUMAN then --and GetHero(C55_Reverse[side]) + amount = math.ceil(amount/2); + end; + SummonCreature(side,elemental,amount,x,y); +end; + +function C55_CastersMana(side,faction,tier,qty1,qty2,qty3) + local creatures = GetUnits(side,CREATURE); + for i,cr in creatures do + if qty1 ~= 0 then + if GetCreatureType(cr) == C55_Creatures[faction][tier][1] then + local mana = GetUnitMaxManaPoints(cr)+qty1; + SetUnitManaPoints(cr,mana); + end; + end; + if qty2 ~= 0 then + if GetCreatureType(cr) == C55_Creatures[faction][tier][2] then + local mana = GetUnitMaxManaPoints(cr)+qty2; + SetUnitManaPoints(cr,mana); + end; + end; + if qty3 ~= 0 then + if GetCreatureType(cr) == C55_Creatures[faction][tier][3] then + local mana = GetUnitMaxManaPoints(cr)+qty3; + SetUnitManaPoints(cr,mana); + end; + end; + end; +end; + +function C55_StalkerMana(side) + local creatures = GetUnits(side,CREATURE); + for i,cr in creatures do + if GetCreatureType(cr) == C55_Creatures[6][1][3] then + local amount = GetCreatureNumber(cr); + if amount < 7 then + SetUnitManaPoints(cr,0); + end; + end; + end; +end; + +function C55_GremlinMana(side) + local creatures = GetUnits(side,CREATURE); + for i,cr in creatures do + if GetCreatureType(cr) == C55_Creatures[5][1][2] then + local amount = GetCreatureNumber(cr); + if amount < 20 then + SetUnitManaPoints(cr,0); + end; + end; + end; +end; + +function C55_NeutralsMana(side) + local creatures = GetUnits(side,CREATURE); + for i,cr in creatures do + if GetCreatureType(cr) == C55_Creatures[1][5][1] or + GetCreatureType(cr) == C55_Creatures[1][5][2] or + GetCreatureType(cr) == C55_Creatures[1][5][3] then + SetUnitManaPoints(cr,0); + end; + if GetCreatureType(cr) == C55_Creatures[3][4][1] or + GetCreatureType(cr) == C55_Creatures[3][4][2] then + SetUnitManaPoints(cr,0); + end; + if GetCreatureType(cr) == C55_Creatures[4][5][1] then + SetUnitManaPoints(cr,0); + end; + if GetCreatureType(cr) == C55_Creatures[6][6][1] or + GetCreatureType(cr) == C55_Creatures[6][6][2] then + SetUnitManaPoints(cr,0); + end; + if GetCreatureType(cr) == C55_Creatures[7][5][1] then + SetUnitManaPoints(cr,0); + end; + if GetCreatureType(cr) == C55_Creatures[8][4][1] then + SetUnitManaPoints(cr,0); + end; + end; +end; + +function C55_ManaSpecialists(side,heroname) + if heroname == "GodricMP" then C55_CastersMana(side,1,5,6,14,7) end; + if heroname == "Ildar" then C55_CastersMana(side,2,4,6,12,0) end; --C55_IldarMana(side,2,4,6,14,8) end; + if heroname == "Malustar" then C55_CastersMana(side,3,6,0,14,0) end; + if heroname == "Vidomina" then C55_CastersMana(side,4,5,7,6,14) end; + if heroname == "Razzak" then C55_CastersMana(side,5,4,1,12,7) end; + if heroname == "ShadwynMP" then C55_CastersMana(side,6,6,7,13,6) end; + if heroname == "Hero9" then C55_CastersMana(side,8,1,0,0,20) end; +end; + +function C55_CombatPrepare() + --if GetUnits(ATTACKER,HERO) then + if GetHero(ATTACKER) then + local attacker = GetHeroName(GetAttackerHero()) + C55_FirstMover[attacker] = 0; + C55_Pounding[attacker] = 0; + C55_Acted[attacker] = 0; + --C55_BallistaMover[attacker] = 0; + --C55_TankMover[attacker] = 0; + print("C55 Combat prepared for "..attacker); + end; + --if GetUnits(DEFENDER,HERO) then + if GetHero(DEFENDER) then + local defender = GetHeroName(GetDefenderHero()) + C55_FirstMover[defender] = 0; + C55_Pounding[defender] = 0; + C55_Acted[defender] = 0; + --C55_BallistaMover[defender] = 0; + --C55_TankMover[defender] = 0; + print("C55 Combat prepared for "..defender); + end; +end; + +function C55_CombatStart() + --if GetUnits(ATTACKER,HERO) then + if GetHero(ATTACKER) then + local attacker_id = GetAttackerHero(); + local attacker = GetHeroName(attacker_id); + C55_ManaSpecialists(ATTACKER,attacker); + C55_StalkerMana(ATTACKER); + C55_GremlinMana(ATTACKER); + + if attacker == "Gillion" then startThread(C55_FreeSummon,ATTACKER,attacker,2,2,4) end; + if attacker == "Gem" then startThread(C55_FreeSummon,ATTACKER,attacker,2,1,4) end; + if attacker == "Nimbus" then startThread(C55_FreeSummon,ATTACKER,attacker,4,1,4) end; + if attacker == "Muscip" then startThread(C55_FreeSummon,ATTACKER,attacker,4,3,4) end; + if attacker == "Maximus" then startThread(C55_FreeSummon,ATTACKER,attacker,7,4,4) end; + if attacker == "Gurvilin" then startThread(C55_FreeSummon,ATTACKER,attacker,5,2,4) end; + if attacker == "Ohtarig" then startThread(C55_FreeSummon,ATTACKER,attacker,6,1,4) end; + if attacker == "Zehir" then startThread(C55_ElementalSummon,ATTACKER,attacker_id,attacker) end; + if attacker == "Vaniel" then startThread(C55_ElementalSummon,ATTACKER,attacker_id,attacker) end; + + if attacker == "Straker" then C55_FreeSpecial(ATTACKER,176,4,2) end; + if attacker == "ThralsaiMP" then C55_FreeSpecial(ATTACKER,176,6,5) end; + if attacker == "Mardigo" then C55_FreeSpecial(ATTACKER,176,1,3) end; + if attacker == "Laszlo" then C55_FreeSpecial(ATTACKER,176,1,3) end; + if attacker == "Nathaniel" then C55_FreeSpecial(ATTACKER,176,1,1) end; + + -- if GetGameVar("C55_Cart_"..attacker) == "On" and GetWarMachine(ATTACKER,WAR_MACHINE_AMMO_CART) then + -- C55_ManaCart(attacker_id); + -- end; + else + C55_StalkerMana(ATTACKER); + C55_GremlinMana(ATTACKER); + -- if GetHost(ATTACKER) ~= HUMAN then + -- C55_NeutralsMana(ATTACKER); + -- end; + end; + + --if GetUnits(DEFENDER,HERO) then + if GetHero(DEFENDER) then + local defender_id = GetDefenderHero(); + local defender = GetHeroName(defender_id); + C55_ManaSpecialists(DEFENDER,defender); + C55_StalkerMana(DEFENDER); + C55_GremlinMana(DEFENDER); + + if defender == "Gillion" then startThread(C55_FreeSummon,DEFENDER,defender,2,2,4) end; + if defender == "Gem" then startThread(C55_FreeSummon,DEFENDER,defender,2,1,4) end; + if defender == "Nimbus" then startThread(C55_FreeSummon,DEFENDER,defender,4,1,4) end; + if defender == "Muscip" then startThread(C55_FreeSummon,DEFENDER,defender,4,3,4) end; + if defender == "Maximus" then startThread(C55_FreeSummon,DEFENDER,defender,7,4,4) end; + if defender == "Gurvilin" then startThread(C55_FreeSummon,DEFENDER,defender,5,2,4) end; + if defender == "Ohtarig" then startThread(C55_FreeSummon,DEFENDER,defender,6,1,4) end; + if defender == "Vaniel" then startThread(C55_ElementalSummon,DEFENDER,defender_id,defender) end; + if defender == "Zehir" then startThread(C55_ElementalSummon,DEFENDER,defender_id,defender) end; + + if defender == "Straker" then C55_FreeSpecial(DEFENDER,176,4,2) end; + if defender == "ThralsaiMP" then C55_FreeSpecial(DEFENDER,176,6,5) end; + if defender == "Mardigo" then C55_FreeSpecial(DEFENDER,176,1,3) end; + if defender == "Laszlo" then C55_FreeSpecial(DEFENDER,176,1,3) end; + if defender == "Nathaniel" then C55_FreeSpecial(DEFENDER,176,1,1) end; + + -- if GetGameVar("C55_Cart_"..attacker) == "On" and GetWarMachine(DEFENDER,WAR_MACHINE_AMMO_CART) then + -- C55_ManaCart(defender_id); + -- end; + else + C55_StalkerMana(DEFENDER); + C55_GremlinMana(DEFENDER); + if GetHost(DEFENDER) ~= HUMAN then + C55_NeutralsMana(DEFENDER); + end; + end; +end; + +function C55_ActFirst(unitName,side,heroname,hero_id) + if C55_Acted[heroname] == 0 then + C55_Acted[heroname] = 1; + local value = math.random(1,10); + local atb = C55_MediumATB[value]; + --if heroname == "Ash" or heroname == "Cyrus" then atb = C55_WeakATB[value] end; + if heroname == "Ufretin" or heroname == "Nur" or heroname == "Bart" then atb = C55_StrongATB[value] end; + -- if GetGameVar("C55_Swift_"..heroname) == "On" then atb = atb + 0.25 end; + -- if GetGameVar("C55_Chill_"..heroname) == "On" then C55_ChillingSummon(unitName,side,heroname,15); + + if heroname == "Hero1" then if unitName == hero_id then C55_PoundEnemy(side) end; + elseif heroname == "Isabell" then C55_BoostATB(unitName,side,1,3,1,1,1); + elseif heroname == "OrlandoMP" then C55_FreeSpell(unitName,side,hero_id,278,atb,1,4); + --elseif heroname == "Gem" then C55_FreeSpell(unitName,side,hero_id,25,atb,2,1); + elseif heroname == "Mephala" then C55_BoostATB(unitName,side,2,6,1,1,1); + elseif heroname == "Nymus" then C55_BoostATB(unitName,side,3,2,1,1,1); + elseif heroname == "Malustar" then C55_BoostATB(unitName,side,3,6,0,0,1); + elseif heroname == "Ash" then C55_FreeSpell(unitName,side,hero_id,278,atb,3,5); + elseif heroname == "Isher" then C55_BoostATB(unitName,side,5,3,1,1,1); + --elseif heroname == "Rissa" then C55_FreeSpell(unitName,side,hero_id,23,atb,5,7); + --elseif heroname == "Davius" then C55_FreeSpell(unitName,side,hero_id,280,atb,5,6); + elseif heroname == "Davius" then C55_BoostATB(unitName,side,5,6,1,1,1); + elseif heroname == "Nur" then C55_FreeMines(unitName,side,hero_id,atb,5,2); + elseif heroname == "Cyrus" then C55_FreeSpell(unitName,side,hero_id,278,atb,5,5); + elseif heroname == "Darkstorm" then C55_BoostATB(unitName,side,6,3,1,1,1); + elseif heroname == "Bersy" then C55_BoostATB(unitName,side,7,3,1,1,1); + elseif heroname == "Ufretin" then C55_FreeSpell(unitName,side,hero_id,28,atb,7,6); + elseif heroname == "Hangvul2" then C55_BoostATB(unitName,side,7,7,1,1,1); + elseif heroname == "Bart" then C55_FreeMines(unitName,side,hero_id,atb,7,1); + elseif heroname == "Hero8" then C55_BoostATB(unitName,side,8,3,1,1,1); + elseif heroname == "Hero9" then C55_BoostATB(unitName,side,8,1,1,1,0); + elseif heroname == "GottaiMP" then C55_BoostATB(unitName,side,8,7,1,1,1); + --elseif heroname == "Gottai" then C55_FreeSpell(unitName,side,hero_id,291,atb,8,3) + end; + -- end; + end; +end; + +function C55_Combat(unitName) + -- if GetUnits(ATTACKER,HERO) and GetUnits(DEFENDER,HERO) then + if GetHero(ATTACKER) and GetHero(DEFENDER) then + local attacker_id = GetAttackerHero(); + local defender_id = GetDefenderHero(); + local attacker = GetHeroName(attacker_id); + local defender = GetHeroName(defender_id); + if C55_FirstMover[attacker] == 0 or C55_FirstMover[defender] == 0 then + C55_FirstMover[attacker] = 0; + C55_FirstMover[defender] = 0; + if C55_FastActors[attacker] == 1 then + C55_ActFirst(unitName,ATTACKER,attacker,attacker_id); + end; + if C55_FastActors[defender] == 1 then + C55_ActFirst(unitName,DEFENDER,defender,defender_id); + end; + C55_FirstMover[attacker] = 1; + C55_FirstMover[defender] = 1; + print("C55 Combat started between "..attacker.." and "..defender); + end; + --elseif GetUnits(ATTACKER,HERO) then + elseif GetHero(ATTACKER) then + local attacker_id = GetAttackerHero(); + local attacker = GetHeroName(attacker_id); + if C55_FirstMover[attacker] == 0 then + if C55_FastActors[attacker] == 1 then + C55_ActFirst(unitName,ATTACKER,attacker,attacker_id); + end; + C55_FirstMover[attacker] = 1; + print("C55 Combat started for "..attacker); + end; + elseif GetHero(DEFENDER) then + local defender_id = GetDefenderHero(); + local defender = GetHeroName(defender_id); + if C55_FirstMover[defender] == 0 then + if C55_FastActors[defender] == 1 then + C55_ActFirst(unitName,DEFENDER,defender,defender_id); + end; + C55_FirstMover[defender] = 1; + print("C55 Combat started for "..defender); + end; + end; +end; + +--------------------------------------------------------------------------------------------------------------------------------------------- +--APPENDIX +--------------------------------------------------------------------------------------------------------------------------------------------- + +-- function C55_ManaCart(hero_id) + -- local mana = GetUnitManaPoints(hero_id); + -- local managoal = mana + 6 + -- local maxmana = GetUnitMaxManaPoints(hero_id); + -- if (maxmana-mana) > 5 then + -- SetUnitManaPoints(hero_id,managoal); + -- sleep(1); + -- else + -- SetUnitManaPoints(hero_id,maxmana); + -- sleep(1); + -- end; +-- end; + +-- function C55_BallistaSalvo(side,unitName) + -- local creatures = GetUnits(C55_Reverse[side],CREATURE); + -- --local stacks = table.length(creatures); + -- --local target = 0; if stacks >= 2 then target = math.random(0,stacks) end; + -- if creatures ~= nil then + -- ShootCombatUnit(unitName,creatures[0]); + -- setATB(unitName,1); + -- end; +-- end; + +-- function C55_PullTank(side,attacker,faction,tier) + -- local creatures = GetUnits(side,CREATURE); + -- for i,cr in creatures do + -- if GetCreatureNumber(cr) >= 2 then + -- if GetCreatureType(cr) == C55_Creatures[faction][tier][1] or + -- GetCreatureType(cr) == C55_Creatures[faction][tier][2] or + -- GetCreatureType(cr) == C55_Creatures[faction][tier][3] then + -- setATB(cr,1); + -- --break; + -- end; + -- end; + -- end; +-- end; + +-- C55_LargeCreatures = { +-- 7,8,109,11,12,111,13,14,112, --Haven +-- 51,52,149,53,54,150,55,56,151, --Sylvan +-- 23,24,135,25,26,136,27,28,137, --Inferno +-- 37,38,156,39,40,157,41,42,158, --Necropolis +-- 65,66,163,67,68,164,69,70,165, --Academy +-- 77,78,141,79,80,142,83,84,144, --Dungeon +-- 96,97,168,102,103,171,104,105,172, --Fortress +-- 119,120,174,127,128,178,129,130,179 --Stronghold +-- }; + +--------------------------------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/scripts/H55-Core.lua b/scripts/H55-Core.lua new file mode 100644 index 00000000..cd85982b --- /dev/null +++ b/scripts/H55-Core.lua @@ -0,0 +1,7973 @@ +---------------------------------------------------------------------------------------------------------------------------------------------------- +--MIGHT & MAGIC: HEROES 5.5 - CORE +---------------------------------------------------------------------------------------------------------------------------------------------------- + +--Author: Magnomagus + +---------------------------------------------------------------------------------------------------------------------------------------------------- +--VARIABLES +---------------------------------------------------------------------------------------------------------------------------------------------------- + +dofile("/scripts/H55-Version.lua"); + +--Settings + +H55_Switch = 1; +H55_Difficulty = GetDifficulty(); +H55_EnableModes = 1; +H55_GameMode = 0; +H55_MapType = ""; +H55_AmountCrashes = 0; +H55_CycleSpeed = 2; +H55_PuzzleQuest = 0; +H55_DEBUG = {0,"",0,""}; +H55_DbgTxt = {0,"",0,""}; +H55_ErrorCounter = 0; +H55_ErrorLogbook = {}; +H55_ErrorLogbook[0] = {"X",0,"Test",0,0}; +H55_Sign_Queue = {[0]=0,[1]=0,[2]=0,[3]=0,[4]=0,[5]=0,[6]=0,[7]=0,[8]=0}; +H55_MsgSleep = 7; H55_MsgTime = 7; H55_MsgDelay = 8; +H55_Day = 1; H55_Week = 1; H55_Month = 1; H55_Workday = 1; +H55_DailyEventsCounter = {0,0,0,0,0,0,0,0}; +H55_BankDay = 0; +H55_StaticBanks = 0; +H55_NewDayTrigger = 0; H55_SecNewDayTrigger = 0; H55_ThrNewDayTrigger = 0; H55_FrtNewDayTrigger = 0; H55_FifNewDayTrigger = 0; +H55_DelayedVariables = 0; +H55_AdvMapProcessed = 0; +H55_GenerateMixedStacks = 1; H55_ForceMixedStacks = 0; H55_AskForMixedStacks = 0; H55_SkipModifyStackSize = 0; H55_MixedByMapmixer = 0; H55_MixingStacksComplete = 0; H55_MixDecisionDelay = 0; +H55_MixStacksThreshold = 200; +H55_NeutralStackSize = 1; +H55_BanksDifficulty = 1; +H55_AveragePowerRating = 1000; +H55_HiddenArtifacts = 0; +H55_MonsterSettingAdjust = 0.7; +H55_LowResGame = 0; +H55_AICheatMode = 4; +H55_RoleModes = {}; +H55_AICreepingPower = {["Normal"]=0.4,["Hard"]=0.6,["Heroic"]=0.8,["Impossible"]=1}; +H55_DifficultyToString = {[0]="Normal",[1]="Hard",[2]="Heroic",[3]="Impossible"}; +H55_AILastFightingDay = 0; +H55_ForceAIFix = 0; +H55_NoAutoTeamHumans = 0; +-- H55_AIHandicap = 0; +H55_TownGateEnabled = 1; +H55_TeleportAngles = {[1] = 0,[2] = 90,[3] = 180,[4] = 270}; +H55_TownConvEnabled = 0; +H55_AmountExtraTownsDwellings = 1; +H55_GovernanceEnabled = 0; +H55_GovernorExpCoef = 1; +H55_MineControl = 0; +H55_DimensionDoors = 1; +H55_DimensionDoorsOnThisMap = 0; +H55_IgnoreExpAdjustment = 0; +H55_NoMentoring = 0; +H55_NoHillFortsOnARMG = 0; +H55_CompetitiveARMGTowns = 1; +H55_PrisonersAdjustToHeroRace = 0; +H55_BuildNeutralTowns = 0; H55_BuildPlayerTowns = 0; +H55_RPGPotions = 0; +H55_NegativeArtifacts = 1; +H55_MoonDiscQuest = 0; H55_MoonDiscOnARMGMaps = 1; +H55_MoonDiscDiscoveryPattern = random(3)+1; +H55_MoonDiscsFound = 0; +H55_ManaObservatories = 1; +H55_NoArtifactMerchantsInTowns = 0; +H55_ForcedObelisk = 0; H55_ForcedShantiri = 0; +H55_ARMG_Duel = 0; +H55_Duel_HeroLevel = 25; +H55_Duel_WeeksGrowth = 8; +H55_Duel_Relics = 4; H55_Duel_Majors = 8; H55_Duel_Minors = 4; +H55_Duel_BankDifficulty = 3; +H55_DuelExperienceReceived = {}; H55_DuelArtifactsReceived = {}; +H55_Duel_MessageFirst = 0; H55_Duel_MessageShown = {0,0,0,0,0,0,0,0}; +consoleCmd("setvar dev_console_password = schwinge-des-todes"); + +--Campaigns and Scenarios + +H55_ArtifactsIndexed = 0; +H55_MinorArtifactsUsed = {}; H55_MajorArtifactsUsed = {}; H55_RelicArtifactsUsed = {}; H55_UltimateArtifactsUsed = {}; +H55_RemoveTheseArtifactsFromBanks = {}; + +--Events + +H55_SPMapWeeklyEvent = 0; +H55_SPMapDailyEvent = 0; +H55_SPMapContinuesEvent = 0; --add this one to the end of mapscript, otherwise it may not have read the function before it is invoked + +--Following functions can be inserted on map level: + +--function H55_SPMap_WeeklyEvent() +--end; + +--function H55_SPMap_DailyEvent() +--end; + +--function H55_SPMap_ContinuesEvent() +--end; + +dofile("/scripts/H55-Settings.lua"); + +--AI + +H55_PlayerTeams = {}; +H55_PlayerStatus = {0,0,0,0,0,0,0,0}; +H55_PlayerFactions = {0,0,0,0,0,0,0,0}; +H55_AIStartResources = {10001,10501,10601,10701,10801,10901,11001,20001,20501,20601,20701,20801,20901,21001,30001,30501,30601,30701,30801,30901,31001,50001,50501,50601,50701,50801,50901,51001}; +H55_AIStartResourcesNormal = {10000,10500,10600,10700,10800,10900,11000,20000,20500,20600,20700,20800,20900,21000,30000,30500,30600,30700,30800,30900,31000,50000,50500,50600,50700,50800,50900,51000}; +H55_AmountAIBankVisits = 0; +H55_AmountCyclesAI = 0; +H55_AIGoesNuclear = 0; + +H55_StartBonusGold = { +10500,10600,10700,10800,10900,11000, +20500,20600,20700,20800,20900,21000, +30500,30600,30700,30800,30900,31000, +50500,50600,50700,50800,50900,51000, +10501,10601,10701,10801,10901,11001, +20501,20601,20701,20801,20901,21001, +30501,30601,30701,30801,30901,31001, +50501,50601,50701,50801,50901,51001 +}; + +H55_StartBonusNormal = {18,19,20,21}; +H55_StartBonusHard = {13,14,15,16}; +H55_StartBonusImpossible = {8,9,10,11}; + +H55_StartBonusNormalWO = {33,34,35,36}; +H55_StartBonusHardWO = {23,24,25,26}; +H55_StartBonusImpossibleWO = {13,14,15,16}; + +--Neutrals + +H55_TownQtyDivisor = 1; +H55_TownQtyBankDifficulty = 0.01; +H55_PvPBanks = 0; + +--Town Gate + +H55_TeleportStatus = {}; +H55_TownGateOwners = {}; +H55_SpinSwitch = {}; + +--Dimension Doors + +H55_EndDoorSpin = {}; +H55_BreakDoorSpin = {}; +H55_InterfacingPermit = {}; +H55_InterfacingStatus = {}; +H55_InterfacingPosition = {}; +H55_InterfacingTown = {}; + +--Town Conversion + +H55_TownManageOwners = {}; +H55_TownConvOwners = {}; +H55_MaxTownsPerFaction = 1; +H55_AmountAIConversions = 0; H55_AmountAIDwellingConversions = 0; +H55_MaxDwellingsT1 = 2; H55_MaxDwellingsT2 = 2; H55_MaxDwellingsT3 = 2; H55_MaxDwellingsT4 = 4; +H55_UniqueDwellings = {}; + +--Governance + +H55_Governors = {}; +H55_GovernorsWithTown = {}; +H55_TownsWithGovernor = {}; +H55_GovernorInaugurationDay = {}; +H55_CastleDefenseOwners = {}; +H55_MageGuildBonusOwners = {}; +H55_SpecialAttackOwners = {}; H55_SpecialKnowledgeOwners = {}; H55_SpecialSpellPowerOwners = {}; +H55_RunicShrineBonusOwners = {}; +H55_GovernanceTier1 = {}; H55_GovernanceTier2 = {}; H55_GovernanceTier3 = {}; H55_GovernanceTier4 = {}; H55_GovernanceTier5 = {}; H55_GovernanceTier6 = {}; H55_GovernanceTier7 = {}; + +--Economy + +H55_GlobalWeeklyWoodPayout = {0,0,0,0,0,0,0,0}; H55_GlobalDailyWoodPayout = {0,0,0,0,0,0,0,0}; +H55_GlobalWeeklyOrePayout = {0,0,0,0,0,0,0,0}; H55_GlobalDailyOrePayout = {0,0,0,0,0,0,0,0}; +H55_GlobalWeeklyMercuryPayout = {0,0,0,0,0,0,0,0}; H55_GlobalDailyMercuryPayout = {0,0,0,0,0,0,0,0}; +H55_GlobalWeeklyCrystalPayout = {0,0,0,0,0,0,0,0}; H55_GlobalDailyCrystalPayout = {0,0,0,0,0,0,0,0}; +H55_GlobalWeeklySulphurPayout = {0,0,0,0,0,0,0,0}; H55_GlobalDailySulphurPayout = {0,0,0,0,0,0,0,0}; +H55_GlobalWeeklyGemPayout = {0,0,0,0,0,0,0,0}; H55_GlobalDailyGemPayout = {0,0,0,0,0,0,0,0}; +H55_GlobalWeeklyGoldPayout = {0,0,0,0,0,0,0,0}; H55_GlobalDailyGoldPayout = {0,0,0,0,0,0,0,0}; + +--Supply + +H55_SupplierCost = 500; +H55_MysticalGardens = GetObjectNamesByType("BUILDING_MYSTICAL_GARDEN"); H55_MysticalGardenClaims = {}; +H55_Windmills = GetObjectNamesByType("BUILDING_WINDMILL"); H55_WindmillClaims = {}; +H55_Waterwheels = GetObjectNamesByType("BUILDING_WATER_WHEEL"); H55_WaterwheelClaims = {}; +H55_SiegeWorkshops = GetObjectNamesByType("BUILDING_WARMACHINE_FACTORY"); H55_SiegeWorkshopClaims = {}; + +H55_MysticalGardensOwned = {}; H55_WeeklyMysticalGardenRes = {}; +H55_WindmillsOwned = {}; H55_WeeklyWindmillRes = {}; H55_WeeklyWindmillResQty = {}; +H55_WaterwheelsOwned = {}; +H55_SiegeWorkshopsOwned = {}; H55_WeeklySiegeWorkshopResQty = {}; + +H55_DwarvenNetworkOwners = {}; +H55_NetworkSkillAmount = {0,0,0,0,0,0,0,0}; + +--Skills + +H55_HeroPositionTracker = {}; +H55_HeroMaxMoveTracker = {}; +H55_HeroMoveTracker = {}; +H55_HeroRestoredMovementTracker = {}; +H55_HeroManaTracker = {}; + +H55_OccultismPowerOwners = {}; +H55_AmmoCartPowerOwners = {}; +H55_SecretsPowerOwners = {}; +H55_InsightsPowerOwners = {}; +H55_StaminaPowerOwners = {}; +H55_TribalPowerOwners = {}; +H55_LearningPowerOwners = {}; H55_BLearningPowerOwners = {}; +H55_NecroLeadPowerOwners = {}; +H55_VoicePowerOwners = {}; +H55_OverkillOwners = {}; +H55_DemonicFlameOwners = {}; +H55_DemonicRetaliationOwners = {}; +H55_ChillingBonesOwners = {}; +H55_DarkEmissaryOwners = {}; +H55_ExplodingCorpsesOwners = {}; +H55_ElderChiefOwners = {}; +H55_BodybuildingOwners = {}; +H55_WeakenStrikeOwners = {}; +H55_RunicKnowledgeOwners = {}; +H55_RetributionOwners = {}; +H55_KnowYourEnemyOwners = {}; +H55_ForestRageOwners = {}; +H55_ANecromancyAbusers = {}; +H55_BNecromancyAbusers = {}; +H55_ENecromancyAbusers = {}; +H55_ALogisticsAbusers = {}; +H55_BLogisticsAbusers = {}; +H55_ELogisticsAbusers = {}; +H55_AArtificerAbusers = {}; +H55_BArtificerAbusers = {}; +H55_EArtificerAbusers = {}; +--H55_MentoringOwners = {}; +--H55_BarbarianMentoringOwners = {}; +H55_DoubleCatapultOwners = {}; H55_DoubleCatapultExpertOwners = {}; H55_DoubleCatapultRingOwners = {}; +H55_PreparationOwners = {}; +H55_BackToVoidOwners = {}; +H55_RefinedManaOwners = {}; H55_BRefinedManaOwners = {}; +H55_StudentAwardOwners = {}; +H55_AcademyAwardOwners = {}; +H55_TwistedAvengerOwners = {}; +H55_LuckySpellsOwners = {}; +H55_ExpertTrainerOwners = {}; +H55_SealOfProtectionOwners = {}; +H55_LastStandOwners = {}; +H55_VitalityOwners = {}; +H55_ExplorerAidOwners = {}; +H55_DarkHealOwners = {}; +H55_ShacklesOwners = {}; +H55_MeltArtifactOwners = {}; +H55_PowerOfStoneOwners = {}; +H55_NecroBlessOwners = {}; +H55_AncientSmithyOwners = {}; +H55_FireResistanceOwners = {}; +H55_PariahOwners = {}; +H55_PariahPenaltyOwners = {}; +H55_DeadlyColdOwners = {}; + +H55_WeakenDarkOwners = {}; H55_WeakenLightOwners = {}; H55_WeakenDestructiveOwners = {}; H55_WeakenSummoningOwners = {}; +H55_DetainDarkOwners = {}; H55_DetainLightOwners = {}; H55_DetainDestructiveOwners = {}; H55_DetainSummoningOwners = {}; + +--H55_CombatManaCartOwners = {}; +--H55_CombatBallistaSalvoOwners = {}; +--H55_CombatBrimstoneSalvoOwners = {}; +--H55_CombatChillingOwners = {}; +--H55_CombatQuickMindOwners = {}; +--H55_CombatRefinedOwners = {}; +--H55_CombatSummonOwners = {}; +--H55_CombatSummonSpecialists = {"Gurvilin","Vaniel","Zehir","Gem","Nimbus","Maximus","Ohtarig","Gillion"}; + +H55_ScholarOwners = { +[3] = { + [SKILL_SUMMONING_MAGIC] = {}, + [SKILL_DESTRUCTIVE_MAGIC] = {}, + [SKILL_DARK_MAGIC] = {}, + [SKILL_LIGHT_MAGIC] = {} +}, +[4] = { + [SKILL_SUMMONING_MAGIC] = {}, + [SKILL_DESTRUCTIVE_MAGIC] = {}, + [SKILL_DARK_MAGIC] = {}, + [SKILL_LIGHT_MAGIC] = {} +} +}; + +H55_WisdomOwners = { +[4] = { + [SKILL_SUMMONING_MAGIC] = {}, + [SKILL_DESTRUCTIVE_MAGIC] = {}, + [SKILL_DARK_MAGIC] = {}, + [SKILL_LIGHT_MAGIC] = {} +}, +[5] = { + [SKILL_SUMMONING_MAGIC] = {}, + [SKILL_DESTRUCTIVE_MAGIC] = {}, + [SKILL_DARK_MAGIC] = {}, + [SKILL_LIGHT_MAGIC] = {} +} +}; + +--Rune Recycling + +H55_RuneCostPatterns = { + [SPELL_RUNE_OF_CHARGE] = {[0]=0,[1]=1,[2]=5,[3]=0,[4]=0,[5]=0}, + [SPELL_RUNE_OF_BERSERKING] = {[0]=0,[1]=1,[2]=0,[3]=0,[4]=2,[5]=0}, + [SPELL_RUNE_OF_MAGIC_CONTROL] = {[0]=0,[1]=1,[2]=1,[3]=0,[4]=0,[5]=0}, + [SPELL_RUNE_OF_EXORCISM] = {[0]=0,[1]=1,[2]=0,[3]=0,[4]=0,[5]=1}, + [SPELL_RUNE_OF_ELEMENTAL_IMMUNITY] = {[0]=0,[1]=1,[2]=0,[3]=2,[4]=0,[5]=0}, + [SPELL_RUNE_OF_STUNNING] = {[0]=0,[1]=1,[2]=3,[3]=0,[4]=0,[5]=0}, + [SPELL_RUNE_OF_BATTLERAGE] = {[0]=0,[1]=1,[2]=0,[3]=0,[4]=0,[5]=5}, + [SPELL_RUNE_OF_ETHEREALNESS] = {[0]=0,[1]=1,[2]=0,[3]=4,[4]=0,[5]=0}, + [SPELL_RUNE_OF_REVIVE] = {[0]=0,[1]=1,[2]=0,[3]=0,[4]=0,[5]=3}, + [SPELL_RUNE_OF_DRAGONFORM] = {[0]=0,[1]=1,[2]=0,[3]=0,[4]=4,[5]=0} +}; + +H55_FortressHeroes = {"Wulfstan","Rolf","Maximus","Tazar","Ingvar","Skeggy","Hangvul2","KingTolghar","Ufretin","Bersy","Ottar","Una","Bart","Vilma","Hangvul","Brand","Egil","Vegeyr"}; + +H55_PreCombatResources = {}; +H55_PostCombatResources = {}; +H55_CIRecycleRune = {}; +H55_CIProcessedRune = {}; + +for i,hero in H55_FortressHeroes do + H55_PreCombatResources[hero] = {}; +end; +for i,hero in H55_FortressHeroes do + H55_PostCombatResources[hero] = {}; +end; + +--Town Buildings + +H55_HallIntrigueStudent = {}; +H55_FountainStudent = {}; +H55_PrimalAltarStudent = {}; +H55_BrotherhoodStudent = {}; +H55_PileSkullsStudent = {}; +--H55_NecroAmplifyStudent = {}; +H55_SacrificialPitStudent = {}; +H55_LoomStudent = {}; + +for i, town in GetObjectNamesByType("TOWN") do + H55_HallIntrigueStudent[town] = {}; + H55_FountainStudent[town] = {}; + H55_PrimalAltarStudent[town] = {}; + H55_BrotherhoodStudent[town] = {}; + H55_PileSkullsStudent[town] = {}; + H55_LoomStudent[town] = {}; + --H55_NecroAmplifyStudent[town] = {}; + H55_SacrificialPitStudent[town] = {}; +end; + +H55_HallTrialStudent = {}; H55_HallCourageStudent = {}; H55_HallMightStudent = {}; +H55_WalkerHutStudent = {}; +H55_ElementalAltarStudent = {}; +H55_RunicChapelStudent = {}; +H55_HorrorHallStudent = {}; + +--Artifacts + +H55_ArtWoodReceived = {}; H55_ArtOreReceived = {}; H55_ArtSulphurReceived = {}; H55_ArtCrystalReceived = {}; H55_ArtGemReceived = {}; H55_ArtMercuryReceived = {}; +H55_ArtWandStaffOwners = {}; +H55_PathfinderExpReceived = {}; +H55_ValorExpReceived = {}; +H55_AfterBattleMovement = {}; +H55_MovePaybackReceived = {}; +H55_PeltMoveReceived = {}; H55_BootsMoveReceived = {}; H55_GuardianMoveReceived = {}; +H55_HatMoveReceived = {}; H55_NecklaceMoveReceived = {}; +H55_WarPathMoveReceived = {}; +H55_AfterBattleGold = {}; +H55_PirateResourcesReceived = {}; H55_PirateGoldReceived = {}; +H55_CalhGoldReceived = {}; +H55_AfterBattleMana = {}; +H55_FlameManaReceived = {}; +H55_SwordManaReceived = {}; +H55_StickManaReceived = {}; +H55_FoldManaReceived = {}; +H55_AngelicManaReceived = {}; +H55_AxeManaReceived = {}; +H55_VizierManaLost = {}; +H55_Monk01Wearers = {}; H55_Monk01Interrupters = {}; +H55_Monk02Wearers = {}; H55_Monk02Interrupters = {}; +H55_CrownWearers = {}; H55_CrownInterrupters = {}; +H55_EldritchWearers = {}; H55_EldritchInterrupters = {}; +H55_EmberstoneWearers = {}; H55_EmberstoneInterrupters = {}; +H55_IcicleWearers = {}; H55_IcicleInterrupters = {}; +H55_SlidersWearers = {}; H55_SlidersInterrupters = {}; +H55_RobeWearers = {}; H55_RobeInterrupters = {}; +H55_RunicWearers = {}; H55_RunicInterrupters = {}; +H55_AlchemistWearers = {}; H55_AlchemistInterrupters = {}; +H55_DailyManaPayout = {}; + +H55_FlatResurrectionBaseK = {30,30,30,130,130,300,300}; +H55_FlatResurrectionScaleK = {10,10,10,10,10,10,30}; + +H55_FlatResurrectionBaseD = {30,30,30,130,130,300,300}; +H55_FlatResurrectionScaleD = {10,10,10,10,10,10,30}; + +H55_CIResurrectT1 = {}; H55_CIResurrectT2 = {}; H55_CIResurrectT3 = {}; H55_CIResurrectT4 = {}; H55_CIResurrectT5 = {}; H55_CIResurrectT6 = {}; H55_CIResurrectT7 = {}; H55_CIResurrectTALL = {}; +H55_RefuseCIResurrectT1 = {}; H55_RefuseCIResurrectT2 = {}; H55_RefuseCIResurrectT3 = {}; H55_RefuseCIResurrectT4 = {}; H55_RefuseCIResurrectT5 = {}; H55_RefuseCIResurrectT6 = {}; H55_RefuseCIResurrectT7 = {}; H55_RefuseCIResurrectTALL = {}; +H55_RefuseAgainCIResurrectT1 = {}; H55_RefuseAgainCIResurrectT2 = {}; H55_RefuseAgainCIResurrectT3 = {}; H55_RefuseAgainCIResurrectT4 = {}; H55_RefuseAgainCIResurrectT5 = {}; H55_RefuseAgainCIResurrectT6 = {}; +H55_CIResurrectAir = {}; H55_CIResurrectEarth = {}; H55_CIResurrectFire = {}; H55_CIResurrectWater = {}; +H55_RefuseCIResurrectAir = {}; H55_RefuseCIResurrectEarth = {}; H55_RefuseCIResurrectFire = {}; H55_RefuseCIResurrectWater = {}; +H55_CIResurrectEagles = {}; +H55_RefuseCIResurrectEagles = {}; +H55_LegionT1Received = {}; H55_LegionT2Received = {}; H55_LegionT3Received = {}; H55_LegionT4Received = {}; H55_LegionT5Received = {}; H55_LegionT6Received = {}; H55_LegionT7Received = {}; + +H55_DragonishSetOwners = {}; H55_DragonishHalfSetOwners = {}; +H55_NecroSetOwners = {}; H55_NecroHalfSetOwners = {}; +H55_LionSetOwners = {}; +H55_ArcherSetOwners = {}; +H55_VestmentSetOwners = {}; +H55_DwarvenSetOwners = {}; H55_DwarvenHalfSetOwners = {}; +H55_SarIssusSetOwners = {}; H55_SarIssusPlusSetOwners = {}; +H55_MonkSetOwners = {}; H55_MonkHalfSetOwners = {}; +H55_GuardianSetOwners = {}; H55_GuardianHalfSetOwners = {}; +H55_SaintSetOwners = {}; +H55_ManaPotionOwners = {}; H55_MovePotionDrinkers = {}; H55_MovePotionOwners = {}; +H55_BootsPenaltyOwners = {}; +H55_PirateSetOwners = {}; H55_PirateHalfSetOwners = {}; +H55_FizbinOwners = {}; H55_ForgingOwners = {}; +H55_HeavenlyOwners = {}; +H55_UnlootableOwners = {}; H55_UnlootableAIOwners = {}; +H55_StartPotionOwners = {}; H55_StartPotionGlobalOwners = {}; + +--Specs + +H55_IngaRandomStats = {}; for i = 1,8 do H55_IngaRandomStats[i] = random(4)+1 end; + +H55_BKnightSwitch = {0,0,0,0,0,0,0,0}; +H55_FireSwitch = {0,0,0,0,0,0,0,0}; +H55_WolfSwitch = {0,0,0,0,0,0,0,0}; +H55_ShamanPattern = {}; +H55_StatSpecNumbersB = {8,16,24,32,40,48,56,62}; +H55_StatSpecNumbersA = {7,14,21,28,35,42,49,56}; +H55_StatSpecNumbersC = {6,12,18,24,32,38,44,50}; +H55_StatSpecNumbersD = {15,30,45,60,75,90,105,120}; +H55_StatSpecReceived = {}; +H55_StartMoraleSpecialists = {"Nicolai","Jenova","Harkenraz","Rissa"}; +H55_StartMoraleReceived = {}; +H55_CrystalMoraleReceived = {}; + +H55_WeeklyRecruitsTable = {}; +H55_WeeklyReinforceTable = {}; +H55_InfernalLoomTable = {}; +H55_DefendUsTable = {}; +H55_SpoilsReceived = {}; +H55_SpellcastersReceived = {}; +H55_MoonDiscReceived = {}; + +H55_WeeklyEventsDone = {}; + +print("H55 Lua Library and Tables initialized"); + +---------------------------------------------------------------------------------------------------------------------------------------------------- +--SUPPORT FUNCTIONS +---------------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_GetMapType() + local answer = ""; + local map = GetMapDataPath(); + local campaign,bg01,nd01 = string.match(map,"Scenario"); + local scenario,bg02,nd02 = string.match(map,"SingleMissions"); + local multiplayer,bg03,nd03 = string.match(map,"Multiplayer"); + local rmg,bg04,nd04 = string.match(map,"RMG"); + if campaign ~= nil then + answer = "Campaign"; + elseif scenario ~= nil then + answer = "Scenario"; + elseif multiplayer ~= nil then + answer = "Multiplayer"; + elseif rmg ~= nil then + answer = "RMG"; + else + answer = "Scenario"; + print("H55 Map type could not be determined, map type is set to scenario."); + end; + return answer; +end; + +function H55_UpdateMapType() + H55_MapType = H55_GetMapType(); +end; + +function H55_GetDistance(object1,object2) + local x1,y1,z1 = GetObjectPosition(object1); + local x2,y2,z2 = GetObjectPosition(object2); + local a = 0; + local b = 0; + local distance = 0; + if z1 == z2 then + if x1 > x2 then a = x1-x2 elseif x2 > x1 then a = x2-x1 end; + if y1 > y2 then b = y1-y2 elseif y2 > y1 then b = y2-y1 end; + if a == 0 then + distance = b; + elseif b == 0 then + distance = a; + else + local pythagoras1 = a*a; + local pythagoras2 = b*b; + distance = math.round(math.sqrt(pythagoras1+pythagoras2)); + end; + else + distance = 1000; + end; + return distance; +end; + +function H55_GetDistanceUG(object1,object2) + local x1,y1,z1 = GetObjectPosition(object1); + local x2,y2,z2 = GetObjectPosition(object2); + local a = 0; + local b = 0; + local distance = 0; + if x1 > x2 then a = x1-x2 elseif x2 > x1 then a = x2-x1 end; + if y1 > y2 then b = y1-y2 elseif y2 > y1 then b = y2-y1 end; + if a == 0 then + distance = b; + elseif b == 0 then + distance = a; + else + local pythagoras1 = a*a; + local pythagoras2 = b*b; + distance = math.round(math.sqrt(pythagoras1+pythagoras2)); + end; + if z1 == z2 then + distance = distance + 10; + end; + return distance; +end; + +function H55_TakeResources(PlayerID,ResourceID,chosenamount,AffectedHero) + local currentamount = GetPlayerResource(PlayerID,ResourceID); + local newamount = currentamount - chosenamount; + if newamount < 0 then + SetPlayerResource (PlayerID,ResourceID,0,AffectedHero); + else + SetPlayerResource (PlayerID,ResourceID,newamount,AffectedHero); + end; +end; + +function H55_GiveResources(PlayerID,ResourceID,chosenamount,AffectedHero) + local currentamount = GetPlayerResource(PlayerID,ResourceID); + local newamount = currentamount + chosenamount; + if newamount > 0 then + SetPlayerResource(PlayerID,ResourceID,newamount,AffectedHero); + end; +end; + +function H55_TakeResourcesSilent(PlayerID,ResourceID,chosenamount) + local currentamount = GetPlayerResource(PlayerID,ResourceID); + local newamount = currentamount - chosenamount; + if newamount < 0 then + SetPlayerResource(PlayerID,ResourceID,0); + else + SetPlayerResource(PlayerID,ResourceID,newamount); + end; +end; + +function H55_GiveResourcesSilent(PlayerID,ResourceID,chosenamount) + local currentamount = GetPlayerResource(PlayerID,ResourceID); + local newamount = currentamount + chosenamount; + if newamount > 0 then + SetPlayerResource (PlayerID,ResourceID,newamount); + end; +end; + +function H55_DelayedResources(PlayerID,ResourceID,chosenamount,AffectedHero) + sleep(1); + local currentamount = GetPlayerResource(PlayerID,ResourceID); + local newamount = currentamount + chosenamount; + if newamount > 0 then + SetPlayerResource(PlayerID,ResourceID,newamount,AffectedHero); + end; +end; + +function H55_UpdatePreCombatResources(hero,player) + H55_PreCombatResources[hero][0] = GetPlayerResource(player,0); + H55_PreCombatResources[hero][1] = GetPlayerResource(player,1); + H55_PreCombatResources[hero][2] = GetPlayerResource(player,2); + H55_PreCombatResources[hero][3] = GetPlayerResource(player,3); + H55_PreCombatResources[hero][4] = GetPlayerResource(player,4); + H55_PreCombatResources[hero][5] = GetPlayerResource(player,5); +end; + +function H55_UpdatePostCombatResources(hero,player) + H55_PostCombatResources[hero][0] = GetPlayerResource(player,0); + H55_PostCombatResources[hero][1] = GetPlayerResource(player,1); + H55_PostCombatResources[hero][2] = GetPlayerResource(player,2); + H55_PostCombatResources[hero][3] = GetPlayerResource(player,3); + H55_PostCombatResources[hero][4] = GetPlayerResource(player,4); + H55_PostCombatResources[hero][5] = GetPlayerResource(player,5); +end; + +function H55_RunePayback(hero,rune) + local player = GetObjectOwner(hero); + for i=0,5,1 do + if H55_RuneCostPatterns[rune][i] > 0 then + H55_GiveResources(player,i,H55_RuneCostPatterns[rune][i],hero); + end; + end; +end; + +function H55_GetUsedRune(hero) + local answer = 248; + for i=249,258,1 do + if H55_PostCombatResources[hero][0] == H55_PreCombatResources[hero][0] - H55_RuneCostPatterns[i][0] and + H55_PostCombatResources[hero][1] == H55_PreCombatResources[hero][1] - H55_RuneCostPatterns[i][1] and + H55_PostCombatResources[hero][2] == H55_PreCombatResources[hero][2] - H55_RuneCostPatterns[i][2] and + H55_PostCombatResources[hero][3] == H55_PreCombatResources[hero][3] - H55_RuneCostPatterns[i][3] and + H55_PostCombatResources[hero][4] == H55_PreCombatResources[hero][4] - H55_RuneCostPatterns[i][4] and + H55_PostCombatResources[hero][5] == H55_PreCombatResources[hero][5] - H55_RuneCostPatterns[i][5] then + answer = i break; + end; + end; + return answer; +end; + +function H55_ArmyInfo(hero) + local units = {}; + local count = {}; + units[0], units[1], units[2], units[3], units[4], units[5], units[6] = GetHeroCreaturesTypes(hero); + for i = 0,6 do + if(units[i] ~= 0) then + count[i] = GetHeroCreatures(hero,units[i]); + else + count[i] = 0; + end; + end; + return units,count; +end; + +function H55_ArmyInfoSimple(hero) + local units = {}; + units[0], units[1], units[2], units[3], units[4], units[5], units[6] = GetHeroCreaturesTypes(hero); + return units; +end; + +function H55_MonsterInfo(creature) + local units = {}; + local creatures = {}; + units[0], units[1], units[2], units[3], units[4], units[5], units[6] = GetObjectCreaturesTypes(creature) + for i, unit in units do + if unit and unit ~= 0 then + creatures[unit] = GetObjectCreatures(creature,unit); + end; + end; + return creatures; +end; + +function H55_StackInfo(creature) + local units = {}; + local count = {}; + units[0], units[1], units[2], units[3], units[4], units[5], units[6] = GetObjectCreaturesTypes(creature); + for i = 0,6 do + if (units[i] ~= nil) and (units[i] ~= 0) then + count[i] = GetObjectCreatures(creature,units[i]); + else + count[i] = 0; + end; + end; + return units,count; +end; + +function H55_ThreadedObjectDwellingCreatures(town,crtype,amount) + SetObjectDwellingCreatures(town,crtype,(GetObjectDwellingCreatures(town,crtype)+amount)); +end; + +function H55_DelayedObjectDwellingCreatures(town,crtype,amount) + sleep(1); + SetObjectDwellingCreatures(town,crtype,(GetObjectDwellingCreatures(town,crtype)+amount)); +end; + +function H55_GetMineGuardAmount(faction,day) + local today = H55_Day; + local dif = today-day; + if dif == 0 or dif < 0 then dif = 1 end; + if dif >= 14 then dif = 14 end; + local multiplier = dif * (1/14); + local t1 = random(3)+ (math.ceil (multiplier * ((H55_Day/7) * H55_CreaturesGrowth[faction][1]))); + local t2 = random(3)+ (math.ceil (multiplier * ((H55_Day/7) * H55_CreaturesGrowth[faction][2]))); + local t3 = random(3)+ (math.ceil (multiplier * ((H55_Day/7) * H55_CreaturesGrowth[faction][3]))); + local t4 = random(3)+ (math.floor(multiplier * ((H55_Day/7) * H55_CreaturesGrowth[faction][4]))); + local t5 = random(3)+ (math.floor(multiplier * ((H55_Day/7) * H55_CreaturesGrowth[faction][5]))); + local t6 = random(2)+ (math.floor(multiplier * ((H55_Day/7) * H55_CreaturesGrowth[faction][6]))); + local t7 = random(2)+ (math.floor(multiplier * ((H55_Day/7) * H55_CreaturesGrowth[faction][7]))); + if H55_Day < 28 then + t4 = 0; t5 = 0; t6 = 0; t7 = 0; + elseif H55_Day >= 28 and H55_Day < 84 then + t5 = 0; t6 = 0; t7 = 0; + elseif H55_Day >= 84 and H55_Day < 140 then + t6 = 0; t7 = 0; + elseif H55_Day >= 140 and H55_Day < 224 then + t7 = 0; + end; + return t1,t2,t3,t4,t5,t6,t7; +end; + +function H55_TriggerToObjectType(object_type,trigger_type,handler,prevent_disabling) + local names = GetObjectNamesByType(object_type); + for i,name in names do + SetTrigger(trigger_type,name,handler); + if(prevent_disabling==nil) then + SetObjectEnabled(name,nil); + end; + end; +end; + +function H55_GetAmountActivePlayers() + local active = 0; + for i=1,8 do + if (GetPlayerState(i) == 1) then + active = active+1; + end; + end; + return active; +end; + +function H55_ConstructNeutralTowns(level) + local towns = GetObjectNamesByType("TOWN"); + for i,town in towns do + if GetObjectOwner(town) == 0 then + if level == 1 then + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + if H55_GetTownRace(town) == 8 then + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + else + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + end; + elseif level == 2 then + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + UpgradeTownBuilding(town,TOWN_BUILDING_BLACKSMITH,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + if H55_GetTownRace(town) == 8 then + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1); + else + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + end; + elseif level == 3 then + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + UpgradeTownBuilding(town,TOWN_BUILDING_BLACKSMITH,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1); + if H55_GetTownRace(town) == 8 then + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1); + else + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + end; + elseif level == 4 then + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + UpgradeTownBuilding(town,TOWN_BUILDING_BLACKSMITH,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + if H55_GetTownRace(town) == 8 then + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1); + else + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + end; + elseif level >= 5 then + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + UpgradeTownBuilding(town,TOWN_BUILDING_BLACKSMITH,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_7,1); + if H55_GetTownRace(town) == 8 then + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1); + else + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + end; + end; + end; + end; +end; + +function H55_ConstructARMGTowns() + local towns = GetObjectNamesByType("TOWN"); + for i,town in towns do + local owner = GetObjectOwner(town) + if owner ~= 0 then + if H55_GetTownRace(town) == 8 then + --DestroyTownBuildingToLevel(town,TOWN_BUILDING_TOWN_HALL,0,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + if H55_GameMode ~= 0 and H55_IsThisAIPlayer(owner) == 1 then + if H55_Difficulty == 3 then + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + elseif H55_Difficulty == 2 then + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + elseif H55_Difficulty == 1 then + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + end; + end; + if H55_AveragePowerRating > 4000 then + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + end; + else + --DestroyTownBuildingToLevel(town,TOWN_BUILDING_TOWN_HALL,0,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + if H55_GameMode ~= 0 and H55_IsThisAIPlayer(owner) == 1 then + if H55_Difficulty == 3 then + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + elseif H55_Difficulty == 2 then + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + elseif H55_Difficulty == 1 then + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + end; + end; + if H55_AveragePowerRating > 4000 then + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + end; + end; + end; + end; + print("H55 Towns prepared for Competitive ARMG Map!") +end; + +function H55_ConstructARMGTownsNeutral() + local towns = GetObjectNamesByType("TOWN"); + for i,town in towns do + if GetObjectOwner(town) == 0 then + if H55_GetTownRace(town) == 8 then + DestroyTownBuildingToLevel(town,TOWN_BUILDING_TAVERN,0,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1); + else + DestroyTownBuildingToLevel(town,TOWN_BUILDING_TAVERN,0,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + end; + end; + end; +end; + +function H55_ConstructPlayerTowns(level) + local towns = GetObjectNamesByType("TOWN"); + for i,town in towns do + if GetObjectOwner(town) ~= 0 then + if level == 1 then + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + if H55_GetTownRace(town) == 8 then + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + else + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + end; + elseif level == 2 then + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + UpgradeTownBuilding(town,TOWN_BUILDING_BLACKSMITH,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + if H55_GetTownRace(town) == 8 then + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1); + else + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + end; + elseif level == 3 then + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + UpgradeTownBuilding(town,TOWN_BUILDING_BLACKSMITH,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1); + if H55_GetTownRace(town) == 8 then + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1); + else + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + end; + elseif level == 4 then + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + UpgradeTownBuilding(town,TOWN_BUILDING_BLACKSMITH,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + if H55_GetTownRace(town) == 8 then + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1); + else + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + end; + elseif level >= 5 then + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + UpgradeTownBuilding(town,TOWN_BUILDING_BLACKSMITH,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_7,1); + if H55_GetTownRace(town) == 8 then + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1); + else + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + end; + end; + end; + end; +end; + +function H55_BuildMyTowns(player) + local towns = GetObjectNamesByType("TOWN"); + for i,town in towns do + if GetObjectOwner(town) == player then + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + UpgradeTownBuilding(town,TOWN_BUILDING_BLACKSMITH,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_7,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_7,1); + end; + end; +end; + +function H55_ResetSignQueue(player) + sleep(1); + H55_Sign_Queue[player] = 0; +end; + +function H55_ProtectedSign(message,object,player,sleeptime,messagetime) + repeat sleep(1); until H55_Sign_Queue[player] == 0; + H55_Sign_Queue[player] = 1; + ShowFlyingSign({message},object,player,messagetime); + sleep(sleeptime); + startThread(H55_ResetSignQueue,player); +end; + +function H55_ProtectedSignAdd(message,amount,object,player,sleeptime,messagetime) + repeat sleep(1); until H55_Sign_Queue[player] == 0; + H55_Sign_Queue[player] = 1; + ShowFlyingSign({message; num=amount},object,player,messagetime); + sleep(sleeptime); + startThread(H55_ResetSignQueue,player); +end; + +function H55_ProtectedSignPrisoners(message,amount,tier,object,player,sleeptime,messagetime) + repeat sleep(1); until H55_Sign_Queue[player] == 0; + H55_Sign_Queue[player] = 1; + ShowFlyingSign({message; num=amount, level=tier},object,player,messagetime); + sleep(sleeptime); + startThread(H55_ResetSignQueue,player); +end; + +function H55_ProtectedSignSpell(message,spellid,object,player,sleeptime,messagetime) + repeat sleep(1); until H55_Sign_Queue[player] == 0; + H55_Sign_Queue[player] = 1; + ShowFlyingSign({message; name=spellid},object,player,messagetime); + sleep(sleeptime); + startThread(H55_ResetSignQueue,player); +end; + +function H55_CancelMixing() + H55_MixingStacksComplete = 1; +end; + +---------------------------------------------------------------------------------------------------------------------------------------------------- +--DUEL FUNCTIONS +---------------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_PrepareDuel() + local towns = GetObjectNamesByType("TOWN"); + local actualgrowth = (H55_Duel_WeeksGrowth-1) + local attackbonus = math.round(1+(H55_Duel_HeroLevel/7)); + H55_TownConvEnabled = 0; + H55_GovernanceEnabled = 0; + H55_StaticBanks = 1; + H55_BankDay = math.round(H55_Duel_BankDifficulty*(H55_Duel_WeeksGrowth*7)); + for i,town in towns do + if GetObjectOwner(town) ~= 0 then + local townrace = H55_GetTownRace(town); + local growth_t1 = math.round((1+(2*actualgrowth))*H55_CreaturesGrowth[townrace][1]); + local growth_t2 = math.round((1+(2*actualgrowth))*H55_CreaturesGrowth[townrace][2]); + local growth_t3 = math.round((1+(2*actualgrowth))*H55_CreaturesGrowth[townrace][3]); + local growth_t4 = math.round((1+(2*actualgrowth))*H55_CreaturesGrowth[townrace][4]); + local growth_t5 = math.round((1+(2*actualgrowth))*H55_CreaturesGrowth[townrace][5]); + local growth_t6 = math.round((1+(2*actualgrowth))*H55_CreaturesGrowth[townrace][6]); + local growth_t7 = math.round((1+(2*actualgrowth))*H55_CreaturesGrowth[townrace][7]); + --UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + --UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1); + --UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1); + --UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + --UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1); + UpgradeTownBuilding(town,TOWN_BUILDING_BLACKSMITH,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_7,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1); + UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_7,1); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_TAVERN,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_MARKETPLACE,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_TOWN_HALL,0,0); + if townrace == 1 then + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_1,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_4,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_5,0,0); + end; + if townrace == 2 then + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_0,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_4,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_5,0,0); + end; + if townrace == 3 then + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_1,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_2,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_4,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_5,0,0); + end; + if townrace == 4 then + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_1,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_2,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_3,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_4,0,0); + end; + if townrace == 5 then + --UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_2,1); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_1,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_2,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_4,0,0); + end; + if townrace == 6 then + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_1,1,0); + --DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_5,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_3,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_6,0,0); + end; + if townrace == 7 then + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_2,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_3,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_4,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_5,0,0); + end; + if townrace == 8 then + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1); + UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_4,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_2,0,0); + DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_5,0,0); + end; + sleep(1); + SetObjectDwellingCreatures(town, H55_Creatures[townrace][1][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][1][1]) + growth_t1); + SetObjectDwellingCreatures(town, H55_Creatures[townrace][2][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][2][1]) + growth_t2); + SetObjectDwellingCreatures(town, H55_Creatures[townrace][3][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][3][1]) + growth_t3); + SetObjectDwellingCreatures(town, H55_Creatures[townrace][4][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][4][1]) + growth_t4); + SetObjectDwellingCreatures(town, H55_Creatures[townrace][5][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][5][1]) + growth_t5); + SetObjectDwellingCreatures(town, H55_Creatures[townrace][6][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][6][1]) + growth_t6); + SetObjectDwellingCreatures(town, H55_Creatures[townrace][7][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][7][1]) + growth_t7); + end; + end; + local qty_wood = 50+(actualgrowth*8); + local qty_special = 50+(actualgrowth*6); + local qty_gold = actualgrowth*36000; + for i=1,8 do + if (GetPlayerState(i) == 1) then + local heroes = GetPlayerHeroes(i); + H55_GiveResourcesSilent(i,0,qty_wood); + H55_GiveResourcesSilent(i,1,qty_wood); + H55_GiveResourcesSilent(i,2,qty_special); + H55_GiveResourcesSilent(i,3,qty_special); + H55_GiveResourcesSilent(i,4,qty_special); + H55_GiveResourcesSilent(i,5,qty_special); + H55_GiveResourcesSilent(i,6,qty_gold); + local dancers = math.round((H55_Duel_WeeksGrowth/2)*9); + local skeletons = math.round((H55_Duel_WeeksGrowth/2)*25); + local ghosts = math.round((H55_Duel_WeeksGrowth/2)*9); + local wights = math.round((H55_Duel_WeeksGrowth/2)*2); + + for i,hero in heroes do + if H55_RangersPhonebook[hero] == 1 then + AddHeroCreatures(hero,45,dancers); + end; + if H55_AvengersPhonebook[hero] == 1 then + AddHeroCreatures(hero,45,dancers); + end; + if H55_DeathKnightsPhonebook[hero] == 1 then + AddHeroCreatures(hero,29,skeletons); + end; + if H55_NecromancersPhonebook[hero] == 1 then + AddHeroCreatures(hero,33,ghosts); + end; + if H55_NethermagesPhonebook[hero] == 1 then + AddHeroCreatures(hero,39,wights); + end; + if H55_WizardsPhonebook[hero] == 1 then + ChangeHeroStat(hero,1,4); + ChangeHeroStat(hero,2,4); + end; + end; + + local tier1 = math.round((H55_Duel_WeeksGrowth/2)*25); + local tier2a = math.round((H55_Duel_WeeksGrowth/2)*15); + local tier2b = math.round((H55_Duel_WeeksGrowth/2)*9); + local tier3 = math.round((H55_Duel_WeeksGrowth/2)*7); + local tier4 = math.round((H55_Duel_WeeksGrowth/2)*5); + local tier4a = math.round((H55_Duel_WeeksGrowth/2)*4); + local tier5 = math.round((H55_Duel_WeeksGrowth/2)*3); + local tier6 = math.round((H55_Duel_WeeksGrowth/2)*2); + local tier7 = math.round((H55_Duel_WeeksGrowth/2)*1); + + local tier_w = math.round(0.9*(H55_Duel_WeeksGrowth*12)); + local tier_e = math.round(1*(H55_Duel_WeeksGrowth*8)); + local tier_m = math.round(1*(H55_Duel_WeeksGrowth*6)); + local tier_d = math.round(0.75*(H55_Duel_WeeksGrowth*4)); + local tier_a = math.round(0.85*(H55_Duel_WeeksGrowth*4)); + + if table.contains(heroes,"Xerxon") then + AddHeroCreatures("Xerxon",90,tier_d); + end; + if table.contains(heroes,"Thant") then + AddHeroCreatures("Thant",116,tier_m); + end; + if table.contains(heroes,"Menel") then + AddHeroCreatures("Menel",115,tier_a); + end; + if table.contains(heroes,"Emilia") then + AddHeroCreatures("Emilia",114,tier_a); + end; + if table.contains(heroes,"Melodia") then + AddHeroCreatures("Melodia",86,tier_e); + end; + if table.contains(heroes,"KingTolghar") then + AddHeroCreatures("KingTolghar",88,tier_e); + end; + if table.contains(heroes,"Calid2") then + AddHeroCreatures("Calid2",85,tier_e); + end; + if table.contains(heroes,"Kunyak") then + AddHeroCreatures("Kunyak",87,tier_e); + end; + if table.contains(heroes,"RedHeavenHero03") then + AddHeroCreatures("RedHeavenHero03",113,tier_w); + end; + if table.contains(heroes,"Cyrus") then + AddHeroCreatures("Cyrus",65,tier5); + end; + if table.contains(heroes,"Gurvilin") then + AddHeroCreatures("Gurvilin",59,tier2a); + end; + if table.contains(heroes,"Grok") then + AddHeroCreatures("Grok",17,tier2a); + end; + if table.contains(heroes,"Muscip") then + AddHeroCreatures("Muscip",33,tier2b); + end; + if table.contains(heroes,"Vidomina") then + AddHeroCreatures("Vidomina",37,tier5); + end; + if table.contains(heroes,"Nimbus") then + AddHeroCreatures("Nimbus",29,tier1); + end; + -- if table.contains(heroes,"Straker") then + -- AddHeroCreatures("Straker",30,tier2b); + -- end; + if table.contains(heroes,"Mardigo") then + AddHeroCreatures("Mardigo",5,tier2b); + end; + if table.contains(heroes,"Pelt") then + AddHeroCreatures("Pelt",39,tier6); + end; + if table.contains(heroes,"GodricMP") then + AddHeroCreatures("GodricMP",9,tier5); + end; + -- if table.contains(heroes,"Mephala") then + -- AddHeroCreatures("Mephala",53,tier6); + -- end; + if table.contains(heroes,"Ildar") then + AddHeroCreatures("Ildar",49,tier4a); + end; + if table.contains(heroes,"Gem") then + AddHeroCreatures("Gem",43,tier2a); + end; + if table.contains(heroes,"Calh") then + AddHeroCreatures("Calh",15,tier2a); + end; + if table.contains(heroes,"Malustar") then + AddHeroCreatures("Malustar",25,tier6); + end; + if table.contains(heroes,"Tamika") then + AddHeroCreatures("Tamika",35,tier4); + end; + if table.contains(heroes,"Maximus") then + AddHeroCreatures("Maximus",98,tier3); + end; + if table.contains(heroes,"Shadwyn") then + AddHeroCreatures("Shadwyn",81,tier6); + end; + if table.contains(heroes,"Ferigl") then + AddHeroCreatures("Ferigl",77,tier6); + end; + if table.contains(heroes,"Archilus") then + AddHeroCreatures("Archilus",H55_Creatures[4][7][1],tier7); + end; + if table.contains(heroes,"Nicolai") then + AddHeroCreatures("Nicolai",H55_Creatures[1][7][1],tier7); + end; + if table.contains(heroes,"Isabell") then + AddHeroCreatures("Isabell",H55_Creatures[1][7][1],tier7); + end; + if table.contains(heroes,"Hangvul2") then + AddHeroCreatures("Hangvul2",H55_Creatures[7][7][1],tier7); + end; + if table.contains(heroes,"Rissa") then + AddHeroCreatures("Rissa",H55_Creatures[5][7][1],tier7); + end; + if table.contains(heroes,"Agbeth") then + AddHeroCreatures("Agbeth",H55_Creatures[6][7][1],tier7); + end; + if table.contains(heroes,"Harkenraz") then + AddHeroCreatures("Harkenraz",H55_Creatures[3][7][1],tier7); + end; + if table.contains(heroes,"Jenova") then + AddHeroCreatures("Jenova",H55_Creatures[2][7][1],tier7); + end; + if table.contains(heroes,"GottaiMP") then + AddHeroCreatures("GottaiMP",H55_Creatures[8][7][1],tier7); + end; + if table.contains(heroes,"Josephine") then + AddHeroCreatures("Josephine",88,tier_e); + end; + if table.contains(heroes,"Vilma") then + AddHeroCreatures("Vilma",88,tier_e); + end; + if table.contains(heroes,"Thralsai") then + AddHeroCreatures("Thralsai",87,tier_e); + end; + if table.contains(heroes,"Duncan") then + AddHeroCreatures("Duncan",86,tier_e); + end; + if table.contains(heroes,"Azar") then + AddHeroCreatures("Azar",87,tier_e); + end; + if table.contains(heroes,"Kyrre") then + AddHeroCreatures("Kyrre",86,tier_e); + end; + end; + end; + if H55_IsThisAIPlayer(2) == 1 then + local heroes = GetPlayerHeroes(2); + for i, hero in heroes do + GiveExp(hero,H55_ExpTable[H55_Duel_HeroLevel]); + end; + end; +end; + +function H55_DetectDuel() + local floorsize = GetMaxFloor(); + local mapsize = GetTerrainSize(); + --local cartographers = table.length(GetObjectNamesByType("BUILDING_CARTOGRAPHER")); --doesn't work + local mines = table.length(GetObjectNamesByType("BUILDING_ABANDONED_MINE")); + local mills = table.length(GetObjectNamesByType("BUILDING_SAWMILL")); + local pits = table.length(GetObjectNamesByType("BUILDING_ORE_PIT")); + local huts = table.length(GetObjectNamesByType("BUILDING_WITCH_HUT")); + if floorsize == 0 and mapsize == 72 and mills == 0 and pits == 0 and mines >= 5 and huts >= 5 then + H55_ARMG_Duel = 1; + end; +end; + +function H55_DuelStart() + print("H55 A Player entered the Duel Game!"); +end; + +---------------------------------------------------------------------------------------------------------------------------------------------------- +--CORE FUNCTIONS +---------------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_DetectP1AI() + if (GetPlayerState(PLAYER_1) == 1) then + local heroes = GetPlayerHeroes(PLAYER_1); + if heroes ~= nil then + for i, hero in heroes do + EnableHeroAI(hero,not nil); + H55_PlayerStatus[1] = 1; + end; + else + local modetoken = GetPlayerResource(PLAYER_1,6); + if table.contains(H55_AIStartResources,modetoken) then + H55_PlayerStatus[1] = 1; + else + H55_PlayerStatus[1] = 0; + end; + end; + else + H55_PlayerStatus[1] = 2; + end; +end; + +function H55_DetectP2AI() + if (GetPlayerState(PLAYER_2) == 1) then + local heroes = GetPlayerHeroes(PLAYER_2); + if heroes ~= nil then + for i, hero in heroes do + EnableHeroAI(hero,not nil); + H55_PlayerStatus[2] = 1; + end; + elseif H55_MapType == "Campaign" and H55_PlayerStatus[1] == 0 then + H55_PlayerStatus[2] = 1; + else + local modetoken = GetPlayerResource(PLAYER_2,6); + if table.contains(H55_AIStartResources,modetoken) then + H55_PlayerStatus[2] = 1; + else + H55_PlayerStatus[2] = 0; + end; + end; + else + H55_PlayerStatus[2] = 2; + end; +end; + +function H55_DetectP3AI() + if (GetPlayerState(PLAYER_3) == 1) then + local heroes = GetPlayerHeroes(PLAYER_3); + if heroes ~= nil then + for i, hero in heroes do + EnableHeroAI(hero,not nil); + H55_PlayerStatus[3] = 1; + end; + elseif H55_MapType == "Campaign" and H55_PlayerStatus[1] == 0 then + H55_PlayerStatus[3] = 1; + else + local modetoken = GetPlayerResource(PLAYER_3,6); + if table.contains(H55_AIStartResources,modetoken) then + H55_PlayerStatus[3] = 1; + else + H55_PlayerStatus[3] = 0; + end; + end; + else + H55_PlayerStatus[3] = 2; + end; +end; + +function H55_DetectP4AI() + if (GetPlayerState(PLAYER_4) == 1) then + local heroes = GetPlayerHeroes(PLAYER_4); + if heroes ~= nil then + for i, hero in heroes do + EnableHeroAI(hero,not nil); + H55_PlayerStatus[4] = 1; + end; + elseif H55_MapType == "Campaign" and H55_PlayerStatus[1] == 0 then + H55_PlayerStatus[4] = 1; + else + local modetoken = GetPlayerResource(PLAYER_4,6); + if table.contains(H55_AIStartResources,modetoken) then + H55_PlayerStatus[4] = 1; + else + H55_PlayerStatus[4] = 0; + end; + end; + else + H55_PlayerStatus[4] = 2; + end; +end; + +function H55_DetectP5AI() + if (GetPlayerState(PLAYER_5) == 1) then + local heroes = GetPlayerHeroes(PLAYER_5); + if heroes ~= nil then + for i, hero in heroes do + EnableHeroAI(hero,not nil); + H55_PlayerStatus[5] = 1; + end; + elseif H55_MapType == "Campaign" and H55_PlayerStatus[1] == 0 then + H55_PlayerStatus[5] = 1; + else + local modetoken = GetPlayerResource(PLAYER_5,6); + if table.contains(H55_AIStartResources,modetoken) then + H55_PlayerStatus[5] = 1; + else + H55_PlayerStatus[5] = 0; + end; + end; + else + H55_PlayerStatus[5] = 2; + end; +end; + +function H55_DetectP6AI() + if (GetPlayerState(PLAYER_6) == 1) then + local heroes = GetPlayerHeroes(PLAYER_6); + if heroes ~= nil then + for i, hero in heroes do + EnableHeroAI(hero,not nil); + H55_PlayerStatus[6] = 1; + end; + elseif H55_MapType == "Campaign" and H55_PlayerStatus[1] == 0 then + H55_PlayerStatus[6] = 1; + else + local modetoken = GetPlayerResource(PLAYER_6,6); + if table.contains(H55_AIStartResources,modetoken) then + H55_PlayerStatus[6] = 1; + else + H55_PlayerStatus[6] = 0; + end; + end; + else + H55_PlayerStatus[6] = 2; + end; +end; + +function H55_DetectP7AI() + if (GetPlayerState(PLAYER_7) == 1) then + local heroes = GetPlayerHeroes(PLAYER_7); + if heroes ~= nil then + for i, hero in heroes do + EnableHeroAI(hero,not nil); + H55_PlayerStatus[7] = 1; + end; + elseif H55_MapType == "Campaign" and H55_PlayerStatus[1] == 0 then + H55_PlayerStatus[7] = 1; + else + local modetoken = GetPlayerResource(PLAYER_7,6); + if table.contains(H55_AIStartResources,modetoken) then + H55_PlayerStatus[7] = 1; + else + H55_PlayerStatus[7] = 0; + end; + end; + else + H55_PlayerStatus[7] = 2; + end; +end; + +function H55_DetectP8AI() + if (GetPlayerState(PLAYER_8) == 1) then + local heroes = GetPlayerHeroes(PLAYER_8); + if heroes ~= nil then + for i, hero in heroes do + EnableHeroAI(hero,not nil); + H55_PlayerStatus[8] = 1; + end; + elseif H55_MapType == "Campaign" and H55_PlayerStatus[1] == 0 then + H55_PlayerStatus[8] = 1; + else + local modetoken = GetPlayerResource(PLAYER_8,6); + if table.contains(H55_AIStartResources,modetoken) then + H55_PlayerStatus[8] = 1; + else + H55_PlayerStatus[8] = 0; + end; + end; + else + H55_PlayerStatus[8] = 2; + end; +end; + +function H55_DetectPlayerFactions() + local towns = GetObjectNamesByType("TOWN"); + for i=1,8 do + for j, town in towns do + if GetObjectOwner(town) == i then + H55_PlayerFactions[i] = H55_GetTownRace(town); + end; + end; + end; + for i=1,8 do + if H55_PlayerFactions[i] == 0 and GetPlayerState(i) == 1 then + local heroes = GetPlayerHeroes(i); + if heroes ~= nil then + H55_PlayerFactions[i] = (H55_GetHeroRaceNum(heroes[0])); + end; + end; + end; +end; + +function H55_GetPlayerRace(player) + local answer = H55_PlayerFactions[player]; + return answer; +end; + +function H55_UpdateGameMode() + local gamemode = 1; + for i=1,8 do + local modetoken = GetPlayerResource(i,6); + if table.contains(H55_AIStartResources,modetoken) == nil and H55_PlayerStatus[i] == 1 then + gamemode = 0; + end; + end; + H55_GameMode = gamemode; +end; + +function H55_UpdateTownQtyDifficulty() + local towns = GetObjectNamesByType("TOWN"); + local addedamount = 0; + H55_TownQtyDivisor = (table.length(towns))/(H55_GetAmountActivePlayers()); + H55_MaxTownsPerFaction = math.round(H55_AmountExtraTownsDwellings+H55_TownQtyDivisor); + H55_MaxDwellingsT1 = math.round(H55_AmountExtraTownsDwellings+(H55_TownQtyDivisor/2)); + H55_MaxDwellingsT2 = math.round(H55_AmountExtraTownsDwellings+(H55_TownQtyDivisor/2)); + H55_MaxDwellingsT3 = math.round(H55_AmountExtraTownsDwellings+(H55_TownQtyDivisor/2)); + H55_MaxDwellingsT4 = 2 + math.round(H55_AmountExtraTownsDwellings+(H55_TownQtyDivisor/2)); + if H55_TownQtyDivisor >= 2 and H55_TownQtyDivisor < 3 then H55_TownQtyBankDifficulty = 0.02 end; + if H55_TownQtyDivisor >= 3 and H55_TownQtyDivisor < 4 then H55_TownQtyBankDifficulty = 0.03 end; + if H55_TownQtyDivisor >= 4 and H55_TownQtyDivisor < 5 then H55_TownQtyBankDifficulty = 0.04 end; + if H55_TownQtyDivisor >= 5 then H55_TownQtyBankDifficulty = 0.05 end; + if table.containsamount(H55_PlayerFactions,1) >= 2 then addedamount = addedamount+1 end; + if table.containsamount(H55_PlayerFactions,2) >= 2 then addedamount = addedamount+1 end; + if table.containsamount(H55_PlayerFactions,3) >= 2 then addedamount = addedamount+1 end; + if table.containsamount(H55_PlayerFactions,4) >= 2 then addedamount = addedamount+1 end; + if table.containsamount(H55_PlayerFactions,5) >= 2 then addedamount = addedamount+1 end; + if table.containsamount(H55_PlayerFactions,6) >= 2 then addedamount = addedamount+1 end; + if table.containsamount(H55_PlayerFactions,7) >= 2 then addedamount = addedamount+1 end; + if table.containsamount(H55_PlayerFactions,8) >= 2 then addedamount = addedamount+1 end; + if addedamount == 1 then H55_AmountExtraTownsDwellings = H55_AmountExtraTownsDwellings+1 end; + if addedamount >= 2 then H55_AmountExtraTownsDwellings = H55_AmountExtraTownsDwellings+2 end; +end; + +function H55_IsThisAIPlayer(player) + local answer = 0; + if H55_PlayerStatus[player] == 1 then + answer = 1; + end; + return answer; +end; + +function H55_GetAllHeroes() + local all = {}; + for i=1,8 do + if (GetPlayerState(i) == 1) then + local heroes = GetPlayerHeroes(i) + local n = table.length(heroes); + if n == 1 then + table.inject(all,heroes[0]); + elseif n >= 2 then + local qty = n-1; + for j = 0,qty do + table.inject(all,heroes[j]); + end; + end; + end; + end; + return all; +end; + +function H55_OtherPlayerHeroes(excluded,player) + local others = {}; + local heroes = GetPlayerHeroes(player); + for i,hero in heroes do + if hero ~= excluded then + table.inject(others,hero); + end; + end; + return others; +end; + +function H55_GetPlayerTeam(player) + local team = H55_PlayerTeams[player]; + return team; +end; + +function H55_GetObjectOwningTeam(object) + local owner = GetObjectOwner(object); + local team = H55_GetPlayerTeam(owner); + return team; +end; + +function H55_TeamAI() + local count = 1; + for i=1,8 do + if H55_PlayerStatus[i] == 0 then + count = count + 1 + end; + end; + for i=1,8 do + if H55_PlayerStatus[i] == 1 then + SetPlayerTeam(i,count) + H55_PlayerTeams[i] = count; + end; + end; + print("H55 All AI Players have allied"); +end; + +function H55_TeamHumansvsAI() + for i=1,8 do + if H55_PlayerStatus[i] == 0 then SetPlayerTeam(i,1) H55_PlayerTeams[i] = 1 end; + if H55_PlayerStatus[i] == 1 then SetPlayerTeam(i,2) H55_PlayerTeams[i] = 2 end; + end; + print("H55 All AI Players have allied against the human players"); +end; + +function H55_AIMapSizeCoef() + local floorsize = GetMaxFloor(); + local mapsize = GetTerrainSize(); + local coef = 1; + if floorsize == 0 then + if mapsize == 320 then coef = 1.2 end; + if mapsize == 256 then coef = 1.1 end; + if mapsize == 216 then coef = 1.1 end; + end; + if floorsize == 1 then + if mapsize == 320 then coef = 1.3 end; + if mapsize == 256 then coef = 1.2 end; + if mapsize == 216 then coef = 1.2 end; + if mapsize == 176 then coef = 1.1 end; + end; + return coef; +end; + +function H55_AIDifficultyCoef() + local coef = 0.3; + if H55_Difficulty == 3 then coef = 0.6 end; + if H55_Difficulty == 2 then coef = 0.5 end; + if H55_Difficulty == 1 then coef = 0.4 end; + if H55_GovernanceEnabled == 0 then coef = coef - 0.05 end; + return coef; +end; + +function H55_SetEasyExperience() + local coef = 1; + if H55_Difficulty == 3 then coef = 1.27 end; + if H55_Difficulty == 2 then coef = 1.18 end; + if H55_Difficulty == 1 then coef = 1.09 end; + SetHeroesExpCoef(coef); + print("H55 Experience settings ignored"); +end; + +function H55_AITimerCoef() + local coef = 1; + if H55_Day >= 56 and H55_Day < 112 then coef = 1.1 end; + if H55_Day >= 112 and H55_Day < 168 then coef = 1.2 end; + if H55_Day >= 168 and H55_Day < 224 then coef = 1.3 end; + if H55_Day >= 224 then coef = 1.4 end; + return coef; +end; + +function H55_AICheatSetting() + local coef = 0.2; + if H55_AICheatMode == 1 then + coef = coef + 0.2; + elseif H55_AICheatMode == 2 then + coef = coef + 0.4; + elseif H55_AICheatMode == 3 then + coef = coef + 0.6; + elseif H55_AICheatMode == 4 then + coef = coef + 0.8; + elseif H55_AICheatMode == 5 then + coef = coef + 1.0; + elseif H55_AICheatMode == 6 then + coef = coef + 1.2; + else + coef = coef + 0.2; --if user sets to 0 this function is never invoked + end; + return coef; +end; + +function H55_GetTownRace(town) + local towntype = 0; + if table.contains(GetObjectNamesByType("TOWN_HEAVEN"),town) then towntype = 1; + elseif table.contains(GetObjectNamesByType("TOWN_PRESERVE"),town) then towntype = 2; + elseif table.contains(GetObjectNamesByType("TOWN_INFERNO"),town) then towntype = 3; + elseif table.contains(GetObjectNamesByType("TOWN_NECROMANCY"),town) then towntype = 4; + elseif table.contains(GetObjectNamesByType("TOWN_ACADEMY"),town) then towntype = 5; + elseif table.contains(GetObjectNamesByType("TOWN_DUNGEON"),town) then towntype = 6; + elseif table.contains(GetObjectNamesByType("TOWN_FORTRESS"),town) then towntype = 7; + elseif table.contains(GetObjectNamesByType("TOWN_STRONGHOLD"),town) then towntype = 8 end; + return towntype; +end; + +function H55_GetTownRaceID(num) + local townid = TOWN_HEAVEN; + if num == 1 then townid = TOWN_HEAVEN; + elseif num == 2 then townid = TOWN_PRESERVE; + elseif num == 3 then townid = TOWN_INFERNO; + elseif num == 4 then townid = TOWN_NECROMANCY; + elseif num == 5 then townid = TOWN_ACADEMY; + elseif num == 6 then townid = TOWN_DUNGEON; + elseif num == 7 then townid = TOWN_FORTRESS; + elseif num == 8 then townid = TOWN_STRONGHOLD end; + return townid; +end; + +function H55_GetTownRaceString(num) + local townid = "TOWN_HEAVEN"; + if num == 1 then townid = "TOWN_HEAVEN"; + elseif num == 2 then townid = "TOWN_PRESERVE"; + elseif num == 3 then townid = "TOWN_INFERNO"; + elseif num == 4 then townid = "TOWN_NECROMANCY"; + elseif num == 5 then townid = "TOWN_ACADEMY"; + elseif num == 6 then townid = "TOWN_DUNGEON"; + elseif num == 7 then townid = "TOWN_FORTRESS"; + elseif num == 8 then townid = "TOWN_STRONGHOLD" end; + return townid; +end; + +function H55_GetHeroRaceNum(hero) + local race = 0; + if H55_HavenPhonebook[hero] == 1 then race = 1; + elseif H55_SylvanPhonebook[hero] == 1 then race = 2; + elseif H55_InfernoPhonebook[hero] == 1 then race = 3; + elseif H55_NecropolisPhonebook[hero] == 1 then race = 4; + elseif H55_AcademyPhonebook[hero] == 1 then race = 5; + elseif H55_DungeonPhonebook[hero] == 1 then race = 6; + elseif H55_FortressPhonebook[hero] == 1 then race = 7; + elseif H55_StrongholdPhonebook[hero] == 1 then race = 8 end; + return race; +end; + +function H55_GetHeroRace(hero) + local race = "Undetermined"; + if H55_HavenPhonebook[hero] == 1 then race = "Haven"; + elseif H55_SylvanPhonebook[hero] == 1 then race = "Sylvan"; + elseif H55_InfernoPhonebook[hero] == 1 then race = "Inferno"; + elseif H55_NecropolisPhonebook[hero] == 1 then race = "Necropolis"; + elseif H55_AcademyPhonebook[hero] == 1 then race = "Academy"; + elseif H55_DungeonPhonebook[hero] == 1 then race = "Dungeon"; + elseif H55_FortressPhonebook[hero] == 1 then race = "Fortress"; + elseif H55_StrongholdPhonebook[hero] == 1 then race = "Stronghold" end; + return race; +end; + +-- function H55_GetHeroClass(hero) + -- local typ = "Renegade" + -- for i=1,H55_ClassesCount do + -- if table.contains(H55_ClassesList[i],hero) then + -- typ = H55_ClassesNames[i]; + -- break; + -- end; + -- end; + -- return typ; +-- end; + +function H55_GetHeroClass(hero) + local class = "Renegade"; + if H55_RenegadesPhonebook[hero] == 1 then class = "Renegade"; + elseif H55_KnightsPhonebook[hero] == 1 then class = "Knight"; + elseif H55_HereticsPhonebook[hero] == 1 then class = "Heretic"; + elseif H55_RangersPhonebook[hero] == 1 then class = "Ranger"; + elseif H55_AvengersPhonebook[hero] == 1 then class = "Avenger"; + elseif H55_DruidsPhonebook[hero] == 1 then class = "Druid"; + elseif H55_DemonlordsPhonebook[hero] == 1 then class = "Demonlord"; + elseif H55_GatekeepersPhonebook[hero] == 1 then class = "Gatekeeper"; + elseif H55_SorcerersPhonebook[hero] == 1 then class = "Sorcerer"; + elseif H55_DeathKnightsPhonebook[hero] == 1 then class = "Deathknight"; + elseif H55_NecromancersPhonebook[hero] == 1 then class = "Necromancer"; + elseif H55_NethermagesPhonebook[hero] == 1 then class = "Nethermage"; + elseif H55_EnchantersPhonebook[hero] == 1 then class = "Enchanter"; + elseif H55_ConjurersPhonebook[hero] == 1 then class = "Conjurer"; + elseif H55_WizardsPhonebook[hero] == 1 then class = "Wizard"; + elseif H55_OverlordsPhonebook[hero] == 1 then class = "Overlord"; + elseif H55_TrickstersPhonebook[hero] == 1 then class = "Trickster"; + elseif H55_WarlocksPhonebook[hero] == 1 then class = "Warlock"; + elseif H55_EngineersPhonebook[hero] == 1 then class = "Engineer"; + elseif H55_RunemagesPhonebook[hero] == 1 then class = "Runemage"; + elseif H55_FlamekeepersPhonebook[hero] == 1 then class = "Flamekeeper" + elseif H55_ChieftainsPhonebook[hero] == 1 then class = "Chieftain"; + elseif H55_ShamansPhonebook[hero] == 1 then class = "Shaman"; + elseif H55_WitchesPhonebook[hero] == 1 then class = "Witch" end; + return class; +end; + +function H55_GetPlayerTowns(player) + local cities = {}; + local towns = GetObjectNamesByType("TOWN"); + for i,town in towns do + if GetObjectOwner(town) == player then + table.inject(cities,town); + end; + end; + return cities; +end; + +function H55_HasTown(player) + local answer = 0; + local towns = GetObjectNamesByType("TOWN"); + if table.length(towns) ~= 0 then + for i,town in towns do + if GetObjectOwner(town) == player then + answer = 1; + end; + end; + end; + return answer; +end; + +function H55_HasTownWithGuild(player) + local answer = 0; + local towns = GetObjectNamesByType("TOWN"); + if table.length(towns) ~= 0 then + for i,town in towns do + if GetObjectOwner(town) == player then + if H55_GetTownRace(town) == 8 then + if GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1) >= 1 or GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_3) == 1 then + answer = 1; + end; + else + if GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD) >= 1 then + answer = 1; + end; + end; + end; + end; + end; + return answer; +end; + +function H55_GetAlignedTownsOwned(hero,player) + local cities = {}; + local cityrace = H55_GetHeroRace(hero); + if cityrace == "Haven" then + local haventowns = GetObjectNamesByType("TOWN_HEAVEN"); + if table.length(haventowns) ~= 0 then + for i, town in haventowns do + if GetObjectOwner(town) == player then + table.inject(cities,town); + end; + end; + end; + elseif cityrace == "Academy" then + local academytowns = GetObjectNamesByType("TOWN_ACADEMY"); + if table.length(academytowns) ~= 0 then + for i, town in academytowns do + if GetObjectOwner(town) == player then + table.inject(cities,town); + end; + end; + end; + elseif cityrace == "Stronghold" then + local strongholdtowns = GetObjectNamesByType("TOWN_STRONGHOLD"); + if table.length(strongholdtowns) ~= 0 then + for i, town in strongholdtowns do + if GetObjectOwner(town) == player then + table.inject(cities,town); + end; + end; + end; + elseif cityrace == "Dungeon" then + local dungeontowns = GetObjectNamesByType("TOWN_DUNGEON"); + if table.length(dungeontowns) ~= 0 then + for i, town in dungeontowns do + if GetObjectOwner(town) == player then + table.inject(cities,town); + end; + end; + end; + elseif cityrace == "Sylvan" then + local sylvantowns = GetObjectNamesByType("TOWN_PRESERVE"); + if table.length(sylvantowns) ~= 0 then + for i, town in sylvantowns do + if GetObjectOwner(town) == player then + table.inject(cities,town); + end; + end; + end; + elseif cityrace == "Necropolis" then + local necropolistowns = GetObjectNamesByType("TOWN_NECROMANCY"); + if table.length(necropolistowns) ~= 0 then + for i, town in necropolistowns do + if GetObjectOwner(town) == player then + table.inject(cities,town); + end; + end; + end; + elseif cityrace == "Inferno" then + local infernotowns = GetObjectNamesByType("TOWN_INFERNO"); + if table.length(infernotowns) ~= 0 then + for i, town in infernotowns do + if GetObjectOwner(town) == player then + table.inject(cities,town); + end; + end; + end; + elseif cityrace == "Fortress" then + local fortresstowns = GetObjectNamesByType("TOWN_FORTRESS"); + if table.length(fortresstowns) ~= 0 then + for i, town in fortresstowns do + if GetObjectOwner(town) == player then + table.inject(cities,town); + end; + end; + end; + else + cities = {}; + end; + return cities; +end; + +function H55_IsNativeTownNearby(hero,player) + local answer = 0; + local towns = H55_GetAlignedTownsOwned(hero,player); + for i,town in towns do + if H55_GetDistance(hero,town) <= 50 then + answer = 1; + end; + end; + return answer; +end; + +function H55_GetRotationAngle(x,y,z,angle,array,tile) + local passable = 0; + local mapsize = GetTerrainSize(); + if table.length(array["x"]) == 0 then + return 1; + end; + for i=0, table.length(array["x"])-1 do + local xx,yy = 0,0; + local xxx,yyy = 0,0; + if angle == 1 then xx, yy = array["x"][i], array["y"][i]; end; + if angle == 2 then xx, yy = - array["y"][i], array["x"][i]; end; + if angle == 3 then xx, yy = - array["x"][i],- array["y"][i]; end; + if angle == 4 then xx, yy = array["y"][i],- array["x"][i]; end; + if mapsize == x+xx or mapsize == y+yy then + passable = 0; + elseif IsTilePassable(x + xx, y + yy, z ) ~= nil then + passable = 1; + end; + if passable ~= tile then + return 0; --fail + end; + end; + return 1; --success +end; + +function H55_GetTownRotation(town) + local xx,yy,v,mode = 0,0,0,0; + local race = H55_GetTownRace(town) + local townrace = H55_GetTownRaceString(race); + local x,y,z = GetObjectPosition(town); + while mode < 2 and v < H55_ObjectTiles[townrace]["entries"]+1 do + r = 0; + local active = H55_ObjectTiles[townrace]["activeTiles"][""..v]; + local blocked = H55_ObjectTiles[townrace]["blockedTiles"][""..v]; + while mode < 2 and r < 4 do + mode = 0; + r = r + 1; + mode = mode + H55_GetRotationAngle(x, y, z, r, active , 1); + mode = mode + H55_GetRotationAngle(x, y, z, r, blocked, 0); + end; + v = v + 1; + end; + --print("H55 This Town Rotation is "..r); + return r; +end; + +function H55_GetTownActiveTile(town) + local xx,yy = 0,0; + local race = H55_GetTownRace(town) + local townrace = H55_GetTownRaceString(race); + local x,y,z = GetObjectPosition(town); + local r = H55_GetTownRotation(town); + if r == 1 then xx, yy = H55_ObjectTiles[townrace]["activeTiles"]["0"]["x"][0], H55_ObjectTiles[townrace]["activeTiles"]["0"]["y"][0]; end; + if r == 2 then xx, yy = - H55_ObjectTiles[townrace]["activeTiles"]["0"]["y"][0], H55_ObjectTiles[townrace]["activeTiles"]["0"]["x"][0]; end; + if r == 3 then xx, yy = - H55_ObjectTiles[townrace]["activeTiles"]["0"]["x"][0],- H55_ObjectTiles[townrace]["activeTiles"]["0"]["y"][0]; end; + if r == 4 then xx, yy = H55_ObjectTiles[townrace]["activeTiles"]["0"]["y"][0],- H55_ObjectTiles[townrace]["activeTiles"]["0"]["x"][0]; end; + return x + xx, y + yy, z; +end; + +function H55_FindTownToAttack(hero) + local myteam = H55_GetObjectOwningTeam(hero); + local towns = GetObjectNamesByType("TOWN"); + local distance = 1000000; + local cities_open = {}; + local cities_hero = {}; + local cities_far = {}; + local chosen = nil; + for i,town in towns do + if H55_GetObjectOwningTeam(town) ~= myteam then + local x,y,z = GetObjectPosition(town); + if CanMoveHero(hero,x,y,z) == not nil then + table.inject(cities_open,town); + elseif H55_IsAnyHeroInGate(town) == 1 then + local enemy = H55_IDHeroInGate(town); + local x,y,z = GetObjectPosition(enemy); + if CanMoveHero(hero,x,y,z) == not nil then + table.inject(cities_hero,enemy); + end; + else + table.inject(cities_far,town); + end; + end; + end; + if table.length(cities_open) ~= 0 then + for i, city in cities_open do + local a,b,c = GetObjectPosition(city); + local amount = CalcHeroMoveCost(hero,a,b,c) --H55_GetDistanceUG(hero,city); + if amount < distance then + distance = amount; + chosen = city; + end; + end; + elseif table.length(cities_hero) ~= 0 then + for i, city in cities_hero do + local a,b,c = GetObjectPosition(city); + local amount = CalcHeroMoveCost(hero,a,b,c) + if amount < distance then + distance = amount; + chosen = city; + end; + end; + end; + return chosen; +end; + +function H55_FindHeroToAttack(hero) + local myteam = H55_GetObjectOwningTeam(hero); + local distance = 1000000; + local targets = H55_GetAllHeroes(); + local enemies = {}; + local chosen = nil; + for i,target in targets do + if IsObjectExists(target) and H55_GetObjectOwningTeam(target) ~= myteam then + local x,y,z = GetObjectPosition(target); + if CanMoveHero(hero,x,y,z) == not nil then + table.inject(enemies,target); + end; + end; + end; + if table.length(enemies) ~= 0 then + for i, enemy in enemies do + local a,b,c = GetObjectPosition(enemy); + local amount = CalcHeroMoveCost(hero,a,b,c); + if amount < distance then + distance = amount; + chosen = enemy; + end; + end; + end; + return chosen; +end; + +function H55_InvokeNuclearOption(player) + local heroes = GetPlayerHeroes(player); + for i,hero in heroes do + if H55_FindTownToAttack(hero) then + local town = H55_FindTownToAttack(hero); + local x,y,z = GetObjectPosition(town); + EnableHeroAI(hero,not nil); + MoveHero(hero,x,y,z); + elseif H55_FindHeroToAttack(hero) then + local enemy = H55_FindHeroToAttack(hero); + local x,y,z = GetObjectPosition(enemy); + EnableHeroAI(hero,not nil); + MoveHero(hero,x,y,z); + else + print("H55 AI cannot find any target and is about to die!"); + end; + end; + H55_AIGoesNuclear = H55_AIGoesNuclear + 1; +end; + +function H55_AttackTown(hero,town) + local x,y,z = H55_GetTownActiveTile(town); + MoveHero(hero,x,y,z); + --startThread(H55_AttackTownFinish,hero,town,xx,yy,zz); +end; + +function H55_ReachedDestination(hero,x,y,z) + local answer = 0; + local a,b,c = GetObjectPosition(hero); + if a == x and b == y and c == z then + answer = 1; + end; + return answer; +end; + +-- function H55_AttackTownFinish(hero,town,xx,yy,zz) + -- local a,b,c = GetObjectPosition(hero); + -- while IsObjectExists(hero) == not nil and a~=xx and b~=yy and c~=zz do + -- sleep(1); + -- end; + -- if IsObjectExists(hero) == not nil then + -- local x,y,z = GetObjectPosition(town); + -- MoveHero(hero,x,y,z); + -- end; +-- end; + +function H55_ModifyStackSize() + if H55_NeutralStackSize > 1 then + print("H55 Increasing Neutral stack sizes...WARNING: The game might lag for several minutes, the job is done when you can open your townscreen."); + --BlockGame(); + local neutrals = GetObjectNamesByType("CREATURE"); + local totalamount = table.length(neutrals); + for i = 1, totalamount-1 do + local units,count = H55_StackInfo(neutrals[i]); + for j = 0,6 do + if (units[j] ~= 0) and (units[j] ~= nil) then + local amount = math.round((count[j]*H55_NeutralStackSize)-count[j]); + if amount >= 1 then + AddObjectCreatures(neutrals[i],units[j],amount) + end; + end; + end; + end; + --UnblockGame(); + print("H55 Game Unblocked..."); + elseif H55_NeutralStackSize > 0.1 and H55_NeutralStackSize < 1 then + print("H55 Decreasing Neutral stack sizes...WARNING: The game might lag for several minutes, the job is done when you can open your townscreen."); + --BlockGame(); + local neutrals = GetObjectNamesByType("CREATURE"); + local totalamount = table.length(neutrals) + for i = 1, totalamount-1 do + local units,count = H55_StackInfo(neutrals[i]); + for j = 0,6 do + if (units[j] ~= 0) and (units[j] ~= nil) then + local amount = math.round(count[j]-(count[j]*H55_NeutralStackSize)); + if amount >= 1 then + RemoveObjectCreatures(neutrals[i],units[j],amount) + end; + end; + end; + end; + --UnblockGame(); + print("H55 Game Unblocked..."); + end; +end; + +function H55_MixStacks() + --BlockGame(); + local creatures = GetObjectNamesByType("CREATURE"); + local stacksqty = table.length(creatures); + if stacksqty ~= 0 then + print("H55 Mixing "..stacksqty.." neutral stacks!"); + for i = 1,8 do + local heroes = GetPlayerHeroes(i); + if GetPlayerState(i) == 1 and H55_IsThisAIPlayer(i) then + if H55_AskForMixedStacks == 1 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Mixingmany.txt",heroes[0],i,H55_MsgSleep,30); + else + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Mixingsome.txt",heroes[0],i,H55_MsgSleep,20); + end; + end; + end; + for i, object in creatures do + local creatures = H55_MonsterInfo(object); + local power,unit,typ = 0, 1, {0,0,0}; + local i = 0; + local stacks = 1+random(3); + local mix = 1+random(2); + local skip = 0; + for unit_, count in creatures do + i = i + 1; + local typ_ = H55_CreaturesInv[unit_]; + power = power + count / H55_CreaturesGrowthReal[typ_[1]][typ_[2]]; + if typ_[2] > typ[2] then + unit = unit_; + typ = typ_; + end; + if i > 1 then + RemoveObjectCreatures(object, unit_, count); + end; + end; + if creatures[unit] >= 7 then + local removal = math.floor(creatures[unit]*(1-(1/(1+stacks)))); + if H55_NeutralStackSize > 1 then + removal = math.floor(removal/H55_NeutralStackSize) + if removal == 0 then removal = 1 end; + end; + local result = creatures[unit] - removal; + if result < 6 then + removal = creatures[unit]-5-random(2); + end; + RemoveObjectCreatures(object,unit,removal); + elseif creatures[unit] == 1 then + skip = 1; + elseif creatures[unit] <= 4 then + local add = 2+random(2); + AddObjectCreatures(object,unit,add); + end; + local town2 = H55_EvilTowns[typ[1]][1+random(4)]; + if skip == 0 then + local strength = H55_NeutralStackSize * power; + for j = 1,stacks do + local town = typ[1]; + if j == 2 and mix ~= 1 then town = town2 end; + local tier = H55_CreaturesInv[unit][2]; + if tier >= 3 then tier = (1+random(3))+(tier-3) else tier = 1+random(tier) end; + local up = 1+random(3); + local amount = math.ceil(strength / stacks * H55_CreaturesGrowth[town][tier]); + if amount <= 4 then amount = 5+random(2) end; + AddObjectCreatures(object,H55_Creatures[town][tier][up],amount); + end; + end; + end; + end; + H55_MixingStacksComplete = 1; + --UnblockGame(); +end; + +-- function H55_GetHeroClassType(hero) + -- local typ = "Mind"; + -- if table.contains(H55_Renegades,hero) + -- or table.contains(H55_Demonlords,hero) + -- or table.contains(H55_DeathKnights,hero) + -- or table.contains(H55_Rangers,hero) + -- or table.contains(H55_Overlords,hero) + -- or table.contains(H55_Engineers,hero) + -- or table.contains(H55_Enchanters,hero) then typ = "Might"; + -- elseif table.contains(H55_Heretics,hero) + -- or table.contains(H55_Sorcerers,hero) + -- or table.contains(H55_Nethermages,hero) + -- or table.contains(H55_Flamekeepers,hero) + -- or table.contains(H55_Warlocks,hero) + -- or table.contains(H55_Druids,hero) + -- or table.contains(H55_Shamans,hero) + -- or table.contains(H55_Witches,hero) + -- or table.contains(H55_Wizards,hero) then typ = "Magic"; + -- elseif table.contains(H55_Chieftains,hero) then typ = "Chieftain"; + -- else typ = "Mind"; + -- end; + -- return typ; +-- end; + +---------------------------------------------------------------------------------------------------------------------------------------------------- +--CONSOLE COMMANDS +---------------------------------------------------------------------------------------------------------------------------------------------------- + +-- function H55_WeeklyError() + -- consoleCmd("setvar dev_console_password = schwinge-des-todes"); + -- H55_ErrorCounter = H55_ErrorCounter + 1; + -- H55_ErrorLogbook[H55_ErrorCounter] = {"W",H55_DEBUG[1],H55_DEBUG[2],H55_DEBUG[3],GetDate(DAY)}; + -- print("H55 Weekly Event crashed, last section executed was: "..H55_DEBUG[1].." "..H55_DEBUG[2].." for player:"..H55_DEBUG[3]); +-- end; + +-- function H55_DailyError() + -- consoleCmd("setvar dev_console_password = schwinge-des-todes"); + -- H55_ErrorCounter = H55_ErrorCounter + 1; + -- H55_ErrorLogbook[H55_ErrorCounter] = {"D",H55_DEBUG[1],H55_DEBUG[2],H55_DEBUG[3],GetDate(DAY)}; + -- print("H55 Daily Event crashed, last section executed was: "..H55_DEBUG[1].." "..H55_DEBUG[2].." for player:"..H55_DEBUG[3]); +-- end; + +-- function H55_ContinuesError() + -- consoleCmd("setvar dev_console_password = schwinge-des-todes"); + -- H55_ErrorCounter = H55_ErrorCounter + 1; + -- H55_ErrorLogbook[H55_ErrorCounter] = {"C",H55_DEBUG[1],H55_DEBUG[2],H55_DEBUG[3],GetDate(DAY)}; + -- print("H55 Continues Event crashed, last section executed was: "..H55_DEBUG[1].." "..H55_DEBUG[2].." for player:"..H55_DEBUG[3]); +-- end; + +-- function H55_AdvMapError() + -- consoleCmd("setvar dev_console_password = schwinge-des-todes"); + -- H55_ErrorCounter = H55_ErrorCounter + 1; + -- H55_ErrorLogbook[H55_ErrorCounter] = {"A",H55_DEBUG[1],H55_DEBUG[2],H55_DEBUG[3],GetDate(DAY)}; + -- print("H55 AdvMap preparation crashed, last section executed was: "..H55_DEBUG[1].." "..H55_DEBUG[2].." for player:"..H55_DEBUG[3]); +-- end; + +-- function H55_ScriptLog() + -- if H55_ErrorCounter > 0 then + -- print("H55 Observatory Bug Report: Errors have occurred during this game:"); + -- for i=1,H55_ErrorCounter do + -- print(H55_ErrorLogbook[i][1]..H55_ErrorLogbook[i][2].." "..H55_ErrorLogbook[i][3].." P"..H55_ErrorLogbook[i][4].." D"..H55_ErrorLogbook[i][5]); + -- end; + -- else + -- print("H55 Observatory Bug Report: No Errors have occured during this game"); + -- end; +-- end; + +function H55_Path() + local map = GetMapDataPath(); + print(map); +end; + +function H55_Log() + consoleCmd('game_writelog 1'); + print("Game starts logging next turn, info will be saved in console.txt in bin folder after game is closed") +end; + +function H55_BackLog() + consoleCmd("console_size 999"); +end; + +function H55_FixAI() + H55_ForceAIFix = 1; + print("H55 Tomorrow AI will try to find target.") +end; + +function H55_FixAICTD() + for i, academy in (GetObjectNamesByType("TOWN_ACADEMY")) do + DestroyTownBuildingToLevel(academy,TOWN_BUILDING_SPECIAL_3,0,0); + end; + for i, dungeon in (GetObjectNamesByType("TOWN_DUNGEON")) do + DestroyTownBuildingToLevel(dungeon,TOWN_BUILDING_SPECIAL_4,0,0); + end; + print("Done!, all artifact merchants in towns are destroyed, hopefully this fixes your issue") +end; + +function H55_BreakAI() + consoleCmd("setvar ai_time_limit = 180"); +end; + +function H55_CutOffAI() + consoleCmd("setvar ai_time_limit = 1800"); +end; + +function H55_RestoreAI() + consoleCmd("setvar ai_time_limit = 180000"); +end; + +function H55_NoFog(player) + OpenCircleFog(0,0,0,9999,player); + OpenCircleFog(0,0,1,9999,player); +end; + +function H55_Speedrun(player) + local heroes = GetPlayerHeroes(player); + for i,hero in heroes do + AddHeroCreatures(hero,84,999); + end; +end; + +function H55_EndlessRun(player) + local heroes = GetPlayerHeroes(player); + local hero = heroes[0]; + while 1 do + if GetHeroStat(hero,STAT_MOVE_POINTS) <= 2499 then + ChangeHeroStat(hero,STAT_MOVE_POINTS,5000); + end; + sleep(5); + end; +end; + +function H55_IDNearbyTown(hero) + local towns = GetObjectNamesByType("TOWN"); + local distance = 0; + local townid = "No Town Nearby"; + for i,town in towns do + if H55_GetDistance(hero,town) <= 12 then + distance = H55_GetDistance(hero,town); + townid = town + end; + end; + print(distance); + print(townid); +end; + +function H55_IDHeroes(player) + local heroes = GetPlayerHeroes(player) + for i,hero in heroes do + print(hero); + end; +end; + +function H55_Dbg() + H55_DbgTxt = H55_DEBUG; + print("Index: "..H55_DbgTxt[1].." Chapter: "..H55_DbgTxt[2].." Player: "..H55_DbgTxt[3].." Hero: "..H55_DbgTxt[4]); +end; + +function H55_UseNewDayTrigger() + H55_NewDayTrigger = 1; +end; + +function H55_SetSleepTime(num) + if num >= 0 and num <= 100 then + H55_CycleSpeed = num; + else + print("Value must be between 1 and 100!"); + end; +end; + +---------------------------------------------------------------------------------------------------------------------------------------------------- +--GAMEPLAY FUNCTIONS +---------------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_IndexArtifacts() + for i,minorartifact in H55_MinorArtifacts do + if table.contains(H55_RemoveTheseArtifactsFromBanks,minorartifact) == nil then + table.inject(H55_MinorArtifactsUsed,minorartifact); + end; + end; + for i,majorartifact in H55_MajorArtifacts do + if table.contains(H55_RemoveTheseArtifactsFromBanks,majorartifact) == nil then + table.inject(H55_MajorArtifactsUsed,majorartifact); + end; + end; + for i,relicartifact in H55_RelicArtifacts do + if table.contains(H55_RemoveTheseArtifactsFromBanks,relicartifact) == nil then + table.inject(H55_RelicArtifactsUsed,relicartifact); + end; + end; + for i,ultimateartifact in H55_UltimateArtifacts do + if table.contains(H55_RemoveTheseArtifactsFromBanks,ultimateartifact) == nil then + table.inject(H55_UltimateArtifactsUsed,ultimateartifact); + end; + end; + if H55_RPGPotions == 1 then + table.inject(H55_MinorArtifactsUsed,ARTIFACT_POTION01); + table.inject(H55_MajorArtifactsUsed,ARTIFACT_POTION02); + table.inject(H55_RelicArtifactsUsed,ARTIFACT_POTION03); + end; + if H55_MapType == "Campaign" then + table.inject(H55_MinorArtifactsUsed,ARTIFACT_POTION01); + table.inject(H55_MajorArtifactsUsed,ARTIFACT_POTION02); + table.inject(H55_RelicArtifactsUsed,ARTIFACT_POTION03); + end; + H55_ArtifactsIndexed = 1; + print("H55 Day 2 Artifacts indexation complete!") +end; + +function H55_GetUnusualSchools(hero) + local race = H55_GetHeroRaceNum(hero); + local school1 = H55_UnusualSchools[race][1]; + local school2 = H55_UnusualSchools[race][2]; + if hero == "Erika" or hero == "Zouleika" then + school1 = H55_UnusualSchools[9][1]; + school2 = H55_UnusualSchools[8][2]; + end; + if hero == "Hero2" or hero == "Hero3" then + school1 = H55_UnusualSchools[9][2]; + school2 = H55_UnusualSchools[8][2]; + end; + return school1,school2; +end; + +function H55_GetRaceElementalTypeID(player,cityrace) + local elemtype = 87; + if cityrace == 1 and H55_FireSwitch[player] == 1 then elemtype = 85; + elseif cityrace == 1 then elemtype = 113; + elseif cityrace == 5 then elemtype = 116; + elseif cityrace == 8 and H55_WolfSwitch[player] == 1 then elemtype = 113; + elseif cityrace == 8 then elemtype = 87; + elseif cityrace == 6 then elemtype = 115; + elseif cityrace == 2 and H55_WolfSwitch[player] == 1 then elemtype = 113; + elseif cityrace == 2 then elemtype = 86; + elseif cityrace == 7 and H55_FireSwitch[player] == 1 then elemtype = 85; + elseif cityrace == 7 then elemtype = 88; + elseif cityrace == 3 then elemtype = 85; + elseif cityrace == 4 and H55_BKnightSwitch[player] == 1 then elemtype = 90; + elseif cityrace == 4 then elemtype = 116 end; + return elemtype; +end; + +function H55_GetRaceCasterTypes(cityrace) + local casterunits = {10,110,9}; + if cityrace == "Haven" then casterunits = {10,110,9} + elseif cityrace == "Academy" then casterunits = {64,162,63} + elseif cityrace == "Stronghold" then casterunits = {124,176,123} + elseif cityrace == "Necropolis" then casterunits = {38,156,37} + elseif cityrace == "Dungeon" then casterunits = {82,143,81} + elseif cityrace == "Sylvan" then casterunits = {50,148,49} + elseif cityrace == "Fortress" then casterunits = {101,170,100} + elseif cityrace == "Inferno" then casterunits = {26,136,25} end; + return casterunits; +end; + +-- function H55_IsChillSummoner(hero) + -- if HasHeroSkill(hero,NECROMANCER_FEAT_CHILLING_BONES) then + -- if (table.contains(H55_Witches,hero) or + -- table.contains(H55_Warlocks,hero) or + -- table.contains(H55_Sorcerers,hero)) then + -- return not nil; + -- end; + -- end; + -- return nil; +-- end; + +function H55_GetLegionCap(hero) + local cap = 0; + if HasArtefact(hero,ARTIFACT_LEGION_T7,0) then cap = 7 + elseif HasArtefact(hero,ARTIFACT_LEGION_T6,0) then cap = 6 + elseif HasArtefact(hero,ARTIFACT_LEGION_T5,0) then cap = 5 + elseif HasArtefact(hero,ARTIFACT_LEGION_T4,0) then cap = 4 + elseif HasArtefact(hero,ARTIFACT_LEGION_T3,0) then cap = 3 + elseif HasArtefact(hero,ARTIFACT_LEGION_T2,0) then cap = 2 + elseif HasArtefact(hero,ARTIFACT_LEGION_T1,0) then cap = 1 end; + return cap; +end; + +function H55_GetAmountAlignedTowns(racenum) + local amountcities = 0; + if racenum == 1 then amountcities = table.length(GetObjectNamesByType("TOWN_HEAVEN")) + elseif racenum == 5 then amountcities = table.length(GetObjectNamesByType("TOWN_ACADEMY")) + elseif racenum == 8 then amountcities = table.length(GetObjectNamesByType("TOWN_STRONGHOLD")) + elseif racenum == 4 then amountcities = table.length(GetObjectNamesByType("TOWN_NECROMANCY")) + elseif racenum == 6 then amountcities = table.length(GetObjectNamesByType("TOWN_DUNGEON")) + elseif racenum == 2 then amountcities = table.length(GetObjectNamesByType("TOWN_PRESERVE")) + elseif racenum == 7 then amountcities = table.length(GetObjectNamesByType("TOWN_FORTRESS")) + elseif racenum == 3 then amountcities = table.length(GetObjectNamesByType("TOWN_INFERNO")) end; + return amountcities; +end; + +function H55_GetHallTrialLevel(hero,player) + local level = 0; + if H55_MapType == "Campaign" then + level = 3; + else + local towns = H55_GetAlignedTownsOwned(hero,player); + if towns ~= nil then + for i,town in towns do + local hall = GetTownBuildingLevel(town, TOWN_BUILDING_SPECIAL_1); + if hall > level then + level = hall; + end; + end; + end; + end; + return level; +end; + +function H55_GetWalkerHutLevel(hero,player) + local level = 0; + local towns = H55_GetAlignedTownsOwned(hero,player); + if towns ~= nil then + for i,town in towns do + local hall = GetTownBuildingLevel(town, TOWN_BUILDING_SPECIAL_3); + if hall > level then + level = hall; + end; + end; + end; + return level; +end; + +function H55_GetJoinSpecMultiplier(hero,player) + local multiplier = 1; + local amount = table.length(H55_GetAlignedTownsOwned(hero,player)); + if amount == 2 then + multiplier = 1.75; + elseif amount == 3 then + multiplier = 2.5; + elseif amount >= 4 then + multiplier = 3.5; + end; + return multiplier; +end; + + +function H55_GetHeroEnlightenmentStrength(hero) + local strength = 1; + if HasHeroSkill(hero,SKILL_LEARNING) then + strength = strength + ((GetHeroSkillMastery(hero,SKILL_LEARNING) * 0.05)); + elseif HasHeroSkill(hero,HERO_SKILL_BARBARIAN_LEARNING) then + strength = strength + ((GetHeroSkillMastery(hero,HERO_SKILL_BARBARIAN_LEARNING) * 0.05)); + end; + if HasArtefact(hero,34,1) then + strength = strength+0.1; + end; + if HasArtefact(hero,35,1) then + strength = strength+0.2; + end; + return strength; +end; + +function H55_GetMasterOfPower(hero) + local power = 0; + if HasHeroSkill(hero,PERK_MASTER_OF_ANIMATION) then + power = power + 1; + end; + if HasHeroSkill(hero,PERK_MASTER_OF_QUAKES) then + power = power + 1; + end; + if HasHeroSkill(hero,PERK_MASTER_OF_CREATURES) then + power = power + 1; + end; + return power; +end; + +function H55_GetOccultismPowerLeveled(hero) + local power = 0; + if HasHeroSkill(hero,SKILL_INVOCATION) then + local level = GetHeroLevel(hero); + if (GetHeroSkillMastery(hero,SKILL_INVOCATION) >= 3) then + power = math.floor(level/5); + elseif (GetHeroSkillMastery(hero,SKILL_INVOCATION) == 2) then + power = math.floor(level/6); + elseif (GetHeroSkillMastery(hero,SKILL_INVOCATION) >= 1) then + power = math.floor(level/7); + end; + end; + return power; +end; + +function H55_GetInsightsPowerLeveled(hero) + local power = 0; + if HasHeroSkill(hero,RANGER_FEAT_INSIGHTS) then + local level = GetHeroLevel(hero); + power = math.floor(level/10); + end; + return power; +end; + +function H55_GetStaminaPowerLeveled(hero) + local power = 0; + if HasHeroSkill(hero,HERO_SKILL_BODYBUILDING) then + local level = GetHeroLevel(hero); + power = math.floor(level/10); + end; + return power; +end; + +function H55_GetSecretsPowerLeveled(hero) + local power = 0; + if HasHeroSkill(hero,WARLOCK_FEAT_SECRETS_OF_DESTRUCTION) then + local level = GetHeroLevel(hero); + power = math.floor(level/10); + end; + return power; +end; + +function H55_GetNecroLeadPower(hero) + local power = 0; + if HasHeroSkill(hero,SKILL_LEADERSHIP) then + if (GetHeroSkillMastery(hero,SKILL_LEADERSHIP) == 1) then + power = 3; + end; + if (GetHeroSkillMastery(hero,SKILL_LEADERSHIP) == 2) then + power = 5; + end; + if (GetHeroSkillMastery(hero,SKILL_LEADERSHIP) == 3) then + power = 7; + end; + end; + return power; +end; + +function H55_GetVoicePower(hero) + local power = 0; + if HasHeroSkill(hero,HERO_SKILL_VOICE) and HasHeroSkill(hero,HERO_SKILL_EMPATHY) then + if (GetHeroSkillMastery(hero,HERO_SKILL_VOICE) == 1) then + power = -1; + end; + if (GetHeroSkillMastery(hero,HERO_SKILL_VOICE) == 2) then + power = -2; + end; + if (GetHeroSkillMastery(hero,HERO_SKILL_VOICE) == 3) then + power = -3; + end; + end; + return power; +end; + +function H55_GetAmmoCartPowerRebalanced(hero) + local power = 0; + if H55_MapType ~= "Campaign" then + if HasHeroSkill(hero,PERK_CATAPULT) and HasHeroWarMachine(hero,4) then + power = GetHeroSkillMastery(hero,SKILL_WAR_MACHINES); + if HasArtefact(hero,ARTIFACT_RING_OF_MACHINE_AFFINITY,1) then + power = power + 1; + end; + end; + else + if HasHeroSkill(hero,PERK_CATAPULT) then + power = GetHeroSkillMastery(hero,SKILL_WAR_MACHINES); + if HasArtefact(hero,ARTIFACT_RING_OF_MACHINE_AFFINITY,1) then + power = power + 1; + end; + end; + end; + return power; +end; + +function H55_GetTribalPower(hero) + local power = 0; + local level = GetHeroLevel(hero); + if HasHeroSkill(hero,KNIGHT_FEAT_CASTER_CERTIFICATE) then + power = math.floor(level/5); + end; + return power; +end; + +function H55_GetMoonDiscOwnCount(hero) + local gainedartifacts = {0,0,0,0}; + if HasArtefact(hero,159,0) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,160,0) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,161,0) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,162,0) then gainedartifacts[4] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]); + return setstrength; +end; + +function H55_MoonDiscCoef() + local floorsize = GetMaxFloor(); + local mapsize = GetTerrainSize(); + local surface = mapsize * mapsize + if floorsize == 1 then + surface = surface * 2 + end; + local coef = 1+math.round(100/((((surface/500)*0.6))/4)) + return coef; +end; + +function H55_ExchangeMoonDisc(hero) + RemoveArtefact(hero,159); + RemoveArtefact(hero,160); + RemoveArtefact(hero,161); + RemoveArtefact(hero,162); + GiveArtefact(hero,163); +end; + +function H55_GetMonkSetCount(hero) + local gainedartifacts = {0,0,0,0,0}; + if HasArtefact(hero,116,1) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,117,1) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,118,1) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,119,1) then gainedartifacts[4] = 1 end; + if HasArtefact(hero,172,1) then gainedartifacts[5] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]+gainedartifacts[5]); + return setstrength; +end; + +function H55_GetDwarvenSetCount(hero) + local gainedartifacts = {0,0,0,0}; + if HasArtefact(hero,48,1) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,49,1) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,50,1) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,51,1) then gainedartifacts[4] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]); + return setstrength; +end; + +function H55_GetDwarvenOwnCount(hero) + local gainedartifacts = {0,0,0,0}; + if HasArtefact(hero,48,0) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,49,0) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,50,0) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,51,0) then gainedartifacts[4] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]); + return setstrength; +end; + +function H55_GetLionSetCount(hero) + local gainedartifacts = {0,0,0}; + if HasArtefact(hero,11,1) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,16,1) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,31,1) then gainedartifacts[3] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]); + return setstrength; +end; + +function H55_GetArcherSetCount(hero) + local gainedartifacts = {0,0,}; + if HasArtefact(hero,4,1) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,95,1) then gainedartifacts[2] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]); + return setstrength; +end; + +function H55_GetVestmentSetCount(hero) + local gainedartifacts = {0,0}; + if HasArtefact(hero,34,1) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,35,1) then gainedartifacts[2] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]); + return setstrength; +end; + +function H55_GetNecroSetCount(hero) + local gainedartifacts = {0,0,0,0,0,0}; + if HasArtefact(hero,6,1) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,70,1) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,71,1) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,33,1) then gainedartifacts[4] = 1 end; + if HasArtefact(hero,55,1) then gainedartifacts[5] = 1 end; + if HasArtefact(hero,83,1) then gainedartifacts[6] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]+gainedartifacts[5]+gainedartifacts[6]); + return setstrength; +end; + +function H55_GetPirateSetCount(hero) + local gainedartifacts = {0,0,0,0,0,0}; + if HasArtefact(hero,127,1) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,128,1) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,129,1) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,130,1) then gainedartifacts[4] = 1 end; + if HasArtefact(hero,131,1) then gainedartifacts[5] = 1 end; + if HasArtefact(hero,132,1) then gainedartifacts[6] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]+gainedartifacts[5]+gainedartifacts[6]); + return setstrength; +end; + +function H55_GetSarIssusSetCount(hero) + local gainedartifacts = {0,0,0,0}; + if HasArtefact(hero,44,1) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,45,1) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,46,1) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,47,1) then gainedartifacts[4] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]); + return setstrength; +end; + +function H55_GetSarIssusOwnCount(hero) + local gainedartifacts = {0,0,0,0}; + if HasArtefact(hero,44,0) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,45,0) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,46,0) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,47,0) then gainedartifacts[4] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]); + return setstrength; +end; + +function H55_ExchangeSarIssusSet(hero) + RemoveArtefact(hero,44); + RemoveArtefact(hero,45); + RemoveArtefact(hero,46); + RemoveArtefact(hero,47); + GiveArtefact(hero,22); +end; + +function H55_ExchangeSarIssusSetB(hero) + RemoveArtefact(hero,44); + RemoveArtefact(hero,45); + RemoveArtefact(hero,46); + RemoveArtefact(hero,47); + GiveArtefact(hero,168); +end; + +function H55_GetEndGoldSetCount(hero) + local gainedartifacts = {0,0,0}; + if HasArtefact(hero,28,1) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,29,1) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,92,1) then gainedartifacts[3] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]); + return setstrength; +end; + +function H55_GetEndGoldOwnCount(hero) + local gainedartifacts = {0,0,0}; + if HasArtefact(hero,28,0) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,29,0) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,92,0) then gainedartifacts[3] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]); + return setstrength; +end; + +function H55_ExchangeEndGoldSet(hero) + RemoveArtefact(hero,28); + RemoveArtefact(hero,29); + RemoveArtefact(hero,92); + GiveArtefact(hero,191); +end; + +function H55_GetLegionOwnCount(hero) + local gainedartifacts = {0,0,0,0,0,0,0}; + if HasArtefact(hero,103,0) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,104,0) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,105,0) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,106,0) then gainedartifacts[4] = 1 end; + if HasArtefact(hero,107,0) then gainedartifacts[5] = 1 end; + if HasArtefact(hero,108,0) then gainedartifacts[6] = 1 end; + if HasArtefact(hero,109,0) then gainedartifacts[7] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]+gainedartifacts[5]+gainedartifacts[6]+gainedartifacts[7]); + return setstrength; +end; + +function H55_ExchangeLegionSet(hero) + RemoveArtefact(hero,103); + RemoveArtefact(hero,104); + RemoveArtefact(hero,105); + RemoveArtefact(hero,106); + RemoveArtefact(hero,107); + RemoveArtefact(hero,108); + RemoveArtefact(hero,109); + GiveArtefact(hero,53); +end; + +function H55_GetDragonishSetCount(hero) + local gainedartifacts = {0,0,0,0,0,0,0,0}; + if HasArtefact(hero,36,1) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,37,1) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,38,1) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,39,1) then gainedartifacts[4] = 1 end; + if HasArtefact(hero,40,1) then gainedartifacts[5] = 1 end; + if HasArtefact(hero,41,1) then gainedartifacts[6] = 1 end; + if HasArtefact(hero,42,1) then gainedartifacts[7] = 1 end; + if HasArtefact(hero,43,1) then gainedartifacts[8] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]+gainedartifacts[5]+gainedartifacts[6]+gainedartifacts[7]+gainedartifacts[8]); + return setstrength; +end; + +function H55_GetDragonishOwnCount(hero) + local gainedartifacts = {0,0,0,0,0,0,0,0}; + if HasArtefact(hero,36,0) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,37,0) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,38,0) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,39,0) then gainedartifacts[4] = 1 end; + if HasArtefact(hero,40,0) then gainedartifacts[5] = 1 end; + if HasArtefact(hero,41,0) then gainedartifacts[6] = 1 end; + if HasArtefact(hero,42,0) then gainedartifacts[7] = 1 end; + if HasArtefact(hero,43,0) then gainedartifacts[8] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]+gainedartifacts[5]+gainedartifacts[6]+gainedartifacts[7]+gainedartifacts[8]); + return setstrength; +end; + +function H55_ExchangeDragonishSet(hero) + RemoveArtefact(hero,36); + RemoveArtefact(hero,37); + RemoveArtefact(hero,38); + RemoveArtefact(hero,39); + RemoveArtefact(hero,40); + RemoveArtefact(hero,41); + RemoveArtefact(hero,42); + RemoveArtefact(hero,43); + GiveArtefact(hero,123); +end; + +function H55_GetSaintSetCount(hero) + local gainedartifacts = {0,0,0,0,0,0,0}; + if HasArtefact(hero,112,1) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,113,1) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,114,1) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,115,1) then gainedartifacts[4] = 1 end; + if HasArtefact(hero,68,1) then gainedartifacts[5] = 1 end; + if HasArtefact(hero,133,1) then gainedartifacts[6] = 1 end; + if HasArtefact(hero,134,1) then gainedartifacts[7] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]+gainedartifacts[5]+gainedartifacts[6]+gainedartifacts[7]); + return setstrength; +end; + +function H55_GetSaintOwnCount(hero) + local gainedartifacts = {0,0,0,0,0,0,0}; + if HasArtefact(hero,112,0) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,113,0) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,114,0) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,115,0) then gainedartifacts[4] = 1 end; + if HasArtefact(hero,68,0) then gainedartifacts[5] = 1 end; + if HasArtefact(hero,133,0) then gainedartifacts[6] = 1 end; + if HasArtefact(hero,134,0) then gainedartifacts[7] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]+gainedartifacts[5]+gainedartifacts[6]+gainedartifacts[7]); + return setstrength; +end; + +-- function H55_ExchangeSaintSet(hero) + -- RemoveArtefact(hero,112); + -- RemoveArtefact(hero,113); + -- RemoveArtefact(hero,114); + -- RemoveArtefact(hero,115); + -- RemoveArtefact(hero,68); + -- RemoveArtefact(hero,133); + -- RemoveArtefact(hero,134); + -- GiveArtefact(hero,53); +-- end; + +function H55_GetTomesOwnCount(hero) + local gainedartifacts = {0,0,0,0}; + if HasArtefact(hero,76,0) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,77,0) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,78,0) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,79,0) then gainedartifacts[4] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]); + return setstrength; +end; + +function H55_AnyTomeEquipped(hero) + local answer = 0; + if HasArtefact(hero,76,1) or HasArtefact(hero,77,1) or HasArtefact(hero,78,1) or HasArtefact(hero,79,1) then + answer = 1; + end; + return answer; +end; + +function H55_ExchangeTomesSet(hero) + RemoveArtefact(hero,76); + RemoveArtefact(hero,77); + RemoveArtefact(hero,78); + RemoveArtefact(hero,79); + GiveArtefact(hero,126); +end; + +function H55_GetGuardianSetCount(hero) + local gainedartifacts = {0,0,0,0}; + if HasArtefact(hero,13,1) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,120,1) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,121,1) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,122,1) then gainedartifacts[4] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]); + return setstrength; +end; + +function H55_ExchangeGuardianSet(hero) + RemoveArtefact(hero,13); + RemoveArtefact(hero,120); + RemoveArtefact(hero,121); + RemoveArtefact(hero,122); + GiveArtefact(hero,125); +end; + +function H55_ExchangeGuardianSetB(hero) + RemoveArtefact(hero,13); + RemoveArtefact(hero,120); + RemoveArtefact(hero,121); + RemoveArtefact(hero,122); + GiveArtefact(hero,ARTIFACT_SENTINEL); +end; + +function H55_GetGuardianOwnCount(hero) + local gainedartifacts = {0,0,0,0}; + if HasArtefact(hero,13,0) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,120,0) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,121,0) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,122,0) then gainedartifacts[4] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]); + return setstrength; +end; + +function H55_GetCornucopiaOwnCount(hero) + local gainedartifacts = {0,0,0,0,0,0}; + if HasArtefact(hero,97,0) then gainedartifacts[1] = 1 end; + if HasArtefact(hero,98,0) then gainedartifacts[2] = 1 end; + if HasArtefact(hero,99,0) then gainedartifacts[3] = 1 end; + if HasArtefact(hero,100,0) then gainedartifacts[4] = 1 end; + if HasArtefact(hero,101,0) then gainedartifacts[5] = 1 end; + if HasArtefact(hero,102,0) then gainedartifacts[6] = 1 end; + local setstrength = (gainedartifacts[1]+gainedartifacts[2]+gainedartifacts[3]+gainedartifacts[4]+gainedartifacts[5]+gainedartifacts[6]); + return setstrength; +end; + +function H55_ExchangeCornucopia(hero) + RemoveArtefact(hero,97); + RemoveArtefact(hero,98); + RemoveArtefact(hero,99); + RemoveArtefact(hero,100); + RemoveArtefact(hero,101); + RemoveArtefact(hero,102); + GiveArtefact(hero,183); +end; + +function H55_HasHeroCultMaster(hero) + local multiplier = 1; + if HasHeroSkill(hero,DEMON_FEAT_EXPLODING_CORPSES) then + multiplier = 2; + end; + return multiplier; +end; + +function H55_HasHeroDefendUs(hero) + local multiplier = 1; + if HasHeroSkill(hero,HERO_SKILL_DEFEND_US_ALL) then + multiplier = 2; + end; + return multiplier; +end; + +function H55_GetSpecialNecroReq(hero) + local req = 0; + if H55_GetHeroRaceNum(hero) == 4 then + req = 1; + end; + return req; +end; + +function H55_GetMedicReq(hero) + local answer = 0; + if H55_GetHeroRaceNum(hero) ~= 4 then + if HasHeroSkill(hero,PERK_TOUGHNESS) or + HasHeroSkill(hero,PERK_FIRST_AID) or + HasHeroSkill(hero,PERK_PATHFINDING) then + answer = 1; + end; + end; + return answer; +end; + +function H55_GetDarkMedicReq(hero) + local answer = 0; + if H55_GetHeroRaceNum(hero) ~= 4 then + if HasHeroSkill(hero,DEMON_FEAT_WEAKENING_STRIKE) then + answer = 1; + end; + end; + return answer; +end; + +function H55_GetHeroResurrectionCoef(hero,baseperc,stat) + local coef = baseperc+((GetHeroStat(hero,stat))*0.01); + -- if HasHeroSkill(hero,NECROMANCER_FEAT_LAST_AID) then + -- coef = coef+0.1; + -- end; + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then + coef = coef+0.1; + end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then + coef = coef+0.05; + end; + if coef >= 1 then + coef = 1; + end; + return coef; +end; + +function H55_GetHeroFlatResurrection(hero,baseperc,tier,stat) + local flat = 0; + if stat == STAT_KNOWLEDGE then + flat = H55_FlatResurrectionBaseK[tier] + (GetHeroStat(hero,stat) * H55_FlatResurrectionScaleK[tier]); + -- if HasHeroSkill(hero,NECROMANCER_FEAT_LAST_AID) then + -- flat = flat + (10*H55_FlatResurrectionScaleK[tier]); + -- end; + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then + flat = flat + (10*H55_FlatResurrectionScaleK[tier]); + end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then + flat = flat + (5*H55_FlatResurrectionScaleK[tier]); + end; + if baseperc == 0.5 then flat = flat + 20 end; + else + flat = H55_FlatResurrectionBaseD[tier] + (GetHeroStat(hero,stat) * H55_FlatResurrectionScaleD[tier]) --+ (GetHeroSkillMastery(hero,SKILL_DEFENCE)*10); + -- if HasHeroSkill(hero,NECROMANCER_FEAT_LAST_AID) then + -- flat = flat + (10*H55_FlatResurrectionScaleD[tier]); + -- end; + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then + flat = flat + (10*H55_FlatResurrectionScaleD[tier]); + end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then + flat = flat + (5*H55_FlatResurrectionScaleD[tier]); + end; + --if GetHeroSkillMastery(hero,SKILL_DEFENCE) == 3 then flat = flat + 10 end; + end; + return flat; +end; + +function H55_GetHeroHPBuffs(hero) + local buff = 0; + if HasHeroSkill(hero,PERK_TOUGHNESS) then buff = buff + 3 end; + if HasArtefact(hero,ARTIFACT_SENTINEL,1) then buff = buff + 6 end; + if HasArtefact(hero,ARTIFACT_UPG_HM3,1) then buff = buff + 4 end; + if HasArtefact(hero,ARTIFACT_UPG_AR3,1) then buff = buff + 2 end; + if HasArtefact(hero,ARTIFACT_RING_OF_LIFE,1) then buff = buff + 2 end; + return buff; +end; + +function H55_MakeStartArmy(hero,fc,add_tier,add_qty,spec_tier,spec_swap) + if spec_tier ~= 0 then + local experience = 145 + if fc == 2 and spec_tier == 3 then experience = 120 end; + local delete = GetHeroCreatures(hero,H55_Creatures[fc][spec_swap][1]); + local add_spec = (math.round(experience / H55_CreaturesExp[fc][spec_tier][1])); + RemoveHeroCreatures(hero,H55_Creatures[fc][spec_swap][1],delete); + AddHeroCreatures(hero,H55_Creatures[fc][spec_tier][1],add_spec); + AddHeroCreatures(hero,H55_Creatures[fc][add_tier][1],add_qty); + elseif add_tier > 4 then + AddHeroCreatures(hero,H55_Creatures[fc][add_tier][1],add_qty); + else + local experience = 100; + local rnd = 0; + if add_tier ~= 4 then rnd = random(2) end; + if add_tier == 3 and fc == 2 then rnd = 0 end; + if add_qty >= 20 then experience = experience + add_qty end; + local qty = rnd + (math.round( experience / H55_CreaturesExp[fc][add_tier][1] )); + AddHeroCreatures(hero,H55_Creatures[fc][add_tier][1],qty); + end; +end; + +function H55_MakeStartArmyNeutral(hero,fc,add_neut,add_qty,spec_tier,spec_swap) + if spec_tier ~= 0 then + local delete = GetHeroCreatures(hero,H55_Creatures[fc][spec_swap][1]); + local add_spec = (math.round(145 / H55_CreaturesExp[fc][spec_tier][1])); + RemoveHeroCreatures(hero,H55_Creatures[fc][spec_swap][1],delete); + AddHeroCreatures(hero,H55_Creatures[fc][spec_tier][1],add_spec); + AddHeroCreatures(hero,H55_NeutralCreatures[add_neut],add_qty); + else + AddHeroCreatures(hero,H55_NeutralCreatures[add_neut],add_qty); + end; +end; + +function H55_WeeklyReinforce(hero,player,u1,u2,u3,coef) + local units = H55_ArmyInfoSimple(hero); + local level = GetHeroLevel(hero); + local multiplier = H55_GetJoinSpecMultiplier(hero,player); + local growth = math.round(multiplier*(coef*level)); + if growth >= 1 then + for i = 0,6 do + if (units[i] == u1) and (H55_WeeklyReinforceTable[hero] ~= 1) then + AddHeroCreatures(hero,u1,growth); + H55_WeeklyReinforceTable[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == u2) and (H55_WeeklyReinforceTable[hero] ~= 1) then + AddHeroCreatures(hero,u2,growth); + H55_WeeklyReinforceTable[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == u3) and (H55_WeeklyReinforceTable[hero] ~= 1) then + AddHeroCreatures(hero,u3,growth); + H55_WeeklyReinforceTable[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; +end; + +function H55_WeeklyRecruits(hero,player,unupgraded_id,coef,tier) + local level = GetHeroLevel(hero); + local raceid = H55_GetHeroRaceNum(hero); + local townid = H55_GetTownRaceString(raceid); + local towns = GetObjectNamesByType(townid); + local towns_qty = table.length(towns); + local dwelling = TOWN_BUILDING_DWELLING_5; + local growth = math.round(coef*level); + if tier == 6 then + dwelling = TOWN_BUILDING_DWELLING_6; + end; + if tier == 7 then + dwelling = TOWN_BUILDING_DWELLING_7; + end; + if (towns_qty > 0) and (growth >= 1) and (H55_WeeklyRecruitsTable[hero] ~= 1) then + for i,town in towns do + if (GetObjectOwner(town) == player) then + if GetTownBuildingLevel(town,dwelling) ~= 0 then + startThread(H55_DelayedObjectDwellingCreatures,town,unupgraded_id,growth); + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Recruits.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + H55_WeeklyRecruitsTable[hero] = 1; + end; +end; + +function H55_CheckCrystalMorale(hero,neutral) + local answer = 0; + local units = H55_ArmyInfoSimple(hero); + for i = 0,6 do + if (units[i] == neutral) then + answer = 1; + end; + end; + return answer; +end; + +function H55_InfernalLoom(hero,player,u1,u2,u3,coef,multiplier) + local units = H55_ArmyInfoSimple(hero); + local level = GetHeroLevel(hero); + local growth = math.round(multiplier*(coef*level)); + if growth >= 1 then + for i = 0,6 do + if (units[i] == u1) and (H55_InfernalLoomTable[hero] ~= 1) then + AddHeroCreatures(hero,u1,growth); + H55_InfernalLoomTable[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == u2) and (H55_InfernalLoomTable[hero] ~= 1) then + AddHeroCreatures(hero,u2,growth); + H55_InfernalLoomTable[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == u3) and (H55_InfernalLoomTable[hero] ~= 1) then + AddHeroCreatures(hero,u3,growth); + H55_InfernalLoomTable[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end +end; + +function H55_DefendUsDaily(hero,player,u1,u2,u3,growth) + local units = H55_ArmyInfoSimple(hero); + if growth >= 1 then + for i = 0,6 do + if (units[i] == u1) and (H55_DefendUsTable[hero] ~= 1) then + AddHeroCreatures(hero,u1,growth); + H55_DefendUsTable[hero] = 1; + elseif (units[i] ==u2) and (H55_DefendUsTable[hero] ~= 1) then + AddHeroCreatures(hero,u2,growth); + H55_DefendUsTable[hero] = 1; + elseif (units[i] ==u3) and (H55_DefendUsTable[hero] ~= 1) then + AddHeroCreatures(hero,u3,growth); + H55_DefendUsTable[hero] = 1; + end; + end; + end; + H55_DefendUsTable[hero] = 0; +end; + +function H55_AdjustStatSpec(player,hero,stat,multiplier) + local level = GetHeroLevel(hero); + if multiplier == 6 then + for i=1,8 do + if (H55_StatSpecNumbersC[i] == level) and (H55_StatSpecReceived[hero] ~= i) then + ChangeHeroStat(hero,stat,1); + H55_StatSpecReceived[hero] = i; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + if stat == 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Attack.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 2 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Defense.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 3 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Spellpower.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 4 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Knowledge.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; + end; + end; + elseif multiplier == 7 then + for i=1,8 do + if (H55_StatSpecNumbersA[i] == level) and (H55_StatSpecReceived[hero] ~= i) then + ChangeHeroStat(hero,stat,1); + H55_StatSpecReceived[hero] = i; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + if stat == 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Attack.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 2 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Defense.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 3 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Spellpower.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 4 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Knowledge.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; + end; + end; + elseif multiplier == 8 then + for i=1,8 do + if (H55_StatSpecNumbersB[i] == level) and (H55_StatSpecReceived[hero] ~= i) then + ChangeHeroStat(hero,stat,1); + H55_StatSpecReceived[hero] = i; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + if stat == 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Attack.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 2 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Defense.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 3 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Spellpower.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 4 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Knowledge.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; + end; + end; + elseif multiplier == 15 then + for i=1,8 do + if (H55_StatSpecNumbersD[i] == level) and (H55_StatSpecReceived[hero] ~= i) then + ChangeHeroStat(hero,stat,1); + H55_StatSpecReceived[hero] = i; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + if stat == 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Attack.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 2 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Defense.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 3 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Spellpower.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 4 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Knowledge.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; + end; + end; + elseif multiplier == 20 then + if (level == 20) and (H55_StatSpecReceived[hero] ~= 1) then + ChangeHeroStat(hero,stat,1); + H55_StatSpecReceived[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + if stat == 5 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Luck.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 6 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Morale.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; + end; + elseif multiplier == 99 then + if (H55_StatSpecReceived[hero] ~= 1) then + ChangeHeroStat(hero,stat,1); + H55_StatSpecReceived[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + if stat == 5 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Luck.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if stat == 6 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Morale.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; + end; + end; +end; + +function H55_AdjustStatInga(player,hero) + local level = GetHeroLevel(hero); + for i=1,8 do + if (H55_StatSpecNumbersC[i] == level) and (H55_StatSpecReceived[hero] ~= i) then + ChangeHeroStat(hero,H55_IngaRandomStats[i],1); + H55_StatSpecReceived[hero] = i; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + if H55_IngaRandomStats[i] == 1 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Attack.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if H55_IngaRandomStats[i] == 2 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Defense.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if H55_IngaRandomStats[i] == 3 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Spellpower.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + if H55_IngaRandomStats[i] == 4 then startThread(H55_ProtectedSign,"/Text/Game/Scripts/Knowledge.txt",hero,player,H55_MsgSleep,H55_MsgTime) end; + end; + end; + end; +end; + +function H55_MentalScarring(hero,amount) + for i = 1,amount do + local stat = random(4)+1; + ChangeHeroStat(hero,stat,-1); + end; +end; + +function H55_GetMaxMana(hero) + local mana = 10 * GetHeroStat(hero,STAT_KNOWLEDGE); + if HasHeroSkill(hero,PERK_INTELLIGENCE) then + mana = (math.round(1.4*mana))-1; + end; + return mana; +end; + +function H55_ModifyMana(hero,amount,force) + local mana = GetHeroStat(hero,STAT_MANA_POINTS); + local manatotal = H55_GetMaxMana(hero); + if force == 1 then + ChangeHeroStat(hero,STAT_MANA_POINTS,amount); + elseif mana <= manatotal then + ChangeHeroStat(hero,STAT_MANA_POINTS,amount); + end; +end; + +function H55_SetGlobalWeeklyPayouts(player,num) + H55_GlobalWeeklyWoodPayout[player] = num; + H55_GlobalWeeklyOrePayout[player] = num; + H55_GlobalWeeklyMercuryPayout[player] = num; + H55_GlobalWeeklyCrystalPayout[player] = num; + H55_GlobalWeeklySulphurPayout[player] = num; + H55_GlobalWeeklyGemPayout[player] = num; + H55_GlobalWeeklyGoldPayout[player] = num; +end; + +function H55_SetGlobalDailyPayouts(player,num) + H55_GlobalDailyWoodPayout[player] = num; + H55_GlobalDailyOrePayout[player] = num; + H55_GlobalDailyMercuryPayout[player] = num; + H55_GlobalDailyCrystalPayout[player] = num; + H55_GlobalDailySulphurPayout[player] = num; + H55_GlobalDailyGemPayout[player] = num; + H55_GlobalDailyGoldPayout[player] = num; +end; + +function H55_PayoutThisPlayer(player) + if (H55_GlobalDailyGoldPayout[player] + H55_GlobalWeeklyGoldPayout[player]) > 0 then + H55_GiveResourcesSilent(player,6,(H55_GlobalDailyGoldPayout[player]+H55_GlobalWeeklyGoldPayout[player])); + end; + if (H55_GlobalDailyWoodPayout[player] + H55_GlobalWeeklyWoodPayout[player]) > 0 then + H55_GiveResourcesSilent(player,0,(H55_GlobalDailyWoodPayout[player]+H55_GlobalWeeklyWoodPayout[player])); + end; + if (H55_GlobalDailyOrePayout[player] + H55_GlobalWeeklyOrePayout[player]) > 0 then + H55_GiveResourcesSilent(player,1,(H55_GlobalDailyOrePayout[player]+H55_GlobalWeeklyOrePayout[player])); + end; + if (H55_GlobalDailyMercuryPayout[player] + H55_GlobalWeeklyMercuryPayout[player]) > 0 then + H55_GiveResourcesSilent(player,2,(H55_GlobalDailyMercuryPayout[player]+H55_GlobalWeeklyMercuryPayout[player])); + end; + if (H55_GlobalDailyCrystalPayout[player] + H55_GlobalWeeklyCrystalPayout[player]) > 0 then + H55_GiveResourcesSilent(player,3,(H55_GlobalDailyCrystalPayout[player]+H55_GlobalWeeklyCrystalPayout[player])); + end; + if (H55_GlobalDailySulphurPayout[player] + H55_GlobalWeeklySulphurPayout[player]) > 0 then + H55_GiveResourcesSilent(player,4,(H55_GlobalDailySulphurPayout[player]+H55_GlobalWeeklySulphurPayout[player])); + end; + if (H55_GlobalDailyGemPayout[player] + H55_GlobalWeeklyGemPayout[player]) > 0 then + H55_GiveResourcesSilent(player,5,(H55_GlobalDailyGemPayout[player]+H55_GlobalWeeklyGemPayout[player])); + end; +end; + +function H55_ResurrectElemental(player,hero,ci,elemental,manacost,baseperc,stat) + local stackscount = GetSavedCombatArmyCreaturesCount(ci,1); + local reduction = 0; + local coef = H55_GetHeroResurrectionCoef(hero,baseperc,stat); + local flat = H55_GetHeroFlatResurrection(hero,baseperc,5,stat); + local addhp = H55_GetHeroHPBuffs(hero); + + if H55_GetSaintSetCount(hero) >= 3 then reduction = reduction + 2 end; + if HasArtefact(hero,ARTIFACT_UPG_AR2,1) then reduction = reduction + 2 end; + if HasArtefact(hero,ARTIFACT_MONK_03,1) then reduction = reduction + 2 end; + local manapay = manacost - reduction; + if manapay < 0 then manapay = 0 end; + + --casualties + local totaldied = 0; + for i = 0,stackscount-1,1 do + local cr,cnt,died = GetSavedCombatArmyCreatureInfo(ci,1,i); + if died > 0 then + if cr == elemental then + totaldied = totaldied + died; + end; + end; + end; + + --amounts + local totalresurrect = 0; + if totaldied > 0 then + local percresurrect = math.floor(coef*totaldied); + local flatresurrect = math.floor(flat/(H55_ElementalHP[elemental]+addhp)); + if flatresurrect > totaldied then + flatresurrect = totaldied; + end; + if flatresurrect >= 1 or percresurrect >= 1 then + if flatresurrect > percresurrect then + totalresurrect = flatresurrect; + else + totalresurrect = percresurrect; + end; + end; + end; + + if manapay > 0 then + if totalresurrect > 0 then + if (GetHeroStat(hero,STAT_MANA_POINTS) 0 then + AddHeroCreatures(hero,elemental,totalresurrect); + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Resurrection.txt",totalresurrect,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; +end; + +function H55_ResurrectArmy(player,hero,ci,tier,manacost,baseperc,stat) + local stackscount = GetSavedCombatArmyCreaturesCount(ci,1); + local race = H55_GetHeroRaceNum(hero); + local reduction = 0; + local coef = H55_GetHeroResurrectionCoef(hero,baseperc,stat); + local flat = H55_GetHeroFlatResurrection(hero,baseperc,tier,stat); + local heart = 0; + local addhp = H55_GetHeroHPBuffs(hero); + if tier == 3 and stat == STAT_KNOWLEDGE and manacost == 8 then heart = 1 end; + + print("H55 Rez Tier: "..tier.." Cost: "..manacost.." Stat: "..stat.." coef: "..coef.." flat: "..flat); + + --manacost + if H55_GetSaintSetCount(hero) >= 3 then reduction = reduction + 2 end; + if HasArtefact(hero,ARTIFACT_UPG_AR2,1) then reduction = reduction + 2 end; + if HasArtefact(hero,ARTIFACT_MONK_03,1) then reduction = reduction + 2 end; + local manapay = manacost - reduction; + if manapay < 0 then manapay = 0 end; + + --casualties + local totaldied = {[2] = 0,[3] = 0,[1] = 0}; + for i = 0,stackscount-1,1 do + local cr,cnt,died = GetSavedCombatArmyCreatureInfo(ci,1,i); + if died > 0 then + if cr == H55_Creatures[race][tier][2] then + totaldied[2] = totaldied[2] + died; + end; + if cr == H55_Creatures[race][tier][3] then + totaldied[3] = totaldied[3] + died; + end; + if cr == H55_Creatures[race][tier][1] then + totaldied[1] = totaldied[1] + died; + end; + end; + end; + + print("H55 Died = Upg: "..totaldied[2].." Alt: "..totaldied[3].." Unupg: "..totaldied[1]); + + --amounts + local totalresurrect = {[2] = 0,[3] = 0,[1] = 0}; + for i = 1,3 do + if totaldied[i] > 0 then + local percresurrect = math.floor(coef*totaldied[i]); + local flatresurrect = math.floor(flat/(H55_CreaturesHP[race][tier][i]+addhp)); + if flatresurrect > totaldied[i] then + flatresurrect = totaldied[i]; + end; + if stat == STAT_DEFENCE then + if flatresurrect >= 1 then + totalresurrect[i] = flatresurrect; + end; + elseif heart == 1 then + if flatresurrect >= 1 then + totalresurrect[i] = flatresurrect; + end; + else + if flatresurrect >= 1 or percresurrect >= 1 then + if flatresurrect > percresurrect then + totalresurrect[i] = flatresurrect; + else + totalresurrect[i] = percresurrect; + end; + end; + end; + end; + end; + + print("H55 Rez = Upg: "..totalresurrect[2].." Alt: "..totalresurrect[3].." Unupg: "..totalresurrect[1]); + + --resurrect + if manapay > 0 then + if totalresurrect[2] > 0 then + if (GetHeroStat(hero,STAT_MANA_POINTS) 0 then + if (GetHeroStat(hero,STAT_MANA_POINTS) 0 then + if (GetHeroStat(hero,STAT_MANA_POINTS) 0 then + AddHeroCreatures(hero,H55_Creatures[race][tier][2],totalresurrect[2]); + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Resurrection.txt",totalresurrect[2],hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if totalresurrect[3] > 0 then + AddHeroCreatures(hero,H55_Creatures[race][tier][3],totalresurrect[3]); + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Resurrection.txt",totalresurrect[3],hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if totalresurrect[1] > 0 then + AddHeroCreatures(hero,H55_Creatures[race][tier][1],totalresurrect[1]); + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Resurrection.txt",totalresurrect[1],hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; +end; + +function H55_ResurrectArmyAI(player,hero,ci,tier,manacost,baseperc,stat) + local stackscount = GetSavedCombatArmyCreaturesCount(ci,1); + local race = H55_GetHeroRaceNum(hero); + local coef = baseperc; + + --casualties + local totaldied = {[2] = 0,[3] = 0,[1] = 0}; + for i = 0,stackscount-1,1 do + local cr,cnt,died = GetSavedCombatArmyCreatureInfo(ci,1,i); + if died > 0 then + if cr == H55_Creatures[race][tier][2] then + totaldied[2] = totaldied[2] + died; + end; + if cr == H55_Creatures[race][tier][3] then + totaldied[3] = totaldied[3] + died; + end; + if cr == H55_Creatures[race][tier][1] then + totaldied[1] = totaldied[1] + died; + end; + end; + end; + + print("H55 Died = Tier: "..tier.." Upg: "..totaldied[2].." Alt: "..totaldied[3].." Unupg: "..totaldied[1]); + + --amounts + local totalresurrect = {[2] = 0,[3] = 0,[1] = 0}; + for i = 1,3 do + if totaldied[i] > 0 then + local percresurrect = math.floor(coef*totaldied[i]); + if percresurrect > 1 then + totalresurrect[i] = percresurrect; + else + totalresurrect[i] = 1; + end; + end; + end; + + print("H55 Saved = Tier: "..tier.." Upg: "..totalresurrect[2].." Alt: "..totalresurrect[3].." Unupg: "..totalresurrect[1]); + + --resurrect + if totalresurrect[2] > 0 then + AddHeroCreatures(hero,H55_Creatures[race][tier][2],totalresurrect[2]); + end; + if totalresurrect[3] > 0 then + AddHeroCreatures(hero,H55_Creatures[race][tier][3],totalresurrect[3]); + end; + if totalresurrect[1] > 0 then + AddHeroCreatures(hero,H55_Creatures[race][tier][1],totalresurrect[1]); + end; +end; + +function H55_GiveAidKit(player,hero,artifact) + if H55_IsThisAIPlayer(player) ~= 1 then + GiveArtefact(hero,artifact); + else + if H55_AveragePowerRating < 2750 or H55_Difficulty < 2 then + GiveArtefact(hero,artifact); + elseif H55_GameMode == 0 then + GiveArtefact(hero,artifact); + end; + end; +end; + +----------------------------------------------------------------------------------------------------------------------------------------------------- +--TOWN MANAGEMENT +----------------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_Spinlock(hero) + H55_SpinSwitch[hero] = 1; + while H55_SpinSwitch[hero] == 1 do + sleep(5); + print("H55 Spinlocking "..hero); + end; +end; + +function H55_EndSpinlock(hero) + H55_SpinSwitch[hero] = 0; +end; + +function H55_EnableATP() + H55_TownGateEnabled = 1; +end; + +function H55_EnableGovernance() + H55_GovernanceEnabled = 1; +end; + +function H55_IsAnyHeroInTown(town,player) + local answer = 0; + local heroes = GetPlayerHeroes(player); + for i,hero in heroes do + if (H55_GetDistance(hero,town) == 0) then + answer = answer+1; + end; + end; + return answer; +end; + +function H55_IsAnyHeroInGate(town) + local answer = 0; + if GetObjectOwner(town) ~= 0 then + local player = GetObjectOwner(town); + local heroes = GetPlayerHeroes(player); + if table.length(heroes) ~= 0 then + for i,hero in heroes do + if (H55_GetDistance(hero,town) == 6) then + answer = answer+1; + end; + -- Bugged function: IsHeroInTown(hero,town,1,0) == not nil + end; + end; + end; + return answer; +end; + +function H55_IsAnyHeroInGateTile(town,x,y,z) + local answer = 0; + local player = GetObjectOwner(town); + local heroes = GetPlayerHeroes(player); + if table.length(heroes) ~= 0 then + for i,hero in heroes do + local a,b,c = GetObjectPosition(hero) + if a == x and b == y and c == z then + answer = 1; + end; + end; + end; + return answer; +end; + +function H55_IDHeroInGate(town) + local answer = ""; + local player = GetObjectOwner(town); + local heroes = GetPlayerHeroes(player); + if table.length(heroes) ~= 0 then + for i,hero in heroes do + if (H55_GetDistance(hero,town) == 6) then + answer = hero; + end; + -- Bugged function: IsHeroInTown(hero,town,1,0) == not nil + end; + end; + return answer; +end; + +function H55_IsHeroInAnyTown(hero) + local answer = 0; + local towns = GetObjectNamesByType("TOWN"); + for i,town in towns do + if (H55_GetDistance(hero,town) == 0) then + answer = answer+1; + end; + end; + return answer; +end; + +function H55_IsHeroInAnyOwnedTown(player,hero) + local answer = 0; + local towns = GetObjectNamesByType("TOWN"); + for i,town in towns do + if GetObjectOwner(town) == player then + if (H55_GetDistance(hero,town) == 0) then + answer = answer+1; + end; + end; + end; + return answer; +end; + +function H55_IsEnemyNearby(object,proximity) + local player = GetObjectOwner(object); --invoke this function only for heroes outside town + local team = H55_GetPlayerTeam(player); + local answer = 0; + local enemies = H55_GetAllHeroes(); + for i, enemy in enemies do + if H55_IsHeroInAnyTown(enemy) == 0 then + if GetObjectOwner(enemy) ~= player and H55_GetObjectOwningTeam(enemy) ~= team and GetObjectOwner(enemy) ~= 0 and H55_GetDistance(object,enemy) < proximity then + answer = 1; + end; + end; + end; + return answer; +end; + +function H55_CancelDimensionDoor(hero) + H55_InterfacingTown[hero] = nil; + H55_InterfacingPosition[hero]["x"] = nil; + H55_InterfacingPosition[hero]["y"] = nil; + H55_InterfacingPosition[hero]["z"] = nil; + H55_InterfacingStatus[hero] = 0; + H55_EndDoorSpin[hero] = 0; + H55_BreakDoorSpin[hero] = 0; +end; + +function H55_InfoHeroManaRegen(hero) + local mana = (GetHeroStat(hero,STAT_KNOWLEDGE)); + if H55_NethermagesPhonebook[hero] == 1 or H55_DeathKnightsPhonebook[hero] == 1 then + if HasHeroSkill(hero,SKILL_NECROMANCY) == nil then + local cities = H55_GetAlignedTownsOwned(hero,player) + local multiplier = 0; + if cities ~= nil then + for i,city in cities do + if GetTownBuildingLevel(city,TOWN_BUILDING_SPECIAL_1) == 1 then + multiplier = multiplier+1; + end; + end; + end; + if multiplier >= 1 then + mana=mana+(multiplier*2); + end; + end; + end; + if HasHeroSkill(hero,PERK_MYSTICISM) then mana=mana*2 end; + --if HasHeroSkill(hero,KNIGHT_FEAT_PARIAH) then mana=mana+5 end; + return mana; +end; + +function H55_InfoElementals(hero) + local player = GetObjectOwner(hero); + local elementals = 0; + local blood = H55_GetPlayerDragonblood(player); + if blood >= 10 then + local towns = H55_GetPlayerTowns(player); + if (table.length(towns) > 0) then + for i,town in towns do + local townrace = H55_GetTownRace(town); + local bloodcoef = 12; + local bloodroot = math.sqrt(blood); + local elemtype = H55_GetRaceElementalTypeID(player,townrace); + if elemtype == 113 then bloodcoef = 8 end; + if elemtype == 116 then bloodcoef = 18 end; + if elemtype == 115 then bloodcoef = 30 end; + if elemtype == 114 then bloodcoef = 30 end; + if elemtype == 90 then bloodcoef = 30 end; + if townrace == 8 then + local growth = 3+(GetTownBuildingLevel(town, TOWN_BUILDING_SPECIAL_1)); + if GetTownBuildingLevel(town, TOWN_BUILDING_SPECIAL_3) == 1 then growth = growth + 2 end; + local totalgrowth = math.floor((bloodroot/bloodcoef)*growth); + elementals = elementals+totalgrowth; + else + local growth = 3+GetTownBuildingLevel(town, TOWN_BUILDING_MAGIC_GUILD); + local totalgrowth = math.floor((bloodroot/bloodcoef)*growth); + elementals = elementals+totalgrowth; + end; + end; + end; + else + elementals = 0; + end; + return elementals; +end; + +function H55_InfoLegion(hero) + local cap = H55_GetLegionCap(hero); + local growth = 0; + local bonus = 0; + if HasHeroSkill(hero,PERK_RECRUITMENT) then bonus = bonus+5 end; + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then bonus = bonus+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then bonus = bonus+5 end; + if cap == 1 then growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/1); + elseif cap == 2 then growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/1.5); + elseif cap == 3 then growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/2); + elseif cap == 4 then growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/3); + elseif cap == 5 then growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/4); + elseif cap == 6 then growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/6); + elseif cap == 7 then growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/12); + else growth = 0; + end; + if cap ~= 0 then + if growth < 1 then growth = 1 end; + end; + if H55_Governors[hero] == 1 then growth = 0 end; + return growth; +end; + +function H55_InfoSkeletonTaxes(hero) + local units,count = H55_ArmyInfo(hero); + local amount = 0; + local taxes = 0; + for i = 0,6 do + if (units[i] == 30) then + amount = amount + count[i] + elseif (units[i] ==152) then + amount = amount + count[i] + elseif (units[i] ==29) then + amount = amount + count[i] + end; + end; + if amount > 0 then + taxes = math.round(amount/2); + end; + return taxes; +end; + +function H55_InfoGoblinTaxes(hero) + local units,count = H55_ArmyInfo(hero); + local amount = 0; + local taxes = 0; + for i = 0,6 do + if (units[i] == 118) then + amount = amount + count[i] + elseif (units[i] ==173) then + amount = amount + count[i] + elseif (units[i] ==117) then + amount = amount + count[i] + end; + end; + if amount > 0 then + taxes = math.round(amount/2); + end; + return taxes; +end; + +function H55_InfoGoldIncome(hero) + local gold = 0; + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE); + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then knowledge = knowledge+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then knowledge = knowledge+5 end; + if HasHeroSkill(hero,PERK_ESTATES) then gold = gold+(math.round(GetHeroStat(hero,STAT_KNOWLEDGE)*25)) end; + if HasHeroSkill(hero,NECROMANCER_FEAT_LORD_OF_UNDEAD) then gold = gold+H55_InfoSkeletonTaxes(hero) end; + if HasHeroSkill(hero,HERO_SKILL_GOBLIN_SUPPORT) then gold = gold+H55_InfoGoblinTaxes(hero) end; + if HasArtefact(hero,ARTIFACT_ENDLESS_SACK_OF_GOLD,0) then gold = gold+(math.round(knowledge*50)) end; + if HasArtefact(hero,ARTIFACT_ENDLESS_BAG_OF_GOLD,0) then gold = gold+(math.round(knowledge*25)) end; + if HasArtefact(hero,ARTIFACT_HORN_OF_PLENTY,0) then gold = gold+(math.round(knowledge*75)) end; + if HasArtefact(hero,ARTIFACT_GEAR_08,0) then gold = gold+(math.round(knowledge*200)) end; + return gold; +end; + +function H55_InfoGovEnabled() + if H55_GovernanceEnabled == 1 then + return H55_TM_Txt_Enabled; + else + return H55_TM_Txt_Disabled; + end; +end; + +function H55_InfoTCEnabled() + if H55_TownConvEnabled == 1 then + return H55_TM_Txt_Enabled; + else + return H55_TM_Txt_Disabled; + end; +end; + +function H55_InfoOccupation(hero) + if H55_Governors[hero] == 1 then + return H55_TM_Txt_Governor; + else + return H55_TM_Txt_Conquest; + end; +end; + +function H55_AbortTC(hero) + print("H55 Player Takes No Action"); +end; + +function H55_TownManagement(hero,CUSTOM_ABILITY_4) + local player = GetObjectOwner(hero); + local playerrace = H55_GetPlayerRace(player); + local herorace = H55_GetHeroRaceNum(hero); + local gates = GetObjectNamesByType("TOWN"); + local town = nil; + local townrace = 0; + for i,gate in gates do + if (GetObjectOwner(gate) == player) and (IsHeroInTown(hero,gate,1,0) == not nil) then + town = gate; + townrace = H55_GetTownRace(gate); + end; + end; + if H55_TownManageOwners[hero] == 1 then + if H55_TownGateEnabled == 0 then + if town ~= nil and townrace ~= playerrace then --hero is in strange town + if H55_TownConvEnabled == 1 and herorace == playerrace then + H55_TM_Conv_or_Close(hero,town); + else + H55_TM_InfoOnly(hero,town); + end; + elseif town ~= nil and townrace == playerrace then --hero is in native town + if H55_GovernanceEnabled == 1 and H55_Governors[hero] == nil and townrace == herorace then + H55_TM_Gov_or_Close(hero,town); + elseif H55_GovernanceEnabled == 1 and H55_Governors[hero] ~= nil and H55_GovernorsWithTown[hero] == town then + H55_TM_End_or_Close(hero,town); + else + H55_TM_InfoOnly(hero,town); + end; + else + H55_TM_InfoOnly(hero,town); + end; + else + if town ~= nil and townrace ~= playerrace then --hero is in strange town + if H55_TownConvEnabled == 1 and herorace == playerrace then + H55_TM_Conv_or_Tele(hero,town); + else + H55_TM_Tele_or_Close(hero,town); + end; + elseif town ~= nil and townrace == playerrace then --hero is in native town + if H55_GovernanceEnabled == 1 and H55_Governors[hero] == nil and townrace == herorace then + H55_TM_Gov_or_Tele(hero,town); + elseif H55_GovernanceEnabled == 1 and H55_Governors[hero] ~= nil and H55_GovernorsWithTown[hero] == town then + H55_TM_End_or_Close(hero,town); + else + H55_TM_Tele_or_Close(hero,town); + end; + else + H55_TM_Tele_or_Close(hero,town); + end; + end; + end; +end; + +function H55_TM_InfoOnly(hero,town) + local player = GetObjectOwner(hero); + local v_movement = GetHeroStat(hero,STAT_MOVE_POINTS); + local v_mana = H55_InfoHeroManaRegen(hero); + local v_occupation = H55_InfoOccupation(hero); + local v_estates = H55_InfoGoldIncome(hero); + local v_dragonblood = H55_GetHeroDragonblood(hero); + local v_summons = H55_InfoElementals(hero); + local v_artifactsummons_tier = H55_GetLegionCap(hero); + local v_artifactsummons = H55_InfoLegion(hero); + local v_tier1 = 0; + local v_tier2 = 0; + local v_tier3 = 0; + local v_tier4 = 0; + local v_tier5 = 0; + local v_tier6 = 0; + local v_tier7 = 0; + local v_governance = H55_InfoGovEnabled(); + local v_conversion = H55_InfoTCEnabled(); + local v_maxtowns = H55_MaxTownsPerFaction; + local v_t1d = H55_MaxDwellingsT1; + local v_t2d = H55_MaxDwellingsT2; + local v_t3d = H55_MaxDwellingsT3; + local v_t4d = H55_MaxDwellingsT4; + if H55_GovernanceTier1[hero] ~= nil then v_tier1 = H55_GovernanceTier1[hero] end; + if H55_GovernanceTier2[hero] ~= nil then v_tier2 = H55_GovernanceTier2[hero] end; + if H55_GovernanceTier3[hero] ~= nil then v_tier3 = H55_GovernanceTier3[hero] end; + if H55_GovernanceTier4[hero] ~= nil then v_tier4 = H55_GovernanceTier4[hero] end; + if H55_GovernanceTier5[hero] ~= nil then v_tier5 = H55_GovernanceTier5[hero] end; + if H55_GovernanceTier6[hero] ~= nil then v_tier6 = H55_GovernanceTier6[hero] end; + if H55_GovernanceTier7[hero] ~= nil then v_tier7 = H55_GovernanceTier7[hero] end; + MessageBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/TownPortal/TM_Info_Only.txt"; + occupation=v_occupation,movement=v_movement,mana=v_mana,estates=v_estates,dragonblood=v_dragonblood,artifactsummons_tier=v_artifactsummons_tier,artifactsummons=v_artifactsummons, + summons=v_summons,tier1=v_tier1,tier2=v_tier2,tier3=v_tier3,tier4=v_tier4,tier5=v_tier5,tier6=v_tier6,tier7=v_tier7, + governance=v_governance,conversion=v_conversion,maxtowns=v_maxtowns,t1d=v_t1d,t2d=v_t2d,t3d=v_t3d,t4d=v_t4d}, + "H55_AbortTC('"..hero.."')"); +end; + +function H55_TM_Conv_or_Tele(hero,town) + local player = GetObjectOwner(hero); + local v_movement = GetHeroStat(hero,STAT_MOVE_POINTS); + local v_mana = H55_InfoHeroManaRegen(hero); + local v_occupation = H55_InfoOccupation(hero); + local v_estates = H55_InfoGoldIncome(hero); + local v_dragonblood = H55_GetHeroDragonblood(hero); + local v_summons = H55_InfoElementals(hero); + local v_artifactsummons_tier = H55_GetLegionCap(hero); + local v_artifactsummons = H55_InfoLegion(hero); + local v_tier1 = 0; + local v_tier2 = 0; + local v_tier3 = 0; + local v_tier4 = 0; + local v_tier5 = 0; + local v_tier6 = 0; + local v_tier7 = 0; + local v_governance = H55_InfoGovEnabled(); + local v_conversion = H55_InfoTCEnabled(); + local v_maxtowns = H55_MaxTownsPerFaction; + local v_t1d = H55_MaxDwellingsT1; + local v_t2d = H55_MaxDwellingsT2; + local v_t3d = H55_MaxDwellingsT3; + local v_t4d = H55_MaxDwellingsT4; + if H55_GovernanceTier1[hero] ~= nil then v_tier1 = H55_GovernanceTier1[hero] end; + if H55_GovernanceTier2[hero] ~= nil then v_tier2 = H55_GovernanceTier2[hero] end; + if H55_GovernanceTier3[hero] ~= nil then v_tier3 = H55_GovernanceTier3[hero] end; + if H55_GovernanceTier4[hero] ~= nil then v_tier4 = H55_GovernanceTier4[hero] end; + if H55_GovernanceTier5[hero] ~= nil then v_tier5 = H55_GovernanceTier5[hero] end; + if H55_GovernanceTier6[hero] ~= nil then v_tier6 = H55_GovernanceTier6[hero] end; + if H55_GovernanceTier7[hero] ~= nil then v_tier7 = H55_GovernanceTier7[hero] end; + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/TownPortal/TM_Conv_or_Tele.txt"; + occupation=v_occupation,movement=v_movement,mana=v_mana,estates=v_estates,dragonblood=v_dragonblood,artifactsummons_tier=v_artifactsummons_tier,artifactsummons=v_artifactsummons, + summons=v_summons,tier1=v_tier1,tier2=v_tier2,tier3=v_tier3,tier4=v_tier4,tier5=v_tier5,tier6=v_tier6,tier7=v_tier7, + governance=v_governance,conversion=v_conversion,maxtowns=v_maxtowns,t1d=v_t1d,t2d=v_t2d,t3d=v_t3d,t4d=v_t4d}, + "H55_TCQuestionBox('"..hero.."','"..town.."')","H55_ATPQuestionBox('"..hero.."')"); +end; + +function H55_TM_Conv_or_Close(hero,town) + local player = GetObjectOwner(hero); + local v_movement = GetHeroStat(hero,STAT_MOVE_POINTS); + local v_mana = H55_InfoHeroManaRegen(hero); + local v_occupation = H55_InfoOccupation(hero); + local v_estates = H55_InfoGoldIncome(hero); + local v_dragonblood = H55_GetHeroDragonblood(hero); + local v_summons = H55_InfoElementals(hero); + local v_artifactsummons_tier = H55_GetLegionCap(hero); + local v_artifactsummons = H55_InfoLegion(hero); + local v_tier1 = 0; + local v_tier2 = 0; + local v_tier3 = 0; + local v_tier4 = 0; + local v_tier5 = 0; + local v_tier6 = 0; + local v_tier7 = 0; + local v_governance = H55_InfoGovEnabled(); + local v_conversion = H55_InfoTCEnabled(); + local v_maxtowns = H55_MaxTownsPerFaction; + local v_t1d = H55_MaxDwellingsT1; + local v_t2d = H55_MaxDwellingsT2; + local v_t3d = H55_MaxDwellingsT3; + local v_t4d = H55_MaxDwellingsT4; + if H55_GovernanceTier1[hero] ~= nil then v_tier1 = H55_GovernanceTier1[hero] end; + if H55_GovernanceTier2[hero] ~= nil then v_tier2 = H55_GovernanceTier2[hero] end; + if H55_GovernanceTier3[hero] ~= nil then v_tier3 = H55_GovernanceTier3[hero] end; + if H55_GovernanceTier4[hero] ~= nil then v_tier4 = H55_GovernanceTier4[hero] end; + if H55_GovernanceTier5[hero] ~= nil then v_tier5 = H55_GovernanceTier5[hero] end; + if H55_GovernanceTier6[hero] ~= nil then v_tier6 = H55_GovernanceTier6[hero] end; + if H55_GovernanceTier7[hero] ~= nil then v_tier7 = H55_GovernanceTier7[hero] end; + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/TownPortal/TM_Conv_or_Close.txt"; + occupation=v_occupation,movement=v_movement,mana=v_mana,estates=v_estates,dragonblood=v_dragonblood,artifactsummons_tier=v_artifactsummons_tier,artifactsummons=v_artifactsummons, + summons=v_summons,tier1=v_tier1,tier2=v_tier2,tier3=v_tier3,tier4=v_tier4,tier5=v_tier5,tier6=v_tier6,tier7=v_tier7, + governance=v_governance,conversion=v_conversion,maxtowns=v_maxtowns,t1d=v_t1d,t2d=v_t2d,t3d=v_t3d,t4d=v_t4d}, + "H55_TCQuestionBox('"..hero.."','"..town.."')","H55_AbortTC('"..hero.."')"); +end; + +function H55_TM_Gov_or_Tele(hero,town) + local player = GetObjectOwner(hero); + local v_movement = GetHeroStat(hero,STAT_MOVE_POINTS); + local v_mana = H55_InfoHeroManaRegen(hero); + local v_occupation = H55_InfoOccupation(hero); + local v_estates = H55_InfoGoldIncome(hero); + local v_dragonblood = H55_GetHeroDragonblood(hero); + local v_summons = H55_InfoElementals(hero); + local v_artifactsummons_tier = H55_GetLegionCap(hero); + local v_artifactsummons = H55_InfoLegion(hero); + local v_tier1 = 0; + local v_tier2 = 0; + local v_tier3 = 0; + local v_tier4 = 0; + local v_tier5 = 0; + local v_tier6 = 0; + local v_tier7 = 0; + local v_governance = H55_InfoGovEnabled(); + local v_conversion = H55_InfoTCEnabled(); + local v_maxtowns = H55_MaxTownsPerFaction; + local v_t1d = H55_MaxDwellingsT1; + local v_t2d = H55_MaxDwellingsT2; + local v_t3d = H55_MaxDwellingsT3; + local v_t4d = H55_MaxDwellingsT4; + if H55_GovernanceTier1[hero] ~= nil then v_tier1 = H55_GovernanceTier1[hero] end; + if H55_GovernanceTier2[hero] ~= nil then v_tier2 = H55_GovernanceTier2[hero] end; + if H55_GovernanceTier3[hero] ~= nil then v_tier3 = H55_GovernanceTier3[hero] end; + if H55_GovernanceTier4[hero] ~= nil then v_tier4 = H55_GovernanceTier4[hero] end; + if H55_GovernanceTier5[hero] ~= nil then v_tier5 = H55_GovernanceTier5[hero] end; + if H55_GovernanceTier6[hero] ~= nil then v_tier6 = H55_GovernanceTier6[hero] end; + if H55_GovernanceTier7[hero] ~= nil then v_tier7 = H55_GovernanceTier7[hero] end; + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/TownPortal/TM_Gov_or_Tele.txt"; + occupation=v_occupation,movement=v_movement,mana=v_mana,estates=v_estates,dragonblood=v_dragonblood,artifactsummons_tier=v_artifactsummons_tier,artifactsummons=v_artifactsummons, + summons=v_summons,tier1=v_tier1,tier2=v_tier2,tier3=v_tier3,tier4=v_tier4,tier5=v_tier5,tier6=v_tier6,tier7=v_tier7, + governance=v_governance,conversion=v_conversion,maxtowns=v_maxtowns,t1d=v_t1d,t2d=v_t2d,t3d=v_t3d,t4d=v_t4d}, + "H55_TGStartQuestionBox('"..hero.."','"..town.."')","H55_ATPQuestionBox('"..hero.."')"); +end; + +function H55_TM_Tele_or_Close(hero,town) + local player = GetObjectOwner(hero); + local v_movement = GetHeroStat(hero,STAT_MOVE_POINTS); + local v_mana = H55_InfoHeroManaRegen(hero); + local v_occupation = H55_InfoOccupation(hero); + local v_estates = H55_InfoGoldIncome(hero); + local v_dragonblood = H55_GetHeroDragonblood(hero); + local v_summons = H55_InfoElementals(hero); + local v_artifactsummons_tier = H55_GetLegionCap(hero); + local v_artifactsummons = H55_InfoLegion(hero); + local v_tier1 = 0; + local v_tier2 = 0; + local v_tier3 = 0; + local v_tier4 = 0; + local v_tier5 = 0; + local v_tier6 = 0; + local v_tier7 = 0; + local v_governance = H55_InfoGovEnabled(); + local v_conversion = H55_InfoTCEnabled(); + local v_maxtowns = H55_MaxTownsPerFaction; + local v_t1d = H55_MaxDwellingsT1; + local v_t2d = H55_MaxDwellingsT2; + local v_t3d = H55_MaxDwellingsT3; + local v_t4d = H55_MaxDwellingsT4; + if H55_GovernanceTier1[hero] ~= nil then v_tier1 = H55_GovernanceTier1[hero] end; + if H55_GovernanceTier2[hero] ~= nil then v_tier2 = H55_GovernanceTier2[hero] end; + if H55_GovernanceTier3[hero] ~= nil then v_tier3 = H55_GovernanceTier3[hero] end; + if H55_GovernanceTier4[hero] ~= nil then v_tier4 = H55_GovernanceTier4[hero] end; + if H55_GovernanceTier5[hero] ~= nil then v_tier5 = H55_GovernanceTier5[hero] end; + if H55_GovernanceTier6[hero] ~= nil then v_tier6 = H55_GovernanceTier6[hero] end; + if H55_GovernanceTier7[hero] ~= nil then v_tier7 = H55_GovernanceTier7[hero] end; + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/TownPortal/TM_Tele_or_Close.txt"; + occupation=v_occupation,movement=v_movement,mana=v_mana,estates=v_estates,dragonblood=v_dragonblood,artifactsummons_tier=v_artifactsummons_tier,artifactsummons=v_artifactsummons, + summons=v_summons,tier1=v_tier1,tier2=v_tier2,tier3=v_tier3,tier4=v_tier4,tier5=v_tier5,tier6=v_tier6,tier7=v_tier7, --wages=v_wages,allwages=v_allwages, + governance=v_governance,conversion=v_conversion,maxtowns=v_maxtowns,t1d=v_t1d,t2d=v_t2d,t3d=v_t3d,t4d=v_t4d}, + "H55_ATPQuestionBox('"..hero.."')","H55_AbortTC('"..hero.."')"); +end; + +function H55_TM_Gov_or_Close(hero,town) + local player = GetObjectOwner(hero); + local v_movement = GetHeroStat(hero,STAT_MOVE_POINTS); + local v_mana = H55_InfoHeroManaRegen(hero); + local v_occupation = H55_InfoOccupation(hero); + local v_estates = H55_InfoGoldIncome(hero); + local v_dragonblood = H55_GetHeroDragonblood(hero); + local v_summons = H55_InfoElementals(hero); + local v_artifactsummons_tier = H55_GetLegionCap(hero); + local v_artifactsummons = H55_InfoLegion(hero); + local v_tier1 = 0; + local v_tier2 = 0; + local v_tier3 = 0; + local v_tier4 = 0; + local v_tier5 = 0; + local v_tier6 = 0; + local v_tier7 = 0; + local v_governance = H55_InfoGovEnabled(); + local v_conversion = H55_InfoTCEnabled(); + local v_maxtowns = H55_MaxTownsPerFaction; + local v_t1d = H55_MaxDwellingsT1; + local v_t2d = H55_MaxDwellingsT2; + local v_t3d = H55_MaxDwellingsT3; + local v_t4d = H55_MaxDwellingsT4; + if H55_GovernanceTier1[hero] ~= nil then v_tier1 = H55_GovernanceTier1[hero] end; + if H55_GovernanceTier2[hero] ~= nil then v_tier2 = H55_GovernanceTier2[hero] end; + if H55_GovernanceTier3[hero] ~= nil then v_tier3 = H55_GovernanceTier3[hero] end; + if H55_GovernanceTier4[hero] ~= nil then v_tier4 = H55_GovernanceTier4[hero] end; + if H55_GovernanceTier5[hero] ~= nil then v_tier5 = H55_GovernanceTier5[hero] end; + if H55_GovernanceTier6[hero] ~= nil then v_tier6 = H55_GovernanceTier6[hero] end; + if H55_GovernanceTier7[hero] ~= nil then v_tier7 = H55_GovernanceTier7[hero] end; + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/TownPortal/TM_Gov_or_Close.txt"; + occupation=v_occupation,movement=v_movement,mana=v_mana,estates=v_estates,dragonblood=v_dragonblood,artifactsummons_tier=v_artifactsummons_tier,artifactsummons=v_artifactsummons, + summons=v_summons,tier1=v_tier1,tier2=v_tier2,tier3=v_tier3,tier4=v_tier4,tier5=v_tier5,tier6=v_tier6,tier7=v_tier7, + governance=v_governance,conversion=v_conversion,maxtowns=v_maxtowns,t1d=v_t1d,t2d=v_t2d,t3d=v_t3d,t4d=v_t4d}, + "H55_TGStartQuestionBox('"..hero.."','"..town.."')","H55_AbortTC('"..hero.."')"); +end; + +function H55_TM_End_or_Close(hero,town) + local player = GetObjectOwner(hero); + local v_movement = GetHeroStat(hero,STAT_MOVE_POINTS); + local v_mana = H55_InfoHeroManaRegen(hero); + local v_occupation = H55_InfoOccupation(hero); + local v_estates = H55_InfoGoldIncome(hero); + local v_dragonblood = H55_GetHeroDragonblood(hero); + local v_summons = H55_InfoElementals(hero); + local v_artifactsummons_tier = H55_GetLegionCap(hero); + local v_artifactsummons = H55_InfoLegion(hero); + local v_tier1 = 0; + local v_tier2 = 0; + local v_tier3 = 0; + local v_tier4 = 0; + local v_tier5 = 0; + local v_tier6 = 0; + local v_tier7 = 0; + local v_governance = H55_InfoGovEnabled(); + local v_conversion = H55_InfoTCEnabled(); + local v_maxtowns = H55_MaxTownsPerFaction; + local v_t1d = H55_MaxDwellingsT1; + local v_t2d = H55_MaxDwellingsT2; + local v_t3d = H55_MaxDwellingsT3; + local v_t4d = H55_MaxDwellingsT4; + if H55_GovernanceTier1[hero] ~= nil then v_tier1 = H55_GovernanceTier1[hero] end; + if H55_GovernanceTier2[hero] ~= nil then v_tier2 = H55_GovernanceTier2[hero] end; + if H55_GovernanceTier3[hero] ~= nil then v_tier3 = H55_GovernanceTier3[hero] end; + if H55_GovernanceTier4[hero] ~= nil then v_tier4 = H55_GovernanceTier4[hero] end; + if H55_GovernanceTier5[hero] ~= nil then v_tier5 = H55_GovernanceTier5[hero] end; + if H55_GovernanceTier6[hero] ~= nil then v_tier6 = H55_GovernanceTier6[hero] end; + if H55_GovernanceTier7[hero] ~= nil then v_tier7 = H55_GovernanceTier7[hero] end; + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/TownPortal/TM_End_or_Close.txt"; + occupation=v_occupation,movement=v_movement,mana=v_mana,estates=v_estates,dragonblood=v_dragonblood,artifactsummons_tier=v_artifactsummons_tier,artifactsummons=v_artifactsummons, + summons=v_summons,tier1=v_tier1,tier2=v_tier2,tier3=v_tier3,tier4=v_tier4,tier5=v_tier5,tier6=v_tier6,tier7=v_tier7, + governance=v_governance,conversion=v_conversion,maxtowns=v_maxtowns,t1d=v_t1d,t2d=v_t2d,t3d=v_t3d,t4d=v_t4d}, + "H55_TGEndQuestionBox('"..hero.."','"..town.."')","H55_AbortTC('"..hero.."')"); +end; + +function H55_TGStartQuestionBox(hero,town) + local player = GetObjectOwner(hero); + if H55_TownsWithGovernor[town] ~= nil then + if IsObjectExists(H55_TownsWithGovernor[town]) == 1 then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TM_TownAlready.txt", hero, player, 5); + else + H55_ResetConquestHero(H55_TownsWithGovernor[town],town); + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/TownPortal/TG_StartQuestion.txt"}, + "H55_StartGovernor('"..hero.."','"..town.."')","H55_AbortTC('"..hero.."')"); + end; + else + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/TownPortal/TG_StartQuestion.txt"}, + "H55_StartGovernor('"..hero.."','"..town.."')","H55_AbortTC('"..hero.."')"); + end; +end; + +function H55_TGEndQuestionBox(hero,town) + local player = GetObjectOwner(hero); + local term = (H55_Day-H55_GovernorInaugurationDay[hero]) + local v_fine = 0; + if term <= 27 then v_fine = (28-term)*(GetHeroLevel(hero)*100) end; + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/TownPortal/TG_EndQuestion.txt";fine=v_fine}, + "H55_EndGovernor('"..hero.."','"..town.."')","H55_AbortTC('"..hero.."')"); +end; + +function H55_StartGovernor(hero,town) + local player = GetObjectOwner(hero); + H55_Governors[hero] = 1; + H55_GovernorsWithTown[hero] = town; + H55_TownsWithGovernor[town] = hero; + H55_GovernorInaugurationDay[hero] = H55_Day; + H55_CastleDefenseOwners[hero] = 0; + H55_MageGuildBonusOwners[hero] = 0; + H55_SpecialAttackOwners[hero] = 0; + H55_SpecialKnowledgeOwners[hero] = 0; + H55_SpecialSpellPowerOwners[hero] = 0; + H55_RunicShrineBonusOwners[hero] = 0; + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TG_Inaugurated.txt", hero, player, 5); +end; + +function H55_EndGovernor(hero,town) + local player = GetObjectOwner(hero); + local term = (H55_Day-H55_GovernorInaugurationDay[hero]) + local fine = 0; + if term <= 27 then fine = (28-term)*(GetHeroLevel(hero)*100) end; + if fine > 0 then + if GetPlayerResource(player,6) >= fine then + H55_TakeResourcesSilent(player,6,fine); + H55_ResetConquestHero(hero,town); + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TG_Resigned.txt", hero, player, 5); + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TG_ResignRefuse.txt", hero, player, 5); + end; + else + H55_ResetConquestHero(hero,town); + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TG_Resigned.txt", hero, player, 5); + end; +end; + +function H55_ResetConquestHero(hero,town) + H55_Governors[hero] = nil; + H55_GovernorsWithTown[hero] = nil; + H55_TownsWithGovernor[town] = nil; + H55_GovernorInaugurationDay[hero] = nil; + if IsObjectExists(hero) == 1 then + H55_AdjustGovernorDefense(hero,nil); + end; + H55_CastleDefenseOwners[hero] = 0; + H55_MageGuildBonusOwners[hero] = 0; + H55_SpecialAttackOwners[hero] = 0; + H55_SpecialKnowledgeOwners[hero] = 0; + H55_SpecialSpellPowerOwners[hero] = 0; + H55_RunicShrineBonusOwners[hero] = 0; +end; + +function H55_ATPQuestionBox(hero) + H55_TeleportStatus[hero] = 1; + local player = GetObjectOwner(hero); + local towns = GetObjectNamesByType("TOWN"); + local targets = 0; + if H55_Governors[hero] == 1 then + if GetHeroStat(hero,STAT_MOVE_POINTS) < 2000 and HasArtefact(hero,ARTIFACT_GEAR_01,1) == nil then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TP_NoMovement.txt", hero, player, 5); + elseif GetHeroStat(hero,STAT_MANA_POINTS) < 25 and HasArtefact(hero,ARTIFACT_GEAR_01,1) == nil then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TP_NoMana.txt", hero, player, 5); + else + local hometown = H55_GovernorsWithTown[hero]; + if (player == GetObjectOwner(hometown)) and H55_GetTownRace(hometown) ~= 8 and (GetTownBuildingLevel(hometown,TOWN_BUILDING_MAGIC_GUILD) == 5) then + local x,y,z=H55_GetTownActiveTile(hometown); + MoveCameraForPlayers(GetPlayerFilter(player),x,y,z,50,math.pi/2,1,1,1,1); + sleep(4); + QuestionBoxForPlayers(GetPlayerFilter(player),"/Text/Game/Scripts/TownPortal/TP_Question.txt", + "H55_TeleportNow('"..hero.."','"..hometown.."')","H55_EndSpinlock('"..hero.."')"); + H55_Spinlock(hero); + elseif (player == GetObjectOwner(hometown)) and H55_GetTownRace(hometown) == 8 and (GetTownBuildingLevel(hometown,TOWN_BUILDING_SPECIAL_1) == 3) and (GetTownBuildingLevel(hometown,TOWN_BUILDING_SPECIAL_3) == 1) then + local x,y,z=H55_GetTownActiveTile(hometown); + MoveCameraForPlayers(GetPlayerFilter(player),x,y,z,50,math.pi/2,1,1,1,1); + sleep(4); + QuestionBoxForPlayers(GetPlayerFilter(player),"/Text/Game/Scripts/TownPortal/TP_Question.txt", + "H55_TeleportNow('"..hero.."','"..hometown.."')","H55_EndSpinlock('"..hero.."')"); + H55_Spinlock(hero); + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TP_NoTargets.txt", hero, player, 5); + end; + end; + else + if GetHeroStat(hero,STAT_MOVE_POINTS) < 2000 and HasArtefact(hero,ARTIFACT_GEAR_01,1) == nil then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TP_NoMovement.txt", hero, player, 5); + elseif GetHeroStat(hero,STAT_MANA_POINTS) < 25 and HasArtefact(hero,ARTIFACT_GEAR_01,1) == nil then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TP_NoMana.txt", hero, player, 5); + else + for i,town in towns do + if (player == GetObjectOwner(town)) and H55_GetTownRace(town) ~= 8 and (GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD) == 5) then + targets = targets+1 + end; + if (player == GetObjectOwner(town)) and H55_GetTownRace(town) == 8 and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1) == 3) and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_3) == 1) then + targets = targets+1 + end; + end; + if targets > 0 then + for i,town in towns do + if H55_TeleportStatus[hero] == 1 then + if (player == GetObjectOwner(town)) then + if H55_GetTownRace(town) ~= 8 and (GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD) == 5) then + local x,y,z=H55_GetTownActiveTile(town); + MoveCameraForPlayers(GetPlayerFilter(player),x,y,z,50,math.pi/2,1,1,1,1); + sleep(4); + QuestionBoxForPlayers(GetPlayerFilter(player),"/Text/Game/Scripts/TownPortal/TP_Question.txt", + "H55_TeleportNow('"..hero.."','"..town.."')","H55_EndSpinlock('"..hero.."')"); + H55_Spinlock(hero); + elseif H55_GetTownRace(town) == 8 and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1) == 3) and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_3) == 1) then + local x,y,z=H55_GetTownActiveTile(town); + MoveCameraForPlayers(GetPlayerFilter(player),x,y,z,50,math.pi/2,1,1,1,1); + sleep(4); + QuestionBoxForPlayers(GetPlayerFilter(player),"/Text/Game/Scripts/TownPortal/TP_Question.txt", + "H55_TeleportNow('"..hero.."','"..town.."')","H55_EndSpinlock('"..hero.."')"); + H55_Spinlock(hero); + end; + end; + end; + end; + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TP_NoTargets.txt", hero, player, 5); + end; + end; + end; +end; + +function H55_TeleportNow(hero,town) + local player = GetObjectOwner(hero); + local movepoints = GetHeroStat(hero,STAT_MOVE_POINTS); + print(town); + local x,y,z=H55_GetTownActiveTile(town); + if H55_IsAnyHeroInGateTile(town,x,y,z) == 1 then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TP_GateFull.txt", hero, player, 5); + H55_EndSpinlock(hero); + else + local rotate=H55_GetTownRotation(town); + H55_TeleportStatus[hero] = 2; + if HasArtefact(hero,ARTIFACT_GEAR_01,1) == nil then + ChangeHeroStat(hero,STAT_MOVE_POINTS,(-1*movepoints)); + ChangeHeroStat(hero,STAT_MANA_POINTS,-25); + end; + print("H55 Performing Teleport.."); + Play2DSoundForPlayers(GetPlayerFilter(player), H55_SndTPStart); + PlayVisualEffect("/Effects/_(Effect)/Spells/townportal_start.xdb#xpointer(/Effect)",town,"",x,y,0,0,z); + SetObjectPosition(hero,x,y,z); + H55_EndSpinlock(hero); + sleep(8); + Play2DSoundForPlayers(GetPlayerFilter(player), H55_SndTPEnd); + sleep(4); + SetObjectRotation(hero,H55_TeleportAngles[rotate]); + end; +end; + +function H55_TCQuestionBox(hero,town) + local player = GetObjectOwner(hero); + local movepoints = GetHeroStat(hero,STAT_MOVE_POINTS); + local x,y,z=GetObjectPosition(town); + local playerrace = H55_GetPlayerRace(player); + local townrace = H55_GetTownRace(town); + if H55_GetAmountAlignedTowns(playerrace) < H55_MaxTownsPerFaction then + if (GetTownBuildingLevel(town,TOWN_BUILDING_TOWN_HALL) ~= 4) then + local tavern = GetTownBuildingLevel(town,TOWN_BUILDING_TAVERN); + local marketplace = GetTownBuildingLevel(town,TOWN_BUILDING_MARKETPLACE); + local blacksmith = GetTownBuildingLevel(town,TOWN_BUILDING_BLACKSMITH); + local fort = GetTownBuildingLevel(town,TOWN_BUILDING_FORT); + local townhall = GetTownBuildingLevel(town,TOWN_BUILDING_TOWN_HALL); + local dwelling1 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_1); + local dwelling2 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_2); + local dwelling3 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_3); + local dwelling4 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_4); + local dwelling5 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_5); + local dwelling6 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_6); + local dwelling7 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_7); + local shipyard = GetTownBuildingLevel(town,TOWN_BUILDING_SHIPYARD); + local guild = 0; + if townrace ~= 8 then + guild = GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD); + end; + local grail = GetTownBuildingLevel(town,TOWN_BUILDING_GRAIL); + local special1 = 0; + local special2 = 0; + local special3 = 0; + local special4 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_4); + local special5 = 0; + if townrace ~= 1 and townrace ~= 2 and townrace ~= 3 then + special3 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_3); + end; + if townrace == 2 then + special1 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_0); + else + special1 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1); + end; + if townrace == 6 then + special2 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_6); + else + special2 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_2); + end; + if townrace ~= 4 and townrace ~= 5 and townrace ~= 6 then + special5 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_5); + else + special5 = 0; + end; + + local townvalue = tavern+marketplace+blacksmith+fort+townhall+dwelling1+dwelling2+dwelling3+dwelling4+dwelling5+dwelling6+dwelling7+shipyard+guild+grail+special1+special2+special3+special4+special5; + + if townvalue == 0 then townvalue = 1 end; + if H55_MapType == "RMG" and townvalue < 4 then townvalue = 1 end; + + local gold_qty = (townvalue*3000)-2000; + local wood_qty = townvalue*3; + local ore_qty = townvalue*3; + local mercury_qty = townvalue*1; + local crystal_qty = townvalue*1; + local sulphur_qty = townvalue*1; + local gem_qty = townvalue*1; + + MoveCameraForPlayers(GetPlayerFilter(player),x,y,z,50,math.pi/2,1,1,1,1); + sleep(4); + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/TownPortal/TC_Question.txt";gold=gold_qty,wood=wood_qty,ore=ore_qty,mercury=mercury_qty,crystal=crystal_qty,sulphur=sulphur_qty,gem=gem_qty}, + "H55_ConvertNow('"..hero.."','"..town.."','"..townvalue.."')","H55_AbortTC('"..hero.."')"); + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TC_NoTarget.txt", hero, player, 5); + end; + else + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TC_Limit.txt", hero, player, 5); + end; +end; + +function H55_ConvertNow(hero,town,townvalue) + local herorace = H55_GetHeroRaceNum(hero); + local towntype = H55_GetTownRaceID(herorace); + local townrace = H55_GetTownRace(town); + local player = GetObjectOwner(hero); + local movepoints = GetHeroStat(hero,STAT_MOVE_POINTS); + + local tavern = GetTownBuildingLevel(town,TOWN_BUILDING_TAVERN); + local marketplace = GetTownBuildingLevel(town,TOWN_BUILDING_MARKETPLACE); + local blacksmith = GetTownBuildingLevel(town,TOWN_BUILDING_BLACKSMITH); + local fort = GetTownBuildingLevel(town,TOWN_BUILDING_FORT); + local townhall = GetTownBuildingLevel(town,TOWN_BUILDING_TOWN_HALL); + local dwelling1 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_1); + local dwelling2 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_2); + local dwelling3 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_3); + local dwelling4 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_4); + local dwelling5 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_5); + local dwelling6 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_6); + local dwelling7 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_7); + local shipyard = GetTownBuildingLevel(town,TOWN_BUILDING_SHIPYARD); + local guild = 0; + if townrace ~= 8 then + guild = GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD); + end; + local grail = GetTownBuildingLevel(town,TOWN_BUILDING_GRAIL); + local special1 = 0; + local special2 = 0; + local special3 = 0; + local special4 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_4); + local special5 = 0; + if townrace ~= 1 and townrace ~= 2 and townrace ~= 3 then + special3 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_3); + end; + if townrace == 2 then + special1 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_0); + else + special1 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1); + end; + if townrace == 6 then + special2 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_6); + else + special2 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_2); + end; + if townrace ~= 4 and townrace ~= 5 and townrace ~= 6 then + special5 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_5); + else + special5 = 0; + end; + local guildconversionpoints = special1+special3+1; + + local x,y,z=GetObjectPosition(town); + + local gold_qty = (townvalue*3000)-2000; + local wood_qty = townvalue*3; + local ore_qty = townvalue*3; + local mercury_qty = townvalue*1; + local crystal_qty = townvalue*1; + local sulphur_qty = townvalue*1; + local gem_qty = townvalue*1; + + if GetPlayerResource(player,0) < wood_qty then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TC_NoRes.txt", hero, player, 5); + H55_EndSpinlock(hero); + elseif GetPlayerResource(player,1) < ore_qty then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TC_NoRes.txt", hero, player, 5); + H55_EndSpinlock(hero); + elseif GetPlayerResource(player,2) < mercury_qty then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TC_NoRes.txt", hero, player, 5); + H55_EndSpinlock(hero); + elseif GetPlayerResource(player,3) < crystal_qty then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TC_NoRes.txt", hero, player, 5); + H55_EndSpinlock(hero); + elseif GetPlayerResource(player,4) < sulphur_qty then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TC_NoRes.txt", hero, player, 5); + H55_EndSpinlock(hero); + elseif GetPlayerResource(player,5) < gem_qty then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TC_NoRes.txt", hero, player, 5); + H55_EndSpinlock(hero); + elseif GetPlayerResource(player,6) < gold_qty then + ShowFlyingSign("/Text/Game/Scripts/TownPortal/TC_NoRes.txt", hero, player, 5); + H55_EndSpinlock(hero); + else + ChangeHeroStat(hero,STAT_MOVE_POINTS,(-1*movepoints)); + + print("H55 Performing Town Conversion.."); + + H55_TakeResourcesSilent(player,0,wood_qty); + H55_TakeResourcesSilent(player,1,ore_qty); + H55_TakeResourcesSilent(player,2,mercury_qty); + H55_TakeResourcesSilent(player,3,crystal_qty); + H55_TakeResourcesSilent(player,4,sulphur_qty); + H55_TakeResourcesSilent(player,5,gem_qty); + H55_TakeResourcesSilent(player,6,gold_qty); + + Play2DSoundForPlayers(GetPlayerFilter(player),"/Maps/Scenario/A2C2M1/Siege_WallCrash02sound.xdb#xpointer(/Sound)"); + TransformTown(town,towntype); + + sleep(1); + + if tavern == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1) end; + if marketplace == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1) + elseif marketplace == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1) UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1) end; + if blacksmith == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_BLACKSMITH,1) end; + if fort == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1) + elseif fort == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1) UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1) + elseif fort == 3 then UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1) UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1) UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1) end; + if townhall == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1) + elseif townhall == 3 then UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1) UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1) end; + if dwelling1 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1) + elseif dwelling1 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1) end; + if dwelling2 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1) + elseif dwelling2 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1) end; + if dwelling3 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1) + elseif dwelling3 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1) end; + if dwelling4 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1) + elseif dwelling4 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1) end; + if dwelling5 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1) + elseif dwelling5 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1) end; + if dwelling6 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1) + elseif dwelling6 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1) end; + if dwelling7 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_7,1) + elseif dwelling7 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_7,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_7,1) end; + if shipyard == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SHIPYARD,1) end; + if grail == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_GRAIL,1) end; + + if herorace ~= 8 and townrace ~= 8 then + if guild == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guild == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guild == 3 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guild == 4 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guild == 5 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) end; + end; + + if herorace ~= 8 and townrace == 8 then + if guildconversionpoints == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guildconversionpoints == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guildconversionpoints == 3 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guildconversionpoints == 4 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guildconversionpoints == 5 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) end; + end; + + if herorace == 8 then --and H55_CompetitiveARMGTowns == 1; + if guild == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) + elseif guild == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1) + elseif guild == 3 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1) + elseif guild == 4 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1) + elseif guild == 5 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) end; + end; + + --Special buildings + if herorace ~= 1 and herorace ~= 2 and herorace ~= 3 and herorace ~= 5 and herorace ~= 8 then + if special3 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1) end; + end; + if herorace == 2 then + if special1 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_0,1) end; + elseif herorace ~= 8 then + if special1 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) end; + end; + if herorace == 6 then + if special2 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_6,1) end; + else + if special2 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_2,1) end; + end; + if herorace ~= 4 and herorace ~= 5 and herorace ~= 6 then + if special5 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_5,1) end; + end; + + --Crash Protection + if herorace == 5 then DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_3,0,0) end; + if herorace == 6 then DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_4,0,0) end; + + H55_EndSpinlock(hero); + sleep(3); + end; +end; + +function H55_ConvertNowAI(town,player,playerrace) + local towntype = H55_GetTownRaceID(playerrace); + local townrace = H55_GetTownRace(town); + + local tavern = GetTownBuildingLevel(town,TOWN_BUILDING_TAVERN); + local marketplace = GetTownBuildingLevel(town,TOWN_BUILDING_MARKETPLACE); + local blacksmith = GetTownBuildingLevel(town,TOWN_BUILDING_BLACKSMITH); + local fort = GetTownBuildingLevel(town,TOWN_BUILDING_FORT); + local townhall = GetTownBuildingLevel(town,TOWN_BUILDING_TOWN_HALL); + local dwelling1 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_1); + local dwelling2 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_2); + local dwelling3 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_3); + local dwelling4 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_4); + local dwelling5 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_5); + local dwelling6 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_6); + local dwelling7 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_7); + local shipyard = GetTownBuildingLevel(town,TOWN_BUILDING_SHIPYARD); + local guild = 0; + if townrace ~= 8 then + guild = GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD); + end; + local grail = GetTownBuildingLevel(town,TOWN_BUILDING_GRAIL); + local special1 = 0; + local special2 = 0; + local special3 = 0; + local special4 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_4); + local special5 = 0; + if townrace ~= 1 and townrace ~= 2 and townrace ~= 3 then + special3 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_3); + end; + if townrace == 2 then + special1 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_0); + else + special1 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1); + end; + if townrace == 6 then + special2 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_6); + else + special2 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_2); + end; + if townrace ~= 4 and townrace ~= 5 and townrace ~= 6 then + special5 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_5); + else + special5 = 0; + end; + local guildconversionpoints = special1+special3+1; + + TransformTown(town,towntype); + + H55_AmountAIConversions = H55_AmountAIConversions+1; + + sleep(1); + + if tavern == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_TAVERN,1) end; + if marketplace == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1) + elseif marketplace == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1) UpgradeTownBuilding(town,TOWN_BUILDING_MARKETPLACE,1) end; + if blacksmith == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_BLACKSMITH,1) end; + if fort == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1) + elseif fort == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1) UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1) + elseif fort == 3 then UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1) UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1) UpgradeTownBuilding(town,TOWN_BUILDING_FORT,1) end; + if townhall == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1) + elseif townhall == 3 then UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1) UpgradeTownBuilding(town,TOWN_BUILDING_TOWN_HALL,1) end; + if dwelling1 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1) + elseif dwelling1 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_1,1) end; + if dwelling2 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1) + elseif dwelling2 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_2,1) end; + if dwelling3 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1) + elseif dwelling3 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_3,1) end; + if dwelling4 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1) + elseif dwelling4 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_4,1) end; + if dwelling5 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1) + elseif dwelling5 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_5,1) end; + if dwelling6 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1) + elseif dwelling6 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_6,1) end; + if dwelling7 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_7,1) + elseif dwelling7 == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_7,1) UpgradeTownBuilding(town,TOWN_BUILDING_DWELLING_7,1) end; + if shipyard == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SHIPYARD,1) end; + if grail == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_GRAIL,1) end; + + if playerrace ~= 8 and townrace ~= 8 then + if guild == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guild == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guild == 3 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guild == 4 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guild == 5 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) end; + end; + + if playerrace ~= 8 and townrace == 8 then + if guildconversionpoints == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guildconversionpoints == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guildconversionpoints == 3 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guildconversionpoints == 4 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) + elseif guildconversionpoints == 5 then UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) UpgradeTownBuilding(town,TOWN_BUILDING_MAGIC_GUILD,1) end; + end; + + if playerrace == 8 then + if guild == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) + elseif guild == 2 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) + elseif guild == 3 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1) + elseif guild == 4 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) + elseif guild == 5 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1) UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) end; + end; + + --Special buildings + if playerrace ~= 1 and playerrace ~= 2 and playerrace ~= 3 and playerrace ~= 5 and playerrace ~= 8 then + if special3 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_3,1) end; + end; + if playerrace == 2 then + if special1 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_0,1) end; + elseif playerrace ~= 8 then + if special1 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_1,1) end; + end; + if playerrace == 6 then + if special2 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_6,1) end; + else + if special2 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_2,1) end; + end; + if playerrace ~= 4 and playerrace ~= 5 and playerrace ~= 6 then + if special5 == 1 then UpgradeTownBuilding(town,TOWN_BUILDING_SPECIAL_5,1) end; + end; + + --Crash Protection + if playerrace == 5 then DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_3,0,0) end; + if playerrace == 6 then DestroyTownBuildingToLevel(town,TOWN_BUILDING_SPECIAL_4,0,0) end; +end; + +---------------------------------------------------------------------------------------------------------------------------------------------------- +--WEEKLY EVENT +---------------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_WeeklyEvents(player) + --errorHook(H55_WeeklyError); + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {1,"Mine Control",player,""};------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + local alltowns = GetObjectNamesByType("TOWN"); + local haventowns = GetObjectNamesByType("TOWN_HEAVEN"); + local sylvantowns = GetObjectNamesByType("TOWN_PRESERVE"); + local academytowns = GetObjectNamesByType("TOWN_ACADEMY"); + local strongholdtowns = GetObjectNamesByType("TOWN_STRONGHOLD"); + local dungeontowns = GetObjectNamesByType("TOWN_DUNGEON"); + local necropolistowns = GetObjectNamesByType("TOWN_NECROMANCY"); + local infernotowns = GetObjectNamesByType("TOWN_INFERNO"); + local fortresstowns = GetObjectNamesByType("TOWN_FORTRESS"); + local blood = H55_GetPlayerDragonblood(player); + + if H55_MineControl == 1 then + for i, mine in H55_AllMines do + local owner = GetObjectOwner(mine); + if owner ~= 0 then + if H55_IsThisAIPlayer(player) == 1 and owner == player and H55_GuardedMines[mine][1] ~= player then + H55_GuardedMines[mine] = {player,H55_Day}; + end; + if owner == player and H55_GuardedMines[mine][1] == player then + local faction = H55_GetPlayerRace(player); + local t1,t2,t3,t4,t5,t6,t7 = H55_GetMineGuardAmount(faction,H55_GuardedMines[mine][2]); + for i = 1,7 do + RemoveObjectCreatures(mine,H55_Creatures[faction][i][1],99999); + end; + if t1 > 0 then + AddObjectCreatures(mine,H55_Creatures[faction][1][1],t1); + end; + if t2 > 0 then + AddObjectCreatures(mine,H55_Creatures[faction][2][1],t2); + end; + if t3 > 0 then + AddObjectCreatures(mine,H55_Creatures[faction][3][1],t3); + end; + if t4 > 0 then + AddObjectCreatures(mine,H55_Creatures[faction][4][1],t4); + end; + if t5 > 0 then + AddObjectCreatures(mine,H55_Creatures[faction][5][1],t5); + end; + if t6 > 0 then + AddObjectCreatures(mine,H55_Creatures[faction][6][1],t6); + end; + if t7 > 0 then + AddObjectCreatures(mine,H55_Creatures[faction][7][1],t7); + end; + elseif owner == player and H55_GuardedMines[mine][1] ~= player then + if H55_GuardedMines[mine][1] ~= 0 then + local faction = H55_GetPlayerRace(H55_GuardedMines[mine][1]) + for i = 1,7 do + RemoveObjectCreatures(mine,H55_Creatures[faction][i][1],99999); + end; + end; + H55_GuardedMines[mine][1] = 0; + end; + end; + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {1a,"AI Cheating",player,""};------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_IsThisAIPlayer(player) == 1 and H55_MapType ~= "Campaign" and H55_MapType ~= "Scenario" and H55_GameMode ~= 0 and H55_AICheatMode >= 1 then + local currentamount = GetPlayerResource(player,6); + local difficulty = GetDifficulty(); + local difficultycoef = H55_AIDifficultyCoef(); --most important, adjusts to governance + local mapsizecoef = H55_AIMapSizeCoef(); -- 1 unless large map + local timercoef = H55_AITimerCoef(); -- 1 unless late game + local usercoef = H55_AICheatSetting(); -- 1 unless changed by player + local growthcoef = difficultycoef*(mapsizecoef*timercoef*usercoef); + local towncoef = 0.5 + (0.5 * (table.length(H55_GetPlayerTowns(player)))); + local addedgold = math.round(growthcoef*(towncoef*20000)); + --local addedres = math.round(growthcoef*(towncoef*8)); + H55_GlobalWeeklyGoldPayout[player] = H55_GlobalWeeklyGoldPayout[player]+addedgold; + -- H55_GlobalWeeklyWoodPayoutPayout[player] = H55_GlobalWeeklyWoodPayout[player]+(2*addedres); + -- H55_GlobalWeeklyOrePayoutPayout[player] = H55_GlobalWeeklyOrePayout[player]+(2*addedres); + -- H55_GlobalWeeklyGemPayoutPayout[player] = H55_GlobalWeeklyGemPayout[player]+addedres; + -- H55_GlobalWeeklyCrystalPayoutPayout[player] = H55_GlobalWeeklyCrystalPayout[player]+addedres; + -- H55_GlobalWeeklySulphurPayoutPayout[player] = H55_GlobalWeeklySulphurPayout[player]+addedres; + -- H55_GlobalWeeklyMercuryPayoutPayout[player] = H55_GlobalWeeklyMercuryPayout[player]+addedres; + for i,town in alltowns do + if (GetObjectOwner(town) == player) then + local townrace = H55_GetTownRace(town); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_1) >= 1 then + SetObjectDwellingCreatures(town, H55_Creatures[townrace][1][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][1][1]) + (math.round(growthcoef*(H55_CreaturesGrowth[townrace][1])))); + end; + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_2) >= 1 then + SetObjectDwellingCreatures(town, H55_Creatures[townrace][2][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][2][1]) + (math.round(growthcoef*(H55_CreaturesGrowth[townrace][2])))); + end; + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_3) >= 1 then + SetObjectDwellingCreatures(town, H55_Creatures[townrace][3][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][3][1]) + (math.round(growthcoef*(H55_CreaturesGrowth[townrace][3])))); + end; + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_4) >= 1 then + SetObjectDwellingCreatures(town, H55_Creatures[townrace][4][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][4][1]) + (math.round(growthcoef*(H55_CreaturesGrowth[townrace][4])))); + end; + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_5) >= 1 then + SetObjectDwellingCreatures(town, H55_Creatures[townrace][5][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][5][1]) + (math.round(growthcoef*(H55_CreaturesGrowth[townrace][5])))); + end; + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_6) >= 1 and (difficulty >=1) then + SetObjectDwellingCreatures(town, H55_Creatures[townrace][6][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][6][1]) + (math.round(growthcoef*(H55_CreaturesGrowth[townrace][6])))); + end; + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_7) >= 1 and (difficulty >=2) then + SetObjectDwellingCreatures(town, H55_Creatures[townrace][7][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][7][1]) + (math.round(growthcoef*(H55_CreaturesGrowth[townrace][7])))); + end; + end; + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {2,"Suppliers",player,""};---------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_MysticalGardens ~= nil then + local gardengold = 0; + local gardengems = 0; + local gardenbonus = H55_NetworkSkillAmount[player]; + for i,garden in H55_MysticalGardens do + if H55_MysticalGardensOwned[garden] == player then + if H55_WeeklyMysticalGardenRes[garden] == 0 then + gardengold = gardengold + 500; + if gardenbonus >= 1 then + gardengold = gardengold + (gardenbonus*250); + end; + elseif H55_WeeklyMysticalGardenRes[garden] == 1 then + gardengems = gardengems + 5 + gardenbonus; + end; + end; + end; + if gardengold > 0 then + H55_GlobalWeeklyGoldPayout[player] = H55_GlobalWeeklyGoldPayout[player]+gardengold; + end; + if gardengems > 0 then + H55_GlobalWeeklyGemPayout[player] = H55_GlobalWeeklyGemPayout[player]+gardengems; + end; + end; + + if H55_SiegeWorkshops ~= nil then + local workshopwood = 0; + local workshopbonus = H55_NetworkSkillAmount[player]; + for i,workshop in H55_SiegeWorkshops do + if H55_SiegeWorkshopsOwned[workshop] == player then + workshopwood = workshopwood + H55_WeeklySiegeWorkshopResQty[workshop] + workshopbonus; + end; + end; + if workshopwood > 0 then + H55_GlobalWeeklyWoodPayout[player] = H55_GlobalWeeklyWoodPayout[player]+workshopwood; + end; + end; + + if H55_Windmills ~= nil then + local millore = 0; + local millmercury = 0; + local millcrystal = 0; + local millsulphur = 0; + local millgems = 0; + local millbonus = H55_NetworkSkillAmount[player]; + for i,mill in H55_Windmills do + if H55_WindmillsOwned[mill] == player then + if H55_WeeklyWindmillRes[mill] == 1 then + millore = millore + H55_WeeklyWindmillResQty[mill] + millbonus; + elseif H55_WeeklyWindmillRes[mill] == 2 then + millmercury = millmercury + H55_WeeklyWindmillResQty[mill] + millbonus; + elseif H55_WeeklyWindmillRes[mill] == 3 then + millcrystal = millcrystal + H55_WeeklyWindmillResQty[mill] + millbonus; + elseif H55_WeeklyWindmillRes[mill] == 4 then + millsulphur = millsulphur + H55_WeeklyWindmillResQty[mill] + millbonus; + else + millgems = millgems + H55_WeeklyWindmillResQty[mill] + millbonus; + end; + end; + end; + if millore > 0 then + H55_GlobalWeeklyOrePayout[player] = H55_GlobalWeeklyOrePayout[player]+millore; + end; + if millmercury > 0 then + H55_GlobalWeeklyMercuryPayout[player] = H55_GlobalWeeklyMercuryPayout[player]+millmercury; + end; + if millcrystal > 0 then + H55_GlobalWeeklyCrystalPayout[player] = H55_GlobalWeeklyCrystalPayout[player]+millcrystal; + end; + if millsulphur > 0 then + H55_GlobalWeeklySulphurPayout[player] = H55_GlobalWeeklySulphurPayout[player]+millsulphur; + end; + if millgems > 0 then + H55_GlobalWeeklyGemPayout[player] = H55_GlobalWeeklyGemPayout[player]+millgems; + end; + end; + + if H55_Waterwheels ~= nil then + local wheelgold = 0; + local wheelbonus = H55_NetworkSkillAmount[player]; + for i,wheel in H55_Waterwheels do + if H55_WaterwheelsOwned[wheel] == player then + wheelgold = wheelgold + 1000; + if wheelbonus >= 1 then + wheelgold = wheelgold + (wheelbonus*500); + end; + end; + end; + if wheelgold > 0 then + H55_GlobalWeeklyGoldPayout[player] = H55_GlobalWeeklyGoldPayout[player]+wheelgold; + end; + end; + + ---------------------------------------------------------------------------------------------------------------------------------------------- + H55_DEBUG = {"2a","DBC",player,""};---------------------------------------------------------------------------------------------------------- + ---------------------------------------------------------------------------------------------------------------------------------------------- + + if blood >= 10 then + local towns = H55_GetPlayerTowns(player); + if (table.length(towns) > 0) then + for i,town in towns do + local townrace = H55_GetTownRace(town); + local bloodcoef = 12; + local bloodroot = math.sqrt(blood); + local elemtype = H55_GetRaceElementalTypeID(player,townrace); + if elemtype == 113 then bloodcoef = 8 end; + if elemtype == 116 then bloodcoef = 18 end; + if elemtype == 115 then bloodcoef = 30 end; + if elemtype == 114 then bloodcoef = 30 end; + if elemtype == 90 then bloodcoef = 30 end; + if townrace == 8 then + if GetTownBuildingLevel(town, TOWN_BUILDING_SPECIAL_1) >= 1 then + local growth = 3+(GetTownBuildingLevel(town, TOWN_BUILDING_SPECIAL_1)); + if GetTownBuildingLevel(town, TOWN_BUILDING_SPECIAL_3) == 1 then growth = growth + 2 end; + local totalgrowth = math.floor((bloodroot/bloodcoef)*growth); + if totalgrowth >= 1 then + AddObjectCreatures(town,elemtype,totalgrowth); + if H55_IsThisAIPlayer(player) ~= 1 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Garrison.txt",totalgrowth,town,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + else + if GetTownBuildingLevel(town, TOWN_BUILDING_MAGIC_GUILD) >= 1 then + local growth = 3+GetTownBuildingLevel(town, TOWN_BUILDING_MAGIC_GUILD); + local totalgrowth = math.floor((bloodroot/bloodcoef)*growth); + if totalgrowth >= 1 then + AddObjectCreatures(town,elemtype,totalgrowth); + if H55_IsThisAIPlayer(player) ~= 1 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Garrison.txt",totalgrowth,town,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + end; + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {3,"Reinforcements",player,""};---------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + local heroes = GetPlayerHeroes(player); + if heroes ~= nil then + + for i,hero in heroes do + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {5,"Artifacts",player,hero};-------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if HasArtefact(hero,ARTIFACT_SHANTIRI_05,0) and (H55_MoonDiscReceived[hero] ~= 1) then + local cityrace = H55_GetHeroRace(hero); + local cities = H55_GetAlignedTownsOwned(hero,player); + local amount = table.length(cities); + if amount > 0 then + for i,city in cities do + AddObjectCreatures(city,91,1); + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/PhoenixGarrison.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + H55_MoonDiscReceived[hero] = 1; + end; + end; + end; + if HasArtefact(hero,ARTIFACT_RES_WOOD,0) and (H55_ArtWoodReceived[hero] ~= 1) then + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE); + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then knowledge = knowledge+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then knowledge = knowledge+5 end; + local amount = math.round(knowledge/2); + if amount < 1 then amount = 1 end; + H55_GlobalWeeklyWoodPayout[player] = H55_GlobalWeeklyWoodPayout[player]+amount; + --H55_GlobalWeeklyGoldPayout[player] = H55_GlobalWeeklyGoldPayout[player]+1000; + H55_ArtWoodReceived[hero] = 1; + end; + if HasArtefact(hero,ARTIFACT_RES_ORE,0) and (H55_ArtOreReceived[hero] ~= 1) then + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE); + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then knowledge = knowledge+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then knowledge = knowledge+5 end; + local amount = math.round(knowledge/2); + if amount < 1 then amount = 1 end; + H55_GlobalWeeklyOrePayout[player] = H55_GlobalWeeklyOrePayout[player]+amount; + --H55_GlobalWeeklyGoldPayout[player] = H55_GlobalWeeklyGoldPayout[player]+1000; + H55_ArtOreReceived[hero] = 1; + end; + if HasArtefact(hero,ARTIFACT_RES_SULPHUR,0) and (H55_ArtSulphurReceived[hero] ~= 1) then + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE); + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then knowledge = knowledge+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then knowledge = knowledge+5 end; + local amount = math.round(knowledge/2); + if amount < 1 then amount = 1 end; + H55_GlobalWeeklySulphurPayout[player] = H55_GlobalWeeklySulphurPayout[player]+amount; + --H55_GlobalWeeklyGoldPayout[player] = H55_GlobalWeeklyGoldPayout[player]+1000; + H55_ArtSulphurReceived[hero] = 1; + end; + if HasArtefact(hero,ARTIFACT_RES_CRYSTAL,0) and (H55_ArtCrystalReceived[hero] ~= 1) then + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE); + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then knowledge = knowledge+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then knowledge = knowledge+5 end; + local amount = math.round(knowledge/2); + if amount < 1 then amount = 1 end; + H55_GlobalWeeklyCrystalPayout[player] = H55_GlobalWeeklyCrystalPayout[player]+amount; + --H55_GlobalWeeklyGoldPayout[player] = H55_GlobalWeeklyGoldPayout[player]+1000; + H55_ArtCrystalReceived[hero] = 1; + end; + if HasArtefact(hero,ARTIFACT_RES_GEM,0) and (H55_ArtGemReceived[hero] ~= 1) then + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE); + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then knowledge = knowledge+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then knowledge = knowledge+5 end; + local amount = math.round(knowledge/2); + if amount < 1 then amount = 1 end; + H55_GlobalWeeklyGemPayout[player] = H55_GlobalWeeklyGemPayout[player]+amount; + --H55_GlobalWeeklyGoldPayout[player] = H55_GlobalWeeklyGoldPayout[player]+1000; + H55_ArtGemReceived[hero] = 1; + end; + if HasArtefact(hero,ARTIFACT_RES_MERCURY,0) and (H55_ArtMercuryReceived[hero] ~= 1) then + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE); + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then knowledge = knowledge+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then knowledge = knowledge+5 end; + local amount = math.round(knowledge/2); + if amount < 1 then amount = 1 end; + H55_GlobalWeeklyMercuryPayout[player] = H55_GlobalWeeklyMercuryPayout[player]+amount; + --H55_GlobalWeeklyGoldPayout[player] = H55_GlobalWeeklyGoldPayout[player]+1000; + H55_ArtMercuryReceived[hero] = 1; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {6,"Regalia",player,hero};-------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_Governors[hero] ~= 1 then + local bonus = 0; + if HasHeroSkill(hero,PERK_RECRUITMENT) then bonus = bonus+5 end; + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then bonus = bonus+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then bonus = bonus+5 end; + if HasArtefact(hero,ARTIFACT_LEGION_T1,0) and (H55_GetLegionCap(hero) == 1) then + local units = H55_ArmyInfoSimple(hero); + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/1); + if growth < 1 then growth = 1 end; + local race = H55_GetHeroRaceNum(hero); + for i = 0,6 do + if (units[i] == H55_Creatures[race][1][2]) and (H55_LegionT1Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][1][2],growth); + H55_LegionT1Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][1][3]) and (H55_LegionT1Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][1][3],growth); + H55_LegionT1Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][1][1]) and (H55_LegionT1Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][1][1],growth); + H55_LegionT1Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T2,0) and (H55_GetLegionCap(hero) == 2) then + local units = H55_ArmyInfoSimple(hero); + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/1.5); + if growth < 1 then growth = 1 end; + local race = H55_GetHeroRaceNum(hero); + for i = 0,6 do + if (units[i] == H55_Creatures[race][2][2]) and (H55_LegionT2Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][2][2],growth); + H55_LegionT2Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][2][3]) and (H55_LegionT2Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][2][3],growth); + H55_LegionT2Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][2][1]) and (H55_LegionT2Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][2][1],growth); + H55_LegionT2Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T3,0) and (H55_GetLegionCap(hero) == 3) then + local units = H55_ArmyInfoSimple(hero); + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/2); + if growth < 1 then growth = 1 end; + local race = H55_GetHeroRaceNum(hero); + for i = 0,6 do + if (units[i] == H55_Creatures[race][3][2]) and (H55_LegionT3Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][3][2],growth); + H55_LegionT3Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][3][3]) and (H55_LegionT3Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][3][3],growth); + H55_LegionT3Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][3][1]) and (H55_LegionT3Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][3][1],growth); + H55_LegionT3Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T4,0) and (H55_GetLegionCap(hero) == 4) then + local units = H55_ArmyInfoSimple(hero); + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/3); + if growth < 1 then growth = 1 end; + local race = H55_GetHeroRaceNum(hero); + for i = 0,6 do + if (units[i] == H55_Creatures[race][4][2]) and (H55_LegionT4Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][4][2],growth); + H55_LegionT4Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][4][3]) and (H55_LegionT4Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][4][3],growth); + H55_LegionT4Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][4][1]) and (H55_LegionT4Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][4][1],growth); + H55_LegionT4Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T5,0) and (H55_GetLegionCap(hero) == 5) then + local units = H55_ArmyInfoSimple(hero); + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/4); + if growth < 1 then growth = 1 end; + local race = H55_GetHeroRaceNum(hero); + for i = 0,6 do + if (units[i] == H55_Creatures[race][5][2]) and (H55_LegionT5Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][5][2],growth); + H55_LegionT5Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][5][3]) and (H55_LegionT5Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][5][3],growth); + H55_LegionT5Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][5][1]) and (H55_LegionT5Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][5][1],growth); + H55_LegionT5Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T6,0) and (H55_GetLegionCap(hero) == 6) then + local units = H55_ArmyInfoSimple(hero); + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/6); + if growth < 1 then growth = 1 end; + local race = H55_GetHeroRaceNum(hero); + for i = 0,6 do + if (units[i] == H55_Creatures[race][6][2]) and (H55_LegionT6Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][6][2],growth); + H55_LegionT6Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][6][3]) and (H55_LegionT6Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][6][3],growth); + H55_LegionT6Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][6][1]) and (H55_LegionT6Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][6][1],growth); + H55_LegionT6Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T7,0) then + local units = H55_ArmyInfoSimple(hero); + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/12); + if growth < 1 then growth = 1 end; + local race = H55_GetHeroRaceNum(hero); + for i = 0,6 do + if (units[i] == H55_Creatures[race][7][2]) and (H55_LegionT7Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][7][2],growth); + H55_LegionT7Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][7][3]) and (H55_LegionT7Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][7][3],growth); + H55_LegionT7Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + elseif (units[i] == H55_Creatures[race][7][1]) and (H55_LegionT7Received[hero] ~= 1) then + AddHeroCreatures(hero,H55_Creatures[race][7][1],growth); + H55_LegionT7Received[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Reinforcements.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {7,"Skillbooks",player,hero};-------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + local booksread = 0 + + if HasArtefact(hero,ARTIFACT_BOOK_A1,0) then + ChangeHeroStat(hero,STAT_ATTACK,1); + ChangeHeroStat(hero,STAT_EXPERIENCE,750); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_A1); + end; + if HasArtefact(hero,ARTIFACT_BOOK_A2,0) then + ChangeHeroStat(hero,STAT_ATTACK,1); + ChangeHeroStat(hero,STAT_EXPERIENCE,1250); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_A2); + end; + if HasArtefact(hero,ARTIFACT_BOOK_A3,0) then + ChangeHeroStat(hero,STAT_ATTACK,2); + ChangeHeroStat(hero,STAT_EXPERIENCE,2000); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_A3); + end; + if HasArtefact(hero,ARTIFACT_BOOK_A4,0) then + ChangeHeroStat(hero,STAT_ATTACK,1); + ChangeHeroStat(hero,STAT_DEFENCE,1); + ChangeHeroStat(hero,STAT_EXPERIENCE,1500); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_A4); + end; + if HasArtefact(hero,ARTIFACT_BOOK_D1,0) then + ChangeHeroStat(hero,STAT_DEFENCE,1); + ChangeHeroStat(hero,STAT_EXPERIENCE,750); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_D1); + end; + if HasArtefact(hero,ARTIFACT_BOOK_D2,0) then + ChangeHeroStat(hero,STAT_DEFENCE,1); + ChangeHeroStat(hero,STAT_EXPERIENCE,1250); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_D2); + end; + if HasArtefact(hero,ARTIFACT_BOOK_D3,0) then + ChangeHeroStat(hero,STAT_DEFENCE,2); + ChangeHeroStat(hero,STAT_EXPERIENCE,2000); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_D3); + end; + if HasArtefact(hero,ARTIFACT_BOOK_D4,0) then + ChangeHeroStat(hero,STAT_ATTACK,1); + ChangeHeroStat(hero,STAT_DEFENCE,1); + ChangeHeroStat(hero,STAT_EXPERIENCE,1500); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_D4); + end; + if HasArtefact(hero,ARTIFACT_BOOK_S1,0) then + ChangeHeroStat(hero,STAT_SPELL_POWER,1); + ChangeHeroStat(hero,STAT_EXPERIENCE,750); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_S1); + end; + if HasArtefact(hero,ARTIFACT_BOOK_S2,0) then + ChangeHeroStat(hero,STAT_SPELL_POWER,1); + ChangeHeroStat(hero,STAT_EXPERIENCE,1250); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_S2); + end; + if HasArtefact(hero,ARTIFACT_BOOK_S3,0) then + ChangeHeroStat(hero,STAT_SPELL_POWER,2); + ChangeHeroStat(hero,STAT_EXPERIENCE,2000); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_S3); + end; + if HasArtefact(hero,ARTIFACT_BOOK_S4,0) then + ChangeHeroStat(hero,STAT_SPELL_POWER,1); + ChangeHeroStat(hero,STAT_KNOWLEDGE,1); + ChangeHeroStat(hero,STAT_EXPERIENCE,1500); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_S4); + end; + if HasArtefact(hero,ARTIFACT_BOOK_K1,0) then + ChangeHeroStat(hero,STAT_KNOWLEDGE,1); + ChangeHeroStat(hero,STAT_EXPERIENCE,750); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_K1); + end; + if HasArtefact(hero,ARTIFACT_BOOK_K2,0) then + ChangeHeroStat(hero,STAT_KNOWLEDGE,1); + ChangeHeroStat(hero,STAT_EXPERIENCE,1250); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_K2); + end; + if HasArtefact(hero,ARTIFACT_BOOK_K3,0) then + ChangeHeroStat(hero,STAT_KNOWLEDGE,2); + ChangeHeroStat(hero,STAT_EXPERIENCE,2000); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_K3); + end; + if HasArtefact(hero,ARTIFACT_BOOK_K4,0) then + ChangeHeroStat(hero,STAT_SPELL_POWER,1); + ChangeHeroStat(hero,STAT_KNOWLEDGE,1); + ChangeHeroStat(hero,STAT_EXPERIENCE,1500); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_K4); + end; + if HasArtefact(hero,ARTIFACT_BOOK_R1,0) then + ChangeHeroStat(hero,STAT_SPELL_POWER,2); + ChangeHeroStat(hero,STAT_KNOWLEDGE,2); + ChangeHeroStat(hero,STAT_EXPERIENCE,4000); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_R1); + end; + if HasArtefact(hero,ARTIFACT_BOOK_R2,0) then + ChangeHeroStat(hero,STAT_ATTACK,2); + ChangeHeroStat(hero,STAT_DEFENCE,2); + ChangeHeroStat(hero,STAT_EXPERIENCE,4000); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_R2); + end; + if HasArtefact(hero,ARTIFACT_BOOK_R3,0) then + ChangeHeroStat(hero,STAT_ATTACK,1); + ChangeHeroStat(hero,STAT_DEFENCE,1); + ChangeHeroStat(hero,STAT_SPELL_POWER,1); + ChangeHeroStat(hero,STAT_KNOWLEDGE,1); + ChangeHeroStat(hero,STAT_EXPERIENCE,5000); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_BOOK_R3); + end; + if HasArtefact(hero,ARTIFACT_GEAR_07,0) then + TeachHeroSpell(hero,SPELL_EMPOWERED_MAGIC_ARROW); + ChangeHeroStat(hero,STAT_SPELL_POWER,1); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_GEAR_07); + end; + if HasArtefact(hero,ARTIFACT_CODEX,0) then + local count1 = table.length(H55_LightSpells) + local count2 = table.length(H55_DarkSpells) + local count3 = table.length(H55_SummoningSpells) + local count4 = table.length(H55_DestructiveSpells) + for i=1,count1 do + TeachHeroSpell(hero,H55_LightSpells[i]); + end; + for i=1,count2 do + TeachHeroSpell(hero,H55_DarkSpells[i]); + end; + for i=1,count3 do + TeachHeroSpell(hero,H55_SummoningSpells[i]); + end; + for i=1,count4 do + TeachHeroSpell(hero,H55_DestructiveSpells[i]); + end; + ChangeHeroStat(hero,STAT_ATTACK,2); + ChangeHeroStat(hero,STAT_DEFENCE,2); + ChangeHeroStat(hero,STAT_SPELL_POWER,2); + ChangeHeroStat(hero,STAT_KNOWLEDGE,2); + ChangeHeroStat(hero,STAT_EXPERIENCE,500000); + booksread = booksread+1; + RemoveArtefact(hero,ARTIFACT_CODEX); + end; + if booksread == 1 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Skillbook.txt",hero,player,H55_MsgSleep,H55_MsgTime); + elseif booksread >= 2 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Skillbooks.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {8,"Governance",player,hero};------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_IsThisAIPlayer(player) ~= 1 and H55_GovernanceEnabled == 1 and H55_Governors[hero] == 1 then + local town = H55_GovernorsWithTown[hero]; + local townrace = H55_GetTownRace(town); + local herorace = H55_GetHeroRaceNum(hero); + local extralegiont01 = 0; + local extralegiont02 = 0; + local extralegiont03 = 0; + local extralegiont04 = 0; + local extralegiont05 = 0; + local extralegiont06 = 0; + local extralegiont07 = 0; + local growthcoef = 1+(GetHeroLevel(hero)*0.01); + if HasArtefact(hero,ARTIFACT_GOVERNOR_01,1) then growthcoef = growthcoef + 0.05 end; + local bonus = 5; + if HasHeroSkill(hero,PERK_RECRUITMENT) then bonus = bonus+5 end; + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then bonus = bonus+10 end; + if IsObjectExists(hero) ~= 1 then + H55_ResetConquestHero(hero); + elseif GetObjectOwner(town) ~= player then + H55_ResetConquestHero(hero); + else + if HasArtefact(hero,ARTIFACT_LEGION_T1,0) and (H55_GetLegionCap(hero) == 1) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/1); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_1) >= 1 and growth >= 1 then + extralegiont01 = growth; + end; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Recruits.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T2,0) and (H55_GetLegionCap(hero) == 2) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/1.5); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_2) >= 1 and growth >= 1 then + extralegiont02 = growth; + end; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Recruits.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T3,0) and (H55_GetLegionCap(hero) == 3) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/2); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_3) >= 1 and growth >= 1 then + extralegiont03 = growth; + end; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Recruits.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T4,0) and (H55_GetLegionCap(hero) == 4) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/3); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_4) >= 1 and growth >= 1 then + extralegiont04 = growth; + end; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Recruits.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T5,0) and (H55_GetLegionCap(hero) == 5) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/4); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_5) >= 1 and growth >= 1 then + extralegiont05 = growth; + end; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Recruits.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T6,0) and (H55_GetLegionCap(hero) == 6) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/6); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_6) >= 1 and growth >= 1 then + extralegiont06 = growth; + end; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Recruits.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T7,0) and (H55_GetLegionCap(hero) == 7) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/12); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_7) >= 1 and growth >= 1 then + extralegiont07 = growth; + end; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSignAdd,"/Text/Game/Scripts/Recruits.txt",growth,hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + + H55_GovernanceTier1[hero] = extralegiont01 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][1]))-(2*H55_CreaturesGrowth[townrace][1])); + H55_GovernanceTier2[hero] = extralegiont02 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][2]))-(2*H55_CreaturesGrowth[townrace][2])); + H55_GovernanceTier3[hero] = extralegiont03 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][3]))-(2*H55_CreaturesGrowth[townrace][3])); + H55_GovernanceTier4[hero] = extralegiont04 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][4]))-(2*H55_CreaturesGrowth[townrace][4])); + H55_GovernanceTier5[hero] = extralegiont05 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][5]))-(2*H55_CreaturesGrowth[townrace][5])); + H55_GovernanceTier6[hero] = extralegiont06 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][6]))-(2*H55_CreaturesGrowth[townrace][6])); + H55_GovernanceTier7[hero] = extralegiont07 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][7]))-(2*H55_CreaturesGrowth[townrace][7])); + + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_1) >= 1 and H55_GovernanceTier1[hero] >= 1 then + startThread(H55_ThreadedObjectDwellingCreatures,town,H55_Creatures[townrace][1][1],H55_GovernanceTier1[hero]); + --SetObjectDwellingCreatures(town, H55_Creatures[townrace][1][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][1][1]) + H55_GovernanceTier1[hero]); + end; + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_2) >= 1 and H55_GovernanceTier2[hero] >= 1 then + startThread(H55_ThreadedObjectDwellingCreatures,town,H55_Creatures[townrace][2][1],H55_GovernanceTier2[hero]); + --SetObjectDwellingCreatures(town, H55_Creatures[townrace][2][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][2][1]) + H55_GovernanceTier2[hero]); + end; + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_3) >= 1 and H55_GovernanceTier3[hero] >= 1 then + startThread(H55_ThreadedObjectDwellingCreatures,town,H55_Creatures[townrace][3][1],H55_GovernanceTier3[hero]); + --SetObjectDwellingCreatures(town, H55_Creatures[townrace][3][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][3][1]) + H55_GovernanceTier3[hero]); + end; + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_4) >= 1 and H55_GovernanceTier4[hero] >= 1 then + startThread(H55_ThreadedObjectDwellingCreatures,town,H55_Creatures[townrace][4][1],H55_GovernanceTier4[hero]); + --SetObjectDwellingCreatures(town, H55_Creatures[townrace][4][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][4][1]) + H55_GovernanceTier4[hero]); + end; + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_5) >= 1 and H55_GovernanceTier5[hero] >= 1 then + startThread(H55_ThreadedObjectDwellingCreatures,town,H55_Creatures[townrace][5][1],H55_GovernanceTier5[hero]); + --SetObjectDwellingCreatures(town, H55_Creatures[townrace][5][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][5][1]) + H55_GovernanceTier5[hero]); + end; + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_6) >= 1 and H55_GovernanceTier6[hero] >= 1 then + startThread(H55_ThreadedObjectDwellingCreatures,town,H55_Creatures[townrace][6][1],H55_GovernanceTier6[hero]); + --SetObjectDwellingCreatures(town, H55_Creatures[townrace][6][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][6][1]) + H55_GovernanceTier6[hero]); + end; + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_7) >= 1 and H55_GovernanceTier7[hero] >= 1 then + startThread(H55_ThreadedObjectDwellingCreatures,town,H55_Creatures[townrace][7][1],H55_GovernanceTier7[hero]); + --SetObjectDwellingCreatures(town, H55_Creatures[townrace][7][1], GetObjectDwellingCreatures(town,H55_Creatures[townrace][7][1]) + H55_GovernanceTier7[hero]) + end; + end; + end; + end; + end; + H55_WeeklyEventsDone[player] = 1; +end; + +function H55_ResetWeeklyEvents() + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {8a,"Reset",0,""};------------------------------------------------------------------------------------------------------------------ + ------------------------------------------------------------------------------------------------------------------------------------------------ + + H55_WeeklyRecruitsTable = {}; + H55_WeeklyReinforceTable = {}; + H55_InfernalLoomTable = {}; + + H55_ArtWoodReceived = {}; + H55_ArtOreReceived = {}; + H55_ArtCrystalReceived = {}; + H55_ArtSulphurReceived = {}; + H55_ArtMercuryReceived = {}; + H55_ArtGemReceived = {}; + + H55_LegionT1Received = {}; + H55_LegionT2Received = {}; + H55_LegionT3Received = {}; + H55_LegionT4Received = {}; + H55_LegionT5Received = {}; + H55_LegionT6Received = {}; + H55_LegionT7Received = {}; + + H55_SpellcastersReceived = {}; + H55_MoonDiscReceived = {}; + + for i,garden in H55_MysticalGardens do + H55_WeeklyMysticalGardenRes[garden] = random(2); + end; + for i,mill in H55_Windmills do + H55_WeeklyWindmillRes[mill] = 1+random(5); + H55_WeeklyWindmillResQty[mill] = 3+random(5); + end; + for i,workshop in H55_SiegeWorkshops do + H55_WeeklySiegeWorkshopResQty[workshop] = 3+random(5); + end; + + --Map level weekly event + + if H55_SPMapWeeklyEvent == 1 then + H55_SPMap_WeeklyEvent(); + end; + + H55_WeeklyEventsDone = {}; +end; + +------------------------------------------------------------------------------------------------------------------------------------------------------ +--DAILY EVENT +------------------------------------------------------------------------------------------------------------------------------------------------------ + +function H55_AdjustGovernorDefense(hero,town) + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {9,"GovDefense",0,hero};----------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if town == nil then + ChangeHeroStat(hero,STAT_DEFENCE,-H55_CastleDefenseOwners[hero]); + ChangeHeroStat(hero,STAT_SPELL_POWER,-H55_MageGuildBonusOwners[hero]); + ChangeHeroStat(hero,STAT_ATTACK,-H55_SpecialAttackOwners[hero]); + ChangeHeroStat(hero,STAT_KNOWLEDGE,-H55_SpecialKnowledgeOwners[hero]); + ChangeHeroStat(hero,STAT_SPELL_POWER,-H55_SpecialSpellPowerOwners[hero]); + ChangeHeroStat(hero,STAT_KNOWLEDGE,-H55_RunicShrineBonusOwners[hero]); + H55_CastleDefenseOwners[hero] = 0; + H55_MageGuildBonusOwners[hero] = 0; + H55_SpecialAttackOwners[hero] = 0; + H55_SpecialKnowledgeOwners[hero] = 0; + H55_SpecialSpellPowerOwners[hero] = 0; + H55_RunicShrineBonusOwners[hero] = 0; + else + local townrace = H55_GetTownRace(town) + if townrace == 8 then + local fort = GetTownBuildingLevel(town,TOWN_BUILDING_FORT); + local shrine = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1); + local hut = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_3); + local pile = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_4); + if pile == 1 then pile = 2 end; + if hut == 1 then hut = 2 end; + if fort > H55_CastleDefenseOwners[hero] then + ChangeHeroStat(hero,STAT_DEFENCE,(fort-H55_CastleDefenseOwners[hero])); + H55_CastleDefenseOwners[hero] = fort; + end; + if shrine > H55_RunicShrineBonusOwners[hero] then + ChangeHeroStat(hero,STAT_KNOWLEDGE,(shrine-H55_RunicShrineBonusOwners[hero])); + H55_RunicShrineBonusOwners[hero] = shrine; + end; + if pile > H55_SpecialAttackOwners[hero] then + ChangeHeroStat(hero,STAT_ATTACK,(pile-H55_SpecialAttackOwners[hero])); + H55_SpecialAttackOwners[hero] = pile; + end; + if hut > H55_SpecialSpellPowerOwners[hero] then + ChangeHeroStat(hero,STAT_SPELL_POWER,(hut-H55_SpecialSpellPowerOwners[hero])); + H55_SpecialSpellPowerOwners[hero] = hut; + end; + elseif townrace == 7 then + local fort = GetTownBuildingLevel(town,TOWN_BUILDING_FORT); + local shrine = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1); + local guild = GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD); + if fort > H55_CastleDefenseOwners[hero] then + ChangeHeroStat(hero,STAT_DEFENCE,(fort-H55_CastleDefenseOwners[hero])); + H55_CastleDefenseOwners[hero] = fort; + end; + if shrine > H55_RunicShrineBonusOwners[hero] then + ChangeHeroStat(hero,STAT_KNOWLEDGE,(shrine-H55_RunicShrineBonusOwners[hero])); + H55_RunicShrineBonusOwners[hero] = shrine; + end; + if guild > H55_MageGuildBonusOwners[hero] then + ChangeHeroStat(hero,STAT_SPELL_POWER,(guild-H55_MageGuildBonusOwners[hero])); + H55_MageGuildBonusOwners[hero] = guild; + end; + elseif townrace == 6 then + local fort = GetTownBuildingLevel(town,TOWN_BUILDING_FORT); + local altar = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1); + local guild = GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD); + if fort > H55_CastleDefenseOwners[hero] then + ChangeHeroStat(hero,STAT_DEFENCE,(fort-H55_CastleDefenseOwners[hero])); + H55_CastleDefenseOwners[hero] = fort; + end; + if altar > H55_SpecialAttackOwners[hero] then + ChangeHeroStat(hero,STAT_ATTACK,(altar-H55_SpecialAttackOwners[hero])); + H55_SpecialAttackOwners[hero] = altar; + end; + if guild > H55_MageGuildBonusOwners[hero] then + ChangeHeroStat(hero,STAT_SPELL_POWER,(guild-H55_MageGuildBonusOwners[hero])); + H55_MageGuildBonusOwners[hero] = guild; + end; + elseif townrace == 5 then + local fort = GetTownBuildingLevel(town,TOWN_BUILDING_FORT); + local altar = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1); + local guild = GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD); + if altar == 1 then altar = 2 end; + if fort > H55_CastleDefenseOwners[hero] then + ChangeHeroStat(hero,STAT_DEFENCE,(fort-H55_CastleDefenseOwners[hero])); + H55_CastleDefenseOwners[hero] = fort; + end; + if altar > H55_SpecialKnowledgeOwners[hero] then + ChangeHeroStat(hero,STAT_KNOWLEDGE,(altar-H55_SpecialKnowledgeOwners[hero])); + H55_SpecialKnowledgeOwners[hero] = altar; + end; + if guild > H55_MageGuildBonusOwners[hero] then + ChangeHeroStat(hero,STAT_SPELL_POWER,(guild-H55_MageGuildBonusOwners[hero])); + H55_MageGuildBonusOwners[hero] = guild; + end; + elseif townrace == 4 then + local fort = GetTownBuildingLevel(town,TOWN_BUILDING_FORT); + local altar = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1); + local guild = GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD); + if altar == 1 then altar = 2 end; + if fort > H55_CastleDefenseOwners[hero] then + ChangeHeroStat(hero,STAT_DEFENCE,(fort-H55_CastleDefenseOwners[hero])); + H55_CastleDefenseOwners[hero] = fort; + end; + if altar > H55_SpecialKnowledgeOwners[hero] then + ChangeHeroStat(hero,STAT_KNOWLEDGE,(altar-H55_SpecialKnowledgeOwners[hero])); + H55_SpecialKnowledgeOwners[hero] = altar; + end; + if guild > H55_MageGuildBonusOwners[hero] then + ChangeHeroStat(hero,STAT_SPELL_POWER,(guild-H55_MageGuildBonusOwners[hero])); + H55_MageGuildBonusOwners[hero] = guild; + end; + elseif townrace == 3 then + local fort = GetTownBuildingLevel(town,TOWN_BUILDING_FORT); + local altar = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_5); + local guild = GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD); + if altar == 1 then altar = 2 end; + if fort > H55_CastleDefenseOwners[hero] then + ChangeHeroStat(hero,STAT_DEFENCE,(fort-H55_CastleDefenseOwners[hero])); + H55_CastleDefenseOwners[hero] = fort; + end; + if altar > H55_SpecialAttackOwners[hero] then + ChangeHeroStat(hero,STAT_ATTACK,(altar-H55_SpecialAttackOwners[hero])); + H55_SpecialAttackOwners[hero] = altar; + end; + if guild > H55_MageGuildBonusOwners[hero] then + ChangeHeroStat(hero,STAT_SPELL_POWER,(guild-H55_MageGuildBonusOwners[hero])); + H55_MageGuildBonusOwners[hero] = guild; + end; + elseif townrace == 2 then + local fort = GetTownBuildingLevel(town,TOWN_BUILDING_FORT); + local altar = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_0); + local guild = GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD); + if fort > H55_CastleDefenseOwners[hero] then + ChangeHeroStat(hero,STAT_DEFENCE,(fort-H55_CastleDefenseOwners[hero])); + H55_CastleDefenseOwners[hero] = fort; + end; + if altar > H55_SpecialAttackOwners[hero] then + ChangeHeroStat(hero,STAT_ATTACK,(altar-H55_SpecialAttackOwners[hero])); + H55_SpecialAttackOwners[hero] = altar; + end; + if guild > H55_MageGuildBonusOwners[hero] then + ChangeHeroStat(hero,STAT_SPELL_POWER,(guild-H55_MageGuildBonusOwners[hero])); + H55_MageGuildBonusOwners[hero] = guild; + end; + else + local fort = GetTownBuildingLevel(town,TOWN_BUILDING_FORT); + local altar = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_2); + local guild = GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD); + if altar == 1 then altar = 2 end; + if fort > H55_CastleDefenseOwners[hero] then + ChangeHeroStat(hero,STAT_DEFENCE,(fort-H55_CastleDefenseOwners[hero])); + H55_CastleDefenseOwners[hero] = fort; + end; + if altar > H55_SpecialAttackOwners[hero] then + ChangeHeroStat(hero,STAT_ATTACK,(altar-H55_SpecialAttackOwners[hero])); + H55_SpecialAttackOwners[hero] = altar; + end; + if guild > H55_MageGuildBonusOwners[hero] then + ChangeHeroStat(hero,STAT_SPELL_POWER,(guild-H55_MageGuildBonusOwners[hero])); + H55_MageGuildBonusOwners[hero] = guild; + end; + end; + end; +end; + +function H55_DailyEvents(player) + --errorHook(H55_DailyError); + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {10,"Dwellings",player,""};--------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + local playerrace = H55_PlayerFactions[player]; + local dwellingrace = H55_GetTownRaceID(playerrace); + local alltowns = GetObjectNamesByType("TOWN"); + local strongholdtowns = GetObjectNamesByType("TOWN_STRONGHOLD"); + local townsofrace = H55_GetAmountAlignedTowns(playerrace); + + if H55_IsThisAIPlayer(player) == 1 and H55_TownConvEnabled == 1 then + + local amountT1dwellings = table.length(GetObjectNamesByType(H55_T1DwellingTypes[playerrace])); + local amountT2dwellings = table.length(GetObjectNamesByType(H55_T2DwellingTypes[playerrace])); + local amountT3dwellings = table.length(GetObjectNamesByType(H55_T3DwellingTypes[playerrace])); + local amountT4dwellings = table.length(GetObjectNamesByType(H55_T4DwellingTypes[playerrace])); + + local allT1dwellings = {}; + local allT2dwellings = {}; + local allT3dwellings = {}; + local allT4dwellings = {}; + + for i=1,8 do + allT1dwellings[i] = GetObjectNamesByType(H55_T1DwellingTypes[i]) + allT2dwellings[i] = GetObjectNamesByType(H55_T2DwellingTypes[i]) + allT3dwellings[i] = GetObjectNamesByType(H55_T3DwellingTypes[i]) + allT4dwellings[i] = GetObjectNamesByType(H55_T4DwellingTypes[i]) + end; + + if amountT1dwellings < H55_MaxDwellingsT1 then + for i=1,8 do + for j,dwelling in allT1dwellings[i] do + if GetObjectOwner(dwelling) == player and (H55_GetT1DwellingRace(dwelling) ~= playerrace) then + ReplaceDwelling(dwelling,dwellingrace); + H55_AmountAIDwellingConversions = H55_AmountAIDwellingConversions+1; + end; + end; + end; + end; + if amountT2dwellings < H55_MaxDwellingsT2 then + for i=1,8 do + for j,dwelling in allT2dwellings[i] do + if GetObjectOwner(dwelling) == player and (H55_GetT2DwellingRace(dwelling) ~= playerrace) then + ReplaceDwelling(dwelling,dwellingrace); + H55_AmountAIDwellingConversions = H55_AmountAIDwellingConversions+1; + end; + end; + end; + end; + if amountT3dwellings < H55_MaxDwellingsT3 then + for i=1,8 do + for j,dwelling in allT3dwellings[i] do + if GetObjectOwner(dwelling) == player and (H55_GetT3DwellingRace(dwelling) ~= playerrace) and table.contains(H55_UniqueDwellings,dwelling) == nil then + if H55_GetT3DwellingRace(dwelling) == 2 then + ReplaceDwelling(dwelling,dwellingrace); + if H55_GetT3DwellingRace(dwelling) == 2 and playerrace ~= 2 then table.inject(H55_UniqueDwellings,dwelling) end; + else + ReplaceDwelling(dwelling,dwellingrace); + end; + H55_AmountAIDwellingConversions = H55_AmountAIDwellingConversions+1; + end; + end; + end; + end; + if amountT4dwellings < H55_MaxDwellingsT4 then + for i=1,8 do + for j,dwelling in allT4dwellings[i] do + if GetObjectOwner(dwelling) == player and (H55_GetT4DwellingRace(dwelling) ~= playerrace) and table.contains(H55_UniqueDwellings,dwelling) == nil then + if H55_GetT4DwellingRace(dwelling) == 2 then + ReplaceDwelling(dwelling,dwellingrace); + if H55_GetT4DwellingRace(dwelling) == 2 and playerrace ~= 2 then table.inject(H55_UniqueDwellings,dwelling) end; + elseif H55_GetT4DwellingRace(dwelling) == 4 then + ReplaceDwelling(dwelling,dwellingrace); + if H55_GetT4DwellingRace(dwelling) == 4 and playerrace ~= 4 then table.inject(H55_UniqueDwellings,dwelling) end; + else + ReplaceDwelling(dwelling,dwellingrace); + end; + H55_AmountAIDwellingConversions = H55_AmountAIDwellingConversions+1; + end; + end; + end; + end; + end; + + if H55_IsThisAIPlayer(player) == 1 then + for i, academy in (GetObjectNamesByType("TOWN_ACADEMY")) do + if GetObjectOwner(academy) == player then + DestroyTownBuildingToLevel(academy,TOWN_BUILDING_SPECIAL_3,0,0); + end; + end; + for i, dungeon in (GetObjectNamesByType("TOWN_DUNGEON")) do + if GetObjectOwner(dungeon) == player then + DestroyTownBuildingToLevel(dungeon,TOWN_BUILDING_SPECIAL_4,0,0); + end; + end; + end; + + local heroes = GetPlayerHeroes(player); + + for i,hero in heroes do + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {10b,"Dark Ritual",player,hero};-------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if HasHeroSkill(hero,PERK_DARK_RITUAL) then + local x,y,z = GetObjectPosition(hero); + H55_HeroPositionTracker[hero] = {["x"] = x,["y"] = y,["z"] = z}; + H55_HeroMaxMoveTracker[hero] = GetHeroStat(hero,STAT_MOVE_POINTS); + H55_HeroMoveTracker[hero] = 0; + H55_HeroRestoredMovementTracker[hero] = 0; + H55_HeroManaTracker[hero] = GetHeroStat(hero,STAT_MANA_POINTS); + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {11,"Spymaster",player,hero};-------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {11a,"Interfacing",player,hero};-------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_DimensionDoorsOnThisMap == 1 and H55_InterfacingPermit[hero] == 1 then + if H55_InterfacingStatus[hero] == 1 then + SetObjectPosition(hero,H55_InterfacingPosition[hero]["x"],H55_InterfacingPosition[hero]["y"],H55_InterfacingPosition[hero]["z"]); + H55_CancelDimensionDoor(hero); + startThread(H55_ProtectedSign,"/Text/Game/Scripts/TownPortal/DD_VisitEnded.txt",hero,player,H55_MsgSleep,5); + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {11b,"AI WM",player,hero};-------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_IsThisAIPlayer(player) == 1 then + if HasHeroWarMachine(hero,4) == nil then + GiveHeroWarMachine(hero,4); + end; + if HasHeroSkill(hero,PERK_BALLISTA) and HasHeroWarMachine(hero,1) == nil then + GiveHeroWarMachine(hero,1); + end; + if HasHeroSkill(hero,PERK_FIRST_AID) and HasHeroWarMachine(hero,3) == nil then + GiveHeroWarMachine(hero,3); + end; + if GetHeroLevel(hero) >= 15 and HasHeroSkill(hero,PERK_BALLISTA) == nil and HasHeroWarMachine(hero,1) == nil then + GiveHeroWarMachine(hero,1); + end; + if GetHeroLevel(hero) >= 15 and HasHeroSkill(hero,PERK_FIRST_AID) == nil and HasHeroWarMachine(hero,3) == nil then + GiveHeroWarMachine(hero,3); + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {11b,"Potions",player,hero};------------------------------------------------------------------------------------------------------ + ------------------------------------------------------------------------------------------------------------------------------------------------ + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {12,"GovExp",player,hero};---------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_IsThisAIPlayer(player) == 1 and H55_GovernanceEnabled == 1 and H55_Day >= 7 then + local level = GetHeroLevel(hero); + local amount = math.round( (100+(H55_Difficulty*100)) + ((1+(level/10))*(level*level)) ); + GiveExp(hero,amount); + end; + if H55_IsThisAIPlayer(player) ~= 1 and H55_Governors[hero] == 1 then + local town = H55_GovernorsWithTown[hero]; + local herorace = H55_GetHeroRaceNum(hero) + local townrace = H55_GetTownRace(town) + local herolevel = GetHeroLevel(hero); + if IsObjectExists(hero) ~= 1 then + H55_ResetConquestHero(hero,town); + elseif GetObjectOwner(town) ~= player then + H55_ResetConquestHero(hero,town); + elseif townrace ~= herorace then + H55_ResetConquestHero(hero,town); + else + local movement = GetHeroStat(hero,STAT_MOVE_POINTS); + local movereduction1 = math.round(movement*0.25); + local movereduction2 = math.round(movement*0.50); + local movereduction3 = math.round(movement*0.75); + local distance = H55_GetDistance(hero,town); + local expgain = H55_GetHeroEnlightenmentStrength(hero); + local tavern = GetTownBuildingLevel(town,TOWN_BUILDING_TAVERN); + local marketplace = GetTownBuildingLevel(town,TOWN_BUILDING_MARKETPLACE); + local blacksmith = GetTownBuildingLevel(town,TOWN_BUILDING_BLACKSMITH); + local fort = GetTownBuildingLevel(town,TOWN_BUILDING_FORT); + local townhall = GetTownBuildingLevel(town,TOWN_BUILDING_TOWN_HALL); + local guild = GetTownBuildingLevel(town,TOWN_BUILDING_MAGIC_GUILD); + local shipyard = GetTownBuildingLevel(town,TOWN_BUILDING_SHIPYARD); + local dwelling1 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_1); + local dwelling2 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_2); + local dwelling3 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_3); + local dwelling4 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_4); + local dwelling5 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_5); + local dwelling6 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_6); + local dwelling7 = GetTownBuildingLevel(town,TOWN_BUILDING_DWELLING_7); + local grail = GetTownBuildingLevel(town,TOWN_BUILDING_GRAIL); + local special1 = 0; + local special2 = 0; + local special3 = 0; + local special4 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_4); + local special5 = 0; + if townrace ~= 1 and townrace ~= 2 and townrace ~= 3 then + special3 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_3); + end; + if townrace == 2 then + special1 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_0); + else + special1 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1); + end; + if townrace == 6 then + special2 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_6); + else + special2 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_2); + end; + if townrace ~= 4 and townrace ~= 5 and townrace ~= 6 then + special5 = GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_5); + else + special5 = 0; + end; + local townvalue = tavern+marketplace+blacksmith+fort+townhall+guild+shipyard+dwelling1+dwelling2+dwelling3+dwelling4+dwelling5+dwelling6+dwelling7+grail+special1+special2+special3+special4+special5; + + local experience = math.round(H55_GovernorExpCoef*(expgain* ( (townvalue*30)+((1+(herolevel/10))*(herolevel*herolevel)) ) ) ); + + if townhall == 4 then experience = experience+90 end; + if distance >= 50 and distance < 75 then + H55_AdjustGovernorDefense(hero,nil); + ChangeHeroStat(hero,STAT_MOVE_POINTS,-movereduction1); + if herolevel < 98 then + GiveExp(hero,(math.round(0.5*experience))); + end; + if H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/TownPortal/TG_LittleFar.txt",hero,player,H55_MsgSleep,5); + end; + elseif distance >= 75 and distance < 100 then + H55_AdjustGovernorDefense(hero,nil); + ChangeHeroStat(hero,STAT_MOVE_POINTS,-movereduction2); + if H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/TownPortal/TG_Far.txt",hero,player,H55_MsgSleep,5); + end; + elseif distance >= 100 then + H55_AdjustGovernorDefense(hero,nil); + ChangeHeroStat(hero,STAT_MOVE_POINTS,-movereduction3); + if H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/TownPortal/TG_Lost.txt",hero,player,H55_MsgSleep,5); + end; + elseif distance < 50 and herolevel < 5 then + ChangeHeroStat(hero,STAT_MOVE_POINTS,-movereduction1); + H55_AdjustGovernorDefense(hero,town); + GiveExp(hero,experience); + else + H55_AdjustGovernorDefense(hero,town); + if herolevel < 98 then + GiveExp(hero,experience); + end; + end; + + -- Update Info Window + + if H55_Workday ~= 1 then + local extralegiont01 = 0; + local extralegiont02 = 0; + local extralegiont03 = 0; + local extralegiont04 = 0; + local extralegiont05 = 0; + local extralegiont06 = 0; + local extralegiont07 = 0; + local growthcoef = 1+(GetHeroLevel(hero)*0.01); + if HasArtefact(hero,ARTIFACT_GOVERNOR_01,1) then growthcoef = growthcoef + 0.05 end; + local bonus = 5; + if HasHeroSkill(hero,PERK_RECRUITMENT) then bonus = bonus+5 end; + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then bonus = bonus+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then bonus = bonus+5 end; + if HasArtefact(hero,ARTIFACT_LEGION_T1,0) and (H55_GetLegionCap(hero) == 1) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/1); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_1) >= 1 and growth >= 1 then + extralegiont01 = growth; + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T2,0) and (H55_GetLegionCap(hero) == 2) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/1.5); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_2) >= 1 and growth >= 1 then + extralegiont02 = growth; + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T3,0) and (H55_GetLegionCap(hero) == 3) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/2); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_3) >= 1 and growth >= 1 then + extralegiont03 = growth; + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T4,0) and (H55_GetLegionCap(hero) == 4) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/3); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_4) >= 1 and growth >= 1 then + extralegiont04 = growth; + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T5,0) and (H55_GetLegionCap(hero) == 5) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/4); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_5) >= 1 and growth >= 1 then + extralegiont05 = growth; + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T6,0) and (H55_GetLegionCap(hero) == 6) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/6); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_6) >= 1 and growth >= 1 then + extralegiont06 = growth; + end; + end; + if HasArtefact(hero,ARTIFACT_LEGION_T7,0) and (H55_GetLegionCap(hero) == 7) then + local growth = math.round((GetHeroStat(hero,STAT_KNOWLEDGE)+bonus)/12); + if GetTownBuildingLevel(town, TOWN_BUILDING_DWELLING_7) >= 1 and growth >= 1 then + extralegiont07 = growth; + end; + end; + H55_GovernanceTier1[hero] = extralegiont01 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][1]))-(2*H55_CreaturesGrowth[townrace][1])); + H55_GovernanceTier2[hero] = extralegiont02 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][2]))-(2*H55_CreaturesGrowth[townrace][2])); + H55_GovernanceTier3[hero] = extralegiont03 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][3]))-(2*H55_CreaturesGrowth[townrace][3])); + H55_GovernanceTier4[hero] = extralegiont04 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][4]))-(2*H55_CreaturesGrowth[townrace][4])); + H55_GovernanceTier5[hero] = extralegiont05 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][5]))-(2*H55_CreaturesGrowth[townrace][5])); + H55_GovernanceTier6[hero] = extralegiont06 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][6]))-(2*H55_CreaturesGrowth[townrace][6])); + H55_GovernanceTier7[hero] = extralegiont07 + (math.round(growthcoef*(2*H55_CreaturesGrowth[townrace][7]))-(2*H55_CreaturesGrowth[townrace][7])); + end; + end; + end; + + if strongholdtowns ~= nil then + local deficit = 0; + local mana = GetHeroStat(hero,STAT_MANA_POINTS); + local manatotal = 10 * GetHeroStat(hero,STAT_KNOWLEDGE); + if HasHeroSkill(hero,PERK_INTELLIGENCE) then + manatotal = (math.round(1.4*manatotal))-1; + end; + if mana < manatotal then + deficit = manatotal-mana; + for i, town in strongholdtowns do + if (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1) >= 1) and (H55_GetDistance(hero,town) <= 6) then + H55_ModifyMana(hero,deficit,0); + end; + end; + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {14,"EconomicDaily",player,hero};----------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if HasArtefact(hero,34,1) and HasArtefact(hero,35,1) then + GiveExp(hero,(H55_Day*10)); + end; + if HasArtefact(hero,ARTIFACT_ENDLESS_BAG_OF_GOLD,0) then + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE); + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then knowledge = knowledge+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then knowledge = knowledge+5 end; + local amount = math.round(knowledge*25); + H55_GlobalDailyGoldPayout[player] = H55_GlobalDailyGoldPayout[player]+amount; + end; + if HasArtefact(hero,ARTIFACT_ENDLESS_SACK_OF_GOLD,0) then + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE); + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then knowledge = knowledge+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then knowledge = knowledge+5 end; + local amount = math.round(knowledge*50); + H55_GlobalDailyGoldPayout[player] = H55_GlobalDailyGoldPayout[player]+amount; + end; + if HasArtefact(hero,ARTIFACT_HORN_OF_PLENTY,0) then + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE); + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then knowledge = knowledge+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then knowledge = knowledge+5 end; + local amount = math.round(knowledge*75); + H55_GlobalDailyGoldPayout[player] = H55_GlobalDailyGoldPayout[player]+amount; + end; + if HasArtefact(hero,ARTIFACT_GEAR_08,0) then + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE); + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then knowledge = knowledge+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then knowledge = knowledge+5 end; + local amount = math.round(knowledge*200); + H55_GlobalDailyGoldPayout[player] = H55_GlobalDailyGoldPayout[player]+amount; + end; + if HasArtefact(hero,ARTIFACT_GOVERNOR_02,0) then + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE); + if HasArtefact(hero,ARTIFACT_CROWN_OF_COURAGE,1) then knowledge = knowledge+10 end; + if HasArtefact(hero,ARTIFACT_VALORIOUS_ARMOR,1) then knowledge = knowledge+5 end; + local amount = math.round(knowledge/2); + local goldamount = math.round((knowledge/2)*1000); + if amount < 1 then amount = 1 end; + if H55_Workday == 1 then + H55_GlobalDailyWoodPayout[player] = H55_GlobalDailyWoodPayout[player]+amount; + elseif H55_Workday == 2 then + H55_GlobalDailyOrePayout[player] = H55_GlobalDailyOrePayout[player]+amount; + elseif H55_Workday == 3 then + H55_GlobalDailySulphurPayout[player] = H55_GlobalDailySulphurPayout[player]+amount; + elseif H55_Workday == 4 then + H55_GlobalDailyGemPayout[player] = H55_GlobalDailyGemPayout[player]+amount; + elseif H55_Workday == 5 then + H55_GlobalDailyMercuryPayout[player] = H55_GlobalDailyMercuryPayout[player]+amount; + elseif H55_Workday == 6 then + H55_GlobalDailyCrystalPayout[player] = H55_GlobalDailyCrystalPayout[player]+amount; + else + H55_GlobalDailyGoldPayout[player] = H55_GlobalDailyGoldPayout[player]+goldamount; + end; + end; + + + if HasHeroSkill(hero,KNIGHT_FEAT_GRAIL_VISION) then + local rndchoice = random(6); + local knowledge = GetHeroStat(hero,STAT_KNOWLEDGE); + local amount = 1; + if knowledge >= 20 then amount = 2 end; + if rndchoice == 0 then + H55_GlobalDailyWoodPayout[player] = H55_GlobalDailyWoodPayout[player]+amount; + elseif rndchoice == 1 then + H55_GlobalDailyOrePayout[player] = H55_GlobalDailyOrePayout[player]+amount; + elseif rndchoice == 2 then + H55_GlobalDailyMercuryPayout[player] = H55_GlobalDailyMercuryPayout[player]+amount; + elseif rndchoice == 3 then + H55_GlobalDailyCrystalPayout[player] = H55_GlobalDailyCrystalPayout[player]+amount; + elseif rndchoice == 4 then + H55_GlobalDailySulphurPayout[player] = H55_GlobalDailySulphurPayout[player]+amount; + elseif rndchoice == 5 then + H55_GlobalDailyGemPayout[player] = H55_GlobalDailyGemPayout[player]+amount; + end; + end; + end; + + H55_DailyEventsCounter[player] = H55_DailyEventsCounter[player]+1; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {15,"AI Fixes",player,""};----------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_IsThisAIPlayer(player) == 1 and H55_TownConvEnabled == 1 then + if townsofrace < H55_MaxTownsPerFaction then + for i,town in alltowns do + if GetObjectOwner(town) == player and (H55_GetTownRace(town) ~= playerrace) and (H55_IsAnyHeroInTown(town,player) == 0) then + H55_ConvertNowAI(town,player,playerrace); + end; + end; + end; + end; + + if H55_IsThisAIPlayer(player) == 1 and H55_ForceAIFix == 1 and H55_HasTown(player) == 0 then + H55_InvokeNuclearOption(player); + end; + + --Duel map + + if H55_ARMG_Duel == 1 and H55_Day == 8 then + for i, town in alltowns do + RazeTown(town); + end; + end; + + --Map level daily event + + if H55_SPMapDailyEvent == 1 then + H55_SPMap_DailyEvent(); + end; + + print("H55 Daily Event "..H55_DailyEventsCounter[player].." Finished"); +end; + +----------------------------------------------------------------------------------------------------------------------------------------------------- +--CONTINUES EVENT +----------------------------------------------------------------------------------------------------------------------------------------------------- + +function H55_ContinuesEvent(player) + --errorHook(H55_ContinuesError); + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {16,"Header",player,""};------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + local heroes = GetPlayerHeroes(player); + + local alltowns = GetObjectNamesByType("TOWN"); + local strongholdtowns = GetObjectNamesByType("TOWN_STRONGHOLD"); + local dungeontowns = GetObjectNamesByType("TOWN_DUNGEON"); + local sylvantowns = GetObjectNamesByType("TOWN_PRESERVE"); + local fortresstowns = GetObjectNamesByType("TOWN_FORTRESS"); + local infernotowns = GetObjectNamesByType("TOWN_INFERNO"); + + ci = GetLastSavedCombatIndex(); + + if H55_IsThisAIPlayer(player) == 1 then + H55_AmountCyclesAI = H55_AmountCyclesAI+1; + end; + + --delayed prepare adv map for map level settings + + if H55_DelayedVariables == 0 and H55_ARMG_Duel == 0 then + sleep(1); + if H55_MapType ~= "Campaign" and H55_MapType ~= "Scenario" and table.containsamount(H55_PlayerStatus,0) >= 2 then + consoleCmd("setvar dev_console_password = disabled"); + end; + if H55_MapType == "Campaign" or H55_MapType == "Scenario" then + H55_GovernanceEnabled = 0; + H55_TownConvEnabled = 0; + H55_MineControl = 0; + H55_PrisonersAdjustToHeroRace = 1; + end; + if H55_MapType == "Multiplayer" or H55_MapType == "RMG" then + H55_ForceAIFix = 1; + end; + if H55_MapType == "RMG" and H55_CompetitiveARMGTowns == 1 and H55_BuildPlayerTowns == 0 then + H55_ConstructARMGTowns(); + else + if H55_BuildPlayerTowns ~= 0 then + H55_ConstructPlayerTowns(H55_BuildPlayerTowns); + end; + end; + if H55_MapType == "RMG" and H55_CompetitiveARMGTowns == 1 and H55_BuildNeutralTowns == 0 then + H55_ConstructARMGTownsNeutral(); + else + if H55_BuildNeutralTowns ~= 0 then + H55_ConstructNeutralTowns(H55_BuildNeutralTowns); + end; + end; + if H55_MapType == "RMG" and H55_DimensionDoors == 1 then + H55_DimensionDoorsOnThisMap = 1; + end; + if H55_MapType ~= "RMG" and H55_DimensionDoorsOnThisMap == 1 then + H55_DimensionDoors = 1; + if H55_MagiHutsQty > 0 then + for i, object in H55_MagiHuts do + SetObjectEnabled(object,nil); + Trigger(OBJECT_TOUCH_TRIGGER,object,"H55_MagiHutVisit"); + --OverrideObjectTooltipNameAndDescription(object,H55_MagiHut_Name,H55_MagiHut_Txt); + end; + end; + end; + -- if H55_AIHandicap == 1 then + -- for i=1,8 do + -- if (GetPlayerState(i) == 1) and (H55_IsThisAIPlayer(i) == 1) then + -- SetPlayerResource(i,0,0); + -- SetPlayerResource(i,1,0); + -- SetPlayerResource(i,2,0); + -- SetPlayerResource(i,3,0); + -- SetPlayerResource(i,4,0); + -- SetPlayerResource(i,5,0); + -- SetPlayerResource(i,6,0); + -- end; + -- end; + -- print("H55 AI starts completely bankrupt."); + -- end; + if H55_LowResGame == 1 then + for i=1,8 do + if (GetPlayerState(i) == 1) and (H55_IsThisAIPlayer(i) ~= 1) then + H55_TakeResourcesSilent(i,0,10); + H55_TakeResourcesSilent(i,1,10); + H55_TakeResourcesSilent(i,2,5); + H55_TakeResourcesSilent(i,3,5); + H55_TakeResourcesSilent(i,4,5); + H55_TakeResourcesSilent(i,5,5); + H55_TakeResourcesSilent(i,6,10000); + end; + end; + print("H55 Low resource game is activated"); + end; + if H55_IgnoreExpAdjustment == 1 then + H55_SetEasyExperience(); + end; + -- if H55_ForceMixedStacks == 1 and H55_HiddenArtifacts == 0 then + -- H55_SkipModifyStackSize = 1; + -- startThread(H55_MixStacks); + -- else + -- H55_MixingStacksComplete = 1; + -- end; + -- if H55_SkipModifyStackSize == 0 then + -- startThread(H55_ModifyStackSize); + -- end; + H55_DelayedVariables = 1; + end; + + --duel mode + + if H55_ARMG_Duel == 1 then + if H55_Duel_MessageFirst == 0 then + H55_Duel_MessageFirst = 1; + H55_PrepareDuel(); + end; + if H55_IsThisAIPlayer(player) ~= 1 and H55_Duel_MessageShown[player] == 0 then + MessageBoxForPlayers(GetPlayerFilter(player),"/Text/Game/Scripts/Duel/DuelIntro.txt","H55_DuelStart"); + H55_Duel_MessageShown[player] = 1; + end; + if player == 1 and table.length(GetPlayerHeroes(2)) == 0 then + Win(player); + end; + if player == 2 and table.length(GetPlayerHeroes(1)) == 0 then + Win(player); + end; + end; + + if H55_PlayerTeams[player] == nil then + for i=1,8 do + if IsTeamCurrent(i) then + H55_PlayerTeams[player] = i; + end; + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {17,"Dark Ritual",player,""};------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if heroes ~= nil then + + for i,hero in heroes do + + --local level = GetHeroLevel(hero); + + --Dark ritual + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {17a,"TownManagement",player,hero};------------------------------------------------------------------------------------------------------ + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_IsThisAIPlayer(player) ~= 1 then + if H55_TownConvEnabled == 1 or H55_TownGateEnabled == 1 or H55_GovernanceEnabled == 1 then + if H55_TownManageOwners[hero] ~= 1 then + ControlHeroCustomAbility(hero,CUSTOM_ABILITY_4,CUSTOM_ABILITY_ENABLED); + H55_TownManageOwners[hero] = 1; + H55_SpinSwitch[hero] = 0; + end; + end; + end; + if H55_DimensionDoorsOnThisMap == 1 then + if H55_InterfacingPermit[hero] == nil then + H55_InterfacingPermit[hero] = 1; + H55_InterfacingTown[hero] = nil; + H55_InterfacingPosition[hero] = {["x"]=nil,["y"]=nil,["z"]=nil}; + H55_InterfacingStatus[hero] = 0; + H55_SpinSwitch[hero] = 0; + H55_EndDoorSpin[hero] = 0; + H55_BreakDoorSpin[hero] = 0; + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {18,"TownGain",player,hero};------------------------------------------------------------------------------------------------------ + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_WitchesPhonebook[hero] == 1 then + if strongholdtowns ~= nil then + for i, town in strongholdtowns do + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1) >= 1) and H55_HallTrialStudent[hero] ~= 1 then + if H55_GetDistance(hero,town) <= 6 or H55_InterfacingTown[hero] == town then + ChangeHeroStat(hero,STAT_DEFENCE,2); + H55_HallTrialStudent[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Defense.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1) >= 2) and H55_HallCourageStudent[hero] ~= 1 then + if H55_GetDistance(hero,town) <= 6 or H55_InterfacingTown[hero] == town then + ChangeHeroStat(hero,STAT_DEFENCE,2); + H55_HallCourageStudent[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Defense.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1) == 3) and H55_HallMightStudent[hero] ~= 1 then + if H55_GetDistance(hero,town) <= 6 or H55_InterfacingTown[hero] == town then + ChangeHeroStat(hero,STAT_DEFENCE,2); + H55_HallMightStudent[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Defense.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_3) == 1) and H55_WalkerHutStudent[hero] ~= 1 then + if H55_GetDistance(hero,town) <= 6 or H55_InterfacingTown[hero] == town then + ChangeHeroStat(hero,STAT_DEFENCE,2); + H55_WalkerHutStudent[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Defense.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_4) == 1) and H55_PileSkullsStudent[town][hero] ~= 1 then + if H55_GetDistance(hero,town) <= 6 or H55_InterfacingTown[hero] == town then + ChangeHeroStat(hero,STAT_KNOWLEDGE,1); + H55_PileSkullsStudent[town][hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Knowledge.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + end; + end; + if H55_OverlordsPhonebook[hero] == 1 then + if dungeontowns ~= nil then + for i, town in dungeontowns do + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_6) == 1) and H55_HallIntrigueStudent[town][hero] ~= 1 then + if H55_GetDistance(hero,town) <= 6 or H55_InterfacingTown[hero] == town then + ChangeHeroStat(hero,STAT_DEFENCE,1); + H55_HallIntrigueStudent[town][hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Defense.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + end; + end; + if H55_TrickstersPhonebook[hero] == 1 then + if dungeontowns ~= nil then + for i, town in dungeontowns do + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_6) == 1) and H55_HallIntrigueStudent[town][hero] ~= 1 then + if H55_GetDistance(hero,town) <= 6 or H55_InterfacingTown[hero] == town then + ChangeHeroStat(hero,STAT_KNOWLEDGE,1); + H55_HallIntrigueStudent[town][hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Knowledge.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1) == 1) and H55_ElementalAltarStudent[hero] ~= 1 then + ChangeHeroStat(hero,STAT_MORALE,1); + H55_ElementalAltarStudent[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Morale.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + end; + if H55_TrickstersPhonebook[hero] == 1 or H55_OverlordsPhonebook[hero] == 1 then + if dungeontowns ~= nil then + for i, town in dungeontowns do + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1) == 2) and H55_PrimalAltarStudent[town][hero] ~= 1 then + ChangeHeroStat(hero,STAT_ATTACK,1); + H55_PrimalAltarStudent[town][hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Attack.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + end; + if H55_DruidsPhonebook[hero] == 1 then + if sylvantowns ~= nil then + for i, town in sylvantowns do + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_2) == 2) and H55_FountainStudent[town][hero] ~= 1 then + ChangeHeroStat(hero,STAT_SPELL_POWER,1); + H55_FountainStudent[town][hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Spellpower.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + end; + if H55_RangersPhonebook[hero] == 1 then + if sylvantowns ~= nil then + for i, town in sylvantowns do + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_0) == 2) and H55_BrotherhoodStudent[town][hero] ~= 1 then + ChangeHeroStat(hero,STAT_DEFENCE,1); + H55_BrotherhoodStudent[town][hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Defense.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + end; + if H55_DemonlordsPhonebook[hero] == 1 then + if infernotowns ~= nil then + for i, town in infernotowns do + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1) == 1) and H55_LoomStudent[town][hero] ~= 1 then + ChangeHeroStat(hero,STAT_DEFENCE,1); + H55_LoomStudent[town][hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Defense.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + end; + if H55_SorcerersPhonebook[hero] == 1 then + if infernotowns ~= nil then + for i, town in infernotowns do + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_1) == 1) and H55_LoomStudent[town][hero] ~= 1 then + ChangeHeroStat(hero,STAT_KNOWLEDGE,1); + H55_LoomStudent[town][hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/Defense.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + end; + if H55_GetHeroRaceNum(hero) == 3 then + if infernotowns ~= nil then + for i, town in infernotowns do + if GetObjectOwner(town) == player and (GetTownBuildingLevel(town,TOWN_BUILDING_SPECIAL_5) == 1) and H55_SacrificialPitStudent[town][hero] ~= 1 then + if H55_GetDistance(hero,town) <= 6 or H55_InterfacingTown[hero] == town then + ChangeHeroStat(hero,STAT_EXPERIENCE,2500); + H55_SacrificialPitStudent[town][hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_GetDistance(hero,town) ~= 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SacrificePit.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + end; + end; + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {18a,"Interfacing",player,""};--------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_DimensionDoorsOnThisMap == 1 then + if H55_InterfacingStatus[hero] == 1 then + local town = H55_InterfacingTown[hero]; + if GetTownHero(town) == hero then + SetObjectPosition(hero,H55_InterfacingPosition[hero]["x"],H55_InterfacingPosition[hero]["y"],H55_InterfacingPosition[hero]["z"]); + H55_CancelDimensionDoor(hero); + --print("DD_GetTownHero"); + startThread(H55_ProtectedSign,"/Text/Game/Scripts/TownPortal/DD_VisitEnded.txt",town,player,H55_MsgSleep,5); + elseif H55_IsEnemyNearby(town,8)==1 then + SetObjectPosition(hero,H55_InterfacingPosition[hero]["x"],H55_InterfacingPosition[hero]["y"],H55_InterfacingPosition[hero]["z"]); + H55_CancelDimensionDoor(hero); + --print("DD_TownEnemy"); + startThread(H55_ProtectedSign,"/Text/Game/Scripts/TownPortal/DD_TownEnemy.txt",town,player,H55_MsgSleep,5); + elseif H55_IsHeroInAnyTown(hero) == 0 and H55_IsEnemyNearby(hero,8)==1 then + SetObjectPosition(hero,H55_InterfacingPosition[hero]["x"],H55_InterfacingPosition[hero]["y"],H55_InterfacingPosition[hero]["z"]); + H55_CancelDimensionDoor(hero); + --print("DD_HeroEnemy"); + startThread(H55_ProtectedSign,"/Text/Game/Scripts/TownPortal/DD_Enemy.txt",hero,player,H55_MsgSleep,5); + else + local x,y,z = GetObjectPosition(hero); + local xx,yy,zz = H55_GetTownActiveTile(town); + if H55_InterfacingPosition[hero]["x"] ~= x or + H55_InterfacingPosition[hero]["y"] ~= y or + H55_InterfacingPosition[hero]["z"] ~= z then + if x == xx and + y == yy and + z == zz then + SetObjectPosition(hero,H55_InterfacingPosition[hero]["x"],H55_InterfacingPosition[hero]["y"],H55_InterfacingPosition[hero]["z"]); + H55_CancelDimensionDoor(hero); + startThread(H55_ProtectedSign,"/Text/Game/Scripts/TownPortal/DD_VisitEnded.txt",town,player,H55_MsgSleep,5); + else + H55_CancelDimensionDoor(hero); + startThread(H55_ProtectedSign,"/Text/Game/Scripts/TownPortal/DD_VisitEnded.txt",hero,player,H55_MsgSleep,5); + end; + end; + end; + end; + end; + + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {19,"ArtSets",player,hero};------------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if (H55_GetDragonishSetCount(hero) == 8) and (H55_DragonishSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,2); + ChangeHeroStat(hero,STAT_DEFENCE,2); + ChangeHeroStat(hero,STAT_KNOWLEDGE,2); + ChangeHeroStat(hero,STAT_ATTACK,2); + H55_DragonishSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetDragonishSetCount(hero) <= 7) and (H55_DragonishSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-2); + ChangeHeroStat(hero,STAT_DEFENCE,-2); + ChangeHeroStat(hero,STAT_KNOWLEDGE,-2); + ChangeHeroStat(hero,STAT_ATTACK,-2); + H55_DragonishSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetDragonishSetCount(hero) >= 4) and (H55_DragonishHalfSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,2); + ChangeHeroStat(hero,STAT_DEFENCE,2); + ChangeHeroStat(hero,STAT_KNOWLEDGE,2); + ChangeHeroStat(hero,STAT_ATTACK,2); + H55_DragonishHalfSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetDragonishSetCount(hero) <= 3) and (H55_DragonishHalfSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-2); + ChangeHeroStat(hero,STAT_DEFENCE,-2); + ChangeHeroStat(hero,STAT_KNOWLEDGE,-2); + ChangeHeroStat(hero,STAT_ATTACK,-2); + H55_DragonishHalfSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetSarIssusSetCount(hero) >= 2) and (H55_SarIssusSetOwners[hero] ~= 1) then + H55_SarIssusSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetSarIssusSetCount(hero) <= 1) and (H55_SarIssusSetOwners[hero] == 1) then + H55_SarIssusSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetSarIssusSetCount(hero) == 4) and (H55_SarIssusPlusSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,4); + H55_SarIssusPlusSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetSarIssusSetCount(hero) <= 3) and (H55_SarIssusPlusSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-4); + H55_SarIssusPlusSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetNecroSetCount(hero) == 6) and (H55_NecroSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,6); + H55_NecroSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetNecroSetCount(hero) <= 5) and (H55_NecroSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-6); + H55_NecroSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetNecroSetCount(hero) >= 3) and (H55_NecroHalfSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,6); + H55_NecroHalfSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetNecroSetCount(hero) <= 2) and (H55_NecroHalfSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-6); + H55_NecroHalfSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetPirateSetCount(hero) == 6) and (H55_PirateSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_ATTACK,6); + H55_PirateSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetPirateSetCount(hero) <= 5) and (H55_PirateSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_ATTACK,-6); + H55_PirateSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetPirateSetCount(hero) >= 3) and (H55_PirateHalfSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_ATTACK,6); + H55_PirateHalfSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetPirateSetCount(hero) <= 2) and (H55_PirateHalfSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_ATTACK,-6); + H55_PirateHalfSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetDwarvenSetCount(hero) == 4) and (H55_DwarvenSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_DEFENCE,4); + H55_DwarvenSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetDwarvenSetCount(hero) <= 3) and (H55_DwarvenSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_DEFENCE,-4); + H55_DwarvenSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetDwarvenSetCount(hero) >= 2) and (H55_DwarvenHalfSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_DEFENCE,4); + H55_DwarvenHalfSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetDwarvenSetCount(hero) <= 1) and (H55_DwarvenHalfSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_DEFENCE,-4); + H55_DwarvenHalfSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetMonkSetCount(hero) == 5) and (H55_MonkSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,4); + H55_MonkSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetMonkSetCount(hero) <= 4) and (H55_MonkSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-4); + H55_MonkSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetMonkSetCount(hero) == 3) and (H55_MonkHalfSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,4); + H55_MonkHalfSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetMonkSetCount(hero) <= 2) and (H55_MonkHalfSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-4); + H55_MonkHalfSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetGuardianSetCount(hero) == 4) and (H55_GuardianSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,1); + ChangeHeroStat(hero,STAT_DEFENCE,1); + ChangeHeroStat(hero,STAT_KNOWLEDGE,1); + ChangeHeroStat(hero,STAT_ATTACK,1); + H55_GuardianSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetGuardianSetCount(hero) <= 3) and (H55_GuardianSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-1); + ChangeHeroStat(hero,STAT_DEFENCE,-1); + ChangeHeroStat(hero,STAT_KNOWLEDGE,-1); + ChangeHeroStat(hero,STAT_ATTACK,-1); + H55_GuardianSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetGuardianSetCount(hero) == 2) and (H55_GuardianHalfSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,1); + ChangeHeroStat(hero,STAT_DEFENCE,1); + ChangeHeroStat(hero,STAT_KNOWLEDGE,1); + ChangeHeroStat(hero,STAT_ATTACK,1); + H55_GuardianHalfSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if (H55_GetGuardianSetCount(hero) <= 1) and (H55_GuardianHalfSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-1); + ChangeHeroStat(hero,STAT_DEFENCE,-1); + ChangeHeroStat(hero,STAT_KNOWLEDGE,-1); + ChangeHeroStat(hero,STAT_ATTACK,-1); + H55_GuardianHalfSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if H55_GetSaintSetCount(hero) >= 3 and (H55_SaintSetOwners[hero] ~= 1) then + H55_SaintSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if H55_GetSaintSetCount(hero) <= 2 and (H55_SaintSetOwners[hero] == 1) then + H55_SaintSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if H55_GetLionSetCount(hero) == 3 and (H55_LionSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_ATTACK,6); + H55_LionSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if H55_GetLionSetCount(hero) <= 2 and (H55_LionSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_ATTACK,-6); + H55_LionSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if H55_GetArcherSetCount(hero) == 2 and (H55_ArcherSetOwners[hero] ~= 1) then + ChangeHeroStat(hero,STAT_LUCK,1); + H55_ArcherSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if H55_GetArcherSetCount(hero) <= 1 and (H55_ArcherSetOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_LUCK,-1); + H55_ArcherSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if H55_GetVestmentSetCount(hero) == 2 and (H55_VestmentSetOwners[hero] ~= 1) then + H55_VestmentSetOwners[hero]=1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetBonus.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if H55_GetVestmentSetCount(hero) <= 1 and (H55_VestmentSetOwners[hero] == 1) then + H55_VestmentSetOwners[hero]=0; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/SetLost.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + + --Artificer Wand + + if HasArtefact(hero,ARTIFACT_POTION03,1) and HasHeroSkill(hero,SKILL_ARTIFICIER) == nil and H55_ArtWandStaffOwners[hero] ~= 1 then + ChangeHeroStat(hero,STAT_SPELL_POWER,-2); + H55_ArtWandStaffOwners[hero] = 1; + end; + if HasArtefact(hero,ARTIFACT_POTION03,1) == nil and H55_ArtWandStaffOwners[hero] == 1 then + ChangeHeroStat(hero,STAT_SPELL_POWER,2); + H55_ArtWandStaffOwners[hero] = 0; + end; + if HasArtefact(hero,ARTIFACT_POTION03,1) and HasHeroSkill(hero,SKILL_ARTIFICIER) and H55_ArtWandStaffOwners[hero] == 1 then + ChangeHeroStat(hero,STAT_SPELL_POWER,2); + H55_ArtWandStaffOwners[hero] = 0; + end; + + -- Cloak of Malassa + + if HasArtefact(hero,ARTIFACT_UPG_AR1,1) and H55_UnlootableOwners[hero] ~= 1 then + SetHeroLootable(hero,nil); + H55_UnlootableOwners[hero] = 1; + end; + if HasArtefact(hero,ARTIFACT_UPG_AR1,1) == nil and H55_UnlootableOwners[hero] == 1 then + SetHeroLootable(hero,not nil); + H55_UnlootableOwners[hero] = 0; + end; + + --Boots Penalty + + if HasArtefact(hero,24,1) then + H55_BootsPenaltyOwners[hero] = 1; + end; + if HasArtefact(hero,24,1) == nil and (H55_BootsPenaltyOwners[hero] == 1) then + ChangeHeroStat(hero,STAT_MOVE_POINTS,-750); + H55_BootsPenaltyOwners[hero] = 0; + end; + + --Mana interruption checks + + if HasArtefact(hero,ARTIFACT_MONK_01,1) == nil and H55_Monk01Wearers[hero] == H55_Day then + H55_Monk01Interrupters[hero] = H55_Day+1; + end; + if HasArtefact(hero,ARTIFACT_MONK_02,1) == nil and H55_Monk02Wearers[hero] == H55_Day then + H55_Monk02Interrupters[hero] = H55_Day+1; + end; + if HasArtefact(hero,ARTIFACT_BREASTPLATE_OF_PETRIFIED_WOOD,1) == nil and H55_EldritchWearers[hero] == H55_Day then + H55_EldritchInterrupters[hero] = H55_Day+1; + end; + if HasArtefact(hero,ARTIFACT_PHOENIX_FEATHER_CAPE,1) == nil and H55_EmberstoneWearers[hero] == H55_Day then + H55_EmberstoneInterrupters[hero] = H55_Day+1; + end; + if HasArtefact(hero,ARTIFACT_EVERCOLD_ICICLE,1) == nil and H55_IcicleWearers[hero] == H55_Day then + H55_IcicleInterrupters[hero] = H55_Day+1; + end; + if HasArtefact(hero,ARTIFACT_EARTHSLIDERS,1) == nil and H55_SlidersWearers[hero] == H55_Day then + H55_SlidersInterrupters[hero] = H55_Day+1; + end; + if HasArtefact(hero,ARTIFACT_ROBE_OF_MAGI,1) == nil and H55_RobeWearers[hero] == H55_Day then + H55_RobeInterrupters[hero] = H55_Day+1; + end; + if HasArtefact(hero,ARTIFACT_CROWN_OF_MAGI,1) == nil and H55_CrownWearers[hero] == H55_Day then + H55_CrownInterrupters[hero] = H55_Day+1; + end; + if HasArtefact(hero,ARTIFACT_GEAR_03,1) == nil and H55_AlchemistWearers[hero] == H55_Day then + H55_AlchemistInterrupters[hero] = H55_Day+1; + end; + if HasArtefact(hero,ARTIFACT_RUNIC_WAR_HARNESS,1) == nil and H55_RunicWearers[hero] == H55_Day then + H55_RunicInterrupters[hero] = H55_Day+1; + end; + + --Potions equip text + + if H55_RPGPotions == 1 then + if HasArtefact(hero,ARTIFACT_POTION01,1) and (H55_ManaPotionOwners[hero] ~= 1) then + H55_ManaPotionOwners[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/ManapotionEq.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if HasArtefact(hero,ARTIFACT_POTION01,1) == nil and (H55_ManaPotionOwners[hero] == 1) then + H55_ManaPotionOwners[hero] = 0; + end; + + if HasArtefact(hero,ARTIFACT_POTION02,1) and (H55_MovePotionOwners[hero] ~= 1) then + H55_MovePotionOwners[hero] = 1; + if H55_IsThisAIPlayer(player) ~= 1 and H55_IsHeroInAnyTown(hero) == 0 then + startThread(H55_ProtectedSign,"/Text/Game/Scripts/MovepotionEq.txt",hero,player,H55_MsgSleep,H55_MsgTime); + end; + end; + if HasArtefact(hero,ARTIFACT_POTION02,1) == nil and (H55_MovePotionOwners[hero] == 1) then + H55_MovePotionOwners[hero] = 0; + end; + end; + + --Movepotion + + + --Crystal heroes morale + + if table.contains(H55_NeutralSpecialists,hero) then + if H55_CheckCrystalMorale(hero,H55_NeutralSpecialistsCr[hero]) == 1 and H55_CrystalMoraleReceived[hero] ~= 1 then + ChangeHeroStat(hero,STAT_MORALE,1); + H55_CrystalMoraleReceived[hero] = 1; + end; + if H55_CheckCrystalMorale(hero,H55_NeutralSpecialistsCr[hero]) == 0 and H55_CrystalMoraleReceived[hero] == 1 then + ChangeHeroStat(hero,STAT_MORALE,-1); + H55_CrystalMoraleReceived[hero] = 0; + end; + end; + + --Thant + + if hero == "Thant" then + if H55_CheckCrystalMorale(hero,H55_NeutralSpecialistsCr[hero]) == 1 and H55_CrystalMoraleReceived[hero] ~= 1 then + ChangeHeroStat(hero,STAT_LUCK,1); + H55_CrystalMoraleReceived[hero] = 1; + end; + if H55_CheckCrystalMorale(hero,H55_NeutralSpecialistsCr[hero]) == 0 and H55_CrystalMoraleReceived[hero] == 1 then + ChangeHeroStat(hero,STAT_LUCK,-1); + H55_CrystalMoraleReceived[hero] = 0; + end; + end; + + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {21,"Statboost",player,hero};----------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + + if HasArtefact(hero,ARTIFACT_FIZBIN,0) and H55_FizbinOwners[hero] ~= 1 then + ChangeHeroStat(hero,STAT_LUCK,-2); + H55_FizbinOwners[hero] = 1; + end; + if HasArtefact(hero,ARTIFACT_FIZBIN,0) == nil and H55_FizbinOwners[hero] == 1 then + ChangeHeroStat(hero,STAT_LUCK,2); + H55_FizbinOwners[hero] = 0; + end; + if HasArtefact(hero,ARTIFACT_FORGING,0) and H55_ForgingOwners[hero] ~= 1 then + ChangeHeroStat(hero,STAT_MORALE,-2); + H55_ForgingOwners[hero] = 1; + end; + if HasArtefact(hero,ARTIFACT_FORGING,0) == nil and H55_ForgingOwners[hero] == 1 then + ChangeHeroStat(hero,STAT_MORALE,2); + H55_ForgingOwners[hero] = 0; + end; + + -- Gifts + + if HasArtefact(hero,ARTIFACT_UPG_HM2,1) and H55_HeavenlyOwners[hero] ~= 1 then + local experience = GetHeroLevel(hero); + local amount = experience*experience*experience*experience; + ChangeHeroStat(hero,STAT_EXPERIENCE,amount); + H55_HeavenlyOwners[hero] = 1; + end; + if H55_RPGPotions == 1 and H55_MapType ~= "Campaign" and H55_IsThisAIPlayer(player) ~= 1 and H55_StartPotionOwners[hero] ~= 1 and H55_StartPotionGlobalOwners[player] ~= 1 then + GiveArtefact(hero,ARTIFACT_POTION01); + GiveArtefact(hero,ARTIFACT_POTION02); + GiveArtefact(hero,ARTIFACT_POTION03); + H55_StartPotionOwners[hero] = 1; + H55_StartPotionGlobalOwners[player] = 1; + end; + if H55_GameMode == 3 and H55_IsThisAIPlayer(player) == 1 and H55_UnlootableAIOwners[hero] ~= 1 then + SetHeroLootable(hero,nil); + H55_UnlootableAIOwners[hero] = 1; + end; + + --Mentoring penalties + + ---------------------------------------------------------------------------------------------------------- + + -- if HasHeroSkill(hero,HERO_SKILL_MENTORING) and H55_MentoringOwners[hero] ~= 1 then + -- H55_MentoringOwners[hero] = 1; + -- end; + -- if HasHeroSkill(hero,HERO_SKILL_MENTORING) == nil and H55_MentoringOwners[hero] == 1 then + -- ChangeHeroStat(hero,STAT_KNOWLEDGE,-2); + -- ChangeHeroStat(hero,STAT_SPELL_POWER,-2); + -- ChangeHeroStat(hero,STAT_ATTACK,-2); + -- ChangeHeroStat(hero,STAT_DEFENCE,-2); + -- H55_MentoringOwners[hero] = 0; + -- end; + -- if HasHeroSkill(hero,HERO_SKILL_BARBARIAN_MENTORING) and H55_BarbarianMentoringOwners[hero] ~= 1 then + -- H55_BarbarianMentoringOwners[hero] = 1; + -- end; + -- if HasHeroSkill(hero,HERO_SKILL_BARBARIAN_MENTORING) == nil and H55_BarbarianMentoringOwners[hero] == 1 then + -- ChangeHeroStat(hero,STAT_KNOWLEDGE,-2); + -- ChangeHeroStat(hero,STAT_SPELL_POWER,-2); + -- ChangeHeroStat(hero,STAT_ATTACK,-2); + -- ChangeHeroStat(hero,STAT_DEFENCE,-2); + -- H55_BarbarianMentoringOwners[hero] = 0; + -- end; + + --Skillboosts + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {21a,"Network Skills",player,hero};----------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {22,"BaseSkills",player,hero};---------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {23,"Game Vars",player,hero};---------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + -- if (table.contains(H55_CombatSummonSpecialists,hero) or H55_IsChillSummoner(hero)) and H55_CombatSummonOwners[hero] == nil then + -- local level = GetHeroLevel(hero); + -- local levelstr = ""..level; + -- SetGameVar("C55_Level_"..hero,levelstr); + -- H55_CombatSummonOwners[hero] = 1; + -- end; + -- if (table.contains(H55_CombatSummonSpecialists,hero) or H55_IsChillSummoner(hero)) and H55_CombatSummonOwners[hero] < GetHeroLevel(hero) then + -- local level = GetHeroLevel(hero); + -- local levelstr = ""..level; + -- SetGameVar("C55_Level_"..hero,levelstr); + -- H55_CombatSummonOwners[hero] = level; + -- end; + -- if hero == "Ildar" and HasHeroSkill(hero,WARLOCK_FEAT_ELITE_CASTERS) and H55_CombatRefinedOwners[hero] ~= 1 then + -- SetGameVar("C55_Refined_"..hero,"On"); + -- H55_CombatRefinedOwners[hero] = 1; + -- end; + -- if H55_CombatRefinedOwners[hero] == 1 and HasHeroSkill(hero,WARLOCK_FEAT_ELITE_CASTERS) == nil then + -- SetGameVar("C55_Refined_"..hero,"Off"); + -- H55_CombatRefinedOwners[hero] = 0; + -- end; + -- if HasHeroSkill(hero,HERO_SKILL_QUICKNESS_OF_MIND) and H55_CombatQuickMindOwners[hero] ~= 1 then + -- SetGameVar("C55_Swift_"..hero,"On"); + -- H55_CombatQuickMindOwners[hero] = 1; + -- end; + -- if H55_CombatQuickMindOwners[hero] == 1 and HasHeroSkill(hero,HERO_SKILL_QUICKNESS_OF_MIND) == nil then + -- SetGameVar("C55_Swift_"..hero,"Off"); + -- H55_CombatQuickMindOwners[hero] = 0; + -- end; + -- if HasHeroSkill(hero,NECROMANCER_FEAT_CHILLING_BONES) and H55_CombatChillingOwners[hero] ~= 1 then + -- SetGameVar("C55_Chill_"..hero,"On"); + -- H55_CombatChillingOwners[hero] = 1; + -- end; + -- if H55_CombatChillingOwners[hero] == 1 and HasHeroSkill(hero,NECROMANCER_FEAT_CHILLING_BONES) == nil then + -- SetGameVar("C55_Chill_"..hero,"Off"); + -- H55_CombatChillingOwners[hero] = 0; + -- end; + -- if HasHeroSkill(hero,PERK_CATAPULT) and H55_CombatManaCartOwners[hero] ~= 1 then + -- SetGameVar("C55_Cart_"..hero,"On"); + -- H55_CombatManaCartOwners[hero] = 1; + -- end; + -- if H55_CombatManaCartOwners[hero] == 1 and HasHeroSkill(hero,PERK_CATAPULT) == nil then + -- SetGameVar("C55_Cart_"..hero,"Off"); + -- H55_CombatManaCartOwners[hero] = 0; + -- end; + -- if HasHeroSkill(hero,KNIGHT_FEAT_TRIPLE_BALLISTA) and HasHeroSkill(hero,RANGER_FEAT_IMBUE_BALLISTA) == nil and GetHeroLevel(hero) >= 30 and H55_CombatBallistaSalvoOwners[hero] ~= 1 then + -- SetGameVar("C55_Ballista_"..hero,"On"); + -- H55_CombatBallistaSalvoOwners[hero] = 1; + -- end; + -- if H55_CombatBallistaSalvoOwners[hero] == 1 and HasHeroSkill(hero,KNIGHT_FEAT_TRIPLE_BALLISTA) == nil or HasHeroSkill(hero,RANGER_FEAT_IMBUE_BALLISTA) then + -- SetGameVar("C55_Ballista_"..hero,"Off"); + -- H55_CombatBallistaSalvoOwners[hero] = 0; + -- end; + -- if HasHeroSkill(hero,PERK_BALLISTA) and HasHeroSkill(hero,DEMON_FEAT_TRIPLE_CATAPULT) and H55_CombatBrimstoneSalvoOwners[hero] ~= 1 then + -- SetGameVar("C55_Brimstone_"..hero,"On"); + -- H55_CombatBrimstoneSalvoOwners[hero] = 1; + -- end; + -- if H55_CombatBrimstoneSalvoOwners[hero] == 1 and HasHeroSkill(hero,DEMON_FEAT_TRIPLE_CATAPULT) == nil or HasHeroSkill(hero,PERK_BALLISTA) == nil then + -- SetGameVar("C55_Brimstone_"..hero,"Off"); + -- H55_CombatBrimstoneSalvoOwners[hero] = 0; + -- end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {23,"Pre-resurrection",player,hero};------------------------------------------------------------------------------ + ------------------------------------------------------------------------------------------------------------------------------------------------ + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {23a,"Rune Recycling",player,hero};----------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + + ------------------------------------------------------------------------------------------------------------------------------------------------ + --H55_DEBUG = {23c,"AI Creeping",player,hero};---------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + if H55_GameMode ~= 0 and H55_IsThisAIPlayer(player) == 1 then + local power = H55_AICreepingPower[H55_DifficultyToString[H55_Difficulty]]; + if H55_MapType == "RMG" or H55_MapType == "Multiplayer" then + if H55_RoleModes[hero] == nil then + --SetHeroRoleMode(hero,HERO_ROLE_MODE_REGULAR); + H55_RoleModes[hero]=1; + if H55_RangersPhonebook[hero] == nil then + GiveHeroSkill(hero,1); + GiveHeroSkill(hero,19); + if H55_Difficulty >=2 then + GiveHeroSkill(hero,1); + end; + else + GiveHeroSkill(hero,6); + GiveHeroSkill(hero,6); + if H55_Difficulty >=2 then + GiveHeroSkill(hero,1); + end; + end; + end; + end; + if H55_MapType == "RMG" then + if GetHeroLevel(hero) >= 5 and KnowHeroSpell(hero,SPELL_SUMMON_CREATURES) == nil then + TeachHeroSpell(hero,SPELL_SUMMON_CREATURES); + end; + if GetHeroLevel(hero) >= 10 and KnowHeroSpell(hero,SPELL_TOWN_PORTAL) == nil then + TeachHeroSpell(hero,SPELL_TOWN_PORTAL); + end; + end; + if H55_MapType == "RMG" or H55_MapType == "Multiplayer" then + if H55_AveragePowerRating > 2750 or H55_Difficulty >=2 then + if H55_CIResurrectTALL[hero] ~= ci and H55_RefuseCIResurrectTALL[hero] ~= ci and GetSavedCombatArmyHero(ci,1)==hero and GetSavedCombatArmyHero(ci,0)==nil and GetSavedCombatArmyPlayer(ci,0)==PLAYER_NONE then + startThread(H55_ResurrectArmyAI,player,hero,ci,7,0,power,STAT_KNOWLEDGE); + startThread(H55_ResurrectArmyAI,player,hero,ci,6,0,power,STAT_KNOWLEDGE); + startThread(H55_ResurrectArmyAI,player,hero,ci,5,0,power,STAT_KNOWLEDGE); + startThread(H55_ResurrectArmyAI,player,hero,ci,4,0,power,STAT_KNOWLEDGE); + startThread(H55_ResurrectArmyAI,player,hero,ci,3,0,power,STAT_KNOWLEDGE); + startThread(H55_ResurrectArmyAI,player,hero,ci,2,0,power,STAT_KNOWLEDGE); + startThread(H55_ResurrectArmyAI,player,hero,ci,1,0,power,STAT_KNOWLEDGE); + H55_CIResurrectTALL[hero] = ci; + H55_RefuseCIResurrectT7[hero] = ci; + H55_RefuseCIResurrectT6[hero] = ci; + H55_RefuseCIResurrectT5[hero] = ci; + H55_RefuseCIResurrectT4[hero] = ci; + H55_RefuseCIResurrectT3[hero] = ci; + H55_RefuseCIResurrectT2[hero] = ci; + H55_RefuseCIResurrectT1[hero] = ci; + H55_CIResurrectT7[hero] = ci; + H55_CIResurrectT6[hero] = ci; + H55_CIResurrectT5[hero] = ci; + H55_CIResurrectT4[hero] = ci; + H55_CIResurrectT3[hero] = ci; + H55_CIResurrectT2[hero] = ci; + H55_CIResurrectT1[hero] = ci; + H55_AILastFightingDay = H55_Day; + end; + end; + end; + end; + + ------------------------------------------------------------------------------------------------------------------------------------------------ + H55_DEBUG = {24,"Resurrection",player,hero};---------------------------------------------------------------------------------------------------- + ------------------------------------------------------------------------------------------------------------------------------------------------ + + -- if H55_RPGPotions == 1 then + -- if HasArtefact(hero,ARTIFACT_POTION03,1) == nil and (H55_CIResurrectTALL[hero] ~= ci) and (GetSavedCombatArmyHero(ci,1)==hero) then + -- H55_RefuseCIResurrectTALL[hero] = ci; + -- end; + -- if HasArtefact(hero,ARTIFACT_POTION03,1) and (H55_GetSpecialNecroReq(hero) == 0) and (H55_CIResurrectTALL[hero] ~= ci) and (H55_RefuseCIResurrectTALL[hero] ~= ci) and (GetSavedCombatArmyHero(ci,1)==hero) then + -- if (H55_GetHeroRaceNum(hero) ~= 7) then + -- startThread(H55_ResurrectArmy,player,hero,ci,7,0,0.3,STAT_KNOWLEDGE); + -- end; + -- startThread(H55_ResurrectArmy,player,hero,ci,6,0,0.3,STAT_KNOWLEDGE); + -- startThread(H55_ResurrectArmy,player,hero,ci,5,0,0.3,STAT_KNOWLEDGE); + -- startThread(H55_ResurrectArmy,player,hero,ci,4,0,0.3,STAT_KNOWLEDGE); + -- if (H55_GetHeroRaceNum(hero) ~= 5) then + -- startThread(H55_ResurrectArmy,player,hero,ci,3,0,0.3,STAT_KNOWLEDGE); + -- end; + -- if (H55_GetHeroRaceNum(hero) ~= 5) then + -- startThread(H55_ResurrectArmy,player,hero,ci,2,0,0.3,STAT_KNOWLEDGE); + -- end; + -- startThread(H55_ResurrectArmy,player,hero,ci,1,0,0.3,STAT_KNOWLEDGE); + -- H55_CIResurrectTALL[hero] = ci; + -- H55_RefuseCIResurrectT7[hero] = ci; + -- H55_RefuseCIResurrectT6[hero] = ci; + -- H55_RefuseCIResurrectT5[hero] = ci; + -- H55_RefuseCIResurrectT4[hero] = ci; + -- H55_RefuseCIResurrectT3[hero] = ci; + -- H55_RefuseCIResurrectT2[hero] = ci; + -- H55_RefuseCIResurrectT1[hero] = ci; + -- H55_CIResurrectT7[hero] = ci; + -- H55_CIResurrectT6[hero] = ci; + -- H55_CIResurrectT5[hero] = ci; + -- H55_CIResurrectT4[hero] = ci; + -- H55_CIResurrectT3[hero] = ci; + -- H55_CIResurrectT2[hero] = ci; + -- H55_CIResurrectT1[hero] = ci; + -- RemoveArtefact(hero,ARTIFACT_POTION03); + -- end; + -- end; + + --Orbs + + if HasArtefact(hero,ARTIFACT_ORB_01,1) == nil and (H55_CIResurrectAir[hero] ~= ci) and (GetSavedCombatArmyHero(ci,1)==hero) then + H55_RefuseCIResurrectAir[hero] = ci; + end; + if HasArtefact(hero,ARTIFACT_ORB_01,1) and (H55_CIResurrectAir[hero] ~= ci) and (GetSavedCombatArmyHero(ci,1)==hero) and (H55_RefuseCIResurrectAir[hero] ~= ci) then + startThread(H55_ResurrectElemental,player,hero,ci,88,10,0.3,STAT_KNOWLEDGE); + H55_CIResurrectAir[hero] = ci; + end; + if HasArtefact(hero,ARTIFACT_ORB_02,1) == nil and (H55_CIResurrectEarth[hero] ~= ci) and (GetSavedCombatArmyHero(ci,1)==hero) then + H55_RefuseCIResurrectEarth[hero] = ci; + end; + if HasArtefact(hero,ARTIFACT_ORB_02,1) and (H55_CIResurrectEarth[hero] ~= ci) and (GetSavedCombatArmyHero(ci,1)==hero) and (H55_RefuseCIResurrectEarth[hero] ~= ci) then + startThread(H55_ResurrectElemental,player,hero,ci,87,10,0.3,STAT_KNOWLEDGE); + H55_CIResurrectEarth[hero] = ci; + end; + if HasArtefact(hero,ARTIFACT_ORB_03,1) == nil and (H55_CIResurrectFire[hero] ~= ci) and (GetSavedCombatArmyHero(ci,1)==hero) then + H55_RefuseCIResurrectFire[hero] = ci; + end; + if HasArtefact(hero,ARTIFACT_ORB_03,1) and (H55_CIResurrectFire[hero] ~= ci) and (GetSavedCombatArmyHero(ci,1)==hero) and (H55_RefuseCIResurrectFire[hero] ~= ci) then + startThread(H55_ResurrectElemental,player,hero,ci,85,10,0.3,STAT_KNOWLEDGE); + H55_CIResurrectFire[hero] = ci; + end; + if HasArtefact(hero,ARTIFACT_ORB_04,1) == nil and (H55_CIResurrectWater[hero] ~= ci) and (GetSavedCombatArmyHero(ci,1)==hero) then + H55_RefuseCIResurrectWater[hero] = ci; + end; + if HasArtefact(hero,ARTIFACT_ORB_04,1) and (H55_CIResurrectWater[hero] ~= ci) and (GetSavedCombatArmyHero(ci,1)==hero) and (H55_RefuseCIResurrectWater[hero] ~= ci) then + startThread(H55_ResurrectElemental,player,hero,ci,86,10,0.3,STAT_KNOWLEDGE); + H55_CIResurrectWater[hero] = ci; + end; + + end; + end; + + --Map level continues event + + if H55_SPMapContinuesEvent == 1 then + H55_SPMap_ContinuesEvent(); + end; +end; + +------------------------------------------------------------------------------------------------------------------------------------------------------ +--TROUBLESHOOTING +------------------------------------------------------------------------------------------------------------------------------------------------------ +function H55_CrashProtection() + sleep(1); + local currentdate = GetDate(DAY); + sleep(1); + if H55_Switch ~= 0 then + if H55_Day < currentdate then + print("The H55 script engine has crashed, reloading..."); + H55_AmountCrashes = H55_AmountCrashes+1; + H55_Switch = 1; + --H55_ScriptLog(); + startThread(H55_ContinuesActivator); + print("The H55 script engine has been restarted!"); + else + --print("H55 crash protection is active!"); + print("H55 Player Configuration: "..H55_PlayerStatus[1]..H55_PlayerStatus[2]..H55_PlayerStatus[3]..H55_PlayerStatus[4]..H55_PlayerStatus[5]..H55_PlayerStatus[6]..H55_PlayerStatus[7]..H55_PlayerStatus[8].." Game Mode: "..H55_GameMode.." Difficulty: "..H55_Difficulty); + print("H55 Amount of Recovered Crashes: "..H55_AmountCrashes); + --print("H55 AI Last Fighting Day: "..H55_AILastFightingDay); + --print("Amount of AI Script Cycles: "..H55_AmountCyclesAI); + --print("H55 Amount of AI TownConversions: "..H55_AmountAIConversions); + --print("H55 Amount of AI DwellingConversions: "..H55_AmountAIDwellingConversions); + --print("H55 Amount of AI Bank Visits: "..H55_AmountAIBankVisits); + end; + else + print("H55 is switched off by the user") + end; + if H55_NewDayTrigger == 1 then + print("H55 1st local New Day Trigger is active"); + H55_TriggerDaily(); + elseif H55_SecNewDayTrigger == 1 then + print("H55 2nd local New Day Trigger is active"); + H55_SecTriggerDaily(); + elseif H55_ThrNewDayTrigger == 1 then + print("H55 3rd local New Day Trigger is active"); + H55_ThrTriggerDaily(); + elseif H55_FrtNewDayTrigger == 1 then + print("H55 4th local New Day Trigger is active"); + H55_FrtTriggerDaily(); + elseif H55_FifNewDayTrigger == 1 then + print("H55 5th local New Day Trigger is active"); + H55_FifTriggerDaily(); + end; +end; + +function H55_On() + H55_Switch = 1; + startThread(H55_ContinuesActivator); + print("The H55 script engine has been restarted!"); +end; + +function H55_Off() + H55_Switch = 0; + print("The H55 script engine is shutdown!"); +end; + +function H55_WTF() + print("please wait, investigating...") + sleep(3); + local currentdate = GetDate(DAY); + sleep(7); + if H55_Day == currentdate then + print("H55 is running fine"); + --H55_ScriptLog(); + end; + if H55_Day < currentdate then + print("The H55 script engine has crashed, sorry for the inconvenience, trying to reload..."); + --H55_ScriptLog(); + H55_Switch = 1; + startThread(H55_ContinuesActivator); + sleep(2); + print("The H55 script engine has been restarted!"); + end; +end; + +-- function H55_TeamUpQuestion() + -- local status = H55_DetectTeamConfig() + -- local answering = 1 + -- for id = 1,8 do + -- if IsPlayerCurrent(id) then + -- answering = id + -- end; + -- end; + -- if status == 1 then + -- QuestionBoxForPlayers(GetPlayerFilter(answering),"/Text/Game/Scripts/Teamquestion.txt","H55_TeamHumansvsAI","H55_NoTeams"); + -- elseif H55_AllAgainstOne == 1 then + -- H55_ChallengeMe(answering); + -- else + -- print("H55 Team up question skipped."); + -- end; +-- end; + +function H55_ShowTimer() + print("Day of Week "..H55_Workday); + print("Day "..H55_Day); + print("Week "..H55_Week); + print("Month "..H55_Month); +end; + +function H55_CamFixTooManySkills(player,hero) + local heroes = GetPlayerHeroes(player); + if table.contains(heroes,hero) then + if (H55_GetDragonishSetCount(hero) == 8) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-2); + ChangeHeroStat(hero,STAT_DEFENCE,-2); + ChangeHeroStat(hero,STAT_KNOWLEDGE,-2); + ChangeHeroStat(hero,STAT_ATTACK,-2); + end; + if (H55_GetDragonishSetCount(hero) >= 4) and (H55_GetDragonishSetCount(hero) <= 7) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-2); + ChangeHeroStat(hero,STAT_DEFENCE,-2); + ChangeHeroStat(hero,STAT_KNOWLEDGE,-2); + ChangeHeroStat(hero,STAT_ATTACK,-2); + end; + if (H55_GetSarIssusSetCount(hero) == 4) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-4); + end; + if (H55_GetNecroSetCount(hero) == 6) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-6); + end; + if (H55_GetNecroSetCount(hero) >= 3) and (H55_GetNecroSetCount(hero) <= 5) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-6); + end; + if (H55_GetPirateSetCount(hero) == 6) then + ChangeHeroStat(hero,STAT_ATTACK,-6); + end; + if (H55_GetPirateSetCount(hero) >= 3) and (H55_GetNecroSetCount(hero) <= 5) then + ChangeHeroStat(hero,STAT_ATTACK,-6); + end; + if (H55_GetDwarvenSetCount(hero) == 4) then + ChangeHeroStat(hero,STAT_DEFENCE,-4); + end; + if (H55_GetDwarvenSetCount(hero) == 2) or (H55_GetDwarvenSetCount(hero) == 3) then + ChangeHeroStat(hero,STAT_DEFENCE,-4); + end; + if (H55_GetMonkSetCount(hero) == 5) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-4); + end; + if (H55_GetMonkSetCount(hero) == 3) or (H55_GetMonkSetCount(hero) == 4) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-4); + end; + if (H55_GetGuardianSetCount(hero) == 4) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-1); + ChangeHeroStat(hero,STAT_DEFENCE,-1); + ChangeHeroStat(hero,STAT_KNOWLEDGE,-1); + ChangeHeroStat(hero,STAT_ATTACK,-1); + end; + if (H55_GetGuardianSetCount(hero) == 2) or (H55_GetGuardianSetCount(hero) == 3) then + ChangeHeroStat(hero,STAT_SPELL_POWER,-1); + ChangeHeroStat(hero,STAT_DEFENCE,-1); + ChangeHeroStat(hero,STAT_KNOWLEDGE,-1); + ChangeHeroStat(hero,STAT_ATTACK,-1); + end; + if (H55_GetLionSetCount(hero) == 3) then + ChangeHeroStat(hero,STAT_ATTACK,-6); + end; + if (H55_GetArcherSetCount(hero) == 2) then + ChangeHeroStat(hero,STAT_LUCK,-1); + end; + + if GetHeroSkillMastery(hero,SKILL_WAR_MACHINES) >= 1 and HasHeroWarMachine(hero,4) == nil then + GiveHeroWarMachine(hero,4); + end; + if HasHeroSkill(hero,PERK_BALLISTA) and HasHeroWarMachine(hero,1) == nil then + GiveHeroWarMachine(hero,1); + end; + if HasHeroSkill(hero,PERK_FIRST_AID) and HasHeroWarMachine(hero,3) == nil then + GiveHeroWarMachine(hero,3); + end; + + print("H55 Campaign verified skills and checked war machines"); + else + print("H55 Hero isn't on the map for skills and war machines verification"); + end; +end; + +------------------------------------------------------------------------------------------------------------------------------------------------------ +--MAIN EVENT +------------------------------------------------------------------------------------------------------------------------------------------------------ +function LogError() + for _, value in LOG do + print(value) + end +end + +function H55_ContinuesActivator() + errorHook(LogError) + + while (H55_Switch == 1) do + + H55_Day = GetDate(DAY); + if H55_StaticBanks == 0 then H55_BankDay = GetDate(DAY) end; + H55_Week = GetDate(WEEK); + H55_Month = GetDate(MONTH); + H55_Workday = GetDate(DAY_OF_WEEK); + + sleep(H55_CycleSpeed); + + for i = 1,8 do + if (GetPlayerState(i) == 1) and IsPlayerInGhostMode(i) == nil then + if (IsPlayerCurrent(i)) and (H55_Workday == 1) and (H55_Day ~= 1) and (H55_WeeklyEventsDone[i] ~= 1) then + H55_SetGlobalWeeklyPayouts(i,0); + H55_WeeklyEvents(i); + Fx_WeeklyEvents(i); + else + H55_SetGlobalWeeklyPayouts(i,0); + end; + if (IsPlayerCurrent(i)) and (H55_DailyEventsCounter[i] < H55_Day) then + H55_SetGlobalDailyPayouts(i,0); + H55_DailyEvents(i); + Fx_DailyEvents(i); + H55_PayoutThisPlayer(i); + end; + if (H55_ArtifactsIndexed ~= 1) and (H55_Workday == 2) then + H55_IndexArtifacts(); + end; + if (IsPlayerCurrent(i)) and (H55_Workday == 2) then + H55_ResetWeeklyEvents(i); + end; + if (IsPlayerCurrent(i)) then + H55_ContinuesEvent(i); + Fx_InstantEvents(i); + end; + end; + end; + end; +end; + +------------------------------------------------------------------------------------------------------------------------------------------------------ +--SCRIPT ACTIVATION +------------------------------------------------------------------------------------------------------------------------------------------------------ + +startThread(H55_UpdateMapType); +startThread(H55_DetectP1AI); +startThread(H55_DetectP2AI); +startThread(H55_DetectP3AI); +startThread(H55_DetectP4AI); +startThread(H55_DetectP5AI); +startThread(H55_DetectP6AI); +startThread(H55_DetectP7AI); +startThread(H55_DetectP8AI); +startThread(H55_DetectPlayerFactions); +startThread(H55_UpdateGameMode); +startThread(H55_UpdateTownQtyDifficulty); +startThread(H55_DetectDuel); + + +print("H55 The error 'not belong to AI player' is on purpose and shows internal name of your hero."); +dofile("/scripts/H55-AdvMap.lua"); + +--startThread(H55_TeamUpQuestion); + +do + sleep(1); + local monsters = GetObjectNamesByType("CREATURE"); + local monstersqty = table.length(monsters); + local totalpower = 0; + local avgpower = 0; + --local calcpower = 0; + if monstersqty ~= 0 then + for i, monster in monsters do + if IsObjectExists(monster) == nil then + H55_HiddenArtifacts = 1; + end; + end; + if H55_HiddenArtifacts == 0 then + for i = 1, monstersqty-1 do + local units,count = H55_StackInfo(monsters[i]); + for j = 0,6 do + if (units[j] ~= 0) and (units[j] ~= nil) then + if units[j] == 89 then totalpower = totalpower + (count[j] * 130); + else + local typ = H55_CreaturesInv[units[j]]; + totalpower = totalpower + (count[j] * H55_CreaturesExp[typ[1]][typ[2]][typ[3]]); + end; + end; + end; + end; + avgpower = math.round(totalpower/monstersqty); + else + if H55_MapType == "RMG" then + avgpower = 2250; + else + avgpower = 1500; + end; + avgpower = avgpower + (H55_Difficulty * 250); + print("H55 Hidden Artifacts is enabled, stack mixing is canceled if it was due"); + end; + end; + print("H55 Stacks Qty: "..monstersqty.." Avg Power Rating: "..avgpower); + if avgpower > 1000 then + H55_AveragePowerRating = avgpower; + end; + + local player = 1; + for i = 1,8 do + if IsPlayerCurrent(i) then player = i end; + end; + if H55_GenerateMixedStacks == 1 and H55_MapType == "Multiplayer" and H55_ForceMixedStacks == 0 and H55_MixedByMapmixer == 0 and H55_HiddenArtifacts == 0 then + if H55_AskForMixedStacks == 1 then + H55_SkipModifyStackSize = 1; + QuestionBoxForPlayers(GetPlayerFilter(player),{"/Text/Game/Scripts/QuestionMixStacks.txt"},"H55_MixStacks","H55_CancelMixing"); + elseif monstersqty < H55_MixStacksThreshold then + H55_SkipModifyStackSize = 1; + startThread(H55_MixStacks); + else + H55_MixingStacksComplete = 1; + end; + -- elseif H55_ForceMixedStacks == 1 and H55_HiddenArtifacts == 0 then --or table.contains(H55_MultiplayerMaps,GetMapDataPath()) + -- H55_SkipModifyStackSize = 1; + -- startThread(H55_MixStacks); + else + H55_MixDecisionDelay = 1; + H55_MixingStacksComplete = 1; + end; +end; + +repeat sleep(1); until H55_AdvMapProcessed == 1 and H55_MixingStacksComplete == 1; + +if H55_MixDecisionDelay == 1 and H55_ForceMixedStacks == 1 and H55_HiddenArtifacts == 0 then + H55_SkipModifyStackSize = 1; + startThread(H55_MixStacks); +end; +if H55_SkipModifyStackSize == 0 and H55_HiddenArtifacts == 0 then startThread(H55_ModifyStackSize) end; + +startThread(H55_ContinuesActivator); +Trigger(CUSTOM_ABILITY_TRIGGER,"H55_TownManagement"); +Trigger(NEW_DAY_TRIGGER,"H55_CrashProtection"); + +------------------------------------------------------------------------------------------------------------------------------------------------------ +--APPENDIX +------------------------------------------------------------------------------------------------------------------------------------------------------ + +-- consoleCmd("setvar dev_console_password = schwinge-des-todes"); +-- consoleCmd("bind show_console '`'"); + +-- consoleCmd("bindsection hero_screen"); +-- consoleCmd("bind hide_interface 'J'"); +-- consoleCmd("bind enter_pressed 'SHIFT' + 'E'"); +-- consoleCmd("bindsection town_screen"); +-- consoleCmd("bind hide_interface 'J'"); +-- consoleCmd("unbind hero_skills 'S'"); +-- consoleCmd("bindsection combat_screen"); +-- consoleCmd("bind hide_interface 'J'"); +-- consoleCmd("bindsection adventure_screen"); +-- consoleCmd("bind hide_interface 'J'"); +-- consoleCmd("unbind hero_skills 'S'"); + +-- consoleCmd("unbind flip_floor 'T'"); +-- consoleCmd("bind input_select_town_01 'T'"); +-- consoleCmd("enable_cheats"); +-- consoleCmd("conquest_camera_limits 50 -100 1000 -100 100 0 0"); +-- consoleCmd("conquest_camera_softlimits 50 -100 1000 -100 100 0 0"); +-- consoleCmd("mission_camera_limits 50 -100 1000 -100 100 0 0"); +-- consoleCmd("mission_camera_softlimits 50 -100 1000 -100 100 0 0"); + +--------------------------------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/scripts/H55-Library.lua b/scripts/H55-Library.lua new file mode 100644 index 00000000..dbccb689 --- /dev/null +++ b/scripts/H55-Library.lua @@ -0,0 +1,1110 @@ +------------------------------------------------------------------------------------------------------------------------------------------------ +--MIGHT & MAGIC: HEROES 5.5 - LUA LIBRARY 4.0 +------------------------------------------------------------------------------------------------------------------------------------------------ + +--Authors: RedHeavenHero, Magnomagus + +------------------------------------------------------------------------------------------------------------------------------------------------ +--TABLES +------------------------------------------------------------------------------------------------------------------------------------------------ + +_VERSION = "Lua 4.0 modified" + +table = {} +math = {} + +string = { + bytes = {["\0"] = 0, ["\1"] = 1, ["\2"] = 2, ["\3"] = 3, ["\4"] = 4, ["\5"] = 5, ["\6"] = 6, ["\7"] = 7, ["\8"] = 8, ["\9"] = 9, ["\n"] = 10, ["\11"] = 11, ["\12"] = 12, ["\13"] = 13, ["\14"] = 14, ["\15"] = 15, ["\16"] = 16, ["\17"] = 17, ["\18"] = 18, ["\19"] = 19, ["\20"] = 20, ["\21"] = 21, ["\22"] = 22, ["\23"] = 23, ["\24"] = 24, ["\25"] = 25, ["\26"] = 26, ["\27"] = 27, ["\28"] = 28, ["\29"] = 29, ["\30"] = 30, ["\31"] = 31, [" "] = 32, ["!"] = 33, ["\""] = 34, ["#"] = 35, ["$"] = 36, ["%"] = 37, ["&"] = 38, ["'"] = 39, ["("] = 40, [")"] = 41, ["*"] = 42, ["+"] = 43, [","] = 44, ["-"] = 45, ["."] = 46, ["/"] = 47, ["0"] = 48, ["1"] = 49, ["2"] = 50, ["3"] = 51, ["4"] = 52, ["5"] = 53, ["6"] = 54, ["7"] = 55, ["8"] = 56, ["9"] = 57, [":"] = 58, [";"] = 59, ["<"] = 60, ["="] = 61, [">"] = 62, ["?"] = 63, ["@"] = 64, A = 65, B = 66, C = 67, D = 68, E = 69, F = 70, G = 71, H = 72, I = 73, J = 74, K = 75, L = 76, M = 77, N = 78, O = 79, P = 80, Q = 81, R = 82, S = 83, T = 84, U = 85, V = 86, W = 87, X = 88, Y = 89, Z = 90, ["["] = 91, ["\\"] = 92, ["]"] = 93, ["^"] = 94, _ = 95, ["`"] = 96, a = 97, b = 98, c = 99, d = 100, e = 101, f = 102, g = 103, h = 104, i = 105, j = 106, k = 107, l = 108, m = 109, n = 110, o = 111, p = 112, q = 113, r = 114, s = 115, t = 116, u = 117, v = 118, w = 119, x = 120, y = 121, z = 122, ["{"] = 123, ["|"] = 124, ["}"] = 125, ["~"] = 126, ["\127"] = 127, ["\128"] = 128, ["\129"] = 129, ["\130"] = 130, ["\131"] = 131, ["\132"] = 132, ["\133"] = 133, ["\134"] = 134, ["\135"] = 135, ["\136"] = 136, ["\137"] = 137, ["\138"] = 138, ["\139"] = 139, ["\140"] = 140, ["\141"] = 141, ["\142"] = 142, ["\143"] = 143, ["\144"] = 144, ["\145"] = 145, ["\146"] = 146, ["\147"] = 147, ["\148"] = 148, ["\149"] = 149, ["\150"] = 150, ["\151"] = 151, ["\152"] = 152, ["\153"] = 153, ["\154"] = 154, ["\155"] = 155, ["\156"] = 156, ["\157"] = 157, ["\158"] = 158, ["\159"] = 159, ["\160"] = 160, ["\161"] = 161, ["\162"] = 162, ["\163"] = 163, ["\164"] = 164, ["\165"] = 165, ["\166"] = 166, ["\167"] = 167, ["\168"] = 168, ["\169"] = 169, ["\170"] = 170, ["\171"] = 171, ["\172"] = 172, ["\173"] = 173, ["\174"] = 174, ["\175"] = 175, ["\176"] = 176, ["\177"] = 177, ["\178"] = 178, ["\179"] = 179, ["\180"] = 180, ["\181"] = 181, ["\182"] = 182, ["\183"] = 183, ["\184"] = 184, ["\185"] = 185, ["\186"] = 186, ["\187"] = 187, ["\188"] = 188, ["\189"] = 189, ["\190"] = 190, ["\191"] = 191, ["\192"] = 192, ["\193"] = 193, ["\194"] = 194, ["\195"] = 195, ["\196"] = 196, ["\197"] = 197, ["\198"] = 198, ["\199"] = 199, ["\200"] = 200, ["\201"] = 201, ["\202"] = 202, ["\203"] = 203, ["\204"] = 204, ["\205"] = 205, ["\206"] = 206, ["\207"] = 207, ["\208"] = 208, ["\209"] = 209, ["\210"] = 210, ["\211"] = 211, ["\212"] = 212, ["\213"] = 213, ["\214"] = 214, ["\215"] = 215, ["\216"] = 216, ["\217"] = 217, ["\218"] = 218, ["\219"] = 219, ["\220"] = 220, ["\221"] = 221, ["\222"] = 222, ["\223"] = 223, ["\224"] = 224, ["\225"] = 225, ["\226"] = 226, ["\227"] = 227, ["\228"] = 228, ["\229"] = 229, ["\230"] = 230, ["\231"] = 231, ["\232"] = 232, ["\233"] = 233, ["\234"] = 234, ["\235"] = 235, ["\236"] = 236, ["\237"] = 237, ["\238"] = 238, ["\239"] = 239, ["\240"] = 240, ["\241"] = 241, ["\242"] = 242, ["\243"] = 243, ["\244"] = 244, ["\245"] = 245, ["\246"] = 246, ["\247"] = 247, ["\248"] = 248, ["\249"] = 249, ["\250"] = 250, ["\251"] = 251, ["\252"] = 252, ["\253"] = 253, ["\254"] = 254, ["\255"] = 255}, + chars = {"\1", "\2", "\3", "\4", "\5", "\6", "\7", "\8", "\9", "\n", "\11", "\12", "\13", "\14", "\15", "\16", "\17", "\18", "\19", "\20", "\21", "\22", "\23", "\24", "\25", "\26", "\27", "\28", "\29", "\30", "\31", " ", "!", "\"", "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\\", "]", "^", "_", "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", "\127", "\128", "\129", "\130", "\131", "\132", "\133", "\134", "\135", "\136", "\137", "\138", "\139", "\140", "\141", "\142", "\143", "\144", "\145", "\146", "\147", "\148", "\149", "\150", "\151", "\152", "\153", "\154", "\155", "\156", "\157", "\158", "\159", "\160", "\161", "\162", "\163", "\164", "\165", "\166", "\167", "\168", "\169", "\170", "\171", "\172", "\173", "\174", "\175", "\176", "\177", "\178", "\179", "\180", "\181", "\182", "\183", "\184", "\185", "\186", "\187", "\188", "\189", "\190", "\191", "\192", "\193", "\194", "\195", "\196", "\197", "\198", "\199", "\200", "\201", "\202", "\203", "\204", "\205", "\206", "\207", "\208", "\209", "\210", "\211", "\212", "\213", "\214", "\215", "\216", "\217", "\218", "\219", "\220", "\221", "\222", "\223", "\224", "\225", "\226", "\227", "\228", "\229", "\230", "\231", "\232", "\233", "\234", "\235", "\236", "\237", "\238", "\239", "\240", "\241", "\242", "\243", "\244", "\245", "\246", "\247", "\248", "\249", "\250", "\251", "\252", "\253", "\254", "\255"; [0] = "\0"}, + saved = {}, savemode = "#*", limit = 1000, +} + +string.charclass = { + complement = {A='a', C='c', D='d', G='g', L='l', P='p', S='s', U='u', W='w', X='x'}, + a = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,1,1,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,1,1,1,0,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,}, + c = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, + d = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, + g = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,}, + l = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,1,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,}, + p = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,1,1,1,1,0,1,0,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,1,1,1,1,0,1,1,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, + s = {0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, + u = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, + w = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,1,1,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,1,1,1,0,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,}, + x = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, +} + +------------------------------------------------------------------------------------------------------------------------------------------------ +--BASIC FUNCTIONS +------------------------------------------------------------------------------------------------------------------------------------------------ + +do --hideerror(hide) + local ERRORMSG = _ERRORMESSAGE + function hideerror(hide) + _ERRORMESSAGE = hide and StopTrigger or %ERRORMSG + end +end + +function table.pack(...) + return arg +end + +function table.unpack(t, i, j) + i = (i or 1) - 1 + j = j or table.getn(t) + local n = j-i + if n <= 0 then + return + elseif n == 1 then + return t[i+1] + elseif n == 2 then + return t[i+1],t[i+2] + elseif n == 3 then + return t[i+1],t[i+2],t[i+3] + elseif n == 4 then + return t[i+1],t[i+2],t[i+3],t[i+4] + elseif n == 5 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5] + elseif n == 6 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6] + elseif n == 7 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7] + elseif n == 8 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8] + elseif n == 9 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9] + elseif n == 10 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10] + elseif n == 11 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11] + elseif n == 12 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12] + elseif n == 13 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13] + elseif n == 14 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14] + elseif n == 15 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15] + elseif n == 16 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16] + elseif n == 17 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17] + elseif n == 18 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18] + elseif n == 19 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19] + elseif n == 20 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20] + elseif n == 21 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21] + elseif n == 22 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22] + elseif n == 23 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23] + elseif n == 24 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24] + elseif n == 25 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25] + elseif n == 26 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26] + elseif n == 27 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27] + elseif n == 28 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28] + elseif n == 29 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29] + elseif n == 30 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30] + elseif n == 31 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31] + elseif n == 32 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32] + elseif n == 33 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33] + elseif n == 34 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34] + elseif n == 35 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35] + elseif n == 36 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36] + elseif n == 37 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37] + elseif n == 38 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38] + elseif n == 39 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39] + elseif n == 40 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40] + elseif n == 41 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41] + elseif n == 42 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42] + elseif n == 43 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43] + elseif n == 44 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44] + elseif n == 45 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45] + elseif n == 46 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46] + elseif n == 47 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47] + elseif n == 48 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48] + elseif n == 49 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49] + elseif n == 50 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50] + elseif n == 51 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51] + elseif n == 52 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52] + elseif n == 53 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53] + elseif n == 54 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54] + elseif n == 55 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55] + elseif n == 56 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56] + elseif n == 57 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57] + elseif n == 58 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58] + elseif n == 59 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59] + elseif n == 60 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60] + elseif n == 61 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61] + elseif n == 62 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62] + elseif n == 63 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63] + elseif n == 64 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64] + elseif n == 65 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65] + elseif n == 66 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66] + elseif n == 67 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67] + elseif n == 68 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68] + elseif n == 69 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69] + elseif n == 70 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70] + elseif n == 71 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71] + elseif n == 72 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72] + elseif n == 73 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73] + elseif n == 74 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74] + elseif n == 75 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75] + elseif n == 76 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76] + elseif n == 77 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77] + elseif n == 78 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78] + elseif n == 79 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79] + elseif n == 80 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80] + elseif n == 81 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81] + elseif n == 82 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82] + elseif n == 83 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83] + elseif n == 84 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84] + elseif n == 85 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85] + elseif n == 86 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86] + elseif n == 87 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87] + elseif n == 88 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87],t[i+88] + elseif n == 89 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87],t[i+88],t[i+89] + elseif n == 90 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87],t[i+88],t[i+89],t[i+90] + elseif n == 91 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87],t[i+88],t[i+89],t[i+90],t[i+91] + elseif n == 92 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87],t[i+88],t[i+89],t[i+90],t[i+91],t[i+92] + elseif n == 93 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87],t[i+88],t[i+89],t[i+90],t[i+91],t[i+92],t[i+93] + elseif n == 94 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87],t[i+88],t[i+89],t[i+90],t[i+91],t[i+92],t[i+93],t[i+94] + elseif n == 95 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87],t[i+88],t[i+89],t[i+90],t[i+91],t[i+92],t[i+93],t[i+94],t[i+95] + elseif n == 96 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87],t[i+88],t[i+89],t[i+90],t[i+91],t[i+92],t[i+93],t[i+94],t[i+95],t[i+96] + elseif n == 97 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87],t[i+88],t[i+89],t[i+90],t[i+91],t[i+92],t[i+93],t[i+94],t[i+95],t[i+96],t[i+97] + elseif n == 98 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87],t[i+88],t[i+89],t[i+90],t[i+91],t[i+92],t[i+93],t[i+94],t[i+95],t[i+96],t[i+97],t[i+98] + elseif n == 99 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87],t[i+88],t[i+89],t[i+90],t[i+91],t[i+92],t[i+93],t[i+94],t[i+95],t[i+96],t[i+97],t[i+98],t[i+99] + elseif n >= 100 then + return t[i+1],t[i+2],t[i+3],t[i+4],t[i+5],t[i+6],t[i+7],t[i+8],t[i+9],t[i+10],t[i+11],t[i+12],t[i+13],t[i+14],t[i+15],t[i+16],t[i+17],t[i+18],t[i+19],t[i+20],t[i+21],t[i+22],t[i+23],t[i+24],t[i+25],t[i+26],t[i+27],t[i+28],t[i+29],t[i+30],t[i+31],t[i+32],t[i+33],t[i+34],t[i+35],t[i+36],t[i+37],t[i+38],t[i+39],t[i+40],t[i+41],t[i+42],t[i+43],t[i+44],t[i+45],t[i+46],t[i+47],t[i+48],t[i+49],t[i+50],t[i+51],t[i+52],t[i+53],t[i+54],t[i+55],t[i+56],t[i+57],t[i+58],t[i+59],t[i+60],t[i+61],t[i+62],t[i+63],t[i+64],t[i+65],t[i+66],t[i+67],t[i+68],t[i+69],t[i+70],t[i+71],t[i+72],t[i+73],t[i+74],t[i+75],t[i+76],t[i+77],t[i+78],t[i+79],t[i+80],t[i+81],t[i+82],t[i+83],t[i+84],t[i+85],t[i+86],t[i+87],t[i+88],t[i+89],t[i+90],t[i+91],t[i+92],t[i+93],t[i+94],t[i+95],t[i+96],t[i+97],t[i+98],t[i+99],t[i+100] + end +end + +function error(msg) + _ERRORMESSAGE(msg or "unknown error") + return -nil +end + +function select(index, ...) + if index == "#" then + return arg.n + else + if index < 0 then + index = arg.n + index + 1 + end + return arg[index] + end +end + +function assert(v, msg) + if not v then + error(msg or 'assertion failed!') + end + return v +end + +function next(t, k) + local find + for _k, _v in t do + if not k or find then + return _k, _v + elseif _k == k then + find = 1 + end + end + return nil +end + +do --pcall(func, ...) + local thread = function(loc, func, arg) + errorHook(function() + %loc[1] = 2 + end) + loc[2] = table.pack(func(table.unpack(arg))) + loc[1] = 1 + end + + function pcall(func, ...) + local loc = {0, nil} -- 0-unknown; 1-success; 2-error + hideerror(1) + startThread(%thread, loc, func, arg) + while loc[1] == 0 do sleep() end + hideerror(nil) + return loc[2] + end +end + +function loadstring(chunk, env) + local func + if env then + func = parse([[ + return function(env) + return function(...) + ]]..chunk..[[ + end + end + ]])()(env) + else + func = parse([[ + return function(...) + ]]..chunk..[[ + end + ]])() + end + return func +end + +do --tonumber(v) + local tonum = function(v) + return - -v + end + + function tonumber(v) + if not v then + return nil + end + local res = pcall(%tonum, v) + return res and res[1] + end +end + +function tostring(e) + if not e then + return 'nil' + end + local t = type(e) + if t == 'string' or t == 'number' then + return e.."" + else + return '['..t..']' + end +end + +do --type(v) + local isnumber = function(v, loc) + if v ~= v.."" then + loc[1] = "number" + end + end + local isstring = function(v, loc) + if v == v.."" then + loc[1] = "string" + end + end + local istable = function(v, loc) + v = v[1] + loc[1] = "table" + end + local isfunction = function(v, loc) + errorHook(v) + loc[1] = "function" + end + local thread = function(v, loc) + startThread(%isnumber, v, loc) + startThread(%isstring, v, loc) + startThread(%istable, v, loc) + startThread(%isfunction, v, loc) + end + local multithread = function(k, v, r) + r[k] = type(v) + end + + function type(v) + if not v then return "nil" end + local loc = {nil} + hideerror(1) + startThread(%thread, v, loc) + while not loc[1] do sleep() end + hideerror(nil) + return loc[1] + end + + function types(t) + local r = {} + hideerror(1) + for k,v in t do + startThread(%multithread, k, v, r) + end + while length(r) < length(t) do sleep() end + hideerror(nil) + return r + end +end + +function table.insert(t, value, pos) + local n = table.getn(t) + pos = pos or n+1 + t.n = n+1; + for i=n,pos,-1 do + t[i+1] = t[i] + end + t[pos] = value +end + +function table.remove(t, pos) + local n = table.getn(t) + if n <= 0 then + return + end + pos = pos or n + local value = t[pos] + for i=pos,n - 1 do + t[i] = t[i + 1] + end + t[n] = nil + t.n = n - 1 + return value +end + +function table.maxn(t) + local a = 0 + for i,v in t do + if v and i and i ~= i.."" and i > a then + a = i + end + end + return a +end + +function table.getn(t) + if t.n then return t.n end + local a = 0 + while t[a+1] do + a = a + 1 + end + return a +end + +function table.length(t) + local a = 0 + for i, v in t do + a = a + 1 + end + return a +end + +function table.contains(t, s) + for i,v in t do + if (v == s) then + return not nil + end + end + return nil +end + +function table.containsamount(t, s) + local a = 0 + for i, v in t do + if (v == s) then + a = a+1 + end + end + return a +end + +function table.inject(t, s) + local i = table.length(t) + t[i] = s +end; + +function table.foreach(t, f) + for i, v in t do + local res = f(i, v) + if res then return res end + end +end + +function table.foreachi(t, f) + for i=1,table.getn(t) do + local res = f(i, t[i]) + if res then return res end + end +end + +function table.concat(t, sep, str, fin) + str = (str or 1) - 1 + fin = fin or table.getn(t) + sep = sep or '' + local n = fin - str + if n <= 0 then return "" end + local r = {} + while n > 1 do + n = math.ceil(n/10) + for i=1,n do + local x = str + 10*(i-1) + local a,b,c,d,e,f,g,h,j,k + local sa,sb,sc,sd,se,sf,sg,sh,sj,sk + for z=1,10 do + a = t[x+z] + if a and x+z <= fin then + sa = sep + else + a, sa = "", "" + end + if (not t[x+z+1] or x+z >= fin) and z~=10 then sa='' end + a,b,c,d,e,f,g,h,j,k = b,c,d,e,f,g,h,j,k,a + sa,sb,sc,sd,se,sf,sg,sh,sj,sk = sb,sc,sd,se,sf,sg,sh,sj,sk,sa + end + r[x+1], r[x+2], r[x+3], r[x+4], r[x+5], r[x+6], r[x+7], r[x+8], r[x+9], r[x+10] = nil + r[i] = a..sa..b..sb..c..sc..d..sd..e..se..f..sf..g..sg..h..sh..j..sk..k + if r[i] == "" and sep ~= "" then r[i] = nil end + end + t = r + str = 0 + end + return (r==t and r[1] or t[str+1]) .. "" +end + +function table.copy(t, r) + r = r or {} + for k,v in t do + r[k] = v + end + return r +end + +do --table.sort(t, before, n) + local env = {} + env.incs = {n=16; 1391376, 463792, 198768, 86961, 33936, 13776, 4592, 1968, 861, 336, 112, 48, 21, 7, 3, 1} + + function env.lt(a, b) + return a < b + end + + function env.bg(a, b) + return a > b + end + + function env.sort(t, n, before) + for a=1,%env.incs.n do + local h = %env.incs[a] + local i = h + 1 + while i <= n do + local v = t[i] + for j = i - h, 1, -h do + local testval = t[j] + if not before(v, testval) then break end + t[i] = testval + i = j + end + t[i] = v + i = i + 1 + end + end + return t + end + + function table.sort(t, before, n) + n = n or table.getn(t) + if not before or before == "<" then before = %env.lt + elseif before == ">" then before = %env.bg + end + %env.sort(t, n, before) + return t + end +end + +------------------------------------------------------------------------------------------------------------------------------------------------ +--MATH +------------------------------------------------------------------------------------------------------------------------------------------------ + +math.pi = 3.1415926535897932384626433832795 +math.huge = 1/0 +math.nan = 0/0 + +function math.abs(n) + if n < 0 then + return -n + else + return n + end +end + +function math.min(...) + local min = arg[1] + for i=2,arg.n do + if arg[i] < min then + min = arg[i] + end + end + return min +end + +function math.max(...) + local max = arg[1] + for i=2,arg.n do + if arg[i] > max then + max = arg[i] + end + end + return max +end + +function math.fmod(x, y) + if y == 0 then + return 0/0 + end + local z = mod(x, y) + return z +end + +function math.floor(n) + local rem = mod(n, 1) + if rem > 0 then + return n - rem + elseif n < 0 then + return n - rem - 1 + end + return n +end + +function math.ceil(n) + local rem = mod(n, 1) + if rem > 0 then + return n - rem + 1 + elseif n < 0 then + return n - rem + end + return n +end + +function math.round(n) + return n>=0 and math.floor(n+0.5) or math.ceil(n-0.5) +end + +function math.frac(n) + if n < 0 then + return n-(math.ceil(n)) + else + return n-(math.floor(n)) + end; +end; + +function math.modf(n) + local int, frc = n - mod(n, 1), mod(n, 1) + return int, frc +end + +function math.pow(n, power) + if n == 0 and power <= 0 then return 0/0 end + local m = 1 + for i=1,math.abs(power) do + m = m * n + end + if power < 0 then + m = 1/m + end + return m +end + +function math.exp(n) + local e = 2.7182818284590452353602874713526 + local a = math.pow(e,n) + return a +end + +function math.rad(deg) + return deg * math.pi / 180 +end + +function math.deg(rad) + return rad / math.pi * 180 +end + +do --math.random(n, m) + local env = {seed = 0} + local a, c, l = 221, 7759, 65536 + + function math.random(n, m) + %env.seed = math.fmod(%env.seed * %a + %c, %l) + local r = %env.seed / %l + if n then + if not m then + n, m = 1, n + end + return n + math.floor(r * (m - n + 1)) + else + return r + end + end + + function math.randomseed(seed) + %env.seed = math.fmod(seed, %l) + end +end + +function math.randomexclude(n,m,e) + local v = 0 + repeat v = math.random(n,m); until v ~= e + return v +end + +function math.root(a, n) + if n == 0 then return 0/0 end + if a == 0 then return 0 end + if a < 0 then + return math.fmod(n, 2) == 1 and -math.root(-a, n) or 0/0 + end + local isnnegative = n < 0 + n = math.abs(n) + local x0, x1 = 10, 10 + for i=1,100 do + if math.abs(math.pow(x1, n) - a) < 1e-5 then break end + x0, x1 = x1, ((n-1) * x0 + a / math.pow(x0, n-1)) / n + end + if isnnegative then x1 = 1/x1 end + return x1 +end + +function math.fact(n) + if n == 0 then return 1 end + for i=n-1,2,-1 do + n = n * i + end + return n +end + +function math.cos(rad, prec) + prec = prec or 9 + local cos, sign = 1, -1 + for i=1, prec do + cos = cos + sign*math.pow(rad, i*2)/math.fact(i*2) + sign = -sign + end + return cos +end + +function math.sin(rad, prec) + prec = prec or 9 + local sin, sign = rad, -1 + for i=1, prec do + sin = sin + sign*math.pow(rad, i*2+1)/math.fact(i*2+1) + sign = -sign + end + return sin +end + +function math.tan(rad, prec) + return math.sin(rad, prec) / math.cos(rad, prec) +end + +------------------------------------------------------------------------------------------------------------------------------------------------ +--STRING MANIPULATION +------------------------------------------------------------------------------------------------------------------------------------------------ + +function string.clearbuf() + string.saved = {} +end + +function string.spread(s, mode, limit) + mode, limit = mode or string.mode, limit or string.limit + local t, st, s = {n = 0}, '', s..'' + if (mode == "#*" or mode == "#+") and string.saved[s] then + return string.saved[s] + end + if s == '' then + return t + end + while t.n < limit do + local last = "\255" + local lastsymbol = "" + local shift = 0 + local base = 256 + for i=1,8 do + base = base / 2 + local sym = string.chars[shift + base] + local w = st..sym + if w < s then + shift = shift + base + last = w + lastsymbol = sym + elseif w == s then + t.n = t.n + 1 + t[t.n] = sym + if mode == "+" or mode == "#+" then + string.saved[s] = t + end + return t + end + end + t.n = t.n + 1 + t[t.n] = lastsymbol + st = last + end + if mode == "+" or mode == "#+" then + string.saved[s] = t + end + return t +end + +function string.len(s) + return string.spread(s).n +end + +function string.byte(s, i) + i = i or 1 + local st = string.spread(s) + return string.bytes[st[i]] +end + +function string.char(arg) + local res = {} + local len = table.getn(arg) + for i=1,len do + res[i] = string.chars[arg[i]] or "" + end + res = table.concat(res, "", 1, len) + return res +end + +function string.parsepattern(pt) + local t,n={},0 + local poffset = 1 + local CLASSTYPE, CLASS, MIN, MAX, STEP = 1,2,3,4,4 + while 1 do + local psym = pt[poffset] + if not psym then + break + end + local psymclass = pt[poffset+1] + local classtype, class -- "c"(single character) "%"(class) "^"(class complement) ; 'character'/{...} + if psym == '%' and string.charclass[psymclass] then + classtype = "%" + class = string.charclass[psymclass] + elseif psym == '%' and string.charclass[string.charclass.complement[psymclass]] then + classtype = "^" + class = string.charclass[string.charclass.complement[psymclass]] + elseif psym == "[" then + class = {} + local anchor = 0 + if psymclass == "^" then + classtype = "^" + anchor = 1 + else + classtype = "%" + end + while 1 do + anchor = anchor+1 + local sym = pt[poffset+anchor] + if sym == "%" then + anchor = anchor+1 + local subclass = pt[poffset+anchor] + if string.charclass[subclass] then + for i=1,256 do + if class[i] ~= 1 then + class[i] = string.charclass[subclass][i] + end + end + elseif string.charclass[string.charclass.complement[subclass]] then + local subclass = string.charclass.complement[subclass] + for i=1,256 do + if class[i] ~= 1 then + class[i] = 1 - string.charclass[subclass][i] + end + end + else + class[string.bytes[subclass]+1] = 1 + end + elseif sym == "]" then + break + elseif pt[poffset+anchor+1] == '-' then + anchor = anchor+2 + for byte=string.bytes[pt[poffset+anchor-2]]+1,string.bytes[pt[poffset+anchor]]+1 do + class[byte] = 1 + end + else + class[string.bytes[pt[poffset+anchor]]+1] = 1 + end + end + poffset = poffset + anchor + else + classtype = "c" + class = psym~="%" and psym or psymclass + end + if psym == "%" then -- continue to next + poffset = poffset + 3 + else + poffset = poffset + 2 + end + local mul = pt[poffset-1] + local min, max = 1, 1 + if mul == "?" then + min, max = 0, 1 + elseif mul == "*" then + min, max = 0, 1/0 + elseif mul == "+" then + min, max = 1, 1/0 + else + poffset = poffset - 1 + end + n = n + 1 + t[STEP*(n-1) + CLASSTYPE] = classtype + t[STEP*(n-1) + CLASS] = class + t[STEP*(n-1) + MIN] = min + t[STEP*(n-1) + MAX] = max + end + return t, n +end + +function string.gsub(s, pattern, repl, n) + local st = string.spread(s) + local pt = string.spread(pattern) + local i = 1 + local res = {n=0} + n = n or st.n+1 + local m = n + if pattern == '' then + for i=1,m do + local rp + if n > 0 then + if repl.f then + rp = repl.f(pattern, i, i-1) + end + if repl.t and not rp then + rp = repl.t[i] + end + if repl.s and not rp then + rp = repl.s + end + end + table.insert(res, rp or '') + table.insert(res, st[i] or '') + if n ~= 0 then n = n - 1 end + end + res = table.concat(res) + return res, m - n + end + local pp, ppn = string.parsepattern(pt) + repeat + local match = "" + local matchlen = 0 + local soffset = i + for k=1,ppn do + local classtype, class, min, max = pp[4*(k-1)+1], pp[4*(k-1)+2], pp[4*(k-1)+3], pp[4*(k-1)+4] + local classmatch = "" + local z = 0 + while 1 do + local sym = st[soffset+z] + if not sym or z == max then + break + end + if (classtype == "c" and sym == class) or (classtype == "%" and class[string.bytes[sym]+1] == 1) or (classtype == "^" and class[string.bytes[sym]+1] ~= 1) then + classmatch = classmatch..sym + z = z + 1 + else + break + end + end + soffset = soffset + 1 + if z < min then -- pattern failed + match = nil + break + else + match = match..classmatch + matchlen = matchlen + z + soffset = soffset + z - 1 + end + end + if not match then + table.insert(res, st[i]) + i = i + 1 + else + local rp + if repl.f then + rp = repl.f(match, i, i+matchlen-1) + end + if repl.t and not rp then + rp = repl.t[match] + end + if repl.s and not rp then + rp = repl.s + end + table.insert(res, rp or match) + if rp then + n = n - 1 + end + if matchlen == 0 then + i = i + 1 + else + i = i + matchlen + end + end + until i > st.n or n <= 0 + if n <= 0 then + for k=i,st.n do + table.insert(res, st[k]) + end + end + res = table.concat(res) + return res, m - n +end + +function string.gmatch(s, pattern) + local t = {} + local repl = {n=0} + repl.f = function(match) + %repl.n = %repl.n + 1 + %t[%repl.n] = match + end + string.gsub(s, pattern, repl) + return t +end + +function string.sub(s, i, j) + local st = string.spread(s) + i = i or 1 + j = j or -1 + if i < 0 then i = st.n + i + 1 end + if j < 0 then j = st.n + j + 1 end + local res = table.concat(st, "", i, j) + return res +end + +function string.match(s, pattern, i) + local st = string.spread(s) + local pt = string.spread(pattern) + i = i or 1 + if i < 0 then i = st.n + i + 1 end + if pattern == '' then + if i > st.n then i = st.n + 1 end + return '', i, i-1 + end + local pp, ppn = string.parsepattern(pt) + repeat + local match = "" + local matchlen = 0 + local soffset = i + for k=1,ppn do + local classtype, class, min, max = pp[4*(k-1)+1], pp[4*(k-1)+2], pp[4*(k-1)+3], pp[4*(k-1)+4] + local classmatch = "" + local z = 0 + while 1 do + local sym = st[soffset+z] + if not sym or z == max then + break + end + if (classtype == "c" and sym == class) or (classtype == "%" and class[string.bytes[sym]+1] == 1) or (classtype == "^" and class[string.bytes[sym]+1] ~= 1) then + classmatch = classmatch..sym + z = z + 1 + else + break + end + end + soffset = soffset + 1 + if z < min then -- pattern failed + match = nil + break + else + match = match..classmatch + matchlen = matchlen + z + soffset = soffset + z - 1 + end + end + if not match then + i = i + 1 + else + return match, i, i+matchlen-1 + end + until i > st.n + return nil +end + +------------------------------------------------------------------------------------------------------------------------------------------------ +--COMPATIBILITY +------------------------------------------------------------------------------------------------------------------------------------------------ + +abs = math.abs +length = table.length +contains = table.contains +math.sqrt = sqrt +math.mod = math.fmod +H55_Round = math.round +H55_RoundUp = math.ceil +H55_RoundDown = math.floor +H55_Insert = table.inject +H55_ContainsAmount = table.containsamount + +-- ceil = math.ceil +-- floor = math.floor +-- frac = math.frac +-- intg = math.round +-- round = math.round + +------------------------------------------------------------------------------------------------------------------------------------------------ \ No newline at end of file diff --git a/scripts/H55-Settings.lua b/scripts/H55-Settings.lua new file mode 100644 index 00000000..82617dfa --- /dev/null +++ b/scripts/H55-Settings.lua @@ -0,0 +1,93 @@ +------------------------------------------------------------------------------------------------------------------------------------------------ +-- MIGHT & MAGIC: HEROES 5.5 - PLAYER SETTINGS +------------------------------------------------------------------------------------------------------------------------------------------------ + +--Author: Magnomagus + +------------------------------------------------------------------------------------------------------------------------------------------------ +-- Note: All settings in this document are script variables always follow guidelines behind "--", otherwise the game can run in critical bugs. +------------------------------------------------------------------------------------------------------------------------------------------------ + +H55_TownGateEnabled = 1; --Activates Town Gate, allows teleportation of heroes to any town (0 = deactivated). + +H55_TownConvEnabled = 1; --Activates Town and Dwelling Conversion (0 = deactivated) +H55_AmountExtraTownsDwellings = 1; --Allows to increase amount of allowed conversions for dwellings and towns (1 = balanced like RC3, zero can also be used). + +--Town Conversion, Governance and Mine Control are always disabled in the campaign and scenario maps, since those maps were not designed for this mechanism and would have bugs/balance issues. + +H55_GovernanceEnabled = 1; --Allows the creation of governor heroes (0 = deactivated). +H55_GovernorExpCoef = 1; --Multiplier for experience gain of governors (do not set to zero) Example: 1.2 = 20% more, 0.8 = 20% less. + +H55_MineControl = 0; --Allows players to easily guard mines with self-sustaining armies (0 = deactivated). + +H55_DimensionDoors = 1; --enables dimension door objects to visit towns remotely on ARMG maps (0 = deactvivated) +H55_DimensionDoorsOnThisMap = 0; --DO NOT activate this here, copy/paste this variable on a personal map you want to have dimension doors instead of magi huts. + +H55_IgnoreExpAdjustment = 0; --If this is set to 1, the game will not adjust the experience gain to the size of the neutral stacks (so higher difficulty will not be as hard). + +H55_NoMentoring = 0; --If this is set to 1, Memory Mentoring is not allowed, all Memory Mentors on the adventure map will offer a choice between +2 Spellpower or Knowledge. +H55_NoHillFortsOnARMG = 0; --If this is set to 1, Hill Fort functionality is not allowed on ARMG maps, all Hill Forts on the adventure map will offer a choice between +1 Attack or Defense. + +-- WARNING!!! Use the Build town functions only for playing ARMG maps and multiplayer maps, these functions will not build Shipyards, Tear of Asha and various special buildings. + +H55_BuildNeutralTowns = 0; --Use this if you want neutral towns on the map to be of higher level than 1, Only accepts numbers 0,1,2,3,4,5; each number builds up the town ~20% more, +H55_BuildPlayerTowns = 0; --Use this if you want player towns on the map to be of higher level than 1, Only accepts numbers 0,1,2,3,4,5; each number builds up the town ~20% more. +H55_CompetitiveARMGTowns = 1; --Default ARMG maps have mage guild lvl 1 prebuilt to improve gameplay and balance, set to 0 to switch off. This setting only works as long as the other town build variables are set to 0. + +H55_NoAutoTeamHumans = 0; --Set to 1 to prevent human players from teaming up automatically in Nightmare or Savage mode, AI players still team up. + +H55_AICheatMode = 4; --Makes AI get more or less creatures to make up for quick-combat losses the human player isn't making, Only accepts numbers 0,1,2,3,4,5,6; + +-- GUIDELINES for AICheatMode setting: +-- 0 = Cheating is ALWAYS off, lowers the default difficulties but casual game will still be easier because AI starting resources are lower. +-- 1 = 40%, 2 = 60%, 3 = 80%. +-- 4 = 100% Default, same difficulty as all previous releases. +-- 5 = 120%, 6 = 140%. +-- WARNING!!! The AICheatMode setting does not affect 'casual game' mode, in this mode Cheating is always off! + +H55_LowResGame = 0; --Set this to 1 to substract the following resource pattern: (10,10,5,5,5,5,10K) from every player at the start of the game. Don't use for Campaign or scenarios. + +--If this is enabled hard and heroic will be played with Impossible starting resources and Impossible will start completely bankrupt. + +H55_GenerateMixedStacks = 1; --If this is set to 0, mixed neutral stacks will not be generated (by script) on any maps ever. +H55_MixStacksThreshold = 200; --If there are more monsters on the map than this customizable number, mixed stack generation will not happen to prevent heavy lag (use mapmixer instead) +H55_AskForMixedStacks = 0; --If this is set to one the first human player will be asked on every multiplayer map if mixed neutrals should be generated and threshold is ignored. +H55_ForceMixedStacks = 0; --copy/paste this variable to a mapscript to always have mixed neutrals generated on that map. If this is set to 1 here, generation will be forced on all multiplayer maps. + +H55_BanksDifficulty = 1; --Multiplier for neutral stack size in Battle Sites (do not set to zero) Example: 1.2 = 20% more, 0.8 = 20% less. + +-- WARNING!!! modifying the H55_NeutralStackSize parameter can cause the game to lag heavily when the game starts, +-- time depends on the amount of stacks that need to be processed. The job is done when you can open your townscreen! + +H55_NeutralStackSize = 1; --Multiplier for neutral stack size standing on the adventure map (do not set to zero) Example: 1.2 = 20% more, 0.8 = 20% less. + +-- Since RC15b1 RMG monsters have been rebalanced and this feature is less important, Strong = between old strong and very strong (which used to be huge gap) also impossible monsters were made more balanced. + +H55_PrisonersAdjustToHeroRace = 0; --Set to 1 to make prisoner rewards adjust to the race of the hero (as in RC15 beta 5 and earlier) instead of the race of the player. + +H55_ManaObservatories = 1; --By default Redwood Observatories also replenish mana on ARMG maps, set to 0 to switch it off. + +H55_NoArtifactMerchantsInTowns = 0; --Set this to 1 to make artifact merchants in towns completely forbidden. + +H55_ForcedObelisk = 0; --Allows forcing the reward for Obelisk quests on ARMG maps, only accepts numbers 0,1,2,3,4,5,6,7,8,9 +H55_ForcedShantiri = 0; --Allows forcing the reward for Shantiri quests on ARMG maps, only accepts numbers 0,1,2,3,4,5,6,7,8,9 + +-- You will only get the forced reward if there are enough objects to satisfy the ultimate item requirement. +-- Setting 0 = random, 1 = sword, 2 = armor, 3 = shield, 4 = staff, 5 = helmet, 6 = wings, 7 = book, 8 = ring, 9 = tear of asha. + +H55_NegativeArtifacts = 1; --Set to 0 to disable secret negative artifacts from HOMM2 that troll the player. +H55_MoonDiscQuest = 0; --Set to 1 to activate moondisc combo-artifact quest on all maps, NOT RECOMMENDED, copy/paste this setting only to maps that are suitable. +H55_MoonDiscOnARMGMaps = 1; --Set to 0 to disable moondisc combo-artifact quests on ARMG maps. + +H55_RPGPotions = 1; --Set to 1 to enable potions on multiplayer and rmg maps, by default potions can be bought from trading posts in Scenarios and Campaign maps. + +--If set to 1 potions will also be for sale at trading posts on multiplayer+ARMG maps, costs for movement potions are significantly higher on multiplayer+ARMG maps, resurrection potions cannot be bought. + +H55_Duel_WeeksGrowth = 8; --Settings for ARMG Duel Template, this one determines army size. +H55_Duel_HeroLevel = 25; --Levels given by witch hut, Max level = 50! +H55_Duel_Relics = 4; --can be set to zero, amount of random artifacts given +H55_Duel_Majors = 8; --can be set to zero, artifacts that cannot be used in duel are removed from the pool +H55_Duel_Minors = 4; --can be set to zero, if very few artifacts are given and H55_Duel_BankDifficulty is low a run for the battle sites will happen. +H55_Duel_BankDifficulty = 6; --By default Battle sites on duel map are 3x stronger as H55_Duel_WeeksGrowth, making them much too dangerous. + +--------------------------------------------------------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/scripts/H55-Skills.lua b/scripts/H55-Skills.lua new file mode 100644 index 00000000..fa2be071 --- /dev/null +++ b/scripts/H55-Skills.lua @@ -0,0 +1,114 @@ +SKILL_STAMINA = SKILL_EXPERT_TRAINER +SKILL_RUSH = SKILL_WARCRY_LEARNING +SKILL_FAITH = SKILL_SHATTER_DARK_MAGIC + +H55_Skills = { + SKILL_OFFENCE, + SKILL_DEFENCE, + SKILL_LUCK, + SKILL_EXPERT_TRAINER, + SKILL_WARCRY_LEARNING, + SKILL_LOGISTICS, + SKILL_SHATTER_DARK_MAGIC, + SKILL_WAR_MACHINES, + SKILL_LEARNING, + SKILL_TRAINING, + SKILL_LEADERSHIP, + SKILL_SORCERY, + SKILL_INVOCATION, + SKILL_SUMMONING_MAGIC, + SKILL_DESTRUCTIVE_MAGIC, + SKILL_DARK_MAGIC, + SKILL_LIGHT_MAGIC, + SKILL_GATING, + SKILL_NECROMANCY, + SKILL_AVENGER, + SKILL_ARTIFICIER, + SKILL_RUNELORE, + SKILL_DEMONIC_RAGE, + SKILL_VOICE, +} + +H55_Skillnames = { + [SKILL_OFFENCE] = "Offence", + [SKILL_DEFENCE] = "Defence", + [SKILL_LUCK] = "Luck", + [SKILL_EXPERT_TRAINER] = "Expert", + [SKILL_WARCRY_LEARNING] = "Warcry", + [SKILL_LOGISTICS] = "Logistics", + [SKILL_SHATTER_DARK_MAGIC] = "Shatter", + [SKILL_WAR_MACHINES] = "War", + [SKILL_LEARNING] = "Learning", + [SKILL_TRAINING] = "Training", + [SKILL_LEADERSHIP] = "Leadership", + [SKILL_SORCERY] = "Sorcery", + [SKILL_INVOCATION] = "Invocation", + [SKILL_SUMMONING_MAGIC] = "Summoning", + [SKILL_DESTRUCTIVE_MAGIC] = "Destructive", + [SKILL_DARK_MAGIC] = "Dark", + [SKILL_LIGHT_MAGIC] = "Light", + [SKILL_GATING] = "Gating", + [SKILL_NECROMANCY] = "Necromancy", + [SKILL_AVENGER] = "Avenger", + [SKILL_ARTIFICIER] = "Artificier", + [SKILL_RUNELORE] = "Runelore", + [SKILL_DEMONIC_RAGE] = "Demonic", + [SKILL_VOICE] = "Voice", +} + +H55_Perks = { + [SKILL_OFFENCE] = { SKILL_FAST_AND_FURIOUS, SKILL_FRENZY, SKILL_TACTICS, SKILL_CHILLING_STEEL, SKILL_OFFENSIVE_FORMATION, SKILL_ARCHERY }, + [SKILL_DEFENCE] = { SKILL_DEFENSIVE_FORMATION, SKILL_HOLD_GROUND, SKILL_LAST_STAND, SKILL_EVASION, SKILL_PROTECTION, SKILL_SPELLPROOF_BONES }, + [SKILL_LUCK] = { SKILL_ELVEN_LUCK, SKILL_LUCKY_STRIKE, SKILL_DEAD_LUCK, SKILL_DARK_REVELATION, SKILL_CHAOTIC_SPELLS, SKILL_LUCKY_SPELLS }, + [SKILL_EXPERT_TRAINER] = { SKILL_TOUGHNESS, SKILL_PREPARATION, SKILL_RESISTANCE, SKILL_DWARVEN_LUCK, SKILL_POWER_OF_STONE, SKILL_BODYBUILDING }, + [SKILL_WARCRY_LEARNING] = { SKILL_POWER_OF_HASTE, SKILL_TELEPORT_ASSAULT, SKILL_SNATCH, SKILL_DEATH_TREAD, SKILL_WILDFIRE, SKILL_RUNIC_MACHINES }, + [SKILL_LOGISTICS] = { SKILL_DISGUISE_AND_RECKON, SKILL_REMOTE_CONTROL, SKILL_PATHFINDING, SKILL_NAVIGATION, SKILL_GRAIL_VISION, SKILL_ESTATES }, + [SKILL_SHATTER_DARK_MAGIC] = { SKILL_DETAIN_SUMMONING, SKILL_BARBARIAN_FOG_VEIL, SKILL_DETAIN_DESTRUCTIVE, SKILL_BARBARIAN_ANCIENT_SMITHY, SKILL_DETAIN_LIGHT, SKILL_BARBARIAN_STORM_WIND, SKILL_DETAIN_DARK, SKILL_BARBARIAN_SOIL_BURN }, + [SKILL_WAR_MACHINES] = { SKILL_BALLISTA, SKILL_TRIPLE_BALLISTA, SKILL_FIRST_AID, SKILL_LAST_AID, SKILL_CATAPULT, SKILL_TRIPLE_CATAPULT }, + [SKILL_LEARNING] = { SKILL_SCOUTING, SKILL_QUICKNESS_OF_MIND, SKILL_SCHOLAR, SKILL_MENTORING, SKILL_INTELLIGENCE, SKILL_COUNTERSPELL }, + [SKILL_TRAINING] = { SKILL_HOLY_CHARGE, SKILL_CRITICAL_STRIKE, SKILL_STUNNING_BLOW, SKILL_POWERFULL_BLOW, SKILL_DEMONIC_STRIKE, SKILL_BARBARIAN_WEAKENING_STRIKE }, + [SKILL_LEADERSHIP] = { SKILL_RECRUITMENT, SKILL_DIPLOMACY, SKILL_ENCOURAGE, SKILL_PRAYER, SKILL_RAISE_ARCHERS, SKILL_ROAD_HOME }, + [SKILL_SORCERY] = { SKILL_MAGIC_BOND, SKILL_ELITE_CASTERS, SKILL_WISDOM, SKILL_EAGLE_EYE, SKILL_ARCANE_TRAINING, SKILL_PAYBACK }, + [SKILL_INVOCATION] = { SKILL_DARK_RITUAL, SKILL_DISTRACT, SKILL_EMPOWERED_SPELLS, SKILL_SPIRIT_LINK, SKILL_CONSUME_CORPSE, SKILL_EXPLODING_CORPSES }, + [SKILL_SUMMONING_MAGIC] = { SKILL_ELEMENTAL_BALANCE, SKILL_FOG_VEIL, SKILL_SUN_FIRE, SKILL_FIRE_AFFINITY, SKILL_MASTER_OF_QUAKES, SKILL_SHAKE_GROUND }, + [SKILL_DESTRUCTIVE_MAGIC] = { SKILL_DEADLY_COLD, SKILL_MASTER_OF_ICE, SKILL_MASTER_OF_FIRE, SKILL_SET_AFIRE, SKILL_ANCIENT_SMITHY, SKILL_MASTER_OF_LIGHTNINGS }, + [SKILL_DARK_MAGIC] = { SKILL_MASTER_OF_SICKNESS, SKILL_PARIAH, SKILL_WEAKENING_STRIKE, SKILL_MASTER_OF_MIND, SKILL_MASTER_OF_CURSES, SKILL_SOIL_BURN }, + [SKILL_LIGHT_MAGIC] = { SKILL_MASTER_OF_ABJURATION, SKILL_ETERNAL_LIGHT, SKILL_TWILIGHT, SKILL_MASTER_OF_WRATH, SKILL_MASTER_OF_BLESSING, SKILL_GUARDIAN_ANGEL }, + [SKILL_GATING] = { SKILL_SPOILS_OF_WAR, SKILL_PATH_OF_WAR, SKILL_GATING_MASTERY, SKILL_CRITICAL_GATING, SKILL_DEMONIC_FIRE, SKILL_QUICK_GATING }, + [SKILL_NECROMANCY] = { SKILL_DEATH_SCREAM, SKILL_SHRUG_DARKNESS, SKILL_NO_REST_FOR_THE_WICKED, SKILL_LORD_OF_UNDEAD, SKILL_CHILLING_BONES, SKILL_HERALD_OF_DEATH }, + [SKILL_AVENGER] = { SKILL_FOREST_RAGE, SKILL_FOREST_GUARD_EMBLEM, SKILL_IMBUE_ARROW, SKILL_IMBUE_BALLISTA, SKILL_SNIPE_DEAD, SKILL_MULTISHOT }, + [SKILL_ARTIFICIER] = { SKILL_ACADEMY_AWARD, SKILL_SUPRESS_LIGHT, SKILL_MELT_ARTIFACT, SKILL_MAGIC_MIRROR, SKILL_ARTIFICIAL_GLORY, SKILL_MARCH_OF_THE_MACHINES }, + [SKILL_RUNELORE] = { SKILL_DEMONIC_FLAME, SKILL_RUNIC_ATTUNEMENT, SKILL_FINE_RUNE, SKILL_TAP_RUNES, SKILL_FORTUNATE_ADVENTURER, SKILL_STRONG_RUNE }, + [SKILL_DEMONIC_RAGE] = { SKILL_POWER_OF_BLOOD, SKILL_MIGHT_OVER_MAGIC, SKILL_BATTLE_ELATION, SKILL_MEMORY_OF_OUR_BLOOD, SKILL_GOBLIN_SUPPORT, SKILL_DEFEND_US_ALL }, + [SKILL_VOICE] = { SKILL_MIGHTY_VOICE, SKILL_VOICE_OF_RAGE, SKILL_BARBARIAN_MYSTICISM, SKILL_BARBARIAN_DISTRACT, SKILL_VOICE_TRAINING, SKILL_BARBARIAN_ELITE_CASTERS }, +} + +H55_Ultimates = { + [SKILL_OFFENCE] = { ["skill"] = SKILL_WEAKEN_DESTRUCTIVE, ["player"] = {}, ["hero"] = {} }, + [SKILL_DEFENCE] = { ["skill"] = SKILL_SHATTER_SUMMONING_MAGIC, ["player"] = {}, ["hero"] = {} }, + [SKILL_LUCK] = { ["skill"] = SKILL_ABSOLUTE_LUCK, ["player"] = {}, ["hero"] = {} }, + [SKILL_EXPERT_TRAINER] = { ["skill"] = SKILL_CORRUPT_DARK, ["player"] = {}, ["hero"] = {} }, + [SKILL_WARCRY_LEARNING] = { ["skill"] = SKILL_EMPATHY, ["player"] = {}, ["hero"] = {} }, + [SKILL_LOGISTICS] = { ["skill"] = SKILL_CORRUPT_DESTRUCTIVE, ["player"] = {}, ["hero"] = {} }, + [SKILL_SHATTER_DARK_MAGIC] = { ["skill"] = SKILL_ABSOLUTE_PROTECTION, ["player"] = {}, ["hero"] = {} }, + [SKILL_WAR_MACHINES] = { ["skill"] = SKILL_WEAKEN_SUMMONING, ["player"] = {}, ["hero"] = {} }, + [SKILL_LEARNING] = { ["skill"] = SKILL_ABSOLUTE_WIZARDY, ["player"] = {}, ["hero"] = {} }, + [SKILL_TRAINING] = { ["skill"] = SKILL_ABSOLUTE_CHARGE, ["player"] = {}, ["hero"] = {} }, + [SKILL_LEADERSHIP] = { ["skill"] = SKILL_RETRIBUTION, ["player"] = {}, ["hero"] = {} }, + [SKILL_SORCERY] = { ["skill"] = SKILL_MYSTICISM, ["player"] = {}, ["hero"] = {} }, + [SKILL_INVOCATION] = { ["skill"] = SKILL_WEAKEN_DARK, ["player"] = {}, ["hero"] = {} }, + [SKILL_SUMMONING_MAGIC] = { ["skill"] = SKILL_MASTER_OF_CREATURES, ["player"] = {}, ["hero"] = {} }, + [SKILL_DESTRUCTIVE_MAGIC] = { ["skill"] = SKILL_SHATTER_DESTRUCTIVE_MAGIC, ["player"] = {}, ["hero"] = {} }, + [SKILL_DARK_MAGIC] = { ["skill"] = SKILL_SHATTER_LIGHT_MAGIC, ["player"] = {}, ["hero"] = {} }, + [SKILL_LIGHT_MAGIC] = { ["skill"] = SKILL_RUNIC_ARMOR, ["player"] = {}, ["hero"] = {} }, + [SKILL_GATING] = { ["skill"] = SKILL_WEAKEN_LIGHT, ["player"] = {}, ["hero"] = {} }, + [SKILL_NECROMANCY] = { ["skill"] = SKILL_WEAKEN_LIGHT, ["player"] = {}, ["hero"] = {} }, + [SKILL_AVENGER] = { ["skill"] = SKILL_WEAKEN_LIGHT, ["player"] = {}, ["hero"] = {} }, + [SKILL_ARTIFICIER] = { ["skill"] = SKILL_WEAKEN_LIGHT, ["player"] = {}, ["hero"] = {} }, + [SKILL_RUNELORE] = { ["skill"] = SKILL_WEAKEN_LIGHT, ["player"] = {}, ["hero"] = {} }, + [SKILL_VOICE] = { ["skill"] = SKILL_WEAKEN_DARK, ["player"] = {}, ["hero"] = {} }, + [SKILL_DEMONIC_RAGE] = { ["skill"] = SKILL_ABSOLUTE_RAGE, ["player"] = {}, ["hero"] = {} }, + [SKILL_ABSOLUTE_GATING] = { ["skill"] = SKILL_ABSOLUTE_GATING, ["player"] = {}, ["hero"] = {} }, + [SKILL_ABSOLUTE_FEAR] = { ["skill"] = SKILL_ABSOLUTE_FEAR, ["player"] = {}, ["hero"] = {} }, +} + diff --git a/scripts/H55-Tables.lua b/scripts/H55-Tables.lua new file mode 100644 index 00000000..917a328c --- /dev/null +++ b/scripts/H55-Tables.lua @@ -0,0 +1,2203 @@ +------------------------------------------------------------------------------------------------------------------------------------------------ +--MIGHT & MAGIC: HEROES 5.5 - TABLES +------------------------------------------------------------------------------------------------------------------------------------------------ + +--Author: Magnomagus + +------------------------------------------------------------------------------------------------------------------------------------------------ +--TABLES +------------------------------------------------------------------------------------------------------------------------------------------------ + +--Classes + +H55_Renegades = {"Mardigo","RedHeavenHero02","RedHeavenHero05","RedHeavenHero03","RedHeavenHero06" ,"Alaric","RedHeavenHero01","Laszlo"}; +H55_Knights = {"Duncan","Sarge","Isabell","Orrin","Nicolai","GodricMP","Maeve","Nathaniel","Axel","Christian" ,"Brem","Ving","Godric","Freyda","Ornella","GhostFSLord","Giar","Glen","Isabell_A1","Saint Isabell"}; +H55_Heretics = {"Jeddite","Markal","AlaricMP","RedHeavenHero04","OrlandoMP" ,"Orlando"}; +H55_Rangers = {"Heam","Gillion","Linaas","Ossir","Melodia","Mephala"}; +H55_Avengers = {"Kyrre","Nadaur","Arniel","Ildar","Jenova","Metlirn"}; +H55_Druids = {"Vaniel","Elleshar","Vinrael","Itil","Diraya","Gem" ,"Tieru"}; +H55_Demonlords = {"Marder","Malustar","Harkenraz","Grok","Calid","Jazaz" ,"Sheltem","Gamor","Guarg","Erasial","Kha-Beleth","Veyer","DMessiah"}; +H55_Gatekeepers = {"Deleb","Ash","Nymus","Oddrema","Nelech","Calh" ,"Agrael"}; +H55_Sorcerers = {"Sovereign","Efion","Calid2","Zydar","AgraelMP","Biara"}; +H55_DeathKnights = {"Gles","Pelt","Tamika","OrnellaNecro","Straker","Xerxon"}; +H55_Necromancers = {"Archilus","Nimbus","Aislinn","ArantirMP","Aberrar","Effig" ,"Arantir","Berein","Nikolay","Giovanni"}; +H55_Nethermages = {"Thant","Vidomina","Nemor","Muscip","GiovanniMP","Sandro"}; +H55_Enchanters = {"Isher","Rissa","Minasli","Davius","Josephine","Havez"}; +H55_Conjurers = {"Zehir","Timerkhan","Nur","Cyrus","Emilia","Astral"}; +H55_Wizards = {"Gurvilin","Razzak","Maahir","Faiz","Sufi","Tan"}; +H55_Overlords = {"Agbeth","Ranleth","ThralsaiMP","Urunir","Menel","Ferigl"}; +H55_Tricksters = {"Sephinroth","Eruina","Ohtarig","Sylsai","Darkstorm","AlmegirMP" ,"Thralsai","Almegir"}; +H55_Warlocks = {"Raelag","Kastore","Kelodin","ShadwynMP","Dalom","Inagost" ,"Shadwyn","Raelag_A1","Segref","Ohtar","Eruina_A1"}; +H55_Engineers = {"Wulfstan","Rolf","Maximus","Tazar","Ufretin","Skeggy"}; +H55_Runemages = {"Hangvul","KingTolghar","Ingvar","Bersy","Ottar","Una"}; +H55_Flamekeepers = {"Vilma","Bart","Hangvul2","Brand","Egil","Vegeyr"}; +H55_Chieftains = {"Hero1","Hero4","Hero5","Hero6","Hero8","Hero9","Gottai","GottaiMP","Crag","Azar","Kraal","Kunyak","Matewa","Quroq"}; +H55_Shamans = {"KujinMP","Shiva","Hero7","Mokka","Kujin"}; +H55_Witches = {"Hero2","Hero3","Zouleika","Erika"}; + +H55_ClassesCount = 24 + +H55_ClassesList = { + H55_Renegades, H55_Knights, H55_Heretics, + H55_Rangers, H55_Avengers, H55_Druids, + H55_Demonlords, H55_Gatekeepers, H55_Sorcerers, + H55_DeathKnights, H55_Necromancers, H55_Nethermages, + H55_Enchanters, H55_Conjurers, H55_Wizards, + H55_Overlords, H55_Tricksters, H55_Warlocks, + H55_Engineers, H55_Runemages, H55_Flamekeepers, + H55_Chieftains, H55_Shamans, H55_Witches +}; + +H55_ClassesNames = { + "Renegade", "Knight", "Heretic", + "Ranger", "Avenger", "Druid", + "Demonlord", "Gatekeeper", "Sorcerer", + "Deathknight","Necromancer", "Nethermage", + "Enchanter", "Conjurer", "Wizard", + "Overlord", "Trickster", "Warlock", + "Engineer", "Runemage", "Flamekeeper", + "Chieftain", "Shaman", "Witch" +}; + +H55_RenegadesPhonebook = {["Mardigo"]=1,["RedHeavenHero02"]=1,["RedHeavenHero05"]=1,["RedHeavenHero03"]=1,["RedHeavenHero06"]=1,["Alaric"]=1,["RedHeavenHero01"]=1,["Laszlo"]=1}; +H55_KnightsPhonebook = {["Duncan"]=1,["Sarge"]=1,["Isabell"]=1,["Orrin"]=1,["Nicolai"]=1,["GodricMP"]=1,["Maeve"]=1,["Nathaniel"]=1,["Axel"]=1,["Christian"]=1,["Brem"]=1,["Ving"]=1,["Godric"]=1,["Freyda"]=1,["Ornella"]=1,["GhostFSLord"]=1,["Giar"]=1,["Glen"]=1,["Isabell_A1"]=1,["Saint Isabell"]=1}; +H55_HereticsPhonebook = {["Jeddite"]=1,["Markal"]=1,["Orlando"]=1,["AlaricMP"]=1,["RedHeavenHero04"]=1,["OrlandoMP"]=1}; +H55_RangersPhonebook = {["Heam"]=1,["Gillion"]=1,["Linaas"]=1,["Ossir"]=1,["Melodia"]=1,["Mephala"]=1}; +H55_AvengersPhonebook = {["Kyrre"]=1,["Nadaur"]=1,["Arniel"]=1,["Ildar"]=1,["Jenova"]=1,["Metlirn"]=1}; +H55_DruidsPhonebook = {["Vaniel"]=1,["Elleshar"]=1,["Vinrael"]=1,["Itil"]=1,["Diraya"]=1,["Gem"]=1,["Tieru"]=1}; +H55_DemonlordsPhonebook = {["Marder"]=1,["Malustar"]=1,["Harkenraz"]=1,["Grok"]=1,["Calid"]=1,["Jazaz"]=1,["Sheltem"]=1,["Gamor"]=1,["Guarg"]=1,["Erasial"]=1,["Kha-Beleth"]=1,["Veyer"]=1,["DMessiah"]=1}; +H55_GatekeepersPhonebook = {["Deleb"]=1,["Ash"]=1,["Nymus"]=1,["Oddrema"]=1,["Nelech"]=1,["Calh"]=1,["Agrael"]=1}; +H55_SorcerersPhonebook = {["Sovereign"]=1,["Efion"]=1,["Calid2"]=1,["Zydar"]=1,["AgraelMP"]=1,["Biara"]=1}; +H55_DeathKnightsPhonebook = {["Gles"]=1,["Pelt"]=1,["Tamika"]=1,["OrnellaNecro"]=1,["Straker"]=1,["Xerxon"]=1}; +H55_NecromancersPhonebook = {["Archilus"]=1,["Nimbus"]=1,["Aislinn"]=1,["ArantirMP"]=1,["Aberrar"]=1,["Effig"]=1,["Arantir"]=1,["Berein"]=1,["Nikolay"]=1,["Giovanni"]=1}; +H55_NethermagesPhonebook = {["Thant"]=1,["Vidomina"]=1,["Nemor"]=1,["Muscip"]=1,["GiovanniMP"]=1,["Sandro"]=1}; +H55_EnchantersPhonebook = {["Isher"]=1,["Rissa"]=1,["Minasli"]=1,["Davius"]=1,["Josephine"]=1,["Havez"]=1}; +H55_ConjurersPhonebook = {["Zehir"]=1,["Timerkhan"]=1,["Nur"]=1,["Cyrus"]=1,["Emilia"]=1,["Astral"]=1}; +H55_WizardsPhonebook = {["Gurvilin"]=1,["Razzak"]=1,["Maahir"]=1,["Faiz"]=1,["Sufi"]=1,["Tan"]=1}; +H55_OverlordsPhonebook = {["Agbeth"]=1,["Ranleth"]=1,["ThralsaiMP"]=1,["Urunir"]=1,["Menel"]=1,["Ferigl"]=1}; +H55_TrickstersPhonebook = {["Sephinroth"]=1,["Eruina"]=1,["Ohtarig"]=1,["Sylsai"]=1,["Darkstorm"]=1,["AlmegirMP"]=1,["Thralsai"]=1,["Almegir"]=1}; +H55_WarlocksPhonebook = {["Raelag"]=1,["Kastore"]=1,["Kelodin"]=1,["ShadwynMP"]=1,["Dalom"]=1,["Inagost"]=1,["Shadwyn"]=1,["Raelag_A1"]=1,["Segref"]=1,["Ohtar"]=1,["Eruina_A1"]=1}; +H55_EngineersPhonebook = {["Wulfstan"]=1,["Rolf"]=1,["Maximus"]=1,["Tazar"]=1,["Ufretin"]=1,["Skeggy"]=1}; +H55_RunemagesPhonebook = {["Hangvul"]=1,["KingTolghar"]=1,["Ingvar"]=1,["Bersy"]=1,["Ottar"]=1,["Una"]=1}; +H55_FlamekeepersPhonebook = {["Vilma"]=1,["Bart"]=1,["Hangvul2"]=1,["Brand"]=1,["Egil"]=1,["Vegeyr"]=1}; +H55_ChieftainsPhonebook = {["Hero1"]=1,["Hero4"]=1,["Hero5"]=1,["Hero6"]=1,["Hero8"]=1,["Hero9"]=1,["Gottai"]=1,["GottaiMP"]=1,["Crag"]=1,["Azar"]=1,["Kraal"]=1,["Kujin"]=1,["Kunyak"]=1,["Matewa"]=1,["Quroq"]=1}; +H55_ShamansPhonebook = {["KujinMP"]=1,["Shiva"]=1,["Hero7"]=1,["Mokka"]=1,["Kujin"]=1}; +H55_WitchesPhonebook = {["Hero2"]=1,["Hero3"]=1,["Zouleika"]=1,["Erika"]=1}; + +--Factions + +H55_HavenPhonebook = {["Nicolai"]=1,["GodricMP"]=1,["Maeve"]=1,["Nathaniel"]=1,["Axel"]=1,["Brem"]=1,["Jeddite"]=1,["Markal"]=1,["Orlando"]=1,["RedHeavenHero03"]=1,["RedHeavenHero06"]=1,["Alaric"]=1,["AlaricMP"]=1,["RedHeavenHero01"]=1,["Duncan"]=1,["Sarge"]=1,["Isabell"]=1,["Mardigo"]=1,["Ving"]=1,["Orrin"]=1,["Godric"]=1,["Freyda"]=1,["Ornella"]=1,["GhostFSLord"]=1,["Giar"]=1,["Glen"]=1,["Laszlo"]=1,["Isabell_A1"]=1,["Saint Isabell"]=1,["RedHeavenHero04"]=1,["RedHeavenHero02"]=1,["RedHeavenHero05"]=1,["Christian"]=1,["Malik"]=1,["OrlandoMP"]=1}; +H55_SylvanPhonebook = {["Heam"]=1,["Metlirn"]=1,["Nadaur"]=1,["Linaas"]=1,["Ossir"]=1,["Jenova"]=1,["Kyrre"]=1,["Mephala"]=1,["Arniel"]=1,["Ildar"]=1,["Melodia"]=1,["Gillion"]=1,["Vaniel"]=1,["Elleshar"]=1,["Vinrael"]=1,["Itil"]=1,["Diraya"]=1,["Gem"]=1,["Tieru"]=1}; +H55_InfernoPhonebook = {["Marder"]=1,["Sheltem"]=1,["Harkenraz"]=1,["Calh"]=1,["Calid"]=1,["Jazaz"]=1,["Gamor"]=1,["Guarg"]=1,["Erasial"]=1,["Kha-Beleth"]=1,["Veyer"]=1,["DMessiah"]=1,["Efion"]=1,["Ash"]=1,["Nymus"]=1,["Oddrema"]=1,["Malustar"]=1,["Grok"]=1,["Sovereign"]=1,["Deleb"]=1,["Calid2"]=1,["Zydar"]=1,["Agrael"]=1,["AgraelMP"]=1,["Biara"]=1,["Nelech"]=1}; +H55_DungeonPhonebook = {["Agbeth"]=1,["Ranleth"]=1,["Sylsai"]=1,["Urunir"]=1,["Menel"]=1,["Ferigl"]=1,["Dalom"]=1,["Eruina"]=1,["Darkstorm"]=1,["Ohtarig"]=1,["Thralsai"]=1,["Almegir"]=1,["Raelag"]=1,["Kastore"]=1,["Kelodin"]=1,["Shadwyn"]=1,["ShadwynMP"]=1,["Sephinroth"]=1,["Inagost"]=1,["Raelag_A1"]=1,["Segref"]=1,["Ohtar"]=1,["Eruina_A1"]=1,["ThralsaiMP"]=1,["AlmegirMP"]=1}; +H55_NecropolisPhonebook = {["Gles"]=1,["Pelt"]=1,["Tamika"]=1,["OrnellaNecro"]=1,["Straker"]=1,["Xerxon"]=1,["Archilus"]=1,["Nimbus"]=1,["Aislinn"]=1,["Nemor"]=1,["Muscip"]=1,["Giovanni"]=1,["GiovanniMP"]=1,["Thant"]=1,["Vidomina"]=1,["Arantir"]=1,["ArantirMP"]=1,["Aberrar"]=1,["Effig"]=1,["Sandro"]=1,["Berein"]=1,["Nikolay"]=1}; +H55_AcademyPhonebook = {["Isher"]=1,["Rissa"]=1,["Minasli"]=1,["Davius"]=1,["Josephine"]=1,["Havez"]=1,["Gurvilin"]=1,["Razzak"]=1,["Maahir"]=1,["Faiz"]=1,["Sufi"]=1,["Cyrus"]=1,["Zehir"]=1,["Timerkhan"]=1,["Nur"]=1,["Tan"]=1,["Emilia"]=1,["Astral"]=1}; +H55_FortressPhonebook = {["Wulfstan"]=1,["Rolf"]=1,["Maximus"]=1,["Tazar"]=1,["Ingvar"]=1,["Skeggy"]=1,["Hangvul2"]=1,["KingTolghar"]=1,["Ufretin"]=1,["Bersy"]=1,["Ottar"]=1,["Una"]=1,["Bart"]=1,["Vilma"]=1,["Hangvul"]=1,["Brand"]=1,["Egil"]=1,["Vegeyr"]=1}; +H55_StrongholdPhonebook = {["Hero1"]=1,["Hero2"]=1,["Hero3"]=1,["Hero4"]=1,["Hero5"]=1,["Hero6"]=1,["Hero7"]=1,["Hero8"]=1,["Hero9"]=1,["Gottai"]=1,["Crag"]=1,["Azar"]=1,["Kraal"]=1,["Kujin"]=1,["KujinMP"]=1,["Kunyak"]=1,["Matewa"]=1,["Shiva"]=1,["Zouleika"]=1,["Quroq"]=1,["Mokka"]=1,["Erika"]=1,["GottaiMP"]=1}; + +--Creatures + +H55_Creatures = { + {{1,2,106},{3,4,107},{5,6,108},{7,8,109},{9,10,110},{11,12,111},{13,14,112}}, --Haven + {{43,44,145},{45,46,146},{47,48,147},{49,50,148},{51,52,149},{53,54,150},{55,56,151}}, --Sylvan + {{15,16,131},{17,18,132},{19,20,133},{21,22,134},{23,24,135},{25,26,136},{27,28,137}}, --Inferno + {{29,30,152},{31,32,153},{33,34,154},{35,36,155},{37,38,156},{39,40,157},{41,42,158}}, --Necropolis + {{57,58,159},{59,60,160},{61,62,161},{63,64,162},{65,66,163},{67,68,164},{69,70,165}}, --Academy + {{71,72,138},{73,74,139},{75,76,140},{77,78,141},{79,80,142},{81,82,143},{83,84,144}}, --Dungeon + {{92,93,166},{94,95,167},{96,97,168},{98,99,169},{100,101,170},{102,103,171},{104,105,172}}, --Fortress + {{117,118,173},{119,120,174},{121,122,175},{123,124,176},{125,126,177},{127,128,178},{129,130,179}}, --Stronghold + {{87,87,88},{85,85,86},{113,113,113},{116,116,116},{115,115,114},{90,90,90},{91,91,91}} --Neutral +}; + +H55_CreaturesExp = { + {{4,8,8},{12,22,22},{17,29,29},{40,60,60},{70,95,95},{115,160,160},{252,332,332}}, --Haven + {{10,15,15},{15,28,28},{30,45,45},{55,70,70},{75,100,100},{100,136,136},{240,320,320}}, --Sylvan + {{7,13,13},{10,16,16},{21,33,33},{40,60,60},{76,96,96},{129,160,160},{245,336,336}}, --Inferno + {{5,10,10},{10,15,15},{20,31,31},{38,58,58},{74,105,105},{115,156,156},{166,220,220}}, --Necropolis + {{6,12,12},{10,17,17},{21,34,34},{42,60,60},{55,76,76},{120,160,160},{242,330,330}}, --Academy + {{14,26,26},{21,35,35},{25,36,36},{45,70,70},{54,82,82},{136,160,160},{260,342,342}}, --Dungeon + {{7,12,12},{10,17,17},{27,41,41},{24,36,36},{65,95,95},{130,170,170},{220,310,310}}, --Fortress + {{4,8,8},{12,20,20},{17,26,26},{32,50,50},{50,70,70},{120,165,165},{200,300,300}}, --Stronghold + {{60,60,60},{60,60,60},{37,37,37},{72,72,72},{135,135,130},{158,158,158},{500,500,500}} --Neutral +}; + +H55_CreaturesHP = { + {{6,10,9},{10,13,13},{20,32,28},{40,45,65},{70,100,100},{110,140,140},{240,290,275}}, --Haven + {{8,9,10},{18,20,22},{14,17,20},{42,40,42},{80,100,90},{200,210,210},{250,265,285}}, --Sylvan + {{7,8,9},{16,19,18},{22,26,22},{30,38,40},{76,86,96},{136,166,176},{226,266,296}}, --Inferno + {{5,7,7},{20,22,25},{15,20,18},{34,40,48},{65,70,70},{120,125,140},{190,200,190}}, --Necropolis + {{7,8,8},{20,25,25},{25,30,25},{28,38,37},{50,60,70},{140,170,160},{220,260,240}}, --Academy + {{14,18,19},{22,27,30},{40,42,50},{50,70,75},{100,150,145},{100,110,110},{265,300,290}}, --Dungeon + {{12,15,18},{12,15,12},{32,38,44},{30,35,40},{65,75,70},{140,165,180},{290,350,320}}, --Fortress + {{5,8,9},{12,13,14},{18,20,28},{40,45,45},{45,50,60},{125,140,150},{240,250,275}}, --Stronghold + {{60,60,40},{50,50,40},{25,25,25},{60,60,60},{140,140,110},{140,140,140},{190,190,190}} --Neutral +}; + +H55_ElementalHP = {[85]=50,[86]=40,[87]=60,[88]=40,[114]=110}; + +H55_CreaturesGrowth = { + {24.5, 12, 10, 5, 3, 2, 1}, --Haven + {14, 9, 7, 4, 3, 2.5, 1}, --Sylvan + {17, 16, 8, 5, 3.5, 2, 1}, --Inferno + {22.5, 16, 9, 5, 3, 2, 1.5}, --Necropolis + {20, 14, 9, 5, 4, 2, 1}, --Academy + {8.5, 7, 6.5, 4, 3, 2, 1}, --Dungeon + {16, 14, 7, 8, 3.5, 2, 1}, --Fortress + {28, 14, 11, 5, 5, 2, 1}, --Stronghold + {4, 4, 6, 3, 2, 2, 1} -- Neutral +}; + +H55_CreaturesGrowthReal = { + {22, 12, 10, 5, 3, 2, 1}, --Haven + {12, 9, 7, 4, 3, 2, 1}, --Sylvan + {17, 15, 8, 5, 3, 2, 1}, --Inferno + {20, 16, 9, 5, 3, 2, 1}, --Necropolis + {20, 14, 9, 5, 3, 2, 1}, --Academy + {7, 6, 6, 4, 3, 2, 1}, --Dungeon + {16, 14, 7, 6, 3, 2, 1}, --Fortress + {25, 14, 11, 5, 5, 2, 1}, --Stronghold + {4, 4, 6, 3, 2, 2, 1} -- Neutral +}; + +H55_NeutralCreatures = {85,86,87,88,91,113,114,115,116,90}; --Fire,Water,Earth,Air,Phoenix,Wolf,Eagle,Manticore,Mummy,BKnight +H55_NeutralCreaturesExp = {60,60,60,60,500,37,130,135,72,158}; +H55_NeutralCreaturesGrowth = {4,4,4,4,1,8,2,2,3,2}; +H55_NeutralSpecialists = {"Calid2","Melodia","Kunyak","KingTolghar","RedHeavenHero03","Emilia","Menel"}; +H55_NeutralSpecialistsCr = {["Calid2"] = 85,["Melodia"] = 86,["Kunyak"] = 87,["KingTolghar"] = 88,["RedHeavenHero03"] = 113,["Emilia"] = 114,["Menel"] = 115,["Thant"] = 116}; + +H55_AICreaturesGrowth = { + {11, 6, 5, 3, 2, 1, 1}, --Haven + {6, 5, 3, 3, 2, 1, 1}, --Sylvan + {8, 8, 5, 3, 2, 1, 1}, --Inferno + {10, 8, 5, 3, 2, 1, 1}, --Necropolis + {10, 8, 5, 3, 2, 1, 1}, --Academy + {4, 3, 3, 3, 2, 1, 1}, --Dungeon + {8, 7, 3, 4, 2, 1, 1}, --Fortress + {14, 7, 6, 3, 3, 1, 1} --Stronghold +}; + +H55_EvilTowns = { + {2, 5, 7, 1}, -- Haven + {1, 5, 7, 2}, -- Sylvan + {4, 6, 8, 3}, -- Inferno + {3, 6, 8, 4}, -- Necro + {1, 2, 7, 5}, -- Academy + {3, 4, 8, 6}, -- Dungeon + {1, 2, 5, 7}, -- Fortress + {3, 4, 6, 8}, -- Stronghold + {9, 2, 5, 7} -- Neutral +}; + +H55_CreaturesInv = {}; + +for town = 1,9,1 do + for tier = 1,7,1 do + for upgrade = 1,3 do + H55_CreaturesInv[H55_Creatures[town][tier][upgrade]] = {town, tier, upgrade}; + end; + end; +end; + +--Sounds + +H55_SndStat = "/Sounds/_(Sound)/Interface/Ingame/Join-Flee.xdb#xpointer(/Sound)"; +H55_SndLvlUp = "/Sounds/_(Sound)/Interface/Events/Level Up.xdb#xpointer(/Sound)"; +H55_SndArtifact = "/Sounds/_(Sound)/Interface/Events/Get_artf_res02.xdb#xpointer(/Sound)"; +H55_SndArmy = "/Sounds/_(Sound)/Interface/Events/Get_army.xdb#xpointer(/Sound)"; +H55_SndTPStart = "/Sounds/_(Sound)/Spells/TownTeleportStart.xdb#xpointer(/Sound)"; +H55_SndTPEnd = "/Sounds/_(Sound)/Spells/TownTeleportEnd.xdb#xpointer(/Sound)"; +H55_SndNo = "/Sounds/_(Sound)/Interface/General/scroll_disabled_click.xdb#xpointer(/Sound)"; +H55_SndNewObj = "/Sounds/_(Sound)/Interface/Ingame/Objective/new-obj.xdb#xpointer(/Sound)"; +H55_SndObjComplete = "/Sounds/_(Sound)/Interface/Ingame/Objective/obj-complete.xdb#xpointer(/Sound)"; +H55_SndObjFail = "/Sounds/_(Sound)/Interface/Ingame/Objective/obj-fail.xdb#xpointer(/Sound)"; +H55_SndInteract = "/Sounds/_(Sound)/Interface/Ingame/Interact.xdb#xpointer(/Sound)"; +H55_SndWitch = "/Sounds/_(Sound)/Buildings/WitchHut.xdb#xpointer(/Sound)"; +H55_SndSpell = "/Sounds/_(Sound)/Buildings/ShrineOfMagic.xdb#xpointer(/Sound)"; +H55_SndCrash = "/Maps/Scenario/A2C2M1/Siege_WallCrash02sound.xdb#xpointer(/Sound)" + +--Effects + +H55_TPfx = "/Effects/_(Effect)/Spells/townportal_start.xdb#xpointer(/Effect)"; +H55_Firewallfx = "/Effects/_(Effect)/Spells/FireWall.(Effect).xdb#xpointer(/Effect)"; +H55_Dustfx = "/Effects/_(Effect)/Buildings/Capture/Start_dust_S.xdb#xpointer(/Effect)"; +H55_Fire01fx = "/Effects/_(Effect)/Towns/Inferno/MagicGuild.xdb#xpointer(/Effect)"; +H55_Fire02fx = "/Effects/_(Effect)/Towns/Inferno/DemonGate.xdb#xpointer(/Effect)"; +H55_Glowfx = "/Effects/_(Effect)/Environment/Inferno/Hellpikes/Hellpikes4x4_3.xdb#xpointer(/Effect)"; + +--Memory Mentor + +H55_MemoryAbuser = {}; + +H55_AbuserSkills = { + PERK_RECRUITMENT, + PERK_DIPLOMACY, + --PERK_PATHFINDING, + PERK_NAVIGATION, + --HERO_SKILL_SNATCH, + --PERK_WISDOM, + PERK_DARK_RITUAL, + DEMON_FEAT_EXPLODING_CORPSES, + --PERK_NO_REST_FOR_THE_WICKED, + --NECROMANCER_FEAT_LORD_OF_UNDEAD, + KNIGHT_FEAT_ROAD_HOME, + PERK_FORTUNATE_ADVENTURER, + --DEMON_FEAT_DEMONIC_FLAME, + WIZARD_FEAT_SPOILS_OF_WAR, + HERO_SKILL_PATH_OF_WAR, + --RANGER_FEAT_FOREST_GUARD_EMBLEM, + HERO_SKILL_GOBLIN_SUPPORT, + --HERO_SKILL_DEFEND_US_ALL, + --DEMON_FEAT_MASTER_OF_SECRETS, + --PERK_SCHOLAR, + --HERO_SKILL_WARCRY_LEARNING, + HERO_SKILL_MENTORING, + HERO_SKILL_BARBARIAN_MENTORING + --PERK_LUCKY_STRIKE +}; + +for i,skill in H55_AbuserSkills do + H55_MemoryAbuser[skill] = {}; +end; + +--Artifacts + +H55_MinorArtifactsDuel = { + ARTIFACT_SWORD_OF_RUINS, + ARTIFACT_CROWN_OF_MANY_EYES, + ARTIFACT_BREASTPLATE_OF_PETRIFIED_WOOD, + ARTIFACT_EVERCOLD_ICICLE, + ARTIFACT_NECKLACE_OF_BRAVERY, + ARTIFACT_RING_OF_LIGHTING_PROTECTION, + ARTIFACT_PHOENIX_FEATHER_CAPE, + ARTIFACT_VALORIOUS_ARMOR, + ARTIFACT_BAND_OF_CONJURER, + ARTIFACT_EARTHSLIDERS, + ARTIFACT_RIGID_MANTLE, + ARTIFACT_WISPERING_RING, + ARTIFACT_BEGINNER_MAGIC_STICK, + ARTIFACT_BEARHIDE_WRAPS, + ARTIFACT_RUNE_OF_FLAME, + ARTIFACT_TAROT_DECK, + ARTIFACT_GOLDEN_SEXTANT, + ARTIFACT_LEGION_T1, + ARTIFACT_LEGION_T2, + ARTIFACT_LEGION_T3, + ARTIFACT_RING_OF_LIFE, + ARTIFACT_DWARVEN_SMITHY_HUMMER, + ARTIFACT_RES_WOOD, + ARTIFACT_RES_ORE, + ARTIFACT_RES_SULPHUR, + ARTIFACT_RES_CRYSTAL, + ARTIFACT_RES_GEM, + ARTIFACT_RES_MERCURY, + ARTIFACT_MONK_03, + ARTIFACT_MONK_04, + -- ARTIFACT_LIFE_01, + -- ARTIFACT_LIFE_02, + -- ARTIFACT_LIFE_03, + ARTIFACT_BUCKLER, + ARTIFACT_PIRATE02, + ARTIFACT_PIRATE03, + ARTIFACT_PIRATE04, + -- ARTIFACT_PIRATE05, + ARTIFACT_PIRATE06, + -- ARTIFACT_MEDICAL03, + -- ARTIFACT_MEDICAL04, + ARTIFACT_WAYFARER_BOOTS, + ARTIFACT_JINXING_BAND, + -- ARTIFACT_HELM_OF_CHAOS, + ARTIFACT_UPG_SW1, + ARTIFACT_TREEBORN_QUIVER, + -- ARTIFACT_ENDLESS_BAG_OF_GOLD, + ARTIFACT_UPG_AR3, + ARTIFACT_UPG_SW3, + ARTIFACT_GEAR_05, + -- ARTIFACT_GEAR_03, + ARTIFACT_WAND_OF_X, + ARTIFACT_RING_OF_DEATH, + ARTIFACT_ELRATH_01, + ARTIFACT_SCROLL_OF_SPELL_X +}; + +H55_MajorArtifactsDuel = { + ARTIFACT_BONESTUDDED_LEATHER, + ARTIFACT_SKULL_HELMET, + ARTIFACT_UPG_ST1, + ARTIFACT_OGRE_CLUB, + ARTIFACT_OGRE_SHIELD, + ARTIFACT_CROWN_OF_LEADER, + ARTIFACT_GREAT_AXE_OF_GIANT_SLAYING, + ARTIFACT_BOOTS_OF_SWIFTNESS, + ARTIFACT_DRAGON_SCALE_SHIELD, + ARTIFACT_ICEBERG_SHIELD, + ARTIFACT_RUNIC_WAR_HARNESS, + ARTIFACT_NECKLACE_OF_POWER, + ARTIFACT_DRAGON_SCALE_ARMOR, + ARTIFACT_NIGHTMARISH_RING, + -- ARTIFACT_BOOTS_OF_SPEED, + ARTIFACT_DRAGON_BONE_GRAVES, + ARTIFACT_LION_HIDE_CAPE, + ARTIFACT_CHAIN_MAIL_OF_ENLIGHTMENT, + ARTIFACT_DRAGON_WING_MANTLE, + ARTIFACT_DRAGON_FLAME_TONGUE, + ARTIFACT_MOONBLADE, + ARTIFACT_DRAGON_TALON_CROWN, + ARTIFACT_HELM_OF_ENLIGHTMENT, + ARTIFACT_DRAGON_EYE_RING, + -- ARTIFACT_SANDALS_OF_THE_SAINT, + ARTIFACT_RUNIC_WAR_AXE, + ARTIFACT_DRAGON_TEETH_NECKLACE, + ARTIFACT_BOOK_OF_POWER, + ARTIFACT_NECROMANCER_PENDANT, + ARTIFACT_LEGION_T4, + ARTIFACT_LEGION_T5, + -- ARTIFACT_MONK_01, + ARTIFACT_MONK_02, + ARTIFACT_RING_OF_THE_SHADOWBRAND, + -- ARTIFACT_LIFE_04, + ARTIFACT_UPG_AR1, + ARTIFACT_UPG_AR2, + ARTIFACT_UPG_ST2, + -- ARTIFACT_GEAR_02, + -- ARTIFACT_ELRATH_02, + ARTIFACT_FOUR_LEAF_CLOVER, + ARTIFACT_BOOTS_OF_INTERFERENCE, + ARTIFACT_WEREWOLF_CLAW_NECKLACE, + -- ARTIFACT_ENDLESS_SACK_OF_GOLD, + ARTIFACT_GOVERNOR_01, + ARTIFACT_EDGE_OF_BALANCE, + ARTIFACT_STEADFAST, + ARTIFACT_UPG_ST3, + ARTIFACT_ORB_01, + ARTIFACT_ORB_02, + ARTIFACT_ORB_03, + ARTIFACT_ORB_04 +}; + +H55_RelicArtifactsDuel = { + ARTIFACT_PIRATE01, + ARTIFACT_RING_OF_UNSUMMONING, + -- ARTIFACT_BOOTS_OF_LEVITATION, + ARTIFACT_UPG_HM3, + ARTIFACT_STAFF_OF_MAGI, + ARTIFACT_RING_OF_MACHINE_AFFINITY, + ARTIFACT_DWARVEN_MITHRAL_CUIRASS, + ARTIFACT_STAFF_OF_VEXINGS, + -- ARTIFACT_SHACKLES_OF_WAR, + ARTIFACT_PLATE_MAIL_OF_STABILITY, + ARTIFACT_ROBE_OF_MAGI, + ARTIFACT_PEDANT_OF_MASTERY, + ARTIFACT_DWARVEN_MITHRAL_GREAVES, + ARTIFACT_CLOAK_OF_MOURNING, + ARTIFACT_CROWN_OF_MAGI, + ARTIFACT_DWARVEN_MITHRAL_HELMET, + ARTIFACT_RING_OF_MAGI, + ARTIFACT_RING_OF_CELERITY, + ARTIFACT_SHAWL_OF_GREAT_LICH, + ARTIFACT_TOME_OF_DESTRUCTION, + ARTIFACT_TOME_OF_LIGHT_MAGIC, + ARTIFACT_TOME_OF_DARK_MAGIC, + ARTIFACT_TOME_OF_SUMMONING_MAGIC, + ARTIFACT_DWARVEN_MITHRAL_SHIELD, + ARTIFACT_SKULL_OF_MARKAL, + ARTIFACT_LEGION_T6, + ARTIFACT_LEGION_T7, + ARTIFACT_GUARDIAN_01, + ARTIFACT_GUARDIAN_02, + ARTIFACT_GUARDIAN_03, + ARTIFACT_UNICORN_HORN_BOW, + -- ARTIFACT_MASK_OF_DOPPELGANGER, + ARTIFACT_CROWN_OF_COURAGE, + -- ARTIFACT_MEDICAL01, + -- ARTIFACT_MEDICAL02, + ARTIFACT_UPG_HM1, + ARTIFACT_UPG_SW2, + ARTIFACT_URGASH_01, + ARTIFACT_URGASH_02, + ARTIFACT_GOLDEN_HORSESHOE, + ARTIFACT_GEAR_04, + ARTIFACT_TITANS_TRIDENT + -- ARTIFACT_HORN_OF_PLENTY +}; + +H55_MinorArtifacts = { + ARTIFACT_SWORD_OF_RUINS, + ARTIFACT_CROWN_OF_MANY_EYES, + ARTIFACT_BREASTPLATE_OF_PETRIFIED_WOOD, + ARTIFACT_EVERCOLD_ICICLE, + ARTIFACT_NECKLACE_OF_BRAVERY, + ARTIFACT_RING_OF_LIGHTING_PROTECTION, + ARTIFACT_PHOENIX_FEATHER_CAPE, + ARTIFACT_VALORIOUS_ARMOR, + ARTIFACT_BAND_OF_CONJURER, + ARTIFACT_EARTHSLIDERS, + ARTIFACT_RIGID_MANTLE, + ARTIFACT_WISPERING_RING, + ARTIFACT_BEGINNER_MAGIC_STICK, + ARTIFACT_BEARHIDE_WRAPS, + ARTIFACT_RUNE_OF_FLAME, + ARTIFACT_TAROT_DECK, + ARTIFACT_GOLDEN_SEXTANT, + ARTIFACT_LEGION_T1, + ARTIFACT_LEGION_T2, + ARTIFACT_LEGION_T3, + ARTIFACT_RING_OF_LIFE, + ARTIFACT_DWARVEN_SMITHY_HUMMER, + ARTIFACT_RES_WOOD, + ARTIFACT_RES_ORE, + ARTIFACT_RES_SULPHUR, + ARTIFACT_RES_CRYSTAL, + ARTIFACT_RES_GEM, + ARTIFACT_RES_MERCURY, + ARTIFACT_MONK_03, + ARTIFACT_MONK_04, + ARTIFACT_LIFE_01, + ARTIFACT_LIFE_02, + ARTIFACT_LIFE_03, + ARTIFACT_BUCKLER, + ARTIFACT_PIRATE02, + ARTIFACT_PIRATE03, + ARTIFACT_PIRATE04, + ARTIFACT_PIRATE05, + ARTIFACT_PIRATE06, + -- ARTIFACT_MEDICAL03, + -- ARTIFACT_MEDICAL04, + ARTIFACT_WAYFARER_BOOTS, + ARTIFACT_JINXING_BAND, + ARTIFACT_HELM_OF_CHAOS, + ARTIFACT_UPG_SW1, + ARTIFACT_TREEBORN_QUIVER, + ARTIFACT_ENDLESS_BAG_OF_GOLD, + ARTIFACT_UPG_AR3, + ARTIFACT_UPG_SW3, + ARTIFACT_GEAR_03, + ARTIFACT_ELRATH_01, + ARTIFACT_RING_OF_DEATH, + ARTIFACT_GEAR_05 + -- ARTIFACT_WAND_OF_X, + -- ARTIFACT_SCROLL_OF_SPELL_X, +}; -- amount is 56 + +H55_MajorArtifacts = { + ARTIFACT_SKULL_HELMET, + ARTIFACT_BONESTUDDED_LEATHER, + ARTIFACT_UPG_ST1, + ARTIFACT_OGRE_CLUB, + ARTIFACT_OGRE_SHIELD, + ARTIFACT_CROWN_OF_LEADER, + ARTIFACT_GREAT_AXE_OF_GIANT_SLAYING, + ARTIFACT_BOOTS_OF_SWIFTNESS, + ARTIFACT_DRAGON_SCALE_SHIELD, + ARTIFACT_ICEBERG_SHIELD, + ARTIFACT_RUNIC_WAR_HARNESS, + ARTIFACT_NECKLACE_OF_POWER, + ARTIFACT_DRAGON_SCALE_ARMOR, + ARTIFACT_NIGHTMARISH_RING, + ARTIFACT_BOOTS_OF_LEVITATION, + ARTIFACT_DRAGON_BONE_GRAVES, + ARTIFACT_LION_HIDE_CAPE, + ARTIFACT_CHAIN_MAIL_OF_ENLIGHTMENT, + ARTIFACT_DRAGON_WING_MANTLE, + ARTIFACT_DRAGON_FLAME_TONGUE, + ARTIFACT_MOONBLADE, + ARTIFACT_DRAGON_TALON_CROWN, + ARTIFACT_HELM_OF_ENLIGHTMENT, + ARTIFACT_DRAGON_EYE_RING, + ARTIFACT_SANDALS_OF_THE_SAINT, + ARTIFACT_RUNIC_WAR_AXE, + ARTIFACT_DRAGON_TEETH_NECKLACE, + ARTIFACT_BOOK_OF_POWER, + ARTIFACT_NECROMANCER_PENDANT, + ARTIFACT_LEGION_T4, + ARTIFACT_LEGION_T5, + ARTIFACT_MONK_01, + ARTIFACT_MONK_02, + ARTIFACT_RING_OF_THE_SHADOWBRAND, + ARTIFACT_LIFE_04, + ARTIFACT_UPG_AR1, + ARTIFACT_UPG_AR2, + ARTIFACT_UPG_ST2, + --ARTIFACT_GEAR_02, + ARTIFACT_ELRATH_02, + ARTIFACT_FOUR_LEAF_CLOVER, + ARTIFACT_BOOTS_OF_INTERFERENCE, + ARTIFACT_WEREWOLF_CLAW_NECKLACE, + ARTIFACT_ENDLESS_SACK_OF_GOLD, + ARTIFACT_GOVERNOR_01, + ARTIFACT_ORB_01, + ARTIFACT_ORB_02, + ARTIFACT_ORB_03, + ARTIFACT_ORB_04, + ARTIFACT_EDGE_OF_BALANCE, + ARTIFACT_STEADFAST, + ARTIFACT_UPG_ST3, + ARTIFACT_GEAR_06 +}; -- amount is 53 + +H55_RelicArtifacts = { + ARTIFACT_PIRATE01, + ARTIFACT_RING_OF_UNSUMMONING, + ARTIFACT_BOOTS_OF_SPEED, + ARTIFACT_STAFF_OF_MAGI, + ARTIFACT_RING_OF_MACHINE_AFFINITY, + ARTIFACT_DWARVEN_MITHRAL_CUIRASS, + ARTIFACT_STAFF_OF_VEXINGS, + --ARTIFACT_SHACKLES_OF_WAR, + ARTIFACT_PLATE_MAIL_OF_STABILITY, + ARTIFACT_ROBE_OF_MAGI, + ARTIFACT_PEDANT_OF_MASTERY, + ARTIFACT_DWARVEN_MITHRAL_GREAVES, + ARTIFACT_CLOAK_OF_MOURNING, + ARTIFACT_CROWN_OF_MAGI, + ARTIFACT_DWARVEN_MITHRAL_HELMET, + ARTIFACT_RING_OF_MAGI, + ARTIFACT_SHAWL_OF_GREAT_LICH, + ARTIFACT_TOME_OF_DESTRUCTION, + ARTIFACT_TOME_OF_LIGHT_MAGIC, + ARTIFACT_TOME_OF_DARK_MAGIC, + ARTIFACT_TOME_OF_SUMMONING_MAGIC, + ARTIFACT_DWARVEN_MITHRAL_SHIELD, + ARTIFACT_SKULL_OF_MARKAL, + ARTIFACT_RING_OF_CELERITY, + ARTIFACT_LEGION_T6, + ARTIFACT_LEGION_T7, + ARTIFACT_GUARDIAN_01, + ARTIFACT_GUARDIAN_02, + ARTIFACT_GUARDIAN_03, + ARTIFACT_UNICORN_HORN_BOW, + ARTIFACT_MASK_OF_DOPPELGANGER, + ARTIFACT_MEDICAL01, + ARTIFACT_MEDICAL02, + ARTIFACT_UPG_HM1, + ARTIFACT_UPG_SW2, + ARTIFACT_UPG_HM3, + ARTIFACT_URGASH_01, + ARTIFACT_URGASH_02, + ARTIFACT_GOLDEN_HORSESHOE, + ARTIFACT_CROWN_OF_COURAGE, + ARTIFACT_TITANS_TRIDENT, + ARTIFACT_GEAR_04, + ARTIFACT_HORN_OF_PLENTY +}; --amount is 43 + +H55_UltimateArtifacts = { + ARTIFACT_EIGHTFOLD, + ARTIFACT_DRACONIC, + ARTIFACT_SENTINEL, + ARTIFACT_RING_OF_HASTE, + ARTIFACT_UPG_HM2, + -- ARTIFACT_ANGEL_WINGS, + ARTIFACT_CODEX, + ARTIFACT_GEAR_01, + ARTIFACT_GRAAL +}; + +H55_MinorBookArtifacts = { + ARTIFACT_BOOK_A1, + ARTIFACT_BOOK_A2, + ARTIFACT_BOOK_D1, + ARTIFACT_BOOK_D2, + ARTIFACT_BOOK_S1, + ARTIFACT_BOOK_S2, + ARTIFACT_BOOK_K1, + ARTIFACT_BOOK_K2, + ARTIFACT_GEAR_07 +}; + +H55_MajorBookArtifacts = { + ARTIFACT_BOOK_A3, + ARTIFACT_BOOK_A4, + ARTIFACT_BOOK_D3, + ARTIFACT_BOOK_D4, + ARTIFACT_BOOK_S3, + ARTIFACT_BOOK_S4, + ARTIFACT_BOOK_K3, + ARTIFACT_BOOK_K4 +}; + +H55_RelicBookArtifacts = { + ARTIFACT_BOOK_R1, + ARTIFACT_BOOK_R2, + ARTIFACT_BOOK_R3 +}; + +H55_DiscPieces = { + ARTIFACT_SHANTIRI_01, + ARTIFACT_SHANTIRI_02, + ARTIFACT_SHANTIRI_03, + ARTIFACT_SHANTIRI_04 +}; + +H55_PrankArtifacts = { + ARTIFACT_FIZBIN, + ARTIFACT_FORGING +}; + +H55_CustomArtifacts = { + ARTIFACT_GEAR_01, + ARTIFACT_GEAR_02, + ARTIFACT_GEAR_03, + ARTIFACT_GEAR_04, + ARTIFACT_GEAR_05, + ARTIFACT_GEAR_06 +}; + +H55_MinorSeerArtifacts = { + ARTIFACT_SWORD_OF_RUINS, + ARTIFACT_RING_OF_LIGHTING_PROTECTION, + ARTIFACT_NECKLACE_OF_BRAVERY, + ARTIFACT_BEARHIDE_WRAPS, + ARTIFACT_VALORIOUS_ARMOR, + ARTIFACT_RUNE_OF_FLAME, + ARTIFACT_GOLDEN_SEXTANT, + ARTIFACT_LEGION_T1, + ARTIFACT_LEGION_T2, + ARTIFACT_JINXING_BAND, + ARTIFACT_DWARVEN_SMITHY_HUMMER, + ARTIFACT_RES_MERCURY, + ARTIFACT_RES_GEM, + ARTIFACT_BUCKLER, + ARTIFACT_PIRATE05 +}; + +H55_MajorSeerArtifacts = { + ARTIFACT_NECROMANCER_PENDANT, + ARTIFACT_NIGHTMARISH_RING, + ARTIFACT_FOUR_LEAF_CLOVER, + ARTIFACT_GREAT_AXE_OF_GIANT_SLAYING, + ARTIFACT_LION_HIDE_CAPE +}; + +H55_RelicSeerArtifacts = { + ARTIFACT_MEDICAL01, + ARTIFACT_MEDICAL02 +}; + +H55_MinorSeerArtifactsText = { + "/Text/Game/Scripts/Seer/Artifacts/SwordOfRuin/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Ring_of_lightning_protection/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Necklace_of_bravery/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Bearhide_Wraps/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Valorious_Armor/Name.txt", + + "/Text/Game/Scripts/Seer/Artifacts/Rune_of_Flame/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Golden_sextant/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Legion_T1/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Legion_T2/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Jinxing_Band/Name.txt", + + "/Text/Game/Scripts/Seer/Artifacts/Dwarven_Smithy_Hammer/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Res_Mercury/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Res_Gem/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Buckler/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Pirate05/Name.txt" +}; + +H55_MajorSeerArtifactsText = { + "/Text/Game/Scripts/Seer/Artifacts/Necromancer_Pendant/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Nightmarish_Ring/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Four_leaf_clover/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Great_Axe_of_giant_slaying/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Lion_hide_cape/Name.txt" +}; + +H55_RelicSeerArtifactsText = { + "/Text/Game/Scripts/Seer/Artifacts/Medical_01/Name.txt", + "/Text/Game/Scripts/Seer/Artifacts/Medical_02/Name.txt" +}; + +H55_SeerRewardText1 = { + "/Text/Game/Scripts/Seer/Levelup.txt", + "/Text/Game/Scripts/Seer/Skill.txt" +}; + +H55_SeerRewardText2 = { + "/Text/Game/Scripts/Seer/Artifact.txt", + "/Text/Game/Scripts/Seer/Gold.txt" +}; + +--Spells + +H55_AdventureSpells = { + SPELL_SUMMON_BOAT, + SPELL_SUMMON_CREATURES, + SPELL_TOWN_PORTAL, + SPELL_DIMENSION_DOOR +}; + +H55_AdventureSpellsText = { + "/Text/Game/Scripts/Spells/spell_name_SPELL_SUMMON_BOAT.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_SUMMON_CREATURES.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_TOWN_PORTAL.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_DIMENSION_DOOR.txt" +}; + +H55_ShamanRnd = { +{{1,2,3},{1,2,3},{1,2,3},{1,2,3}}, +{{3,2,1},{3,2,1},{3,2,1},{3,2,1}}, +{{1,3,2},{1,3,2},{1,3,2},{1,3,2}}, +{{2,3,1},{2,3,1},{2,3,1},{2,3,1}}, +{{2,1,3},{2,1,3},{2,1,3},{2,1,3}}, +{{3,1,2},{3,1,2},{3,1,2},{3,1,2}}, +}; + +H55_UnusualSchools = { +[1] = {SKILL_SUMMONING_MAGIC,SKILL_DESTRUCTIVE_MAGIC}, +[2] = {SKILL_DARK_MAGIC,SKILL_DESTRUCTIVE_MAGIC}, +[3] = {SKILL_LIGHT_MAGIC,SKILL_SUMMONING_MAGIC}, +[4] = {SKILL_LIGHT_MAGIC,SKILL_DESTRUCTIVE_MAGIC}, +[5] = {SKILL_LIGHT_MAGIC,SKILL_DARK_MAGIC}, +[6] = {SKILL_LIGHT_MAGIC,SKILL_SUMMONING_MAGIC}, +[7] = {SKILL_DARK_MAGIC,SKILL_SUMMONING_MAGIC}, +[8] = {SKILL_LIGHT_MAGIC,SKILL_SUMMONING_MAGIC}, +[9] = {SKILL_DARK_MAGIC,SKILL_DESTRUCTIVE_MAGIC} +} + +H55_UnusualSpells = { + [SKILL_SUMMONING_MAGIC] = { + [3] = {SPELL_ANTI_MAGIC,SPELL_BLADE_BARRIER}, + [4] = {SPELL_SUMMON_HIVE,SPELL_FIREWALL}, + [5] = {SPELL_HYPNOTIZE,SPELL_CONJURE_PHOENIX} + }, + [SKILL_DESTRUCTIVE_MAGIC] = { + [3] = {SPELL_FROST_RING,SPELL_CHAIN_LIGHTNING}, + [4] = {SPELL_METEOR_SHOWER,SPELL_DEEP_FREEZE}, + [5] = {SPELL_ARMAGEDDON,SPELL_IMPLOSION} + }, + [SKILL_DARK_MAGIC] = { + [3] = {SPELL_WEAKNESS,SPELL_SORROW}, + [4] = {SPELL_TELEPORT,SPELL_PHANTOM}, + [5] = {SPELL_BERSERK,SPELL_VAMPIRISM} + }, + [SKILL_LIGHT_MAGIC] = { + [3] = {SPELL_DEFLECT_ARROWS,SPELL_REGENERATION}, + [4] = {SPELL_BLIND,SPELL_DIVINE_VENGEANCE}, + [5] = {SPELL_CELESTIAL_SHIELD,SPELL_RESURRECT} + } +}; + +H55_UnusualSpellsText = { + [SKILL_SUMMONING_MAGIC] = { + [3] = {"/Text/Game/Scripts/Spells/spell_name_SPELL_ANTI_MAGIC.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_BLADE_BARRIER.txt"}, + [4] = {"/Text/Game/Scripts/Spells/spell_name_SPELL_SUMMON_HIVE.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_FIREWALL.txt"}, + [5] = {"/Text/Game/Scripts/Spells/spell_name_SPELL_HYPNOTIZE.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_CONJURE_PHOENIX.txt"} + }, + [SKILL_DESTRUCTIVE_MAGIC] = { + [3] = {"/Text/Game/Scripts/Spells/spell_name_SPELL_FROST_RING.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_CHAIN_LIGHTNING.txt"}, + [4] = {"/Text/Game/Scripts/Spells/spell_name_SPELL_METEOR_SHOWER.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_DEEP_FREEZE.txt"}, + [5] = {"/Text/Game/Scripts/Spells/spell_name_SPELL_ARMAGEDDON.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_IMPLOSION.txt"} + }, + [SKILL_DARK_MAGIC] = { + [3] = {"/Text/Game/Scripts/Spells/spell_name_SPELL_WEAKNESS.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_SORROW.txt"}, + [4] = {"/Text/Game/Scripts/Spells/spell_name_SPELL_TELEPORT.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_PHANTOM.txt"}, + [5] = {"/Text/Game/Scripts/Spells/spell_name_SPELL_BERSERK.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_VAMPIRISM.txt"} + }, + [SKILL_LIGHT_MAGIC] = { + [3] = {"/Text/Game/Scripts/Spells/spell_name_SPELL_DEFLECT_ARROWS.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_REGENERATION.txt"}, + [4] = {"/Text/Game/Scripts/Spells/spell_name_SPELL_BLIND.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_DIVINE_VENGEANCE.txt"}, + [5] = {"/Text/Game/Scripts/Spells/spell_name_SPELL_CELESTIAL_SHIELD.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_RESURRECT.txt"} + } +}; + +H55_LightSpells = { + SPELL_BLESS, + SPELL_HASTE, + SPELL_MAGIC_ARROW, + SPELL_STONESKIN, + SPELL_DISPEL, + SPELL_BLOODLUST, + SPELL_DEFLECT_ARROWS, + SPELL_REGENERATION, + SPELL_BLIND, + SPELL_HOLY_WORD, + SPELL_DIVINE_VENGEANCE, + SPELL_CELESTIAL_SHIELD, + SPELL_RESURRECT +}; + +H55_UnusualLightSpellsL3 = {SPELL_DEFLECT_ARROWS,SPELL_REGENERATION}; +H55_UnusualLightSpellsL4 = {SPELL_BLIND,SPELL_DIVINE_VENGEANCE}; +H55_UnusualLightSpellsL5 = {SPELL_CELESTIAL_SHIELD,SPELL_RESURRECT}; + +H55_UnusualLightSpellsTextL3 = {"/Text/Game/Scripts/Spells/spell_name_SPELL_DEFLECT_ARROWS.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_REGENERATION.txt"}; +H55_UnusualLightSpellsTextL4 = {"/Text/Game/Scripts/Spells/spell_name_SPELL_BLIND.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_DIVINE_VENGEANCE.txt"}; +H55_UnusualLightSpellsTextL5 = {"/Text/Game/Scripts/Spells/spell_name_SPELL_CELESTIAL_SHIELD.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_RESURRECT.txt"}; + +H55_ShamanLightSpells = { + {SPELL_BLESS, + SPELL_HASTE, + SPELL_STONESKIN}, + {SPELL_DISPEL, + SPELL_DEFLECT_ARROWS, + SPELL_BLOODLUST}, + {SPELL_REGENERATION, + SPELL_BLIND, + SPELL_HOLY_WORD}, + {SPELL_CELESTIAL_SHIELD, + SPELL_DIVINE_VENGEANCE, + SPELL_RESURRECT} +};--Start with Magic arrow + +H55_ShamanLightSpellsText = { + {"/Text/Game/Scripts/Spells/spell_name_SPELL_BLESS.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_HASTE.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_STONESKIN.txt"}, + {"/Text/Game/Scripts/Spells/spell_name_SPELL_DISPEL.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_DEFLECT_ARROWS.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_BLOODLUST.txt"}, + {"/Text/Game/Scripts/Spells/spell_name_SPELL_REGENERATION.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_BLIND.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_HOLY_WORD.txt"}, + {"/Text/Game/Scripts/Spells/spell_name_SPELL_CELESTIAL_SHIELD.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_DIVINE_VENGEANCE.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_RESURRECT.txt"} +}; + +H55_DarkSpells = { + SPELL_SLOW, + SPELL_CURSE, + SPELL_DISRUPTING_RAY, + SPELL_PLAGUE, + SPELL_FORGETFULNESS, + SPELL_WEAKNESS, + SPELL_ANIMATE_DEAD, + SPELL_SORROW, + SPELL_TELEPORT, + SPELL_UNHOLY_WORD, + SPELL_PHANTOM, + SPELL_BERSERK, + SPELL_VAMPIRISM +}; + +H55_UnusualDarkSpellsL3 = {SPELL_TELEPORT,SPELL_SORROW}; +H55_UnusualDarkSpellsL4 = {SPELL_PHANTOM,SPELL_PHANTOM}; +H55_UnusualDarkSpellsL5 = {SPELL_BERSERK,SPELL_VAMPIRISM}; + +H55_UnusualDarkSpellsTextL3 = {"/Text/Game/Scripts/Spells/spell_name_SPELL_TELEPORT.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_SORROW.txt"}; +H55_UnusualDarkSpellsTextL4 = {"/Text/Game/Scripts/Spells/spell_name_SPELL_PHANTOM.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_PHANTOM.txt"}; +H55_UnusualDarkSpellsTextL5 = {"/Text/Game/Scripts/Spells/spell_name_SPELL_BERSERK.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_VAMPIRISM.txt"}; + +H55_ShamanDarkSpells = { + {SPELL_SLOW, + SPELL_DISRUPTING_RAY, + SPELL_CURSE}, + {SPELL_FORGETFULNESS, + SPELL_SORROW, + SPELL_WEAKNESS}, + {SPELL_TELEPORT, + SPELL_ANIMATE_DEAD, + SPELL_PHANTOM}, + {SPELL_UNHOLY_WORD, + SPELL_BERSERK, + SPELL_VAMPIRISM} +};--Start with Plague + +H55_ShamanDarkSpellsText = { + {"/Text/Game/Scripts/Spells/spell_name_SPELL_SLOW.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_DISRUPTING_RAY.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_CURSE.txt"}, + {"/Text/Game/Scripts/Spells/spell_name_SPELL_FORGETFULNESS.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_SORROW.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_WEAKNESS.txt"}, + {"/Text/Game/Scripts/Spells/spell_name_SPELL_TELEPORT.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_ANIMATE_DEAD.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_PHANTOM.txt"}, + {"/Text/Game/Scripts/Spells/spell_name_SPELL_UNHOLY_WORD.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_BERSERK.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_VAMPIRISM.txt"} +}; + +H55_DestructiveSpells = { + SPELL_LIGHTNING_BOLT, + SPELL_STONE_SPIKES, + SPELL_ICE_BOLT, + SPELL_FROST_RING, + SPELL_FIREBALL, + SPELL_CHAIN_LIGHTNING, + SPELL_METEOR_SHOWER, + SPELL_ARMAGEDDON, + SPELL_DEEP_FREEZE, + SPELL_IMPLOSION +}; + +H55_UnusualDestructiveSpellsL3 = {SPELL_FROST_RING,SPELL_CHAIN_LIGHTNING}; +H55_UnusualDestructiveSpellsL4 = {SPELL_METEOR_SHOWER,SPELL_DEEP_FREEZE}; +H55_UnusualDestructiveSpellsL5 = {SPELL_ARMAGEDDON,SPELL_IMPLOSION}; + +H55_UnusualDestructiveSpellsTextL3 = {"/Text/Game/Scripts/Spells/spell_name_SPELL_FROST_RING.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_CHAIN_LIGHTNING.txt"}; +H55_UnusualDestructiveSpellsTextL4 = {"/Text/Game/Scripts/Spells/spell_name_SPELL_METEOR_SHOWER.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_DEEP_FREEZE.txt"}; +H55_UnusualDestructiveSpellsTextL5 = {"/Text/Game/Scripts/Spells/spell_name_SPELL_ARMAGEDDON.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_IMPLOSION.txt"}; + +H55_ShamanDestructiveSpells = { + {SPELL_LIGHTNING_BOLT, + SPELL_STONE_SPIKES, + SPELL_LIGHTNING_BOLT}, + {SPELL_ICE_BOLT, + SPELL_CHAIN_LIGHTNING, + SPELL_FIREBALL}, + {SPELL_FROST_RING, + SPELL_IMPLOSION, + SPELL_METEOR_SHOWER}, + {SPELL_ARMAGEDDON, + SPELL_DEEP_FREEZE, + SPELL_DEEP_FREEZE} +}; + +H55_ShamanDestructiveSpellsText = { + {"/Text/Game/Scripts/Spells/spell_name_SPELL_LIGHTNING_BOLT.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_STONE_SPIKES.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_LIGHTNING_BOLT.txt"}, + {"/Text/Game/Scripts/Spells/spell_name_SPELL_ICE_BOLT.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_CHAIN_LIGHTNING.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_FIREBALL.txt"}, + {"/Text/Game/Scripts/Spells/spell_name_SPELL_FROST_RING.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_IMPLOSION.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_METEOR_SHOWER.txt"}, + {"/Text/Game/Scripts/Spells/spell_name_SPELL_ARMAGEDDON.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_DEEP_FREEZE.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_DEEP_FREEZE.txt"} +}; + +H55_SummoningSpells = { + SPELL_MAGIC_FIST, + SPELL_LAND_MINE, + SPELL_WASP_SWARM, + SPELL_ARCANE_CRYSTAL, + SPELL_EARTHQUAKE, + SPELL_SUMMON_ELEMENTALS, + SPELL_BLADE_BARRIER, + SPELL_ANTI_MAGIC, + SPELL_SUMMON_HIVE, + SPELL_FIREWALL, + SPELL_HYPNOTIZE, + SPELL_CONJURE_PHOENIX +}; + +H55_UnusualSummoningSpellsL3 = {SPELL_ANTI_MAGIC,SPELL_BLADE_BARRIER}; +H55_UnusualSummoningSpellsL4 = {SPELL_SUMMON_HIVE,SPELL_FIREWALL}; +H55_UnusualSummoningSpellsL5 = {SPELL_HYPNOTIZE,SPELL_CONJURE_PHOENIX}; + +H55_UnusualSummoningSpellsTextL3 = {"/Text/Game/Scripts/Spells/spell_name_SPELL_ANTI_MAGIC.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_BLADE_BARRIER.txt"}; +H55_UnusualSummoningSpellsTextL4 = {"/Text/Game/Scripts/Spells/spell_name_SPELL_SUMMON_HIVE.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_FIREWALL.txt"}; +H55_UnusualSummoningSpellsTextL5 = {"/Text/Game/Scripts/Spells/spell_name_SPELL_HYPNOTIZE.txt","/Text/Game/Scripts/Spells/spell_name_SPELL_CONJURE_PHOENIX.txt"}; + +H55_ShamanSummoningSpells = { + {SPELL_MAGIC_FIST, + SPELL_LAND_MINE, + SPELL_WASP_SWARM}, + {SPELL_ARCANE_CRYSTAL, + SPELL_SUMMON_ELEMENTALS, + SPELL_EARTHQUAKE}, + {SPELL_BLADE_BARRIER, + SPELL_SUMMON_HIVE, + SPELL_ANTI_MAGIC}, + {SPELL_FIREWALL, + SPELL_HYPNOTIZE, + SPELL_CONJURE_PHOENIX} +}; + +H55_ShamanSummoningSpellsText = { + {"/Text/Game/Scripts/Spells/spell_name_SPELL_MAGIC_FIST.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_LAND_MINE.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_WASP_SWARM.txt"}, + {"/Text/Game/Scripts/Spells/spell_name_SPELL_ARCANE_CRYSTAL.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_SUMMON_ELEMENTALS.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_EARTHQUAKE.txt"}, + {"/Text/Game/Scripts/Spells/spell_name_SPELL_BLADE_BARRIER.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_SUMMON_HIVE.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_ANTI_MAGIC.txt"}, + {"/Text/Game/Scripts/Spells/spell_name_SPELL_FIREWALL.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_HYPNOTIZE.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_CONJURE_PHOENIX.txt"} +}; + +H55_SpellsL1 = { + SPELL_SLOW, + SPELL_CURSE, + SPELL_DISRUPTING_RAY, + SPELL_LIGHTNING_BOLT, + SPELL_STONE_SPIKES, + SPELL_STONESKIN, + SPELL_BLESS, + SPELL_HASTE, + SPELL_WASP_SWARM, + SPELL_LAND_MINE +}; --amount is 10 + +H55_SpellsTextL1 = { + "/Text/Game/Scripts/Spells/spell_name_SPELL_SLOW.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_CURSE.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_DISRUPTING_RAY.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_LIGHTNING_BOLT.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_STONE_SPIKES.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_STONESKIN.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_BLESS.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_HASTE.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_WASP_SWARM.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_LAND_MINE.txt" +}; + +H55_SpellsL2 = { + SPELL_WEAKNESS, + SPELL_PLAGUE, + SPELL_FORGETFULNESS, + SPELL_FIREBALL, + SPELL_ICE_BOLT, + SPELL_MAGIC_ARROW, + SPELL_DISPEL, + SPELL_BLOODLUST, + SPELL_ARCANE_CRYSTAL, + SPELL_EARTHQUAKE, + SPELL_MAGIC_FIST +}; --amount is 11 + +H55_SpellsTextL2 = { + "/Text/Game/Scripts/Spells/spell_name_SPELL_WEAKNESS.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_PLAGUE.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_FORGETFULNESS.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_FIREBALL.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_ICE_BOLT.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_MAGIC_ARROW.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_DISPEL.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_BLOODLUST.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_ARCANE_CRYSTAL.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_EARTHQUAKE.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_MAGIC_FIST.txt" +}; + +H55_SpellsL3 = { + SPELL_ANIMATE_DEAD, + SPELL_TELEPORT, + SPELL_SORROW, + SPELL_CHAIN_LIGHTNING, + SPELL_FROST_RING, + SPELL_DEFLECT_ARROWS, + SPELL_REGENERATION, + SPELL_BLADE_BARRIER, + SPELL_ANTI_MAGIC, + SPELL_SUMMON_ELEMENTALS +}; --amount is 10 + +H55_SpellsTextL3 = { + "/Text/Game/Scripts/Spells/spell_name_SPELL_ANIMATE_DEAD.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_TELEPORT.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_SORROW.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_CHAIN_LIGHTNING.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_FROST_RING.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_DEFLECT_ARROWS.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_REGENERATION.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_BLADE_BARRIER.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_ANTI_MAGIC.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_SUMMON_ELEMENTALS.txt" +}; + +H55_SpellsL4 = { + SPELL_UNHOLY_WORD, + SPELL_PHANTOM, + SPELL_METEOR_SHOWER, + SPELL_DEEP_FREEZE, + SPELL_BLIND, + SPELL_DIVINE_VENGEANCE, + SPELL_HOLY_WORD, + SPELL_FIREWALL, + SPELL_SUMMON_HIVE +}; --amount is 9 + +H55_SpellsTextL4 = { + "/Text/Game/Scripts/Spells/spell_name_SPELL_UNHOLY_WORD.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_PHANTOM.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_METEOR_SHOWER.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_DEEP_FREEZE.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_BLIND.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_DIVINE_VENGEANCE.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_HOLY_WORD.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_FIREWALL.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_SUMMON_HIVE.txt" +}; + +H55_SpellsL5 = { + SPELL_BERSERK, + SPELL_VAMPIRISM, + SPELL_ARMAGEDDON, + SPELL_IMPLOSION, + SPELL_RESURRECT, + SPELL_CELESTIAL_SHIELD, + SPELL_HYPNOTIZE, + SPELL_CONJURE_PHOENIX +}; --amount is 8 + +H55_SpellsTextL5 = { + "/Text/Game/Scripts/Spells/spell_name_SPELL_BERSERK.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_VAMPIRISM.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_ARMAGEDDON.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_IMPLOSION.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_RESURRECT.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_CELESTIAL_SHIELD.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_HYPNOTIZE.txt", + "/Text/Game/Scripts/Spells/spell_name_SPELL_CONJURE_PHOENIX.txt" +}; + +H55_RuneSpells = { + 249, --SPELL_RUNE_OF_CHARGE, + 250, --SPELL_RUNE_OF_BERSERKING, + 251, --SPELL_RUNE_OF_MAGIC_CONTROL, + 252, --SPELL_RUNE_OF_EXORCISM, + 253, --SPELL_RUNE_OF_ELEMENTAL_IMMUNITY, + 254, --SPELL_RUNE_OF_STUNNING, + 255, --SPELL_RUNE_OF_BATTLERAGE, + 256, --SPELL_RUNE_OF_ETHEREALNESS, + 257, --SPELL_RUNE_OF_REVIVE, + 258 --SPELL_RUNE_OF_DRAGONFORM +}; + +H55_Warcries = { + SPELL_WARCRY_WORD_OF_THE_CHIEF, + SPELL_WARCRY_CALL_OF_BLOOD, + SPELL_WARCRY_FEAR_MY_ROAR, + SPELL_WARCRY_BATTLECRY, + SPELL_WARCRY_RALLING_CRY, + SPELL_WARCRY_SHOUT_OF_MANY +}; + +-- H55_WarcriesText = { + -- "/Text/Game/Scripts/Spells/spell_name_SPELL_WARCRY_WORD_OF_THE_CHIEF.txt", + -- "/Text/Game/Scripts/Spells/spell_name_SPELL_WARCRY_CALL_OF_BLOOD.txt", + -- "/Text/Game/Scripts/Spells/spell_name_SPELL_WARCRY_FEAR_MY_ROAR.txt", + -- "/Text/Game/Scripts/Spells/spell_name_SPELL_WARCRY_BATTLECRY.txt", + -- "/Text/Game/Scripts/Spells/spell_name_SPELL_WARCRY_RALLING_CRY.txt", + -- "/Text/Game/Scripts/Spells/spell_name_SPELL_WARCRY_SHOUT_OF_MANY.txt" +-- }; + +H55_TransferableSpells = { + SPELL_BLESS, + SPELL_HASTE, + SPELL_MAGIC_ARROW, + SPELL_STONESKIN, + SPELL_DISPEL, + SPELL_BLOODLUST, + SPELL_DEFLECT_ARROWS, + SPELL_REGENERATION, + SPELL_BLIND, + SPELL_HOLY_WORD, + SPELL_DIVINE_VENGEANCE, + SPELL_CELESTIAL_SHIELD, + SPELL_RESURRECT, + SPELL_SLOW, + SPELL_CURSE, + SPELL_DISRUPTING_RAY, + SPELL_PLAGUE, + SPELL_FORGETFULNESS, + SPELL_WEAKNESS, + SPELL_ANIMATE_DEAD, + SPELL_SORROW, + SPELL_TELEPORT, + SPELL_UNHOLY_WORD, + SPELL_PHANTOM, + SPELL_BERSERK, + SPELL_VAMPIRISM, + SPELL_LIGHTNING_BOLT, + SPELL_STONE_SPIKES, + SPELL_ICE_BOLT, + SPELL_FROST_RING, + SPELL_FIREBALL, + SPELL_CHAIN_LIGHTNING, + SPELL_METEOR_SHOWER, + SPELL_ARMAGEDDON, + SPELL_DEEP_FREEZE, + SPELL_IMPLOSION, + SPELL_MAGIC_FIST, + SPELL_LAND_MINE, + SPELL_WASP_SWARM, + SPELL_ARCANE_CRYSTAL, + SPELL_EARTHQUAKE, + SPELL_SUMMON_ELEMENTALS, + SPELL_BLADE_BARRIER, + SPELL_ANTI_MAGIC, + SPELL_SUMMON_HIVE, + SPELL_FIREWALL, + SPELL_HYPNOTIZE, + SPELL_CONJURE_PHOENIX, + + SPELL_SUMMON_BOAT, + SPELL_SUMMON_CREATURES, + SPELL_TOWN_PORTAL, + SPELL_DIMENSION_DOOR, + + SPELL_RUNE_OF_CHARGE, + SPELL_RUNE_OF_BERSERKING, + SPELL_RUNE_OF_MAGIC_CONTROL, + SPELL_RUNE_OF_EXORCISM, + SPELL_RUNE_OF_ELEMENTAL_IMMUNITY, + SPELL_RUNE_OF_STUNNING, + SPELL_RUNE_OF_BATTLERAGE, + SPELL_RUNE_OF_ETHEREALNESS, + SPELL_RUNE_OF_REVIVE, + SPELL_RUNE_OF_DRAGONFORM +}; + +H55_TransferableCries = { + SPELL_SUMMON_BOAT, + SPELL_SUMMON_CREATURES, + SPELL_TOWN_PORTAL, + SPELL_DIMENSION_DOOR, + + SPELL_WARCRY_RALLING_CRY, + SPELL_WARCRY_CALL_OF_BLOOD, + SPELL_WARCRY_WORD_OF_THE_CHIEF, + SPELL_WARCRY_FEAR_MY_ROAR, + SPELL_WARCRY_BATTLECRY, + SPELL_WARCRY_SHOUT_OF_MANY +}; + +H55_TransferableTalismans = { + SPELL_SUMMON_BOAT, + SPELL_SUMMON_CREATURES, + SPELL_TOWN_PORTAL, + SPELL_DIMENSION_DOOR +}; + +H55_RequiredSkillMastery = { + [SPELL_BLESS]=0, + [SPELL_HASTE]=0, + [SPELL_MAGIC_ARROW]=0, + [SPELL_STONESKIN]=0, + [SPELL_DISPEL]=0, + [SPELL_BLOODLUST]=1, + [SPELL_DEFLECT_ARROWS]=1, + [SPELL_REGENERATION]=1, + [SPELL_BLIND]=2, + [SPELL_HOLY_WORD]=2, + [SPELL_DIVINE_VENGEANCE]=2, + [SPELL_CELESTIAL_SHIELD]=3, + [SPELL_RESURRECT]=3, + [SPELL_SLOW]=0, + [SPELL_CURSE]=0, + [SPELL_DISRUPTING_RAY]=0, + [SPELL_PLAGUE]=0, + [SPELL_FORGETFULNESS]=0, + [SPELL_WEAKNESS]=0, + [SPELL_ANIMATE_DEAD]=1, + [SPELL_SORROW]=1, + [SPELL_TELEPORT]=1, + [SPELL_UNHOLY_WORD]=2, + [SPELL_PHANTOM]=2, + [SPELL_BERSERK]=3, + [SPELL_VAMPIRISM]=3, + [SPELL_LIGHTNING_BOLT]=0, + [SPELL_STONE_SPIKES]=0, + [SPELL_ICE_BOLT]=0, + [SPELL_FROST_RING]=1, + [SPELL_FIREBALL]=0, + [SPELL_CHAIN_LIGHTNING]=1, + [SPELL_METEOR_SHOWER]=2, + [SPELL_ARMAGEDDON]=3, + [SPELL_DEEP_FREEZE]=2, + [SPELL_IMPLOSION]=3, + [SPELL_MAGIC_FIST]=0, + [SPELL_LAND_MINE]=0, + [SPELL_WASP_SWARM]=0, + [SPELL_ARCANE_CRYSTAL]=0, + [SPELL_EARTHQUAKE]=0, + [SPELL_SUMMON_ELEMENTALS]=1, + [SPELL_BLADE_BARRIER]=1, + [SPELL_ANTI_MAGIC]=1, + [SPELL_SUMMON_HIVE]=2, + [SPELL_FIREWALL]=2, + [SPELL_HYPNOTIZE]=3, + [SPELL_CONJURE_PHOENIX]=3, + + [SPELL_SUMMON_BOAT]=0, + [SPELL_SUMMON_CREATURES]=0, + [SPELL_TOWN_PORTAL]=0, + [SPELL_DIMENSION_DOOR]=0, + + [SPELL_RUNE_OF_CHARGE]=3, + [SPELL_RUNE_OF_BERSERKING]=1, + [SPELL_RUNE_OF_MAGIC_CONTROL]=1, + [SPELL_RUNE_OF_EXORCISM]=1, + [SPELL_RUNE_OF_ELEMENTAL_IMMUNITY]=1, + [SPELL_RUNE_OF_STUNNING]=2, + [SPELL_RUNE_OF_BATTLERAGE]=3, + [SPELL_RUNE_OF_ETHEREALNESS]=2, + [SPELL_RUNE_OF_REVIVE]=2, + [SPELL_RUNE_OF_DRAGONFORM]=2, + + [SPELL_WARCRY_RALLING_CRY]=1, + [SPELL_WARCRY_CALL_OF_BLOOD]=1, + [SPELL_WARCRY_WORD_OF_THE_CHIEF]=1, + [SPELL_WARCRY_FEAR_MY_ROAR]=1, + [SPELL_WARCRY_BATTLECRY]=1, + [SPELL_WARCRY_SHOUT_OF_MANY]=1 +}; + +H55_RequiredSkill = { + [SPELL_BLESS]=SKILL_LIGHT_MAGIC, + [SPELL_HASTE]=SKILL_LIGHT_MAGIC, + [SPELL_MAGIC_ARROW]=SKILL_LIGHT_MAGIC, + [SPELL_STONESKIN]=SKILL_LIGHT_MAGIC, + [SPELL_DISPEL]=SKILL_LIGHT_MAGIC, + [SPELL_BLOODLUST]=SKILL_LIGHT_MAGIC, + [SPELL_DEFLECT_ARROWS]=SKILL_LIGHT_MAGIC, + [SPELL_REGENERATION]=SKILL_LIGHT_MAGIC, + [SPELL_BLIND]=SKILL_LIGHT_MAGIC, + [SPELL_HOLY_WORD]=SKILL_LIGHT_MAGIC, + [SPELL_DIVINE_VENGEANCE]=SKILL_LIGHT_MAGIC, + [SPELL_CELESTIAL_SHIELD]=SKILL_LIGHT_MAGIC, + [SPELL_RESURRECT]=SKILL_LIGHT_MAGIC, + + [SPELL_SLOW]=SKILL_DARK_MAGIC, + [SPELL_CURSE]=SKILL_DARK_MAGIC, + [SPELL_DISRUPTING_RAY]=SKILL_DARK_MAGIC, + [SPELL_PLAGUE]=SKILL_DARK_MAGIC, + [SPELL_FORGETFULNESS]=SKILL_DARK_MAGIC, + [SPELL_WEAKNESS]=SKILL_DARK_MAGIC, + [SPELL_ANIMATE_DEAD]=SKILL_DARK_MAGIC, + [SPELL_SORROW]=SKILL_DARK_MAGIC, + [SPELL_TELEPORT]=SKILL_DARK_MAGIC, + [SPELL_UNHOLY_WORD]=SKILL_DARK_MAGIC, + [SPELL_PHANTOM]=SKILL_DARK_MAGIC, + [SPELL_BERSERK]=SKILL_DARK_MAGIC, + [SPELL_VAMPIRISM]=SKILL_DARK_MAGIC, + + [SPELL_LIGHTNING_BOLT]=SKILL_DESTRUCTIVE_MAGIC, + [SPELL_STONE_SPIKES]=SKILL_DESTRUCTIVE_MAGIC, + [SPELL_ICE_BOLT]=SKILL_DESTRUCTIVE_MAGIC, + [SPELL_FROST_RING]=SKILL_DESTRUCTIVE_MAGIC, + [SPELL_FIREBALL]=SKILL_DESTRUCTIVE_MAGIC, + [SPELL_CHAIN_LIGHTNING]=SKILL_DESTRUCTIVE_MAGIC, + [SPELL_METEOR_SHOWER]=SKILL_DESTRUCTIVE_MAGIC, + [SPELL_ARMAGEDDON]=SKILL_DESTRUCTIVE_MAGIC, + [SPELL_DEEP_FREEZE]=SKILL_DESTRUCTIVE_MAGIC, + [SPELL_IMPLOSION]=SKILL_DESTRUCTIVE_MAGIC, + + [SPELL_MAGIC_FIST]=SKILL_SUMMONING_MAGIC, + [SPELL_LAND_MINE]=SKILL_SUMMONING_MAGIC, + [SPELL_WASP_SWARM]=SKILL_SUMMONING_MAGIC, + [SPELL_ARCANE_CRYSTAL]=SKILL_SUMMONING_MAGIC, + [SPELL_EARTHQUAKE]=SKILL_SUMMONING_MAGIC, + [SPELL_SUMMON_ELEMENTALS]=SKILL_SUMMONING_MAGIC, + [SPELL_BLADE_BARRIER]=SKILL_SUMMONING_MAGIC, + [SPELL_ANTI_MAGIC]=SKILL_SUMMONING_MAGIC, + [SPELL_SUMMON_HIVE]=SKILL_SUMMONING_MAGIC, + [SPELL_FIREWALL]=SKILL_SUMMONING_MAGIC, + [SPELL_HYPNOTIZE]=SKILL_SUMMONING_MAGIC, + [SPELL_CONJURE_PHOENIX]=SKILL_SUMMONING_MAGIC, + + [SPELL_SUMMON_BOAT]=SKILL_LOGISTICS, + [SPELL_SUMMON_CREATURES]=SKILL_LOGISTICS, + [SPELL_TOWN_PORTAL]=SKILL_LOGISTICS, + [SPELL_DIMENSION_DOOR]=SKILL_LOGISTICS, + + [SPELL_RUNE_OF_CHARGE]=HERO_SKILL_RUNELORE, + [SPELL_RUNE_OF_BERSERKING]=HERO_SKILL_RUNELORE, + [SPELL_RUNE_OF_MAGIC_CONTROL]=HERO_SKILL_RUNELORE, + [SPELL_RUNE_OF_EXORCISM]=HERO_SKILL_RUNELORE, + [SPELL_RUNE_OF_ELEMENTAL_IMMUNITY]=HERO_SKILL_RUNELORE, + [SPELL_RUNE_OF_STUNNING]=HERO_SKILL_RUNELORE, + [SPELL_RUNE_OF_BATTLERAGE]=HERO_SKILL_RUNELORE, + [SPELL_RUNE_OF_ETHEREALNESS]=HERO_SKILL_RUNELORE, + [SPELL_RUNE_OF_REVIVE]=HERO_SKILL_RUNELORE, + [SPELL_RUNE_OF_DRAGONFORM]=HERO_SKILL_RUNELORE, + + [SPELL_WARCRY_RALLING_CRY]=HERO_SKILL_DEMONIC_RAGE, + [SPELL_WARCRY_CALL_OF_BLOOD]=HERO_SKILL_DEMONIC_RAGE, + [SPELL_WARCRY_WORD_OF_THE_CHIEF]=HERO_SKILL_DEMONIC_RAGE, + [SPELL_WARCRY_FEAR_MY_ROAR]=HERO_SKILL_DEMONIC_RAGE, + [SPELL_WARCRY_BATTLECRY]=HERO_SKILL_DEMONIC_RAGE, + [SPELL_WARCRY_SHOUT_OF_MANY]=HERO_SKILL_DEMONIC_RAGE +}; + +--Witch Huts + +------------------------Def,Elt,logt,lck,off,Drk,Dst,Lgt,Smg,Lp/Sc,Cb/Oc,WarM/Racial +H55_WitchRenegades = { 6, 8, 13, 14, 17, 5, 20, 21, 22, 10, 4, 26 }; +H55_WitchKnights = { 6, 8, 13, 14, 17, 19, 20, 12, 22, 10, 4, 26 }; +H55_WitchHeretics = { 6, 8, 13, 14, 17, 5, 7, 21, 24, 23, 16, 26 }; + +H55_WitchRangers = { 6, 8, 13, 14, 17, 19, 20, 12, 22, 10, 4, 26 }; +H55_WitchAvengers = { 6, 8, 13, 14, 17, 5, 7, 21, 24, 10, 4, 26 }; --Summoning instead of Avenger +H55_WitchDruids = { 6, 8, 13, 14, 17, 19, 7, 12, 24, 23, 16, 26 }; + +H55_WitchDemonlords = { 6, 8, 13, 14, 17, 5, 20, 21, 22, 10, 4, 26 }; +H55_WitchGatekeepers = { 6, 8, 13, 14, 17, 5, 7, 12, 22, 23, 9, 26 }; --No Combat/Occultism so included Gating +H55_WitchSorcerers = { 6, 8, 13, 14, 17, 5, 7, 21, 24, 23, 16, 15 }; + +H55_WitchDeathKnights = { 6, 8, 13, 14, 17, 5, 20, 21, 22, 10, 4, 26 }; --Shatter Summoning instead of Necromancy +H55_WitchNecromancers = { 6, 8, 13, 14, 17, 5, 20, 12, 24, 23, 16, 15 }; +H55_WitchNethermages = { 6, 8, 13, 14, 17, 5, 7, 21, 24, 23, 16, 15 }; + +------------------------Def,Elt,logt,lck,off,Drk,Dst,Lgt,Smg,Lp/Sc,Cb/Oc,WarM/Racial +H55_WitchEnchanters = { 6, 8, 13, 14, 17, 5, 20, 12, 22, 10, 1, 26 }; +H55_WitchConjurers = { 6, 8, 13, 14, 17, 5, 7, 21, 24, 23, 16, 1 }; +H55_WitchWizards = { 6, 8, 13, 14, 17, 5, 7, 12, 24, 23, 16, 1 }; + +H55_WitchOverlords = { 6, 8, 13, 14, 17, 5, 20, 21, 22, 10, 4, 26 }; +H55_WitchTricksters = { 6, 8, 13, 14, 17, 5, 7, 12, 22, 23, 16, 26 }; +H55_WitchWarlocks = { 6, 8, 13, 14, 17, 5, 7, 21, 24, 23, 16, 15 }; + +H55_WitchEngineers = { 6, 8, 13, 14, 17, 19, 20, 12, 22, 10, 4, 26 }; --Shatter Summoning instead of Runelore +H55_WitchRunemages = { 6, 8, 13, 14, 17, 5, 20, 12, 24, 10, 18, 26 }; +H55_WitchFlamekeepers = { 6, 8, 13, 14, 17, 19, 7, 12, 24, 23, 16, 18 }; + +H55_WitchChieftains = { 6, 11, 13, 14, 17, 19, 20, 21, 22, 10, 25, 26 }; --Access to all shatters, Voice and Barb learning instead of enlightement +H55_WitchShamans = { 6, 8, 13, 14, 17, 19, 20, 12, 24, 23, 16, 26 }; +H55_WitchWitches = { 6, 8, 13, 14, 17, 5, 7, 21, 24, 23, 16, 15 }; + +H55_WitchSelect = { + H55_WitchRenegades, H55_WitchKnights, H55_WitchHeretics, + H55_WitchRangers, H55_WitchAvengers, H55_WitchDruids, + H55_WitchDemonlords, H55_WitchGatekeepers, H55_WitchSorcerers, + H55_WitchDeathKnights, H55_WitchNecromancers, H55_WitchNethermages, + H55_WitchEnchanters, H55_WitchConjurers, H55_WitchWizards, + H55_WitchOverlords, H55_WitchTricksters, H55_WitchWarlocks, + H55_WitchEngineers, H55_WitchRunemages, H55_WitchFlamekeepers, + H55_WitchChieftains, H55_WitchShamans, H55_WitchWitches +}; + +H55_WitchSkills = { --SKILL ID + SKILL_ARTIFICIER, -- 1 + SKILL_AVENGER, -- 2 + HERO_SKILL_DEMONIC_RAGE, -- 3 + SKILL_TRAINING, -- 4 + SKILL_DARK_MAGIC, -- 5 + SKILL_DEFENCE, -- 6 + SKILL_DESTRUCTIVE_MAGIC, -- 7 + SKILL_LEARNING, -- 8 + SKILL_GATING, -- 9 + SKILL_LEADERSHIP, -- 10 + HERO_SKILL_BARBARIAN_LEARNING, -- 11 + SKILL_LIGHT_MAGIC, -- 12 + SKILL_LOGISTICS, -- 13 + SKILL_LUCK, -- 14 + SKILL_NECROMANCY, -- 15 + SKILL_INVOCATION, -- 16 + SKILL_OFFENCE, -- 17 + HERO_SKILL_RUNELORE, -- 18 + HERO_SKILL_SHATTER_DARK_MAGIC, -- 19 + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC, -- 20 + HERO_SKILL_SHATTER_LIGHT_MAGIC, -- 21 + HERO_SKILL_SHATTER_SUMMONING_MAGIC, -- 22 + SKILL_SORCERY, -- 23 + SKILL_SUMMONING_MAGIC, -- 24 + HERO_SKILL_VOICE, -- 25 + SKILL_WAR_MACHINES -- 26 +}; + +H55_WitchSkillText = { + "/Text/Game/Scripts/Witch/Artificier.txt", + "/Text/Game/Scripts/Witch/Avenger.txt", + "/Text/Game/Scripts/Witch/Bloodrage.txt", + "/Text/Game/Scripts/Witch/Combat.txt", + "/Text/Game/Scripts/Witch/Darkmagic.txt", + "/Text/Game/Scripts/Witch/Defense.txt", + "/Text/Game/Scripts/Witch/Destructivemagic.txt", + "/Text/Game/Scripts/Witch/Enlightment.txt", + "/Text/Game/Scripts/Witch/Gating.txt", + "/Text/Game/Scripts/Witch/Leadership.txt", + "/Text/Game/Scripts/Witch/Learning.txt", + "/Text/Game/Scripts/Witch/Lightmagic.txt", + "/Text/Game/Scripts/Witch/Logistics.txt", + "/Text/Game/Scripts/Witch/Luck.txt", + "/Text/Game/Scripts/Witch/Necromancy.txt", + "/Text/Game/Scripts/Witch/Occultism.txt", + "/Text/Game/Scripts/Witch/Offense.txt", + "/Text/Game/Scripts/Witch/Runelore.txt", + "/Text/Game/Scripts/Witch/Shatterdark.txt", + "/Text/Game/Scripts/Witch/Shatterdestructive.txt", + "/Text/Game/Scripts/Witch/Shatterlight.txt", + "/Text/Game/Scripts/Witch/Shattersummoning.txt", + "/Text/Game/Scripts/Witch/Sorcery.txt", + "/Text/Game/Scripts/Witch/Summoningmagic.txt", + "/Text/Game/Scripts/Witch/Voice.txt", + "/Text/Game/Scripts/Witch/Warmachines.txt" +}; + +H55_WitchMasteryText = { + [0] = "/Text/Game/Scripts/Witch/Basic.txt", + [1] = "/Text/Game/Scripts/Witch/Advanced.txt", + [2] = "/Text/Game/Scripts/Witch/Expert.txt", + [3] = "/Text/Game/Scripts/Witch/Ultimate.txt" +}; + +--Summoning Temple + +H55_SummonResourceText = { + [0] = "/Text/Game/Scripts/Summon/Wood.txt", + [1] = "/Text/Game/Scripts/Summon/Ore.txt", + [2] = "/Text/Game/Scripts/Summon/Mercury.txt", + [3] = "/Text/Game/Scripts/Summon/Crystal.txt", + [4] = "/Text/Game/Scripts/Summon/Sulphur.txt", + [5] = "/Text/Game/Scripts/Summon/Gem.txt" +}; + +--Banks + +H55_BankEnterText = { + "/Text/Game/Scripts/Banks/Ambush.txt", + "/Text/Game/Scripts/Banks/Alone.txt", + "/Text/Game/Scripts/Banks/Idea.txt", + "/Text/Game/Scripts/Banks/Feeling.txt", + "/Text/Game/Scripts/Banks/Empty.txt", + "/Text/Game/Scripts/Banks/Door.txt", + "/Text/Game/Scripts/Banks/Stuck.txt", + "/Text/Game/Scripts/Banks/Visitors.txt", + "/Text/Game/Scripts/Banks/Trap.txt", + "/Text/Game/Scripts/Banks/Moving.txt" +}; + +H55_GraveEnterText = { + "/Text/Game/Scripts/Banks/Idea.txt", + "/Text/Game/Scripts/Banks/Moving.txt", + "/Text/Game/Scripts/Banks/Visitors.txt", + "/Text/Game/Scripts/Banks/Feeling.txt", + "/Text/Game/Scripts/Banks/Alone.txt" +}; + +H55_WagonEnterText = { + "/Text/Game/Scripts/Banks/Ambush.txt", + "/Text/Game/Scripts/Banks/Trap.txt", + "/Text/Game/Scripts/Banks/Ours.txt", + "/Text/Game/Scripts/Banks/Thief.txt", + "/Text/Game/Scripts/Banks/Better.txt" +}; + +H55_StatAwards = {STAT_ATTACK,STAT_DEFENCE,STAT_SPELL_POWER,STAT_KNOWLEDGE}; + +H55_BankStatText = { + "/Text/Game/Scripts/Banks/Attack.txt", + "/Text/Game/Scripts/Banks/Defense.txt", + "/Text/Game/Scripts/Banks/Spellpower.txt", + "/Text/Game/Scripts/Banks/Knowledge.txt" +}; + +H55_BankDocumentsL1 = { + "/Text/Game/Scripts/Banks/Journal.txt", + "/Text/Game/Scripts/Banks/Memoirs.txt", + "/Text/Game/Scripts/Banks/Diary.txt", + "/Text/Game/Scripts/Banks/Tome.txt" +}; + +H55_BankDocumentsL2 = { + "/Text/Game/Scripts/Banks/Report.txt", + "/Text/Game/Scripts/Banks/Testament.txt", + "/Text/Game/Scripts/Banks/Recipe.txt", + "/Text/Game/Scripts/Banks/Bestiary.txt" +}; + +H55_T1DwellingTypes = {"BUILDING_PEASANT_HUT","BUILDING_FAIRIE_TREE","BUILDING_IMP_CRUCIBLE","BUILDING_GRAVEYARD","BUILDING_WORKSHOP","BUILDING_BATTLE_ACADEMY","BUILDING_FORTRESS_DEFENDERS","BUILDING_STRONGHOLD_GOBLINS"}; +H55_T2DwellingTypes = {"BUILDING_ARCHERS_HOUSE","BUILDING_WOOD_GUARD_QUARTERS","BUILDING_DEMON_GATE","BUILDING_FORGOTTEN_CRYPT","BUILDING_STONE_PARAPET","BUILDING_SHADOW_STONE","BUILDING_FORTRESS_AXEMEN","BUILDING_STRONGHOLD_CENTAURS"}; +H55_T3DwellingTypes = {"BUILDING_BARRACKS","BUILDING_HIGH_CABINS","BUILDING_KENNELS","BUILDING_RUINED_TOWER","BUILDING_GOLEM_FORGE","BUILDING_MAZE","BUILDING_FORTRESS_BEAR_RIDERS","BUILDING_STRONGHOLD_WARRIORS"}; +H55_T4DwellingTypes = {"BUILDING_HEAVEN_MILITARY_POST","BUILDING_PRESERVE_MILITARY_POST","BUILDING_INFERNO_MILITARY_POST","BUILDING_NECROPOLIS_MILITARY_POST","BUILDING_ACADEMY_MILITARY_POST","BUILDING_DUNGEON_MILITARY_POST","BUILDING_FORTRESS_MILITARY_POST","BUILDING_STRONGHOLD_MILITARY_POST"}; + +H55_DwellingT1ConvCosts = {1000,5}; +H55_DwellingT2ConvCosts = {2000,5}; +H55_DwellingT3ConvCosts = {3000,5}; +H55_DwellingT4ConvCosts = {4000,5}; + +H55_TM_Txt_NA = "/Text/Game/Scripts/TownPortal/TM_NA.txt"; +H55_TM_Txt_Conquest = "/Text/Game/Scripts/TownPortal/TM_Conquest.txt"; +H55_TM_Txt_Governor = "/Text/Game/Scripts/TownPortal/TM_Governor.txt"; +H55_TM_Txt_Enabled = "/Text/Game/Scripts/TownPortal/TM_Enabled.txt"; +H55_TM_Txt_Disabled = "/Text/Game/Scripts/TownPortal/TM_Disabled.txt"; + +H55_Supply_Txt = { + "/Text/Game/Scripts/Supply/P1Name.txt", + "/Text/Game/Scripts/Supply/P2Name.txt", + "/Text/Game/Scripts/Supply/P3Name.txt", + "/Text/Game/Scripts/Supply/P4Name.txt", + "/Text/Game/Scripts/Supply/P5Name.txt", + "/Text/Game/Scripts/Supply/P6Name.txt", + "/Text/Game/Scripts/Supply/P7Name.txt", + "/Text/Game/Scripts/Supply/P8Name.txt" +}; + +H55_Supply_Txt_Warren = "/Text/Game/Scripts/Supply/WarrenDesc.txt"; +H55_Supply_Txt_Mill = "/Text/Game/Scripts/Supply/MillDesc.txt"; +H55_Supply_Txt_Garden = "/Text/Game/Scripts/Supply/GardenDesc.txt"; +H55_Supply_Txt_Workshop = "/Text/Game/Scripts/Supply/WorkshopDesc.txt"; + +H55_Observatory_Name = "/Text/Game/Scripts/Supply/ObservatoryName.txt"; +H55_Observatory_Txt = "/Text/Game/Scripts/Supply/ObservatoryTxt.txt"; +H55_PotionShop_Name = "/Text/Game/Scripts/Supply/PotionShopName.txt"; +H55_PotionShop_Txt = "/Text/Game/Scripts/Supply/PotionShopTxt.txt"; + +--Duel + +H55_ExpTable = { + 0, + 1000, + 2000, + 3200, + 4600, + + 6200, + 8000, + 10000, + 12200, + 14700, + + 17500, + 20600, + 24320, + 28784, + 34140, + + 40567, + 48279, + 57533, + 68637, + 81961, + + 97600, + 116000, + 139000, + 167000, + 200000, + + 239000, + 286000, + 343000, + 411000, + 492000, + + 590000, + 706000, + 846000, + 1010000, + 1210000, + + 1450000, + 1740000, + 2080000, + 2500000, + 3000000, + + 3600000, + 4330000, + 5230000, + 6310000, + 7640000, + + 9240000, + 11200000, + 13500000, + 16400000, + 20000000, +}; --50 is not the max level + +--Campaigns + +H55_CampaignsM5 = { + "Maps/Scenario/C1M5/", + "Maps/Scenario/C2M5/", + "Maps/Scenario/C3M5/", + "Maps/Scenario/C4M5/", + "Maps/Scenario/C5M5/", + "Maps/Scenario/C6M5/", + "Maps/Scenario/A1C1M5/", + "Maps/Scenario/A1C2M5/", + "Maps/Scenario/A1C3M5/", + "Maps/Scenario/A2C1M5/", + "Maps/Scenario/A2C2M5/", + "Maps/Scenario/A2C3M5/" +}; + +H55_CampaignsM4 = { + "Maps/Scenario/C1M4/", + "Maps/Scenario/C2M4/", + "Maps/Scenario/C3M4/", + "Maps/Scenario/C4M4/", + "Maps/Scenario/C5M4/", + "Maps/Scenario/C6M4/", + "Maps/Scenario/A1C1M4/", + "Maps/Scenario/A1C2M4/", + "Maps/Scenario/A1C3M4/", + "Maps/Scenario/A2C1M4/", + "Maps/Scenario/A2C2M4/", + "Maps/Scenario/A2C3M4/" +}; + +H55_CampaignsM3 = { + "Maps/Scenario/C1M3/", + "Maps/Scenario/C2M3/", + "Maps/Scenario/C3M3/", + "Maps/Scenario/C4M3/", + "Maps/Scenario/C5M3/", + "Maps/Scenario/C6M3/", + "Maps/Scenario/A1C1M3/", + "Maps/Scenario/A1C2M3/", + "Maps/Scenario/A1C3M3/", + "Maps/Scenario/A2C1M3/", + "Maps/Scenario/A2C2M3/", + "Maps/Scenario/A2C3M3/" +}; + +H55_CampaignsM2 = { + "Maps/Scenario/C1M2/", + "Maps/Scenario/C2M2/", + "Maps/Scenario/C3M2/", + "Maps/Scenario/C4M2/", + "Maps/Scenario/C5M2/", + "Maps/Scenario/C6M2/", + "Maps/Scenario/A1C1M2/", + "Maps/Scenario/A1C2M2/", + "Maps/Scenario/A1C3M2/", + "Maps/Scenario/A2C1M2/", + "Maps/Scenario/A2C2M2/", + "Maps/Scenario/A2C3M2/" +}; + +H55_ObjectTiles = { + ["TOWN_ACADEMY"] = { + ["blockedTiles"] = { + ["0"] = { + ["x"] = { [0] = -2, [1] = -1, [2] = 0, [3] = 1, [4] = 2, [5] = -3, [6] = -2, [7] = -1, [8] = 0, [9] = 1, [10] = 2, [11] = 3, [12] = -3, [13] = -2, [14] = -1, [15] = 0, [16] = 1, [17] = 2, [18] = 3, [19] = -4, [20] = -3, [21] = -2, [22] = -1, [23] = 0, [24] = 1, [25] = 2, [26] = 3, [27] = 4, [28] = -4, [29] = -3, [30] = -2, [31] = -1, [32] = 0, [33] = 2, [34] = 3, [35] = 4, [36] = -4, [37] = -3, [38] = -2, [39] = -1, [40] = 0, [41] = 1, [42] = 2, [43] = 3, [44] = 4, [45] = -3, [46] = -2, [47] = -1, [48] = 0, [49] = 1, [50] = 2, [51] = 3, [52] = -3, [53] = -2, [54] = -1, [55] = 0, [56] = 1, [57] = 2, [58] = -1, [59] = 0, [60] = 1, [61] = -2, [62] = 0, [63] = 2, [64] = 3, [65] = 4, [66] = 1, [67] = 2, [68] = 3, [69] = 3, [70] = 4, [71] = 4, [72] = 5, [73] = 5, [74] = 5, [75] = 5, [76] = 4, [77] = 4, [78] = 0, [79] = 2, [80] = 4, [81] = 5, [82] = 5, [83] = 6, [84] = 6, [85] = 6, [86] = 5, [87] = 1 }, + ["y"] = { [0] = -5, [1] = -5, [2] = -5, [3] = -5, [4] = -5, [5] = -4, [6] = -4, [7] = -4, [8] = -4, [9] = -4, [10] = -4, [11] = -4, [12] = -3, [13] = -3, [14] = -3, [15] = -3, [16] = -3, [17] = -3, [18] = -3, [19] = -2, [20] = -2, [21] = -2, [22] = -2, [23] = -2, [24] = -2, [25] = -2, [26] = -2, [27] = -2, [28] = -1, [29] = -1, [30] = -1, [31] = -1, [32] = -1, [33] = -1, [34] = -1, [35] = -1, [36] = 0, [37] = 0, [38] = 0, [39] = 0, [40] = 0, [41] = 0, [42] = 0, [43] = 0, [44] = 0, [45] = 1, [46] = 1, [47] = 1, [48] = 1, [49] = 1, [50] = 1, [51] = 1, [52] = 2, [53] = 2, [54] = 2, [55] = 2, [56] = 2, [57] = 2, [58] = 3, [59] = 3, [60] = 3, [61] = 3, [62] = 4, [63] = 3, [64] = 2, [65] = 1, [66] = 4, [67] = 4, [68] = 3, [69] = -5, [70] = -4, [71] = -3, [72] = -2, [73] = -1, [74] = 0, [75] = 1, [76] = 2, [77] = 3, [78] = -6, [79] = -6, [80] = -5, [81] = -4, [82] = -3, [83] = -2, [84] = -1, [85] = 0, [86] = 2, [87] = -1 } + } + }, + ["activeTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = -6 } + } + }, + ["possessionTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = 0 } + } + }, + ["sharedType"] = "AdvMapTownShared", + ["entries"] = 0 + }, + ["TOWN_DUNGEON"] = { + ["blockedTiles"] = { + ["0"] = { + ["x"] = { [0] = 1, [1] = -1, [2] = -2, [3] = -2, [4] = -1, [5] = 0, [6] = 1, [7] = 2, [8] = 3, [9] = -3, [10] = -2, [11] = -1, [12] = 0, [13] = 1, [14] = 2, [15] = 3, [16] = 4, [17] = -4, [18] = -3, [19] = -2, [20] = -1, [21] = 0, [22] = 1, [23] = 2, [24] = 3, [25] = 4, [26] = -4, [27] = -3, [28] = -2, [29] = -1, [30] = 0, [31] = 1, [32] = 2, [33] = 3, [34] = 4, [35] = 5, [36] = -4, [37] = -3, [38] = -2, [39] = -1, [40] = 0, [41] = 1, [42] = 2, [43] = 3, [44] = 4, [45] = 5, [46] = -3, [47] = -2, [48] = -1, [49] = 0, [50] = 1, [51] = 2, [52] = 3, [53] = 4, [54] = 5, [55] = -2, [56] = -1, [57] = 0, [58] = 1, [59] = 2, [60] = 3, [61] = 4, [62] = 5, [63] = -2, [64] = -1, [65] = 0, [66] = 1, [67] = 2, [68] = 3, [69] = 4, [70] = 0, [71] = 1, [72] = 2, [73] = 0, [74] = 2, [75] = 2, [76] = 3, [77] = 0, [78] = 4, [79] = 4, [80] = 5, [81] = 5, [82] = 6, [83] = 6, [84] = -3, [85] = -3, [86] = 6 }, + ["y"] = { [0] = -5, [1] = -5, [2] = -5, [3] = -4, [4] = -4, [5] = -4, [6] = -4, [7] = -4, [8] = -4, [9] = -3, [10] = -3, [11] = -3, [12] = -3, [13] = -3, [14] = -3, [15] = -3, [16] = -3, [17] = -2, [18] = -2, [19] = -2, [20] = -2, [21] = -2, [22] = -2, [23] = -2, [24] = -2, [25] = -2, [26] = -1, [27] = -1, [28] = -1, [29] = -1, [30] = -1, [31] = -1, [32] = -1, [33] = -1, [34] = -1, [35] = -1, [36] = 0, [37] = 0, [38] = 0, [39] = 0, [40] = 0, [41] = 0, [42] = 0, [43] = 0, [44] = 0, [45] = 0, [46] = 1, [47] = 1, [48] = 1, [49] = 1, [50] = 1, [51] = 1, [52] = 1, [53] = 1, [54] = 1, [55] = 2, [56] = 2, [57] = 2, [58] = 2, [59] = 2, [60] = 2, [61] = 2, [62] = 2, [63] = 3, [64] = 3, [65] = 3, [66] = 3, [67] = 3, [68] = 3, [69] = 3, [70] = 4, [71] = 4, [72] = 4, [73] = -6, [74] = -6, [75] = -5, [76] = -5, [77] = -5, [78] = -5, [79] = -4, [80] = -3, [81] = -2, [82] = -1, [83] = 0, [84] = -4, [85] = 2, [86] = -2 } + } + }, + ["activeTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = -6 } + } + }, + ["possessionTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = -1 } + } + }, + ["sharedType"] = "AdvMapTownShared", + ["entries"] = 0 + }, + ["TOWN_FORTRESS"] = { + ["blockedTiles"] = { + ["0"] = { + ["x"] = { [0] = -2, [1] = -1, [2] = 0, [3] = 1, [4] = 2, [5] = -3, [6] = -2, [7] = -1, [8] = 0, [9] = 1, [10] = 2, [11] = 3, [12] = -3, [13] = -2, [14] = -1, [15] = 0, [16] = 1, [17] = 2, [18] = 3, [19] = -4, [20] = -3, [21] = -2, [22] = -1, [23] = 0, [24] = 1, [25] = 2, [26] = 3, [27] = 4, [28] = -4, [29] = -3, [30] = -2, [31] = -1, [32] = 0, [33] = 2, [34] = 3, [35] = 4, [36] = -4, [37] = -3, [38] = -2, [39] = -1, [40] = 0, [41] = 1, [42] = 2, [43] = 3, [44] = 4, [45] = -3, [46] = -2, [47] = -1, [48] = 0, [49] = 1, [50] = 2, [51] = 3, [52] = -3, [53] = -2, [54] = -1, [55] = 0, [56] = 1, [57] = 2, [58] = -1, [59] = 0, [60] = 1, [61] = -2, [62] = 0, [63] = 2, [64] = 3, [65] = 4, [66] = 1, [67] = 2, [68] = 3, [69] = 3, [70] = 4, [71] = 4, [72] = 5, [73] = 5, [74] = 5, [75] = 5, [76] = 4, [77] = 4, [78] = 0, [79] = 2, [80] = 4, [81] = 5, [82] = 5, [83] = 6, [84] = 6, [85] = 6, [86] = 5, [87] = 1 }, + ["y"] = { [0] = -5, [1] = -5, [2] = -5, [3] = -5, [4] = -5, [5] = -4, [6] = -4, [7] = -4, [8] = -4, [9] = -4, [10] = -4, [11] = -4, [12] = -3, [13] = -3, [14] = -3, [15] = -3, [16] = -3, [17] = -3, [18] = -3, [19] = -2, [20] = -2, [21] = -2, [22] = -2, [23] = -2, [24] = -2, [25] = -2, [26] = -2, [27] = -2, [28] = -1, [29] = -1, [30] = -1, [31] = -1, [32] = -1, [33] = -1, [34] = -1, [35] = -1, [36] = 0, [37] = 0, [38] = 0, [39] = 0, [40] = 0, [41] = 0, [42] = 0, [43] = 0, [44] = 0, [45] = 1, [46] = 1, [47] = 1, [48] = 1, [49] = 1, [50] = 1, [51] = 1, [52] = 2, [53] = 2, [54] = 2, [55] = 2, [56] = 2, [57] = 2, [58] = 3, [59] = 3, [60] = 3, [61] = 3, [62] = 4, [63] = 3, [64] = 2, [65] = 1, [66] = 4, [67] = 4, [68] = 3, [69] = -5, [70] = -4, [71] = -3, [72] = -2, [73] = -1, [74] = 0, [75] = 1, [76] = 2, [77] = 3, [78] = -6, [79] = -6, [80] = -5, [81] = -4, [82] = -3, [83] = -2, [84] = -1, [85] = 0, [86] = 2, [87] = -1 } + } + }, + ["activeTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = -6 } + } + }, + ["possessionTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = 0 } + } + }, + ["sharedType"] = "AdvMapTownShared", + ["entries"] = 0 + }, + ["TOWN_HEAVEN"] = { + ["blockedTiles"] = { + ["0"] = { + ["x"] = { [0] = -1, [1] = 1, [2] = -2, [3] = -1, [4] = 0, [5] = 1, [6] = 2, [7] = -2, [8] = -1, [9] = 0, [10] = 1, [11] = 2, [12] = -2, [13] = -1, [14] = 0, [15] = 1, [16] = 2, [17] = -1, [18] = 0, [19] = 1, [20] = -2, [21] = -1, [22] = 0, [23] = 1, [24] = 0, [25] = 1, [26] = 2, [27] = 3, [28] = -3, [29] = -2, [30] = -1, [31] = 0, [32] = 1, [33] = 2, [34] = 3, [35] = 4, [36] = -3, [37] = -2, [38] = 0, [39] = 2, [40] = 3, [41] = 4, [42] = -3, [43] = 3, [44] = 4, [45] = -3, [46] = 3, [47] = 4, [48] = -3, [49] = 3, [50] = 4, [51] = -3, [52] = -2, [53] = 2, [54] = 3, [55] = 4, [56] = -2, [57] = -1, [58] = 0, [59] = 1, [60] = 2, [61] = 3, [62] = 6, [63] = 6, [64] = 5, [65] = 5, [66] = 0, [67] = 1, [68] = 2, [69] = -4, [70] = -4, [71] = 5, [72] = 5, [73] = -4, [74] = 4, [75] = 5, [76] = 5, [77] = -1, [78] = 2, [79] = 3, [80] = 4, [81] = 6, [82] = 5, [83] = 4, [84] = 2, [85] = -3, [86] = 0, [87] = -2 }, + ["y"] = { [0] = -2, [1] = -2, [2] = -1, [3] = -1, [4] = -1, [5] = -1, [6] = -1, [7] = 0, [8] = 0, [9] = 0, [10] = 0, [11] = 0, [12] = 1, [13] = 1, [14] = 1, [15] = 1, [16] = 1, [17] = 2, [18] = 2, [19] = 2, [20] = -4, [21] = -4, [22] = -5, [23] = -5, [24] = -4, [25] = -4, [26] = -4, [27] = -4, [28] = -3, [29] = -3, [30] = -3, [31] = -3, [32] = -3, [33] = -3, [34] = -3, [35] = -3, [36] = -2, [37] = -2, [38] = -2, [39] = -2, [40] = -2, [41] = -2, [42] = -1, [43] = -1, [44] = -1, [45] = 0, [46] = 0, [47] = 0, [48] = 1, [49] = 1, [50] = 1, [51] = 2, [52] = 2, [53] = 2, [54] = 2, [55] = 2, [56] = 3, [57] = 3, [58] = 3, [59] = 3, [60] = 3, [61] = 3, [62] = -1, [63] = 0, [64] = 2, [65] = 1, [66] = 4, [67] = 4, [68] = 4, [69] = 0, [70] = -1, [71] = 0, [72] = -1, [73] = -2, [74] = -4, [75] = -2, [76] = -3, [77] = -5, [78] = -5, [79] = -5, [80] = 3, [81] = -2, [82] = -4, [83] = -5, [84] = -6, [85] = -4, [86] = -6, [87] = -5 } + }, + ["1"] = { + ["x"] = { }, + ["y"] = { } + } + }, + ["activeTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = -6 } + }, + ["1"] = { + ["x"] = { [0] = -4, [1] = -3, [2] = -2, [3] = -1, [4] = 0, [5] = 1, [6] = 2, [7] = 3, [8] = 4, [9] = -4, [10] = -3, [11] = -2, [12] = -1, [13] = 0, [14] = 1, [15] = 2, [16] = 3, [17] = 4, [18] = -4, [19] = -3, [20] = -2, [21] = -1, [22] = 0, [23] = 1, [24] = 2, [25] = 3, [26] = 4, [27] = -4, [28] = -3, [29] = -2, [30] = -1, [31] = 0, [32] = 1, [33] = 2, [34] = 3, [35] = 4, [36] = -4, [37] = -3, [38] = -2, [39] = -1, [40] = 0, [41] = 1, [42] = 2, [43] = 3, [44] = 4, [45] = -4, [46] = -3, [47] = -2, [48] = -1, [49] = 0, [50] = 1, [51] = 2, [52] = 3, [53] = 4, [54] = -4, [55] = -3, [56] = -2, [57] = -1, [58] = 0, [59] = 1, [60] = 2, [61] = 3, [62] = 4, [63] = -4, [64] = -3, [65] = -2, [66] = -1, [67] = 0, [68] = 1, [69] = 2, [70] = 3, [71] = 4, [72] = -4, [73] = -3, [74] = -2, [75] = -1, [76] = 0, [77] = 1, [78] = 2, [79] = 3, [80] = 4 }, + ["y"] = { [0] = -4, [1] = -4, [2] = -4, [3] = -4, [4] = -4, [5] = -4, [6] = -4, [7] = -4, [8] = -4, [9] = -3, [10] = -3, [11] = -3, [12] = -3, [13] = -3, [14] = -3, [15] = -3, [16] = -3, [17] = -3, [18] = -2, [19] = -2, [20] = -2, [21] = -2, [22] = -2, [23] = -2, [24] = -2, [25] = -2, [26] = -2, [27] = -1, [28] = -1, [29] = -1, [30] = -1, [31] = -1, [32] = -1, [33] = -1, [34] = -1, [35] = -1, [36] = 0, [37] = 0, [38] = 0, [39] = 0, [40] = 0, [41] = 0, [42] = 0, [43] = 0, [44] = 0, [45] = 1, [46] = 1, [47] = 1, [48] = 1, [49] = 1, [50] = 1, [51] = 1, [52] = 1, [53] = 1, [54] = 2, [55] = 2, [56] = 2, [57] = 2, [58] = 2, [59] = 2, [60] = 2, [61] = 2, [62] = 2, [63] = 3, [64] = 3, [65] = 3, [66] = 3, [67] = 3, [68] = 3, [69] = 3, [70] = 3, [71] = 3, [72] = 4, [73] = 4, [74] = 4, [75] = 4, [76] = 4, [77] = 4, [78] = 4, [79] = 4, [80] = 4 } + } + }, + ["possessionTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = -1 } + }, + ["1"] = { + ["x"] = { [0] = 0 }, + ["y"] = { [0] = 0 } + } + }, + ["sharedType"] = "AdvMapTownShared", + ["entries"] = 1 + }, + ["TOWN_INFERNO"] = { + ["blockedTiles"] = { + ["0"] = { + ["x"] = { [0] = -2, [1] = -2, [2] = -1, [3] = -3, [4] = -3, [5] = -4, [6] = -4, [7] = -3, [8] = -3, [9] = -3, [10] = -2, [11] = -1, [12] = 0, [13] = 1, [14] = 2, [15] = 3, [16] = -1, [17] = 0, [18] = 1, [19] = 2, [20] = 3, [21] = -1, [22] = 0, [23] = 1, [24] = 2, [25] = 3, [26] = -1, [27] = 0, [28] = 1, [29] = 2, [30] = 3, [31] = -1, [32] = 0, [33] = 1, [34] = 2, [35] = 3, [36] = -2, [37] = -2, [38] = -2, [39] = -2, [40] = -1, [41] = 0, [42] = 1, [43] = 2, [44] = 3, [45] = 2, [46] = 3, [47] = 4, [48] = -4, [49] = -3, [50] = -2, [51] = -1, [52] = 2, [53] = 3, [54] = 4, [55] = 4, [56] = 4, [57] = 4, [58] = 4, [59] = 4, [60] = 5, [61] = 5, [62] = 5, [63] = 5, [64] = 5, [65] = 5, [66] = -1, [67] = 0, [68] = 1, [69] = 2, [70] = 3, [71] = 4, [72] = 0, [73] = 6, [74] = 6, [75] = 6, [76] = 1, [77] = 1, [78] = 0, [79] = 0, [80] = 4, [81] = 5, [82] = 2, [83] = -3, [84] = 0, [85] = 1, [86] = 2, [87] = -2 }, + ["y"] = { [0] = -3, [1] = -4, [2] = -4, [3] = -4, [4] = -3, [5] = -1, [6] = 0, [7] = -2, [8] = -1, [9] = 0, [10] = -2, [11] = -3, [12] = -3, [13] = -3, [14] = -3, [15] = -3, [16] = -2, [17] = -2, [18] = -2, [19] = -2, [20] = -2, [21] = -1, [22] = -1, [23] = -1, [24] = -1, [25] = -1, [26] = 0, [27] = 0, [28] = 0, [29] = 0, [30] = 0, [31] = 1, [32] = 1, [33] = 1, [34] = 1, [35] = 1, [36] = -1, [37] = 0, [38] = 1, [39] = 2, [40] = 2, [41] = 2, [42] = 2, [43] = 2, [44] = 2, [45] = -4, [46] = -4, [47] = -4, [48] = -2, [49] = 1, [50] = -5, [51] = -5, [52] = -5, [53] = -5, [54] = -3, [55] = -2, [56] = -1, [57] = 0, [58] = 1, [59] = 2, [60] = -3, [61] = -2, [62] = -1, [63] = 0, [64] = 1, [65] = 2, [66] = 3, [67] = 3, [68] = 3, [69] = 3, [70] = 3, [71] = 3, [72] = -4, [73] = -2, [74] = -1, [75] = 0, [76] = -4, [77] = -5, [78] = -5, [79] = -6, [80] = -5, [81] = -4, [82] = -6, [83] = 2, [84] = 4, [85] = 4, [86] = 4, [87] = 3 } + } + }, + ["activeTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = -6 } + } + }, + ["possessionTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = -1 } + } + }, + ["sharedType"] = "AdvMapTownShared", + ["entries"] = 0 + }, + ["TOWN_NECROMANCY"] = { + ["blockedTiles"] = { + ["0"] = { + ["x"] = { [0] = -1, [1] = 1, [2] = -2, [3] = -1, [4] = 0, [5] = 1, [6] = 2, [7] = -2, [8] = -1, [9] = 0, [10] = 1, [11] = 2, [12] = -2, [13] = -1, [14] = 0, [15] = 1, [16] = 2, [17] = -1, [18] = 0, [19] = 1, [20] = -2, [21] = -1, [22] = 0, [23] = 0, [24] = 1, [25] = 2, [26] = 3, [27] = -3, [28] = -2, [29] = -1, [30] = 0, [31] = 1, [32] = 2, [33] = 3, [34] = 4, [35] = -3, [36] = -2, [37] = 0, [38] = 2, [39] = 3, [40] = 4, [41] = -3, [42] = 3, [43] = 4, [44] = -3, [45] = 3, [46] = 4, [47] = -3, [48] = 3, [49] = 4, [50] = -3, [51] = -2, [52] = 2, [53] = 3, [54] = 4, [55] = -2, [56] = -1, [57] = 0, [58] = 1, [59] = 2, [60] = 3, [61] = 6, [62] = 6, [63] = 1, [64] = -2, [65] = -1, [66] = 5, [67] = 5, [68] = 0, [69] = 1, [70] = 2, [71] = 3, [72] = -4, [73] = -4, [74] = -4, [75] = 5, [76] = 5, [77] = 4, [78] = 5, [79] = 5, [80] = 2, [81] = 4, [82] = -3, [83] = 6, [84] = 2, [85] = 4, [86] = 5, [87] = 0 }, + ["y"] = { [0] = -2, [1] = -2, [2] = -1, [3] = -1, [4] = -1, [5] = -1, [6] = -1, [7] = 0, [8] = 0, [9] = 0, [10] = 0, [11] = 0, [12] = 1, [13] = 1, [14] = 1, [15] = 1, [16] = 1, [17] = 2, [18] = 2, [19] = 2, [20] = -4, [21] = -4, [22] = -5, [23] = -4, [24] = -4, [25] = -4, [26] = -4, [27] = -3, [28] = -3, [29] = -3, [30] = -3, [31] = -3, [32] = -3, [33] = -3, [34] = -3, [35] = -2, [36] = -2, [37] = -2, [38] = -2, [39] = -2, [40] = -2, [41] = -1, [42] = -1, [43] = -1, [44] = 0, [45] = 0, [46] = 0, [47] = 1, [48] = 1, [49] = 1, [50] = 2, [51] = 2, [52] = 2, [53] = 2, [54] = 2, [55] = 3, [56] = 3, [57] = 3, [58] = 3, [59] = 3, [60] = 3, [61] = -1, [62] = 0, [63] = 5, [64] = 4, [65] = 4, [66] = 2, [67] = 1, [68] = 4, [69] = 4, [70] = 4, [71] = 4, [72] = 1, [73] = 0, [74] = -1, [75] = 0, [76] = -1, [77] = -4, [78] = -2, [79] = -3, [80] = -5, [81] = 3, [82] = 3, [83] = 1, [84] = 5, [85] = 4, [86] = 3, [87] = 5 } + } + }, + ["activeTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = -5 } + } + }, + ["possessionTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = 0 } + } + }, + ["sharedType"] = "AdvMapTownShared", + ["entries"] = 0 + }, + ["TOWN_STRONGHOLD"] = { + ["blockedTiles"] = { + ["0"] = { + ["x"] = { [0] = -2, [1] = -1, [2] = 0, [3] = 1, [4] = 2, [5] = 3, [6] = -3, [7] = -2, [8] = -1, [9] = 0, [10] = 1, [11] = 2, [12] = 3, [13] = 4, [14] = -3, [15] = -2, [16] = -1, [17] = 0, [18] = 1, [19] = 2, [20] = 3, [21] = 4, [22] = -4, [23] = -3, [24] = -2, [25] = -1, [26] = 0, [27] = 1, [28] = 2, [29] = 3, [30] = 4, [31] = -4, [32] = -3, [33] = -2, [34] = -1, [35] = 0, [36] = 1, [37] = 2, [38] = 3, [39] = 4, [40] = 5, [41] = -4, [42] = -3, [43] = -2, [44] = -1, [45] = 0, [46] = 1, [47] = 2, [48] = 3, [49] = 4, [50] = 5, [51] = -3, [52] = -2, [53] = -1, [54] = 0, [55] = 1, [56] = 2, [57] = 3, [58] = 4, [59] = -3, [60] = -2, [61] = -1, [62] = 0, [63] = 1, [64] = 2, [65] = 3, [66] = 4, [67] = -1, [68] = 0, [69] = 1, [70] = 2, [71] = 3, [72] = 0, [73] = 1, [74] = 5, [75] = -1, [76] = -2, [77] = -3, [78] = -4, [79] = -4, [80] = -5, [81] = -5, [82] = -5, [83] = -4, [84] = -4, [85] = -3, [86] = -1, [87] = 1 }, + ["y"] = { [0] = -4, [1] = -4, [2] = -4, [3] = -4, [4] = -4, [5] = -4, [6] = -3, [7] = -3, [8] = -3, [9] = -3, [10] = -3, [11] = -3, [12] = -3, [13] = -3, [14] = -2, [15] = -2, [16] = -2, [17] = -2, [18] = -2, [19] = -2, [20] = -2, [21] = -2, [22] = -1, [23] = -1, [24] = -1, [25] = -1, [26] = -1, [27] = -1, [28] = -1, [29] = -1, [30] = -1, [31] = 0, [32] = 0, [33] = 0, [34] = 0, [35] = 0, [36] = 0, [37] = 0, [38] = 0, [39] = 0, [40] = 0, [41] = 1, [42] = 1, [43] = 1, [44] = 1, [45] = 1, [46] = 1, [47] = 1, [48] = 1, [49] = 1, [50] = 1, [51] = 2, [52] = 2, [53] = 2, [54] = 2, [55] = 2, [56] = 2, [57] = 2, [58] = 2, [59] = 3, [60] = 3, [61] = 3, [62] = 3, [63] = 3, [64] = 3, [65] = 3, [66] = 3, [67] = 4, [68] = 4, [69] = 4, [70] = 4, [71] = 4, [72] = 5, [73] = 5, [74] = -1, [75] = 5, [76] = 4, [77] = 4, [78] = 3, [79] = 2, [80] = 1, [81] = 0, [82] = -1, [83] = -2, [84] = -3, [85] = -4, [86] = -5, [87] = -5 } + } + }, + ["activeTiles"] = { + ["0"] = { + ["x"] = { [0] = 0 }, + ["y"] = { [0] = -5 } + } + }, + ["possessionTiles"] = { + ["0"] = { + ["x"] = { [0] = 0 }, + ["y"] = { [0] = 0 } + } + }, + ["sharedType"] = "AdvMapTownShared", + ["entries"] = 0 + }, + ["TOWN_PRESERVE"] = { + ["blockedTiles"] = { + ["0"] = { + ["x"] = { [0] = -1, [1] = 1, [2] = -2, [3] = -1, [4] = 0, [5] = 1, [6] = 2, [7] = -2, [8] = -1, [9] = 0, [10] = 1, [11] = 2, [12] = -2, [13] = -1, [14] = 0, [15] = 1, [16] = 2, [17] = -1, [18] = 0, [19] = 1, [20] = -2, [21] = -1, [22] = 0, [23] = 0, [24] = 1, [25] = 2, [26] = 3, [27] = -3, [28] = -2, [29] = -1, [30] = 0, [31] = 1, [32] = 2, [33] = 3, [34] = 4, [35] = -3, [36] = -2, [37] = 0, [38] = 2, [39] = 3, [40] = 4, [41] = -3, [42] = 3, [43] = 4, [44] = -3, [45] = 3, [46] = 4, [47] = -3, [48] = 3, [49] = 4, [50] = -3, [51] = -2, [52] = 2, [53] = 3, [54] = 4, [55] = -2, [56] = -1, [57] = 0, [58] = 1, [59] = 2, [60] = 3, [61] = 6, [62] = 6, [63] = 0, [64] = 1, [65] = -2, [66] = -1, [67] = 5, [68] = 5, [69] = 0, [70] = 1, [71] = 2, [72] = 3, [73] = -4, [74] = -4, [75] = -4, [76] = 5, [77] = 5, [78] = 4, [79] = 5, [80] = 5, [81] = 2, [82] = 4, [83] = -3, [84] = 6, [85] = 2, [86] = 4, [87] = 5 }, + ["y"] = { [0] = -2, [1] = -2, [2] = -1, [3] = -1, [4] = -1, [5] = -1, [6] = -1, [7] = 0, [8] = 0, [9] = 0, [10] = 0, [11] = 0, [12] = 1, [13] = 1, [14] = 1, [15] = 1, [16] = 1, [17] = 2, [18] = 2, [19] = 2, [20] = -4, [21] = -4, [22] = -5, [23] = -4, [24] = -4, [25] = -4, [26] = -4, [27] = -3, [28] = -3, [29] = -3, [30] = -3, [31] = -3, [32] = -3, [33] = -3, [34] = -3, [35] = -2, [36] = -2, [37] = -2, [38] = -2, [39] = -2, [40] = -2, [41] = -1, [42] = -1, [43] = -1, [44] = 0, [45] = 0, [46] = 0, [47] = 1, [48] = 1, [49] = 1, [50] = 2, [51] = 2, [52] = 2, [53] = 2, [54] = 2, [55] = 3, [56] = 3, [57] = 3, [58] = 3, [59] = 3, [60] = 3, [61] = -1, [62] = 0, [63] = 5, [64] = 5, [65] = 4, [66] = 4, [67] = 2, [68] = 1, [69] = 4, [70] = 4, [71] = 4, [72] = 4, [73] = 1, [74] = 0, [75] = -1, [76] = 0, [77] = -1, [78] = -4, [79] = -2, [80] = -3, [81] = -5, [82] = 3, [83] = 3, [84] = 1, [85] = 5, [86] = 4, [87] = 3 } + } + }, + ["activeTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = -5 } + } + }, + ["possessionTiles"] = { + ["0"] = { + ["x"] = { [0] = 1 }, + ["y"] = { [0] = 0 } + } + }, + ["sharedType"] = "AdvMapTownShared", + ["entries"] = 0 + } + } + +--------------------------------------------------------------------------------------------------------------------------------------------- +--APPENDIX +--------------------------------------------------------------------------------------------------------------------------------------------- + +-- H55_MultiplayerMaps = { + -- "Maps/Multiplayer/A1L1/", + -- "Maps/Multiplayer/A1L10/", + -- "Maps/Multiplayer/A1M2/", + -- "Maps/Multiplayer/A1M3/", + -- "Maps/Multiplayer/A1M4/", + -- "Maps/Multiplayer/A1M5/", + -- "Maps/Multiplayer/A1M6/", + -- "Maps/Multiplayer/A1M7/", + -- "Maps/Multiplayer/A1M9/", + -- "Maps/Multiplayer/A1S1/", + -- "Maps/Multiplayer/A2M1/", + -- "Maps/Multiplayer/A2M2/", + -- "Maps/Multiplayer/A2M4/", + -- "Maps/Multiplayer/A2M5/", + -- "Maps/Multiplayer/A2M7/", + -- "Maps/Multiplayer/A2M8/", + -- "Maps/Multiplayer/A2M10/", + -- "Maps/Multiplayer/A2M11/", + -- "Maps/Multiplayer/A2M12/", + -- "Maps/Multiplayer/A2M13/", + -- "Maps/Multiplayer/L1/", + -- "Maps/Multiplayer/L2/", + -- "Maps/Multiplayer/L3/", + -- "Maps/Multiplayer/L4/", --Rise to Power + -- "Maps/Multiplayer/M1/", + -- "Maps/Multiplayer/M2/", + -- "Maps/Multiplayer/M3/", + -- "Maps/Multiplayer/M4/", + -- "Maps/Multiplayer/M5/", + -- "Maps/Multiplayer/M6/", + -- "Maps/Multiplayer/M7/", + -- "Maps/Multiplayer/M8/", + -- "Maps/Multiplayer/M9/", + -- "Maps/Multiplayer/M10/", + -- "Maps/Multiplayer/S1/", + -- "Maps/Multiplayer/S2/", + -- "Maps/Multiplayer/S3/", + -- "Maps/Multiplayer/S4/", + -- "Maps/Multiplayer/XL1/", + -- "Maps/Multiplayer/XL2/" +-- }; + +-- H55_ClassesTexts = { + -- "/Text/Game/Scripts/Classes/H55_Knights.txt", + -- "/Text/Game/Scripts/Classes/H55_Renegades.txt", + -- "/Text/Game/Scripts/Classes/H55_Paladins.txt", + -- "/Text/Game/Scripts/Classes/H55_Heretics.txt", + -- "/Text/Game/Scripts/Classes/H55_Rangers.txt", + -- "/Text/Game/Scripts/Classes/H55_Wardens.txt", + -- "/Text/Game/Scripts/Classes/H55_Druids.txt", + -- "/Text/Game/Scripts/Classes/H55_Demonlords.txt", + -- "/Text/Game/Scripts/Classes/H55_Gatekeepers.txt", + -- "/Text/Game/Scripts/Classes/H55_Sorcerers.txt", + -- "/Text/Game/Scripts/Classes/H55_DeathKnights.txt", + -- "/Text/Game/Scripts/Classes/H55_Reavers.txt", + -- "/Text/Game/Scripts/Classes/H55_Necromancers.txt", + -- "/Text/Game/Scripts/Classes/H55_Seers.txt", + -- "/Text/Game/Scripts/Classes/H55_Wizards.txt", + -- "/Text/Game/Scripts/Classes/H55_Elementalists.txt", + -- "/Text/Game/Scripts/Classes/H55_Overlords.txt", + -- "/Text/Game/Scripts/Classes/H55_Assassins.txt", + -- "/Text/Game/Scripts/Classes/H55_Warlocks.txt", + -- "/Text/Game/Scripts/Classes/H55_Engineers.txt", + -- "/Text/Game/Scripts/Classes/H55_Runemages.txt", + -- "/Text/Game/Scripts/Classes/H55_Flamekeepers.txt", + -- "/Text/Game/Scripts/Classes/H55_Barbarians.txt", + -- "/Text/Game/Scripts/Classes/H55_Shamans.txt", + -- "/Text/Game/Scripts/Classes/H55_Witches.txt" +-- }; + +-- H55_HeroNames = { + -- ["Astral"]="/Text/Game/Heroes/Persons/Academy/Astral/Name.txt", + -- ["Cyrus"]="/Text/Game/Heroes/Persons/Academy/Cyrus/Name.txt", + -- ["Davius"]="/Text/Game/Heroes/Persons/Academy/Davius/Name.txt", + -- ["Emilia"]="/Text/Game/Heroes/Persons/Academy/Emilia/Name.txt", + -- ["Faiz"]="/Text/Game/Heroes/Persons/Academy/Faiz/Name.txt", + -- ["Gurvilin"]="/Text/Game/Heroes/Persons/Academy/Gurvilin/Name.txt", + -- ["Havez"]="/Text/Game/Heroes/Persons/Academy/Havez/Name.txt", + -- ["Isher"]="/Text/Game/Heroes/Persons/Academy/Isher/Name.txt", + -- ["Josephine"]="/Text/Game/Heroes/Persons/Academy/Josephine/Name.txt", + -- ["Maahir"]="/Text/Game/Heroes/Persons/Academy/Maahir/Name.txt", + -- ["Minasli"]="/Text/Game/Heroes/Persons/Academy/Minasli/Name.txt", + -- ["Nur"]="/Text/Game/Heroes/Persons/Academy/Nur/Name.txt", + -- ["Razzak"]="/Text/Game/Heroes/Persons/Academy/Razzak/Name.txt", + -- ["Rissa"]="/Text/Game/Heroes/Persons/Academy/Rissa/Name.txt", + -- ["Sufi"]="/Text/Game/Heroes/Persons/Academy/Sufi/Name.txt", + -- ["Tan"]="/Text/Game/Heroes/Persons/Academy/Tan/Name.txt", + -- ["Timerkhan"]="/Text/Game/Heroes/Persons/Academy/Theodorus/Name.txt", + -- ["Zehir"]="/Text/Game/Heroes/Persons/Academy/Zehir/Name.txt", + -- ["Agbeth"]="/Maps/SingleMissions/A2S3/name.1.txt", + -- ["Almegir"]="/Text/Game/Heroes/Persons/Dungeon/Almegir/Name.txt", + -- ["Dalom"]="/Text/Game/Heroes/Persons/Dungeon/Dalom/Name.txt", + -- ["Eruina"]="/Text/Game/Heroes/Persons/Dungeon/Eruina/Name.txt", + -- ["Ferigl"]="/Text/Game/Heroes/Persons/Dungeon/Ferigl/Name.txt", + -- ["Inagost"]="/Text/Game/Heroes/Persons/Dungeon/Inagost/Name.txt", + -- ["Kastore"]="/Text/Game/Heroes/Persons/Dungeon/Kastore/Name.txt", + -- ["Kelodin"]="/Text/Game/Heroes/Persons/Dungeon/Kelodin/Name.txt", + -- ["Menel"]="/Text/Game/Heroes/Persons/Dungeon/Menel/Name.txt", + -- ["Ohtarig"]="/Text/Game/Heroes/Persons/Dungeon/Ohtarig/Name.txt", + -- ["Raelag"]="/Text/Game/Heroes/Persons/Dungeon/Raelag/Name.txt", + -- ["Ranleth"]="/Maps/Scenario/A2C3M4/name.2.txt", + -- ["Sephinroth"]="/Text/Game/Heroes/Persons/Dungeon/Sephinroth/Name.txt", + -- ["Shadwyn"]="/Text/Game/Heroes/Persons/Dungeon/Shadwyn/Name.txt", + -- ["Sylsai"]="/Text/Game/Heroes/Persons/Dungeon/Sylsai/Name.txt", + -- ["Thralsai"]="/Text/Game/Heroes/Persons/Dungeon/Thralsai/Name.txt", + -- ["Urunir"]="/Text/Game/Heroes/Persons/Dungeon/Urunir/Name.txt", + -- ["Darkstorm"]="/Text/Game/Heroes/Persons/Dungeon/Darkstorm/Name.txt", + -- ["Bart"]="/Text/Game/Heroes/Persons/Dwarves/Bart/Name.txt", + -- ["Bersy"]="/Text/Game/Heroes/Persons/Dwarves/Bersy/Name.txt", + -- ["Brand"]="/Text/Game/Heroes/Persons/Dwarves/Brand/Name.txt", + -- ["Egil"]="/Text/Game/Heroes/Persons/Dwarves/Egil/Name.txt", + -- ["Hangvul"]="/Text/Game/Heroes/Persons/Fortress/Hangvul/Name.txt", + -- ["Hangvul2"]="/Text/Game/Heroes/Persons/Dwarves/Uland/Name.txt", + -- ["Ingvar"]="/Text/Game/Heroes/Persons/Dwarves/Ingvar/Name.txt", + -- ["KingTolghar"]="/Text/Game/Heroes/Persons/Dwarves/King_Tolghar/Name.txt", + -- ["Maximus"]="/Text/Game/Heroes/Persons/Dwarves/Maximus/Name.txt", + -- ["Ottar"]="/Text/Game/Heroes/Persons/Dwarves/Ottar/Name.txt", + -- ["Rolf"]="/Text/Game/Heroes/Persons/Dwarves/Rolf/Name.txt", + -- ["Skeggy"]="/Text/Game/Heroes/Persons/Dwarves/Skeggy/Name.txt", + -- ["Tazar"]="/Text/Game/Heroes/Persons/Dwarves/Tazar/Name.txt", + -- ["Ufretin"]="/Text/Game/Heroes/Persons/Dwarves/Ufretin/Name.txt", + -- ["Una"]="/Text/Game/Heroes/Persons/Dwarves/Una/Name.txt", + -- ["Vegeyr"]="/Text/Game/Heroes/Persons/Dwarves/Vegeyr/Name.txt", + -- ["Vilma"]="/Text/Game/Heroes/Persons/Dwarves/Vilma/Name.txt", + -- ["Wulfstan"]="/Text/Game/Heroes/Persons/Dwarves/Wulfstan/Name.txt", + -- ["Alaric"]="/Text/Game/Heroes/Persons/Haven/Alaric/Name.txt", + -- ["Axel"]="/Text/Game/Heroes/Persons/Haven/Axel/Name.txt", + -- ["Brem"]="/Text/Game/Heroes/Persons/Haven/Brem/Name.txt", + -- ["Duncan"]="/Text/Game/Heroes/Persons/Haven/Duncan/Name.txt", + -- ["GodricMP"]="/Text/Game/Heroes/Persons/Haven/Godric/Name.txt", + -- ["Isabell"]="/Text/Game/Heroes/Persons/Haven/Isabell/Name.txt", + -- ["Jeddite"]="/Text/Game/Heroes/Persons/Haven/Jeddite/Name.txt", + -- ["Maeve"]="/Text/Game/Heroes/Persons/Haven/Maeve/Name.txt", + -- ["Mardigo"]="/Text/Game/Heroes/Persons/Haven/Mardigo/Name.txt", + -- ["Markal"]="/Text/Game/Heroes/Persons/Necropolis/Berein/Name.txt", + -- ["Nathaniel"]="/Text/Game/Heroes/Persons/Haven/Nathaniel/Name.txt", + -- ["Nicolai"]="/Text/Game/Heroes/Persons/Haven/Nicolai/Name.txt", + -- ["Orrin"]="/Text/Game/Heroes/Persons/Haven/Orrin/Name.txt", + -- ["Orlando"]="RedHeavenHero07_Orlando.txt", + -- ["RedHeavenHero01"]="/Text/Game/Heroes/Persons/Haven/RedHeavenHero01/Name.txt", + -- ["RedHeavenHero03"]="/Text/Game/Heroes/Persons/Haven/RedHeavenHero03/Name.txt", + -- ["RedHeavenHero05"]="/Text/Game/Heroes/Persons/Haven/RedHeavenHero05/Name.txt", + -- ["RedHeavenHero06"]="/Text/Game/Heroes/Persons/Haven/RedHeavenHero06/Name.txt", + -- ["Sarge"]="/Text/Game/Heroes/Persons/Haven/Sarge/Name.txt", + -- ["Ving"]="/Text/Game/Heroes/Persons/Haven/Ving/Name.txt", + -- ["Agrael"]="/Text/Game/Heroes/Persons/Inferno/Agrael/Name.txt", + -- ["Ash"]="/Text/Game/Heroes/Persons/Inferno/Ash/Name.txt", + -- ["Biara"]="/Text/Game/Heroes/Persons/Inferno/Biara/Name.txt", + -- ["Calh"]="/Text/Game/Heroes/Persons/Inferno/Calh/Name.txt", + -- ["Calid"]="/Text/Game/Heroes/Persons/Inferno/Calid/Name.txt", + -- ["Calid2"]="/Text/Game/Heroes/Persons/Inferno/Calid2/Name.txt", + -- ["Deleb"]="/Text/Game/Heroes/Persons/Inferno/Deleb/Name.txt", + -- ["Efion"]="/Text/Game/Heroes/Persons/Inferno/Efion/Name.txt", + -- ["Grok"]="/Text/Game/Heroes/Persons/Inferno/Grok/Name.txt", + -- ["Harkenraz"]="/Text/Game/Heroes/Persons/Inferno/Harkenraz/Name.txt", + -- ["Jazaz"]="/Text/Game/Heroes/Persons/Inferno/Jazaz/Name.txt", + -- ["Malustar"]="/Text/Game/Heroes/Persons/Inferno/Malustar/Name.txt", + -- ["Marder"]="/Text/Game/Heroes/Persons/Inferno/Marder/Name.txt", + -- ["Nymus"]="/Text/Game/Heroes/Persons/Inferno/Nymus/Name.txt", + -- ["Oddrema"]="/Text/Game/Heroes/Persons/Inferno/Oddrema/Name.txt", + -- ["Sheltem"]="/Text/Game/Heroes/Persons/Inferno/Sheltem/Name.txt", + -- ["Sovereign"]="/Text/Game/Heroes/Persons/DMessiah/Sovereign/Name.txt", + -- ["Zydar"]="/Text/Game/Heroes/Persons/Inferno/Zydar/Name.txt", + -- ["Arantir"]="/Text/Game/Heroes/Persons/Necropolis/Arantir/Name.txt", + -- ["Aberrar"]="/Text/Game/Heroes/Persons/Necropolis/Aberrar/Name.txt", + -- ["Aislinn"]="/Text/Game/Heroes/Persons/Necropolis/Aislinn/Name.txt", + -- ["Archilus"]="/Text/Game/Heroes/Persons/Necropolis/Archilus/Name.txt", + -- ["Effig"]="/Text/Game/Heroes/Persons/Necropolis/Effig/Name.txt", + -- ["Giovanni"]="/Text/Game/Heroes/Persons/Necropolis/Giovanni/name.txt", + -- ["Gles"]="/Text/Game/Heroes/Persons/Necropolis/Gles/Name.txt", + -- ["Muscip"]="/Text/Game/Heroes/Persons/Necropolis/Muscip/Name.txt", + -- ["Nemor"]="/Text/Game/Heroes/Persons/Necropolis/Nemor/Name.txt", + -- ["Nimbus"]="/Text/Game/Heroes/Persons/Necropolis/Nimbus/Name.txt", + -- ["OrnellaNecro"]="/Text/Game/Heroes/Persons/Necropolis/OrnellaNecro/name.txt", + -- ["Pelt"]="/Text/Game/Heroes/Persons/Necropolis/Pelt/Name.txt", + -- ["Sandro"]="/Text/Game/Heroes/Persons/Necropolis/Sandro/Name.txt", + -- ["Straker"]="/Text/Game/Heroes/Persons/Necropolis/Straker/Name.txt", + -- ["Tamika"]="/Text/Game/Heroes/Persons/Necropolis/Tamika/Name.txt", + -- ["Thant"]="/Text/Game/Heroes/Persons/Necropolis/Thant/Name.txt", + -- ["Vidomina"]="/Text/Game/Heroes/Persons/Necropolis/Vidomina/Name.txt", + -- ["Xerxon"]="/Text/Game/Heroes/Persons/Necropolis/Xerxon/Name.txt", + -- ["Arniel"]="/Text/Game/Heroes/Persons/Preserve/Arniel/Name.txt", + -- ["Diraya"]="/Text/Game/Heroes/Persons/Preserve/Diraya/Name.txt", + -- ["Elleshar"]="/Text/Game/Heroes/Persons/Preserve/Elleshar/Name.txt", + -- ["Gem"]="/Text/Game/Heroes/Persons/Preserve/Gem/Name.txt", + -- ["Gillion"]="/Text/Game/Heroes/Persons/Preserve/Gillion/Name.txt", + -- ["Heam"]="/Text/Game/Heroes/Persons/Preserve/Heam/Name.txt", + -- ["Ildar"]="/Text/Game/Heroes/Persons/Preserve/Ildar/Name.txt", + -- ["Itil"]="/Text/Game/Heroes/Persons/Preserve/Itil/Name.txt", + -- ["Jenova"]="/Text/Game/Heroes/Persons/Preserve/Jenova/Name.txt", + -- ["Kyrre"]="/Text/Game/Heroes/Persons/Preserve/Kyrre/Name.txt", + -- ["Linaas"]="/Text/Game/Heroes/Persons/Preserve/Linaas/Name.txt", + -- ["Melodia"]="/Text/Game/Heroes/Persons/Preserve/Melodia/Name.txt", + -- ["Mephala"]="/Text/Game/Heroes/Persons/Preserve/Mephala/Name.txt", + -- ["Metlirn"]="/Text/Game/Heroes/Persons/Preserve/Metlirn/Name.txt", + -- ["Nadaur"]="/Text/Game/Heroes/Persons/Preserve/Nadaur/Name.txt", + -- ["Ossir"]="/Text/Game/Heroes/Persons/Preserve/Ossir/Name.txt", + -- ["Vaniel"]="/Maps/SingleMissions/A2S2/name.2.txt", + -- ["Vinrael"]="/Text/Game/Heroes/Persons/Preserve/Vinrael/Name.txt", + -- ["Azar"]="/Text/Game/Heroes/Persons/Stronghold/Azar/Name.txt", + -- ["Crag"]="/Text/Game/Heroes/Persons/Stronghold/Crag/Name.txt", + -- ["Erika"]="/Text/Game/Heroes/Persons/Stronghold/Erika/Name.txt", + -- ["Gottai"]="/Text/Game/Heroes/Persons/Stronghold/Gottai/Name.txt", + -- ["Hero1"]="/Text/Game/Heroes/Persons/Stronghold/Hero1/Name.txt", + -- ["Hero2"]="/Text/Game/Heroes/Persons/Stronghold/Hero2/Name.txt", + -- ["Hero3"]="/Text/Game/Heroes/Persons/Stronghold/Hero3/Name.txt", + -- ["Hero4"]="/Text/Game/Heroes/Persons/Stronghold/Hero4/Name.txt", + -- ["Quroq"]="/Text/Game/Heroes/Persons/Stronghold/Quroq/Name.txt", + -- ["Hero6"]="/Text/Game/Heroes/Persons/Stronghold/Hero6/Name.txt", + -- ["Hero7"]="/Text/Game/Heroes/Persons/Stronghold/Hero7/Name.txt", + -- ["Hero8"]="/Text/Game/Heroes/Persons/Stronghold/Hero8/Name.txt", + -- ["Hero9"]="/Text/Game/Heroes/Persons/Stronghold/Hero9/Name.txt", + -- ["Kraal"]="/Text/Game/Heroes/Persons/Stronghold/Kraal/Name.txt", + -- ["KujinMP"]="/Text/Game/Heroes/Persons/Stronghold/Kujin/Name.txt", + -- ["Kunyak"]="/Maps/SingleMissions/A2S1/name.1.txt", + -- ["Matewa"]="/Text/Game/Heroes/Persons/Stronghold/Matewa/Name.txt", + -- ["Mokka"]="/Text/Game/Heroes/Persons/Stronghold/Mokka/Name.txt", + -- ["Shiva"]="/Text/Game/Heroes/Persons/Stronghold/Shiva/Name.txt", + -- ["Zouleika"]="/Text/Game/Heroes/Persons/Stronghold/Zouleika/Name.txt" +-- }; + +-- H55_HavenHeroes = {"Nicolai","GodricMP","Maeve","Nathaniel","Axel","Brem","Jeddite","Markal","Orlando","RedHeavenHero03","RedHeavenHero06","Alaric","AlaricMP","RedHeavenHero01","Duncan","Sarge","Isabell","Mardigo","Ving","Orrin","Godric","Freyda","Ornella","GhostFSLord","Giar","Glen","Laszlo","Isabell_A1","Saint Isabell","RedHeavenHero04","RedHeavenHero02","RedHeavenHero05","Christian","Malik"}; +-- H55_SylvanHeroes = {"Heam","Metlirn","Nadaur","Linaas","Ossir","Jenova","Kyrre","Mephala","Arniel","Ildar","Melodia","Gillion","Vaniel","Elleshar","Vinrael","Itil","Diraya","Gem","Tieru"}; +-- H55_InfernoHeroes = {"Marder","Sheltem","Harkenraz","Calh","Calid","Jazaz","Gamor","Guarg","Erasial","Kha-Beleth","Veyer","DMessiah","Efion","Ash","Nymus","Oddrema","Malustar","Grok","Sovereign","Deleb","Calid2","Zydar","Agrael","AgraelMP","Biara","Nelech"}; +-- H55_DungeonHeroes = {"Agbeth","Ranleth","Sylsai","Urunir","Menel","Ferigl","Dalom","Eruina","Darkstorm","Ohtarig","Thralsai","Almegir","Raelag","Kastore","Kelodin","Shadwyn","ShadwynMP","Sephinroth","Inagost","Raelag_A1","Segref","Ohtar","Eruina_A1","ThralsaiMP","AlmegirMP"}; +-- H55_NecropolisHeroes = {"Gles","Pelt","Tamika","OrnellaNecro","Straker","Xerxon","Archilus","Nimbus","Aislinn","Nemor","Muscip","Giovanni","GiovanniMP","Thant","Vidomina","Arantir","ArantirMP","Aberrar","Effig","Sandro","Berein","Nikolay"}; +-- H55_AcademyHeroes = {"Isher","Rissa","Minasli","Davius","Josephine","Havez","Gurvilin","Razzak","Maahir","Faiz","Sufi","Cyrus","Zehir","Timerkhan","Nur","Tan","Emilia","Astral"}; +-- H55_FortressHeroes = {"Wulfstan","Rolf","Maximus","Tazar","Ingvar","Skeggy","Hangvul2","KingTolghar","Ufretin","Bersy","Ottar","Una","Bart","Vilma","Hangvul","Brand","Egil","Vegeyr"}; +-- H55_StrongholdHeroes = {"Hero1","Hero2","Hero3","Hero4","Hero5","Hero6","Hero7","Hero8","Hero9","Gottai","Crag","Azar","Kraal","Kujin","KujinMP","Kunyak","Matewa","Shiva","Zouleika","Quroq","Mokka","Erika","GottaiMP"}; + +-- local tonum = { + -- ["0"] = 0, + -- ["1"] = 1, ["2"] = 2, ["3"] = 3, ["4"] = 4, ["5"] = 5, ["6"] = 6, ["7"] = 7, ["8"] = 8, ["9"] = 9, ["10"] = 10, + -- ["11"] = 11, ["12"] = 12, ["13"] = 13, ["14"] = 14, ["15"] = 15, ["16"] = 16, ["17"] = 17, ["18"] = 18, ["19"] = 19, ["20"] = 20, + -- ["21"] = 21, ["22"] = 22, ["23"] = 23, ["24"] = 24, ["25"] = 25, ["26"] = 26, ["27"] = 27, ["28"] = 28, ["29"] = 29, ["30"] = 30, + -- ["31"] = 31, ["32"] = 32, ["33"] = 33, ["34"] = 34, ["35"] = 35, ["36"] = 36, ["37"] = 37, ["38"] = 38, ["39"] = 39, ["40"] = 40, + -- ["41"] = 41, ["42"] = 42, ["43"] = 43, ["44"] = 44, ["45"] = 45, ["46"] = 46, ["47"] = 47, ["48"] = 48, ["49"] = 49, ["50"] = 50, + -- ["51"] = 51, ["52"] = 52, ["53"] = 53, ["54"] = 54, ["55"] = 55, ["56"] = 56, ["57"] = 57, ["58"] = 58, ["59"] = 59, ["60"] = 60, + -- ["61"] = 61, ["62"] = 62, ["63"] = 63, ["64"] = 64, ["65"] = 65, ["66"] = 66, ["67"] = 67, ["68"] = 68, ["69"] = 69, ["70"] = 70, + -- ["71"] = 71, ["72"] = 72, ["73"] = 73, ["74"] = 74, ["75"] = 75, ["76"] = 76, ["77"] = 77, ["78"] = 78, ["79"] = 79, ["80"] = 80, + -- ["81"] = 81, ["82"] = 82, ["83"] = 83, ["84"] = 84, ["85"] = 85, ["86"] = 86, ["87"] = 87, ["88"] = 88, ["89"] = 89, ["90"] = 90, + -- ["91"] = 91, ["92"] = 92, ["93"] = 93, ["94"] = 94, ["95"] = 95, ["96"] = 96, ["97"] = 99, ["98"] = 98, ["99"] = 99, ["100"] = 100 +-- }; + +-- H55_Alphabet = { +-- ["a"]=1,["b"]=2,["c"]=3,["d"]=4,["e"]=5,["f"]=6,["g"]=7, +-- ["h"]=8,["i"]=9,["j"]=10,["k"]=11,["l"]=12,["m"]=13, +-- ["n"]=14,["o"]=15,["p"]=16,["q"]=17,["r"]=18,["s"]=19, +-- ["t"]=20,["u"]=21,["v"]=22,["w"]=23,["x"]=24,["y"]=25,["z"]=26 +-- }; + +-- H55_MagicL5 = {}; + +-- for i = 1, table.length(H55_SpellsL5) do + -- H55_MagicL5[H55_SpellsL5[i]] = H55_SpellsTextL5[i]; +-- end; + +------------------------------------------------------------------------------------------------------------------------------------------------------ \ No newline at end of file diff --git a/scripts/H55-Version.lua b/scripts/H55-Version.lua new file mode 100644 index 00000000..32f43329 --- /dev/null +++ b/scripts/H55-Version.lua @@ -0,0 +1,8 @@ +------------------------------------------------------------------------------------------------------------------------------------------------ +-- MIGHT & MAGIC: HEROES 5.5 - VERSION FILE +------------------------------------------------------------------------------------------------------------------------------------------------ +------------------------------------------------------------------------------------------------------------------------------------------------ +-- For checking compatibility with submods or maps +------------------------------------------------------------------------------------------------------------------------------------------------ + +H55_Version = "16b"; \ No newline at end of file diff --git a/scripts/advmap-common.lua b/scripts/advmap-common.lua new file mode 100644 index 00000000..22ea1d7b --- /dev/null +++ b/scripts/advmap-common.lua @@ -0,0 +1,79 @@ +dofile("/scripts/common.lua") + +__difficulty = GetDifficulty(); +__defaultResources = { 20, 20, 10, 10, 10, 10, 20000 }; +__difficultyResModifiers = { 1.5, 1.0, 1.0, 0.5 }; + +function SetPlayerStartResource( nPlayer, nRes, nAmount ) + local resbonus = GetPlayerResource( nPlayer, nRes ) - __defaultResources[nRes + 1] * __difficultyResModifiers[__difficulty + 1]; + SetPlayerResource( nPlayer, nRes, nAmount + resbonus ); +end; + +function GiveExp( heroName, exp ) + ChangeHeroStat( heroName, STAT_EXPERIENCE, exp ) +end + +function IsInDungeon( objectName ) + local x + local y + local floor + x, y, floor = GetObjectPosition( objectName ) + return floor == UNDERGROUND +end + +function IsPlayerHeroesInRegion( playerID, regionName ) + local heroes = GetObjectsInRegion( regionName, OBJECT_HERO ) + for i,hero in heroes do + if GetObjectOwner( hero ) == playerID then + return true + end + end + return nil +end + +function ResetObjectFlashlight( objectName ) + SetObjectFlashlight( objectName, '' ) +end + +function GetObjectCreaturesCount( objectName ) + local units + local count + + units = {} + units[0],units[1],units[2],units[3],units[4],units[5],units[6] = GetObjectCreaturesTypes( objectName ) + + count = 0 + for i,unit in units do + if ( unit ~= 0 ) then + count = count + GetObjectCreatures( objectName, unit ) + end + end + + return count +end + +function GetHeroCreaturesCount( heroName ) + local count + count = GetObjectCreaturesCount( heroName ) + return count +end + +function GetPlayerFilter( player ) + if player == PLAYER_1 then return PLAYERFLT_1; end; + if player == PLAYER_2 then return PLAYERFLT_2; end; + if player == PLAYER_3 then return PLAYERFLT_3; end; + if player == PLAYER_4 then return PLAYERFLT_4; end; + if player == PLAYER_5 then return PLAYERFLT_5; end; + if player == PLAYER_6 then return PLAYERFLT_6; end; + if player == PLAYER_7 then return PLAYERFLT_7; end; + if player == PLAYER_8 then return PLAYERFLT_8; end; + return 0; +end; + +function PlayVoiceover( soundName ) + Play2DSound( soundName, 1 ); +end; + +dofile("/scripts/H55-Tables.lua"); +dofile("/scripts/Frax/Adventure.lua"); +dofile("/scripts/H55-Core.lua"); \ No newline at end of file diff --git a/scripts/advmap-startup.lua b/scripts/advmap-startup.lua new file mode 100644 index 00000000..5b893096 --- /dev/null +++ b/scripts/advmap-startup.lua @@ -0,0 +1,986 @@ +-- Global symbols (DO NOT EDIT) + dofile = doFile + + dofile("/scripts/events.lua") + + -- + -- Logical constants + -- + true = not nil + false = nil + + -- + -- Names filter + -- + FILTER_HEROES = 0 + FILTER_OBJECTS = 1 + FILTER_REGIONS = 2 + FILTER_OBJECTIVES = 3 + + -- + -- Player IDs + -- + PLAYER_NONE = 0 + PLAYER_1 = 1 + PLAYER_2 = 2 + PLAYER_3 = 3 + PLAYER_4 = 4 + PLAYER_5 = 5 + PLAYER_6 = 6 + PLAYER_7 = 7 + PLAYER_8 = 8 + + -- + -- Player states + -- + PLAYER_NOT_IN_GAME = 0 + PLAYER_ACTIVE = 1 + PLAYER_WON = 2 + PLAYER_LOST = 3 + + -- + -- Floors names + -- + GROUND = 0 + UNDERGROUND = 1 + + -- + -- Kinds of resources + -- + WOOD = 0 + ORE = 1 + MERCURY = 2 + CRYSTAL = 3 + SULFUR = 4 + GEM = 5 + GOLD = 6 + + -- + -- Kinds of treasures + -- + TREASURE_CRYSTAL = 0 + TREASURE_GEMS = 1 + TREASURE_GOLD = 2 + TREASURE_MERCURY = 3 + TREASURE_ORE = 4 + TREASURE_SULFUR = 5 + TREASURE_WOOD = 6 + TREASURE_CAMPFIRE = 8 + TREASURE_CHEST = 9 + TREASURE_SEA_CHEST = 10 + TREASURE_FLOATSAM = 11 + TREASURE_SHIPWRECK = 13 + + -- + -- Date type IDs + -- + DAY = 0 + WEEK = 1 + MONTH = 2 + DAY_OF_WEEK = 3 + ABSOLUTE_DAY = DAY + + -- + -- Advmap predefided names + -- + OBJECT_GRAIL = 'grail' + + -- + -- Advmap object types + -- + OBJECT_HERO = 0 + + -- + -- Hero stat`s IDs + -- + STAT_EXPERIENCE = 0 + STAT_ATTACK = 1 + STAT_DEFENCE = 2 + STAT_SPELL_POWER = 3 + STAT_KNOWLEDGE = 4 + STAT_LUCK = 5 + STAT_MORALE = 6 + STAT_MOVE_POINTS = 7 + STAT_MANA_POINTS = 8 + + -- + -- Objective state`s IDs + -- + OBJECTIVE_SCENARIO_INFO = 0 + OBJECTIVE_UNKNOWN = 1 + OBJECTIVE_ACTIVE = 2 + OBJECTIVE_COMPLETED = 3 + OBJECTIVE_FAILED = 4 + + -- + -- Artifact sets IDs (for basic artifact sets) + -- (synchronized with RPGStats/ArtifactSets ) + -- + ARTIFACT_SET_DRAGONISH = 0 + ARTIFACT_SET_DWARVEN = 1 + ARTIFACT_SET_LIONS = 2 + ARTIFACT_SET_MAGIS = 3 + ARTIFACT_SET_NECROMANCERS = 4 + ARTIFACT_SET_EDUCATIONAL = 5 + ARTIFACT_SET_HUNTERS = 6 + ARTIFACT_SET_OGRES = 7 + ARTIFACT_SET_RUNIC = 8 + ARTIFACT_SET_DEMONIC = 9 + + -- + -- Artifact type IDs + -- + ARTIFACT_SWORD_OF_RUINS = 1 + ARTIFACT_GREAT_AXE_OF_GIANT_SLAYING = 2 + ARTIFACT_WAND_OF_X = 3 + ARTIFACT_UNICORN_HORN_BOW = 4 + ARTIFACT_TITANS_TRIDENT = 5 + ARTIFACT_STAFF_OF_VEXINGS = 6 + ARTIFACT_SHACKLES_OF_WAR = 7 + ARTIFACT_FOUR_LEAF_CLOVER = 8 + ARTIFACT_ICEBERG_SHIELD = 9 + ARTIFACT_GOLDEN_SEXTANT = 10 + ARTIFACT_CROWN_OF_COURAGE = 11 + ARTIFACT_CROWN_OF_MANY_EYES = 12 + ARTIFACT_PLATE_MAIL_OF_STABILITY = 13 + ARTIFACT_BREASTPLATE_OF_PETRIFIED_WOOD = 14 + ARTIFACT_PEDANT_OF_MASTERY = 15 + ARTIFACT_NECKLACE_OF_BRAVERY = 16 + ARTIFACT_WEREWOLF_CLAW_NECKLACE = 17 + ARTIFACT_EVERCOLD_ICICLE = 18 + ARTIFACT_NECKLACE_OF_POWER = 19 + ARTIFACT_RING_OF_LIGHTING_PROTECTION = 20 + ARTIFACT_RING_OF_LIFE = 21 + ARTIFACT_RING_OF_HASTE = 22 + ARTIFACT_NIGHTMARISH_RING = 23 + ARTIFACT_BOOTS_OF_SPEED = 24 + ARTIFACT_GOLDEN_HORSESHOE = 25 + ARTIFACT_WAYFARER_BOOTS = 26 + ARTIFACT_BOOTS_OF_INTERFERENCE = 27 + ARTIFACT_ENDLESS_SACK_OF_GOLD = 28 + ARTIFACT_ENDLESS_BAG_OF_GOLD = 29 + ARTIFACT_ANGEL_WINGS = 30 + ARTIFACT_LION_HIDE_CAPE = 31 + ARTIFACT_PHOENIX_FEATHER_CAPE = 32 + ARTIFACT_CLOAK_OF_MOURNING = 33 + ARTIFACT_HELM_OF_ENLIGHTMENT = 34 + ARTIFACT_CHAIN_MAIL_OF_ENLIGHTMENT = 35 + ARTIFACT_DRAGON_SCALE_ARMOR = 36 + ARTIFACT_DRAGON_SCALE_SHIELD = 37 + ARTIFACT_DRAGON_BONE_GRAVES = 38 + ARTIFACT_DRAGON_WING_MANTLE = 39 + ARTIFACT_DRAGON_TEETH_NECKLACE = 40 + ARTIFACT_DRAGON_TALON_CROWN = 41 + ARTIFACT_DRAGON_EYE_RING = 42 + ARTIFACT_DRAGON_FLAME_TONGUE = 43 + ARTIFACT_ROBE_OF_MAGI = 44 + ARTIFACT_STAFF_OF_MAGI = 45 + ARTIFACT_CROWN_OF_MAGI = 46 + ARTIFACT_RING_OF_MAGI = 47 + ARTIFACT_DWARVEN_MITHRAL_CUIRASS = 48 + ARTIFACT_DWARVEN_MITHRAL_GREAVES = 49 + ARTIFACT_DWARVEN_MITHRAL_HELMET = 50 + ARTIFACT_DWARVEN_MITHRAL_SHIELD = 51 + ARTIFACT_SCROLL_OF_SPELL_X = 52 + ARTIFACT_GRAAL = 53 + ARTIFACT_BOOTS_OF_LEVITATION = 54 + ARTIFACT_SKULL_HELMET = 55 + ARTIFACT_VALORIOUS_ARMOR = 56 + ARTIFACT_BOOTS_OF_SWIFTNESS = 57 + ARTIFACT_MOONBLADE = 58 + ARTIFACT_RING_OF_CELERITY = 59 + ARTIFACT_BAND_OF_CONJURER = 60 + ARTIFACT_EARTHSLIDERS = 61 + ARTIFACT_RIGID_MANTLE = 62 + ARTIFACT_JINXING_BAND = 63 + ARTIFACT_BONESTUDDED_LEATHER = 64 + ARTIFACT_WISPERING_RING = 65 + ARTIFACT_HELM_OF_CHAOS = 66 + ARTIFACT_TWISTING_NEITHER = 67 + ARTIFACT_SANDALS_OF_THE_SAINT = 68 + ARTIFACT_SHAWL_OF_GREAT_LICH = 69 + ARTIFACT_RING_OF_DEATH = 70 + ARTIFACT_NECROMANCER_PENDANT = 71 + ARTIFACT_FREIDA = 72 + ARTIFACT_RING_OF_THE_SHADOWBRAND = 73 + ARTIFACT_OGRE_CLUB = 74 + ARTIFACT_OGRE_SHIELD = 75 + ARTIFACT_TOME_OF_DESTRUCTION = 76 + ARTIFACT_TOME_OF_LIGHT_MAGIC = 77 + ARTIFACT_TOME_OF_DARK_MAGIC = 78 + ARTIFACT_TOME_OF_SUMMONING_MAGIC = 79 + ARTIFACT_BEGINNER_MAGIC_STICK = 80 + ARTIFACT_RUNIC_WAR_AXE = 81 + ARTIFACT_RUNIC_WAR_HARNESS = 82 + ARTIFACT_SKULL_OF_MARKAL = 83 + ARTIFACT_BEARHIDE_WRAPS = 84 + ARTIFACT_DWARVEN_SMITHY_HUMMER = 85 + ARTIFACT_RUNE_OF_FLAME = 86 + ARTIFACT_TAROT_DECK = 87 + ARTIFACT_CROWN_OF_LEADER = 88 + ARTIFACT_MASK_OF_DOPPELGANGER = 89 + ARTIFACT_EDGE_OF_BALANCE = 90 + ARTIFACT_RING_OF_MACHINE_AFFINITY = 91 + ARTIFACT_HORN_OF_PLENTY = 92 + ARTIFACT_RING_OF_UNSUMMONING = 93 + ARTIFACT_BOOK_OF_POWER = 94 + ARTIFACT_TREEBORN_QUIVER = 95 + ARTIFACT_PRINCESS = 96 + ARTIFACT_RES_WOOD = 97 + ARTIFACT_RES_ORE = 98 + ARTIFACT_RES_SULPHUR = 99 + ARTIFACT_RES_CRYSTAL = 100 + ARTIFACT_RES_GEM = 101 + ARTIFACT_RES_MERCURY = 102 + ARTIFACT_LEGION_T1 = 103 + ARTIFACT_LEGION_T2 = 104 + ARTIFACT_LEGION_T3 = 105 + ARTIFACT_LEGION_T4 = 106 + ARTIFACT_LEGION_T5 = 107 + ARTIFACT_LEGION_T6 = 108 + ARTIFACT_LEGION_T7 = 109 + ARTIFACT_STEADFAST = 110 + ARTIFACT_BUCKLER = 111 + ARTIFACT_LIFE_01 = 112 + ARTIFACT_LIFE_02 = 113 + ARTIFACT_LIFE_03 = 114 + ARTIFACT_LIFE_04 = 115 + ARTIFACT_MONK_01 = 116 + ARTIFACT_MONK_02 = 117 + ARTIFACT_MONK_03 = 118 + ARTIFACT_MONK_04 = 119 + ARTIFACT_GUARDIAN_01 = 120 + ARTIFACT_GUARDIAN_02 = 121 + ARTIFACT_GUARDIAN_03 = 122 + ARTIFACT_DRACONIC = 123 + ARTIFACT_SENTINEL = 124 + ARTIFACT_EIGHTFOLD = 125 + ARTIFACT_CODEX = 126 + ARTIFACT_PIRATE01 = 127 + ARTIFACT_PIRATE02 = 128 + ARTIFACT_PIRATE03 = 129 + ARTIFACT_PIRATE04 = 130 + ARTIFACT_PIRATE05 = 131 + ARTIFACT_PIRATE06 = 132 + ARTIFACT_MEDICAL01 = 133 + ARTIFACT_MEDICAL02 = 134 + ARTIFACT_MEDICAL03 = 135 + ARTIFACT_MEDICAL04 = 136 + ARTIFACT_POTION01 = 137 + ARTIFACT_POTION02 = 138 + ARTIFACT_POTION03 = 139 + ARTIFACT_BOOK_A1 = 140 + ARTIFACT_BOOK_A2 = 141 + ARTIFACT_BOOK_A3 = 142 + ARTIFACT_BOOK_A4 = 143 + ARTIFACT_BOOK_D1 = 144 + ARTIFACT_BOOK_D2 = 145 + ARTIFACT_BOOK_D3 = 146 + ARTIFACT_BOOK_D4 = 147 + ARTIFACT_BOOK_S1 = 148 + ARTIFACT_BOOK_S2 = 149 + ARTIFACT_BOOK_S3 = 150 + ARTIFACT_BOOK_S4 = 151 + ARTIFACT_BOOK_K1 = 152 + ARTIFACT_BOOK_K2 = 153 + ARTIFACT_BOOK_K3 = 154 + ARTIFACT_BOOK_K4 = 155 + ARTIFACT_BOOK_R1 = 156 + ARTIFACT_BOOK_R2 = 157 + ARTIFACT_BOOK_R3 = 158 + ARTIFACT_SHANTIRI_01 = 159 + ARTIFACT_SHANTIRI_02 = 160 + ARTIFACT_SHANTIRI_03 = 161 + ARTIFACT_SHANTIRI_04 = 162 + ARTIFACT_SHANTIRI_05 = 163 + ARTIFACT_UPG_AR1 = 164 + ARTIFACT_UPG_AR2 = 165 + ARTIFACT_UPG_AR3 = 166 + ARTIFACT_UPG_HM1 = 167 + ARTIFACT_UPG_HM2 = 168 + ARTIFACT_UPG_HM3 = 169 + ARTIFACT_UPG_ST1 = 170 + ARTIFACT_UPG_ST2 = 171 + ARTIFACT_UPG_ST3 = 172 + ARTIFACT_UPG_SW1 = 173 + ARTIFACT_UPG_SW2 = 174 + ARTIFACT_UPG_SW3 = 175 + ARTIFACT_FIZBIN = 176 + ARTIFACT_FORGING = 177 + ARTIFACT_URGASH_01 = 178 + ARTIFACT_URGASH_02 = 179 + ARTIFACT_ELRATH_01 = 180 + ARTIFACT_ELRATH_02 = 181 + ARTIFACT_GOVERNOR_01 = 182 + ARTIFACT_GOVERNOR_02 = 183 + ARTIFACT_GEAR_01 = 184 + ARTIFACT_GEAR_02 = 185 + ARTIFACT_GEAR_03 = 186 + ARTIFACT_GEAR_04 = 187 + ARTIFACT_GEAR_05 = 188 + ARTIFACT_GEAR_06 = 189 + ARTIFACT_GEAR_07 = 190 + ARTIFACT_GEAR_08 = 191 + ARTIFACT_ORB_01 = 192 + ARTIFACT_ORB_02 = 193 + ARTIFACT_ORB_03 = 194 + ARTIFACT_ORB_04 = 195 + + -- Skill type IDs + -- + -- Basic Skills + SKILL_LOGISTICS = 1 + SKILL_WAR_MACHINES = 2 + SKILL_LEARNING = 3 + SKILL_LEADERSHIP = 4 + SKILL_LUCK = 5 + SKILL_OFFENCE = 6 + SKILL_DEFENCE = 7 + SKILL_SORCERY = 8 + SKILL_DESTRUCTIVE_MAGIC = 9 + SKILL_DARK_MAGIC = 10 + SKILL_LIGHT_MAGIC = 11 + SKILL_SUMMONING_MAGIC = 12 + -- Class skills + SKILL_TRAINING = 13 + SKILL_GATING = 14 + SKILL_NECROMANCY = 15 + SKILL_AVENGER = 16 + SKILL_ARTIFICIER = 17 + SKILL_INVOCATION = 18 + -- Perks + PERK_PATHFINDING = 19 + PERK_SCOUTING = 20 + PERK_NAVIGATION = 21 + PERK_FIRST_AID = 22 + PERK_BALLISTA = 23 + PERK_CATAPULT = 24 + PERK_INTELLIGENCE = 25 + PERK_SCHOLAR = 26 + PERK_EAGLE_EYE = 27 + PERK_RECRUITMENT = 28 + PERK_ESTATES = 29 + PERK_DIPLOMACY = 30 + PERK_RESISTANCE = 31 + PERK_LUCKY_STRIKE = 32 + PERK_FORTUNATE_ADVENTURER = 33 + PERK_TACTICS = 34 + PERK_ARCHERY = 35 + PERK_FRENZY = 36 + PERK_PROTECTION = 37 + PERK_EVASION = 38 + PERK_TOUGHNESS = 39 + PERK_MYSTICISM = 40 + PERK_WISDOM = 41 + PERK_ARCANE_TRAINING = 42 + PERK_MASTER_OF_ICE = 43 + PERK_MASTER_OF_FIRE = 44 + PERK_MASTER_OF_LIGHTNINGS = 45 + PERK_MASTER_OF_CURSES = 46 + PERK_MASTER_OF_MIND = 47 + PERK_MASTER_OF_SICKNESS = 48 + PERK_MASTER_OF_BLESSING = 49 + PERK_MASTER_OF_ABJURATION = 50 + PERK_MASTER_OF_WRATH = 51 + PERK_MASTER_OF_QUAKES = 52 + PERK_MASTER_OF_CREATURES = 53 + PERK_MASTER_OF_ANIMATION = 54 + -- Knight perks + PERK_HOLY_CHARGE = 55 + PERK_PRAYER = 56 + PERK_EXPERT_TRAINER = 57 + -- Demonlord perks + PERK_CONSUME_CORPSE = 58 + PERK_DEMONIC_FIRE = 59 + PERK_DEMONIC_STRIKE = 60 + -- Necromancer perks + PERK_RAISE_ARCHERS = 61 + PERK_NO_REST_FOR_THE_WICKED = 62 + PERK_DEATH_SCREAM = 63 + -- Ranger perks + PERK_MULTISHOT = 64 + PERK_SNIPE_DEAD = 65 + PERK_IMBUE_ARROW = 66 + -- Wizard perks + PERK_MAGIC_BOND = 67 + PERK_MELT_ARTIFACT = 68 + PERK_MAGIC_MIRROR = 69 + -- Warlock perks + PERK_EMPOWERED_SPELLS = 70 + PERK_DARK_RITUAL = 71 + PERK_ELEMENTAL_VISION = 72 + -- Feats + -- Knight + KNIGHT_FEAT_ROAD_HOME = 73 + KNIGHT_FEAT_TRIPLE_BALLISTA = 74 + KNIGHT_FEAT_ENCOURAGE = 75 + KNIGHT_FEAT_RETRIBUTION = 76 + KNIGHT_FEAT_HOLD_GROUND = 77 + KNIGHT_FEAT_GUARDIAN_ANGEL = 78 + KNIGHT_FEAT_STUDENT_AWARD = 79 + KNIGHT_FEAT_GRAIL_VISION = 80 + KNIGHT_FEAT_CASTER_CERTIFICATE = 81 + KNIGHT_FEAT_ANCIENT_SMITHY = 82 + KNIGHT_FEAT_PARIAH = 83 + KNIGHT_FEAT_ELEMENTAL_BALANCE = 84 + KNIGHT_FEAT_ABSOLUTE_CHARGE = 85 + -- Demon Lord + DEMON_FEAT_QUICK_GATING = 86 + DEMON_FEAT_MASTER_OF_SECRETS = 87 + DEMON_FEAT_TRIPLE_CATAPULT = 88 + DEMON_FEAT_GATING_MASTERY = 89 + DEMON_FEAT_CRITICAL_GATING = 90 + DEMON_FEAT_CRITICAL_STRIKE = 91 + DEMON_FEAT_DEMONIC_RETALIATION = 92 + DEMON_FEAT_EXPLODING_CORPSES = 93 + DEMON_FEAT_DEMONIC_FLAME = 94 + DEMON_FEAT_WEAKENING_STRIKE = 95 + DEMON_FEAT_FIRE_PROTECTION = 96 + DEMON_FEAT_FIRE_AFFINITY = 97 + DEMON_FEAT_ABSOLUTE_GATING = 98 + -- Necromancer + NECROMANCER_FEAT_DEATH_TREAD = 99 + NECROMANCER_FEAT_LAST_AID = 100 + NECROMANCER_FEAT_LORD_OF_UNDEAD = 101 + NECROMANCER_FEAT_HERALD_OF_DEATH = 102 + NECROMANCER_FEAT_DEAD_LUCK = 103 + NECROMANCER_FEAT_CHILLING_STEEL = 104 + NECROMANCER_FEAT_CHILLING_BONES = 105 + NECROMANCER_FEAT_SPELLPROOF_BONES = 106 + NECROMANCER_FEAT_DEADLY_COLD = 107 + NECROMANCER_FEAT_SPIRIT_LINK = 108 + NECROMANCER_FEAT_TWILIGHT = 109 + NECROMANCER_FEAT_HAUNT_MINE = 110 + NECROMANCER_FEAT_ABSOLUTE_FEAR = 111 + -- Ranger + RANGER_FEAT_DISGUISE_AND_RECKON = 112 + RANGER_FEAT_IMBUE_BALLISTA = 113 + RANGER_FEAT_CUNNING_OF_THE_WOODS = 114 + RANGER_FEAT_FOREST_GUARD_EMBLEM = 115 + RANGER_FEAT_ELVEN_LUCK = 116 + RANGER_FEAT_FOREST_RAGE = 117 + RANGER_FEAT_LAST_STAND = 118 + RANGER_FEAT_INSIGHTS = 119 + RANGER_FEAT_SUN_FIRE = 120 + RANGER_FEAT_SOIL_BURN = 121 + RANGER_FEAT_STORM_WIND = 122 + RANGER_FEAT_FOG_VEIL = 123 + RANGER_FEAT_ABSOLUTE_LUCK = 124 + -- Wizard + WIZARD_FEAT_MARCH_OF_THE_MACHINES = 125 + WIZARD_FEAT_REMOTE_CONTROL = 126 + WIZARD_FEAT_ACADEMY_AWARD = 127 + WIZARD_FEAT_ARTIFICIAL_GLORY = 128 + WIZARD_FEAT_SPOILS_OF_WAR = 129 + WIZARD_FEAT_WILDFIRE = 130 + WIZARD_FEAT_SEAL_OF_PROTECTION = 131 + WIZARD_FEAT_COUNTERSPELL = 132 + WIZARD_FEAT_MAGIC_CUSHION = 133 + WIZARD_FEAT_SUPRESS_DARK = 134 + WIZARD_FEAT_SUPRESS_LIGHT = 135 + WIZARD_FEAT_UNSUMMON = 136 + WIZARD_FEAT_ABSOLUTE_WIZARDY = 137 + -- warlock + WARLOCK_FEAT_TELEPORT_ASSAULT = 138 + WARLOCK_FEAT_SHAKE_GROUND = 139 + WARLOCK_FEAT_DARK_REVELATION = 140 + WARLOCK_FEAT_FAST_AND_FURIOUS = 141 + WARLOCK_FEAT_LUCKY_SPELLS = 142 + WARLOCK_FEAT_POWER_OF_HASTE = 143 + WARLOCK_FEAT_POWER_OF_STONE = 144 + WARLOCK_FEAT_CHAOTIC_SPELLS = 145 + WARLOCK_FEAT_SECRETS_OF_DESTRUCTION = 146 + WARLOCK_FEAT_PAYBACK = 147 + WARLOCK_FEAT_ELITE_CASTERS = 148 + WARLOCK_FEAT_ELEMENTAL_OVERKILL = 149 + WARLOCK_FEAT_ABSOLUTE_CHAINS = 150 + -- runemage + HERO_SKILL_RUNELORE = 151 + HERO_SKILL_REFRESH_RUNE = 152 + HERO_SKILL_STRONG_RUNE = 153 + HERO_SKILL_FINE_RUNE = 154 + HERO_SKILL_QUICKNESS_OF_MIND = 155 + HERO_SKILL_RUNIC_MACHINES = 156 + HERO_SKILL_TAP_RUNES = 157 + HERO_SKILL_RUNIC_ATTUNEMENT = 158 + HERO_SKILL_DWARVEN_LUCK = 159 + HERO_SKILL_OFFENSIVE_FORMATION = 160 + HERO_SKILL_DEFENSIVE_FORMATION = 161 + HERO_SKILL_DISTRACT = 162 + HERO_SKILL_SET_AFIRE = 163 + HERO_SKILL_SHRUG_DARKNESS = 164 + HERO_SKILL_ETERNAL_LIGHT = 165 + HERO_SKILL_RUNIC_ARMOR = 166 + HERO_SKILL_ABSOLUTE_PROTECTION = 167 + -- runmage & barbarian cross-class + HERO_SKILL_SNATCH = 168 + HERO_SKILL_MENTORING = 169 + HERO_SKILL_EMPATHY = 170 + HERO_SKILL_PREPARATION = 171 + -- barbarian + HERO_SKILL_DEMONIC_RAGE = 172 + HERO_SKILL_MIGHT_OVER_MAGIC = 173 + HERO_SKILL_MEMORY_OF_OUR_BLOOD = 174 + HERO_SKILL_POWERFULL_BLOW = 175 + HERO_SKILL_ABSOLUTE_RAGE = 176 + HERO_SKILL_PATH_OF_WAR = 177 + HERO_SKILL_BATTLE_ELATION = 178 + HERO_SKILL_LUCK_OF_THE_BARBARIAN = 179 + HERO_SKILL_STUNNING_BLOW = 180 + HERO_SKILL_DEFEND_US_ALL = 181 + HERO_SKILL_GOBLIN_SUPPORT = 182 + HERO_SKILL_BARBARIAN_LEARNING = 183 + HERO_SKILL_POWER_OF_BLOOD = 184 + HERO_SKILL_WARCRY_LEARNING = 185 + HERO_SKILL_BODYBUILDING = 186 + HERO_SKILL_VOICE = 187 + HERO_SKILL_VOICE_TRAINING = 188 + HERO_SKILL_MIGHTY_VOICE = 189 + HERO_SKILL_VOICE_OF_RAGE = 190 + HERO_SKILL_SHATTER_DESTRUCTIVE_MAGIC = 191 + HERO_SKILL_CORRUPT_DESTRUCTIVE = 192 + HERO_SKILL_WEAKEN_DESTRUCTIVE = 193 + HERO_SKILL_DETAIN_DESTRUCTIVE = 194 + HERO_SKILL_SHATTER_DARK_MAGIC = 195 + HERO_SKILL_CORRUPT_DARK = 196 + HERO_SKILL_WEAKEN_DARK = 197 + HERO_SKILL_DETAIN_DARK = 198 + HERO_SKILL_SHATTER_LIGHT_MAGIC = 199 + HERO_SKILL_CORRUPT_LIGHT = 200 + HERO_SKILL_WEAKEN_LIGHT = 201 + HERO_SKILL_DETAIN_LIGHT = 202 + HERO_SKILL_SHATTER_SUMMONING_MAGIC = 203 + HERO_SKILL_CORRUPT_SUMMONING = 204 + HERO_SKILL_WEAKEN_SUMMONING = 205 + HERO_SKILL_DETAIN_SUMMONING = 206 + HERO_SKILL_DEATH_TO_NONEXISTENT = 207 + HERO_SKILL_BARBARIAN_ANCIENT_SMITHY = 208 + HERO_SKILL_BARBARIAN_WEAKENING_STRIKE = 209 + HERO_SKILL_BARBARIAN_SOIL_BURN = 210 + HERO_SKILL_BARBARIAN_FOG_VEIL = 211 + HERO_SKILL_BARBARIAN_INTELLIGENCE = 212 + HERO_SKILL_BARBARIAN_MYSTICISM = 213 + HERO_SKILL_BARBARIAN_ELITE_CASTERS = 214 + HERO_SKILL_BARBARIAN_STORM_WIND = 215 + HERO_SKILL_BARBARIAN_FIRE_PROTECTION = 216 + HERO_SKILL_BARBARIAN_SUN_FIRE = 217 + HERO_SKILL_BARBARIAN_DISTRACT = 218 + HERO_SKILL_BARBARIAN_DARK_REVELATION = 219 + HERO_SKILL_BARBARIAN_MENTORING = 220 + + -- + -- Town type IDs + -- + TOWN_HEAVEN = 0 + TOWN_PRESERVE = 1 + TOWN_ACADEMY = 2 + TOWN_DUNGEON = 3 + TOWN_NECROMANCY = 4 + TOWN_INFERNO = 5 + TOWN_FORTRESS = 6 + TOWN_STRONGHOLD = 7 + + -- + -- Town buildings IDs + -- + TOWN_BUILDING_TOWN_HALL = 0 + TOWN_BUILDING_FORT = 1 + TOWN_BUILDING_MARKETPLACE = 2 + TOWN_BUILDING_SHIPYARD = 3 + TOWN_BUILDING_TAVERN = 4 + TOWN_BUILDING_BLACKSMITH = 5 + TOWN_BUILDING_MAGIC_GUILD = 6 + TOWN_BUILDING_DWELLING_1 = 7 + TOWN_BUILDING_DWELLING_2 = 8 + TOWN_BUILDING_DWELLING_3 = 9 + TOWN_BUILDING_DWELLING_4 = 10 + TOWN_BUILDING_DWELLING_5 = 11 + TOWN_BUILDING_DWELLING_6 = 12 + TOWN_BUILDING_DWELLING_7 = 13 + TOWN_BUILDING_GRAIL = 14 + TOWN_BUILDING_WONDER = 15 + TOWN_BUILDING_SPECIAL_0 = 16 + TOWN_BUILDING_SPECIAL_1 = 17 + TOWN_BUILDING_SPECIAL_2 = 18 + TOWN_BUILDING_SPECIAL_3 = 19 + TOWN_BUILDING_SPECIAL_4 = 20 + TOWN_BUILDING_SPECIAL_5 = 21 + TOWN_BUILDING_SPECIAL_6 = 22 + TOWN_BUILDING_SPECIAL_7 = 23 + TOWN_BUILDING_SPECIAL_8 = 24 + TOWN_BUILDING_SPECIAL_9 = 25 + + TOWN_BUILDING_HAVEN_TRAINING_GROUNDS = TOWN_BUILDING_SPECIAL_1 + TOWN_BUILDING_HAVEN_MONUMENT_TO_FALLEN_HEROES = TOWN_BUILDING_SPECIAL_2 + TOWN_BUILDING_HAVEN_HOSPITAL = TOWN_BUILDING_SPECIAL_3 + TOWN_BUILDING_HAVEN_STABLE = TOWN_BUILDING_SPECIAL_4 + TOWN_BUILDING_HAVEN_FARMS = TOWN_BUILDING_SPECIAL_5 + TOWN_BUILDING_INFERNO_INFERNAL_LOOM = TOWN_BUILDING_SPECIAL_1 + TOWN_BUILDING_INFERNO_ORDER_OF_FIRE = TOWN_BUILDING_SPECIAL_3 + TOWN_BUILDING_INFERNO_HALLS_OF_HORROR = TOWN_BUILDING_SPECIAL_4 + TOWN_BUILDING_INFERNO_SACRIFICIAL_PIT = TOWN_BUILDING_SPECIAL_5 + TOWN_BUILDING_DUNGEON_ALTAR_OF_ELEMENTS = TOWN_BUILDING_SPECIAL_1 + TOWN_BUILDING_DUNGEON_RITUAL_PIT = TOWN_BUILDING_SPECIAL_3 + TOWN_BUILDING_DUNGEON_TRADE_GUILD = TOWN_BUILDING_SPECIAL_4 + TOWN_BUILDING_DUNGEON_TREASURE_DIG_SITE = TOWN_BUILDING_SPECIAL_5 + TOWN_BUILDING_DUNGEON_HALL_OF_INTRIGUE = TOWN_BUILDING_SPECIAL_6 + TOWN_BUILDING_ACADEMY_LIBRARY = TOWN_BUILDING_SPECIAL_1 + TOWN_BUILDING_ACADEMY_ARCANE_FORGE = TOWN_BUILDING_SPECIAL_2 + TOWN_BUILDING_ACADEMY_ARTIFACT_MERCHANT = TOWN_BUILDING_SPECIAL_3 + TOWN_BUILDING_ACADEMY_TREASURE_CAVE = TOWN_BUILDING_SPECIAL_4 + TOWN_BUILDING_ACADEMY_ELEMENTAL_ENCLAVE = TOWN_BUILDING_SPECIAL_5 + TOWN_BUILDING_PRESERVE_AVENGERS_BROTHERHOOD = TOWN_BUILDING_SPECIAL_0 + TOWN_BUILDING_PRESERVE_MYSTIC_POND = TOWN_BUILDING_SPECIAL_2 + TOWN_BUILDING_PRESERVE_SPARKLING_FONTAINS = TOWN_BUILDING_SPECIAL_3 + TOWN_BUILDING_PRESERVE_BLOOMING_GROVE = TOWN_BUILDING_SPECIAL_4 + TOWN_BUILDING_PRESERVE_TREANT_SAMPLING = TOWN_BUILDING_SPECIAL_5 + TOWN_BUILDING_NECROMANCY_AMPLIFIER = TOWN_BUILDING_SPECIAL_1 + TOWN_BUILDING_NECROMANCY_UNHOLY_TEMPLE = TOWN_BUILDING_SPECIAL_2 + TOWN_BUILDING_NECROMANCY_UNEARHED_GRAVES = TOWN_BUILDING_SPECIAL_3 + TOWN_BUILDING_NECROMANCY_DRAGON_TOMBSTONE = TOWN_BUILDING_SPECIAL_4 + TOWN_BUILDING_NECROMANCY_SHROUD_OF_DARKNESS = TOWN_BUILDING_SPECIAL_5 + TOWN_BUILDING_FORTRESS_RUNIC_SHRINE = TOWN_BUILDING_SPECIAL_1; + TOWN_BUILDING_FORTRESS_ARENA = TOWN_BUILDING_SPECIAL_2; + TOWN_BUILDING_FORTRESS_GUARDPOST = TOWN_BUILDING_SPECIAL_3; + TOWN_BUILDING_FORTRESS_RUNIC_STONEWORKS = TOWN_BUILDING_SPECIAL_4; + TOWN_BUILDING_FORTRESS_RUNIC_ACADEMY = TOWN_BUILDING_SPECIAL_5; + TOWN_BUILDING_STRONGHOLD_HALL_OF_TRIAL = TOWN_BUILDING_SPECIAL_1 + TOWN_BUILDING_STRONGHOLD_GARBAGE_PILE = TOWN_BUILDING_SPECIAL_2 + TOWN_BUILDING_STRONGHOLD_TRAVELLERS_SHELTER = TOWN_BUILDING_SPECIAL_3 + TOWN_BUILDING_STRONGHOLD_PILE_OF_OUR_FOES = TOWN_BUILDING_SPECIAL_4 + TOWN_BUILDING_STRONGHOLD_SLAVE_MARKET = TOWN_BUILDING_SPECIAL_5 + + -- + -- Monster mood IDs + -- + MONSTER_MOOD_FRIENDLY = 0 + MONSTER_MOOD_AGGRESSIVE = 1 + MONSTER_MOOD_HOSTILE = 2 + MONSTER_MOOD_WILD = 3 + + -- + -- Monster courage IDs + -- + MONSTER_COURAGE_ALWAYS_JOIN = 0 + MONSTER_COURAGE_ALWAYS_FIGHT = 1 + MONSTER_COURAGE_CAN_FLEE_JOIN = 2 + + -- + -- Borderguard key colors + -- + RED_KEY = 1 + BLUE_KEY = 2 + GREEN_KEY = 3 + YELLOW_KEY = 4 + ORANGE_KEY = 5 + TEAL_KEY = 6 + PURPLE_KEY = 7 + TAN_KEY = 8 + + -- + -- Trigger type IDs + -- + NEW_DAY_TRIGGER = 0 + PLAYER_ADD_HERO_TRIGGER = 1 + PLAYER_REMOVE_HERO_TRIGGER = 2 + OBJECTIVE_STATE_CHANGE_TRIGGER = 3 + OBJECT_TOUCH_TRIGGER = 4 + OBJECT_CAPTURE_TRIGGER = 5 + REGION_ENTER_AND_STOP_TRIGGER = 6 + REGION_ENTER_WITHOUT_STOP_TRIGGER = 7 + HERO_LEVELUP_TRIGGER = 8 + WAR_FOG_ENTER_TRIGGER = 9 + COMBAT_RESULTS_TRIGGER = 11 + CUSTOM_ABILITY_TRIGGER = 12 + REGION_EXIT_TRIGGER = 13 + HERO_ADD_SKILL_TRIGGER = 14 + HERO_REMOVE_SKILL_TRIGGER = 15 + HERO_TOUCH_TRIGGER = 16 -- works only for heroes disabled by SetObjectEnabled function + + -- + -- Saved combat results types + -- + COMBAT_RESULT_NONE = 0 + COMBAT_RESULT_WIN = 1 + COMBAT_RESULT_RETREAT = 2 + COMBAT_RESULT_SURRENDER = 3 + + -- + -- Custom abilities IDs + -- + CUSTOM_ABILITY_1 = 1 + CUSTOM_ABILITY_2 = 2 + CUSTOM_ABILITY_3 = 3 + CUSTOM_ABILITY_4 = 4 + + -- + -- Custom abilities modes + -- + CUSTOM_ABILITY_NOT_PRESENT = -1 + CUSTOM_ABILITY_DISABLED = 0 + CUSTOM_ABILITY_ENABLED = 1 + + -- + -- Moon weeks (for GetCurrentMoonWeek adventure script function) + -- + WEEK_OF_NOTHING = 0 + WEEK_OF_TOAD = 1 + WEEK_OF_SALAMANDER = 2 + WEEK_OF_BEETLE = 3 + WEEK_OF_WYVERN = 4 + WEEK_OF_DRAGONFLY = 5 + WEEK_OF_FOX = 6 + WEEK_OF_SHAMAN = 7 + WEEK_OF_RABBIT = 8 + WEEK_OF_SQUIRREL = 9 + WEEK_OF_CATERPILLAR = 10 + WEEK_OF_HAMSTER = 11 + WEEK_OF_PIGEON = 12 + WEEK_OF_RAGE = 13 + WEEK_OF_EAGLE = 14 + WEEK_OF_BEE = 15 + WEEK_OF_WASP = 16 + WEEK_OF_SWAN = 17 + WEEK_OF_BUTTERFLY = 18 + WEEK_OF_THANE = 19 + WEEK_OF_ANTILOPE = 20 + WEEK_OF_ORC = 21 + WEEK_OF_RAVEN = 22 + WEEK_OF_BADGER = 23 + WEEK_OF_FLAMINGO = 24 + WEEK_OF_TORTOISE = 25 + WEEK_OF_LYNX = 26 + WEEK_OF_PENGUIN = 27 + WEEK_OF_FALCON = 28 + WEEK_OF_HEDGEHOG = 29 + WEEK_OF_SPARROW = 30 + WEEK_OF_SWALLOW = 31 + WEEK_OF_LION = 32 + WEEK_OF_SPEARS = 33 + WEEK_OF_BEAR = 34 + WEEK_OF_CHIEFTAIN = 35 + WEEK_OF_CENTAUR = 36 + WEEK_OF_GOBLIN = 37 + WEEK_OF_DEER = 38 + WEEK_OF_OWL = 39 + WEEK_OF_DEFENDER = 40 + WEEK_OF_WYRM = 41 + WEEK_OF_TIGER = 42 + WEEK_OF_PLAGUE = 43 + WEEK_OF_DISEASE = 44 + WEEK_OF_FEVER = 45 + WEEK_OF_FLAME = 46 + WEEK_OF_WINDS = 47 + WEEK_OF_FOLLY = 48 + WEEK_OF_HONOR = 49 + WEEK_OF_DIPLOMACY = 50 + WEEK_OF_FORGERY = 51 + WEEK_OF_TRADE = 52 + WEEK_OF_MEDITATION = 53 + WEEK_OF_LIFE = 54 + WEEK_OF_CONJUNCTION = 55 + WEEK_OF_JEWELS = 56 + WEEK_OF_ALCHEMY = 57 + WEEK_OF_GOLD = 58 + WEEK_OF_FESTIVALS = 59 + WEEK_OF_HARVEST = 60 + WEEK_OF_IDLENESS = 61 + WEEK_OF_MAGIC = 62 + WEEK_OF_FEEBLENESS = 63 + WEEK_OF_SORROW = 64 + WEEK_OF_CHAOS = 65 + WEEK_OF_CALM = 66 + WEEK_OF_HOPE = 67 + WEEK_OF_WATER = 68 + WEEK_OF_FIRE = 69 + WEEK_OF_EARTH = 70 + WEEK_OF_AIR = 71 + WEEK_OF_FIRENICE = 72 + WEEK_OF_MIGHT = 73 + WEEK_OF_BALANCE = 74 + WEEK_OF_MIGHTNMAGIC = 75 + WEEK_OF_INFIRMITY = 76 + WEEK_OF_LIGHT = 77 + WEEK_OF_EVOCATION = 78 + WEEK_OF_ABJURATION = 79 + WEEK_OF_ALTERATION = 80 + WEEK_OF_CONJURATION = 81 + WEEK_OF_ETHER = 82 + WEEK_OF_TOUGHNESS = 83 + WEEK_OF_PEASANT = 84 + WEEK_OF_ARCHER = 85 + WEEK_OF_FOOTMAN = 86 + WEEK_OF_GRIFFIN = 87 + WEEK_OF_PRIEST = 88 + WEEK_OF_CAVALIER = 89 + WEEK_OF_ANGEL = 90 + WEEK_OF_GREMLIN = 91 + WEEK_OF_GARGOYLE = 92 + WEEK_OF_GOLEM = 93 + WEEK_OF_MAGI = 94 + WEEK_OF_GENIE = 95 + WEEK_OF_RAKSHASA = 96 + WEEK_OF_GIANT = 97 + WEEK_OF_PIXIE = 98 + WEEK_OF_WARDANCER = 99 + WEEK_OF_WOODELF = 100 + WEEK_OF_DRUID = 101 + WEEK_OF_UNICORN = 102 + WEEK_OF_TREANT = 103 + WEEK_OF_GREENDRAGON = 104 + WEEK_OF_IMP = 105 + WEEK_OF_DEMON = 106 + WEEK_OF_HELLHOUND = 107 + WEEK_OF_SUCCUBUS = 108 + WEEK_OF_NIGHTMARE = 109 + WEEK_OF_BALOR = 110 + WEEK_OF_DEVIL = 111 + WEEK_OF_ASSASSIN = 112 + WEEK_OF_WITCH = 113 + WEEK_OF_MINOTAUR = 114 + WEEK_OF_RIDER = 115 + WEEK_OF_HYDRA = 116 + WEEK_OF_MATRON = 117 + WEEK_OF_DRAGON = 118 + WEEK_OF_SKELETON = 119 + WEEK_OF_WALKINGDEAD = 120 + WEEK_OF_WIGHT = 121 + WEEK_OF_VAMPIRE = 122 + WEEK_OF_LICH = 123 + WEEK_OF_GHOST = 124 + WEEK_OF_BONEDRAGON = 125 + + -- Animation Action Types + -- + --INVISIBLE = 0 + IDLE = 1 + ONESHOT_STILL = 2 + ONESHOT = 3 + --MOVE = 4 + NON_ESSENTIAL = 5 + + -- Monsters names filter + MONSTER_NAME_SINGLE = 0 + MONSTER_NAME_MULTIPLE = 1 + MONSTER_NAMES_ALL = 2 + + -- Disabled interactive objects modes + DISABLED_DEFAULT = 0 + DISABLED_ATTACK = 1 + DISABLED_INTERACT = 2 + DISABLED_BLOCKED = 3 + + -- Region Auto Action modes + REGION_AUTOACTION_ON_ENTER = 1 + REGION_AUTOACTION_ON_EXIT = 2 + + -- Region Auto Action enable variants + REGION_AUTOACTION_OBJECT_NO_ACTION = -1 + REGION_AUTOACTION_OBJECT_DISABLE = 0 + REGION_AUTOACTION_OBJECT_ENABLE = 1 + + -- Heroes Roles Modes + -- + -- NOTE: for SetHeroRoleMode(heroName,roleMode) script commmand + -- + HERO_ROLE_MODE_REGULAR = 0 + HERO_ROLE_MODE_FREEMAN = 1 -- always Freelancer + HERO_ROLE_MODE_HERMIT = 2 -- always Freelancer, never interact with other heroes + + -- + -- Players filtering constants (you can sum PLAYERFLT_1..8, but not PLAYERFLT_TEAM_1..8) + -- + PLAYERFLT_1 = 1 + PLAYERFLT_2 = 2 + PLAYERFLT_3 = 4 + PLAYERFLT_4 = 8 + PLAYERFLT_5 = 16 + PLAYERFLT_6 = 32 + PLAYERFLT_7 = 64 + PLAYERFLT_8 = 128 + PLAYERFLT_ALL = 255 + PLAYERFLT_TEAM_1 = -1 + PLAYERFLT_TEAM_2 = -2 + PLAYERFLT_TEAM_3 = -3 + PLAYERFLT_TEAM_4 = -4 + PLAYERFLT_TEAM_5 = -5 + PLAYERFLT_TEAM_6 = -6 + PLAYERFLT_TEAM_7 = -7 + PLAYERFLT_TEAM_8 = -8 + + -- + -- Players Teams constants + -- + PLAYERS_TEAM_1 = 1 + PLAYERS_TEAM_2 = 2 + PLAYERS_TEAM_3 = 3 + PLAYERS_TEAM_4 = 4 + PLAYERS_TEAM_5 = 5 + PLAYERS_TEAM_6 = 6 + PLAYERS_TEAM_7 = 7 + PLAYERS_TEAM_8 = 8 + + -- + -- Hero battle bonuses IDs + -- + HERO_BATTLE_BONUS_LUCK = 0 + HERO_BATTLE_BONUS_MORALE = 1 + HERO_BATTLE_BONUS_ATTACK = 2 + HERO_BATTLE_BONUS_DEFENCE = 3 + HERO_BATTLE_BONUS_HITPOINTS = 4 + HERO_BATTLE_BONUS_INITIATIVE = 5 + HERO_BATTLE_BONUS_SPEED = 6 + +function createAdvmapAliases() + -- + -- dumb command aliasing + -- + names = GetAllNames + GiveExpToLevel = LevelUpHero + Exists = IsObjectExists + GetObjectPos = GetObjectPosition + SetObjectPos = SetObjectPosition + CreateMob = CreateMonster + GenerateMobs = GenerateMonsters + KillMobs = RemoveAllMonsters + CalcAverageTier = CalcAverageMonstersTier + SetLight = SetAmbientLight + SetCombatLight = SetCombatAmbientLight + ShowFlyMessage = ShowFlyingSign + Trigger = SetTrigger + ExecConsoleCommand = consoleCmd + SetCombatLight = SetCombatAmbientLight + GiveArtifact = GiveArtefact +end + +MakeSyncCommandCallback = function(event_id) + return function() mark_event(%event_id) end +end + +SyncCommand = function(command, arg, callback, saveName) + if saveName == nil then + saveName = '' + end + local event = make_event() + command(arg, 'MakeSyncCommandCallback(' .. event .. ')', saveName) + wait_event(event) + if callback and callback ~= '' then + parse(callback .. '()')() + end +end + +if MessageBoxInt then + MessageBox = function(name, callback) SyncCommand(MessageBoxInt, name, callback) end +end +if QuestionBoxInt then + QuestionBox = QuestionBoxInt +-- QuestionBox = function(name, callback) SyncCommand(QuestionBoxInt, name, callback) end +end +if StartCutSceneInt then + StartCutScene = function(name, callback, saveName) SyncCommand(StartCutSceneInt, name, callback, saveName) end +end +if StartDialogSceneInt then + StartDialogScene = function(name, callback, saveName) SyncCommand(StartDialogSceneInt, name, callback, saveName) end +end + +dofile("/scripts/advmap-common.lua") \ No newline at end of file diff --git a/scripts/combat-common.lua b/scripts/combat-common.lua new file mode 100644 index 00000000..5aa46c44 --- /dev/null +++ b/scripts/combat-common.lua @@ -0,0 +1 @@ +dofile("/scripts/common.lua") \ No newline at end of file diff --git a/scripts/combat-startup.lua b/scripts/combat-startup.lua new file mode 100644 index 00000000..72fa3a6e --- /dev/null +++ b/scripts/combat-startup.lua @@ -0,0 +1,268 @@ +dofile = doFile + +function StopTrigger() end --needed for lualib + +dofile("/scripts/combat-common.lua") + +function IsHuman(side) return GetHost(side) == HUMAN end +function IsComputer(side) return GetHost(side) == COMPUTER end + +MODE_NORMAL = 0 +MODE_MANUAL = 1 +MODE_AUTO = 2 + +ATTACKER = 0 +DEFENDER = 1 + +HERO = 0 +CREATURE = 1 +WAR_MACHINE = 2 +BUILDING = 3 +SPELL_SPAWN = 4 + +function IsAttacker(unit) return GetUnitSide(unit) == ATTACKER end +function IsDefender(unit) return GetUnitSide(unit) == DEFENDER end +function IsHero(unit) return GetUnitType(unit) == HERO end +function IsCreature(unit) return GetUnitType(unit) == CREATURE end +function IsWarMachine(unit) return GetUnitType(unit) == WAR_MACHINE end +function IsBuilding(unit) return GetUnitType(unit) == BUILDING end +function IsSpellSpawn(unit) return GetUnitType(unit) == SPELL_SPAWN end + +function GetHero(side) + local units = GetUnits(side, HERO) + local units_count = length(units) + if (units_count > 1) then + _ERRORMESSAGE('Internal error: army has more than one hero') + end + for index, unit in units do + return unit + end + return nil +end +-- Warning!!! Do not remove variables 'temp' in these functions: +-- due the lua engine error game may (and probably will) crash. +function GetCreatures(side) local temp = GetUnits(side, CREATURE) return temp end +function GetWarMachines(side) local temp = GetUnits(side, WAR_MACHINE) return temp end +function GetBuildings(side) local temp = GetUnits(side, BUILDING) return temp end +function GetSpellSpawns(side) local temp = GetUnits(side, SPELL_SPAWN) return temp end + +function GetAttackerHero() local temp = GetHero(ATTACKER) return temp end +function GetDefenderHero() local temp = GetHero(DEFENDER) return temp end +function GetAttackerCreatures() local temp = GetCreatures(ATTACKER) return temp end +function GetDefenderCreatures() local temp = GetCreatures(DEFENDER) return temp end +function GetAttackerWarMachines() local temp = GetWarMachines(ATTACKER) return temp end +function GetDefenderWarMachines() local temp = GetWarMachines(DEFENDER) return temp end +function GetAttackerBuildings() local temp = GetBuildings(ATTACKER) return temp end +function GetDefenderBuildings() local temp = GetBuildings(DEFENDER) return temp end +function GetAttackerSpellSpawns() local temp = GetSpellSpawns(ATTACKER) return temp end +function GetDefenderSpellSpawns() local temp = GetSpellSpawns(DEFENDER) return temp end + +function GetWarMachine(side, typ) + local units = GetWarMachines(side) + for index, unit in units do + if GetWarMachineType(unit) == typ then + return unit + end + end + return nil +end +function GetAttackerWarMachine(typ) local temp = GetWarMachine(ATTACKER, typ) return temp end +function GetDefenderWarMachine(typ) local temp = GetWarMachine(DEFENDER, typ) return temp end + +function GetBuilding(side, typ) + local units = GetBuildings(side) + for index, unit in units do + if GetBuildingType(unit) == typ then + return unit + end + end + return nil +end +function GetAttackerBuilding(typ) local temp = GetBuilding(ATTACKER, typ) return temp end +function GetDefenderBuilding(typ) local temp = GetBuilding(DEFENDER, typ) return temp end + + +function createCombatAliases() + -- + -- abilitiy IDs + -- + ABILITY_BATTLE_DIVE = 15; + ABILITY_BATTLE_DIVE_FINISH = 27; + ABILITY_LAY_HANDS = 16; + ABILITY_RESURRECT_ALLIES = 17; + ABILITY_SCATTER_SHOT = 14; + -- Inferno + ABILITY_GATING = 155; + ABILITY_FEAR = 143; + ABILITY_SUMMON_BALOR = 146; + ABILITY_EXPLOSION = 147; + ABILITY_EXPLOSION_EFFECT = 148; + ABILITY_CHAIN_SHOT_END_EFFECT = 150; + ABILITY_MANA_DESTROY = 160; + ABILITY_MANA_STEAL = 157; + ABILITY_TELEPORTING_MOVE = 163; + -- Necropolis + ABILITY_LIFE_DRAIN = 168; + ABILITY_MANA_DRAIN = 169; + ABILITY_DEATH_CLOUD = 170; + ABILITY_HARM_TOUCH = 171; + + + BUILDING_WALL = 1 + BUILDING_GATE = 2 + BUILDING_LEFT_TOWER = 3 + BUILDING_BIG_TOWER = 4 + BUILDING_MOAT = 5 + BUILDING_RIGHT_TOWER = 6 + BUILDING_MAGIC_WALL = 7 + + -- + -- Animation Action Types + -- + --INVISIBLE = 0 + IDLE = 1 + ONESHOT_STILL = 2 + ONESHOT = 3 + --MOVE = 4 + NON_ESSENTIAL = 5 + + -- + -- dumb command aliasing + -- + ExecConsoleCommand = consoleCmd + + ShowCombatHighlighting = showHighlighting; + + MoveCombatUnit = commandMove; + AttackCombatUnit = commandMoveAttack; + ShootCombatUnit = commandShot; + UseCombatAbility = commandDoSpecial; + DefendCombatUnit = commandDefend; + GetCombatPosition = pos; + SetCombatPosition = displace; + IsCombatUnit = exist; + AddCombatUnit = addUnit; + RemoveCombatUnit = removeUnit; +end + +function createTutorialAliases() + -- tutorials + --ShowTutorialMode = toggleTutorialMode + --HideTutorialMode = toggleTutorialMode + ShowTutorialMessage = showMessage; + HideTutorialMessage = clearMessage; +end +sleep(1) + +dofile("/scripts/H55-Combat.lua") +dofile("/scripts/Frax/Combat.lua") + +function Prepare() end + +function DoPrepare() + Fx_CombatPrepare() + Prepare() + return nil +end; + +function Start() end + +function DoStart() + Fx_CombatStart() + Start() + return nil +end; + +function AttackerHeroMove(heroName) return nil end +function AttackerCreatureMove(creatureName) return nil end +function AttackerWarMachineMove(warMachineName) return nil end +function DefenderHeroMove(heroName) return nil end +function DefenderCreatureMove(creatureName) return nil end +function DefenderWarMachineMove(warMachineName) return nil end +function DefenderBuildingMove(buildingName) return nil end + +function AttackerUnitMove(unitName) + local temp = nil + if IsHero(unitName) then + temp = AttackerHeroMove(unitName) + elseif IsCreature(unitName) then + temp = AttackerCreatureMove(unitName) + elseif IsWarMachine(unitName) then + temp = AttackerWarMachineMove(unitName) + elseif IsBuilding(unitName) then + temp = DefenderBuildingMove(unitName) + end + return temp +end; + +function DefenderUnitMove(unitName) + local temp = nil + if IsHero(unitName) then + temp = DefenderHeroMove(unitName) + elseif IsCreature(unitName) then + temp = DefenderCreatureMove(unitName) + elseif IsWarMachine(unitName) then + temp = DefenderWarMachineMove(unitName) + elseif IsBuilding(unitName) then + temp = DefenderBuildingMove(unitName) + end + return temp +end; + +function UnitMove(unitName) + local temp = nil + Fx_Combat(unitName) + if IsAttacker(unitName) then + temp = AttackerUnitMove(unitName) + elseif IsDefender(unitName) then + temp = DefenderUnitMove(unitName) + end + return temp +end + +function AttackerHeroDeath(heroName) end +function AttackerCreatureDeath(creatureName) end +function AttackerWarMachineDeath(warMachineName) end +function AttackerSpellSpawnDeath(buildingName) end +function DefenderHeroDeath(heroName) end +function DefenderCreatureDeath(creatureName) end +function DefenderWarMachineDeath(warMachineName) end +function DefenderBuildingDeath(buildingName) end +function DefenderSpellSpawnDeath(buildingName) end + +function AttackerUnitDeath(unitName) + if IsHero(unitName) then + AttackerHeroDeath(unitName) + elseif IsCreature(unitName) then + AttackerCreatureDeath(unitName) + elseif IsWarMachine(unitName) then + AttackerWarMachineDeath(unitName) + elseif IsBuilding(unitName) then + DefenderBuildingDeath(unitName) + elseif IsSpellSpawn(unitName) then + AttackerSpellSpawnDeath(unitName) + end +end + +function DefenderUnitDeath(unitName) + if IsHero(unitName) then + DefenderHeroDeath(unitName) + elseif IsCreature(unitName) then + DefenderCreatureDeath(unitName) + elseif IsWarMachine(unitName) then + DefenderWarMachineDeath(unitName) + elseif IsBuilding(unitName) then + DefenderBuildingDeath(unitName) + elseif IsSpellSpawn(unitName) then + DefenderSpellSpawnDeath(unitName) + end +end + +function UnitDeath(unitName) + Fx_CombatOnDeath(unitName) + if IsAttacker(unitName) then + AttackerUnitDeath(unitName) + elseif IsDefender(unitName) then + DefenderUnitDeath(unitName) + end +end diff --git a/scripts/common.lua b/scripts/common.lua new file mode 100644 index 00000000..a33cb0b0 --- /dev/null +++ b/scripts/common.lua @@ -0,0 +1,515 @@ +dofile("/scripts/H55-Library.lua") + +HUMAN = 0 +COMPUTER = 1 + +-- +-- Game difficulty IDs +-- +EASY = 0 +NORMAL = 0 +HARD = 1 +EXPERT = 2 +IMPOSSIBLE = 2 + +DIFFICULTY_EASY = 0 +DIFFICULTY_NORMAL = 1 +DIFFICULTY_HARD = 2 +DIFFICULTY_HEROIC = 3 + +-- function length(array) + -- local count = 0 + -- for i, element in array do + -- count = count + 1 + -- end + -- return count +-- end + +-- function contains(array, sample) + -- for i, element in array do + -- if (element == sample) then + -- return not nil + -- end + -- end + -- return nil +-- end + +function WaitForTutorialMessageBox() + while IsTutorialMessageBoxOpen() do + sleep(1); + end; +end; + +-- function abs( n ) + -- if n < 0 then + -- return -n; + -- else + -- return n; + -- end; +-- end; + + -- + -- Creatures IDs + -- + CREATURE_UNKNOWN = 0 + CREATURE_PEASANT = 1 + CREATURE_MILITIAMAN = 2 + CREATURE_ARCHER = 3 + CREATURE_MARKSMAN = 4 + CREATURE_FOOTMAN = 5 + CREATURE_SWORDSMAN = 6 + CREATURE_GRIFFIN = 7 + CREATURE_ROYAL_GRIFFIN = 8 + CREATURE_PRIEST = 9 + CREATURE_CLERIC = 10 + CREATURE_CAVALIER = 11 + CREATURE_PALADIN = 12 + CREATURE_ANGEL = 13 + CREATURE_ARCHANGEL = 14 + CREATURE_FAMILIAR = 15 + CREATURE_IMP = 16 + CREATURE_DEMON = 17 + CREATURE_HORNED_DEMON = 18 + CREATURE_HELL_HOUND = 19 + CREATURE_CERBERI = 20 + CREATURE_SUCCUBUS = 21 + CREATURE_INFERNAL_SUCCUBUS = 22 + CREATURE_NIGHTMARE = 23 + CREATURE_FRIGHTFUL_NIGHTMARE = 24 + CREATURE_PIT_FIEND = 25 + CREATURE_BALOR = 26 + CREATURE_DEVIL = 27 + CREATURE_ARCHDEVIL = 28 + CREATURE_SKELETON = 29 + CREATURE_SKELETON_ARCHER = 30 + CREATURE_WALKING_DEAD = 31 + CREATURE_ZOMBIE = 32 + CREATURE_MANES = 33 + CREATURE_GHOST = 34 + CREATURE_VAMPIRE = 35 + CREATURE_VAMPIRE_LORD = 36 + CREATURE_LICH = 37 + CREATURE_DEMILICH = 38 + CREATURE_WIGHT = 39 + CREATURE_WRAITH = 40 + CREATURE_BONE_DRAGON = 41 + CREATURE_SHADOW_DRAGON = 42 + CREATURE_PIXIE = 43 + CREATURE_SPRITE = 44 + CREATURE_BLADE_JUGGLER = 45 + CREATURE_WAR_DANCER = 46 + CREATURE_WOOD_ELF = 47 + CREATURE_GRAND_ELF = 48 + CREATURE_DRUID = 49 + CREATURE_DRUID_ELDER = 50 + CREATURE_UNICORN = 51 + CREATURE_WAR_UNICORN = 52 + CREATURE_TREANT = 53 + CREATURE_TREANT_GUARDIAN = 54 + CREATURE_GREEN_DRAGON = 55 + CREATURE_GOLD_DRAGON = 56 + CREATURE_GREMLIN = 57 + CREATURE_MASTER_GREMLIN = 58 + CREATURE_STONE_GARGOYLE = 59 + CREATURE_OBSIDIAN_GARGOYLE = 60 + CREATURE_IRON_GOLEM = 61 + CREATURE_STEEL_GOLEM = 62 + CREATURE_MAGI = 63 + CREATURE_ARCH_MAGI = 64 + CREATURE_GENIE = 65 + CREATURE_MASTER_GENIE = 66 + CREATURE_RAKSHASA = 67 + CREATURE_RAKSHASA_RUKH = 68 + CREATURE_GIANT = 69 + CREATURE_TITAN = 70 + CREATURE_SCOUT = 71 + CREATURE_ASSASSIN = 72 + CREATURE_WITCH = 73 + CREATURE_BLOOD_WITCH = 74 + CREATURE_MINOTAUR = 75 + CREATURE_MINOTAUR_KING = 76 + CREATURE_RIDER = 77 + CREATURE_RAVAGER = 78 + CREATURE_HYDRA = 79 + CREATURE_CHAOS_HYDRA = 80 + CREATURE_MATRON = 81 + CREATURE_MATRIARCH = 82 + CREATURE_DEEP_DRAGON = 83 + CREATURE_BLACK_DRAGON = 84 + CREATURE_FIRE_ELEMENTAL = 85 + CREATURE_WATER_ELEMENTAL = 86 + CREATURE_EARTH_ELEMENTAL = 87 + CREATURE_AIR_ELEMENTAL = 88 + CREATURE_BLACK_KNIGHT = 89; --not defined in TOE + CREATURE_DEATH_KNIGHT = 90 + CREATURE_PHOENIX = 91 + CREATURE_DEFENDER = 92 + CREATURE_STOUT_DEFENDER = 93 + CREATURE_AXE_FIGHTER = 94 + CREATURE_AXE_THROWER = 95 + CREATURE_BEAR_RIDER = 96 + CREATURE_BLACKBEAR_RIDER = 97 + CREATURE_BROWLER = 98 + CREATURE_BERSERKER = 99 + CREATURE_RUNE_MAGE = 100 + CREATURE_FLAME_MAGE = 101 + CREATURE_THANE = 102 + CREATURE_WARLORD = 103 + CREATURE_FIRE_DRAGON = 104 + CREATURE_MAGMA_DRAGON = 105 + CREATURE_LANDLORD = 106 + CREATURE_LONGBOWMAN = 107 + CREATURE_VINDICATOR = 108 + CREATURE_BATTLE_GRIFFIN = 109 + CREATURE_ZEALOT = 110 + CREATURE_CHAMPION = 111 + CREATURE_SERAPH = 112 + CREATURE_WOLF = 113 + CREATURE_SNOW_APE = 114 + CREATURE_MANTICORE = 115 + CREATURE_MUMMY = 116 + CREATURE_GOBLIN = 117 + CREATURE_GOBLIN_TRAPPER = 118 + CREATURE_CENTAUR = 119 + CREATURE_CENTAUR_NOMAD = 120 + CREATURE_ORC_WARRIOR = 121 + CREATURE_ORC_SLAYER = 122 + CREATURE_SHAMAN = 123 + CREATURE_SHAMAN_WITCH = 124 + CREATURE_ORCCHIEF_BUTCHER = 125 + CREATURE_ORCCHIEF_EXECUTIONER = 126 + CREATURE_WYVERN = 127 + CREATURE_WYVERN_POISONOUS = 128 + CREATURE_CYCLOP = 129 + CREATURE_CYCLOP_UNTAMED = 130 + CREATURE_QUASIT = 131 + CREATURE_HORNED_LEAPER = 132 + CREATURE_FIREBREATHER_HOUND = 133 + CREATURE_SUCCUBUS_SEDUCER = 134 + CREATURE_HELLMARE = 135 + CREATURE_PIT_SPAWN = 136 + CREATURE_ARCH_DEMON = 137 + CREATURE_STALKER = 138 + CREATURE_BLOOD_WITCH_2 = 139 + CREATURE_MINOTAUR_CAPTAIN = 140 + CREATURE_BLACK_RIDER = 141 + CREATURE_ACIDIC_HYDRA = 142 + CREATURE_SHADOW_MISTRESS = 143 + CREATURE_RED_DRAGON = 144 + CREATURE_DRYAD = 145 + CREATURE_BLADE_SINGER = 146 + CREATURE_SHARP_SHOOTER = 147 + CREATURE_HIGH_DRUID = 148 + CREATURE_WHITE_UNICORN = 149 + CREATURE_ANGER_TREANT = 150 + CREATURE_RAINBOW_DRAGON = 151 + CREATURE_SKELETON_WARRIOR = 152 + CREATURE_DISEASE_ZOMBIE = 153 + CREATURE_POLTERGEIST = 154 + CREATURE_NOSFERATU = 155 + CREATURE_LICH_MASTER = 156 + CREATURE_BANSHEE = 157 + CREATURE_HORROR_DRAGON = 158 + CREATURE_GREMLIN_SABOTEUR = 159 + CREATURE_MARBLE_GARGOYLE = 160 + CREATURE_OBSIDIAN_GOLEM = 161 + CREATURE_COMBAT_MAGE = 162 + CREATURE_DJINN_VIZIER = 163 + CREATURE_RAKSHASA_KSHATRI = 164 + CREATURE_STORM_LORD = 165 + CREATURE_STONE_DEFENDER = 166 + CREATURE_HARPOONER = 167 + CREATURE_WHITE_BEAR_RIDER = 168 + CREATURE_BATTLE_RAGER = 169 + CREATURE_FLAME_KEEPER = 170 + CREATURE_THUNDER_THANE = 171 + CREATURE_LAVA_DRAGON = 172 + CREATURE_GOBLIN_DEFILER = 173 + CREATURE_CENTAUR_MARADEUR = 174 + CREATURE_ORC_WARMONGER = 175 + CREATURE_SHAMAN_HAG = 176 + CREATURE_ORCCHIEF_CHIEFTAIN = 177 + CREATURE_WYVERN_PAOKAI = 178 + CREATURE_CYCLOP_BLOODEYED = 179 + CREATURES_COUNT = 180 + + -- + -- War machines id`s + -- + WAR_MACHINE_BALLISTA = 1 + WAR_MACHINE_CATAPULT = 2 + WAR_MACHINE_FIRST_AID_TENT = 3 + WAR_MACHINE_AMMO_CART = 4 + + -- + -- spell IDs + -- + SPELL_NONE = 0; + SPELL_MAGIC_ARROW = 1; + SPELL_MAGIC_FIST = 2; + SPELL_LIGHTNING_BOLT = 3; + SPELL_ICE_BOLT = 4; + SPELL_FIREBALL = 5; + SPELL_FROST_RING = 6; + SPELL_CHAIN_LIGHTNING = 7; + SPELL_METEOR_SHOWER = 8; + SPELL_IMPLOSION = 9; + SPELL_ARMAGEDDON = 10; + SPELL_CURSE = 11; + SPELL_SLOW = 12; + SPELL_DISRUPTING_RAY = 13; + SPELL_PLAGUE = 14; + SPELL_WEAKNESS = 15; + SPELL_ABILITY_WEAKNING_STRIKE = 16; + SPELL_FORGETFULNESS = 17; + SPELL_BERSERK = 18; + SPELL_BLIND = 19; + SPELL_HYPNOTIZE = 20; + SPELL_UNHOLY_WORD = 21; + SPELL_UNHOLY_WORD_HIT_EFFECT = 22; + SPELL_BLESS = 23; + SPELL_HASTE = 24; + SPELL_STONESKIN = 25; + SPELL_DISPEL = 26; + SPELL_DISPEL_FAIL = 27; + SPELL_BLOODLUST = 28; + SPELL_DEFLECT_ARROWS = 29; + SPELL_DEFLECT_ARROWS_HIT_EFFECT = 30; + SPELL_ANTI_MAGIC = 31; + SPELL_TELEPORT = 32; + SPELL_TELEPORT_FINISH_EFFECT = 33; + SPELL_CELESTIAL_SHIELD = 34; + SPELL_HOLY_WORD = 35; + SPELL_HOLY_WORD_HIT_EFFECT = 36; + SPELL_ARMAGEDDON_HIT_EFFECT = 37; + SPELL_LAND_MINE = 38; + SPELL_WASP_SWARM = 39; + SPELL_PHANTOM = 40; + SPELL_EARTHQUAKE = 41; + SPELL_ANIMATE_DEAD = 42; + SPELL_SUMMON_ELEMENTALS = 43; + SPELL_EFFECT_SUMMON_ELEMENTALS_AIR = 44; + SPELL_EFFECT_SUMMON_ELEMENTALS_EARTH = 45; + SPELL_EFFECT_SUMMON_ELEMENTALS_FIRE = 46; + SPELL_EFFECT_SUMMON_ELEMENTALS_WATER = 47; + SPELL_RESURRECT = 48; + SPELL_SUMMON_BOAT = 49; + SPELL_DIMENSION_DOOR = 50; + SPELL_TOWN_PORTAL = 51; + SPELL_ENCOURAGE = 52; + SPELL_HOLY_CHARGE = 53; + SPELL_PRAYER = 54; + SPELL_DEMONIC_STRIKE_CAST = 55; + SPELL_DEMONIC_STRIKE = 56; + SPELL_CONSUME_CORPSE = 57; + SPELL_SPIRIT_LINK = 58; + SPELL_DEATH_SCREAM = 59; + SPELL_SNIPE_DEAD = 60; + SPELL_MULTISHOT = 61; + SPELL_IMBUE_ARROW = 62; + SPELL_ABILITY_MAGIC_BOND = 63; + SPELL_ABILITY_MELT_ARTIFACT = 64; + SPELL_ABILITY_COUNTERSPELL = 65; + SPELL_ABILITY_UNSUMMON = 66; + SPELL_ABILITY_DARK_RITUAL = 67; + SPELL_SKILL_OFFENCE1 = 68; + SPELL_SKILL_OFFENCE2 = 69; + SPELL_SKILL_OFFENCE3 = 70; + SPELL_SKILL_ARCHERY = 71; + SPELL_SKILL_FRENZY = 72; + SPELL_SKILL_DEFENCE1 = 73; + SPELL_SKILL_DEFENCE2 = 74; + SPELL_SKILL_DEFENCE3 = 75; + SPELL_SKILL_PROTECTION = 76; + SPELL_SKILL_EVASION = 77; + SPELL_SKILL_TOUGHNESS = 78; + SPELL_SKILL_LUCK1 = 79; + SPELL_SKILL_LUCK2 = 80; + SPELL_SKILL_LUCK3 = 81; + SPELL_SKILL_RESISTANCE = 82; + SPELL_SKILL_LUCKY_STRIKE = 83; + SPELL_SKILL_LEADERSHIP1 = 84; + SPELL_SKILL_LEADERSHIP2 = 85; + SPELL_SKILL_LEADERSHIP3 = 86; + SPELL_SKILL_WAR_MACHINES1 = 87; + SPELL_SKILL_WAR_MACHINES2 = 88; + SPELL_SKILL_WAR_MACHINES3 = 89; + SPELL_SKILL_FIRST_AID = 90; + SPELL_SKILL_BALLISTA = 91; + SPELL_SKILL_CATAPULT = 92; + SPELL_SKILL_DEMONIC_FIRE = 93; + SPELL_SKILL_ELVEN_VOLLEY = 94; + SPELL_SKILL_MATRON_SALVO = 95; + SPELL_SKILL_ANCIENT_SMITHY = 96; + SPELL_SKILL_FIRE_PROTECTION = 97; + SPELL_SPEC_JOUSTER = 98; + SPELL_SPEC_PEASANTS = 99; + SPELL_SPEC_ARCHERS = 100; + SPELL_SPEC_FOOTMEN = 101; + SPELL_SPEC_GRIFFINS = 102; + SPELL_SPEC_ARTILLERYMAN = 103; + SPELL_SPEC_FURIOUS = 104; + SPELL_SPEC_BOMBARDIER = 105; + SPELL_SPEC_IMPREGNABLE = 106; + SPELL_SPEC_FLAGBEARER_OF_DARKNESS = 107; + SPELL_SPEC_HOUNDS = 108; + SPELL_SPEC_SUCCUBUSES = 109; + SPELL_SPEC_BLADE_MASTER = 110; + SPELL_SPEC_ELVES = 111; + SPELL_SPEC_UNICORNS = 112; + SPELL_SPEC_ELVEN_FURY = 113; + SPELL_SPEC_FOREST_GUARDIAN = 114; + SPELL_SPEC_ZOMBIES = 115; + SPELL_SPEC_VAMPIRES = 116; + SPELL_SPEC_EMPIRIC = 117; + SPELL_SPEC_SOULHUNTER = 118; + SPELL_SPEC_MASTER_OF_ELEMENTS = 119; + SPELL_SPEC_GREMLINS = 120; + SPELL_SPEC_GOLEMS = 121; + SPELL_SPEC_MAGES = 122; + SPELL_SPEC_PRUDENT = 123; + SPELL_SPEC_EVASIVE = 124; + SPELL_SPEC_RIDERS = 125; + SPELL_SPEC_MATRON_SALVO = 126; + SPELL_SPEC_SAVAGE = 127; + SPELL_SPEC_WITCHES = 128; + SPELL_SPEC_MINOTAURS = 129; + SPELL_TOWN_OFFENCE_P1 = 130; + SPELL_TOWN_OFFENCE_M1 = 131; + SPELL_TOWN_DEFENCE_P1 = 132; + SPELL_TOWN_DEFENCE_M1 = 133; + SPELL_TOWN_OFFENCE_DEFENCE_P1 = 134; + SPELL_TOWN_OFFENCE_DEFENCE_M1 = 135; + SPELL_TOWN_OFFENCE_P2 = 136; + SPELL_TOWN_OFFENCE_M2 = 137; + SPELL_TOWN_DEFENCE_P2 = 138; + SPELL_TOWN_DEFENCE_M2 = 139; + SPELL_TOWN_OFFENCE_DEFENCE_P2 = 140; + SPELL_TOWN_OFFENCE_DEFENCE_M2 = 141; + SPELL_TOWN_LUCK_P1 = 142; + SPELL_TOWN_LUCK_M1 = 143; + SPELL_TOWN_MORALE_P1 = 144; + SPELL_TOWN_MORALE_M1 = 145; + SPELL_TOWN_ELVEN_CAPITAL = 146; + SPELL_TOWN_WALLS = 147; + SPELL_TOWN_TOWERS = 148; + SPELL_TOWN_UNHOLY_TEMPLE = 149; + SPELL_TOWN_DARK_GUARDIAN = 150; + SPELL_TOWN_SPARKLING_FOUNTAIN = 151; + SPELL_TOWN_DIETY_OF_FIRE = 152; + SPELL_TOWN_INFERNAL_LOOM = 153; + SPELL_ABILITY_BATTLE_DIVE = 154; + SPELL_ABILITY_BATTLE_DIVE_FINISH = 155; + SPELL_ABILITY_LAY_HANDS = 156; + SPELL_ABILITY_RESURRECT_ALLIES = 157; + SPELL_ABILITY_SCATTER_SHOT = 158; + SPELL_ABILITY_GATING = 159; + SPELL_ABILITY_FEAR = 160; + SPELL_ABILITY_SUMMON_BALOR = 161; + SPELL_ABILITY_EXPLOSION = 162; + SPELL_ABILITY_EXPLOSION_EFFECT = 163; + SPELL_ABILITY_CHAIN_SHOT_END_EFFECT = 164; + SPELL_ABILITY_MANA_DESTROY = 165; + SPELL_ABILITY_MANA_STEAL = 166; + SPELL_ABILITY_LIFE_DRAIN = 167; + SPELL_ABILITY_MANA_DRAIN = 168; + SPELL_ABILITY_DEATH_CLOUD = 169; + SPELL_ABILITY_HARM_TOUCH = 170; + SPELL_ABILITY_MANA_FEED = 171; + SPELL_ABILITY_ENTANGLING_ROOTS = 172; + SPELL_ABILITY_REPAIR = 173; + SPELL_ABILITY_RANDOM_CAST_DARK = 174; + SPELL_ABILITY_RANDOM_CAST_DARK_LIGHT = 175; + SPELL_ABILITY_DASH = 176; + SPELL_ABILITY_DASH_EFFECT = 177; + SPELL_REMOTE_CONTROL = 178; + SPELL_EFFECT_ARMOR_CRUSHING = 179; + SPELL_ABILITY_POISONOUS_ATTACK = 180; + SPELL_LIZARD_BITE_HIT = 181; + SPELL_EFFECT_REGENRATION = 182; + SPELL_EFFECT_REBIRTH = 183; + SPELL_ABILITY_FROST_BREATH = 184; + SPELL_EFFECT_BAD_LUCK = 185; + SPELL_EFFECT_GOOD_LUCK = 186; + SPELL_EFFECT_BAD_MORALE = 187; + SPELL_EFFECT_GOOD_MORALE = 188; + SPELL_EFFECT_FIRST_AID_TENT_HEAL = 189; + SPELL_EFFECT_CLERIC_HIT = 190; + SPELL_EFFECT_COMBAT_HIT_00 = 191; + SPELL_EFFECT_COMBAT_HIT_01 = 192; + SPELL_EFFECT_COMBAT_HIT_02 = 193; + SPELL_EFFECT_WAR_MACHINE_HIT = 194; + SPELL_EFFECT_FIRST_AID_HIT = 195; + SPELL_EFFECT_FIRE_HIT = 196; + SPELL_EFFECT_BASH_HIT = 197; + SPELL_EFFECT_SUN_FIRE = 198; + SPELL_EFFECT_SOIL_BURN = 199; + SPELL_EFFECT_CATAPULT_CHARGE_EXPLOSION = 200; + SPELL_EFFECT_FROZEN = 201; + SPELL_EFFECT_FIRE_DAMAGE = 202; + SPELL_EFFECT_LAND_MINE_EXPLOSION = 203; + SPELL_EFFECT_PHANTOM_OUT = 204; + SPELL_EFFECT_FIRE_SHIELD = 205; + SPELL_EFFECT_DIMENSION_DOOR_END = 206; + SPELL_SKILL_CHILLING_BONES = 207; + SPELL_DEBUG_TELEPORT = 208; + SPELL_ABILITY_ENRAGED = 209; + SPELL_MASS_CURSE = 210; + SPELL_MASS_DISRUPTING_RAY = 211; + SPELL_MASS_SLOW = 212; + SPELL_MASS_FORGETFULNESS = 213; + SPELL_MASS_PLAGUE = 214; + SPELL_MASS_WEAKNESS = 215; + SPELL_MASS_BLESS = 216; + SPELL_MASS_DISPEL = 217; + SPELL_MASS_STONESKIN = 218; + SPELL_MASS_DEFLECT_ARROWS = 219; + SPELL_MASS_BLOODLUST = 220; + SPELL_MASS_HASTE = 221; + SPELL_ABILITY_CALL_LIGHTNING = 222; + SPELL_EMPOWERED_MAGIC_ARROW = 223; + SPELL_EMPOWERED_MAGIC_FIST = 224; + SPELL_EMPOWERED_LIGHTNING_BOLT = 225; + SPELL_EMPOWERED_ICE_BOLT = 226; + SPELL_EMPOWERED_FIREBALL = 227; + SPELL_EMPOWERED_FROST_RING = 228; + SPELL_EMPOWERED_CHAIN_LIGHTNING = 229; + SPELL_EMPOWERED_METEOR_SHOWER = 230; + SPELL_EMPOWERED_IMPLOSION = 231; + SPELL_EMPOWERED_ARMAGEDDON = 232; + SPELL_EMPOWERED_STONE_SPIKES = 233; + SPELL_SUMMON_CREATURES = 234; + SPELL_CONJURE_PHOENIX = 235; + SPELL_FIREWALL = 236; + SPELL_STONE_SPIKES = 237; + SPELL_UBER_CHAIN_LIGHTNING = 238; + SPELL_DEMON_SOVEREIGN_FX = 239; + + SPELL_RUNE_OF_CHARGE = 249; + SPELL_RUNE_OF_BERSERKING = 250; + SPELL_RUNE_OF_MAGIC_CONTROL = 251; + SPELL_RUNE_OF_EXORCISM = 252; + SPELL_RUNE_OF_ELEMENTAL_IMMUNITY = 253; + SPELL_RUNE_OF_STUNNING = 254; + SPELL_RUNE_OF_BATTLERAGE = 255; + SPELL_RUNE_OF_ETHEREALNESS = 256; + SPELL_RUNE_OF_REVIVE = 257; + SPELL_RUNE_OF_DRAGONFORM = 258; + + SPELL_SORROW = 277; + SPELL_VAMPIRISM = 278; + SPELL_DEEP_FREEZE = 279; + SPELL_REGENERATION = 280; + SPELL_DIVINE_VENGEANCE = 281; + SPELL_ARCANE_CRYSTAL = 282; + SPELL_SUMMON_HIVE = 283; + SPELL_BLADE_BARRIER = 284; + + SPELL_WARCRY_RALLING_CRY = 290; + SPELL_WARCRY_CALL_OF_BLOOD = 291; + SPELL_WARCRY_WORD_OF_THE_CHIEF = 292; + SPELL_WARCRY_FEAR_MY_ROAR = 293; + SPELL_WARCRY_BATTLECRY = 294; + SPELL_WARCRY_SHOUT_OF_MANY = 295; + +function close_file(fileName) end diff --git a/scripts/events.lua b/scripts/events.lua new file mode 100644 index 00000000..087705ec --- /dev/null +++ b/scripts/events.lua @@ -0,0 +1,20 @@ +events = {} +next_event_id = 0 +make_event = function() + local event_id = next_event_id + events[event_id] = {flag = nil} + next_event_id = next_event_id + 1 + return event_id +end +close_event = function(event_id) + events[event_id] = nil +end +wait_event = function(event_id) + while not events[event_id].flag do + sleep() + end + close_event(event_id) +end +mark_event = function(event_id) + events[event_id].flag = not nil +end diff --git a/scripts/town-startup.lua b/scripts/town-startup.lua new file mode 100644 index 00000000..872bbc1c --- /dev/null +++ b/scripts/town-startup.lua @@ -0,0 +1,6 @@ +dofile = doFile + +dofile("/scripts/common.lua") + +HeroHired = function(name) end +CreatureHired = function(type, number) end