Sigh... When you are able to review the way I've gone about setting things up there you'll be able to see what I mean. Naming conventions matter. You basically named the promotion tags as if they were unit tags and that is incorrect. You did not set up the structure so that units can have innate ability without being assigned free promotions and that's just not the way to go about this when its avoidable.
Furthermore there are key words that should be used in establishing a tag like this that clue in those following the code to understand more things and the simplistic naming you've given it ignores these conventions. That last part is not a big deal no matter how you look at it but there is ONE part of the wording that
needed to be in there to avoid the clash of assumption that the tag was for a unit rather than for a promotion. (That extra special key word btw is simply the word 'Change' at the end of the tag.) The requirement for that simple adjustment of naming on the tag in and of itself enforced the need to break from the current tag implementation. That simple.
I'm not trying to 'take over'...
you asked for the review and this is how I'm giving feedback. I figure from here you'll know how to properly go about the same type of task once you understand the reasons for the changes I made, which are not truly extensive at all. You ask how I'd like it, and to be honest, Koshling has done this for me (which I've greatly appreciated), and AIAndy has tried to TELL me a lot of how I should restructure things and at times has then gone in and worked out an entirely differing method to accomplish the same thing in a superior way (which I've also greatly appreciated as humbling as it may be

).
I MUCH prefer the 'go ahead and change it in code so I can SEE the difference' approach over the 'TELLING me how to completely rewrite everything I've done' approach. This makes things apparent at a much deeper level and doesn't involve a struggle to understand programmer terminology while the second is useful but extraordinarily frustrating to follow. Just relax and see what I mean on my next update, k?
Seriously... I'm trying to be a good team player here while ensuring some integrity of the conventions of the existing coding so we don't leave a mess for those who may follow in our footsteps. There's already a lot of that and although I'm sure I've added my share, where I KNOW how to avoid it I strive to.
The 'big project' is mostly just a lot of tags that will be further explained soon. Most are the requests of other members on the team.