Please move this discussion elsewhere. It has gone far enough here.
Alberts, for me you can remove tunels. Shortening turn times IMO is more important then tunels.
Its correct question in right time. Actualy I started working on polish translation with (little help from Rwn) and now im in the middle merging translations from civ.org.pl and translating Great People screens to Polish. Still its a lot of work and its take a while when will be done. I presumu will be ready in July to beta testing.
Type "translate" in the search this forum option. You get 3 pages of results.Excuse me, but which page exactly I need to lure translators? I want to Acquire some for you but I don't want to make disorder...
void CvCity::updateYieldModifierByBuilding(BuildingTypes eBuilding, YieldTypes eYield, int iChange)
{
BuildingClassTypes eBuildingClass = (BuildingClassTypes)GC.getBuildingInfo(eBuilding).getBuildingClassType();
for (std::vector<BuildingYieldModifier>::iterator it = m_aBuildingYieldModifier.begin(); it != m_aBuildingYieldModifier.end(); ++it)
{
if ((*it).eBuildingClass == eBuildingClass && (*it).eYield == eYield)
{
int iOldChange = (*it).iChange;
if (iOldChange != iChange)
{
// Clear cached yield modifier
m_cachedBuildingYieldModifers[eYield] = -1;
if (iChange == 0)
{
m_aBuildingYieldModifier.erase(it);
}
else
{
(*it).iChange = iChange;
}
if (NO_BUILDING != eBuilding)
{
if (getNumActiveBuilding(eBuilding) > 0)
{
//Team Project (5)
if (!isReligiouslyDisabledBuilding(eBuilding))
{
[B][COLOR="Red"]changeBaseYieldRate[/COLOR][/B](eYield, (iChange - iOldChange) * getNumActiveBuilding(eBuilding));
}
}
}
}
return;
}
}
void CvTeam::changeBuildingCommerceChange(BuildingTypes eIndex1, CommerceTypes eIndex2, int iChange)
{
FAssertMsg(eIndex1 >= 0, "eIndex1 is expected to be non-negative (invalid Index)");
FAssertMsg(eIndex1 < GC.getNumBuildingInfos(), "eIndex1 is expected to be within maximum bounds (invalid Index)");
FAssertMsg(eIndex2 >= 0, "eIndex2 is expected to be non-negative (invalid Index)");
FAssertMsg(eIndex2 < NUM_COMMERCE_TYPES, "eIndex2 is expected to be within maximum bounds (invalid Index)");
if (iChange != 0)
{
int iOldValue = m_ppiBuildingCommerceChange[eIndex1][eIndex2];
int iExistingValue;
m_ppiBuildingCommerceChange[eIndex1][eIndex2] += iChange;
for (int iI = 0; iI < MAX_PLAYERS; iI++)
{
if (GET_PLAYER((PlayerTypes)iI).isAlive())
{
if (GET_PLAYER((PlayerTypes)iI).getTeam() == getID())
{
CvCity* pLoopCity;
int iLoop;
for (pLoopCity = GET_PLAYER((PlayerTypes)iI).firstCity(&iLoop); pLoopCity != NULL; pLoopCity = GET_PLAYER((PlayerTypes)iI).nextCity(&iLoop))
{
iExistingValue = pLoopCity->getBuildingCommerceChange((BuildingClassTypes)GC.getBuildingInfo(eIndex1).getBuildingClassType(), eIndex2);
// set the new
pLoopCity->updateCommerceRateByBuilding(eIndex1, eIndex2, (iExistingValue - iOldValue + getBuildingCommerceChange(eIndex1, eIndex2)));
}
}
}
}
updateCommerce();
}
}
void CvTeam::changeBuildingCommerceChange(BuildingTypes eIndex1, CommerceTypes eIndex2, int iChange)
{
FAssertMsg(eIndex1 >= 0, "eIndex1 is expected to be non-negative (invalid Index)");
FAssertMsg(eIndex1 < GC.getNumBuildingInfos(), "eIndex1 is expected to be within maximum bounds (invalid Index)");
FAssertMsg(eIndex2 >= 0, "eIndex2 is expected to be non-negative (invalid Index)");
FAssertMsg(eIndex2 < NUM_COMMERCE_TYPES, "eIndex2 is expected to be within maximum bounds (invalid Index)");
if (iChange != 0)
{
int iOldValue = m_ppiBuildingCommerceChange[eIndex1][eIndex2];
m_ppiBuildingCommerceChange[eIndex1][eIndex2] += iChange;
for (int iI = 0; iI < MAX_PLAYERS; iI++)
{
if (GET_PLAYER((PlayerTypes)iI).isAlive())
{
if (GET_PLAYER((PlayerTypes)iI).getTeam() == getID())
{
CvCity* pLoopCity;
int iLoop;
for (pLoopCity = GET_PLAYER((PlayerTypes)iI).firstCity(&iLoop); pLoopCity != NULL; pLoopCity = GET_PLAYER((PlayerTypes)iI).nextCity(&iLoop))
{
[B][COLOR="Red"] if (pLoopCity->getNumActiveBuilding(eIndex1) > 0)
{
if (!pLoopCity->isReligiouslyDisabledBuilding(eIndex1))[/COLOR][/B]
{
int iExistingValue = pLoopCity->getBuildingCommerceChange((BuildingClassTypes)GC.getBuildingInfo(eIndex1).getBuildingClassType(), eIndex2);
// set the new
pLoopCity->updateCommerceRateByBuilding(eIndex1, eIndex2, (iExistingValue - iOldValue + getBuildingCommerceChange(eIndex1, eIndex2)));
}
}
}
}
}
}
updateCommerce();
}
}
Edit - another push (5534):
- Fixed AI and governor's attempting to build the same building multiple times in one turn when processing multiple production
Guys, I'm on the latest SVN version and AI seems crazy-spawning battering rams.