Shadow World
Chieftain
- Joined
- Sep 16, 2007
- Messages
- 22
Not wondering which base FfH2 version you have. Wondering what Fall Further version you have.
says fall further 50
Not wondering which base FfH2 version you have. Wondering what Fall Further version you have.
I am using .40v and I think it was the race, I just loaded random and race and got Kuriotates and the game did not crash when I placed the settler. I was playing Svartalfar when it crashed.
The first post seems quite outdated![]()
Started up the saved game and still got ctd when completing Inferrnal Pact.
I downloaded your save and got the same issue. Bleh! That's not good...
I think the reason the game did(and does again) crash during the turnswap is because the AI contacts you, that's loaded into memory, then you explode due to memory leak overrun issues.. Every time there's been a between turn period I explode on, when I load the autosave for that turn, there's some AI harassing me about something stupid.
The crash is a division by zero error, I haven't checked just yet to see precisely where it happens, but I know which function so it shouldn't be hard to fix for next patch![]()
I get a repeatable crash. After debugging for quite some time, it appears it happens in bool CvDiplomacyResponse::getAttitudeTypes(). Memory could not be read(it appears the register ecx in mov eax,[ecx+10h] is pointing to 0...
I went there and I saw there is a couple of asserts to verify that i is between 0 and NUM_OF_ATTITUDE_TYPES. The other version of the method, though
bool *CvDiplomacyResponce::GetAttitudeTypes(), does not check if the pointer it is about to return is NULL...It could be that somehow this was NULL...But, I do not see why it wouldn't return if that was the case...More propable is that it has been attached an invalid address other than NULL. Anyway, I hope my attempts in further helping, other than just posting a save game, help a bit.
My debugger may not be reliable, though(I use IDA pro, free edition).
CvCity* pCity = GC.getMapINLINE().findCity(getX_INLINE(), getY_INLINE(), NO_PLAYER, eTeam, false, false, NO_TEAM, NO_DIRECTION, 0, true);
FAssert(pCity != NULL);
if (pCity != NULL)
{
if (plotDistance(getX_INLINE(), getY_INLINE(), pCity->getX(), pCity->getY()) < 10)
{
if (pCity->plot()->getNumDefenders(pCity->getOwner()) < pCity->AI_minDefenders()/2)
{
return false;
}
}
}
I am getting a persistant CTD whenever I finish researching Infernal Pact. I get the message about Hyboreum being founded and then the game hangs for a second and then CTDs.
I have the current version of both FFH2 (y) anf FF (j) installed.
::EDIT:: I have included the save game file.
I have also changed techs and ended the turn (not finishing Infernal Pact) and the game progresses just fine. I'm pretty sure the CTD is tied to either the Infernal Pact tech or, more likely to my mind, tied to the emergence of the Hyboreum (sp?) with the completion of Infernal Pact.
More thoughts. Could it be the FFH2 patch making things screwey? I didn't see anywhere in the FF install instruction about patching FFH2. I just assumed you needed the current version of FFH2. Should I reinstall FF over a vanilla FFH2?
for (int iI = 0; iI < GC.getNumUnitClassInfos(); iI++)
{
UnitTypes eLoopUnit = (UnitTypes)GC.getUnitClassInfo((UnitClassTypes)iI).getDefaultUnitIndex();
/*************************************************************************************************/
/** Better AI 03/18/09 Written: jdog5000 Imported: Notque **/
/** **/
/** Seems like the call before this one should be checking for our UUs instead of the default **/
/** Then of course we need to not do any of this at all if we don't have any unit for this class**/
/** **/
/** More Units from cities with mil prod bonuses **/
/*************************************************************************************************/
/** ---- Start Original Code ---- **
CvUnitInfo& kUnitInfo = GC.getUnitInfo((UnitTypes)iI);
/** ---- End Original Code ---- **/
FAssert(eLoopUnit > NO_UNIT);
// Mootpoint 03/26/09 - fall back to a safe value if the default unit index is invalid
if (eLoopUnit == NO_UNIT)
{
eLoopUnit = (UnitTypes)iI;
}
CvUnitInfo& kUnitInfo = GC.getUnitInfo(eLoopUnit);
iSlaveryValue *= iConsumtionPerPop * 2;
iSlaveryValue /= std::max(1, iConsumtionPerPop * 2 + std::max(0, iAdjustedFoodDifference));