MNAI-U: unofficial build & bugfixes

How far back do you want to go? These are post-May 2020:
And these are pre-May 2020:

Thanks. I was thinking of old Tholal patches, actually, before he changed diplomacy and made the AI more ready to declare war early on.

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

Been years since I played. Tried a few games. Went for a religious victory one time, lots of work: all AIs (pleased and friendly) closed borders when I reached close to 70% influence. Trying to make the AI have a human like behaviour may be interesting for a programmer, but, I guess, it is easy to forget about providing a fun experience. You're supposed to be able to have a diplomatic victory. This is a a kind of RPG, after all. I guess I just have to park my zealots in every city and spread the religion in just one turn everywhere at the same time? And win a religious vic next turn with everybody closing borders... Because an "auto close" is surely hard coded once a percentage is reached.

Btw, in another game, immortal, large, normal speed, the Hippus rolled over 2 civs early on and got 21 cities in the middle game. I participated and got a few as well. Wanted to build up to the late game fun. It seemed likely; after the early wars, people calmed down a little (hope). Well, the Hippus decided to declare on the chairman of the Overcouncil. Fun. Fun? Got declared by 4 other civs, me and the Mercurians included, my allies just online, as well (I actually said No to the resolution forcing to declare war...). Result in 18 turns: 21 cities captured by a few of my golems with fireballs, horses and wandering angels. Why? Because playing like a human is not necessarily the best strat for the AI. Cutting corners like a human and only having warriors and some swords defending cities leads to fast defeats, even while having such a big production base. His offensive stack lead by a War elephant (cute) had only a few swords: mostly mages. What kind of stack is that for an AI? Sure, it uses all spells now, but... Come on... A human can do that, not the AI. Not like that, at least. In the last city, it finally produced a couple of longbowmen: too late. The AI has humongous bonuses (that are bigger than in BTS, I believe, if the AI is now really much better, the bonuses that Kael gave originally could be changed a little actually...) - it should take advantage of them and build archer units in every city.

I also do not see any catapults early on. Mostly warrior spam: the big flaw of the game, imho. At least it is, if the AI does not allow a roleplay, but forces early war. Wars are supposed to be mostly about good and evil stuff in the middle game. I doubt that the AI should be trying to win the game early on. You can do that, sure, but it is no longer a RPG. A matter of opinion and taste. And I'm a unit spammer myself many times! In another game on diety, I had 48 Sons of Asena on turn 112 (yes, you can do that). But this is meh... It is more fun to build up and role play.

I really apreciate the AI being more efficient in many things. It is great. Wonderful work. Turn game speed seems great as well in the late game. But... Anyway, I guess the AI has been warrior and adept spamming for a while now. It means you guys like it. And it means these words are pointless. It's a matter of opinion, maybe.
 
It means you guys like it.
Or maybe, just maybe, the people who worked on the mod "for a while now" just didn't have the time and energy to delve into the very complex and basically undocumented AI code, identify the problem, and then do the necessary steps to completely fix the problem. Well, I did the first part (indeed costing me a good amount of time and energy), and decided that I currently don't have the time and energy to do the second part, which probably involves largely rewriting the way the AI chooses to build units and buildings, since the current systems are not really made for units that require buildings, as they appear in FfH.

The actual question here is why you didn't do all that in the last few years. Or does that mean you like it?
Oh, you're not a programmer? Well, Tholal isn't either, he just spend a ton of time and energy on the mod that you play for free.

In all seriousness, everybody is allowed to state their criticism here (even if it's not constructive), as long as they stay polite. Then, possibly after some discussion, I'll decide if I can fix their problem with my abilities and time available. If you had refrained from being so condescending and entitled, your words maybe would not have been "pointless".
 
On a more positive note, some easy suggestions:
* I think the free xp / promotions that AIs get at top difficulty levels is oppressive. It's hard to fight a swarm of Combat 3 warriors, unless you happen upon super units of your own. I would scale this back to max +2-4xp, and rely on the 'no level requirements' instead. If need be, production could be modified instead.
* The unit spam seems to harm AI tech rate. I would suggest increasing their maintenance modifiers.
* This might be hard to do, but I'm really noticing how often AIs will plant cities on resources. Something to think about.
* In general, the priority for building workers feels a bit low, and could be cranked higher. Again, appreciate this might be hard to do.
 
Well, well, seems like I got your blood going a little bit, maybe. I get it, modding can be frustrating many times. I really get it, trust me: using another nickname, I also modded heavily and know how to change the relevant code. This is also why I asked for an old version...
You now respond, because you feel attacked:this ignorant and aggressive player, must put these fools in their place...

You didn't get it. It's very simple.

The AI now overvalues magic techs, even on archipelago maps; it wasn't like this in the original mod: Tholal or somebody deliberately made it so.
The AI spams adepts (no problem setting up that specific building, hmm?...); it wasn't really like this in the original mod: Tholal or somebody deliberately made it so.
The AI undervalues archery: it wasn't like this in the original mod: Tholal or somebody seems to have deliberately made it so.
The AI seems to overvalue the metal line; even the Hippus seems to use fewer horses now; it wasn't like this in the original mod: Tholal or somebody seems to have deliberately made it so.
The AI closes borders when somebody is close to winning a religious victory; it wasn't like this in the original mod: Tholal or somebody deliberately, no doubt, made it so. It is a conscious and dumb, I'm sorry, decision.
It is harder to do diplomacy and manipulate; it wasn't really that hard in the original mod: Tholal or somebody deliberately made it so.
Because there was an attempt to make the AI play in a certain human-like way. Otherwise, I don't get it.

You didn't get it also and made it seem like the error was in the original code, and you, brave paladins of the code, are putting all of your soul and sweat into correcting all the original nastiness. But it's too hard, and ignorant and aggressive fans (me) just don't get it... Right?

You coded it like that. Somebody took it in that direction (and some things are very good in certain circunstances...). It wasn't really like that before. The logical conclusion is that you guys like it. I'm sorry, nothing special in stating this, even if, maybe, I'm wrong and it was an accident (not all could've been). YOU decided to interpret it badly; my words rub you the wrong way. That's fine, you don't care and I don't care about how my attitude is perceived, actually. It doesn't really matter. And you can relax, I won't post in the forum anymore. You can have your moral ground.
 
I think the free xp / promotions that AIs get at top difficulty levels is oppressive. It's hard to fight a swarm of Combat 3 warriors, unless you happen upon super units of your own. I would scale this back to max +2-4xp, and rely on the 'no level requirements' instead. If need be, production could be modified instead.
Terkhen made a similar in EMM (apparently on your suggestion), see here: https://notabug.org/lfgr/extramodmod/commit/3d508d6dc36a88306a3abcd36f48d5eb3111fd94
I'm open to porting this to MNAI, but it would be best if somebody else could comment on this to get a second opinion. I have no strong opinion on this, I never play above Emperor.

The unit spam seems to harm AI tech rate. I would suggest increasing their maintenance modifiers.
What do you mean exactly? Some tag in HandicapInfos?

This might be hard to do, but I'm really noticing how often AIs will plant cities on resources. Something to think about.
I'll make a note of this. Simply adding a negative modifier for tiles with resources should be easy. The AI should basically never do this, right?

In general, the priority for building workers feels a bit low, and could be cranked higher. Again, appreciate this might be hard to do.
I'd have to check how easy this is to do. Also, here again I would like to know if somebody else sees the same problem.
 
Well, well, seems like I got your blood going a little bit, maybe. I get it, modding can be frustrating many times.
You now respond, because you feel attacked:this ignorant and aggressive player, must put these fools in their place...
Dude, you were just rude. That really is all. And you continue to be condescending, by insinuating that the problem here somehow is not you being needlessly rude, but me being annoyed by it. And I really mean "needlessly", if you just didn't quip about "may be interesting for a programmer" and "It means you guys like it.", your post would have been totally fine. People complain about the AI here all the time.
The AI now overvalues magic techs, even on archipelago maps; it wasn't like this in the original mod: Tholal or somebody deliberately made it so.
The AI spams adepts (no problem setting up that specific building, hmm?...); it wasn't really like this in the original mod: Tholal or somebody deliberately made it so.
The AI undervalues archery: it wasn't like this in the original mod: Tholal or somebody seems to have deliberately made it so.
The AI seems to overvalue the metal line; even the Hippus seems to use fewer horses now; it wasn't like this in the original mod: Tholal or somebody seems to have deliberately made it so.
This is absolutely ridiculous. You can't seriously claim that every single way the AI behaves differently from vanilla FfH must have been a deliberate decision by a modder. Even if you have no idea how the AI works, this is obvious nonsense. If you know how the AI works (you seem to claim this), you know that every change can have unpredictable consequences, since it's all just adding up modifiers. So it's any regression might be just a side effect of an improvement elsewhere. Or, well, it was just a mistake. AI bugs/regressions are harder to catch since they are easily overlooked. In any case, attributing malice here is, again, just needlessly rude and accomplishes nothing. I mean, why don't you just ask if it's intentional instead of assuming? Other people manage to do that.
The AI closes borders when somebody is close to winning a religious victory; it wasn't like this in the original mod: Tholal or somebody deliberately, no doubt, made it so. It is a conscious and dumb, I'm sorry, decision.
Here you are correct, this was a deliberate decision. I won't argue with you whether it is a good one or not, but I'd like to point out that "You're supposed to be able to have a diplomatic victory." in the context (religious victory) is simply your opinion, others might disagree.
The point is that I happen to know that this was a BBAI change. Tholal merged BBAI basically as a whole, because all in all, it does improve AI, even if it might be worse in some particular cases. So you are assigning blame to the wrong people, neither Tholal nor I did not make the decision. Of course, again, why are you even trying to blame people for this and don't just point out the problem?
If you just had started a discussion about that, you might have convinced me to change it. You keep writing "Tholal or somebody deliberately made it so", acknowledging the possibility that I didn't make the decision (and quietly walking back from your original "you guys like it" statement). But I am the one who makes the decisions now, so why is it so relevant what Tholal thought? Maybe I actually agree with you on everything, but still believe Tholal's last version is a better base to continue improving? Maybe I didn't yet have the time or energy to fix these problems? Your notion (in your original post), that after some years problems get fixed unless the modders are unwilling to fix them is just so utterly ridiculous.
For the record, I barely made any of the decisions regarding AI, I mainly fixed AI bugs.
It is harder to do diplomacy and manipulate; it wasn't really that hard in the original mod: Tholal or somebody deliberately made it so.
This is just too vague for me to comment on.
You didn't get it also and made it seem like the error was in the original code, and you, brave paladins of the code, are putting all of your soul and sweat into correcting all the original nastiness.
I don't know what you are talking about, I said nothing like this. That Tholal's AI is better then vanilla AI, all in all, is consensus here, I believe. (Though I take no credit for that, as explained above.) If you disagree, well, I don't know why you're here, just go play vanilla FfH. In any case, and especially if you do agree, belittling the hard work that Tholal put into the mod is, again, just very rude.
But it's too hard, and ignorant and aggressive fans (me) just don't get it... Right?
I did not call you ignorant or insinuated that you're stupid or anything. I complained about you being rude and disrespectful. You are the one calling things you disagree with "dumb".
YOU decided to interpret it badly; my words rub you the wrong way.
See above. You make a whole lot of baseless assumptions and conclude that Tholal or me are stupid or have bad taste or whatever, and then you choose to state this publicly on this forum, which accomplishes nothing but make people mad (okay, and maybe giving you the satisfaction to prove whatever you're trying to prove). Being polite is your responsibility, and it's honestly not that hard.
That's fine, you don't care and I don't care about how my attitude is perceived, actually.
If you want your grievances be addressed, you should, actually, care about that. I mean, you do see that all this at the very least reduces your chances to get the old MNAI version you were requesting?
If you're just here to vent, please don't, this is not what this thread is for.
 
Honestly Horiatus, if this was a forum I modded, I'd ban you for that. This isn't about who did or did not make code changes at some point. Everyone who mods Civ is doing a tireless, largely thankless job where the benefit accrues to many lurkers. It's totally inappropriate to come into someone's thread and be a dick about what they've done. This isn't about interpreting words, it's about the tone you've chosen to take.

If you really are going to go away now, I would have to say good riddance.
Terkhen made a similar in EMM (apparently on your suggestion), see here: https://notabug.org/lfgr/extramodmod/commit/3d508d6dc36a88306a3abcd36f48d5eb3111fd94
I'm open to porting this to MNAI, but it would be best if somebody else could comment on this to get a second opinion. I have no strong opinion on this, I never play above Emperor.


What do you mean exactly? Some tag in HandicapInfos?


I'll make a note of this. Simply adding a negative modifier for tiles with resources should be easy. The AI should basically never do this, right?


I'd have to check how easy this is to do. Also, here again I would like to know if somebody else sees the same problem.
Ah, good to see that's in EMM. Still, even that might be a bit much, although it's hard to tell.

It's been a while since I poked into the AI code, but yes, I'd expect HandicapInfos.

I can imagine very few times where it's correct to settle on a resource. Mostly either it's jungle choked and you want to hook it, a couple of low-yield resources where it's fine for optimal placement (sugar, cotton), or where other resources would be orphaned otherwise, normally seafood.
 
Well, well, seems like I got your blood going a little bit, maybe. I get it, modding can be frustrating many times. I really get it, trust me: using another nickname, I also modded heavily and know how to change the relevant code. This is also why I asked for an old version...
You now respond, because you feel attacked:this ignorant and aggressive player, must put these fools in their place...

You didn't get it. It's very simple.

The AI now overvalues magic techs, even on archipelago maps; it wasn't like this in the original mod: Tholal or somebody deliberately made it so.
The AI spams adepts (no problem setting up that specific building, hmm?...); it wasn't really like this in the original mod: Tholal or somebody deliberately made it so.
The AI undervalues archery: it wasn't like this in the original mod: Tholal or somebody seems to have deliberately made it so.
The AI seems to overvalue the metal line; even the Hippus seems to use fewer horses now; it wasn't like this in the original mod: Tholal or somebody seems to have deliberately made it so.
The AI closes borders when somebody is close to winning a religious victory; it wasn't like this in the original mod: Tholal or somebody deliberately, no doubt, made it so. It is a conscious and dumb, I'm sorry, decision.
It is harder to do diplomacy and manipulate; it wasn't really that hard in the original mod: Tholal or somebody deliberately made it so.
Because there was an attempt to make the AI play in a certain human-like way. Otherwise, I don't get it.

You didn't get it also and made it seem like the error was in the original code, and you, brave paladins of the code, are putting all of your soul and sweat into correcting all the original nastiness. But it's too hard, and ignorant and aggressive fans (me) just don't get it... Right?

You coded it like that. Somebody took it in that direction (and some things are very good in certain circunstances...). It wasn't really like that before. The logical conclusion is that you guys like it. I'm sorry, nothing special in stating this, even if, maybe, I'm wrong and it was an accident (not all could've been). YOU decided to interpret it badly; my words rub you the wrong way. That's fine, you don't care and I don't care about how my attitude is perceived, actually. It doesn't really matter. And you can relax, I won't post in the forum anymore. You can have your moral ground.

Moderator Action: As pointed out above by the others: Please be friendly. Everyone here wants to have a fun time, and enjoy the game. If you want to criticize, then please be constructive. There are various parts in your post which are not. Please try to be friendly.
 
Testing my latest changes to my modmod, I came across this python error:

Code:
Traceback (most recent call last):
  File "BugEventManager", line 366, in _handleDefaultEvent
  File "autologEventManager", line 658, in onGoodyReceived
KeyError: 125

C:\Users\jonmi\AppData\Roaming\Firaxis Games\Sid Meier's Civilization 4\Beyond the Sword\Mods\More Naval AI\Assets\python\Contrib\autologEventManager.py
Code:
    def onGoodyReceived(self, argsList):
        if (AutologOpt.isLogTribalVillage()):
            iPlayer, pPlot, pUnit, iGoodyType = argsList
            if iPlayer == CyGame().getActivePlayer():
                GoodyTypeMap = {
                        -1: BugUtil.getPlainText("TXT_KEY_AUTOLOG_VILLAGE_RESULT_NOTHING"),
                        0:    BugUtil.getPlainText("TXT_KEY_AUTOLOG_VILLAGE_RESULT_LITTLEGOLD"),
                        1:    BugUtil.getPlainText("TXT_KEY_AUTOLOG_VILLAGE_RESULT_LOTSOFGOLD"),
                        2:    BugUtil.getPlainText("TXT_KEY_AUTOLOG_VILLAGE_RESULT_MAP"),
                        3:    BugUtil.getPlainText("TXT_KEY_AUTOLOG_VILLAGE_RESULT_SETTLER"),
                        4:    BugUtil.getPlainText("TXT_KEY_AUTOLOG_VILLAGE_RESULT_WARRIOR"),
                        5:    BugUtil.getPlainText("TXT_KEY_AUTOLOG_VILLAGE_RESULT_SCOUT"),
                        6:    BugUtil.getPlainText("TXT_KEY_AUTOLOG_VILLAGE_RESULT_WORKER"),
                        7:    BugUtil.getPlainText("TXT_KEY_AUTOLOG_VILLAGE_RESULT_XP"),
                        8:    BugUtil.getPlainText("TXT_KEY_AUTOLOG_VILLAGE_RESULT_HEALING"),
                        9:    BugUtil.getPlainText("TXT_KEY_AUTOLOG_VILLAGE_RESULT_TECH"),
                        10:    BugUtil.getPlainText("TXT_KEY_AUTOLOG_VILLAGE_RESULT_WEAKHOSTILES"),
                        11: BugUtil.getPlainText("TXT_KEY_AUTOLOG_VILLAGE_RESULT_STRONGHOSTILES")
                    }
                message = BugUtil.getText("TXT_KEY_AUTOLOG_VILLAGE_RESULT", (GoodyTypeMap[iGoodyType], ))
                Logger.writeLog(message, vColor="Brown")

It looks like the BUG auto logger is having an issue whenever you get a goodie hut result other than the options available in vanilla civ.

I have not gotten this before, but I'm not sure why. From a cursory look at the code, it seems like something that would happen often not only in my modmod but base FFH2/MNAI.


p.s. Any chance there will be an MNAI update any time soon? I think I'm getting close to ready to release a new Magister Modmod and would rather include any bugfixes you might have on your end with it.
 
I just got a crash with my modmod and thought I'd share the dump file in case someone can make more sense of it than I can.

Spoiler :
Code:
Microsoft (R) Windows Debugger Version 10.0.25200.1003 X86
Copyright (c) Microsoft Corporation. All rights reserved.


Loading Dump File [C:\Users\jonmi\AppData\Local\Temp\Civ4BeyondSword.exe.dmp]
User Mini Dump File: Only registers, stack and portions of memory are available


************* Path validation summary **************
Response                         Time (ms)     Location
Deferred                                       srv*
Symbol search path is: srv*
Executable search path is:
Windows 8 Version 9200 MP (16 procs) Free x86 compatible
Product: WinNt, suite: SingleUserTS Personal
Machine Name:
Debug session time: Sun Apr  9 12:54:17.000 2023 (UTC - 4:00)
System Uptime: not available
Process Uptime: 0 days 0:25:41.000
................................................................
.............................................
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(3ea4.2578): Access violation - code c0000005 (first/second chance not available)
For analysis of this file, run !analyze -v
eax=00000000 ebx=7d2b8c58 ecx=00000000 edx=ffffffff esi=7d2b8c30 edi=7d2b8c88
eip=774e70ac esp=0019e940 ebp=0019e94c iopl=0         nv up ei pl nz ac po nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000212
ntdll!NtGetContextThread+0xc:
774e70ac c20800          ret     8
0:000> !analyze -v
*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************


KEY_VALUES_STRING: 1

    Key  : AV.Dereference
    Value: NullClassPtr

    Key  : AV.Fault
    Value: Read

    Key  : Analysis.CPU.mSec
    Value: 890

    Key  : Analysis.DebugAnalysisManager
    Value: Create

    Key  : Analysis.Elapsed.mSec
    Value: 3674

    Key  : Analysis.IO.Other.Mb
    Value: 3

    Key  : Analysis.IO.Read.Mb
    Value: 0

    Key  : Analysis.IO.Write.Mb
    Value: 26

    Key  : Analysis.Init.CPU.mSec
    Value: 108

    Key  : Analysis.Init.Elapsed.mSec
    Value: 38930

    Key  : Analysis.Memory.CommitPeak.Mb
    Value: 95

    Key  : Timeline.Process.Start.DeltaSec
    Value: 1541

    Key  : WER.Process.Version
    Value: 3.1.9.0


FILE_IN_CAB:  Civ4BeyondSword.exe.dmp

APPLICATION_VERIFIER_FLAGS:  0

CONTEXT:  (.ecxr)
eax=00000000 ebx=00000000 ecx=00000000 edx=ffffffff esi=00000000 edi=84cec368
eip=0483f853 esp=0019fa80 ebp=ffffffff iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00010246
CvGameCoreDLL!CvSelectionGroup::isBusy+0x3:
0483f853 837e2400        cmp     dword ptr [esi+24h],0 ds:002b:00000024=????????
Resetting default scope

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 0483f853 (CvGameCoreDLL!CvSelectionGroup::isBusy+0x00000003)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000000
   Parameter[1]: 00000024
Attempt to read from address 00000024

PROCESS_NAME:  Civ4BeyondSword.exe

READ_ADDRESS:  00000024

ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%p referenced memory at 0x%p. The memory could not be %s.

EXCEPTION_CODE_STR:  c0000005

EXCEPTION_PARAMETER1:  00000000

EXCEPTION_PARAMETER2:  00000024

STACK_TEXT: 
WARNING: Stack unwind information not available. Following frames may be wrong.
0019fa80 048df0db     00000006 45ae1038 00000001 CvGameCoreDLL!CvSelectionGroup::isBusy+0x3
0019faa4 7c3b2c75     18e3dd28 04750e1b 00000001 CvGameCoreDLL!CvArtInfoUnit::getSelectionSoundScriptId+0x470bb
0019faac 04750e1b     00000001 18e3dd28 7c3a1ce3 msvcp71!std::operator<<char,std::char_traits<char>,std::allocator<char> >+0xd
0019fab8 7c3a1ce3     00000000 04b74510 7c3a1e96 CvGameCoreDLL!CvGlobals::getDLLIFaceNonInl+0x4ab
0019fac4 7c3a1e96     00000001 00000000 0475054c msvcp71!std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy+0x45
0019fad0 0475054c     00000006 16629c38 00000001 msvcp71!std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >+0x9
0019fb24 048e1ac5     00000001 04896239 45ae1038 CvGameCoreDLL!CvGlobals::getInfoTypeForString+0x8c
0019fb2c 04896239     45ae1038 45d59ec0 042d3d34 CvGameCoreDLL!CvArtInfoUnit::getSelectionSoundScriptId+0x49aa5
0019fb40 7c3b3815     00000006 45aead28 0019fc08 CvGameCoreDLL!CombatDetails::CombatDetails+0x1019
0019fb54 7c3b3f91     45f14074 7c3a2448 00000000 msvcp71!std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign+0x69
0019fb68 7c3a25e2     00000000 046b3b99 0032803c msvcp71!std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >::assign+0x1a
0019fb70 046b3b99     0032803c 0050563b 00000000 msvcp71!std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >+0x9
0019fb78 0050563b     00000000 0032803c 00000000 CvGameCoreDLL!getUnit+0x39
0019fb94 0483f973     00100000 042d4180 042d3d34 Civ4BeyondSword+0x10563b
0019fbb8 0484503c     042d4180 897b2e60 042d3d34 CvGameCoreDLL!CvSelectionGroup::isBusy+0x123
0019fbd8 047c0667     0019fc68 7c34240d 7c37a2a8 CvGameCoreDLL!CvSelectionGroupAI::~CvSelectionGroupAI+0x4cc
0019fc04 004dae3a     006f0000 006b0072 00720065 CvGameCoreDLL!CvPlayer::setTurnActive+0xdf7
0019fc2c 047e909b     042d3a40 00000049 00000006 Civ4BeyondSword+0xdae3a
0019fc70 046a7db7     03f9ebc0 03f9ebc0 00000032 CvGameCoreDLL!CvPlayerAI::getPlayerNonInl+0x32eb
0019fd58 0469fa30     01a5016a 042ccec8 0019fe24 CvGameCoreDLL!CvGame::setName+0x2a77
0019fdcc 774b5838     769c09b8 00000000 00000000 CvGameCoreDLL!CvGame::update+0x340
0019fdf0 7613ca09     769c09b8 7618a8a0 0019fe08 ntdll!RtlRunOnceExecuteOnce+0x18
0019fe10 76977a13     00000001 00000003 00002710 KERNELBASE!InitOnceExecuteOnce+0x29
0019fe24 00415321     75e83ed0 02ef96b8 00000000 kernel32!timeGetTime+0x33
0019fe3c 762080ab     0019fe84 7c34240d 7c37a3a8 Civ4BeyondSword+0x15321
0019fe54 006846f7     02ef8498 02ef84a4 0019fe01 KERNELBASE!SetCurrentDirectoryA+0x8b
0019fe70 00411a7d     7692d960 02ef96b8 00000000 Civ4BeyondSword+0x2846f7
0019fe84 7c3a1e88     00000000 000000fa 00000000 Civ4BeyondSword+0x11a7d
0019febc 00686bc8     7692d960 004d6f46 012278ef msvcp71!std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >+0x11
0019fec4 004d6f46     012278ef 008f497f 00400000 Civ4BeyondSword+0x286bc8
0019fecc 008f497f     00400000 00000000 012278ef Civ4BeyondSword+0xd6f46
0019ff74 76927d49     00351000 76927d30 0019ffdc Civ4BeyondSword!initCvPythonExtensions+0x22a84f
0019ff84 774db74b     00351000 fc917722 00000000 kernel32!BaseThreadInitThunk+0x19
0019ffdc 774db6cf     ffffffff 77508683 00000000 ntdll!__RtlUserThreadStart+0x2b
0019ffec 00000000     008f47fa 00351000 00000000 ntdll!_RtlUserThreadStart+0x1b


STACK_COMMAND:  ~0s; .ecxr ; kb

SYMBOL_NAME:  CvGameCoreDLL!CvSelectionGroup::isBusy+3

MODULE_NAME: CvGameCoreDLL

IMAGE_NAME:  CvGameCoreDLL.dll

FAILURE_BUCKET_ID:  NULL_CLASS_PTR_READ_c0000005_CvGameCoreDLL.dll!CvSelectionGroup::isBusy

OSPLATFORM_TYPE:  x86

OSNAME:  Windows 8

FAILURE_ID_HASH:  {e13124ba-66b1-b650-96f5-0b20f84b35b7}

Followup:     MachineOwner
---------


Last week I had a couple of really fun games but this weekend the AI seemed to be back to being super aggressive.

Could you do something to dial back random declarations of war, especially those from Friendly players?


I wouldn't mind so much if they were demanding resources, technologies, or even multiple cities on threat of war, but simply declaring war with no warning is not much fun.

I also really wish that AI players were more willing to engage in diplomacy to end a war. I think there is some code even in Vanilla Civ that prevents them from even considering diplomacy in the early stages of war, which I never liked.

There have been cases when I would have been willing to cede most of my empire to a hostile AI to prevent it from taking a specific city. Often I am able to blitzkrieg and take over the majority of a rival empire in just a couple turns, but then waste a lot of time searching for some remote cities (often on tiny islands or distance continents). I would usually prefer to ignore those cities and let the AI rump state survive, but the AI won't consider peace even when it gets to the point of having one city with one warrior surrounded by my huge late game army.


In the game from that crash (but a long time before the crash) I had one player I'd just met and had decent relations with bribe another player into war with me. That player immediately bribed a third player into war with me and that one yet another player who then bribed the original briber to join the war he had started. I used worldbuilder to end those wars but they just kept declaring war again within the next couple turns, so I opted to use worldbuilder to give me a 50 turn sanctuary timer to give myself time to build up a defense. By the time that ran out they were more willing to negotiate and I was able to have about 20 more turns of peace just for giving them Honor. The Svartalfar then declared war again and almost overwhelmed me. Their massive army was sitting next to my capital when I rushed the completion of the Tower of Divination, which I used to learn Strength of Will and gain multiple archmages that quickly turned the tide of the war. I took over all their major cities, leaving them with only 2 small cities and a bunch of superforts when the Amurites asked me to make peace with them. I did so, in order to focus on the hostile Sheaim forces approaching from the other direction, only for the Amurites to declare war on me themselves the next turn. (That may have been due to forming a permanent alliance with the Illians, with whom I was already at war, but I did not realize they had an alliance until later I made peace with Valledia and was surprised to get peace with Auric too.)


Sometimes I end up using the Permanent War or Peace option to try to prevent such dogpiles, but even that does not always work. I think diplomacy to ask players to declare/plan for war or make peace is still messing with that game option. In a game as Einion Logos yesterday morning I was surprised to find I'd left that option active after getting a surprise declaration of war from Arendel Phaedra right after she made her permeant alliance with Cardith Lorda. Even after declaring war, Arendel was Friendly towards me and Cardith was Pleased. I had been hoping for a permanent alliance with Arendel myself. We had shared a long war against Shekinah, who declared war on me and on whom I'd managed to bribe Arendel to declare war, but Arendel eliminated Shekinah before I could get her to agree to an alliance with me. Arendel and Cardith had a mutual war against Os-Gabella while I was busy in my war against Alexis. Earlier in the game I had a war against Perpentach, but had made peace with him at Cardith's request. I don't remember clearly but I think Perpentach had bribed Alexis and Alexis had bribed Shekina into war against me. It is possible Alexis bribed Arendel/Cardith into war against me after I took over half the Calabim empire, but I didn't notice a message about that.


Would it be possible to expose the "10 turns of universal peace" from advanced start games to python so I could let players/scenario builders change that countdown in worldbuilder?
 

Attachments

  • Civ4BeyondSword.exe.zip
    7.7 MB · Views: 11
p.s. Any chance there will be an MNAI update any time soon? I think I'm getting close to ready to release a new Magister Modmod and would rather include any bugfixes you might have on your end with it.
No, I'm still working on revolutions, and it's not in a state where I could release it. But you'd not miss that many fixes if you released now.
Could you do something to dial back random declarations of war, especially those from Friendly players?


I wouldn't mind so much if they were demanding resources, technologies, or even multiple cities on threat of war, but simply declaring war with no warning is not much fun.
Do you know if this is due to other players bribing them? If this is such a big problem in your mod, I could add an option or configuration variable to disable that completely.
There have been cases when I would have been willing to cede most of my empire to a hostile AI to prevent it from taking a specific city. Often I am able to blitzkrieg and take over the majority of a rival empire in just a couple turns, but then waste a lot of time searching for some remote cities (often on tiny islands or distance continents). I would usually prefer to ignore those cities and let the AI rump state survive, but the AI won't consider peace even when it gets to the point of having one city with one warrior surrounded by my huge late game army.
I'm aware of that problem, I think it also exists in vanilla BtS. It's on my list.
I think diplomacy to ask players to declare/plan for war or make peace is still messing with that game option
That's a bug, I'll look into it.
Would it be possible to expose the "10 turns of universal peace" from advanced start games to python so I could let players/scenario builders change that countdown in worldbuilder?
I'll check.
 
When playing an game with the Svartalfar, with the Order as faith, every time Doviello savants are successful in converting my cities to Ashen Veil and removing the Order, the temple of the order still stays in the city. The same occurs when conquering an Ashen Veil city when Would make sense if the building be removed along with its faith or converted into a rival religion temple.
Screenshot_fall43.png Screenshot_fall42.png
 
Units that have access to some promotions like undead slaying and bronze weapons promotion have twice the bonus in the combat odds.
Screenshot_fall13.png Screenshot_fall15.png
In an game with the Calabim, the members of the Undercouncil have approved an Call to Arms against the Elohim, even when I voted no, which doesn't make sense the council obligate an civilization do what the resolution have required. Perhaps should be better if the player that votes no in the resolutions stay with their status quo, but lose diplomatic points with the civilizations that have voted yes? Making more difficult to be elected the leader of the council and balancing the diplomatic bonus they gain just to be council members.
Screenshot_fall14.png
An suggestion is to make the flames feature destroy any improvement in the tile they show up.
Screenshot_fall7.png
The description of the wonder Eyes and Ears Network in civilopedia doesn't describe its ability of giving the player knowledge about the which research the other players are doing every turn.
Screenshot_fall19.png
In the religion advisor tab there is graphical error that the Octopus Overlords name is over the Runes of Kilmorph name
Screenshot_fall18.png
The AI values resources that are useless to them if they don't have the apropriate tech
Screenshot_fall22.png
The resolution Develop Secret Codes require an very small sum of gold to give an Great Scientist for the period of the game when Noctis Nox is built. The same with Enlist the Nightwatch.
Screenshot_fall26.png Screenshot_fall27.png
The Slave unit can cast the abilities Buy a Slave and Sell Slave, which is quite controversial
Screenshot_fall29.png
 
Units that have access to some promotions like undead slaying and bronze weapons promotion have twice the bonus in the combat odds.
View attachment 661769 View attachment 661768
In an game with the Calabim, the members of the Undercouncil have approved an Call to Arms against the Elohim, even when I voted no, which doesn't make sense the council obligate an civilization do what the resolution have required. Perhaps should be better if the player that votes no in the resolutions stay with their status quo, but lose diplomatic points with the civilizations that have voted yes? Making more difficult to be elected the leader of the council and balancing the diplomatic bonus they gain just to be council members.
View attachment 661770
An suggestion is to make the flames feature destroy any improvement in the tile they show up.
View attachment 661771
The description of the wonder Eyes and Ears Network in civilopedia doesn't describe its ability of giving the player knowledge about the which research the other players are doing every turn.
View attachment 661772
In the religion advisor tab there is graphical error that the Octopus Overlords name is over the Runes of Kilmorph name
View attachment 661773
The AI values resources that are useless to them if they don't have the apropriate tech
View attachment 661774
The resolution Develop Secret Codes require an very small sum of gold to give an Great Scientist for the period of the game when Noctis Nox is built. The same with Enlist the Nightwatch.
View attachment 661775 View attachment 661776
The Slave unit can cast the abilities Buy a Slave and Sell Slave, which is quite controversial
View attachment 661777

Votes force all members to do what the result is. The thing more like what you were describing is defy resolution.
Getting a resource before having the tech that would unlock it is still useful (such as gaining metal promotions for units).
 
The BUG options show airports and show recommended worker build don't do anything. Can obsidian gates be made to function like airports for that?
Changing the move bar colors causes python errors.
 
In an game with the Calabim, the members of the Undercouncil have approved an Call to Arms against the Elohim, even when I voted no, which doesn't make sense the council obligate an civilization do what the resolution have required. Perhaps should be better if the player that votes no in the resolutions stay with their status quo, but lose diplomatic points with the civilizations that have voted yes? Making more difficult to be elected the leader of the council and balancing the diplomatic bonus they gain just to be council members.
As Deaf Metal said, you should have been able to vote "NEVER". That is supposed to do what you want.
The resolution Develop Secret Codes require an very small sum of gold to give an Great Scientist for the period of the game when Noctis Nox is built. The same with Enlist the Nightwatch.
What's the problem? You think it's too cheap?
I didn't change it from vanilla FfH, just added the help text.
 
Top Bottom