Your AI is incredibly good and I love playing against it.
However there is one thing I noticed, that could be improved.
The AI is mostly using the same routes to engage, I was wondering if you could add a function for the AI to determine the Strength of defenses along a path and make the AI choose another one if the threat level is too high.
Lets assume a base has 2 entries but 1 of them is well defended while the other one is mostly unsecured. The AI should Calculate the Primary route to target and if there are defenses on the way, it should initially disable this route and check for another route. On the second route there are also defenses, but less than on the first route, again the AI is also closing this route and is checking for another (one with no defenses). However in this scenario there are only 2 routes available. Now the AI goes back to the second path as it's threat level is the lowest and moves its units to this position.
With this script the AI will always try to avoid defenses for as much as it can.
the best way to check this out is gridlock
Another idea on how to deal with defenses is to have the AI calculate the type of units it needs to overcome them. However this requires a more dynamic research and build order. If the enemy is relying heavily on Defenses the AI must go for Arty (when concrete) and flamer (on bunkers).
Engaging a defense building with the wrong type of weapon can be quite deadly and is at least for the moment the most common reason the AI looses against human players!
Apart from that I noticed that the AI can't collect research boxes nor oil barrels. If possible you could add a script that automatically adds a research item from the opponent to the AI once such a building has been destroyed if it can't collect the items.
A workaround for the barrels could be 100 oil per destroyed oil platform. This is not exactly collecting but compensates the disadvantage and evens the ties.
