Da feuert gleich schon das Assert hier: e ist wohl negativ, der Monat nicht gültig.
PHP-Code:
CvInfoBase& CvGlobals::getMonthInfo(MonthTypes e)
{
FAssert(e > -1);
FAssert(e < GC.getNumMonthInfos());
return *(m_paMonthInfo[e]);
}
Einen Schritt weiter hoch in setDateStr:
iMonth = -59994
e = iMonth % GC.getNumMonthInfos()
Die Modulo-Funktion (%) in C++ behält das Vorzeichen bei. Daher kommt da Schrott raus, bzw. genaugenommen -59994 - 12*int(-59994/12) = -6. Was wir wirklich wollen ist eine Zahl zwischen 0 und 11.
Also sollte der Fix reichen (in CvGameTextMgr::setDateStr):
[php]
// Flunky for PAE: hotfix month B.C.
int iMonth = getTurnMonthForGame(iGameTurn, iStartYear, eCalendar, eSpeed);
int e = iMonth % GC.getNumMonthInfos();
if (e < 0)
{
e += GC.getNumMonthInfos();
}
if (bSave)
{
szString = (szYearBuffer + "-" + GC.getMonthInfo((MonthTypes) e).getDescription());
}
else
{
szString = (GC.getMonthInfo((MonthTypes) e).getDescription() + CvString(", ") + szYearBuffer);
}
[php]
Wenn jemand nochmal eine normale 52 Civ DLL für PAE VI bauen mag, gerne übernehmen.