So I've been trying to figure out the Medium AI error that sometimes afflicts my Greyhawk map (error detailed here) and I've run into a different but possibly related issue:
When you move troops off a transport into an empty enemy territory, that territory is supposed to immediately be captured. This is how it works on other maps. However, on my map this doesn't happen. The territory remains contested (with the red stripe graphic effect), and then in the battle phase it appears as a battle. But you click on the battle and it's instantly resolved and the territory is now captured.
I can't figure out what's causing this. I've searched and found a few possibilities or at least similar issues
Example 1 Example 2
you made your transports also carriers
this is a well known bug that is almost fixed in the next unstable
transports for land, can not also transport aircraft (or even have the potential to) as of 220.127.116.11
Because my galleys are transports and carriers at the same time I thought this might be it. However, I removed their carrier ability and the problem remained, so I guess this was fixed.
Grasping at straws, and looking at the second thread linked above, I also changed my map from property name="WW2V3" value="false" and property name="WW2V2" value="false" to true, first in WW2V2 then WW2V3 and the problem remained.
Any other ideas what it might be or what I might try? Am I missing something obvious?
It's curiosity. But it's also the fact that the error that causes the Medium AI to sometimes crash in Greyhawk is always associated with enemy movements into coastal territories. So I'm wondering if it's related, and if I can fix this, maybe the Medium AI will stop choking.
In the first round I move the Great Kingdom's units out of coastal territories, and away from the border with Nyrond.
Then I move Nyrond units into the abandoned border territory (ground assault) and it is immediately captured with no combat phase required--as expected.
In contrast, I move Suel units into GK's abandoned coasts via amphibious assault and they are not immediately captured, instead requiring a combat phase that is instantly resolved when the battle is clicked.
@panguitch - The reason it isn't immediately captured is because you have scrambling enabled. Here is the code:
// if we have a preceding battle, then we must use a non-fighting-battle
// if we have scrambling on, and this is an amphibious attack, we may wish to scramble to kill the transports, so must use non-fighting-battle also
if (precede != null || (scramblingEnabled && route.isUnload() && route.hasExactlyOneStep()))
Essentially, if scrambling is enabled then amphib moves are always treated as attacks in case there are planes that can kill the transport before it unloads. This is similar to when you unload from a sea zone where there needs to be a battle first.
If you disabled scrambling then it should conquer the territory instantly without an empty battle.
I don't believe there is a bug or that this should cause any unwanted issues.
These are using the latest version of Greyhawk (0.9.7).
Error Log wrote
Exception in thread "Triplea start thread" java.lang.IllegalArgumentException: Loops not allowed in m_routes, route:Route:Oldred -> Rel Mord new territory:Oldred
at java.lang.Thread.run(Unknown Source)
I've made scrambling an option that can be disabled. So if you leave it on and run the second save game, as long as Scarlet Brotherhood again decides to land a conscript in Oldred, the error will recur. But if you load the save game and disable scrambling, and Scarlet Brotherhood again decides to land a conscript in Oldred, the error will not occur.
I know Medium AI won't receive any more development, but any ideas why scrambling would crash it like this? I've tried to get the error to manifest in POS2 which also has scrambling but without success. And if it's map-specific, then perhaps I can change something to fix it.
You're probably right that the Medium AI is having some error related to scrambling. I'm not planning to fix it and I'm not sure why it happens on your map but not Global 1940. The error indicates some kind of loop in the route that is calculated.