The basic idea behind the 100 bombard strength seemed to be: the AI only has 1 big SoD, and that's where all the bombard units will be, and this SoD should, if possible, bomb city defences to the ground in 1 turn. 100% is max defense for cities (at least without Chitchen Itza), once the army has 100 bombard strength, no more is needed.
For one, not always will enemy cities have that much defence, before Engineering 60% is likely the maximum you encounter. And after people build castles, bombard strength of 100 is no longer enough to bomb down the whole defence in one turn, because castles not only add defence, they also reduce damage from bombardment. To reduce a city's defence to 0% in one turn, 250 bombard strength can be necessary with castle and Chitchen Itza.
So I think scaling should be done using either 100 (as before) or whatever it takes to take down the defence of the best-fortified opponent city on the map at that time + 20, whichever is higher.
All of that is assuming that the AI only targets one heavily fortified city at once though.
But I think what you wanted to address was a different issue, the one that the AI sometimes doesn't take a lot of collateral damage dealing units with it (note that bombard and collateral damage are not the same in terms of game mechanics even if all land units that have the one ability also have the other). I don't know what unit_ais the AI puts into a SoD but if it's only attack, attack city and coounter, then something needs to be done for unit_ai attack_city to make the collateral damage ability for siege units worth more, and scale with army size. Currently it's just
Code:
iValue += ((iCombatValue * GC.getUnitInfo(eUnit).getCollateralDamage()) [B]/ 400[/B]);
UNITAI_COLLATERAL looks a bit strange to me too:
Code:
case UNITAI_COLLATERAL:
iValue += iCombatValue;
iValue += ((iCombatValue * GC.getUnitInfo(eUnit).getCollateralDamage()) [B]/ 50[/B]);
iValue += ((iCombatValue * GC.getUnitInfo(eUnit).getMoves()) / 4);
iValue += ((iCombatValue * GC.getUnitInfo(eUnit).getWithdrawalProbability()) / 25);
iValue [B][COLOR="Red"]-[/COLOR][/B]= ((iCombatValue * GC.getUnitInfo(eUnit).getCityAttackModifier()) / 100);
break;
For one, the collateral unit_ai gets an 8 times higher bonus for its collateral damage alility. Also, its value gets reduced when it has cityattack: trebuchet has 100% city attack modifier and 4 strength, which means it gets -4 there. If collateral is a unit_ai that never attacks cities then ok, it shouldn't get a bonus from cityattack abilities, but a reduction, and even more so such a massive one, makes no sense. If collateral is a unitai for city attack too then that minus should be a plus, if not (and I think that's the case) then this line should be removed.
CollateralDamageLimit and CombatLimit might not be all that important, CollateralDamageMaxUnits I think should be considered though. and should be what scales to army size most (when big stacks clash, this value plays a big role, though not so much if the enemy only has very few units.)