@RogerCooper said:
The only obvious difference between the xml files is the "placeNoAirCheck". But changing that to "place" did not solve the problem.
This change does work. As long as the step name is "place" the delegate can still be "NoAirCheckPlaceDelegate".
<delegate name="place" javaClass="games.strategy.triplea.delegate.NoAirCheckPlaceDelegate" display="Place Units"/>
...
...
...
<step name="austrohungariansPlace" delegate="place" player="AustroHungarians"/>
This is because the AI looks for "place" or "endStep" when determining its purchases. "placeNoAirCheck" and even "noAirCheckPlace" do not work.
AustroHungarians and Russians both may, using HardvAI, start the game without making any purchases.
The reason for the non-purchase is more an AI problem. The first step in the AI's purchase routine is to determine how many fodder units it needs to defend high-value targets. Since both Vienna and Moscow are safe from attacks no defensive fodder units are purchased. During gameplay Germans, French and Ottomans can also feel 'safe' and not purchase fodder units.
Once the AI determines its defensive fodder purchases it then tries to purchase factories and high-value units. What PUs that are not spent are carried over. Because the AI does not try to repurchase fodder units with this left over PUs, it ends up purchasing very few or nothing.
Because the fighter is a 2 attack/2 defend it is considered very weak when compared to infantry and artillery and is almost never purchased. Also, only the Americans purchase navel units.
If the combat move is switched with the purchase step the non-combat step can be removed.
<step name="austrohungariansUserActions" delegate="userAction" player="AustroHungarians"/>
<!-- Combat Move is before Purchase -->
<step name="austrohungariansCombatMove" delegate="move" player="AustroHungarians"/>
<step name="austrohungariansPurchase" delegate="purchase" player="AustroHungarians"/>
<step name="austrohungariansBattle" delegate="battle" player="AustroHungarians"/>
<!-- NonCombat Move is removed -->
<!-- "place" is "NoAirCheckPlaceDelegate" -->
<step name="austrohungariansPlace" delegate="place" player="AustroHungarians"/>
<step name="austrohungariansEndTurn" delegate="endTurn" player="AustroHungarians"/>
The AI will first preform a normal combat move, this includes moving air units, and because there is not a noncombat move step, the AI will perform a normal noncombat move with the exception of air units in combat, which cannot be moved. Even though the AI can simulate a combat move without the noncombat move it confuses which territories it can do battle in.
Cheers...