View Single Post
  #3  
Old 03-18-2013, 02:04 AM
MattCaspermeyer MattCaspermeyer is offline
Approved Member
 
Join Date: Aug 2010
Posts: 553
Cool Here are the templates that I used for my H3B mod!

Here are the templates that I used for modifying the enemy heroes. Note that I forgot to mention that "//" are comments in the text file and ignored by KB_DB_EDIT when compiling.

Also, you can use SKILLS.TXT and EN(G)_SKILLS.LNG for more ideas on the types of modifiers you can implement.

Each of these can be pasted into your *.HERO.TXT file as follows: the fight section contains a bonus with a filter, so you simply highlight the text for each bonus from the start of the comment for the level you'd like (i.e. Level 1) up to but not including the comment for the next higher level (i.e. Level 2) to get all the bonuses for that skill type and level. Note that I've bolded intervening sections to make it easier for you to see what you would need to highlight (i.e. level 1 is normal so highlight up to but not including the bold of level 2).

I list each bonus as I implemented it and which skill it applied to in TL and for where I couldn't implement that skill how I changed it.

The first one I did was Training where it modified low level unit's Attack, Defense, and Critical Hit and it worked exactly the same as I implemented it for your hero (note that Attack and Defense are absolute bonuses, whereas Critical Hit is percent base):

Code:
                // Training
                // Level 1, 3 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{level} = {<3}
			}
			{A}{pbonus} = {attack,2,0,0,-100,0,0}  // training level 1
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{level} = {<3}
			}
			{A}{pbonus} = {defense,2,0,0,-100,0,0}  // training level 1
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{level} = {<3}
			}
			{A}{pbonus} = {krit,0,10,0,-100,0,0}  // training level 1
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 2, 3 elements
.
.
.
See text file in ZIP attachment
Next was Anger. Note since enemy heroes didn't have Rage or Rage Spirits that I modified it as such:

Code:
                // Anger
                // +1 Damager per level - pick resistance, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {physical,1,0,0,-100,0,0}  // anger, damage per level
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
Start Defense works exactly the same as your heroes - note the 1 round duration.

Code:
                // Start Defense
                // Level 1, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {physical,10,0,0,1,0,0}  // start defense level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 2, 1 element
.
.
.
See text file in ZIP attachment
For Shot Commander it was the same implementation as your skill:

Code:
                // Shot Commander
                // Level 1, 12 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {archer,thorn}
			}
			{A}{pbonus} = {attack,1,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // shot commander level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {archer,thorn}
			}
			{A}{pbonus} = {defense,1,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // shot commander level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {bowman,goblin}
			}
			{A}{pbonus} = {attack,2,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // shot commander level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {bowman,goblin}
			}
			{A}{pbonus} = {defense,2,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // shot commander level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {catapult,elf}
			}
			{A}{pbonus} = {attack,3,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // shot commander level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {catapult,elf}
			}
			{A}{pbonus} = {defense,3,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // shot commander level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {alchemist,cannoner,elf2,kingthorn}
			}
			{A}{pbonus} = {attack,4,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // shot commander level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {alchemist,cannoner,elf2,kingthorn}
			}
			{A}{pbonus} = {defense,4,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // shot commander level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {cyclop}
			}
			{A}{pbonus} = {attack,5,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // shot commander level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {cyclop}
			}
			{A}{pbonus} = {defense,5,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // shot commander level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {alchemist,archer,bowman,cannoner,catapult,cyclop,elf,elf2,goblin,thorn,kingthorn}
			}
			{A}{pbonus} = {krit,0,10,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // shot commander level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {alchemist,archer,bowman,cannoner,catapult,cyclop,elf,elf2,goblin,thorn,kingthorn}
			}
			{A}{pbonus} = {health,0,5,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // shot commander level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 2, 13 elements
.
.
.
See text file in ZIP attachment
The enemy heroes don't have Tactics so I implemented it as such:

Code:
                // Tactics
                // Level 1, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {enemy}
			}
			{A}{pbonus} = {speed,-1,0,0,-100,0,0}  // Tactics, level 1
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 2, 2 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {enemy}
			}
			{A}{pbonus} = {speed,-1,0,0,-100,0,0}  // Tactics, level 2
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {enemy}
			}
			{A}{pbonus} = {initiatve,-1,0,0,-100,0,0}  // Tactics, level 2
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
NightTime Operations same as your hero's:

Code:
                // Nighttime Operations
                // Level 1, 6 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{loctype} = {dungeon}
				{A}{~daytime} = {night,evening}
			}
			{A}{pbonus} = {attack,2,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // nighttime operations level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{~loctype} = {dungeon}
				{A}{daytime} = {night,evening}
			}
			{A}{pbonus} = {attack,2,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // nighttime operations level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{loctype} = {dungeon}
				{A}{daytime} = {night,evening}
			}
			{A}{pbonus} = {attack,2,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // nighttime operations level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{loctype} = {dungeon}
				{A}{~daytime} = {night,evening}
			}
			{A}{pbonus} = {defense,2,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // nighttime operations level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{~loctype} = {dungeon}
				{A}{daytime} = {night,evening}
			}
			{A}{pbonus} = {defense,2,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // nighttime operations level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{loctype} = {dungeon}
				{A}{daytime} = {night,evening}
			}
			{A}{pbonus} = {defense,2,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // nighttime operations level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 2, 6 elements
.
.
.
See text file in ZIP attachment
Iron Fist - same:

Code:
                // Iron Fist
                // Level 1, 9 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {skeleton}
			}
			{A}{pbonus} = {attack,1,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // iron fist level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {skeleton}
			}
			{A}{pbonus} = {defense,1,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // iron fist level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {footman,barbarian,barbarian2,goblin2,zombie,zombie2}
			}
			{A}{pbonus} = {attack,2,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // iron fist level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {footman,barbarian,barbarian2,goblin2,zombie,zombie2}
			}
			{A}{pbonus} = {defense,2,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // iron fist level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {footman2,dwarf,orc,werewolf,wolf}
			}
			{A}{pbonus} = {attack,3,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // iron fist level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {footman2,dwarf,orc,werewolf,wolf}
			}
			{A}{pbonus} = {defense,3,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // iron fist level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {horseman,knight,blackknight,demon,orc2}
			}
			{A}{pbonus} = {attack,4,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // iron fist level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {horseman,knight,blackknight,demon,orc2}
			}
			{A}{pbonus} = {defense,4,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // iron fist level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {footman,footman2,horseman,knight,barbarian,barbarian2,blackknight,demon,dwarf,goblin2,orc,orc2,skeleton,werewolf,wolf,zombie,zombie2}
			}
			{A}{pbonus} = {health,0,5,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // iron fist level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 2, 10 elements
.
.
.
See text file in ZIP attachment
Onslaught same (once again note the 1-turn duration):

Code:
                // Onslaught
                // Level 1, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {initiative,1,0,0,1,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // onslaught level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 2, 2 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {initiative,1,0,0,1,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // onslaught level 2
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {speed,1,0,0,1,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // onslaught level 2
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 3, 2 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {initiative,2,0,0,1,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // onslaught level 3
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {speed,2,0,0,1,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}  // onslaught level 3
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
Dark Commander - same:

Code:
                // Dark Commander
                // Level 1, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {archdemon,archer,barbarian,barbarian2,bat,bat2,beholder,beholder2,blackknight,bonedragon,catapult,cerberus,cyclop,demon,demoness,devilfish,ghost,ghost2,goblin,goblin2,graywolf,hyena,imp,imp2,necromant,ogre,orc,orc2,pirat,pirat2,robber,robber2,shaman,skeleton,snake,snake_green,snake_royal,spider,spider_fire,spider_undead,spider_venom,vampire,vampire2,werewolf,wolf,zombie,zombie2}
			}
			{A}{pbonus} = {attack,3,0,0,-100,0,0}  // dark commander level 1
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 2, 2 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {archdemon,archer,barbarian,barbarian2,bat,bat2,beholder,beholder2,blackknight,bonedragon,catapult,cerberus,cyclop,demon,demoness,devilfish,ghost,ghost2,goblin,goblin2,graywolf,hyena,imp,imp2,necromant,ogre,orc,orc2,pirat,pirat2,robber,robber2,shaman,skeleton,snake,snake_green,snake_royal,spider,spider_fire,spider_undead,spider_venom,vampire,vampire2,werewolf,wolf,zombie,zombie2}
			}
			{A}{pbonus} = {attack,5,0,0,-100,0,0}  // dark commander level 2
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {archdemon,archer,barbarian,barbarian2,bat,bat2,beholder,beholder2,blackknight,bonedragon,catapult,cerberus,cyclop,demon,demoness,devilfish,ghost,ghost2,goblin,goblin2,graywolf,hyena,imp,imp2,necromant,ogre,orc,orc2,pirat,pirat2,robber,robber2,shaman,skeleton,snake,snake_green,snake_royal,spider,spider_fire,spider_undead,spider_venom,vampire,vampire2,werewolf,wolf,zombie,zombie2}
			}
			{A}{pbonus} = {initiative,1,0,0,-100,0,0}  // dark commander level 2
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 3, 3 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {archdemon,archer,barbarian,barbarian2,bat,bat2,beholder,beholder2,blackknight,bonedragon,catapult,cerberus,cyclop,demon,demoness,devilfish,ghost,ghost2,goblin,goblin2,graywolf,hyena,imp,imp2,necromant,ogre,orc,orc2,pirat,pirat2,robber,robber2,shaman,skeleton,snake,snake_green,snake_royal,spider,spider_fire,spider_undead,spider_venom,vampire,vampire2,werewolf,wolf,zombie,zombie2}
			}
			{A}{pbonus} = {attack,7,0,0,-100,0,0}  // dark commander level 3
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {archdemon,archer,barbarian,barbarian2,bat,bat2,beholder,beholder2,blackknight,bonedragon,catapult,cerberus,cyclop,demon,demoness,devilfish,ghost,ghost2,goblin,goblin2,graywolf,hyena,imp,imp2,necromant,ogre,orc,orc2,pirat,pirat2,robber,robber2,shaman,skeleton,snake,snake_green,snake_royal,spider,spider_fire,spider_undead,spider_venom,vampire,vampire2,werewolf,wolf,zombie,zombie2}
			}
			{A}{pbonus} = {initiative,1,0,0,-100,0,0}  // dark commander level 3
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {archdemon,archer,barbarian,barbarian2,bat,bat2,beholder,beholder2,blackknight,bonedragon,catapult,cerberus,cyclop,demon,demoness,devilfish,ghost,ghost2,goblin,goblin2,graywolf,hyena,imp,imp2,necromant,ogre,orc,orc2,pirat,pirat2,robber,robber2,shaman,skeleton,snake,snake_green,snake_royal,spider,spider_fire,spider_undead,spider_venom,vampire,vampire2,werewolf,wolf,zombie,zombie2}
			}
			{A}{pbonus} = {speed,1,0,0,-100,0,0}  // dark commander level 3
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
Holy Anger - implemented such that you pick two races that the enemy hero will apply this bonus to:

Code:
                // Holy Anger
                // +10% per level - pick two races, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{race} = {demon,undead}
			}
			{A}{pbonus} = {attack,0,10,0,-100,0,0}  // Holy Anger, +10% per level
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
Glory - can't change leadership so implemented this way:

Code:
                // Glory
                // +1 Speed per level, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {speed,1,0,0,-100,0,0}  // Glory
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
Learning - experience irrelevant for enemy heroes so have it apply to unit critical hit:

Code:
                // Learning
                // +20% per level, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {krit,0,20,0,-100,0,0}  // Learning, +20% per level
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
Reserve - no equivalent so implemented as such:

Code:
                // Reserve
                // -10% Enemy Critical Hit per level, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {enemy}
			}
			{A}{pbonus} = {krit,0,-10,0,-100,0,0}  // Reserve, -10% per level
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
Diplomacy (once again no equivalent):

Code:
                // Diplomacy
                // -1 Enemy Initiative per level, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {enemy}
			}
			{A}{pbonus} = {initiatve,-1,0,0,-100,0,0}  // Diplomacy
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
Keeper of the Light changed after I implemented this for the enemy heroes, but I left it the same. It kind of works similar to Holy Anger.

Code:
                // Keeper of the Light
                // +10% per level - pick two races, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{race} = {demon,undead}
			}
			{A}{pbonus} = {defense,0,10,0,-100,0,0}  // Keeper of the Light, +10% per level
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
For Tolerance I had it work the opposite:

Code:
                // Tolerance
                // -1 Enemy Moral per level, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {enemy}
			}
			{A}{pbonus} = {moral,-1,0,0,-100,0,0}  // Tolerance
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
For Inquisition I decided to change it to a bonus for units less than level 5:

Code:
                // Inquisition
                // Level 1, 3 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{level} = {<4}
			}
			{A}{pbonus} = {health,0,5,0,-100,0,0}  // Inquisition level 1
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{level} = {<4}
			}
			{A}{pbonus} = {initiative,1,0,0,-100,0,0}  // Inquisition level 1
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{level} = {<4}
			}
			{A}{pbonus} = {speed,1,0,0,-100,0,0}  // Inquisition level 1
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
For the Spell Class skills I decided to make it a resistance to the predominant damage type of the spells in that class (or you could pick one if there were more than one predominant type), i.e. Order:

Code:
                // Order
                // +5% Magic Resistance per level, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {magic,5,0,0,-100,0,0}  // Order, +5% per level
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
Distortion:

Code:
                // Distortion
                // +5% Physical Resistance per level, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {physical,5,0,0,-100,0,0}  // Distortion, +5% per level
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
Once again, Concentration could have been implemented like yours, but enemy hero mana regeneration was added after this was implemented (because in TL the enemy hero mana ball does not show positive mana increases and so I wasn't sure at the time if I wanted to implement enemy hero mana regeneration because of this - have they changed this in AP / CW / WotN?).

Code:
                // Concentration
                // +5% resistance per level - pick resistance, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {fire,5,0,0,-100,0,0}  // Concentration, +5% per level - pick resistance
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
For Healer, I implemented the Health bonus part:

Code:
                // Healer
                // Level 1, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {health,0,2,0,-100,0,0}  // healer, level 1
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 2, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {health,0,5,0,-100,0,0}  // healer, level 2
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 3, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {health,0,10,0,-100,0,0}  // healer, level 3
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
For Chaos, it is like Order and Distortion except that you pick one of the 3 resistance types:

Code:
                // Chaos
                // +5% Fire, Physical, or Poison Resistance per level - pick element, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {fire,5,0,0,-100,0,0}  // Chaos, +5% per level - pick fire, physical, or poison
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
For Mega Mage it was applying bonuses to Mage units:

Code:
                // Mega Mage
                // Level 1, 3 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {priest,priest2,druid,archmage,shaman,necromant}
			}
			{A}{pbonus} = {attack,4,0,0,-100,0,0}  // mega mage level 1
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {priest,priest2,druid,archmage,shaman,necromant}
			}
			{A}{pbonus} = {defense,4,0,0,-100,0,0}  // mega mage level 1
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {priest,priest2,druid,archmage,shaman,necromant}
			}
			{A}{pbonus} = {health,0,5,0,-100,0,0}  // mega mage level 1
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 2, 4 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {priest,priest2,druid,archmage,shaman,necromant}
			}
			{A}{pbonus} = {attack,4,0,0,-100,0,0}  // mega mage level 2
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {priest,priest2,druid,archmage,shaman,necromant}
			}
			{A}{pbonus} = {defense,4,0,0,-100,0,0}  // mega mage level 2
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {priest,priest2,druid,archmage,shaman,necromant}
			}
			{A}{pbonus} = {krit,0,10,0,-100,0,0}  // mega mage level 2
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {priest,priest2,druid,archmage,shaman,necromant}
			}
			{A}{pbonus} = {health,0,10,0,-100,0,0}  // mega mage level 2
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 3, 5 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {priest,priest2,druid,archmage,shaman,necromant}
			}
			{A}{pbonus} = {attack,4,0,0,-100,0,0}  // mega mage level 3
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {priest,priest2,druid,archmage,shaman,necromant}
			}
			{A}{pbonus} = {defense,4,0,0,-100,0,0}  // mega mage level 3
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {priest,priest2,druid,archmage,shaman,necromant}
			}
			{A}{pbonus} = {krit,0,15,0,-100,0,0}  // mega mage level 3
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {priest,priest2,druid,archmage,shaman,necromant}
			}
			{A}{pbonus} = {health,0,15,0,-100,0,0}  // mega mage level 3
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{unit} = {priest,priest2,druid,archmage,shaman,necromant}
			}
			{A}{pbonus} = {initiative,1,0,0,-100,0,0}  // mega mage level 3
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
For Necromancy it was give bonuses to the Undead similar to you hero's. As it turned out, Morale does not work for enemy units so I would change this to something different now as far as the Morale bonus.

Code:
                // Necromancy
                // +1 Undead Moral per level, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{race} = {undead}
			}
			{A}{pbonus} = {moral,1,0,0,-100,0,0}  // necromancy, +1 per level
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
For Higher Magic, I implemented enemy hero multi-cast differently and so this turned into a Resist All bonus (well except for Astral):

Code:
                // Higher Magic
                // Level 1 +2% Resist All, 4 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {fire,2,0,0,-100,0,0}  // Higher Magic, level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {magic,2,0,0,-100,0,0}  // Higher Magic, level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {physical,2,0,0,-100,0,0}  // Higher Magic, level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {poison,2,0,0,-100,0,0}  // Higher Magic, level 1
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 2 +5% Resist All, 4 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {fire,5,0,0,-100,0,0}  // Higher Magic, level 2
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {magic,5,0,0,-100,0,0}  // Higher Magic, level 2
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {physical,5,0,0,-100,0,0}  // Higher Magic, level 2
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {poison,5,0,0,-100,0,0}  // Higher Magic, level 2
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
                // Level 3 +10% Resist All, 4 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {fire,10,0,0,-100,0,0}  // Higher Magic, level 3
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {magic,10,0,0,-100,0,0}  // Higher Magic, level 3
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {physical,10,0,0,-100,0,0}  // Higher Magic, level 3
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {poison,10,0,0,-100,0,0}  // Higher Magic, level 3
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
For Destroyer, the only way to implement spell Damage bonuses was via a mods {} section (as in ITEMS.TXT). Unfortunately, enemy heroes have no such section so the only way to make spells more damaging was to lower your resistances:

Code:
                // Destroyer
		// -10% Enemy Resistance for Level 1 - pick resistance, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {enemy}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {fire,-10,0,0,-100,0,0}  // Destroyer, level 1 - pick resistance
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		// -25% Enemy Resistance for Level 2 - pick resistance, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {enemy}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {fire,-25,0,0,-100,0,0}  // Destroyer, level 2 - pick resistance
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		// -50% Enemy Resistance for Level 3 - pick resistance, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {enemy}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {}
			{A}{rbonus} = {fire,-50,0,0,-100,0,0}  // Destroyer, level 3 - pick resistance
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
That's it with the equivalent enemy hero bonuses the next bonus was a Race bonus that certain heroes applied to their race. For example, Xeona, Raab Sotten, and Baal all had special Demon bonuses.

Code:
                // Race Bonus, 7 elements
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{race} = {demon}
			}
			{A}{pbonus} = {attack,0,20,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{race} = {demon}
			}
			{A}{pbonus} = {defense,0,20,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{race} = {demon}
			}
			{A}{pbonus} = {krit,0,20,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{race} = {demon}
			}
			{A}{pbonus} = {health,0,20,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{race} = {demon}
			}
			{A}{pbonus} = {initiative,2,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{race} = {demon}
			}
			{A}{pbonus} = {moral,2,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{race} = {demon}
			}
			{A}{pbonus} = {speed,2,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
Here was a bonus to give Unlimited Retaliation - this one is tricky because if your hitback is 1 and you add 1 to it then you get 2, but if hitback is 2 (i.e. Griffins and Demons) then you'll get 3, which causes them to retaliate just once so I had to fix hitback on combat start and during other times (i.e. unit summons) with an LUA script. Maybe they fixed this in AP / CW / WotN?

Code:
                // Unlimited Retaliation Bonus, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{race} = {demon}
			}
			{A}{pbonus} = {hitback,1,0,0,-100,0,0}
			{A}{dbonus} = {}
			{A}{rbonus} = {}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
This one shows applying both a damage and resistance bonus:

Code:
                // Damage and Resistance Bonus, 1 element
		{Y}{-N/A-}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 6 elements
		{
			{Y}{filter}, F_SORTED{0}, F_COMPACT_TAGS{1}, F_NONAMES{0} // 1 elements
			{
				{A}{belligerent} = {ally}
				{A}{race} = {demon}
			}
			{A}{pbonus} = {}
			{A}{dbonus} = {fire,2,0,0,-100,0,0}
			{A}{rbonus} = {fire,10,0,0,-100,0,0}
			{A}{attack_on} = {}
			{A}{attack_off} = {}
		}
Okay - that's it! There are obviously a lot more, but this should prove quite helpful if you want to modify heroes by hand.

Feel free to ask any questions!

/C\/C\

P.S. Here is a text file with the complete bonuses as a ZIP:
Attached Files
File Type: zip Hero Templates.zip (3.0 KB, 2 views)
Reply With Quote