Setting up a WC3-like damage system with GAS in UE5

Hello there,

I have an AttributeSet consisting of at least CurrentHealth, MaxHealth, Armor. There are 7 DamageTypes as well as 7 ArmorTypes. I want to have damage calculated as following:

Take unit’s BaseDamage

Apply Armor Formula (e.g.: 1 + (Armor * 0,06) / ( 1 + Armor * 0,06) = DamageAfterArmor)

Get the ‘type to type’ damage ratio (e.g.: if (TargetArmorType == ‘Normal’ && SourceDamageType == ’ Normal’ → DamageTypeMulti = 1.5)

DealtDamage = BaseDamage * DamageAfterArmorMulti * DamageTypeMulti

Apply DealtDamage to Target

Should the Damage come from an Effect per Ability? Should I have an Attribute BaseDamage? Is there a way to apply that logic to other Effects without having to do all the settings over and over again?

(Am I getting that right, that if I apply GameplayTags via GameplayEffectAssetTag > Added, that I could query for those on my Actor or at least it’s ASC? I would need to display the unit’s DamageType and ArmorType in the UI)

Thanks in advance!