Complete EDU Guide (RTW)
Discussion thread: https://www.twcenter.net/forums/showthread.php?t=111344
The file contains the entries for all the units in the game; the limit is 500 entries maximum. The order the units are arranged in is not specified, but the format each entry is coded in, is of course strictly specified. In this guide a single, generic entry will be used as an example, broken to its separate lines and then each line analyzed individually, and then broken down to its entries if necessary, as well. Note that certain lines may be missing depending on the type of the unit.
- The type name which is referenced in the recruitment lines of export_descr_buildings.txt, the starting armies of descr_strat.txt and the armies of descr_battle.txt for historical battles.
- References the export_units.txt entries for the on-screen name, description and short description of the unit. Also references the unit and unit info card names in the UI folder.
- Internal unit category for nature of unit (references sound files and triggers bracketed category mouse-over text in battles along with class entry) It is also used (along with other factors including class) by the AI during campaign mode in order to decide which units to train. Also used (along with class occasionally) in descr_formations_ai.txt and descr_formations.txt, as labels for unit placement. Can be infantry, cavalry, siege, handler or ship. In the custom-battle selection screen infantry units will appear first, then cavalry and then siege.
- References sound files and triggers bracketed category mouse-over text in battles (along with category entry) It is also used (along with other factors including category) by the AI during campaign mode in order to decide which units to train. Also used (along with category) in descr_formations_ai.txt and descr_formations.txt, as labels for unit placement. Can be light, heavy, spearmen or missile. Also "skirmish", but it is not used at all in vanilla (will be tested and updated). In the custom-battle selection screen light units will appear first, followed by spearmen, then heavy and finally missile (after being sorted by category) and then units are sorted by EDU order of appearance.
- References the sound bank category for the unit's voice.
soldier unit_model, soldiers, extras, mass (,radius,height)
- Details of unit models.
- [unit_model] : Unit's model type as referenced in descr_model_battle.txt. Note that the skeleton scale and its associated animations in the DMB file both significantly affect the combat effectiveness and thus value of the unit. This is done mainly in three ways:
- the unit model's scale improves combat effectiveness as it gets bigger. A way to balance this (though not perfectly safe) is through the hidden parametre 'height' that lies in the soldier line. [see below]
- the unit skeleton attack animations also improve unit effectiveness as they get faster. The way to counter this effect is the min_delay_between_attacks stat, which lies in the stat_pri line [see below]
- the unit skeleton animations also help combat effectiveness, when they have big(ger) impact deltas. The way to counter this is through lethality [see related information]
- [soldiers] : Number of unit's soldiers in medium unit-size settings. Can't be lower than 6 or higher than 60. General units have a max of 31 men.
- [extras] : Number of animals attached to unit again in medium unit-size settings.
- [mass] : Collision mass of the unit. Units with big mass values can "push" their enemies harder and break through enemy lines easier and also hold against enemy pushing better. The mass ratio is not fixed, in that a 1-mass soldier will push a 0.1-mass enemy much easier than a 10-mass soldier would push a 1-mass enemy. In the case of mounted units this stat is of no importance, as it is the mount's mass that's taken into account (see descr_mount.txt).
- [radius](may not be visible) : Hidden attribute radius of the unit. The default value is 0.4. It's the area surrounding each single soldier that he "occupies" as the engine perceives it (not visually that is). Small radius makes a unit fight better, in that it allows soldiers to fight more closely to each other, resulting in more men of the small-radius unit fighting against fewer of the enemy one's.
- [height](may not be visible) : Hidden attribute height of the unit. The default value is 1.7. It represents the height of the unit's soldiers (again not visually). Little is known concerning the exact way that height functions, but it is known that the higher it's value, the weaker the unit.
- Unit officers' model type as referenced in descr_model_battle.txt.Up to three officer lines may exist per unit, but note that officers may not be assigned to elephants or chariots.
- Type of mount used (if any) by the unit. The mount's stats are in descr_mount.txt in the data folder. Mounted units with ridden mounts (horsemen) get an average of +8 against all infantry, varying from case to case according to specific stats of units each time.
- Type of animal used (if any) by the unit. References descr_animals.txt, but here it's coded in plural form. Only one of animal, ship and engine lines may be used at a time.
- Type of engine used (if any) by the unit. References descr_engines.txt. Only one of animal, ship and engine lines may be used at a time.
- Type of ship used (if any) by the unit. References descr_ship.txt. Only one of animal, ship and engine lines may be used at a time.
- Unit's bonuses against mounted units (if any). There can be bonuses against horses, elephants, chariots and camels.The bonus may be against an entire class of mounts (eg elephants) in which case it's applied versus all of the types of the class or against only a specific type (eg 4amount mumak), but type-bonus stacks with class-bonus. They are applied directly and stack with any other bonuses, like ones derived from spear attributes. Note that these are modifiers to the unit's attack and that they will be applied to a secondary weapon too if one exists, but they do not affect missile weapons at all. Max number of valid mount effects is 3, extra will be ignored.
- The unit's attributes. The complete list is:
- sea_faring: unit can board ships
- hide_forest, hide_improved_forest, hide_long_grass, hide_anywhere: defines where the unit can hide. If absent, it means that the unit won't be able to hide at all. "hide_anywhere" includes all the others and "hide_improved_forest" of course includes "hide_forest".
- can_sap: unit can dig tunnels under walls during assaults using sap points
- frighten_foot, frighten_mounted: unit causes fear to certain nearby units of the specified type. Both combined means the unit frightens all enemy (generals included).
- can_run_amok: unit may go out of control when riders lose control of animals (usually when the unit's casualty ratio is high and the morale low or when being attacked with fire)
- general_unit: unit can be used for a named character's bodyguard (note that this now also sets the bodyguard for recruitable generals of which there can be multiple instances of this attribute in the same faction though the first instance will always be the family-member bodyguard). Note also that the AI will never recruit units with the general_unit attribute.
- general_unit_upgrade: unit can be used as upgraded bodyguard for named characters, after the Marius' reforms are triggered. A unit with this attribute must be listed in the file after the regular bodyguard unit.
- cantabrian_circle: unit has this special ability. It has no coded effects, but they stem naturally from the game's combat engine. The formation reduces accuracy of the unit, but makes it harder to get shot at and also the constant barrage of arrows slightly reduces target's morale.
- no_custom: unit is not available in custom battles
- command: unit carries a legionary eagle, and gives morale bonus to nearby units (not the unit itself)
- mercenary_unit: unit is a mercenary unit available for hire to all factions in certain regions. It also prevents a unit from replenishing losses after battle, forces it to use the 'merc' texture and sprite lines in DMB for all its faction owners and the text-tag 'Varies' instead of the unit recruitment cost on the unit info card. In Alexander mercenaries can be faction-specific (availability set in descr_mercenaries.txt).
- hardy, very_hardy: level of a unit's hardiness. Hardiness reduces the speed at which stamina is depleted and also increases its regeneration rate.
- warcry: no longer hardcoded to barbarians in 1.5/1.6. Gives the unit an attack bonus of 10. The ability takes 10 secs (unit can't move or execute other action) to be activated and remains active for 30 more seconds. If the unit enters melee at some point during that time, the bonus will be applied only for the remaining of those 30 seconds. (eg if the unit warcrys, then runs for 7 secs and then engages in melee, the bonus will be applied for 23 secs only). Also gives a momentary boost to morale, evident in the case of berserkers.
- druid: replaces 'chant' of RTW gives nearby units (not the unit itself) morale bonus.
- power_charge: increases the time during which a unit is 'charging' (as opposed to being 'in melee'), therefore extending the period during which the unit receives its charge-bonus.
- can_swim (BI only): unit can swim rivers in battle mode (or walk in the case of some units).
- is_peasant (BI only): halves the effect the unit has in maintaining public order. 120 men will be counted as 60 etc.
- can_horde (BI only): unit can be part of a horde when one is created.
- legionary_name (BI only): assign a legionary name (based on region) and number to the recruited unit. The legionary element of the name is hardcoded.
formation hor-cl-spacing, ver-cl-spacing, hor-ls-spacing, ver-ls-spacing, ranks, formation(s)
- The details of the unit's default formation.
- [horizontal close spacing] : Side-to-side distance between soldiers in close formation in metres
- [vertical close spacing] : Front to back distance between soldiers in close formation in metres
- [horizontal loose spacing] : Side-to-side distance between soldiers in loose formation in metres
- [vertical loose spacing] : Front-to-back distance between soldiers in loose formation in metres
- [ranks] : Default number of the unit's ranks (depth of its formation)
- [formation(s)] : Available formations of the unit. Can be one or two of the following: square (normal), wedge (attack bonus), phalanx (unbeatable from the front, very weak from sides and rear), testudo (weak in melee, good against missiles), horde (good vs missiles, bad in melee), schiltrom (BI only - immobile, but excellent vs mounts) and shield_wall (BI only - melee bonus from the front, weak from rear and sides). Note that certain formations are used only for certain unit types (eg wedge only for cavalry).
stat_health hp, hp_extra
- Details of the unit's hitpoints.
- [hp] : Hit points of the regular soldiers of the unit. Max value is 15, as everything higher will still be considered 15.
- [hp_extra] : Hit points of animals of the unit. Note that ridden horses are not assigned separate hitpoints. Max value is 15, as everything higher will still be considered 15.Note that this value, even though being ignored during battle-map mode for non-animal units, it is actually taken into account for auto-resolve for all units. See below at Related Information.
stat_pri atk, chrg, msl_type, msl_rng, msl_ammo, wpn_type, wpn_tech, dmg_type, snd_type, min_delay, lethality
- The unit's offensive stats.
- [attack] : Attack rating of the unit's primary weapon (if unit has missiles, those are its primary weapons). Note that 'Easy' difficulty level gives the AI a -4 attack; 'Medium' offers no advantages/penalties; 'Hard' grants the AI a +4 attack bonus and 'Very Hard' grants the AI a +7 attack bonus. Max value for attack is 63. Anything higher will still be considered 63.
- [charge] : Charge bonus of the primary weapon, added to the unit's attack when charging. As charge is slowed down and unit gets into 'proper' melee, the bonus stops being applied. Min value is 1 and max charge bonus value is 63, as everything higher will be considered 63. Missile units should have this equal to their desired secondary weapon charge bonus, as to not confuse players, since the charge bonus used by the engine will be the one of the melee weapon, while the one displayed on the unit card will be the missile weapon's.
- [missile_type] : Missile type used by the unit. Can be one of the projectiles defined in descr_projectile_new.txt.
- [missile_range] : Max range of the unit's missile weapon. The max limit is determined by the specific missile type's velocity and min_angle, max_angle. Anything higher than this max value will be reduced to it. (see descr_projectile_new.txt) Min value is 20 (javelins).
- [missile_ammo] : Ammunition per unit's soldier. Minimum value is 2 (0 is of course acceptable as well).
- [weapon_type] : Unit's weapon type. Can be: melee, thrown, missile or siege_missile.
- [weapon_tech] : Unit weapon's tech type. Can be: simple, other, blade, archery or siege.
- [damage_type] : probably unused
- [sound_type] : Sound type when the unit's weapon hits. Can be one of: none, knife, mace, club, axe, sword, or spear (ref: descr_sounds_weapons.txt).
- [min_delay] : Minimum delay between weapon attacks, measured in 1/10 of seconds. It is the minimum time allowed between the beginning of an attacking animation and the beginning of the next one. It only applies to foot melee skeletons.
- [lethality] : Percentile chance of a soldier to kill an enemy (assuming his strike has found its target). The higher the lethality, the more the kills and the less the knock-downs/knock-backs during a battle. Greatly affects the speed at which melee battles are resolved, since higher lethality means less missed hits and greater casualties in short time. It is not used in ranged combat.
- Attributes of the unit's primary weapon. The complete list is:
- ap: armour piercing. Attacks take into account only half of the defender's armour value (not defence or shield). Results are rounded up.
- bp: body piercing. Missile can pass through men and hit those behind.
- prec: Missile weapon is only thrown just before charging into combat, though a unit may expend all its ammo if on 'fire at will' mode and the human player has not targeted an enemy unit.
- thrown: Missiles have a big bonus against elephant and chariot units, as they get stronger with every HP of the target. Also, the delay between volleys is reduced by 20%. Only missile units should use this and only for their missile weapons!
- launching: attack may throw target men into the air.
- area: attack affects an area (and everyone within it), not just one man.
- long_pike: Use very long pikes. Phalanx capable units only. Removed in BI.
- short_pike: Use shorter than normal spears. Can be used with phalanx ability or without it. The unit is still considered as infantry (and not spearmen). Grants a bonus of 8 versus mounted units, but due to the qualities of the formation (spacing, cohesion, etc) it seems that it roughly gets an extra -1 versus everyone. It also seems that short_pike overrides light_spear and spear, so that when the two are combined spear/light_spear is ignored, though due to it's own qualities it does slightly affect combat, depending on the units involved. Additionally, short_pike is required for units using the 'schiltrom' formation, because when in schiltrom and without short_pike, the soldiers will very rarely attack enemies.
- spear_bonus_x (BI only): 'x' may be any even number between 4 and 12 inclusive. Must be accompanied by spear or light_spear attributes, otherwise it has no effect. It offers a bonus to attack vs mounts which stacks with the default bonuses of these two attributes.
- light_spear: Gives default bonus of +8 to defense vs cavalry, and penalty of -4 to defense vs. infantry. Offers less pushing power than spear.
- spear: Gives default bonus of +8 to attack vs cavalry, and penalty of -4 to attack vs. infantry. Offers more pushing power than light_spear. Units with "spear" attribute tend to lose cohesion and break lines (due to the extreme pushing power) with undesired results, so use is advised only with cohesive formations/attributes like short_pike, shield_wall, phalanx etc.
stat_sec same as stat_pri stat_sec_attr same as stat_pri_attr
- Same for the unit's secondary weapon as the primary (c.f.). Certain units like elephants, handlers, chariots and siege-machines use this line for the stats of the animals/engines. Let it be noted that the upgrades of the secondary weapon are bugged, in that only the primary weapon tech is taken into account when upgraded. Any change applied to it will also be applied to the secondary weapon, regardless of the weapon_tech of the latter. Also, units with secondary weapons will use that to charge, and once in proper melee will switch back to their primary (units classified as spearmen will keep using their sec if enemy gets very close).
stat_pri_armour armour, def_skill, shield, sound
- The unit's defensive stats.
- [armour] : Unit's armour value. Taken into account in all occasions (soldier attacked from any direction, melee and ranged). It measures the amount of protection a soldier's armour offers. Max value is 63 and everything higher will be considered 63.
- [def_skill] : Unit's defensive skill, taken into account only in melee and only against attacks from the front or the right side. It doesn't affect defence against missiles. It represents a soldier's ability to parry(rather than block) and dodge strikes. Max value is 63 and everything higher will be considered 63.
- [shield] : Unit's shield value, taken into account against both ranged and melee attacks, but only when they come from the front or the left side. Against missiles from the front it offers twice the protection it's value suggests. Measures the blocking capabilities of a unit's shield. Max value is 31 and everything higher will be considered 31.
- [sound] : Sound played when unit gets hit. Can be: flesh, leather, or metal.
stat_sec_armour same as stat_pri_armour(no shield)
- Same as stat_pri_armour. The stats of the unit's animals' or vehicles' defences. Note that ridden horses do not have a separate defence, and that if a vehicle/animal's defence skill is set to 0, its HP are considered to be 1. Of course there is no shield entry.
- Fatigue penalties applied to the unit due to heat. It measures how fast will its fatigue be depleted and how slowly it will regenerate. Ranges from -2 to 5, with 5 issuing the greatest penalty for the unit. The hotter the climate (aka the greater the climate_heat value of the map), where the battle takes place, the more important it becomes. In mild climates (low climate_heat of the map), it makes little to no difference.
stat_ground scrub_mdf, sand_mdf, forest_mdf, snow_mdf
- Combat modifiers applied to unit only when it fights on the respective specified ground type. Positive numbers are bonuses, negative are penalties. They range from 8 to -8 and they have a 1 to 1 point relationship with attack.
- [scrub_modifier] : self-explanatory (it's quite tricky to know for sure when you are fighting on scrub)
- [sand_modifier] : self-explanatory
- [forest_modifier] : self-explanatory
- [snow_modifier] : self-explanatory
- Details of the unit's mentality.
- [morale] : Unit's morale or else how easy is for a unit to lose heart and flee the battle. The greater the value, the less likely the unit will rout. Note that morale bonuses from buildings in campaign mode are bugged and do not work. The following tags are attached by hardcode to morale values: 1-2 -> 'Poor morale', 8-11 -> 'Good morale', 12+ -> 'Excellent morale'
- [discipline] : Unit's discipline level, which determines the amount of morale lost when morale shocks occur (death of general, flanked, etc). Can be low, normal, disciplined, impetuous or berserker. Disciplined units are harder to lose morale. Berserker units can (obviously) go berserk and impetuous units may charge without orders.
- [training] : Unit's training level, which affects how tidy its formation is. Can be untrained, trained or highly_trained. Untrained units will have the most disorderly formations.
- Determines the distance from target at which a unit will begin charging (start it's charging animation that is) in meters.
- The extra delay, over that imposed by animation, between the unit's volleys. Vanilla has them all 0. According to findings like Darth's, setting values like -50000 or 5000 depending on unit type improves combat function and solves the foot-missile-bug, but these haven't been confirmed by FATW or by any other major mod. Testing suggests that setting this value to anything else than 0, breaks cavalry charges, as it causes the riders to not always lower their spears when charging, even when the charge is made properly.
stat_food ?, another_?
- Details of a units recruitment stats.
- [turns] : Amount of turns needed to train the unit. Max value is 244, anything higher will be ignored.
- [recruit] : Cost to train the unit. Also affects the retraining cost.
- [upkeep] : Price paid every turn for the upkeep of the unit.
- [weapon_upgrade] : Cost to upgrade the unit's weapons (both campaign and custom battles). Affects the retraining cost.
- [armour_upgrade] : Cost to upgrade the unit's armour (both campaign and custom battles). Affects the retraining cost.
- [custom_battle_cost] : Cost to include the unit in your army in custom battles.
- Factions that can recruit the unit in custom battles (assuming no_custom attribute absent) and in campaign (assuming a recruitment line exists in export_descr_buildings.txt). Also allows for unit to be open to bribery to the specific factions.
DLF * const1 * lethality * 1.1 ^ ( ATK - DEF + MDF )
Chance_to_kill (missile): [not 100% tested, but a very good approximation]
const2 * (ATK - DEF - RNG/10 + MDF + DLF*10)
ATK is (missile)attack, DEF is the sum of all applicable defences, MDF is the sum of all applicable bonuses and penalties, RNG is firing range. DLF is the difficulty lever factor. It's 0.7 for Easy, 1 for Medium, 1.5 for Hard and 2 for Very Hard. This factor is what produces the AI combat bonuses for Hard/Very Hard and the AI combat penalty for Easy.
Balancing skeleton types
As a reference, here follow the lethality values that make all vanilla infantry melee skeletons equal, rounded to the second decimal, while the error bars are close to 0.1. An fs_slow_swordsman skeleton with 0.5 lethality will be equal in battle to an fs_fast_dagger skeleton with lethality 0.57 (assuming everything else equal and min_delay is set to be higher that the longest attacking animation; 25 seems enough).
- fs_slow_swordsman / fs_swordsman / fs_semi_fast_swordsman / fs_fast_swordsman : lethality = 0.5
- fs_slow_2handed / fs_2handed : lethality = 0.41
- fs_slow_spearman / fs_spearman / fs_semi_fast_spearman / fs_fast_spearman : lethality = 0.41
- fs_dagger / fs_semi_fast_dagger / fs_fast_dagger : lethality = 0.57
- fs_2handed_berserker (scale 1.1) : lethality = 0.38
Mounted skeletons seem to be fairly balanced as they are.
The second value of stat_health can be used to improve the balance of auto-resolve. Certain units like chariots are currently overpowered in it, while others, like mounted and missile units, are underpowered. Here follow some rough suggestions on how to assign sec hp values in order to balance auto-resolve more evenly:
- Animal units stay as they are.
- All other units get 5 sec hps.
- Units with 2 or more prim hps get -1 sec hp for each extra prim one.
- Missile units with low-medium missile attack get +1 sec hp.
- Missile units with medium-high missile attack get +2 sec hps.
- Mounted units with low-medium charge get +1 sec hp.
- Mounted units with medium-high charge get +2 sec hps.
In naval battles many of the attributes of the EDU entry of a ship are ignored. Those that do have an effect are:
- Soldier (crew) numbers
- Primary hitpoints
- Primary attack
- Primary defense
Note that shield or defense skill seem to count less than armour, with shield being the least important of the three, just like it happens with regular units.
Creating 1-soldier units
All credit for this discovery goes to Bardo, of LotR:TW - Original post here
Here follows the way to create units with 1 single soldier for every unit-size setting. This can be useful to create heroes, monsters or unique characters, without the need to add "bodyguards" for them. What you need to do, briefly:
- Create an elephant-type unit, with the mount being the lone soldier (ie using the lone character's model in descr_model_battle.txt)
- Create a small, invisible model to use for the 'soldiers' and put it 'inside the mount', in descr_mount.txt
- Give only 2 riders to the mount in descr_mount.txt
- Make the unit have 20 soldiers and 1 mount in the 'soldier' line of the EDU
- Assign the "general_unit" attribute to the unit
- Create and assign a trait to the lone characters that will heavily decrease their Influence and Personal Security (-50 will do)
This will work only in Campaign and not in Custom Battles. The number displayed on the unit card when in strat-map mode will vary according to the unit-size settings, but when in battle-map mode, the unit will have just 1 mount (ie the unique soldier - the mount/soldier's riders will be invisible). The only drawbacks are that these characters will be vulnerable to assassination attempts and that they will be able to assault walls, just like elephants.