I of course completely agree. Fortunately this is being redesigned.
The current design is pretty flawed. Worst is that it is undocumented and ONLY looks at infantry Divisions and Corps.
Without completely parsing the xml file (close to 1500 lines just for Germany) the initial German thresholds appear to be (Div/Corps):
50/50
80/40
110/30
140/20
170/10
200/0
0/70
So there are some booby traps here if the mix of corps and division is outside a range even if only by one. Add to this the 'randomization' element and this is completely opaque to the player as to what is happening or why.
Some XML for your viewing pleasure....
>>
<!--Counting German infantry - information-->
<event eventID="11601" countryID="2" visibleByPlayer="1" oneTimeChecking="1">
<title>ZID_11601_title</title>
<description>ZID_11601_desc</description>
<beginDate day="1" month="9" year="1939"/>
<condition>
<and>
<!--Random check-->
<expression>
<leftOperand method="System.GetRandomNumber" param0="1" param1="100"/>
<operator value="lessOrEqual"/>
<rightOperand constValue="10"/>
</expression>
<!--Country is active-->
<expression>
<leftOperand method="Country.IsActive" param0="2"/>
<operator value="equals"/>
<rightOperand constValue="1"/>
</expression>
<!--Country is not AI controlled-->
<expression>
<leftOperand method="Country.IsAIControlled" param0="2"/>
<operator value="equals"/>
<rightOperand constValue="0"/>
</expression>
<or>
<and>
<!--more than 50 divisions-->
<expression>
<leftOperand method="Country.GetUnitCount" param0="2" param1="0"/>
<operator value="greater"/>
<rightOperand constValue="50"/>
</expression>
<!--more than 50 corps-->
<expression>
<leftOperand method="Country.GetUnitCount" param0="2" param1="1"/>
<operator value="greater"/>
<rightOperand constValue="50"/>
</expression>
</and>
<and>
<!--more than 80 divisions-->
<expression>
<leftOperand method="Country.GetUnitCount" param0="2" param1="0"/>
<operator value="greater"/>
<rightOperand constValue="80"/>
</expression>
<!--more than 40 corps-->
<expression>
<leftOperand method="Country.GetUnitCount" param0="2" param1="1"/>
<operator value="greater"/>
<rightOperand constValue="40"/>
</expression>
</and>
<and>
<!--more than 110 divisions-->
<expression>
<leftOperand method="Country.GetUnitCount" param0="2" param1="0"/>
<operator value="greater"/>
<rightOperand constValue="110"/>
</expression>
<!--more than 30 corps-->
<expression>
<leftOperand method="Country.GetUnitCount" param0="2" param1="1"/>
<operator value="greater"/>
<rightOperand constValue="30"/>
</expression>
</and>
<and>
<!--more than 140 divisions-->
<expression>
<leftOperand method="Country.GetUnitCount" param0="2" param1="0"/>
<operator value="greater"/>
<rightOperand constValue="140"/>
</expression>
<!--more than 20 corps-->
<expression>
<leftOperand method="Country.GetUnitCount" param0="2" param1="1"/>
<operator value="greater"/>
<rightOperand constValue="20"/>
</expression>
</and>
<and>
<!--more than 170 divisions-->
<expression>
<leftOperand method="Country.GetUnitCount" param0="2" param1="0"/>
<operator value="greater"/>
<rightOperand constValue="170"/>
</expression>
<!--more than 10 corps-->
<expression>
<leftOperand method="Country.GetUnitCount" param0="2" param1="1"/>
<operator value="greater"/>
<rightOperand constValue="10"/>
</expression>
</and>
<!--more than 200 divisions-->
<expression>
<leftOperand method="Country.GetUnitCount" param0="2" param1="0"/>
<operator value="greater"/>
<rightOperand constValue="200"/>
</expression>
<!--more than 70 corps-->
<expression>
<leftOperand method="Country.GetUnitCount" param0="2" param1="1"/>
<operator value="greater"/>
<rightOperand constValue="70"/>
</expression>
</or>
<!--Flag not fired yet-->
<expression>
<leftOperand method="Flag.GetValue" param0="11601"/>
<<
ORIGINAL: Cannon Cocker
So, what are the approximate division limits for each country? I like the game but would prefer to spend my time fighting the enemy and not the game! It is frustrating fighting the outcomes of unwritten rules that kill game play.