Ich weiß nicht, ob dir das hilft.
Im SDK wird der Preis für Siedler durch diese Formeln bestimmt:
Code:
void CvPlayer::init(PlayerTypes eID)
.....
for (iI = 0; iI < GC.getNumUnitClassInfos(); ++iI)
{
UnitTypes eUnit = ((UnitTypes)(GC.getCivilizationInfo(getCivilizationType()).getCivilizationUnits(iI)));
if (NO_UNIT != eUnit)
{
if (GC.getUnitInfo(eUnit).isFound())
{
setUnitExtraCost((UnitClassTypes)iI, getNewCityProductionValue());
}
}
}
}
AI_init();
}
Code:
void CvPlayer::setUnitExtraCost(UnitClassTypes eUnitClass, int iCost)
{
for (std::vector< std::pair<UnitClassTypes, int> >::iterator it = m_aUnitExtraCosts.begin(); it != m_aUnitExtraCosts.end(); ++it)
{
if ((*it).first == eUnitClass)
{
if (0 == iCost)
{
m_aUnitExtraCosts.erase(it);
}
else
{
(*it).second = iCost;
}
return;
}
}
if (0 != iCost)
{
m_aUnitExtraCosts.push_back(std::make_pair(eUnitClass, iCost));
}
}
Code:
int CvPlayer::getNewCityProductionValue() const
{
int iValue = 0;
for (int iJ = 0; iJ < GC.getNumBuildingClassInfos(); iJ++)
{
BuildingTypes eBuilding = ((BuildingTypes)(GC.getCivilizationInfo(getCivilizationType()).getCivilizationBuildings(iJ)));
if (NO_BUILDING != eBuilding)
{
if (GC.getBuildingInfo(eBuilding).getFreeStartEra() != NO_ERA)
{
if (GC.getGameINLINE().getStartEra() >= GC.getBuildingInfo(eBuilding).getFreeStartEra())
{
iValue += (100 * getProductionNeeded(eBuilding)) / std::max(1, 100 + getProductionModifier(eBuilding));
}
}
}
}
iValue *= 100 + GC.getDefineINT("NEW_CITY_BUILDING_VALUE_MODIFIER");
iValue /= 100;
iValue += (GC.getDefineINT("ADVANCED_START_CITY_COST") * GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getGrowthPercent()) / 100;
int iPopulation = GC.getDefineINT("INITIAL_CITY_POPULATION") + GC.getEraInfo(GC.getGameINLINE().getStartEra()).getFreePopulation();
for (int i = 1; i <= iPopulation; ++i)
{
iValue += (getGrowthThreshold(i) * GC.getDefineINT("ADVANCED_START_POPULATION_COST")) / 100;
}
return iValue;
}
Ich denke also, wenn du in den Global Defines die Werte NEW_CITY_BUILDING_VALUE_MODIFIER, ADVANCED_START_CITY_COST und ADVANCED_START_POPULATION_COST anpasst kannst du mehr oder weniger direkt den Preis des Siedlers beeinflussen.