Single Player bugs and crashes - After the 23rd of September 2013

Status
Not open for further replies.
Code:
Assertion failed 
File: CvPlot.cpp
Line: 10590
Expression: getVisibilityCount(eTeam >= 0)
After loading the following save and running the update. (dll debug build, of course)

I am still far from the point, where I can make such conclusion, but I have some feeling, that with current design proper loading and updating games from previous versions can be on the edge of difficulty level: insanity.
 

Attachments

Code:
Assertion failed 
File: CvPlot.cpp
Line: 10590
Expression: getVisibilityCount(eTeam >= 0)
After loading the following save and running the update. (dll debug build, of course)

I am still far from the point, where I can make such conclusion, but I have some feeling, that with current design proper loading and updating games from previous versions can be on the edge of difficulty level: insanity.

I'm (existentially) aware of this one. There are a few assertion failures that go off. Most are just out-of-date incorrect assertions, but this one is definitely due to some long-present-but-as-yet-unfound bug. It's just never yet made the priority list.
 
The problem is that if you want to add items to the head of the build list (ctrl click) or repeat items at the end (alt click) or repeat items at the start of the build list (ctrl-alt click) you get different hover overs:crazyeye: Basically using cntl and alt to change hover over information is a problem because those keys already mean something in that context.

I know this. You hold down to SEE the altered hover information but then must be careful to not continue to hold down when making a selection unless you mean it in that context. I have some faith in our players figuring this out.
 
@Koshling:

Sorry to bring this up again, but i still dont think the Rogue etc is attacking like it should, especially animals. In the uppper LEFT side of the US (GEM map) my Rogue is surround (almost) by animals, but never ever attacks any of them:blush:, and all the way from my capital to there he didnt either?? Also same goes for the other Rogue just not attacking animals??:blush:
 
Whom ever made the last UnitsInfo change to the SVN you messed it up, now it wont work at all?? Pls fix, thx.

Who's not mentioning their commits in the SVN thread too?
 
@Koshling:

Sorry to bring this up again, but i still dont think the Rogue etc is attacking like it should, especially animals. In the uppper LEFT side of the US (GEM map) my Rogue is surround (almost) by animals, but never ever attacks any of them:blush:, and all the way from my capital to there he didnt either?? Also same goes for the other Rogue just not attacking animals??:blush:

He attacks fine for me (if I set him to automate hunt in that save then immediately end tun he kills the fox to his west). Can you check your hunting odds threshold in the BUG screen:
Open BUG screen
Select the 'Automations' tab
Look for the value of 'Minimum Attack Odds' in the section named 'Automate Hunt Options' - it is set to 50 by default. If you have yours set above about 75 that will cause him to have no valid attacks in the save position.

If it's not that then I am at a bit of a loss, since he is hunting ok when I run your save. I can add some extra BBAI logging temporarily which you can run to find our what is going on if it turns out not to be your option settings - let me know...
 
He attacks fine for me (if I set him to automate hunt in that save then immediately end tun he kills the fox to his west). Can you check your hunting odds threshold in the BUG screen:
Open BUG screen
Select the 'Automations' tab
Look for the value of 'Minimum Attack Odds' in the section named 'Automate Hunt Options' - it is set to 50 by default. If you have yours set above about 75 that will cause him to have no valid attacks in the save position.

If it's not that then I am at a bit of a loss, since he is hunting ok when I run your save. I can add some extra BBAI logging temporarily which you can run to find our what is going on if it turns out not to be your option settings - let me know...

What is default for these, i have never changed anything about minimum stuff?

EDIT OK i changed it to 75 and now they attack, man i cant believe it was set like that, cause i know i never did it??

EDIT: EDIT: Different mini?? This is a really OLD map i tried to use here.
 
Repeatable CTD when you hit end turn:

I can't even load this save, and it crashes in the game engine not the DLL, so not much I can do with this one. It's likely a bad graphical asset somewhere. If you post the minidump I can see if your crash is also consistent with that hypothesis.
 
I can't even load this save, and it crashes in the game engine not the DLL, so not much I can do with this one. It's likely a bad graphical asset somewhere. If you post the minidump I can see if your crash is also consistent with that hypothesis.

Where do I find the mini dump? (and loading is fine for me :confused:)
 
The new properties are mucking up the property display since there is no room for the scroll bar. See image.

I go to a lot of effort to ensure that any new concept I add is modular or at least optional. Yet again we are having something new foisted upon us and it wont be made optional or modular because "it is too much work to change it now".

I am out of here:mad::mad::mad:
 
I don't understand even if they were not added, you would still have the same issue with Crime and Disease doing that horizontally.

Simple Fix :
Remove the +X column. When you mouse over it tells you how much +1 or - 1 you have.

Advanced Fix:
Move the numbers more left. The spacing has to be a UI setting.
 
Fixed in 224.

Spoiler :
SVN 1670 look at the code

The code is somewhere here.

CyPropertiesInterface

Code:
#include "CvGameCoreDLL.h"
#include "CvProperties.h"

//
// Python interface for CvProperties class
// simple enough to be exposed directly - no wrapper
//

void CyPropertiesPythonInterface()
{
	OutputDebugString("Python Extension Module - CyPropertiesPythonInterface\n");

	python::class_<CvProperties>("CvProperties")

		.def("getProperty", &CvProperties::getProperty, "int (int)")
		.def("getValue", &CvProperties::getValue, "int (int)")
		.def("setValue", &CvProperties::setValue, "void (int, int)")
		.def("changeValue", &CvProperties::changeValue, "void (int, int)")
		.def("getNumProperties", &CvProperties::getNumProperties, "int ()")
		.def("getValueByProperty", &CvProperties::getValueByProperty, "int (int)")
		.def("setValueByProperty", &CvProperties::setValueByProperty, "void (int, int)")
		.def("changeValueByProperty", &CvProperties::changeValueByProperty, "void (int, int)")
		.def("getChangeByProperty", &CvProperties::getChangeByProperty, "int (int)")
		.def("getPropertyDisplay", &CvProperties::getPropertyDisplay, "wstring (int)")
		;
}

CvProperties

Code:
#pragma once

//  $Header:
//------------------------------------------------------------------------------------------------
//
//  FILE:    CvProperties.h
//
//  PURPOSE: Generic properties for Civ4 classes
//
//------------------------------------------------------------------------------------------------
#ifndef CV_PROPERTIES_H
#define CV_PROPERTIES_H

#include "CvXMLLoadUtilityModTools.h"
//#include "CvGameObject.h"

//#include "CvProperty.h"

class CvGame;
class CvTeam;
class CvPlayer;
class CvCity;
class CvUnit;
class CvPlot;
class CvGameObject;

struct PropertyBuilding
{
	int iMinValue;
	int iMaxValue;
	BuildingTypes eBuilding;
};

struct PropertyPromotion
{
	int iMinValue;
	int iMaxValue;
	PromotionTypes ePromotion;
};

class CvProperties
{
public:
	CvProperties();
	CvProperties(CvGame* pGame);
	CvProperties(CvTeam* pTeam);
	CvProperties(CvPlayer* pPlayer);
	CvProperties(CvCity* pCity);
	CvProperties(CvUnit* pUnit);
	CvProperties(CvPlot* pPlot);
	int getProperty(int index) const;
	int getValue(int index) const;
	int getChangeProperty(int index) const;
	int getChange(int index) const;
	int getNumProperties() const;
	int getPositionByProperty(int eProp) const;
	int getValueByProperty(int eProp) const;
	int getChangeByProperty(int eProp) const;
	void setValue(int index, int iVal);
	void setChange(int index, int iVal);
	void setValueByProperty(int eProp, int iVal);
	void setChangeByProperty(int eProp, int iVal);
	void changeValue(int index, int iChange);
	void changeValueByProperty(int eProp, int iChange);
	void changeChangeByProperty(int eProp, int iChange);
	void propagateChange(int eProp, int iChange);
	
	void addProperties(const CvProperties* pProp);
	void subtractProperties(const CvProperties* pProp);

	bool isEmpty() const;
	void clear();
	void clearChange();
	void clearForRecalculate();

	//Note: The comparison operators are NOT symmetric. Only properties defined in the second operand are considered.
	// That means any property object is smaller than the empty property and bigger as well.
	bool operator<(const CvProperties& prop) const;
	bool operator<=(const CvProperties& prop) const;
	bool operator>(const CvProperties& prop) const;
	bool operator>=(const CvProperties& prop) const;
	bool operator==(const CvProperties& prop) const;
	bool operator!=(const CvProperties& prop) const;

	void buildRequiresMinString(CvWStringBuffer& szBuffer, const CvProperties* pProp) const;
	void buildRequiresMaxString(CvWStringBuffer& szBuffer, const CvProperties* pProp) const;
	void buildChangesString(CvWStringBuffer& szBuffer, CvWString* szCity = NULL) const;
	void buildCompactChangesString(CvWStringBuffer& szBuffer) const;
	void buildChangesAllCitiesString(CvWStringBuffer& szBuffer) const;
	void buildDisplayString(CvWStringBuffer& szBuffer) const;

	// For Python
	std::wstring getPropertyDisplay(int index) const;
	
	void read(FDataStreamBase* pStream);
	void readWrapper(FDataStreamBase* pStream);
	void write(FDataStreamBase* pStream);
	void writeWrapper(FDataStreamBase* pStream);
	bool read(CvXMLLoadUtility* pXML, const TCHAR* szTagName = "Properties");
	void copyNonDefaults(CvProperties* pProp, CvXMLLoadUtility* pXML );

	void getCheckSum(unsigned int& iSum);
protected:
	std::vector<std::pair<int,int> > m_aiProperty;
	std::vector<std::pair<int,int> > m_aiPropertyChange;
	
	// Pointer to the object to which the properties belong
	CvGameObject* m_pGameObject;
};

#endif
 
Status
Not open for further replies.
Back
Top Bottom