Single Player bugs and crashes v36 plus (SVN) - After the 24th of October 2015

Status
Not open for further replies.
I'm sorry, that was a misunderstanding. Is the save breaking period over?

It's okay. Been a lot of confusion of late.

I think there is 1 more coming up (maybe 2) but T-Brd, DH, or Toffer would need to verify that.

And iirc T-brd is taking a break this weekend. As is DH.

JosEPh
 
@TB:
I tried this so standout doesn't need multiple versions to differentiate between game options:
Code:
		<PromotionInfo>
			<Type>PROMOTION_STATUS_STANDOUT_ON</Type>
			<Description>TXT_KEY_STATUS_STANDOUT_ON</Description>
			<Sound>AS2D_IF_LEVELUP</Sound>
			<PromotionLine>PROMOTIONLINE_STANDOUT</PromotionLine>
			<iLinePriority>2</iLinePriority>
			<bPrereqNormInvisible>1</bPrereqNormInvisible>
			[COLOR="Blue"][B]<iNoInvisibilityChange>5</iNoInvisibilityChange>[/B][/COLOR]
			<bQuick>1</bQuick>
			<bStatus>1</bStatus>
			<Button>Art/Buttons/Promotions/StandOutStatus.dds</Button>
		</PromotionInfo>
		<PromotionInfo>
			<Type>PROMOTION_STATUS_STANDOUT_OFF</Type>
			<Description>TXT_KEY_STATUS_STANDOUT_OFF</Description>
			<Help>TXT_KEY_PROMOTION_DEPLETE_MP_HELP</Help>
			<Sound>AS2D_IF_LEVELUP</Sound>
			<PromotionPrereq>PROMOTION_STATUS_STANDOUT_ON</PromotionPrereq>
			<PromotionLine>PROMOTIONLINE_STANDOUT</PromotionLine>
			<iLinePriority>1</iLinePriority>
			<iNoInvisibilityChange>-5</iNoInvisibilityChange>
			<bStatus>1</bStatus>
			<bRemoveAfterSet>1</bRemoveAfterSet>
			<Button>Art/Buttons/Promotions/RemoveStandOutStatus.dds</Button>
		</PromotionInfo>
But, more often than not, the "No invisibility" stat remains after the status is removed (unit doesn't get invisibility back when standout is removed).
I added <iNoInvisibilityChange>-5</iNoInvisibilityChange> in PROMOTION_STATUS_STANDOUT_OFF later to see if it helped, I know it shouldn't be necessary.

Perhaps it's a symptom of a bigger issue and should be investigated?

Looking at the code it doesn't seem this should be taking place. I'd have to do a more intense evaluation but in the read through it looks right.

This solution by the way does not hold up very well for later game when some forms of invisibility were intended to not be included in standout. For as far as we've developed I get that this works fine. But you cannot, for example, standout any submerged invisibility if you are in fact submerged. There are other angles like this that need to be considered later on.
 
Looking at the code it doesn't seem this should be taking place. I'd have to do a more intense evaluation but in the read through it looks right.

This solution by the way does not hold up very well for later game when some forms of invisibility were intended to not be included in standout. For as far as we've developed I get that this works fine. But you cannot, for example, standout any submerged invisibility if you are in fact submerged. There are other angles like this that need to be considered later on.
Good point. :)
 
Apologies if this has been reported but I'm getting a lot of in game error messages when someone declares war. The diplomacy panel bottom right vanishes.

Incidently I dont have any combat animations not sure if thats relevant or related.

Im on SVN 9191 and running as admin as previously advised. Ive attached a screenshot
 

Attachments

  • error 20000.JPG
    error 20000.JPG
    290.6 KB · Views: 72
Apologies if this has been reported but I'm getting a lot of in game error messages when someone declares war. The diplomacy panel bottom right vanishes.

Incidently I dont have any combat animations not sure if thats relevant or related.

Im on SVN 9191 and running as admin as previously advised. Ive attached a screenshot

Yeah thats the same error messages i am getting back on post 1859
 
@TB I realised yesterday that I had been looking at the wrong stuff:blush: I will need to go back and start again.

Dont know if this has been fixed because i hav ean older copy: but here is the error message:


Traceback (most recent call last):
File "BugEventManager", line 363, in _handleDefaultEvent
File "MoreCiv4lerts", line 140, in onBeginActivePlayerTurn
File "MoreCiv4lerts", line 302, in CheckForAlerts
File "MoreCiv4lerts", line 433, in getTechTrades
File "TradeUtil", line 141, in getTechTradePartners
File "TradeUtil", line 305, in getTradePartnersByTeam
File "TradeUtil", line 280, in tradeParters
File "TradeUtil", line 133, in canTrade
File "DiplomacyUtil", line 62, in canContact
AttributeError: 'module' object has no attribute 'isAlwaysWar'

This is failing when it can't find the team of the other player. Looking at the code it should be fine as the two test before it should be responsible for the NPC nations like the code was before responding for the Barbarian nation.

It is possible you have an old version of this bit of code. Check. It is Python/Bug/DiplomacyUtil.py

If you have an old one it will only be testing for the Barbarian nation and not all NPC nations.
 
This is failing when it can't find the team of the other player. Looking at the code it should be fine as the two test before it should be responsible for the NPC nations like the code was before responding for the Barbarian nation.

It is possible you have an old version of this bit of code. Check. It is Python/Bug/DiplomacyUtil.py

If you have an old one it will only be testing for the Barbarian nation and not all NPC nations.

Nope just looked and its the exact same as current SVN,

EDIT:

but it was changed back on 24 Feb by TB pic 10

EDIT EDIT: I put an old copy back in and i still get the same errors .. .

is there maybe another file that needs to go with this??


EDIT EDIT EDIT:

ok updated to current SVN and now i get this error also?????

Traceback (most recent call last):

File "CvScreensInterface", line 1376, in forceScreenRedraw

File "CvMainInterface", line 1407, in redraw

File "CvMainInterface", line 5422, in updateScoreStrings

File "PlayerUtil", line 450, in isWHEOOH

File "TradeUtil", line 133, in canTrade

File "DiplomacyUtil", line 62, in canContact

AttributeError: 'module' object has no attribute 'isAlwaysWar'
ERR: Python function forceScreenRedraw failed, module CvScreensInterface
 
@SO,

Here is some screenies of the game I started Last Night with SVN 9191.

The List toggles Off and On just fine. The game you posted is an Older game. You do not state Which SVN version it was Started with.

Are you confusing the issue here? Just sayin'.

JosEPh
 
@SO,

Here is some screenies of the game I started Last Night with SVN 9191.

The List toggles Off and On just fine. The game you posted is an Older game. You do not state Which SVN version it was Started with.

Are you confusing the issue here? Just sayin'.

JosEPh

Wrong toggle, its the one where u can see if u are at war with anyone and ur LH is in the middle .. .

dont say what SVN i started with cause i do not know, i got sick and tired of CTD's so i went to an older SVN version ?? Haven't had any CTD's but alot of other issues is all?? Plus i started in the Ancient Era . .

now the building "Monument" wont build, it put it in to be built, and it keeps on ending up in the build area, have now tried 6 times to build it??

anyways here is the autosave / . .
 
hopefully this will help

To be certain I just started a game in SVN 9191 ( As I wasnt sure what version I'd started my game in)

pre any declaration of war the diplomacy list (bottom lright) works fine and togles fine

Post a declaration war, by yourself or by another empire, the errors previously posted stream up every turn, and the diplomacy list vanishes and the toggle ceases to work.

You can still make diplamtic contact via the spcific diplomantic relationship screen (next to civics top right)

I do not know if the errors stop on peace . If I find out and this bug is still bugging Ill let you know.
 
hopefully this will help

To be certain I just started a game in SVN 9191 ( As I wasnt sure what version I'd started my game in)

pre any declaration of war the diplomacy list (bottom lright) works fine and togles fine

Post a declaration war, by yourself or by another empire, the errors previously posted stream up every turn, and the diplomacy list vanishes and the toggle ceases to work.

You can still make diplamtic contact via the spcific diplomantic relationship screen (next to civics top right)

I do not know if the errors stop on peace . If I find out and this bug is still bugging Ill let you know.
The errors are stop at peace. I like to conquer the capital of an enemy civilization before tribalism sometimes if the city is close enough. After that the war is of course over, and the game returns to normal, the errors stop and the list reappears. I never tried that toggle under these circumstances, but I assume it starts working again too.
 
hopefully this will help
Spoiler :


To be certain I just started a game in SVN 9191 ( As I wasnt sure what version I'd started my game in)

pre any declaration of war the diplomacy list (bottom lright) works fine and togles fine

Post a declaration war, by yourself or by another empire, the errors previously posted stream up every turn, and the diplomacy list vanishes and the toggle ceases to work.

You can still make diplamtic contact via the spcific diplomantic relationship screen (next to civics top right)

I do not know if the errors stop on peace . If I find out and this bug is still bugging Ill let you know.
Spoiler :
The errors are stop at peace. I like to conquer the capital of an enemy civilization before tribalism sometimes if the city is close enough. After that the war is of course over, and the game returns to normal, the errors stop and the list reappears. I never tried that toggle under these circumstances, but I assume it starts working again too.

This is good info that will surely help us pinpoint the problem.

@DH: What python are involved in war declarations?
I suspect this has to do with the splitting of barbs, Neanderthals and animals.
Perhaps a wrong usage of isBarbarian(), isNPC() or isHominid().
 
CvBUGMilitaryAdvisor.py

This one is a bit suspect:
Spoiler :
Code:
			# loop through all players and display leaderheads
			for iIndex in range(iNumLeaders):
				iLoopPlayer = listLeaders[iIndex]
				player = gc.getPlayer(iLoopPlayer)
				
				x = self.X_LEADERS + self.LEADER_MARGIN + (iIndex % iColumns) * (iButtonSize + self.LEADER_MARGIN)
				y = self.Y_LEADERS + self.LEADER_MARGIN + (iIndex // iColumns) * (iButtonSize + self.LEADER_MARGIN)
	
				[COLOR="Blue"][B]if player.isBarbarian():
					szButton = "Art/Interface/Buttons/Civilizations/Barbarian.dds"
				else:
					szButton = gc.getLeaderHeadInfo(gc.getPlayer(iLoopPlayer).getLeaderType()).getButton()[/B][/COLOR]
	
				szLeaderButton = self.getLeaderButtonWidget(iLoopPlayer)              #self.getNextWidgetName()
				screen.addCheckBoxGFC(szLeaderButton, szButton, ArtFileMgr.getInterfaceArtInfo("BUTTON_HILITE_SQUARE").getPath(), x, y, iButtonSize, iButtonSize, WidgetTypes.WIDGET_MINIMAP_HIGHLIGHT, 2, iLoopPlayer, ButtonStyles.BUTTON_STYLE_LABEL)
				screen.setState(szLeaderButton, (iLoopPlayer in self.selectedLeaders))
Perhaps animals, neanderthals, and insectoids should get their civ button defined specifically like barbs have; especially considering that there are multiple civs using the same leader here. The Green Man have three different civs (predators, beasts and creatures) and barbarian leader is used by insectoids and barbarians.

This is probably not the culprit of our recent problems, though it might be a problem nevertheless.
________________________________________________________________________

Tester.py

Looks like it makes barbs declare war on players if they for some reason are at peace.
Spoiler :
Code:
		if( not gc.getTeam(gc.getPlayer(iPlayer).getTeam()).isAtWar(gc.getBARBARIAN_TEAM()) and not gc.getPlayer(iPlayer).isNPC() ) :
			CvUtil.pyPrint("  ERROR! Player %d is no longer at war with barbs!"%(iPlayer))
			gc.getTeam(gc.getBARBARIAN_TEAM()).declareWar(gc.getPlayer(iPlayer).getTeam(), False, WarPlanTypes.NO_WARPLAN )
If this is something that actually does happen at times then perhaps all NPC civs need a similar check.
________________________________________________________________________

CvWorldBuilderScreen.py

Spoiler :
Code:
		elif int(strName) == GameOptionTypes.[COLOR="blue"][B]GAMEOPTION_ALWAYS_PEACE [/B][/COLOR]and iIndex:
			for iTeamX in xrange(gc.getMAX_CIV_TEAMS()):
				pTeamX = gc.getTeam(iTeamX)
				if CyGame().isOption(GameOptionTypes.GAMEOPTION_ALWAYS_WAR) and pTeamX.isHuman(): continue
				for iTeamY in xrange(gc.getMAX_CIV_TEAMS()):
					if CyGame().isOption(GameOptionTypes.[B][COLOR="Blue"]GAMEOPTION_ALWAYS_WAR[/COLOR][/B]) and gc.getTeam(iTeamY).isHuman(): continue
					pTeamX.makePeace(iTeamY)
Didn't we remove these GameOptions?
 
Wrong toggle, its the one where u can see if u are at war with anyone and ur LH is in the middle .. .

dont say what SVN i started with cause i do not know, i got sick and tired of CTD's so i went to an older SVN version ?? Haven't had any CTD's but alot of other issues is all?? Plus i started in the Ancient Era . .

now the building "Monument" wont build, it put it in to be built, and it keeps on ending up in the build area, have now tried 6 times to build it??

anyways here is the autosave / . .

Same Toggle Boss! I just wasn't at war and then peace. Too early in my game.

But Usul and Berkley's posts are helping track down the Real problem.

JosEPh
 
But Usul and Berkley's posts are helping track down the Real problem.

JosEPh

I suspect a real problem lies somewhere in PlayerUtil.py, but I'm having some trouble interpreting it, somewhat above my head. Might be completely wrong in my suspicion as well. ^^

@TB: Could you double check that getMAX_PLAYERS() getMAX_TEAMS() in the dll returns the correct values?
 
This looks wrong:
Spoiler :
Code:
[B]GameUtil.py[/B]

##   isAlwaysWar()
##     Returns True if the Always War option is enabled.
##
##   isAlwaysPeace()
##     Returns True if the Always Peace option is enabled.
##
##   isPermanentWarPeace()
##     Returns True if the Permanent War/Peace option is enabled.
Code:
[B]DiplomacyUtil.py[/B]

	if PlayerUtil.getPlayerTeam(player).isAtWar(toPlayer.getTeam()) and ([COLOR="blue"][B]GameUtil.isAlwaysWar[/B][/COLOR]() or [B][COLOR="Blue"]GameUtil.isPermanentWarPeace[/COLOR][/B]()):
		return False
DiplomacyUtil asks GameUtil to give attributes, but GameUtil had those functions removed recently; probably because the GameOptions Always War/Peace and Permanent War/Peace have been removed.
 
The attribute 'isAlwaysWar' was taken out of 'GameUtil' in SVN 9148.

This looks wrong:
Spoiler :
Code:
[B]GameUtil.py[/B]

##   isAlwaysWar()
##     Returns True if the Always War option is enabled.
##
##   isAlwaysPeace()
##     Returns True if the Always Peace option is enabled.
##
##   isPermanentWarPeace()
##     Returns True if the Permanent War/Peace option is enabled.
Code:
[B]DiplomacyUtil.py[/B]

	if PlayerUtil.getPlayerTeam(player).isAtWar(toPlayer.getTeam()) and ([COLOR="blue"][B]GameUtil.isAlwaysWar[/B][/COLOR]() or [B][COLOR="Blue"]GameUtil.isPermanentWarPeace[/COLOR][/B]()):
		return False
DiplomacyUtil asks GameUtil to give attributes, but GameUtil had those functions removed recently; probably because the GameOptions Always War/Peace and Permanent War/Peace have been removed.

OK I have gone through the code looking for isAlwaysWar(), isAlwaysPeace() and isPermanentWarPeace(). They still appear in GameUtil and another module which I think we don't use since we converted to Platyping's World Builder.

I have removed the references and I'll run a quick test on them and post them if they cause me no problems.
 
CvBUGMilitaryAdvisor.py

This one is a bit suspect:
Spoiler :
Code:
			# loop through all players and display leaderheads
			for iIndex in range(iNumLeaders):
				iLoopPlayer = listLeaders[iIndex]
				player = gc.getPlayer(iLoopPlayer)
				
				x = self.X_LEADERS + self.LEADER_MARGIN + (iIndex % iColumns) * (iButtonSize + self.LEADER_MARGIN)
				y = self.Y_LEADERS + self.LEADER_MARGIN + (iIndex // iColumns) * (iButtonSize + self.LEADER_MARGIN)
	
				[COLOR="Blue"][B]if player.isBarbarian():
					szButton = "Art/Interface/Buttons/Civilizations/Barbarian.dds"
				else:
					szButton = gc.getLeaderHeadInfo(gc.getPlayer(iLoopPlayer).getLeaderType()).getButton()[/B][/COLOR]
	
				szLeaderButton = self.getLeaderButtonWidget(iLoopPlayer)              #self.getNextWidgetName()
				screen.addCheckBoxGFC(szLeaderButton, szButton, ArtFileMgr.getInterfaceArtInfo("BUTTON_HILITE_SQUARE").getPath(), x, y, iButtonSize, iButtonSize, WidgetTypes.WIDGET_MINIMAP_HIGHLIGHT, 2, iLoopPlayer, ButtonStyles.BUTTON_STYLE_LABEL)
				screen.setState(szLeaderButton, (iLoopPlayer in self.selectedLeaders))
Perhaps animals, neanderthals, and insectoids should get their civ button defined specifically like barbs have; especially considering that there are multiple civs using the same leader here. The Green Man have three different civs (predators, beasts and creatures) and barbarian leader is used by insectoids and barbarians.

This is probably not the culprit of our recent problems, though it might be a problem nevertheless.

There is a bigger problem here. The simplest solution would be to just give Barbarians their button in the same way as everyone else and get rid of the test but The real question is what is it we want to show on this page and does having the animals here make sense. I have been playing a bit of Civ III and can't remember the Civ IV Military screen, although I seem to remember it was less useful than in Civ III which is probably why I rarely use it in Civ IV.

Tester.py

Looks like it makes barbs declare war on players if they for some reason are at peace.
Spoiler :
Code:
		if( not gc.getTeam(gc.getPlayer(iPlayer).getTeam()).isAtWar(gc.getBARBARIAN_TEAM()) and not gc.getPlayer(iPlayer).isNPC() ) :
			CvUtil.pyPrint("  ERROR! Player %d is no longer at war with barbs!"%(iPlayer))
			gc.getTeam(gc.getBARBARIAN_TEAM()).declareWar(gc.getPlayer(iPlayer).getTeam(), False, WarPlanTypes.NO_WARPLAN )
If this is something that actually does happen at times then perhaps all NPC civs need a similar check.

Looking for this module;)

CvWorldBuilderScreen.py

Spoiler :
Code:
		elif int(strName) == GameOptionTypes.[COLOR="blue"][B]GAMEOPTION_ALWAYS_PEACE [/B][/COLOR]and iIndex:
			for iTeamX in xrange(gc.getMAX_CIV_TEAMS()):
				pTeamX = gc.getTeam(iTeamX)
				if CyGame().isOption(GameOptionTypes.GAMEOPTION_ALWAYS_WAR) and pTeamX.isHuman(): continue
				for iTeamY in xrange(gc.getMAX_CIV_TEAMS()):
					if CyGame().isOption(GameOptionTypes.[B][COLOR="Blue"]GAMEOPTION_ALWAYS_WAR[/COLOR][/B]) and gc.getTeam(iTeamY).isHuman(): continue
					pTeamX.makePeace(iTeamY)
Didn't we remove these GameOptions?

Yes we did (I think;)) and while the code should be removed I am not sure it makes any difference since those options will be false just as if they were not selected so the code will be ignored.

edit I think this whole module may be removed as I think this is the module I was talking about in my previous post. I think it has been replaced by Platyping's WB. Although I would prefer we made sure we had the latest of his before we removed this.
 
Status
Not open for further replies.
Back
Top Bottom