One important point on spell design:
Please keep the resist calculation in the Spell.xml instead of making it a hardcoded black box system.
The spells calculate their damage therre, they can also calculate their resist chance.
That ensures some desperately needed flexibility like...
Other resists: Just because there is a "magic resistance" stat... that doesn't mean that every spell has to use it.
With a Throw Rock spell the projectile itself could be entirely unmagical and the whole spell could "resist" on the unit's dodge and defense stats.
Illusions might take the target's INT into account. Blood magic spells the total HP...
That would in turn allow adding vulnerabilities to certain creatures.
7 hidden "vulnerability" unit properties that default to decimal 1.0 if not assigned to the unit. (Fire, water... life, physical)
A fire spell would always factor in the Vulnerability.Fire in it's damage and/or resist calculations so a plywood golem would have a harder time to resist fire spells.
A glass golem would have maybe 0.7 Vulnerability.Fire but 1.3 Vulnerability.physical.
These vulnerabilities would not need to be displayed with the unit data. The generic "magic resistance" stat is enough information.