My 5 modding changes:
1. All InternalNames should be 100% modifiable through the mods folder. Currently some InternalNames (like TechsDef) are not modifiable using a file in the mods folder. This harms modding because end users will be much less inclined to install mods which overwrite the core game files that involve more complex installation procedures, or re-installation of those files every time an official patch is installed. It also makes bug hunting a nightmare for the modder.
2. All modded files should overwrite or modify core InternalNames in exactly the same way. Currently, the modder needs to memorize a certain set of rules and conditions (thanks to Heavenfall, nicely laid out) when modding core InternalNames through the MODS folder. For instance in SpellDefs I need to know that I can overwrite every single value in the SpellDef, with the exception of Prereq, SpellResourceCost, and I believe some of the SpellEffects modifiers. This is silly and frustrating to no end.
My suggested solution is when loading the mod, make each InternalName in the MODS folder simply overwrite the entire contents of the core file's InternalName. This would make modding much easrier because we could then cut-and-paste the InternalName we want to modify into a new file, modify the values we want changed, and save it into our mod.
Others have suggested adding new tags like <overwrite> or <modify> but I personally think this would be more labor intensive, less stable, and more confusing to modders in the long run.
3. AND/OR Prerequisite Types. Currently prerequisites are somewhat hard-coded by the type of InternalName in which they are contained. SpellDef prereqs are always 'AND' prereqs, meaning all the the prereqs are required before the spell can be cast by the unit. AbilityBonusOption prereqs are always 'OR' if they are of the same type but they are 'AND' if they are of different types. So for instance an AbilityBonusOption with both an Allegiance prereq and an Unit prereq will require both prereqs before the unit can possibly select the ability on level-up. But an ability with two unit prereqs will only require one of those prereqs to be fulfilled in order to select the ability on level-up. I'm pretty sure RestrictedAbilityBonusOption prereqs are 'AND' prereqs, but I'm not 100% sure on that.
My suggested solution would be splitting and representing prereqs like this:
<ANDPrereq>
<Type>AbilityBonusOption</Type>
<Target>Unit</Target>
<Attribute>Death1</Attribute>
</ANDPrereq>
<ORPrereq>
<Type>AbilityBonusOption</Type>
<Target>Unit</Target>
<Attribute>Fire1</Attribute>
</ORPrereq>
<ORPrereq>
<Type>AbilityBonusOption</Type>
<Target>Unit</Target>
<Attribute>Air1</Attribute>
</ORPrereq>
An ability or spell like this would require the unit to have Death1 AND (Fire1 OR Air1) to unlock. You could also introduce multiple types by introducing an ID into the ORPrereq tag like this:
<ORPrereq>
<ID>1</ID>
<Type>AbilityBonusOption</Type>
<Target>Unit</Target>
<Attribute>Death1</Attribute>
</ORPrereq>
<ORPrereq>
<ID>1</ID>
<Type>AbilityBonusOption</Type>
<Target>Unit</Target>
<Attribute>Water1</Attribute>
</ORPrereq>
<ORPrereq>
<ID>2</ID>
<Type>AbilityBonusOption</Type>
<Target>Unit</Target>
<Attribute>Fire1</Attribute>
</ORPrereq>
<ORPrereq>
<ID>2</ID>
<Type>AbilityBonusOption</Type>
<Target>Unit</Target>
<Attribute>Air1</Attribute>
</ORPrereq>
An ability or spell like this would require the unit to have (Death1 OR Water1) AND (Fire1 OR Air1) to unlock.
After a lot of thought, if these three things got fixed (heck, if only #1 and #2 were fixed) about 95% of my modding woes would be alleviated. I could get into more detailed items, but it's not worth mentioning them at this time.