Multiple Damage Types Simultaneously

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.