Bug Reporting

1. Alert regarding changes in worst enemy status of known civs. (Gandhi has become the worse enemy of Saladin).
That's already in there. Make sure you have it turned on: check the Alerts tab, Worst Enemy checkbox.

This alert is not displaying for me. I've had it happen multiple times across multiple games where worst enemies have changed with no alert. I've confirmed the option is set in-game as well as in Civ4lerts.ini.

Are you supposed to see an alert only when a player gains a worst enemy or when they are no longer a worst enemy? In any event, I'm not seeing anything.

I attached the best example I could go back and find, I'll keep an eye out for a better one. I just met Monty, and the next turn I become his worst enemy. No alert. In addition, Suryavarman and Sitting Bull have been going back and forth being one another's worst enemy, and you can see there's nothing in the log.

Any ideas? If you point me to the relevant code areas, I can confirm they are in-sync with the SVN.
 
Are you supposed to see an alert only when a player gains a worst enemy or when they are no longer a worst enemy?

Both cases should have an alert. As long as you know both parties involved or the single rival if they no longer have a WE, you'll get an alert.

I'll check out your save now . . . I cannot open the save. I don't get any message, it just quits during startup. Actually, there does appear to be a short message inside the game, but then it exits immediately. What other mods are you using with this game?
 
Re-attached ZIP that includes the needed CIV4VoteInfo.xml file.
You'll need to temporarily overwrite your CIV4VoteInfo.xml (included) in order to load the save. I despise the UN forcing civic changes, so I play with them removed. :D

As long as you know both parties involved or the single rival if they no longer have a WE, you'll get an alert.
Not really following the second part. If I only know one Civ, I still get an alert telling me they're no longer the WE of mystery Civ?
 
If I only know one Civ, I still get an alert telling me they're no longer the WE of mystery Civ?

Note quite. The message when a civ drops their WE is "<player> has no Worst Enemy." So it's spoiler that they had some WE that you didn't know. As I posted previously I considered whether or not this was a significant spoiler but decided against it. I'll take a look at the code to see how tough it would be to fix this so you get no alert in that case.

To be clear, it never tells you who the old WE was, only the new WE or that they have no WE. So when they switch WE from an unmet player to a met one, there is no spoiler ("Louis XIV is the Worst Enemy of Ghandi".

BTW, the reason for the somewhat non-standard language is to avoid the possessive form which doesn't translate well.
 
Even with that XML file I still get "Failed to uncompress game data." Are you using a custom DLL perhaps?
 
Crap, sorry for the bother. If this turns out to be much more complicated, then forget it for now. I didn't realize adding BetterAI into the mix would tie the saved game to it. As a last ditch effort, here's the DLL I'm using.

Custom merge between BetterAI 533 & BULL 155. I doubt the BetterAI matters, however, as I was noticing the missing alerts when just using BULL. Assuming the alerts are handled in BUG, I ran another diff between my BUG and rev 2160, with nothing but insignificant differences.
 
Are these messages logged or stored somewhere? I'd like to search the messages for the games I played so far because I don't remember getting any WE message either.

Then again what aB was using should similar to the dlls I produce so it's not entirely surprising that I get similar behaviour.
 
BUG doesn't depend on BULL to get WE status, but IIRC it will use it if present. The function to get the WE team ID isn't exposed to Python by the vanilla game, so BULL added it. BUG will fall back on use the function that returns the name of the WE team, however, if BULL isn't there.

I run BULL all the time, and I've never had any trouble with the alerts. I can only guess that there's something different in the merge with Better AI. Are you using Fuyu's merge or Better AI alone?

Edit: So BULL doesn't expose the worst enemy team like I thought; BUG uses the name always. I just modified AttitudeUtil as it wasn't limiting the scan to alive teams as it should. Maybe that's causing an issue when using Better AI? It's committed, so feel free to grab it. :)
 
Could you point me to the BULL part that exposes WE? I can't seem to find it.

That's because I cleverly hid it under my couch. The real answer is in my edited post.
 
My real issue with the logic here was: I do not doubt BUG can get the current WE, no matter how it actually does that. But how does it remember the old WE?

edit: but if you're saying r2170 fixes it (if it was even broken, I just don't remember seeing the messages), then nvm
 
My real issue with the logic here was: I do not doubt BUG can get the current WE, no matter how it actually does that. But how does it remember the old WE?

BUG stores the WE from the previous turn in a simple data structure in Civ4lerts (or MoreCiv4lerts, I forget which). Each turn it grabs the new WEs and compares it to the previous values, posting messages and updating the data structure as appropriate.

edit: but if you're saying r2170 fixes it (if it was even broken, I just don't remember seeing the messages), then nvm

No, I'm saying that it fixes a possible issue in that it should not ask dead teams for their WE. Given that dead teams in Civ4 are valid C++ and Python objects, and I assume they return "" for their WE, it shouldn't fix anything.
 
I run BULL all the time, and I've never had any trouble with the alerts. I can only guess that there's something different in the merge with Better AI. Are you using Fuyu's merge or Better AI alone?

Edit: So BULL doesn't expose the worst enemy team like I thought; BUG uses the name always. I just modified AttitudeUtil as it wasn't limiting the scan to alive teams as it should. Maybe that's causing an issue when using Better AI? It's committed, so feel free to grab it. :)

I'm using something very similar to Fuyu's merge, but I can't say they're the same. When I started out with this, I didn't think the DLL had anything to do with it (since I thought it didn't explicitly require BULL to use it), so I thought it was safe to call this a defect. The fact that I'm using a BULL/BetterAI mix of my own adds an unknown, so it's no longer appropriate to call this a defect.

BUG rev 2170 did not fix my posted example, but it doesn't sound like you were expecting it to.

That said, I'm still confident that I didn't see the messages either before I even went near BetterAI. Unfortunately it seems that a savegame saved with BetterAI doesn't play nice anymore without it, so it's difficult to determine what the problem is.

This conversation is probably best continued somewhere else. Any wild ideas where the DLL would be getting hung up with this? If the predicted call stack isn't that big, it should be somewhat easy to identify the functions and files touched during the WE extraction. Then I could focus my diffs to try and hunt down the problem. To start, our AttitudeUtil.py files are identical.
 
Does the WE indicators (angry citizen icon) in the scoreboard and F4:GLANCE tab work? They get the WE the same way the alert does. You could compare your Civ4lerts.py and MoreCiv4lerts.py modules to what's on the SVN.
 
Please look at this post. I have a merge of BBAI 0.84 and BULL 1.0, and getting a CTD with FAsserts triggered that BBAI doesn't touch. Could BULL 1.0 be responsible for the two last FAsserts? I ask because I seem to recall some BULL 1.0 code that changed some of the good/bad happiness code... or perhaps it was just the displaying of it? Not sure, so just wanted to ask you.
 
That's because I cleverly hid it under my couch.
The person that invented the couch should be shot. They are a huge financial drain, bad for your back for sleeping on and make you fat! Now we can add that they impinge on the good coding in BUG too!
 
Does the WE indicators (angry citizen icon) in the scoreboard and F4:GLANCE tab work? They get the WE the same way the alert does. You could compare your Civ4lerts.py and MoreCiv4lerts.py modules to what's on the SVN.
I'll have to dismiss this as "probably works, I just never noticed" until I can really test this thoroughly since the python files are identical and the scoreboard/glance WE were always working perfectly.
 
Does the WE indicators (angry citizen icon) in the scoreboard and F4:GLANCE tab work? They get the WE the same way the alert does. You could compare your Civ4lerts.py and MoreCiv4lerts.py modules to what's on the SVN.

The scoreboard, glance screen and new yellow words in the leaderhead hovers all seem to be working fine. Just no alerts when they change. In my "meeting Monty" example savegame, I knew I became his worst enemy because it showed up in all these places.

I'll take a look at those PY files when I'm in front of the game again later today.

Is it safe to say that the DLL is unlikely to be the problem if the WE information is being successfully acquired by BUG?

I didn't stare at the code much yet to know if this matters: I play with only one alert off - refuses to talk. Could that be related? I know we got tripped up last time talking about defects due to different options (in that case, fractional trade routes). If your alerts are working, and the DLL is not suspect, we need to find the configuration difference between our BUG setup. Perhaps sharing our BUG option INIs to make sure we're on the same page? I can post mine later when in front of the game.
 
I really dont know where to put this:
Im running BAT2.1.1a and BUG, and sometimes Civ 4 crashes on me when Im trying to resume a game. I mean every save of that game crashes Civ 4. I havnt crashed just running BUG, so I think it lies with BAT.
Thats all the detail I can get out of it; is there any know remedy for this? (Running 7 ultimate 64bit)
 
Top Bottom