From my look through the code - damage is basically Attack * Move_Strength * resistance / Defense.
With the move strength varying between different skills. Typically between 40-60. But as a rule of thumb, more attack focused units, and higher power units, will have moves with a higher strength than weaker units. Resistance is simply 1-(team resistance/1000). with the team's resistance going from 0-1000. So at 1000 resistance (like the mimiflora), units take no damage from attacks of that element.
Also - different shields DO take different amounts of damage from different elements. (most shields at least, Morax's doesn't care about element, instead only caring about the distance between the two teams)
Anemo shields convert to Hydro, Pyro, Cryo, or Electro when struck by that element, before damage is calculated.
All shields take 0.7x damage from none elemental attacks, and 0.4x damage from their element, except for Geo, which instead takes x2 damage from geo attacks. I'll go ahead and transcribe the list below, ignoring the caveats above. I tried to explain everything, but I've given up - there's too many exceptions to the rules I was trying to apply. It's a mess of elemental reactions giving x1.5, super-effective reactions giving x2, and just basic physics doing weird things like not having hydro attacks more effective against dendro, or dendro -> pyro. Because throwing water on plants or plants into a fire isn't as effective as throwing electricity at the fire. For some reason.
With the move strength varying between different skills. Typically between 40-60. But as a rule of thumb, more attack focused units, and higher power units, will have moves with a higher strength than weaker units. Resistance is simply 1-(team resistance/1000). with the team's resistance going from 0-1000. So at 1000 resistance (like the mimiflora), units take no damage from attacks of that element.
Also - different shields DO take different amounts of damage from different elements. (most shields at least, Morax's doesn't care about element, instead only caring about the distance between the two teams)
Anemo shields convert to Hydro, Pyro, Cryo, or Electro when struck by that element, before damage is calculated.
All shields take 0.7x damage from none elemental attacks, and 0.4x damage from their element, except for Geo, which instead takes x2 damage from geo attacks. I'll go ahead and transcribe the list below, ignoring the caveats above. I tried to explain everything, but I've given up - there's too many exceptions to the rules I was trying to apply. It's a mess of elemental reactions giving x1.5, super-effective reactions giving x2, and just basic physics doing weird things like not having hydro attacks more effective against dendro, or dendro -> pyro. Because throwing water on plants or plants into a fire isn't as effective as throwing electricity at the fire. For some reason.
- Shield -> attack element : damage multiplier
- If it's not listed here, and it's not covered by the above general rules, it's a x1 mulitplier. I.E. no multiplier.
- Hydro
- Cryo: x2
- Pyro: x1.5
- Electro: x1.5
- Dendro: x1.5
- Pyro
- Hydro: x2
- Cryo: x1.5
- Electro: x1.5
- Cryo
- Pyro: x2
- Electro: x1.5
- Hydro: x0.7
- Electro
- Dendro: x2
- Pyro: x1.5
- Cryo: x1.5
- Dendro
- Pyro: x2
- Electro: x1.5
- Geo
- Dendro: x1.5
- Animo,Hydro,Pyro,Cryo,Electro,: x0.7
- Lumino:
- Nycto: x2
- Lumino: x0.4
- All others: x0.7
- Nycto
- Lumino: x2
- Nycto: x0.4
- All others: x0.7