The plan is just my suggestion and I expect it to be improved still. If you can make it better by going Gondar first then sure we will do that.
This corp spread prob really confuses me. The code says:
iSpreadProb += (((GC.getNumCorporationInfos() - pCity->getCorporationCount()) * (100 - iSpreadProb)) / GC.getNumCorporationInfos());
iSpreadProb = 40 for own cities, 20 for AI cities. (Value <iCorporationSpread>40</iCorporationSpread> in Civ4UnitInfos.xml, is cut in half for foreign cities)
GC.getNumCorporationInfos = Amount of corporations in existence
pCity->getCorporationCount = corps present in city
With only one corporation founded and no corp in the city this makes:
40+(((1-0)*(100-40)/1) =
40+1*60/1 =
100
So far so good and this would confirm our findings. With one corp present in the city and 2 corps founded it would become 40+1*60/2 =
70, which also seems right according to my tests. (With 2 corps founded and no corp present it becomes 40+2*60/2=100, the amount of founded corps has no effect, only a corporation present in the city makes failure possible.
Now, this would be all good and seems to correlate with our findings,
but... the code for missionaries spreading religion is exactly the same, yet it can somehow fail even if there is no religion present??
Also, even though the probablility for foreign cities should be 80, I can't seem to fail that either. (Wrong, according to the equation it should be 100 for foreign cities as well without any other corp present.)