Bug Reports

Yes, Lib is right. If I accept, then I sign peace after no war.

Another bug about food. I'll reproduce the debugger information and post it here.

I don't have a clue what could have produced it.
 

Attachments

Assert Failed

File: CvCity.cpp
Line: 4883
Expression: iValue >= 0 || eYield == YIELD_FOOD
Message:

----------------------------------------------------------
 
And one more bug:

Assert Failed

File: CvUnit.cpp
Line: 10208
Expression: false
Message: Goods transported over water by none Sea Vessel

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

Attachments

Thanks guys, I am looking into these now. Also note, that when you get a Diplomacy bug and you can choose, "Let me consult my advisors", the code logs what Diplomacy event is being called. So, when you see this go to your MyDocuments and find your Colonization installed and look for the MPlog in the Logs folder and upload that as well, or post the relevant parts of the log. You can open it in notepad. Also, note that MPlog is only created when you click to go to next turn. So, if you load a game there is no log created yet. So this means loading your saved games doesn't give me the log, so it would be helpful if you remember to get that for me on these types of errors. Or for any type of crash error as well. Grab that log right after the crash and upload it as well.
 
Ok, the Diplomacy bug has to be tied into the Delayed Response, it looks like he is offering peace along with 300 gold in Trade's save. In Lib's game Mansa Musa is offering Peace and Gold in exchange for Peace and a Tech, however there is another Cease Fire offer being made by Godwinson "I think" and it works fine.

I think at this point we just need to #if0 (remove) the Delayed Response feature as it is constantly being an issue until we have time to dedicate to this.

I remember there was an issue with the Peace Treaty agreements not working as intended because of issues with the DLL and being at war. Perhaps we can try and just remove the Peace offers like this from the Delayed Response and see how that goes.

How useful is this feature any way is the question, is it worth all this hassle?
 
I think at this point we just need to #if0 (remove) the Delayed Response feature as it is constantly being an issue until we have time to dedicate to this.
Better make it #ifdef USE_DELAYED_RESPONSE. That way we can just define that flag in a header later and it will enable all the places we disable now.

How useful is this feature any way is the question, is it worth all this hassle?
It's very useful. You get an offer, you stall it to check stuff to figure out if you want to do it or not. However the place where I need it the most is actually RaR because I play that one in multiplayer. It would be awesome to delay a response, chat about what to do and then give an answer when both member of the team agrees.

It might have some bugs, but it will be worth it to solve those. I'm not sure what to do with the peace offering, which vanishes inside the exe. Not only is diplomacy not supposed to be the job of the exe, it has a bug in it. Removing the delayed response feature will not fix that bug and the game will still not behave as the DLL wants it to behave.
 
@Night

Will #ifdef USE_DELAYED_RESPONSE work without the variable being define?

Yeah, while looking at the below bug I got another delayed response. It was yet another no info diplomacy screen and you could not see what it was about. I was able to check the log and see that it was a Research Pact agreement, so this bug isn't just confined to Peace Treaties.

I agree, it is a super cool feature, we just need to work out the bugs if possible.



And one more bug:

Assert Failed

File: CvUnit.cpp
Line: 10208
Expression: false
Message: Goods transported over water by none Sea Vessel

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

Ok, this is about Saracen and their ability to change from Pirate to Land Marauders, in when they capture goods then cross over to land and are no longer suppose to carry goods. The goods are destroyed which is fine with the current code as the Saracen are somewhat independent entities but, perhaps at some point we can add the ability for them to carry these goods and sell them on the market. Anyway, these can safely be ignored for now.

Assert Failed

File: CvCity.cpp
Line: 4883
Expression: iValue >= 0 || eYield == YIELD_FOOD
Message:

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

This is an interesting one and will need more investigation. The Natives "trade" amongst there own villages and for some reason one of their villages is ending up with a negative amount of weapons. I'll report back when I figure this one out.

It doesn't crash on me however.
 
Will #ifdef USE_DELAYED_RESPONSE work without the variable being define?
#if is handled just like a regular if, except that it is done by the precompiler. There are #if #else #endif, which pretty much covers all needs.

#ifdef X is a shortcut for #if defined(X) and it pretty much tells what it is about. If the flag isn't defined, then defined(X) will be false.

I wrote some other code using precompiler branching. It is in the top of CvDefines.h (note that we shouldn't mess too much in that file as the exe is sensitive about it)
PHP:
// allocate 32 or 64 bools for players
// MAX_PLAYERS could be moved to the top of the file and made mod specific
#if MAX_PLAYERS > 32
typedef unsigned __int64 PlayerBitmap;
#else
typedef unsigned int PlayerBitmap;
#endif
 
Several display bugs that I have experienced:

On two occasions when I clicked to enter a city screen what I got was a zoomed out planetary view. It happened two consecutive times but then I don't know how it all continued normally.

I also noticed that when cycling cities into the city screen, the square with the 9 plots map changed but didn't the rest of the city screen, and then when I exited the city screen, the workers remained on screen, as you can see. It got solved after opening and closing the game main options.

From time to time I also get my map screen with no buttons

I also found an old known bug for me, that I ignored and I could continue. (sav attached)

Assert Failed

File: CvPlayer.cpp
Line: 21856
Expression: pPlotGroup != NULL
Message: city lacks a plotgroup

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

Also, as you can see I'm able to send a criminal to pray in one city but not in the other.

And one suggestion, I like a monk needing wood and tools to found a city, but that should be used, not stored for another city.

I attach the sav for the plot group bug, and the sav for the peace making deal that will be produced next turn.

If you don't get the log (I don't have the MPlog file in my docuements\....\logs), you can ignore the plot group bug, and after a
couple of turns you will be offered peace.
 

Attachments

  • when entering city.jpg
    when entering city.jpg
    197.2 KB · Views: 372
  • city cycling and exiting.jpg
    city cycling and exiting.jpg
    273 KB · Views: 348
  • all screen options lost.jpg
    all screen options lost.jpg
    366.4 KB · Views: 353
  • Plot group bug.ColonizationSave
    Plot group bug.ColonizationSave
    230.4 KB · Views: 462
  • no crimial no pray.jpg
    no crimial no pray.jpg
    148.9 KB · Views: 394
  • yes criminal does pray.jpg
    yes criminal does pray.jpg
    356.5 KB · Views: 342
  • peace trading.ColonizationSave
    peace trading.ColonizationSave
    229.2 KB · Views: 429
There is one or more python error. If the python file fails, it fails completely, not just the affected function.

Do enable python error messages as that would be way more useful than the screenshots. Edit CivilizationIV.ini
Code:
; Set to 1 for no python exception popups
HidePythonExceptions = 0
This way it will provide a file and a line, which fails as well as a description of what went wrong. I attached a screenshot of what an error message looks like.

While the entire message could be useful, the most important part is the two last lines.
 

Attachments

  • error.jpg
    error.jpg
    78 KB · Views: 349
Several display bugs that I have experienced:

On two occasions when I clicked to enter a city screen what I got was a zoomed out planetary view. It happened two consecutive times but then I don't know how it all continued normally.

I also noticed that when cycling cities into the city screen, the square with the 9 plots map changed but didn't the rest of the city screen, and then when I exited the city screen, the workers remained on screen, as you can see. It got solved after opening and closing the game main options.

From time to time I also get my map screen with no buttons

I also found an old known bug for me, that I ignored and I could continue. (sav attached)

Interesting, will have to investigate.

Assert Failed

File: CvPlayer.cpp
Line: 21856
Expression: pPlotGroup != NULL
Message: city lacks a plotgroup

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

Yeah, this is a known bug and I believe Night has fixed this issue in his update, but it hasn't been merged with mine. Or was it. Do you remember Night what is was you did for this?

Also, as you can see I'm able to send a criminal to pray in one city but not in the other.

Ah, the one city is at Max Population. The city title shows red, such as Mainz (Max), meaning the city is at Max Population. If you hover over the city name it will tell you it is at Max and what buildings you need in order to increase it.

And one suggestion, I like a monk needing wood and tools to found a city, but that should be used, not stored for another city.

Actually, these "Pioneer" type professions are so that you can transport materials to a site where you want to found a village/monastery and you will have those materials to help you start building infrastructure right away. They are simply extra professions for this purpose. Your Workers can choose to be "Pioneer" types as well if you have the goods available.
If you don't get the log (I don't have the MPlog file in my docuements\....\logs), you can ignore the plot group bug, and after a
couple of turns you will be offered peace.

Night brings up a good point. The reason you don't see any logs is logging isn't turned on in that same init file.

You will also need to set :

; Enable the logging system
LoggingEnabled = 1

and
; Enable message logging
MessageLog = 1
 
Ah, the one city is at Max Population. The city title shows red, such as Mainz (Max), meaning the city is at Max Population. If you hover over the city name it will tell you it is at Max and what buildings you need in order to increase it.

I know it, the fact is that that criminal was already a wine maker in the city, and I couldn't change proffesion.

I am thinking I may get all those display bugs because I used the 8 graphic files from versión 2.5 alone...
 
Working further with the blank offer:

Ziri ibn Manad makes me the blank offer. I consult the advisors and open the log file. I accept, I make peace and continue playing.

This is what the MPlog said about this blank offer:
*** Delayed Response AI_doDiploCollaborateResearch Player 8 Ziri ibn Manad Target ID 0


That is the only mention to Ziri ibn Manad on the MPlog.
 

Attachments

  • Ziri ibn Manad unoffer.jpg
    Ziri ibn Manad unoffer.jpg
    348.1 KB · Views: 350
Working further with the blank offer:

Ziri ibn Manad makes me the blank offer. I consult the advisors and open the log file. I accept, I make peace and continue playing.

This is what the MPlog said about this blank offer:
*** Delayed Response AI_doDiploCollaborateResearch Player 8 Ziri ibn Manad Target ID 0


That is the only mention to Ziri ibn Manad on the MPlog.

Ok, yeah, there is just some bug in the Delayed Response. I am going to disable this feature for now until it can be fully tested. We keep having issues because we have to work through the exe and the exe isn't modder friendly. I'll post a new DLL for you guys asap.
 
We keep having issues because we have to work through the exe and the exe isn't modder friendly.
Modder friendly isn't the worst problem. The main problem appears to be that it is buggy and can alter or discard diplomatic events, which is totally unrelated to modder friendliness.

I think the easiest way to completely disable delayed responses is by adding two lines of code here:
PHP:
void CvPlayer::addDelayedResponses(CvDiploParameters* pDiplo)
{
	gDLL->beginDiplomacy(pDiplo, getID());
	return;
	// the rest of the function is untouched, but is now unreachable
If the DLL tries to add a delayed response, it will be forwarded to the exe and not added to the list in the DLL. It's quick to add and will be quick to remove once we look into fixing the problems.
 
Well, to late. I actually thought of that half way through commenting out the lines but went ahead and finished anyway. I just comment out the delayed response and added or uncommitted the call to diplomacy. It's a one min issue regardless.

I posted the updated DLL in the download thread.
 
I tried playing in the AI_trader branch and a native next to me declared holy war against me in 506 AD :crazyeye:

Debugging a bit, I would say that it makes little sense. He is pleased with me. It's never fun when somebody declares war, but this war is not only too soon (vanilla code prevents other wars). I can't see what I have done to deserve this. I didn't take land from anybody, I didn't even make a unit enter land owned by another player.

Debugging didn't reveal what made the AI decide on holy war.
 
Back
Top Bottom