Thunderbrd
C2C War Dog
This is one of my wonders, so I can enhance it. Cahokia Mounds is supposed to provide +50% production speed of Tumulus and +2 Culture from Tumulus, although the bonus doesn't always seem to show up when the Tumulus is in the production queue. Do you think I should increase the culture bonus, or give it another new ability?
Well... Stonehenge grants a free monument to all cities which is fairly similar in strength to giving a free Tumulus in all cities. However, the +2 Culture from Tumulus is interesting... does that affect all cities? If it does, that might be effective enough actually... I have a feeling the benefit isn't utilizing the right tags somehow if that detail isn't showing up - she states she had already built the tumulus in that city.
This may end up being more of a bug in the tags used to give the +2 culture actually. I may need to look into that from the dll side.
The Culture bonus is supposed to affect all Tumulus in your civilization. If you wouldn't mind, could you take a look at both Cahokia Mounds and Serpent Mound? Cahokia is supposed to add +2 culture to Tumulus, and Serpent Mound adds +2 science to Tumulus. The tag responsible is our relatively new <GlobalBuildingExtraCommerces>. I've used it on several of my Wonders to add bonuses to particular buildings from a Wonder.
I can take a look at that tag, yes. But I can't promise much as I've yet to wrap my head around Commerce programming. The method utilized with them and yields is a little confusing for me to read.
As a separate issue/bug/problem, we also need to take a look at the free fire pit in every city... apparently it doesn't seem to be giving it, though it says it does, from controlled fire, or at least not everywhere. This is my wife's report... I haven't looked into it much to know exactly what the problem there is.
I'll take a look more later this afternoon. Apparently that tag is probably one of the issues - maybe just a text issue which would be fairly easy to resolve.
OK, so we have a serious problem here somewhere.
The benefits from those mounds listed under those tags aren't working at all it seems. I'm not seeing any effect indicated for them on the wonder (not in the help pops nor the pedia), nor on the tumulus once the wonder is built.
The tags were apparently designed by AIAndy and utilize a highly complex level of structure based vectors which may be just a notch past my ability to sort out. Just looking at the coding it seems alright... but either its simply not working to bring the data in correctly (which COULD be the way the tags are utilized in the XML) or there's problems with the text manager calling those benefits.
I'll post the issue in the bugs thread and keep taking a look at the problem but I warn it may be beyond my current capacity right now to solve due to the sheer complexity of working with not only the vector itself but the commerce system as well. Furthermore, this sort of one building affecting another on a global level is fairly complex as well and may be a bit tough for me to follow through the code. I could sort it out but it could take me a LONG time to do so. If it hasn't been addressed, I'll come back to it once my other projects are finished.
Reposting here to enlist some assistance.
The tag loads with this:
Spoiler :
Code:
m_aGlobalBuildingCommerceChanges.clear();
if (gDLL->getXMLIFace()->SetToChildByTagName(pXML->GetXML(),"GlobalBuildingExtraCommerces"))
{
if (pXML->SkipToNextVal())
{
int iNumSibs = gDLL->getXMLIFace()->GetNumChildren(pXML->GetXML());
if (0 < iNumSibs)
{
if (gDLL->getXMLIFace()->SetToChild(pXML->GetXML()))
{
for (int j = 0; j < iNumSibs; ++j)
{
if (pXML->GetChildXmlVal(szTextVal))
{
BuildingCommerceChange kChange;
kChange.eBuildingClass = (BuildingClassTypes)pXML->FindInInfoClass(szTextVal);
pXML->GetNextXmlVal(szTextVal);
kChange.eCommerce = (CommerceTypes)pXML->FindInInfoClass(szTextVal);
pXML->GetNextXmlVal(&kChange.iChange);
m_aGlobalBuildingCommerceChanges.push_back(kChange);
gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
}
if (!gDLL->getXMLIFace()->NextSibling(pXML->GetXML()))
{
break;
}
}
gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
}
}
}
gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
}
Spoiler :
Code:
for (int iI = 0; iI < GC.getNumBuildingClassInfos(); iI++)
{
BuildingTypes eLoopBuilding;
if (!bCivilopediaText && NO_PLAYER != GC.getGameINLINE().getActivePlayer())
{
eLoopBuilding = (BuildingTypes)GC.getCivilizationInfo(GC.getGameINLINE().getActiveCivilizationType()).getCivilizationBuildings(iI);
}
else
{
eLoopBuilding = (BuildingTypes)GC.getBuildingClassInfo((BuildingClassTypes)iI).getDefaultBuildingIndex();
}
if (eLoopBuilding != NO_BUILDING && kBuilding.getGlobalBuildingCommerceChange(iI, iJ) != 0)
{
szFirstBuffer.Format(L"%s%s", NEWLINE, gDLL->getText("TXT_KEY_CIVIC_BUILDING_COMMERCE_CHANGE", kBuilding.getGlobalBuildingCommerceChange(iI, iJ), GC.getCommerceInfo((CommerceTypes)iJ).getChar()).c_str());
CvWString szBuilding;
szBuilding.Format(L"<link=literal>%s</link>", GC.getBuildingInfo(eLoopBuilding).getDescription());
setListHelp(szBuffer, szFirstBuffer, szBuilding, L", ", (kBuilding.getGlobalBuildingCommerceChange(iI, iJ) != iLast));
if (iLast == kBuilding.getGlobalBuildingCommerceChange(iI, iJ)) iCount++;
iLast = kBuilding.getGlobalBuildingCommerceChange(iI, iJ);
if (iCount > 3) iCount = iLast = 0;
}
}
}
Again, as noted in the quotes, this COULD be in the way the xml is programmed, which I have not yet taken a look at. I thought it a bit funny that we were calling for the commerce type definition in the way its doing so there rather than relying on the usual method of values by slot... don't know if that has anything to do with it really. Just postulating here.