Funktioniert noch nicht richtig. Man kann eins mit beliebigen GP-Typen starten, aber so wird nur eine einzige Einheit entfernt.
Mein Code:
PHP-Code:
void CvPlayer::killGoldenAgeUnits(CvUnit* pUnitAlive)
{
CvUnit* pLoopUnit;
CvUnit* pBestUnit;
bool* pabUnitUsed;
int iUnitsRequired;
int iValue;
int iBestValue;
int iLoop;
int iI;
pabUnitUsed = new bool[GC.getNumUnitInfos()];
for (iI = 0; iI < GC.getNumUnitInfos(); iI++)
{
pabUnitUsed[iI] = false;
}
iUnitsRequired = unitsRequiredForGoldenAge();
if (pUnitAlive != NULL)
{
pabUnitUsed[pUnitAlive->getUnitType()] = true;
iUnitsRequired--;
}
for (iI = 0; iI < iUnitsRequired; iI++)
{
iBestValue = 0;
pBestUnit = NULL;
for(pLoopUnit = firstUnit(&iLoop); pLoopUnit != NULL; pLoopUnit = nextUnit(&iLoop))
{
if (pLoopUnit->isGoldenAge())
{
if (!(pabUnitUsed[pLoopUnit->getUnitType()]))
{
iValue = 10000;
iValue /= (plotDistance(pLoopUnit->getX_INLINE(), pLoopUnit->getY_INLINE(), pUnitAlive->getX_INLINE(), pUnitAlive->getY_INLINE()) + 1);
if (iValue > iBestValue)
{
iBestValue = iValue;
pBestUnit = pLoopUnit;
}
}
}
}
FAssert(pBestUnit != NULL);
if (pBestUnit != NULL)
{
// Cybah: BASE - Nobelpreis Projekt Start
// Original Code
// pabUnitUsed[pBestUnit->getUnitType()] = true;
//
if (!(GET_TEAM(getTeam()).getProjectCount((ProjectTypes)GC.getInfoTypeForString("PROJECT_NOBEL")) > 0))
{
pabUnitUsed[pBestUnit->getUnitType()] = true;
}
// Cybah: BASE - Nobelpreis Projekt End
pBestUnit->kill(true);
//play animations
if (pBestUnit->plot()->isActiveVisible(false))
{
//kill removes bestUnit from any groups
pBestUnit->getGroup()->pushMission(MISSION_GOLDEN_AGE, 0);
}
}
}
SAFE_DELETE_ARRAY(pabUnitUsed);
}