Version 1.7 feedback

Using the BG file from the pick a leader zip pack, I chose monarch difficulty. I haven't researched Faith yet, but I founded Shai-Hulud?
Spoiler :
Civ4ScreenShot0112.jpg
 
That is very curious. I used 1.7 to start a tiny game as BG, making sure that neither of the other civs start with Mysticism. I researched Faith, and when Faith was done, I got the Shai-Hulud dialog.

I am not sure what is wrong; here are some ideas.

The installer does not delete the previous version; did you install on top of 1.6?

Do you see this result in a new game as I described above?

Do you see this result when starting another of the PYL games with a Mysticism civ, such as Ordos?
 
Is the source from dunewars that is included in the download 1.7 up to date? I compiled a dll from it, the game starts fine, but when I start a game the game stops to react when loading some revolution modules or something (I think it also gives some error that an ini isn't found). It still saves an autosave. When I try to load the autosave with the 1.7 dll I get the error that you usually get when dll modifications break saves. Would be nice if you could upload the 1.7 source as a seperate file.

oh, and by the way great mod. It's pretty cool that the AI can and will target all cities. thanks everyone who worked on it.
 
Is the source from dunewars that is included in the download 1.7 up to date?

Yes, it is. Because DW is built on top of a ton of other mods, including RevDCM, there is no convenient way to run just the dll without having all the related python, xml, etc, etc files.

What specifically are you trying to do? If you would like to extract some of the sdk changes, we can work with you on that. The AI changes were done by cephalo. The all-terrain transport changes were originally done by Maniac, with extensive changes later by myself and koma13.
 
we've got out of sync in our multi game soon after this turn.

I'm sorry to hear that. I know at least two other players have succeeded at multi-player games. I am not an expert at debugging OOS, but there is a guide somewhere that gives the steps. There is an option to turn on in your civilizationiv.ini file, which gives a lot of sync information into a log file. Then you would need to play another game when both (all) players have the logging turned on, and post the logs. (Zipped, probably since they are large.)

Once the logs are available, then I can compare them side by side and find the first operation which has gone out of sync. Usually, this may be several turns before the players notice. By that time, it is too late.

Does anybody know the OOS logging option off the top of their head?
 
The installer does not delete the previous version; did you install on top of 1.6?

Do you see this result in a new game as I described above?

I moved the old version outside the mods folder and installed the new one, maybe that shouldn't be done?
 
Yes, it is. Because DW is built on top of a ton of other mods, including RevDCM, there is no convenient way to run just the dll without having all the related python, xml, etc, etc files.
I was using the dll I compiled with the dune wars mod, so all python xml should be in place. When I use the dll included in the install, all works fine, but when use the one I compiled I get into trouble. I guess I have some wrong compiler options then.

What specifically are you trying to do? If you would like to extract some of the sdk changes, we can work with you on that. The AI changes were done by cephalo. The all-terrain transport changes were originally done by Maniac, with extensive changes later by myself and koma13.
I wanted to try out a change to force the AI to unload transporters when in danger. The code is very basic but I hope it will most issues.

Code:
/*************************************************************************************************/
/**	BETTER AI (Unloading Transports in Danger at end of turn) Sephi                             **/
/**						                                            							**/
/*************************************************************************************************/
                        if (!player.isHuman())
                        {
                            for(CvUnit* pLoopUnit = player.firstUnit(&iLoop); pLoopUnit != NULL; pLoopUnit = player.nextUnit(&iLoop))
                            {
                                if(pLoopUnit->canUnloadAll() && (!pLoopUnit->plot()->isWater()))
                                {
                                    bool bDanger=false;
                                    // Are we in Danger?
                                    int iOurDefense = player.AI_getOurPlotStrength(pLoopUnit->plot(), 0, true, false);
                                    int iEnemyOffense = player.AI_getEnemyPlotStrength(pLoopUnit->plot(), 4, false, true);

                                    if (iOurDefense < iEnemyOffense)
                                    {
                                        bDanger = true;
                                    }

                                    if (bDanger)
                                    {
                                        pLoopUnit->unloadAll();
                                    }
                                }
                            }
                        }
/*************************************************************************************************/
/**	END	                                        												**/
/*************************************************************************************************/
 
I was using the dll I compiled with the dune wars mod, so all python xml should be in place. When I use the dll included in the install, all works fine, but when use the one I compiled I get into trouble. I guess I have some wrong compiler options then.

Let me make sure I understand. You compile the sources from mods/dune wars/cvgamecoredll and produce a dll with no errors. Then you copy that on top of your existing mods/dune wars/assets/cvgamecoredll.dll and launch a game. Now you get some errors. What are the specific errors?

I wanted to try out a change to force the AI to unload transporters when in danger. The code is very basic but I hope it will most issues.

Say, that is clever. Brute force but it looks like it should work. Which file/line were you inserting this into? I am actively trying to solve the problem so this suggestion comes at a great time.
 
Let me make sure I understand. You compile the sources from mods/dune wars/cvgamecoredll and produce a dll with no errors. Then you copy that on top of your existing mods/dune wars/assets/cvgamecoredll.dll and launch a game. Now you get some errors. What are the specific errors?
I get no specific error, basically just a civ stopped working error. It seems to happen just before the screen pops up with the revolution components at gamestart. I doubt it has anything to do with dunewars. The dll I am compiling is also a bit bigger.

Say, that is clever. Brute force but it looks like it should work. Which file/line were you inserting this into? I am actively trying to solve the problem so this suggestion comes at a great time.

here is all you need
Code:
void CvGame::updateMoves()
{
[...]
					if (!(player.hasBusyUnit()))
					{
/*************************************************************************************************/
/**	BETTER AI (Unloading Transports in Danger at end of turn) Sephi                             **/
/**						                                            							**/
/*************************************************************************************************/
                        if (!player.isHuman())
                        {
                            for(CvUnit* pLoopUnit = player.firstUnit(&iLoop); pLoopUnit != NULL; pLoopUnit = player.nextUnit(&iLoop))
                            {
                                if(pLoopUnit->canUnloadAll() && (!pLoopUnit->plot()->isWater()))
                                {
                                    bool bDanger=false;
                                    // Are we in Danger?
                                    int iOurDefense = player.AI_getOurPlotStrength(pLoopUnit->plot(), 0, true, false);
                                    int iEnemyOffense = player.AI_getEnemyPlotStrength(pLoopUnit->plot(), 4, false, true);

                                    if (iOurDefense < iEnemyOffense)
                                    {
                                        bDanger = true;
                                    }

                                    if (bDanger)
                                    {
                                        pLoopUnit->unloadAll();
                                    }
                                }
                            }
                        }
/*************************************************************************************************/
/**	END	                                        												**/
/*************************************************************************************************/
					
						player.setAutoMoves(false);
					}
				}
			}
		}
	}
}

in player.h

/*************************************************************************************************/
/**	BETTER AI (Unloading Transports in Danger at end of turn) Sephi                             **/
/**	Make sure we can call these functions in CvGame.cpp                							**/
/*************************************************************************************************/
    virtual int AI_getOurPlotStrength(CvPlot* pPlot, int iRange, bool bDefensiveBonuses, bool bTestMoves) const = 0;
    virtual int AI_getEnemyPlotStrength(CvPlot* pPlot, int iRange, bool bDefensiveBonuses, bool bTestMoves) const = 0;
/*************************************************************************************************/
/**	END	                                        												**/
/*************************************************************************************************/
I don't know how well this works without testing, but the big advantage is that it is easy to remove in case it doesn't help
 
here is all you need ... I don't know how well this works without testing, but the big advantage is that it is easy to remove in case it doesn't help

Thanks for the suggestion! I have put some code close to this into AI_unitUpdate. This way I don't have to expose the plot danger functions, and it seems more like an AI function than a game function. I had a save game where an enemy transport SOD was underway. With the original dll, it stopped on land right next to my city and I easily killed the escort and all the transports. With the new dll using your suggestion, the transport unloads, and captures my city the next turn.

I did not test to see if there are any other side effects, but for the straightforward case it is working! This is a big step forward! :bowdown:

One question. I notice your code tests isHuman(). What happens if the human player is autoplaying? Does isHuman still return true? If so then there is a problem, the human player will not unload when autoplaying.

If anybody is interested to try out this change, I hereby call it 1.7.0.2 and it is attached. Replace assets/cvgamecoredll.dll with the contents of the zip.
 
I'm might be a little obtuse, but what good are the Sayyadinas? I've stacked 2 of them in a city forever with a big stack and nothing happens to their XP.
Also, I was first to Technocracy but it wasn't founded by me.
 
I'm might be a little obtuse, but what good are the Sayyadinas? I've stacked 2 of them in a city forever with a big stack and nothing happens to their XP.

The Sayyadina doesn't affect XP, it directly grants promotions. Do the units in the stack have more combat and drill promotions than you would expect? Since it picks one unit every 2-3 turns to grant a promotion, the effect may actually be harder to see in a large stack.

Also, I was first to Technocracy but it wasn't founded by me.

I am not quite sure what this means. Technocracy is a religion, founded by the first to reach Mechanization tech. However, certain civilizations are forbidden to found certain religions, as shown in the religion hover help and pedia. There is no display of this in the tech chooser, for a long complicated reason. Are you playing Bene Tleilax, which cannot found any religion but their own? Probably not, unless you are playing two games at once.
 
I have a suggestion:

dunewars.png


bts319.png


Reword the text and make clicking 'OK' continue with the installation anyway. I have the Steam version of Civ4 and BtS, it is most certainly updated to version 3.19. Installers that abort unnecessarily are a bit of a pet peeve of mine.

Please visit the download page again. I have added instructions for any player who is having trouble with the installer failing to detect your BTS 3.19. Hopefully we will be able to fix the installer at some point.
 
OK, I was first to mechanization, and unless the BG are forbidden to found Technocracy, there is a bug.
 
OK, I was first to mechanization, and unless the BG are forbidden to found Technocracy, there is a bug.

As you can see in the religion help, the only civ which cannot found Technocracy is Tleilaxu. After you achieved mechanization, what did the religion advisor show? You have encountered several bugs regarding religion founding. The first one I am unable to reproduce, post #21. I can see the problem clearly in the screenshot, but when I try this with a new game, it does not happen. I will try to reproduce this second one also.
 
Thanks for the suggestion! I have put some code close to this into AI_unitUpdate. This way I don't have to expose the plot danger functions, and it seems more like an AI function than a game function.
yeah, AI changes shouldn't be in CvGame, however the advantage of Cvgame is that it is run after ALL units have moved. So you prevent cases in which a transport unloads before other units move to escort the transport or destroy threathening units. So if your change makes the AI unload transporters too often you might want to try to move it to the game function.

One question. I notice your code tests isHuman(). What happens if the human player is autoplaying? Does isHuman still return true?
while autoplaying returns false

looking forward to how this mod progress :goodjob:
 
Inquisitors seem not to be able to do anything except move around.
 
If anybody is interested to try out this change, I hereby call it 1.7.0.2 and it is attached. Replace assets/cvgamecoredll.dll with the contents of the zip.
I will test.

OK, I was first to mechanization, and unless the BG are forbidden to found Technocracy, there is a bug.
As you can see in the religion help, the only civ which cannot found Technocracy is Tleilaxu

The BG *should* be forbidden to found Technocracy. So should Fremen.
It would be incredibly out of character.

Anyone else can found, and Ix and Ordos have it as preferred religion.

Inquisitors seem not to be able to do anything except move around.
Interesting. I've never tested them - never needed to use them.
 
Back
Top Bottom