Matrixlike datatype to store attack type<-> armor type interaction value?

Hi, so a friend and I are working on some RTS heavily inspired by warcraft 3. As such, we are copying the combat system and with that the different attack and armor types, e.g. piercing, normal,… attacks and heavy, light,… armor.
Now, for each tuple (attack, armor) it is required to store a damage reduction factor. E.g. chaos damage always deals 100 % damage to any kind of armor, while e.g. magic damage is very effective against heavy armor, but less so against, e.g., normal armor.
An example of an optimal way to store the data can be found in Armor and Attack types - Liquipedia Warcraft Wiki, see the Damage calculation tables

To represent attack types and armor types I created separate blueprint classes (I followed the approach for ressource types of a plugin we are using here) which at the moment are only there to store the type and nothing else. Can I create something like
std::map<std::tuple<AttackType, ArmorType>, float> in the blueprint editor to conveniently set the damage reduction factors?

Perhaps this might help: UE5 How To Use A Custom Struct As TMap Key – Unreal C++ API

Then define in a Data Asset.

//.h
UCLASS(BlueprintType)
class _API UAttackTypeDataAsset : public UDataAsset
{
	GENERATED_BODY()
public:
	UPROPERTY(EditAnywhere)
		TMap <FAttackTypeStruct, float> DamageMultiplier;
};

Thank you, this would actually work I guess. I will see if I consider this solution in the future, currently I wrote some C++ code to manage it, but it is not optimal yet.