My proposal is to use the resistance members rather than CProps for the built-in members but preserve the CProp method for any custom resistances that a shard developer wants to add. The same function call would be used for modifying resistances. It would check against the built-in resistances and if the modification was a built-in resistance it would adjust the resistance_mod member. If it was a custom resistance it would modify the CProp for that resistance.
It should be a fairly easy rewrite of the parts of damage.inc that handle resistances. Even I should be able to handle it.

Thoughts anyone?