• Civilization 7 has been announced. For more info please check the forum here .

Specific Bug Reports

Noticed a number of River/Desert tiles without Flood Plains. Can't remember if it was this mod or another one where that issue popped up in the past; it's not consistent, some Rivers have Flood Plains and others don't. Maybe that's normal behavior and I just haven't seen it before, but I thought I'd report it.

I think it is caused by this mod; I don't think it is normal. Don't remember which build started it. I remember discussing it, perhaps in December, in the original Better AI thread. Should be easy to find, right? ;)

It is actually normal behavior. If the normalizer code (that is what upgrades poor starts to be closer to as 'good' as the best starts) adds a river, it will not add a flood plain. This is true in the game without any mods.

There was a build that was much more likely to add a river for normalization, but that change was backed out for all further builds.
Spoiler for modders who wish to add it back :

look in CvGame::normalizeAddRiver, you will want to always call addRiver, instead of doing the check and usually calling doRiver. The addRiver function is new, and is guaranteed to give fresh water via a river to the given plot if it is possible. (The old function doRiver has at least a 50% chance of creating a river that does not flow past the start plot.)


BetterAI has a slightly higher chance to create a river, only in the case where not only do you not have fresh water, but the starting location also has no where where a valid lake can be added to give you fresh water, but there is still a valid place to put a river. This is only likely to happen on archepeligo maps, and even then is somewhat hard to have happen.

-Iustus
 
It is actually normal behavior. If the normalizer code (that is what upgrades poor starts to be closer to as 'good' as the best starts) adds a river, it will not add a flood plain. This is true in the game without any mods.

Thanks for the explanation, Iustus. If it was explained the last time this came up, I must have missed it or forgotten it.

I rarely play archipelago maps and I do see these non-flood-plain tiles often regularly, so I don't think it's quite as rare as you think.
 
It is actually normal behavior. If the normalizer code (that is what upgrades poor starts to be closer to as 'good' as the best starts) adds a river, it will not add a flood plain. This is true in the game without any mods.

There was a build that was much more likely to add a river for normalization, but that change was backed out for all further builds.
Spoiler for modders who wish to add it back :

look in CvGame::normalizeAddRiver, you will want to always call addRiver, instead of doing the check and usually calling doRiver. The addRiver function is new, and is guaranteed to give fresh water via a river to the given plot if it is possible. (The old function doRiver has at least a 50% chance of creating a river that does not flow past the start plot.)


BetterAI has a slightly higher chance to create a river, only in the case where not only do you not have fresh water, but the starting location also has no where where a valid lake can be added to give you fresh water, but there is still a valid place to put a river. This is only likely to happen on archepeligo maps, and even then is somewhat hard to have happen.

-Iustus

Thanks for the explanation, Iustus. If it was explained the last time this came up, I must have missed it or forgotten it.

I rarely play archipelago maps and I do see these non-flood-plain tiles often regularly, so I don't think it's quite as rare as you think.

I added some bolding to clarify my point.

The normalizer adding rivers is somewhat common, without BetterAI (and also with BetterAI). In the case where one of the rivers it places covers desert, it will not add a flood plain, neither unmodified or with BetterAI. This, which happens frequently, has nothing to do with BetterAI.

The change in BetterAI is that there is a very rare case where it tries to add fresh water to make a start better, and would fail without BetterAI, it now succeeds with BetterAI. It is this rare case, which usually will only happen on heavy water maps (because placing a one plot size lake has to be invalid for every plot next to the start), which is likely only on Archepeligos.

So, to clarify, desert river without flood plains, can be somewhat common. BetterAI doing this more than no mods, very rarely.

To the original point, it is technically correct to not place a flood plain. As the normalizer code is not supposed to make things better except at the start, and it only is intending to add the river, not to add flood plains, which would make it a lot better, it is doing more or less what it should, from a balance standpoint.

Now, you could argue that all rivers in the desert should be flood plains. While it would be possible to fix BetterAI so that it added flood plains for any rivers it adds, this not only would change the behavior from the default, but it would also potentially break some map scripts. If a map script intentionally placed flood plains in different places (like the Fantasy Map), we would not know that, so would place them in the wrong spot. Map scripts could also potentially fix this bug by rechecking for flood plains in their normalize routines.

The best solution is probably to just leave things as is, as the game has always worked this way, and it does no real harm to have these supplemental desert rivers not be as good as 'real' rivers generated by the main map script.

-Iustus
 
Kind of a random bug, just an Assert that popped up on me...

Assert Failed

File: .\CvGlobals.cpp
Line: 1081
Expression: eLeaderHeadNum > -1
Message:

----------------------------------------------------------
 
Build: BetterAI_Warlords_Asserts_07-02-12
Savefile: http://forums.civfanatics.com/uploads/7170/QuickSave.CivWarlordsSave

Roman surprise declaration of war on England

Assert Failed

File: .\CvUnit.cpp
Line: 8732
Expression: getCombatUnit() != NULL
Message: getCombatUnit() is not expected to be equal with NULL

----------------------------------------------------------

Assert Failed

File: .\CvUnit.cpp
Line: 8733
Expression: plot()->isFighting()
Message: plot()->isFighting is expected to be true

----------------------------------------------------------

Assert Failed

File: .\CvUnit.cpp
Line: 8732
Expression: getCombatUnit() != NULL
Message: getCombatUnit() is not expected to be equal with NULL

----------------------------------------------------------
Assert Failed

File: .\CvUnit.cpp
Line: 8733
Expression: plot()->isFighting()
Message: plot()->isFighting is expected to be true

----------------------------------------------------------
Assert Failed

File: .\CvUnit.cpp
Line: 8732
Expression: getCombatUnit() != NULL
Message: getCombatUnit() is not expected to be equal with NULL

----------------------------------------------------------
Assert Failed

File: .\CvUnit.cpp
Line: 8733
Expression: plot()->isFighting()
Message: plot()->isFighting is expected to be true

----------------------------------------------------------
Assert Failed

File: .\CvUnit.cpp
Line: 8732
Expression: getCombatUnit() != NULL
Message: getCombatUnit() is not expected to be equal with NULL

----------------------------------------------------------
Assert Failed

File: .\CvUnit.cpp
Line: 8733
Expression: plot()->isFighting()
Message: plot()->isFighting is expected to be true

----------------------------------------------------------
Assert Failed

File: .\CvUnit.cpp
Line: 8732
Expression: getCombatUnit() != NULL
Message: getCombatUnit() is not expected to be equal with NULL

----------------------------------------------------------
Assert Failed

File: .\CvUnit.cpp
Line: 8733
Expression: plot()->isFighting()
Message: plot()->isFighting is expected to be true

----------------------------------------------------------
 
BetterAI_Warlords_Asserts_07-02-12

Ironclad battle against a Roman frigate

Assert Failed

File: .\CvGlobals.cpp
Line: 2743
Expression: strcmp(szType, "NONE")==0
Message: info type EFFECT_WEAPON_IRONCLAD_CANNON_01, not found, Current XML file is: Misc/Civ4TutorialInfos.xml

----------------------------------------------------------
 
07-02-12 build. Haven't tried to reproduce. I was bombing units in Philly from Vilcabamba. With a bomber active, I selected the target city for unit attack and got the assert.

Assert Failed

File: .\CvUnit.cpp
Line: 547
Expression: getAttackPlot() == NULL
Message: The current unit instance's attack plot is expected to be NULL

----------------------------------------------------------
 
1985 turn

Assert Failed

File: .\CvUnitAI.cpp
Line: 10810
Expression: getUnitAICargo(UNITAI_SETTLE) > 0
Message:

----------------------------------------------------------


Just get thru the "build complete" garbage then shift-enter to force end of turn. Occurs (as nearly all mine do!) during AI movement.

http://forums.civfanatics.com/uploads/50676/AutoSave_AD-1985.CivWarlordsSave
 
Assert Failed

File: .\CvPlayer.cpp
Line: 11481
Expression: isHuman() || isBarbarian() || ((getGold() + iGoldChange) >= 0)
Message:

I had just traded for democracy, changed civics and went into a civ revolt when this appeared.
 

Attachments

  • AutoSave_AD-1866.CivWarlordsSave
    426.6 KB · Views: 61
Just played through a multiplayer game with whatever build was current as of 2/12. Noticed a few strange issues.

During a war, boats the players had previously placed on explore went and pillaged enemy fishing boats on their own. We have a save somewhere for this (I'm at the wrong computer right now) but I can provide it if needed.

Had an issue with great people seemingly not counted correctly. Not sure if it's betterAI or not; need to do more testing. In a nutshell - had temple of solomon, colossus, g. lighthouse all at same place. Generating 7 GP per turn (3 prophet, 2 merchant, 2 merchant). While not running specialists, each turn the odds were always reading 50-50. Even two turns after a GP was born there, absolutely positive there were no specialists during those two turns, odds said 50-50 instead of the correct 43-57.

Finally, city govenor seemed unaffected by the 'allow gov. to control citizens' button. My teammate had a situation where she was trying to hold one city off from actually giving birth to a GP. She went in, manually unassigned (with the minus button) the scientist the govenor was running. Zoomed out from the city, and the city would reassign the scientist. It was intermittent - sometimes he'd be reassigned by the next time she zoomed to the city. She tried staying zoomed into the city as she ended her turn, and watched as he got reassigned before the beginning of the next turn. It was bizarre. The only way she could keep the computer from assigning specialists in the city was to do emphasize food, and switch to slavery to whip off a few population as she neared size 20. I'm fairly certain she made a save of this, but again, I can't post it this instant.
 
Just played through a multiplayer game with whatever build was current as of 2/12. Noticed a few strange issues.

During a war, boats the players had previously placed on explore went and pillaged enemy fishing boats on their own. We have a save somewhere for this (I'm at the wrong computer right now) but I can provide it if needed.

Had an issue with great people seemingly not counted correctly. Not sure if it's betterAI or not; need to do more testing. In a nutshell - had temple of solomon, colossus, g. lighthouse all at same place. Generating 7 GP per turn (3 prophet, 2 merchant, 2 merchant). While not running specialists, each turn the odds were always reading 50-50. Even two turns after a GP was born there, absolutely positive there were no specialists during those two turns, odds said 50-50 instead of the correct 43-57.

Finally, city govenor seemed unaffected by the 'allow gov. to control citizens' button. My teammate had a situation where she was trying to hold one city off from actually giving birth to a GP. She went in, manually unassigned (with the minus button) the scientist the govenor was running. Zoomed out from the city, and the city would reassign the scientist. It was intermittent - sometimes he'd be reassigned by the next time she zoomed to the city. She tried staying zoomed into the city as she ended her turn, and watched as he got reassigned before the beginning of the next turn. It was bizarre. The only way she could keep the computer from assigning specialists in the city was to do emphasize food, and switch to slavery to whip off a few population as she neared size 20. I'm fairly certain she made a save of this, but again, I can't post it this instant.

This should all be posted in the questionable behaviour thread and not in the specific bug reports, but ok.

I don't exactly understand what's wrong with the automated exploring ships pillaging the fishing boats of your enemy? It's at most questionable behaviour, but you'll need to explain what you would like the ships to do instead of the pillaging. Something like a savegame with the ship in a specific position and pressing enter shows the ship pillaging some food resources while you would like to see it explore some tiles in the neighbourhood.

The second report is not a bug. You assume that the chances of great person generation are related to the amounts of Great Person Points being generated by the various sources (and you forget the great person point being generated by the temple of Solomon). This is not true. It is related to the number of great person sources. Read the following War Academy strategy article for more information: Great People Points Explained.

For the third report about questionable behaviour a savegame is needed and an exact description of the moves you do to replicate the bug.
 
I don't exactly understand what's wrong with the automated exploring ships pillaging the fishing boats of your enemy? It's at most questionable behaviour, but you'll need to explain what you would like the ships to do instead of the pillaging. Something like a savegame with the ship in a specific position and pressing enter shows the ship pillaging some food resources while you would like to see it explore some tiles in the neighbourhood.

Sorry about the wrong forum for the great person issue, but I'm puzzled by how this can be considered anything but a bug. This isn't a judgement call about it exploring the 'wrong place' or about the AI's behavior. This is my ship on explore inexplicably not exploring. For what it's worth, the third issue is also specific and similar to the examples on the first page of this forum - turning off govenor's control of citizens didn't work, and he continued to move citizens whom I manually placed on specific plots up to specialist slots regardless of that button's setting. It's clearly a bug, and I'll post a savegame for it shortly.

Ships on explore are supposed to explore, not pillage. Your own combat units are under your control during war, and don't decide to pillage for you. Scouts on explore don't go around pillaging either.* Boats didn't used to. Combat decisions need to be left to the player. I don't understand your question about asking for an alternative - the boat didn't do something wrong in a 'this is ok, but this would be better' manner. It did something it simply shouldn't ever do.

Bottom line, boats autopillaging seems totally outside the scope of BetterAI. I searched the release notes on sourceforge and, if intentional, this new feature isn't documented. For those two reasons, I assumed it must indeed be a bug. The only times 'explore' is even mentioned is in the 1-25 build (and some fixes in 1-29) -- this introduced that units on explore would attack goodyhuts automatically if the odds were good enough. (*This makes sense and is certainly part of normal exploring. It is not the same as pillaging an enemy.) It seems like this new boat behavior might have been erroneously introduced at that time.
 

Attachments

  • OOS.JPG
    OOS.JPG
    180.6 KB · Views: 87
Scouts on explore don't go around pillaging either.*

But almost any other unit does. I don't think scouts can, being unable to attack. And this was pre-betterAI, the extension of the explore/pillage behaviour to boats seems a logical continuation of the existing behaviour of the explore function.
 
Assert Failed

File: .\CvSelectionGroupAI.cpp
Line: 416
Expression: iValue > 0
Message: iValue is expected to be greater than 0

----------------------------------------------------------


Select all bombers in kwaDukuza (sp?), attempt to STRIKE (i.e., damage units not reduce city defenses,) Ulundi as a stack -- you will get the above assert for every single bomber as it attacks.

http://forums.civfanatics.com/uploads/50676/Marcus_Aurelius_AD-1927.CivWarlordsSave
 
Assert Failed

File: .\CvPlayer.cpp
Line: 11481
Expression: isHuman() || isBarbarian() || ((getGold() + iGoldChange) >= 0)
Message:

----------------------------------------------------------

Sadly, I don't have a save file. I'll get one the next time I get an assert.
 
Top Bottom