RDNWiki: DOWAttributeEditor/ArmorAndDamageExplanation ...

RDN Wiki Home | Page Index | Recent Changes | Recently Commented | Users | Registration | Login:  Password:  

Armor and Damage Explanation

By SvK



This is reproduced from the Working on an armour explanation thread.


The armor system in Dawn of War is quite complicated. Each entity has an armor type, an armor amount, and an armour minimum. Each weapon has damage, a default armor-piercing value, and optional armor-piercing values for each armor type.

Final Damage Multiplier = min( (100 - armour + armour_piercing_value) , 100 - armour_minimum ) / 100

armour and armour_minimum are in the ebp. armour_piercing_value is from the weapon blueprint.

Taking it 

How to set up the armor. Armor is defined in the entity blueprint.


for infantry and vehicles


for buildings

GameData["health_ext"]["armour"] = 100.000

The percentage of damage blocked, if the weapon is not armour-piercing. Usually 100.

GameData["health_ext"]["armour_minimum"] = 0.000

The percentage of damage blocked no matter what armor-piercing value the weapon has. Usually 0.

GameData["type_ext"]["type_armour"] = Reference("tp_infantry_high")

The armour type. Most weapons have specific armour-piercing values for each armour type.

For most units, all you should have to do is set the first value to 100, the second to 0, then pick an appropriate type for the third value. Here are the pre-defined armour types:


Dishing it out

GameData["area_effect"]["weapon_damage"]["armour_damage"]["armour_piercing"] = 10.000

This defines the default armor-piercing value of the weapon. Armor-piercing values for specific armor types can be defined (and are described later) but if the weapon encounters something that does not have an armor type listed in the table, it will use this value.

GameData["area_effect"]["weapon_damage"]["armour_damage"]["armour_piercing_types"]["entry_01"]["armour_piercing_value"] = 30.600
GameData["area_effect"]["weapon_damage"]["armour_damage"]["armour_piercing_types"]["entry_01"]["armour_type"] = Reference("tp_infantry_low")

Here's an entry defining the armour-piercing value of a weapon vs. one armour type. This example shows a weapon dealing 30% damage against targets with tp_infantry_low armour. If the target's armour value is less than 100, the weapon would do more than 30% damage, but all stantard units have an armour value of 100. That is another reason to set your custom units' armour values to 100.

Often, a .NIL file, like eldar_shooting_weapons.nil, will create a table of armour_piercing_types for all 14 armor types, and leave it to other weapons (which inherit from it) to fill in the armour_piercing_value. I don't really like this, since 1) if the entry is created, the armour_piercing_value defaults to 0, so if you forget a damage type, your weapon won't even scratch it, and 2) the weapon files have lists of multipliers, but the armour types they go to are in a different file, making it hard to tell at a glance what armour types the weapon is effective against.

Additional notes

The damage multiplier is clamped to the range [0,1]
A weapon will never do less than min_damage_value. This trumps even "armour_minimum."


Original Thread: Working on an armour explanation
Attribute Editor
RDN Wiki Home

End of Page

Referring pages: DOWAttributeEditor

There are no files on this page. [Display files/form]
There is no comment on this page. [Display comments/form]