Why don’t you use a struct containing values of your damage types?
(I’ll call types now elemental)
All your weapons contain a struct that stores the elemental damage.
For example:
Ice : 0.0
Fire: 0.1
Thunder : 0.2
Water : 0.0
etc.
When attacking, you just use some math to multiply the elemental damage with your base damage.
For example:
Base Damage (Stored in weapon or Character Strength+Weapon Base Damage or whatever you want it to be) : 50
Ice Damage = 500.0 = 0
Fire Damage = 50 * 0.1 = 5
Thunder Damage = 50 * 0.2 = 10
Water Damage = 50.0 = 0
Now your enemy stores “Resistance” Struct:
Ice Res.: 1
Fire Res. : -.5 (absorb)
Thunder Res.: 1.0
Water Res. : 1
Multiply the Elemental Damage with the Resistance and then add them all to the Base Damage.