The Damage Engine thread has answers to everything you need to know. This is taken straight from it:
Detect damage: use the event "
OnDamageEvent Equal to <any value>". You have access to the following variables for reference:
- DamageEventSource - the unit dealing the damage
- DamageEventTarget - the unit receiving the damage
- DamageEventAmount - the amount of damage the unit will receive
- DamageEventPrevAmt - the amount of damage prior to being modified by the game engine.
- DamageEventAttackT - the attack type (Chaos, Spells, Pierce, etc.)
- DamageEventDamageT - the damage type - for comprehensive info, click here.
- DamageEventWeaponT - the weapon type determines if an attack plays some kind of sound on attack (ie. Metal Heavy Bash). It is always NONE for spells and almost always NONE for ranged attacks.
- DamageEventArmorT - the armor type (Flesh, Stone, Ethereal, etc.)
- DamageEventDefenseT - the defense type (Hero, Fortified, Unarmored, etc.)
- DamageEventArmorPierced - if DAMAGE_TYPE_NORMAL, how much armor was set to be ignored by the user.
- IsDamageSpell, IsDamageRanged, IsDamageMelee - determine the source category of damage dealt.
- IsDamageCode - Determine if the damage was dealt natively or by the user. This can give incorrect readings if the user has not identified to Damage Engine that it is code damage. Therefore I recommend setting NextDamageType prior to dealing damage.
- DamageEventType - An integer identifier that can be referenced by you for whatever extra differentiation you need. You can also create your own special damage types and add them to the definitions in the Damage Event Config trigger. If the unit should explode on death by that damage, use a damage type integer less than 0. If you want the damage to ignore all modifications, use DamageTypePure.
You can modify the following variables from a "PreDamageEvent" trigger:
- DamageEventAmount
- DamageEventAttackT/DamageT/WeaponT/ArmorT/DefenseT
- DamageEventArmorPierced
- DamageEventType
- DamageEventOverride
Usage of the "<Event> becomes EQUAL to <value>" can be extrapolated as per the below:
- EQUAL works as it always has - will run for any damage.
- NOT EQUAL only runs for code damage.
- LESS THAN only runs for damage from attacks but not coded attacks.
- LESS THAN OR EQUAL only runs for melee attacks but not coded attacks.
- GREATER THAN OR EQUAL only runs for ranged attacks but not coded attacks.
- GREATER THAN only runs for Spell damage but not coded spell damage.
So
DamageEventArmorPierced is what you're looking for.