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_ARMOR
- MASTERY_EXPERTHERO_SKILL_LIGHT_MAGIC
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_ARTIFICIER
- MASTERY_EXPERTHERO_SKILL_LEADERSHIP
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- HERO_SKILL_MASTER_OF_ABJURATION
- HERO_SKILL_ETERNAL_LIGHT
- HERO_SKILL_MASTER_OF_BLESSING
- HERO_SKILL_SCOUTING
- HERO_SKILL_QUICKNESS_OF_MIND
- HERO_SKILL_INTELLIGENCE
- HERO_SKILL_MELT_ARTIFACT
- HERO_SKILL_MAGIC_MIRROR
- HERO_SKILL_ARTIFICIAL_GLORY
- HERO_SKILL_ENCOURAGE
- HERO_SKILL_PRAYER
- HERO_SKILL_RECRUITMENT
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- SPELL_MAGIC_ARROW
- SPELL_BLESS
- SPELL_STONESKIN
- SPELL_BLOODLUST
- SPELL_HASTE
- SPELL_DEFLECT_ARROWS
- SPELL_DISPEL
- SPELL_REGENERATION
- SPELL_HOLY_WORD
- SPELL_DIVINE_VENGEANCE
- SPELL_RESURRECT
- SPELL_CELESTIAL_SHIELD
- SPELL_BLIND
true
+ 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_LIGHT
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_SORCERY
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_ARTIFICIER
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- HERO_SKILL_SCOUTING
- HERO_SKILL_QUICKNESS_OF_MIND
- HERO_SKILL_INTELLIGENCE
- HERO_SKILL_MAGIC_BOND
- HERO_SKILL_ELITE_CASTERS
- HERO_SKILL_DARK_RITUAL
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_MELT_ARTIFACT
- HERO_SKILL_MAGIC_MIRROR
- HERO_SKILL_ARTIFICIAL_GLORY
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_POWER_OF_STONE
true
+ 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_LUCK
- MASTERY_EXPERTHERO_SKILL_DESTRUCTIVE_MAGIC
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_SORCERY
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_INVOCATION
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- HERO_SKILL_DEADLY_COLD
- HERO_SKILL_MASTER_OF_ICE
- HERO_SKILL_ANCIENT_SMITHY
- HERO_SKILL_SCOUTING
- HERO_SKILL_QUICKNESS_OF_MIND
- HERO_SKILL_INTELLIGENCE
- HERO_SKILL_MAGIC_BOND
- HERO_SKILL_ELITE_CASTERS
- HERO_SKILL_DARK_RITUAL
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_SPIRIT_LINK
- HERO_SKILL_DISTRACT
- HERO_SKILL_ARCANE_TRAINING
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_RESISTANCE
- SPELL_STONE_SPIKES
- SPELL_ICE_BOLT
- SPELL_METEOR_SHOWER
- SPELL_LIGHTNING_BOLT
- SPELL_FIREBALL
- SPELL_FROST_RING
- SPELL_ARMAGEDDON
- SPELL_IMPLOSION
- SPELL_DEEP_FREEZE
- SPELL_CHAIN_LIGHTNING
true
+ 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_EMPATHY
- MASTERY_EXPERTHERO_SKILL_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_LEADERSHIP
- MASTERY_EXPERTHERO_SKILL_TRAINING
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_OFFENCE
- HERO_SKILL_MASTER_OF_SICKNESS
- HERO_SKILL_PARIAH
- HERO_SKILL_MASTER_OF_CURSES
- HERO_SKILL_ENCOURAGE
- HERO_SKILL_PRAYER
- HERO_SKILL_RECRUITMENT
- HERO_SKILL_STUNNING_BLOW
- HERO_SKILL_POWERFULL_BLOW
- HERO_SKILL_HOLY_CHARGE
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_OFFENSIVE_FORMATION
- HERO_SKILL_ARCHERY
- HERO_SKILL_FAST_AND_FURIOUS
- SPELL_PLAGUE
- SPELL_CURSE
- SPELL_WEAKNESS
- SPELL_SLOW
- SPELL_DISRUPTING_RAY
- SPELL_ANIMATE_DEAD
- SPELL_SORROW
- SPELL_TELEPORT
- SPELL_PHANTOM
- SPELL_UNHOLY_WORD
- SPELL_BERSERK
- SPELL_VAMPIRISM
true
+ 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_LIGHT
- MASTERY_EXPERTHERO_SKILL_LIGHT_MAGIC
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_TRAINING
- MASTERY_EXPERTHERO_SKILL_LEADERSHIP
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- HERO_SKILL_MASTER_OF_ABJURATION
- HERO_SKILL_ETERNAL_LIGHT
- HERO_SKILL_MASTER_OF_BLESSING
- HERO_SKILL_SCOUTING
- HERO_SKILL_QUICKNESS_OF_MIND
- HERO_SKILL_INTELLIGENCE
- HERO_SKILL_STUNNING_BLOW
- HERO_SKILL_POWERFULL_BLOW
- HERO_SKILL_HOLY_CHARGE
- HERO_SKILL_ENCOURAGE
- HERO_SKILL_PRAYER
- HERO_SKILL_RECRUITMENT
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- SPELL_MAGIC_ARROW
- SPELL_BLESS
- SPELL_STONESKIN
- SPELL_BLOODLUST
- SPELL_HASTE
- SPELL_DEFLECT_ARROWS
- SPELL_DISPEL
- SPELL_REGENERATION
- SPELL_HOLY_WORD
- SPELL_DIVINE_VENGEANCE
- SPELL_RESURRECT
- SPELL_CELESTIAL_SHIELD
- SPELL_BLIND
true
+ 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_DESTRUCTIVE
- MASTERY_EXPERTHERO_SKILL_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_SORCERY
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- MASTERY_EXPERTHERO_SKILL_OFFENCE
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- HERO_SKILL_MASTER_OF_SICKNESS
- HERO_SKILL_PARIAH
- HERO_SKILL_MASTER_OF_CURSES
- HERO_SKILL_SCOUTING
- HERO_SKILL_QUICKNESS_OF_MIND
- HERO_SKILL_INTELLIGENCE
- HERO_SKILL_MAGIC_BOND
- HERO_SKILL_ELITE_CASTERS
- HERO_SKILL_DARK_RITUAL
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_RESISTANCE
- HERO_SKILL_OFFENSIVE_FORMATION
- HERO_SKILL_ARCHERY
- HERO_SKILL_FAST_AND_FURIOUS
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- SPELL_PLAGUE
- SPELL_CURSE
- SPELL_WEAKNESS
- SPELL_SLOW
- SPELL_DISRUPTING_RAY
- SPELL_ANIMATE_DEAD
- SPELL_SORROW
- SPELL_TELEPORT
- SPELL_PHANTOM
- SPELL_UNHOLY_WORD
- SPELL_BERSERK
- SPELL_VAMPIRISM
true
+ 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_CHARGE
- MASTERY_EXPERTHERO_SKILL_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_TRAINING
- MASTERY_EXPERTHERO_SKILL_LEADERSHIP
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_OFFENCE
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- HERO_SKILL_MASTER_OF_SICKNESS
- HERO_SKILL_PARIAH
- HERO_SKILL_MASTER_OF_CURSES
- HERO_SKILL_STUNNING_BLOW
- HERO_SKILL_POWERFULL_BLOW
- HERO_SKILL_HOLY_CHARGE
- HERO_SKILL_ENCOURAGE
- HERO_SKILL_PRAYER
- HERO_SKILL_RECRUITMENT
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_OFFENSIVE_FORMATION
- HERO_SKILL_ARCHERY
- HERO_SKILL_FAST_AND_FURIOUS
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- SPELL_PLAGUE
- SPELL_CURSE
- SPELL_WEAKNESS
- SPELL_SLOW
- SPELL_DISRUPTING_RAY
- SPELL_ANIMATE_DEAD
- SPELL_SORROW
- SPELL_TELEPORT
- SPELL_PHANTOM
- SPELL_UNHOLY_WORD
- SPELL_BERSERK
- SPELL_VAMPIRISM
true
+ 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_LIGHT
- MASTERY_EXPERTHERO_SKILL_DESTRUCTIVE_MAGIC
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_SORCERY
- MASTERY_EXPERTHERO_SKILL_LUCK
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- HERO_SKILL_DEADLY_COLD
- HERO_SKILL_MASTER_OF_ICE
- HERO_SKILL_ANCIENT_SMITHY
- HERO_SKILL_SCOUTING
- HERO_SKILL_QUICKNESS_OF_MIND
- HERO_SKILL_INTELLIGENCE
- HERO_SKILL_MAGIC_BOND
- HERO_SKILL_ELITE_CASTERS
- HERO_SKILL_DARK_RITUAL
- HERO_SKILL_ELVEN_LUCK
- HERO_SKILL_LUCKY_STRIKE
- HERO_SKILL_DEAD_LUCK
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_RESISTANCE
- SPELL_STONE_SPIKES
- SPELL_ICE_BOLT
- SPELL_METEOR_SHOWER
- SPELL_LIGHTNING_BOLT
- SPELL_FIREBALL
- SPELL_FROST_RING
- SPELL_ARMAGEDDON
- SPELL_IMPLOSION
- SPELL_DEEP_FREEZE
- SPELL_CHAIN_LIGHTNING
true
+ 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_MAGIC
- MASTERY_EXPERTHERO_SKILL_DESTRUCTIVE_MAGIC
- MASTERY_EXPERTHERO_SKILL_SORCERY
- MASTERY_EXPERTHERO_SKILL_INVOCATION
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_OFFENCE
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- HERO_SKILL_DEADLY_COLD
- HERO_SKILL_MASTER_OF_ICE
- HERO_SKILL_ANCIENT_SMITHY
- HERO_SKILL_MAGIC_BOND
- HERO_SKILL_ELITE_CASTERS
- HERO_SKILL_DARK_RITUAL
- HERO_SKILL_SPIRIT_LINK
- HERO_SKILL_DISTRACT
- HERO_SKILL_ARCANE_TRAINING
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_OFFENSIVE_FORMATION
- HERO_SKILL_ARCHERY
- HERO_SKILL_FAST_AND_FURIOUS
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_RESISTANCE
- SPELL_STONE_SPIKES
- SPELL_ICE_BOLT
- SPELL_METEOR_SHOWER
- SPELL_LIGHTNING_BOLT
- SPELL_FIREBALL
- SPELL_FROST_RING
- SPELL_ARMAGEDDON
- SPELL_IMPLOSION
- SPELL_DEEP_FREEZE
- SPELL_CHAIN_LIGHTNING
true
+ 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_LIGHT
- MASTERY_EXPERTHERO_SKILL_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_GATING
- MASTERY_EXPERTHERO_SKILL_LEADERSHIP
- MASTERY_EXPERTHERO_SKILL_TRAINING
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- HERO_SKILL_MASTER_OF_SICKNESS
- HERO_SKILL_PARIAH
- HERO_SKILL_MASTER_OF_CURSES
- HERO_SKILL_SCOUTING
- HERO_SKILL_QUICKNESS_OF_MIND
- HERO_SKILL_INTELLIGENCE
- HERO_SKILL_DEMONIC_FIRE
- HERO_SKILL_QUICK_GATING
- HERO_SKILL_GATING_MASTERY
- HERO_SKILL_ENCOURAGE
- HERO_SKILL_PRAYER
- HERO_SKILL_RECRUITMENT
- HERO_SKILL_DEMONIC_STRIKE
- HERO_SKILL_BARBARIAN_WEAKENING_STRIKE
- HERO_SKILL_HOLY_CHARGE
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_RESISTANCE
- SPELL_PLAGUE
- SPELL_CURSE
- SPELL_WEAKNESS
- SPELL_SLOW
- SPELL_DISRUPTING_RAY
- SPELL_ANIMATE_DEAD
- SPELL_SORROW
- SPELL_TELEPORT
- SPELL_PHANTOM
- SPELL_UNHOLY_WORD
- SPELL_BERSERK
- SPELL_VAMPIRISM
true
+ 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_GATING
- MASTERY_EXPERTHERO_SKILL_SUMMONING_MAGIC
- MASTERY_EXPERTHERO_SKILL_GATING
- MASTERY_EXPERTHERO_SKILL_SORCERY
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- MASTERY_EXPERTHERO_SKILL_OFFENCE
- HERO_SKILL_SUN_FIRE
- HERO_SKILL_FIRE_AFFINITY
- HERO_SKILL_ELEMENTAL_BALANCE
- HERO_SKILL_DEMONIC_FIRE
- HERO_SKILL_QUICK_GATING
- HERO_SKILL_GATING_MASTERY
- HERO_SKILL_MAGIC_BOND
- HERO_SKILL_ELITE_CASTERS
- HERO_SKILL_DARK_RITUAL
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- HERO_SKILL_TACTICS
- HERO_SKILL_CHILLING_STEEL
- HERO_SKILL_FAST_AND_FURIOUS
- SPELL_WASP_SWARM
- SPELL_LAND_MINE
- SPELL_ARCANE_CRYSTAL
- SPELL_EARTHQUAKE
- SPELL_MAGIC_FIST
- SPELL_ANTI_MAGIC
- SPELL_BLADE_BARRIER
- SPELL_SUMMON_HIVE
- SPELL_FIREWALL
- SPELL_HYPNOTIZE
- SPELL_CONJURE_PHOENIX
true
+ 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_MAGIC
- MASTERY_EXPERTHERO_SKILL_DESTRUCTIVE_MAGIC
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_SORCERY
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- MASTERY_EXPERTHERO_SKILL_GATING
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- HERO_SKILL_DEADLY_COLD
- HERO_SKILL_MASTER_OF_ICE
- HERO_SKILL_ANCIENT_SMITHY
- HERO_SKILL_SCOUTING
- HERO_SKILL_QUICKNESS_OF_MIND
- HERO_SKILL_INTELLIGENCE
- HERO_SKILL_MAGIC_BOND
- HERO_SKILL_ELITE_CASTERS
- HERO_SKILL_DARK_RITUAL
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_RESISTANCE
- HERO_SKILL_DEMONIC_FIRE
- HERO_SKILL_QUICK_GATING
- HERO_SKILL_GATING_MASTERY
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- SPELL_STONE_SPIKES
- SPELL_ICE_BOLT
- SPELL_METEOR_SHOWER
- SPELL_LIGHTNING_BOLT
- SPELL_FIREBALL
- SPELL_FROST_RING
- SPELL_ARMAGEDDON
- SPELL_IMPLOSION
- SPELL_DEEP_FREEZE
- SPELL_CHAIN_LIGHTNING
true
+ 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_LIGHT
- MASTERY_EXPERTHERO_SKILL_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_SHATTER_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- MASTERY_EXPERTHERO_SKILL_OFFENCE
- HERO_SKILL_MASTER_OF_SICKNESS
- HERO_SKILL_PARIAH
- HERO_SKILL_MASTER_OF_CURSES
- HERO_SKILL_SCHOLAR
- HERO_SKILL_MENTORING
- HERO_SKILL_SCOUTING
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_DETAIN_DARK
- HERO_SKILL_BARBARIAN_SOIL_BURN
- HERO_SKILL_DETAIN_LIGHT
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- HERO_SKILL_TACTICS
- HERO_SKILL_CHILLING_STEEL
- HERO_SKILL_FAST_AND_FURIOUS
- SPELL_PLAGUE
- SPELL_CURSE
- SPELL_WEAKNESS
- SPELL_SLOW
- SPELL_DISRUPTING_RAY
- SPELL_ANIMATE_DEAD
- SPELL_SORROW
- SPELL_TELEPORT
- SPELL_PHANTOM
- SPELL_UNHOLY_WORD
- SPELL_BERSERK
- SPELL_VAMPIRISM
true
+ 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_FEAR
- MASTERY_EXPERTHERO_SKILL_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_NECROMANCY
- MASTERY_EXPERTHERO_SKILL_SORCERY
- MASTERY_EXPERTHERO_SKILL_OFFENCE
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- HERO_SKILL_MASTER_OF_SICKNESS
- HERO_SKILL_PARIAH
- HERO_SKILL_MASTER_OF_CURSES
- HERO_SKILL_DEATH_SCREAM
- HERO_SKILL_SHRUG_DARKNESS
- HERO_SKILL_CHILLING_BONES
- HERO_SKILL_MAGIC_BOND
- HERO_SKILL_ELITE_CASTERS
- HERO_SKILL_DARK_RITUAL
- HERO_SKILL_TACTICS
- HERO_SKILL_CHILLING_STEEL
- HERO_SKILL_FAST_AND_FURIOUS
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_RESISTANCE
- SPELL_PLAGUE
- SPELL_CURSE
- SPELL_WEAKNESS
- SPELL_SLOW
- SPELL_DISRUPTING_RAY
- SPELL_ANIMATE_DEAD
- SPELL_SORROW
- SPELL_TELEPORT
- SPELL_PHANTOM
- SPELL_UNHOLY_WORD
- SPELL_BERSERK
- SPELL_VAMPIRISM
true
+ 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_DARK
- MASTERY_EXPERTHERO_SKILL_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_SORCERY
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- MASTERY_EXPERTHERO_SKILL_INVOCATION
- MASTERY_EXPERTHERO_SKILL_OFFENCE
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- HERO_SKILL_MASTER_OF_SICKNESS
- HERO_SKILL_PARIAH
- HERO_SKILL_MASTER_OF_CURSES
- HERO_SKILL_MAGIC_BOND
- HERO_SKILL_ELITE_CASTERS
- HERO_SKILL_DARK_RITUAL
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- HERO_SKILL_CONSUME_CORPSE
- HERO_SKILL_EXPLODING_CORPSES
- HERO_SKILL_ARCANE_TRAINING
- HERO_SKILL_OFFENSIVE_FORMATION
- HERO_SKILL_ARCHERY
- HERO_SKILL_FAST_AND_FURIOUS
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_RESISTANCE
- SPELL_PLAGUE
- SPELL_CURSE
- SPELL_WEAKNESS
- SPELL_SLOW
- SPELL_DISRUPTING_RAY
- SPELL_ANIMATE_DEAD
- SPELL_SORROW
- SPELL_TELEPORT
- SPELL_PHANTOM
- SPELL_UNHOLY_WORD
- SPELL_BERSERK
- SPELL_VAMPIRISM
true
+ 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_SUMMONING
- MASTERY_EXPERTHERO_SKILL_LIGHT_MAGIC
- MASTERY_EXPERTHERO_SKILL_RUNELORE
- MASTERY_EXPERTHERO_SKILL_LEADERSHIP
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_SHATTER_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- HERO_SKILL_MASTER_OF_ABJURATION
- HERO_SKILL_ETERNAL_LIGHT
- HERO_SKILL_MASTER_OF_BLESSING
- HERO_SKILL_DEMONIC_FLAME
- HERO_SKILL_RUNIC_ATTUNEMENT
- HERO_SKILL_FINE_RUNE
- HERO_SKILL_ENCOURAGE
- HERO_SKILL_PRAYER
- HERO_SKILL_RECRUITMENT
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_DETAIN_LIGHT
- HERO_SKILL_BARBARIAN_STORM_WIND
- HERO_SKILL_DETAIN_DARK
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- SPELL_MAGIC_ARROW
- SPELL_BLESS
- SPELL_STONESKIN
- SPELL_BLOODLUST
- SPELL_HASTE
- SPELL_DEFLECT_ARROWS
- SPELL_DISPEL
- SPELL_REGENERATION
- SPELL_HOLY_WORD
- SPELL_DIVINE_VENGEANCE
- SPELL_RESURRECT
- SPELL_CELESTIAL_SHIELD
- SPELL_BLIND
- SPELL_RUNE_OF_REVIVE
- SPELL_RUNE_OF_MAGIC_CONTROL
- SPELL_RUNE_OF_EXORCISM
- SPELL_RUNE_OF_STUNNING
- SPELL_RUNE_OF_DRAGONFORM
true
+ 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_LIGHT
- MASTERY_EXPERTHERO_SKILL_LIGHT_MAGIC
- MASTERY_EXPERTHERO_SKILL_SORCERY
- MASTERY_EXPERTHERO_SKILL_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_RUNELORE
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- HERO_SKILL_MASTER_OF_ABJURATION
- HERO_SKILL_ETERNAL_LIGHT
- HERO_SKILL_MASTER_OF_BLESSING
- HERO_SKILL_MAGIC_BOND
- HERO_SKILL_ELITE_CASTERS
- HERO_SKILL_DARK_RITUAL
- HERO_SKILL_WEAKENING_STRIKE
- HERO_SKILL_MASTER_OF_MIND
- HERO_SKILL_MASTER_OF_SICKNESS
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_DEMONIC_FLAME
- HERO_SKILL_RUNIC_ATTUNEMENT
- HERO_SKILL_FINE_RUNE
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_RESISTANCE
- SPELL_MAGIC_ARROW
- SPELL_BLESS
- SPELL_STONESKIN
- SPELL_BLOODLUST
- SPELL_HASTE
- SPELL_DEFLECT_ARROWS
- SPELL_DISPEL
- SPELL_REGENERATION
- SPELL_HOLY_WORD
- SPELL_DIVINE_VENGEANCE
- SPELL_RESURRECT
- SPELL_CELESTIAL_SHIELD
- SPELL_BLIND
- SPELL_PLAGUE
- SPELL_CURSE
- SPELL_WEAKNESS
- SPELL_SLOW
- SPELL_DISRUPTING_RAY
- SPELL_ANIMATE_DEAD
- SPELL_SORROW
- SPELL_TELEPORT
- SPELL_PHANTOM
- SPELL_UNHOLY_WORD
- SPELL_BERSERK
- SPELL_VAMPIRISM
- SPELL_RUNE_OF_REVIVE
- SPELL_RUNE_OF_MAGIC_CONTROL
- SPELL_RUNE_OF_EXORCISM
- SPELL_RUNE_OF_STUNNING
- SPELL_RUNE_OF_DRAGONFORM
true
+ 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_PROTECTION
- MASTERY_EXPERTHERO_SKILL_DESTRUCTIVE_MAGIC
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_SORCERY
- MASTERY_EXPERTHERO_SKILL_RUNELORE
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- HERO_SKILL_DEADLY_COLD
- HERO_SKILL_MASTER_OF_ICE
- HERO_SKILL_ANCIENT_SMITHY
- HERO_SKILL_SCOUTING
- HERO_SKILL_QUICKNESS_OF_MIND
- HERO_SKILL_INTELLIGENCE
- HERO_SKILL_MAGIC_BOND
- HERO_SKILL_ELITE_CASTERS
- HERO_SKILL_DARK_RITUAL
- HERO_SKILL_DEMONIC_FLAME
- HERO_SKILL_RUNIC_ATTUNEMENT
- HERO_SKILL_FINE_RUNE
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_RESISTANCE
- SPELL_STONE_SPIKES
- SPELL_ICE_BOLT
- SPELL_METEOR_SHOWER
- SPELL_LIGHTNING_BOLT
- SPELL_FIREBALL
- SPELL_FROST_RING
- SPELL_ARMAGEDDON
- SPELL_IMPLOSION
- SPELL_DEEP_FREEZE
- SPELL_CHAIN_LIGHTNING
- SPELL_RUNE_OF_REVIVE
- SPELL_RUNE_OF_MAGIC_CONTROL
- SPELL_RUNE_OF_EXORCISM
- SPELL_RUNE_OF_STUNNING
- SPELL_RUNE_OF_DRAGONFORM
true
+ 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_RETRIBUTION
- MASTERY_EXPERTHERO_SKILL_VOICE
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_DEMONIC_RAGE
- MASTERY_EXPERTHERO_SKILL_LEADERSHIP
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_SHATTER_DARK_MAGIC
- HERO_SKILL_MIGHTY_VOICE
- HERO_SKILL_VOICE_OF_RAGE
- HERO_SKILL_VOICE_TRAINING
- HERO_SKILL_SCOUTING
- HERO_SKILL_QUICKNESS_OF_MIND
- HERO_SKILL_INTELLIGENCE
- HERO_SKILL_BATTLE_ELATION
- HERO_SKILL_MEMORY_OF_OUR_BLOOD
- HERO_SKILL_POWER_OF_BLOOD
- HERO_SKILL_ENCOURAGE
- HERO_SKILL_PRAYER
- HERO_SKILL_RECRUITMENT
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_DETAIN_LIGHT
- HERO_SKILL_BARBARIAN_STORM_WIND
- HERO_SKILL_DETAIN_DARK
- 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
true
+ 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_RAGE
- MASTERY_EXPERTHERO_SKILL_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_TRAINING
- MASTERY_EXPERTHERO_SKILL_LEADERSHIP
- MASTERY_EXPERTHERO_SKILL_OFFENCE
- MASTERY_EXPERTHERO_SKILL_DEMONIC_RAGE
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- HERO_SKILL_MASTER_OF_SICKNESS
- HERO_SKILL_PARIAH
- HERO_SKILL_MASTER_OF_CURSES
- HERO_SKILL_STUNNING_BLOW
- HERO_SKILL_POWERFULL_BLOW
- HERO_SKILL_HOLY_CHARGE
- HERO_SKILL_ENCOURAGE
- HERO_SKILL_PRAYER
- HERO_SKILL_RECRUITMENT
- HERO_SKILL_TACTICS
- HERO_SKILL_CHILLING_STEEL
- HERO_SKILL_OFFENSIVE_FORMATION
- HERO_SKILL_POWER_OF_BLOOD
- HERO_SKILL_MIGHT_OVER_MAGIC
- HERO_SKILL_BATTLE_ELATION
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_RESISTANCE
- SPELL_PLAGUE
- SPELL_CURSE
- SPELL_WEAKNESS
- SPELL_SLOW
- SPELL_DISRUPTING_RAY
- SPELL_ANIMATE_DEAD
- SPELL_SORROW
- SPELL_TELEPORT
- SPELL_PHANTOM
- SPELL_UNHOLY_WORD
- SPELL_BERSERK
- SPELL_VAMPIRISM
true
+ 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_CREATURES
- MASTERY_EXPERTHERO_SKILL_SUMMONING_MAGIC
- MASTERY_EXPERTHERO_SKILL_SORCERY
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- MASTERY_EXPERTHERO_SKILL_OFFENCE
- MASTERY_EXPERTHERO_SKILL_SHATTER_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- HERO_SKILL_SUN_FIRE
- HERO_SKILL_FIRE_AFFINITY
- HERO_SKILL_ELEMENTAL_BALANCE
- HERO_SKILL_MAGIC_BOND
- HERO_SKILL_ELITE_CASTERS
- HERO_SKILL_DARK_RITUAL
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- HERO_SKILL_TACTICS
- HERO_SKILL_CHILLING_STEEL
- HERO_SKILL_OFFENSIVE_FORMATION
- HERO_SKILL_DETAIN_DESTRUCTIVE
- HERO_SKILL_BARBARIAN_ANCIENT_SMITHY
- HERO_SKILL_DETAIN_LIGHT
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_RESISTANCE
- SPELL_WASP_SWARM
- SPELL_LAND_MINE
- SPELL_ARCANE_CRYSTAL
- SPELL_EARTHQUAKE
- SPELL_MAGIC_FIST
- SPELL_ANTI_MAGIC
- SPELL_BLADE_BARRIER
- SPELL_SUMMON_HIVE
- SPELL_FIREWALL
- SPELL_HYPNOTIZE
- SPELL_CONJURE_PHOENIX
true
+ 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_WIZARDY
- MASTERY_EXPERTHERO_SKILL_OFFENCE
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_AVENGER
- MASTERY_EXPERTHERO_SKILL_LEADERSHIP
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_WARCRY_LEARNING
- HERO_SKILL_FAST_AND_FURIOUS
- HERO_SKILL_FRENZY
- HERO_SKILL_OFFENSIVE_FORMATION
- HERO_SKILL_SCOUTING
- HERO_SKILL_QUICKNESS_OF_MIND
- HERO_SKILL_INTELLIGENCE
- HERO_SKILL_SNIPE_DEAD
- HERO_SKILL_MULTISHOT
- HERO_SKILL_IMBUE_ARROW
- HERO_SKILL_ENCOURAGE
- HERO_SKILL_PRAYER
- HERO_SKILL_RECRUITMENT
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_POWER_OF_HASTE
- HERO_SKILL_TELEPORT_ASSAULT
- HERO_SKILL_SNATCH
- SPELL_MAGIC_ARROW
- SPELL_BLESS
- SPELL_STONESKIN
- SPELL_BLOODLUST
- SPELL_HASTE
- SPELL_DEFLECT_ARROWS
- SPELL_DISPEL
- SPELL_REGENERATION
- SPELL_HOLY_WORD
- SPELL_DIVINE_VENGEANCE
- SPELL_RESURRECT
- SPELL_CELESTIAL_SHIELD
- SPELL_BLIND
- SPELL_PLAGUE
- SPELL_CURSE
- SPELL_WEAKNESS
- SPELL_SLOW
- SPELL_DISRUPTING_RAY
- SPELL_ANIMATE_DEAD
- SPELL_SORROW
- SPELL_TELEPORT
- SPELL_PHANTOM
- SPELL_UNHOLY_WORD
- SPELL_BERSERK
- SPELL_VAMPIRISM
- SPELL_WASP_SWARM
- SPELL_LAND_MINE
- SPELL_ARCANE_CRYSTAL
- SPELL_EARTHQUAKE
- SPELL_MAGIC_FIST
- SPELL_ANTI_MAGIC
- SPELL_BLADE_BARRIER
- SPELL_SUMMON_HIVE
- SPELL_FIREWALL
- SPELL_HYPNOTIZE
- SPELL_CONJURE_PHOENIX
- SPELL_STONE_SPIKES
- SPELL_ICE_BOLT
- SPELL_METEOR_SHOWER
- SPELL_LIGHTNING_BOLT
- SPELL_FIREBALL
- SPELL_FROST_RING
- SPELL_ARMAGEDDON
- SPELL_IMPLOSION
- SPELL_DEEP_FREEZE
- SPELL_CHAIN_LIGHTNING
- SPELL_RUNE_OF_REVIVE
- SPELL_RUNE_OF_MAGIC_CONTROL
- SPELL_RUNE_OF_EXORCISM
- SPELL_RUNE_OF_STUNNING
- SPELL_RUNE_OF_DRAGONFORM
- 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
true
+ 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_LIGHT
- MASTERY_EXPERTHERO_SKILL_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_AVENGER
- MASTERY_EXPERTHERO_SKILL_LEADERSHIP
- MASTERY_EXPERTHERO_SKILL_TRAINING
- MASTERY_EXPERTHERO_SKILL_EXPERT_TRAINER
- HERO_SKILL_MASTER_OF_SICKNESS
- HERO_SKILL_PARIAH
- HERO_SKILL_MASTER_OF_CURSES
- HERO_SKILL_SCOUTING
- HERO_SKILL_QUICKNESS_OF_MIND
- HERO_SKILL_INTELLIGENCE
- HERO_SKILL_SNIPE_DEAD
- HERO_SKILL_MULTISHOT
- HERO_SKILL_IMBUE_ARROW
- HERO_SKILL_ENCOURAGE
- HERO_SKILL_PRAYER
- HERO_SKILL_RECRUITMENT
- HERO_SKILL_STUNNING_BLOW
- HERO_SKILL_POWERFULL_BLOW
- HERO_SKILL_DEMONIC_STRIKE
- HERO_SKILL_TOUGHNESS
- HERO_SKILL_PREPARATION
- HERO_SKILL_RESISTANCE
- SPELL_PLAGUE
- SPELL_CURSE
- SPELL_WEAKNESS
- SPELL_SLOW
- SPELL_DISRUPTING_RAY
- SPELL_ANIMATE_DEAD
- SPELL_SORROW
- SPELL_TELEPORT
- SPELL_PHANTOM
- SPELL_UNHOLY_WORD
- SPELL_BERSERK
- SPELL_VAMPIRISM
true
+ 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_MYSTICISM
- MASTERY_EXPERTHERO_SKILL_SUMMONING_MAGIC
- MASTERY_EXPERTHERO_SKILL_LEARNING
- MASTERY_EXPERTHERO_SKILL_SORCERY
- MASTERY_EXPERTHERO_SKILL_SHATTER_DARK_MAGIC
- MASTERY_EXPERTHERO_SKILL_DEFENCE
- MASTERY_EXPERTHERO_SKILL_OFFENCE
- HERO_SKILL_SUN_FIRE
- HERO_SKILL_FIRE_AFFINITY
- HERO_SKILL_ELEMENTAL_BALANCE
- HERO_SKILL_SCOUTING
- HERO_SKILL_QUICKNESS_OF_MIND
- HERO_SKILL_INTELLIGENCE
- HERO_SKILL_MAGIC_BOND
- HERO_SKILL_ELITE_CASTERS
- HERO_SKILL_DARK_RITUAL
- HERO_SKILL_DETAIN_SUMMONING
- HERO_SKILL_BARBARIAN_FOG_VEIL
- HERO_SKILL_DETAIN_DESTRUCTIVE
- HERO_SKILL_LAST_STAND
- HERO_SKILL_EVASION
- HERO_SKILL_PROTECTION
- HERO_SKILL_TACTICS
- HERO_SKILL_CHILLING_STEEL
- HERO_SKILL_FAST_AND_FURIOUS
- SPELL_WASP_SWARM
- SPELL_LAND_MINE
- SPELL_ARCANE_CRYSTAL
- SPELL_EARTHQUAKE
- SPELL_MAGIC_FIST
- SPELL_ANTI_MAGIC
- SPELL_BLADE_BARRIER
- SPELL_SUMMON_HIVE
- SPELL_FIREWALL
- SPELL_HYPNOTIZE
- SPELL_CONJURE_PHOENIX
true
+ 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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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