0 - 64 = Patch file header. Not an actual part of the mons definition. 65 - 108 = 4 letter "core" code describing what sprite set to use for the unit. Bytes telling what graphics from the sprite set to use for which actions. Also defines graphics used in the top statusbar for the unit. I wont go into the details for the specific bytes here as you cant do anything useful changing these unless you change the core sprite code mentioned above, and then you may as well save yourself the trouble and copy the sprite definitions from another unit which uses that sprite set. 137 - 180 = 48 bytes defining the units movement parameters, such as its ability to cross water and steep hillsides. Normally the value "0A" means that the unit is capable of passing that type of terrain, while "FF" means the oposite. There are some variants to the "0A" value, but I haven't figured out their effect yet, but I would assume they control if the unit is speeded up or slowed down from his normal walking speed when crossing this kind of terrain. The bytes I know what they do for now are (offset + description): Water passability: • 137 = If active, the unit can cross shallow water, like the dwarf. • 138 = If active, the unit can cross medium deep water like human units can. • 139 = If active, the unit can cross deep water like Trow and Forrest Giants. • 140 = If active, the unit can stay completely submerged and pass any depth of water. Hill climb ability: • 141 = If active the unit can climb sloped hillsides like Ghτls and Trow. • 142 = If active the unit can climb steep hills like Forrest Giants. • 149 = If active the unit can access really steep hillsides and other walking impassable areas. • 150 = If active the unit can access normally flying impassable areas. (This is not recomende usually as it will allow the unit to walk off the map!) Terrain access: • 143 = If inactive the unit is unable to walk on the ground on grassy maps. • 144 = If inactive the unit is unable to walk on the ground on sand desert maps. • 145 = If inactive the unit is unable to walk on the ground on rocky maps. • 146 = If inactive the unit is unable to move on the ground on marshland maps. • 147 = If inactive the unit is prevented from moving on the ground on snowy maps. • 148 = If inactive the unit can't move on the ground on forrest maps. These are useful for example for making units who are supposed to be confined to the water area on some maps and not supposed to exit the water. Dont know what the others do yet, but I am working on it :-) 192 = Byte which defines if the unit will be unhealed by a journeyman. If this byte is set to "00", the unit will be killed if healed, and for normal living units who can be healed, it is usually set to "CC". The value of this byte is the percentage the units health can be restored to as a max if above 00, in percentage of FF (max). CC/FF = 0.8, which is the standard value of units who can be healed. 194 = Amount of Ammo carried by the unit. This can be used both to define how many shots the unit has as his special action, but also how many objects defined later on the unit will drop when he dies. See below. 202 = The units turning speed in degrees/second. The faster the unit turns, the quicker he will be able to bring his attack to bear on a target who isn't located directly ahead. Also the faster the unit turns, the less he is likely to be stabbed in the back, and the faster he can turn around and run away. 204 = Unit walking speed. The higher value, the faster the unit will be able to move. Be careful not to set this too high however,otherwise the units will start to behave strange, like being unable to stand still. 209 - 212 = 4 letter code defining object type. This is always "baob" (basic object) in the mons-definitions. Do not change this or Bad Things May Happen™. 219 = Attack type control definer for primary attack. This byte tells how the player will be able to define the target for attack. This is always set to "00" (standard) for the primary attack, which will make the unit work like most units in the game work when you want it to attack. 220 - 224 = 4 letter "PROJ" (projectile) code defining what projectile type to use for the units primary attack. Have a look at the list of proj codes for reference, but be aware that not all proj codes will work well as an attack type. 225 = Safety distance for the primary attack. If the enemy is closer than this (in world units?), the unit will refuse to attack and will run in the opposite direction in an attempt to gain the sufficient distance to the target before firing. (This is what prevents dwarves from thowing molotovs at pointblank range.) 227 = Maximum range for the primary attack. This is one of the key factors deciding the range of your units primary attack. This is normally set to "02" for most melee units except berzerks who have "03". For more ranged units this is not the sole factor deciding the range. The firing arc/speed (see below) also plays in important part in deciding the actual range. 234 - 236 = Firing Arc, accuracy and projectile speed for the primary attack. A lower value on the first byte means both a deeper arc and a slower speed of the projectile and a shorter range, while a high number makes the projectile go more straight, have a higher speed and reach further. The third byte seems to control accuracy in some way, but I am not sure yet. Normal archers have a value of "7B 00 OB" here, heros have "8F 00 0C" and dwarves have "42 00 08". Most melee units have a value of "00" on these bytes. 242 = Reload time/Attack delay for primary attack. A higher value on this byte will make the unit wait longer between its attacks. I think the value of this byte is the time delay in ticks or similar. NOTE that this isn't always used. It seems that there is a built in attack delay in the sprite used for the attack itself, and you cannot affect this from within the mons code. Most melee units will have a value of "00" on this byte. (This means that you for example can't make the thrall swing their axe in more rapid succession just by changing this byte.) 252 = Attack type control definer for the secondary (special ability) attack. This byte tells how the player will be able to define the target for attack. The most common values for this byte is "00" (normal way of attack, click on enemy unit), "80" (can click on both friendly and enemy units as target, and also click on the ground. Attack wont use any ammo), "D0" (No target selecting, unit just drops/launches projectile. Used for satchel charges) and "92" (can click on both friendly and enemy units as targets, can click on ground as target. Attack uses up unit ammo and will stop working when the unit runs out of ammo.) 253-256 = 4 letter "PROJ" code for the projectile to be used by the secondary attack. Have a look at the list of proj codes for reference, but be aware that not all proj codes will work well as an attack type. 257 = Safety distance for the secondary attack. If the enemy is closer than this (in world units?), the unit will refuse to attack and will run in the opposite direction in an attempt to gain the sufficient distance to the target before firing. (This is what prevents Alric from casting dispersal dreams at pointblank range.) 259 = Maximum range for the secondary attack. This is one of the key factors deciding the range of your units secondary attack. For ranged secondary this is not the sole factor deciding the range. The firing arc/speed (see below) also plays in important part in deciding the actual range. 266-268 = Firing Arc, accuracy and projectile speed for the secondary attack. A lower value on the first byte means both a deeper arc and a slower speed of the projectile and a shorter range, while a high number makes the projectile go more straight, have a higher speed and reach further. The third byte seems to control accuracy in some way, but I am not sure yet. Shades and Avatara have a value of "33" on the first byte. This should probably result in a fairly deep arc which will allow them to fire over other units between then and the target, and hit the target from above. 272 = Reload time/Attack delay for secondary attack. A higher value on this byte will make the unit wait longer between its attacks. I think the value of this byte is the time delay in ticks or similar. NOTE that this isn't always used. It seems that there is a built in attack delay in the sprite used for the attack itself, and you cannot affect this from within the mons code. Many units have a value of "00" on this byte, but it is used by Avatara and Shades to create a delay ("78") between the use of dispersal dreams. 345-346 = 2 byte-value defining the scale of the unit sprites. Larger values here give larger sprites. If you set this high enough to use both bytes for the value, you will get some real giants for most units, making normal units look like ants by comparison. (Balor and Soulblighter are already using both bytes for their value however, but you can still make them huge enough by increasing their values... :-)) 357-360 = 4 letter code telling which "PRGR" resource to use to define the "bodypart splatter" effect which usually occurs when the unit is killed by explosives or equal violent damage types (ie what body parts or other objects will fly.) These are put in when killed by most melee units too, but then they will just fall onto the ground in a pile and not fly around. Check out the list of "PRGR" (projectile group) resources... 361 = The stamina / health of the unit. This byte sets the healthpoints of the unit. Higher values makes the unit stronger and allows it to take more beating before it dies. Note that this is not the sole factor deciding how much punishment a unit can take. There seems to be some sort of immunity/weakness system for the units too making them less suceptible for damage from certain attack types than other units. (Example: Balor and Soulblighter both have 30 health points, but Balor can be killed with just 15-18 fetch lightning blasts, while Soulblighter requires more than 3 times that number to be killed.) See below for immunities and weaknesses. 369-372 = 4 letter code pointing to a "PRGR" resource which defines the normal melee attack/projectile hit effect for the unit (ie if it will bleed or dust off and the like). 373-376 = 4 letter code pointing to a "PRGR" resource defining the effect to use when the unit dies. (ie what to drop on the map. This is usually a dead- body sprite.) If this is left blank, only the bodyparts defined in the splatter effect prgr will be left on the map when the unit dies. 377-380 = 4 letter code pointing to a "STLI" (Sting List) resource containing the name of the unit type (ie Archer, Warrior, Avatara, Dwarf), called "spelling" internally in the game. (If you want to modify this you should create a separate new "STLI" resource in a plugin and refer to that one. This will give you more freedom when it comes to the length of the name than if you'd edit an existing "STLI" in tags.gor.) This is shown in the status bar at the top in the game, and in the unit trading boxes. 381-384 = 4 letter code pointing to a "STLI" resource containing the name of the individual units of this unit type (ie Alric, Balin, Mauriac, Balor, Ki'Angsi). (If you want to modify this you should create a separate new "STLI" resource in a plugin and refer to that one. This will give you more freedom when it comes to the length of the name than if you'd edit an existing "STLI" in tags.gor.) This is shown in the status bar at the top in the game when the unit is selected, and if the defined "STLI" resource contains many names they are assigned at random by the game. 385-388 = 4 letter code pointing to a "STLI" resource containing the short unit description shown in the status bar within the game when the unit is selected (ie "Second Era tradition tells of a hero rising in the East, who loosened the bloodless grip of the wicked things which had dominated his land for time beyond memory). 397-400 = 4 letter code telling what sound to play when the player is selecting the unit. 401-404 = 4 letter code pointing to the sound to play when the unit is ordered to attack. 405-408 = 4 letter code representing the sound to play when the unit is ordered to move. 409-412 = 4 letter code pointing to the sound to play when the unit accidentally hits a friendly unit when attacking. 413-416 = 4 letter code pointing to the sound to play when the unit is hit by friendly fire. 417-420 = 4 letter code representing the sound the unit will make when a friendly unit blocks his/her line of fire when ordered to attack. 421-424 = 4 letter code pointing to the sound to play when the unit is ordered to attack an enemy. 425-428 = 4 letter code telling what sound the unit will make when hitting both enemy and friendly units when attacking. 429-432 = 4 letter code pointing to the sound used when the unit kills an enemy. 433-436 = 4 letter code defining the sound the unit will make when killing a friendly unit. 437-440 = 4 letter "PRGR" code telling what graphics effect to use when the unit is blocking an enemy attack. 441-444 = 4 letter "PRGR" code telling what graphics effect to use when the unit is absorbing an enemy attack. 445-448 = 4 letter code pointing to a "PROJ" resource defining what ammo the unit carries for its secondary attack and subsequently drop when being killed. The number of these are defined by the remaining ammo the unit is carrying. Note that this is only used for stuff that the unit drops when being killed, and is not required for a unit to have an ammo-requiring secondary attack. 480 = The unit point value, used in the unit trading boxes in multiplayer games. 501-504 = 4 letter code pointing to a "STLI" resource containing the name of the units special ability to show in the bar at the bottom of the screen when hitting your special ability key for the unit to select a target.