Bug Reports and Technical Issues

Not intentional, can you give me coordinates or label the tiles on a screenshot?
 
(On a side note, how does one check the AI extended flipzones in the builder? I learned the above not by examining flipzones and stability maps, but when one of my cities flipped to Canada during my latest game as America).

WB -> Mapmode -> View flipzones (eye icon, bottom left of the menu).
The pink area is the area for the human player. The red area is the additional area for the AI.
 
Do you want to write a short manual on that? We could include it in the concepts section.
 
The flip zones, core maps and war maps work as intended in the world builder, but the settler maps don't seem to work.

Also, just a curiosity question, why do only a few civs have a level 12 war map value anywhere? Is there something extra in that level compared to the normal level 10 value?
 
WB -> Mapmode -> View flipzones (eye icon, bottom left of the menu).
The pink area is the area for the human player. The red area is the additional area for the AI.

Thanks. However, I should point out the data there is incomplete - according to that, Canada doesn't have an extended flip zone for the AI.

Also, how do the values in the War Map view work, exactly?

Not intentional, can you give me coordinates or label the tiles on a screenshot?

Here's the coordinates:

X:20, Y:50 through X:24, Y:51 (includes portion of northern continental United States between the Great Lakes and the Rockies)

X:10, Y:60 through X:10, Y:64 (the eastern border of Alaska)
 
Thanks. However, I should point out the data there is incomplete - according to that, Canada doesn't have an extended flip zone for the AI.

Also, how do the values in the War Map view work, exactly?

According to the code, Canada doesn't have an extended flipzone for the AI. The script auto detects if a civ has an extended core if it is in the list below. (Areas.py)

Spoiler :
Code:
dChangedBirthArea = {
iPersia :	((74, 37), 	(85, 44)), 	# includes Assyria and Anatolia
iSpain : 	((49, 43), 	(55, 46)), 	# includes Catalonia
iInca : 	((26, 19), 	(31, 24)),
iMongolia : 	((81, 45), 	(105, 54)), 	# 6 more west, 1 more south
iTurkey : 	((67, 41), 	(76, 48)), 	# 2 more west
iArgentina : 	((29, 3), 	(35, 13)), 	# includes Chile
}

The warmap is how much the AI want to conquer that tile. Non colored tiles aren't valued by the AI. From low to high importance, it's red, orange, yellow, light green, dark green, (blue). Blue is between brackets because only a few civs have warvalues that high.
 
According to the code, Canada doesn't have an extended flipzone for the AI. The script auto detects if a civ has an extended core if it is in the list below. (Areas.py)

Spoiler :
Code:
dChangedBirthArea = {
iPersia :	((74, 37), 	(85, 44)), 	# includes Assyria and Anatolia
iSpain : 	((49, 43), 	(55, 46)), 	# includes Catalonia
iInca : 	((26, 19), 	(31, 24)),
iMongolia : 	((81, 45), 	(105, 54)), 	# 6 more west, 1 more south
iTurkey : 	((67, 41), 	(76, 48)), 	# 2 more west
iArgentina : 	((29, 3), 	(35, 13)), 	# includes Chile
}

The warmap is how much the AI want to conquer that tile. Non colored tiles aren't valued by the AI. From low to high importance, it's red, orange, yellow, light green, dark green, (blue). Blue is between brackets because only a few civs have warvalues that high.

If those are the only extended flipzones, then there's something seriously wrong. AI Canada will flip its entire Historical area with the exception of St. John's, as well as the non-Historical areas I've already listed.
 
@ Leoreth

Do you prefer that peak tiles belong to a certain region, or should they have RegionID -1? I noticed that some water tiles belong to a certain region, so I used a slightly modified version of my export settlervalue script to change all water tiles to RegionID -1. I can easily do this as well for all peak tiles.

(In fact, I already did it for peak tiles as well. But if you want peak tiles to have the RegionID of the surrounding region, I can rerun the script and only change all water tiles to RegionID -1)
 
Actually yeah, I prefer peaks as being part of their region.

As for the Canadian flip, it's a special rule in RiseAndFall.getConvertedCities():
Code:
		# Leoreth: Canada also flips English/American/French cities in the Canada region
		if iPlayer == iCanada:
			lCanadaCities = []
			lCanadaCities.extend(utils.getCityList(iFrance))
			lCanadaCities.extend(utils.getCityList(iEngland))
			lCanadaCities.extend(utils.getCityList(iAmerica))
			
			for city in lCanadaCities:
				if city.getRegionID() == rCanada and city.getX() < Areas.getCapital(iCanada)[0]:
					lCities.append(city)
Apparently the regions are not perfectly aligned with the stability maps.
 
Actually yeah, I prefer peaks as being part of their region.

As for the Canadian flip, it's a special rule in RiseAndFall.getConvertedCities():
Code:
		# Leoreth: Canada also flips English/American/French cities in the Canada region
		if iPlayer == iCanada:
			lCanadaCities = []
			lCanadaCities.extend(utils.getCityList(iFrance))
			lCanadaCities.extend(utils.getCityList(iEngland))
			lCanadaCities.extend(utils.getCityList(iAmerica))
			
			for city in lCanadaCities:
				if city.getRegionID() == rCanada and city.getX() < Areas.getCapital(iCanada)[0]:
					lCities.append(city)
Apparently the regions are not perfectly aligned with the stability maps.

That would explain X:10, Y:60 through X:10, Y:64, as those are marked as Canada and not Alaska in the Region Map, but X:20, Y:50 through X:24, Y:51 is (correctly) marked as part of the United States there, yet still flips.
 
I'll give it a look from inside the game later.
 
That would explain X:10, Y:60 through X:10, Y:64, as those are marked as Canada and not Alaska in the Region Map, but X:20, Y:50 through X:24, Y:51 is (correctly) marked as part of the United States there, yet still flips.
I'm correcting Alaska right now, but you're right about the area around Minnesota. Do you have a save where those cities flip?
 
Me too. The problem is still there.
Please describe a way for me to reproduce this.
Any game, sleep after movement bug.
Tested it with a caravel, no problems for me. So it's clearly not broken in every situation. I need a specific situation to reproduce from, preferably a save.

Also, I can't find the original report for this but someone mentioned that Wembley shows Broadway art, but it's fine for me in the game.
 
I'm correcting Alaska right now, but you're right about the area around Minnesota. Do you have a save where those cities flip?

Attached to this post is my most recent save. It's somewhere in the 1850s, so getting there shouldn't take too long. (And before you say anything after looking at it, yes, I did use the builder to give myself an edge. This wasn't going to be a serious playthrough, I just happened to spot the bug during it. I didn't mess with anything on the map itself though, just spawned a bunch of extra units and added buildings and religions to cities as I built them).
 

Attachments

It's the American Dream after all :D Thanks.
 
I don't know if it's an error on my end, but it seems that the initialization of the spreadfactor of Judaism and Orthodoxy is bugged. (Only in the 3000 BC and 600 AD scenarios)

I created a small tool to view certain maps from the infoscreen. One of them is the spreadfactor map of religions. That one shows the maps of Judaism and Ortodoxy are incorrect.

It is not consistent with all scenarios. In the 1700 AD scenario, all religion maps work fine. In the 600 AD scenario, only Orthodoxy shows an incorrect map and in the 3000 BC map both the Jewish and Orthodox maps are incorrect. All cases in which the map is incorrect show a map like in the screenshot.

Spoiler :
attachment.php


All other religions have correct maps in all scenarios.

I tried to verify if it's my tool or the game by slightly modifying the CNM view tool of the WB, but that gives the same result.

If it helps, this is (a part of) the code I use for the tool. self.iSubselect is the selected iReligion.
Spoiler :
Code:
		elif self.iMapType == self.RELIGION_MAP:
			#(iNone, iMinority, iPeriphery, iHistorical, iCore) = range(5)
			lColors = ["", "COLOR_PLAYER_ORANGE", "COLOR_YELLOW", "COLOR_GREEN", "COLOR_CYAN"]
			for x in range(con.iWorldX):
				for y in range(con.iWorldY):
					plot = gc.getMap().plot(x, y)
					if plot.isPeak() or plot.isWater(): continue
					iFactor =  plot.getSpreadFactor(self.iSubSelect)
					if iFactor <= 0: continue
					iColor = gc.getInfoTypeForString(lColors[iFactor])
					screen.minimapFlashPlot(x, y, iColor, -1)
 

Attachments

  • Civ4ScreenShot0043.JPG
    Civ4ScreenShot0043.JPG
    315.1 KB · Views: 175
I don't know if it's an error on my end, but it seems that the initialization of the spreadfactor of Judaism and Orthodoxy is bugged. (Only in the 3000 BC and 600 AD scenarios)

I created a small tool to view certain maps from the infoscreen. One of them is the spreadfactor map of religions. That one shows the maps of Judaism and Ortodoxy are incorrect.

It is not consistent with all scenarios. In the 1700 AD scenario, all religion maps work fine. In the 600 AD scenario, only Orthodoxy shows an incorrect map and in the 3000 BC map both the Jewish and Orthodox maps are incorrect. All cases in which the map is incorrect show a map like in the screenshot.

Spoiler :
attachment.php


All other religions have correct maps in all scenarios.

I tried to verify if it's my tool or the game by slightly modifying the CNM view tool of the WB, but that gives the same result.

If it helps, this is (a part of) the code I use for the tool. self.iSubselect is the selected iReligion.
Spoiler :
Code:
		elif self.iMapType == self.RELIGION_MAP:
			#(iNone, iMinority, iPeriphery, iHistorical, iCore) = range(5)
			lColors = ["", "COLOR_PLAYER_ORANGE", "COLOR_YELLOW", "COLOR_GREEN", "COLOR_CYAN"]
			for x in range(con.iWorldX):
				for y in range(con.iWorldY):
					plot = gc.getMap().plot(x, y)
					if plot.isPeak() or plot.isWater(): continue
					iFactor =  plot.getSpreadFactor(self.iSubSelect)
					if iFactor <= 0: continue
					iColor = gc.getInfoTypeForString(lColors[iFactor])
					screen.minimapFlashPlot(x, y, iColor, -1)

Not sure about the situation with Orthodoxy, but the issue with Judaism could come from the fact that it's given the same spread map as Orthodoxy before Orthodoxy is founded.
 
Okay, so here are the rules which are implemented as part of the getSpreadFactor() method:
- before Orthodoxy is founded, Judaism has the spread map of Orthodoxy
- before Catholicism is founded, Orthodoxy uses the maximum of the Orthodox and Catholic spread factors for each region
- before Protestantism is founded, Catholicism uses the maximum of the Protestant and Catholic spread factors for each region

The Christan rules are recursive, i.e. initially Orthodoxy uses the joint spread maps of all three denominations.

Not sure what the best way to display them is but you can find the raw factors in RegionMap.py, you just have to iterate differently.
 
Back
Top Bottom