Beta version of 2.7

Tholal

Emperor
Joined
May 19, 2009
Messages
1,676
2.7 Beta (not compatible with previous saves). Posting this in the hopes of getting some folks to playtest with the new features and root out any bugs or other issues. I'll try to post a debug DLL later tonight.

Features:
  • Merged in Advanced Diplomacy 2.8
    • In addition to Limited Borders, players can now also trade non-aggression pacts and war preparation requests
    • Several new tags for Council Votes (note: I left most of the defaults from Advanced Diplomacy in place for testing purposes. They will likely not be included in the final release
  • Merged in Specialist Enhancements
    • Specialists can now add or subtract health and happiness from a city
    • Note: No specialists in base MNAI are using these tags. Someone will have to mod it

Bugfixes:
  • HN units can no longer capture cities. They will now auto-raze instead
  • Barbarian cities should be more spread out when playing with the Barbarian World option
  • events should no longer occur on peaks if they have a required terrain
  • HN units should no longer leave permanent blockades
  • minor bugfix for the Infernal spawning code

AI:
  • AI - update to the AI decision on when to cast River of Blood (code by Sezren)
 

Attachments

Thanks Tholal!


I noticed that this does not include my most recent World Builder update.

Are you wanting me to incorporate all the new Advanced Diplomacy functions in the Diplomacy screen and release a new version before you merge that?

It would be useful to have a list of all the new Python Functions you exposed.




You say that HN units auto-raze, but in my brief test so far it appears that they just enter an empty rival (even enemy) city without capturing or razing it. I'm not sure that is a bad thing (I did not like the idea of accidentally razing a major city I'd rather send another unit to capture), but it does not match the behavior you describe.
 
I noticed that this does not include my most recent World Builder update.

Are you wanting me to incorporate all the new Advanced Diplomacy functions in the Diplomacy screen and release a new version before you merge that?

Yes. At this point it probably makes more sense for me to wait for a new Worldbuilder version.

It would be useful to have a list of all the new Python Functions you exposed.

It's whatever the Advanced Diplomacy had added since I last merged their code. You can see the commit here. Check the Cy*.cpp files


You say that HN units auto-raze, but in my brief test so far it appears that they just enter an empty rival (even enemy) city without capturing or razing it. I'm not sure that is a bad thing (I did not like the idea of accidentally razing a major city I'd rather send another unit to capture), but it does not match the behavior you describe.

Interesting. I think my playtest involved an occupied city. I'll have to check. If so, I might leave the behavior as-is then.
 
I added a debug DLL attachment to the first post for anyone who wants to try it out. It will run a lot slower but will also show assert messages from the DLL code. Just extract the DLL file to your assets directory (and you can rename the current DLL if you want to be able to switch back and forth between them)

Note: I also re-attached the 2.7beta zip file by accident. It is still the same as the original upload.
 
There may be a problem with the save files. Not sure if it is new. But I have had the following happen with 2 "games" now:
1. Do autoplay for a long time on high difficulty with a not too-small map.
2. Game eventually crashes or stops working. Probably due to gfx when switching to the civ4 application and not directly due to autoplay - presumably out of address space or whatever. This is normal and can usually be fixed by restarting the .exe.
3. Try load game - some autosave from a few turns before the crash.
4. Game crashes instead of loading the save.
 
The attached save file does not crash. But if I autoplay for one turn and 'save game' then this next turn save file will crash the game upon trying to load it. The then generated autosave (at least the one for 346) will also crash in the same manner.

I also have autosaves for the turns 340..347.

Only (IIRC) changes to the game were:
<Type>SPECIALIST_GREAT_ARTIST</Type>
<Commerces>
<iCommerce>0</iCommerce>
<iCommerce>0</iCommerce>
<iCommerce>12</iCommerce>
</Commerces>
<iHappiness>1</iHappiness>

<Type>SPECIALIST_GREAT_SCIENTIST</Type>
<Yields>
<iYield>0</iYield>
<iYield>0</iYield>
<iYield>0</iYield>
</Yields>
<iHealth>1</iHealth>
 

Attachments

After declaring war on the Ljosalfar as the Svartalfar, they have a -3 "You delcared war on us!" attitude modifier towards me listed twice in a row.
 
In the version I merged with my modmod already, I keep getting a message that says "TradeUtil - unknown item type 26"
 
After declaring war on the Ljosalfar as the Svartalfar, they have a -3 "You delcared war on us!" attitude modifier towards me listed twice in a row.

Did you break a non-aggression pact? I believe the diplomatic penalty from that uses the same text.

In the version I merged with my modmod already, I keep getting a message that says "TradeUtil - unknown item type 26"

Never seen that message. Do you have more context? Is this a python error?
 
Never seen that message. Do you have more context? Is this a python error?

At first I assumed it was a python error, but PythonErr.log showed no signs of it.

Eventually I was able to references like this in PythonDbg.log:

21:43:04 WARN : TradeUtil - unknown item type 26
 
OK. Must be related to the Enhanced Specialist code. I'll dig into it. Thanks!

Dont know if its related to the new Specialist code. But it is not because of my posted changes. I reverted them to the original, let a new game autorun to 600 (in 3 or 4 steps, not all-at-once) and the autsaves cannot be loaded due to crash.
 
  • Merged in Advanced Diplomacy 2.8
    • In addition to Limited Borders, players can now also trade non-aggression pacts and war preparation requests
    • Several new tags for Council Votes (note: I left most of the defaults from Advanced Diplomacy in place for testing purposes. They will likely not be included in the final release

There is something wrong with the new resolutions. The number of votes printed ("Victory Conditions") does not conform to the ffh2 scheme.

Some comments on the new resolutions: I have never used any of them in any way. This is just my opinion based on the description in this thread: http://forums.civfanatics.com/showthread.php?t=447915
-Prisoner Rights-Noncombatants Captured during War are Returned Upon Peace
Sounds complicated. Not sure what/how exactly it would work.
-Map Exchange-One time Worldwide Exchange of Maps between voting members.
Ok.
-Military Medicine Rights- +30% Heal Rate for Soldiers
If this is absolute (heal extra 30% of max hp per turn) then it makes healing too trivial (=value is too high). With priests healing already is too easy as is IMO. Would that apply to ships too or just 'living' units?
-Victim Rights-Refugees Return Upon City Liberation
No idea what that is supposed to do.
-No City Razing-No City Razing Upon Conquest
Questionable. Does not fit well with the ffh game - ie razing AV city reduces AC with 'overcouncil ~ good' and 'good ~ low AC'.
-No Capital Punishment-+1 in All Cities
Ok.
-Culture Needs Empty Radius-Fixed Borders - Culture Expansion Requires Empty Radius
No opinion so far.
-Barbarian Peace-Permenant Peace with Barbarians
Bad: Armageddon riders, hellfire spawns.
-Pacificsm-Voting Exclusion Penalty for Aggressive Wars
Not sure. If it (the penalty) would be restricted to aggressive wars vs council members or non-evil civilizations it would fit quite well.
-Condemn Civics-condemnation of a civic. Choosing a condemned civic generates a diplomatic penalty from the voting members and exclude the civilization to the clan of members which can vote.
Condemning 'slavery' civic: Fitting.
 
re: votes - as I said, these new votes are from AD itself and left in for testing purposes only.

The new tags for VoteInfos are as follows:

Code:
+	<ElementType name="bNoCapitalPunishment" content="textOnly" dt:type="boolean"/>
+	<ElementType name="bMilitaryMedicineRights" content="textOnly" dt:type="boolean"/>
+	<ElementType name="bPrisonerRights" content="textOnly" dt:type="boolean"/>
+	<ElementType name="bTradeMap" content="textOnly" dt:type="boolean"/>
+	<ElementType name="bBarbarianPeace" content="textOnly" dt:type="boolean"/>
+	<ElementType name="bVictimRights" content="textOnly" dt:type="boolean"/>
+	<ElementType name="bNoCityRazing" content="textOnly" dt:type="boolean"/>
+	<ElementType name="bCultureNeedsEmptyRadius" content="textOnly" dt:type="boolean"/>
+	<ElementType name="bPacificRule" content="textOnly" dt:type="boolean"/>

+	<ElementType name="CondemnCivics" content="eltOnly">
+		<element type="CivicType" minOccurs="0" maxOccurs="*"/>
+	</ElementType>
+	<ElementType name="BonusObsoletes" content="eltOnly">
+		<element type="BonusType" minOccurs="0" maxOccurs="*"/>
+	</ElementType>

The BonusObsoletes one is probably redundant since FFH already has something along these lines. I'll need to check on that and if so will remove this tag altogether.

I don't really know how Victim Rights and Prisoner Rights are supposed to work.
 
Sometimes when I try to load a saved game (of my modmod with this Beta version included) the program crashes while before it finishes initializing the map.

Yesterday I noticed that the saved games from the day before that they would crash, but that I could still start new games just fine and that I had no problems loading new saved games from then on.

(I thought it had something to do with some change I'd made. Just before that problem started I had removed the code which I'd placed in def unitCannotMoveInto(self,argsList): to prevent HN unis from entering rival cities, since it did not seem to be needed anymore. As I pressed "Save All" I noticed that there was some other file being saved too but could not recall what else I had changed, and did not see anything noteworthy when I used WinMerge to check against other versions.)

The problem just happened again though. I now cannot load the saves I made just before lunch, and I know I did not make any changes during the past 3 hours.


Edit: It just happened again. This time I noticed that the problem started just after the Fix Borders vote.

Edit2: Ok, actually this time the problem is not stopping me from loading older saves. An Auto Save from turn 88 loads fine, whereas the saves from 92 to 105 cause crashes.

I thought it might have been related to joining the Overcouncil around that time, since I know I'd done that after the last working save and that I was part of some council during all the other broken saves. When I tested joining the council my save from the next turn worked just fine, but it had not held a vote yet.


It might be easier to test these bugs if you went ahead and implemented the feature I requested a long time ago, to expose python functions so that I can give World Builder the ability to trigger votes or change their passing status.


Edit3: The Overcouncil's Fixed Borders resolution seems to be preventing my cultural borders from expanding even into unowned territory, and even though I am a member of the Undercouncil rather than Overcouncil.
 
I've had a somewhat similar problem in that the tile grid being on crashes the game, although the issue didn't start with this version. I mentioned it in the 2.62 thread, and asked what steps to go through to make sure everything's installed properly and how to get the scenarios to work, but maybe no one was reading it anymore. Should I start a new thread asking for help?

The "RESOLUTIONS" screen (under Victory Conditions) now shows "OVERCOUNCIL" and "UNDERCOUNCIL" but doesn't list the possible resolutions under each one, which I think it did before even before the councils were available. I'm pretty sure that that's how it works in unmodded Civ 4, anyway. Not that you can't still see the possible resolutions under the civic entries in the Civilopedia, so I guess that it's mainly an issue if it's still the case even after the councils exist, because then you can't see which resolutions have been passed.

Did you break a non-aggression pact? I believe the diplomatic penalty from that uses the same text.
I'm not using the Advanced Tactics setting, so I don't think that non-aggression pacts are even available. I don't see the option listed, anyway; is it enabled with a particular technology? What does a non-aggression pact even do that a peace treaty doesn't do?

The way that the same text is used for different things is generally rather less than ideal, because it makes it unclear what's actually going on, if it even makes sense. (How does "We would have nothing to gain" apply to the AI granting me something, rather than vice versa? Obviously they'd gain whatever I offered in trade!)

Similarly, the need to manually navigate to a promotion (or effect or race or item) entry in the Civilopedia because another entry linked to the identically-named unit's entry instead of what it friggin' should have linked to gets to be a tad tedious after a while. Giving different things (e.g a technology and a civic that that technology enables) different names was a positive change from earlier versions of Civilization that Fall From Heaven should have gone along with, in my opinion.

(In contrast, I don't dislike the reintroduction of different attack and defense strengths for units. Of course, that's just one instance of FFH's tendency to use absolute, rather than only relative, modifications to unit strength.)

I see that some changes have been made to standard diplomacy, and it's nice to see that more trades are possible, but I notice that you still can't offer to go to war with someone or to change civics or religions. Are those still things that the AI only demands of you and gets mad at you for refusing, without ever offering anything in exchange?

It's just a bit irksome in the case of FFH, because there's a civ whose shtick is supposed to be that they're mercenaries, but you're disallowed from actually being mercenary in a single player game. Of course, just declaring war doesn't necessarily mean doing any fighting... Maybe to a limited degree you can actually fight for gold and techs now via trading captured enemy cities to your allies?
 
Okay, I just refused to hand over Festivals to the Lanun, and -2 "You refused to help us!" now appears twice, along with double -2 "You refused to give us tribute!" from earlier. Which is weird, because I thought that the former only covered requests for stuff while Pleased or above, and Hannah was Annoyed with me even before my refusal.

Also, Sandalphon earlier refused to trade me cotton because TXT_KEY_DENIAL_WE_NEED_IT_MUCH.
 
Eventually I was able to references like this in PythonDbg.log:

21:43:04 WARN : TradeUtil - unknown item type 26

OK. That's a warning from one of the BUG utilities. I didn't see this error in my first test. I'll try again. I assume that you haven't added any new trade types in your mod?

After declaring war on the Ljosalfar as the Svartalfar, they have a -3 "You delcared war on us!" attitude modifier towards me
listed twice in a row.

Looks like the memory info modifiers are getting listed twice. I think I see the problem and will fix it for next beta release.

The attached save file does not crash. But if I autoplay for one turn and 'save game' then this next turn save file will crash the game upon trying to load it. The then generated autosave (at least the one for 346) will also crash in the same manner.

Able to replicate. Looks like this one is caused by loading data about votes. Might be the Condemn civics options but I'm not entirely sure on that.

\Edit3: The Overcouncil's Fixed Borders resolution seems to be preventing my cultural borders from expanding even into unowned territory, and even though I am a member of the Undercouncil rather than Overcouncil.

OK. I'll look into this.
 
21:43:04 WARN : TradeUtil - unknown item type 26

I saw this error myself yesterday. Not sure whats going on but I will add it to the bug list.

The "RESOLUTIONS" screen (under Victory Conditions) now shows "OVERCOUNCIL" and "UNDERCOUNCIL" but doesn't list the possible resolutions under each one

I think it hides them if you are not a member of the Council? I'll have to look into it further to figure out the expected behavior.


I'm not using the Advanced Tactics setting, so I don't think that non-aggression pacts are even available. I don't see the option listed, anyway; is it enabled with a particular technology? What does a non-aggression pact even do that a peace treaty doesn't do?

It's part of Advanced Diplomacy which is placed under Advanced Tactics in this mod. Non-agression pact doesn't enforce peace like a peace treaty does. Instead it is a gentleman's agreement. If one side breaks the pact, they should get a diplomatic penalty for doing so.

Similarly, the need to manually navigate to a promotion (or effect or race or item) entry in the Civilopedia because another entry linked to the identically-named unit's entry instead of what it friggin' should have linked to gets to be a tad tedious after a while. Giving different things (e.g a technology and a civic that that technology enables) different names was a positive change from earlier versions of Civilization that Fall From Heaven should have gone along with, in my opinion.

Agreed.

but I notice that you still can't offer to go to war with someone or to change civics or religions.

Those are options in the diplomacy screen. They may be gated by some prerequisites. Not sure on that. Diplomacy code is not an area am I very familiar with (which is why I'm trying to merge someone else's code who has worked on that facet of the game).


RE: Game crashing on loading a save. I found the following code in CvGame.cpp that just doesn't seem right.

Code:
	int iJ;
	int iK;
	pStream->Read(&iJ);
	if (iJ > 0)
	{
		m_paiCondemnCivicCount = new int[iJ];
		for (int iI = 0; iI < iJ; ++iI)
		{
			pStream->Read(&iK);
			if (iK > 0)
			{
				m_paiCondemnCivicCount = new int[iK];
				pStream->Read(iK, m_paiCondemnCivicCount);
			}
			else
			{
				m_paiCondemnCivicCount[iI] = NULL;
				m_paiCondemnCivicCount = NULL;
			}
		}
	}

Am I missing something here or is the above code nonsensical? I don't see any other variables being read in this manner.


RE: Vote results being applied to all players - It seems that most of the Vote results apply their affects to the game rather than individual players. I'm not really sure how FFH sorts this out to only apply to members of the appropriate council. Anyone have insight into this?
 
Back
Top Bottom