Right but promotions only effect parent statistics like strength and ranged strength. I want to make new statistics. Morale, armor, etc.
But what do those statistics DO? If a high morale means gaining a bonus to combat when friendly units are nearby, then you can do that through promotions. If "armor" means taking less damage from combat, then you can do that through promotions. If you want some units to regenerate health constantly, you can do that. It's all semantics beyond a certain point; if the goal of your "armor" system can be achieved through the existing promotion abilities, then call it whatever you want, it's still the same thing.
And that's just with XML. Once you bring Lua into the mix, you can do a lot more. In my own mod, for instance, I have added custom promotions that use Lua to:
1> Increase or decrease a unit's base strength by +/-25% based on its opponent's strength
2> Give a 10% chance of dealing 5 "first strike" damage before the fight starts
3> Give a 10% chance of spontaneously healing 5 damage after the fight ends
4> Reduce all incoming damage sources by 1 point (meaning minimum of 0 instead of 1, so that you can't whittle the unit down with weak ranged attacks)
5> Steal promotions from the opposing unit
6> Deal 1 damage to any enemy units adjacent to the unit you're attacking
and so on. So chances are, whatever you envision "morale" and "armor" to mean can already be done using the existing tools.