Collateral Damage and no end

DanF5771

Emperor
Joined
Feb 21, 2008
Messages
1,194
The modified way of taking the Barrage promotions into account in 3.17 has caused a side effect which decreases the maximum amount of damage certain units can deliver to other units compared to 3.13.
For example: A Barrage3 Battleship was able to collaterally damage another Battleship down to 40 HPs in 3.13, so it could reach its CollateralDamageLimit of 60% which is now also displayed in the Civilopedia. In 3.17 this is reduced to only 42%, regardless of how many Battleships I use and what promotions they have, a Battleship splashed by other Battleships will not lose more than 42 HPs. Considering all the funny jump-points and the 2.5-ic (quadratic-cubic) effect of HPs on the outcome of battles, I think this difference of 18 HPs is rather big, so this represents another nerf of the Barrage promotion line. I guess it is also disturbing to see the newly introduced information in the Civilopedia differ from the actual results when fighting units of equal strength (transparency).

CvUnit::collateralCombat:
The problem here is (again) the determination of iCollateralStrength and its effect on iMaxDamage, especially for units that have a native Collateral Damage < 100% (Battleship = 50%).

In 3.13 the Barrage promotions increased iCollateralStrength and thus also iMaxDamage which led to the necessary tactic to send the units with the highest promotions into the battle last...

The implementation of iMaxDamage as a function of attacker/defender strength ratio is somewhat questionable, there was quite a discussion about this already in the "Is Barrage broken?" thread. IMHO it is necessary and reflects the inability of an outdated unit to inflict serious damage to the vital components of advanced units. So a Catapult will not be able to take 50 HPs (its CollateralDamageLimit) away form a Tank but only 24 HPs as it could only scratch the Tank's armor with its boulders = RL compatible.
But then this should not decrease the maximum amount of damage a unit can inflict on another contemporary unit of the same strength (Battleship vs Battleship).

So my suggestion would be to replace
int iMaxDamage = std::min(collateralDamageLimit(), (collateralDamageLimit() * (iCollateralStrength + iStrengthFactor)) / (iTheirStrength + iStrengthFactor));
with
int iMaxDamage = std::min(collateralDamageLimit(), (collateralDamageLimit() * (((getDomainType() == DOMAIN_AIR) ? airBaseCombatStr() : baseCombatStr()) + iStrengthFactor)) / (iTheirStrength + iStrengthFactor));

{which represents another step towards my preferred approach to use iCollateralStrength = baseCombatStr() throughout the whole method :mischief: }

So in comparison with 3.13 this effectively buffs iMaxDamage for unpromoted units with native Collateral Damage < 100% and keeps the nerf of Barrage promoted units with native Collateral Damage = 100%.

What do the military and combat mechanics experts among you fellow fanatics think about that?

P.S. Solver: Could you please fix the bug of CollDmg-immunity via Drill2+ soon, I feel so guilty (and am absolutely astonished that no-one has complained about it yet). Thanks.
 
The modified way of taking the Barrage promotions into account in 3.17 has caused a side effect which decreases the maximum amount of damage certain units can deliver to other units compared to 3.13.

I can't comment on the coding part, but I do agree that contemporary units should be able to do maximum collateral damage after several bombardments. Otherwise the maximum collateral damage value in the civilopedia is incorrect.

I think, you've found another unintended side-effect of the changing of the way collateral damage is calculated in 3.17.
 
Back
Top Bottom