RCIX -- you're right, the math is wrong. If someone has time to fix and post a revised formula, that would be appreciated. I'd do it, but I'm involved in a bunch of capturables logic at the moment...
If it helps, here's my code version of that formula for quick reference:
int otherShipCount = 0;
if ( currentRollup.ShipTypeCounts.ContainsKey( AttackingUnit.Type ) )
otherShipCount = currentRollup.ShipTypeCounts[AttackingUnit.Type] - 1;
if ( otherShipCount > 0 )
{
FInt attackBonus = 1 + ( AttackingUnit.UnitType.ClusterAttackBonus * otherShipCount );
if ( attackBonus > AttackingUnit.UnitType.ClusterAttackBonusCap )
attackBonus = AttackingUnit.UnitType.ClusterAttackBonusCap;
attackPower = ( attackPower * attackBonus ).IntValue;
}
EDIT: One thing that makes the above equations wrong is that it should be at least (237*(0.035+1))*237*16 instead of (237*0.035+1)*237*16 for example, for it to give the right result in Excel. But if you look at the code logic I have there, it may be increasing the value a bit too much in general -- each ship only counts every OTHER ship for bonuses, not itself. And, kjara, thanks again for dong that!