[...] Is there a way you can cause the uncaught exception to be displayed, either from the C++ itself or via the Python wrapper?
Not being well familiar with the Python/C interface and Python in general, I don't think I can get a core dump with reasonable effort, or even a fault signal. Seems quite likely that CvGameText::getPlotHelp gets called, but of course that doesn't imply that it's the root of the problem. Fwiw, my conjecture regarding the sequence of events is:
In Rise and Fall, the dotmap leaks info between chapters: [...]
Neither civ had their world map centered, and tiles revealed while I was playing didn't overlap, so there's no other way I could have known the relative location of Korea and China.
It would be nice to remember the dotmap in case I return to a given civ, but losing it in that case wouldn't be the end of the world.
I think the dotmap is a BUG feature (as opposed to BULL), i.e. all-Python. So I don't think I want to figure out how to store that per player; will have to clear it. I'll add it to my dotmap to-do list:
[...] 2 saves on successive turns, crashes in both of them.
Thanks. That was caused by the raze-city popup. I've added some text there to let the player know when a conquered city can only be liberated directly through the popup. When the city has had more than one previous owner, BtS computes the target for liberation a bit differently, with a bias for the original owner, but only when liberating through the popup. I've considered eliminating that obscure (apparently deliberate) special rule, but then there would be one fewer reason for ever liberating upon conquest. (Just thought I'd mention that apropos.)
I've taken a look at the revolt probabilities in the savegame and noticed that all cities that are having problems with revolts (Delft, Amsterdam, Rotterdam, Middleburg) have hurry anger. Now I'm not sure if you were not aware that this increases revolt probabilities, or whether you already had all those Archers and just didn't mind in this situation. With hurry anger, Delft needs 40 garrison strength to be fully pacified, without it only 11. That'll have to be dialed down (the 40 with anger I mean). Also, whether or not you were aware, it needs to be communicated better. Adding a note "increased because of cruel oppression anger" to the nationality bar hover text is easy enough to do.
Edit - for reference:
AdvCiv manual (f1rpo) said:
"Cruel oppression" anger in a city makes revolts considerably harder to suppress. (Otherwise, Slavery would be a too obvious answer for anger from foreign culture.)
Other considerations:
Marathon speed - Culture spread isn't speed-adjusted, so, in a way, acculturation of conquered cities should be relatively fast. Then again, there is also much more time than on Normal speed for the old culture to spread prior to conquest. And the duration of hurry anger
is actually speed-adjusted, so perhaps the effect of anger on revolt chance should be decreased on slow settings.
Era - If the previous owner is still alive, then revolt strength scales with that player's current era. The Dutch in this case are defeated, so the game era counts, which is Medieval, but your units are all pre-Medieval. I guess that's fair enough, but something to reckon with perhaps.
Map size - As I mentioned earlier, a slight adjustment could make sense in order to "allow" faster expansion when there is much room.
I suppose it's intended that all terrain is Grassland? Well, you probably would've let me know if that was happening by accident ...
i placed an enemy stack, 2 steps from my swordsman, emeny had 2 catapults, 1 artillery and some swordsmans and axemans,
i kept seeing - MISSIONAI_RETREAT ( they kept going back to the city) if the debug alt or shift key.
why retreat? it used city attack unit ai. seems odd, i would expect swift kill for my single swordsman.
no cities of mine on enemy island. was at war of course).
I can reproduce that, at least pretty much, but I haven't debugged it. I guess AI city attack stacks really don't like to go out of their way far. Wouldn't want them to chase after some distraction. Note karadoc's comment (and iRange for AI_anyAttack being 1) in AI_attackCityMove:
Code:
// K-Mod (changed to allow cities, and to only use a single unit, but it is still a questionable move)
if (AI_anyAttack(1, 60, iMoveFlags | MOVE_SINGLE_ATTACK))
In this specific situation, it would probably be best to dispatch, say, a single Artillery and an Axeman to destroy your unit – before you might be able to reinforce or evacuate it. I'm not all that well familiar with the tactical AI. Seems like one of probably many instances in which more flexibility would benefit the AI. Some care would have to be taken with respect to performance. I'd feel more motivated to address this particular example if it had occurred in an actual game.
im seeing some assertions on game load, map generation after savegame - plot(ix,iy) something and some more stuff (cant load the save).
You can't load the initial autosave? If this happens with DotO, then it could very well be a DotO issue; you have a fair amount of extra savegame data. If I had adopted the "We the People" savegame format, then such errors would probably be much easier to debug or wouldn't occur in the first place. As it is, one can only set breakpoints in the various
read functions, perhaps, for a start, CvInitCore, CvGame, CvMap, CvTeam, CvPlayer and narrow down where the crash occurs and where the loaded data starts looking nonsensical.