V019: There is an error in the calculation of collateral damage done to units with Drill2-4 promotions, this is partially my fault.

I suggested that getCollateralDamageProtection() should be applied as a scaling factor and the consensus was that this makes sense. However, my proposed code renders units with promotions >Drill2 immune to collateral damage due to my improvable knowledge of C++ rules:
currently:
iModifier *= (100 - pBestUnit->getCollateralDamageProtection()) / 100;
effectively results in
iModifier = 0;
Should be 2 seperate steps:
iModifier *= (100 - pBestUnit->getCollateralDamageProtection());
iModifier /= 100;
Of course the same modification needs to be done to the code for bunker protection.
Furthermore I'm still a bit unhappy about the remaining lack of transparency when comparing numbers for a unit's native collateral damage vs its Barrage promotions.
Example: Provided Barrage is allowed for Tanks, the current implementation leads to huge differences between an ordinary BarrageI Tank (20% ExtraCollDmg) and a modded Tank that starts with a little native CollDmg of 20%. Common sense would assume that they inflict the same amount of collateral damage to defenders.
However, the ordinary BI Tank will take
3 HPs away from a Longbow whereas the modded Tank will lower his health by
9 HPs! Its all in the nonlinear formula.
This problem can be overcome by applying all modifications after the core formula as I explained
here.
Why not do it like this?