As it stands, upgrades and attack boosts can only apply the same modifications to a set of units. So we could raise the HP of a swordman and a guard by 100 if we wanted. However, we can't, for example, raise the HP of the swordman by 100 and the armour of a guard by 10 in the same upgrade or attack boost.
Thus, I propose an alternative element, <enhancements>, which has children elements <enhancement>. Each of these children elements has the same <affects> and stats elements as the regular upgrade syntax. This is probably best explained with an example.
This here is the current syntax:
<upgrade>
<image path="images/image.bmp"/>
<image-cancel path="images/cancel.bmp"/>
<time value="300"/>
<unit-requirements />
<upgrade-requirements />
<resource-requirements />
<effects>
<unit name="unit_name" />
</effects>
<max-hp value="0" />
<max-ep value="0" />
<sight value="0" />
<attack-strenght value="0" />
<attack-range value="0" />
<armor value="0" />
<move-speed value="0" />
<production-speed value="0" />
</upgrade>
My alternative would look more like this:
<upgrade>
<image path="images/image.bmp"/>
<image-cancel path="images/cancel.bmp"/>
<time value="300"/>
<unit-requirements />
<upgrade-requirements />
<resource-requirements />
<enhancements>
<enhancement>
<effects>
<unit name="unit_name" />
</effects>
<max-hp value="0" />
<max-ep value="0" />
<sight value="0" />
<attack-strenght value="0" />
<attack-range value="0" />
<armor value="0" />
<move-speed value="0" />
<production-speed value="0" />
</enhancement>
<enhancement>
<effects>
<unit name="unit_name" />
</effects>
<max-hp value="0" />
<max-ep value="0" />
<sight value="0" />
<attack-strenght value="0" />
<attack-range value="0" />
<armor value="0" />
<move-speed value="0" />
<production-speed value="0" />
</enhancement>
</enhancements>
</upgrade>
Attack boosts are similar. Here's the current code:
<attack-boost>
<allow-multiple-boosts value="false" />
<radius value="5" />
<target value="ally" />
<max-hp value="0" />
<max-ep value="0" />
<sight value="0" />
<attack-strenght value="0" />
<attack-range value="0" />
<armor value="0" />
<move-speed value="0" />
<production-speed value="0" />
<particles value="false" />
</attack-boost>
With the enhancements element used:
<attack-boost>
<enhancements>
<enhancement>
<allow-multiple-boosts value="false" />
<radius value="5" />
<target value="ally" />
<max-hp value="0" />
<max-ep value="0" />
<sight value="0" />
<attack-strenght value="0" />
<attack-range value="0" />
<armor value="0" />
<move-speed value="0" />
<production-speed value="0" />
<particles value="false" />
</enhancement>
<enhancement>
<allow-multiple-boosts value="false" />
<radius value="5" />
<target value="ally" />
<max-hp value="0" />
<max-ep value="0" />
<sight value="0" />
<attack-strenght value="0" />
<attack-range value="0" />
<armor value="0" />
<move-speed value="0" />
<production-speed value="0" />
<particles value="false" />
</enhancement>
</enhancements>
</attack-boost>
A possibly easier way to do attack boosts would be to simply allow multiples of the attack boost element rather than using the enhancements element. Either way, the end result is the same: multiple attack boosts on a single skill.