Ploeperpengel
academic precarity
Reasonably certain that it is because you are setting the <FreePromotion> tag. This calls a DLL function which gives that promotion to any unit built in the city. Just reference your building specifically instead of having it do a check for any building with appropriate tags, and remove the <FreePromotion> entry and it'll work.
No I want to be flexible and preserve the higher value of a building with freepromotion set for the AI. Anyway I just figured it out:

Code:
if (GC.getBuildingInfo(eBuilding).getFreePromotion() != NO_PROMOTION)
{
//WH: Ploeperpengel begin modify meteoric iron
CvPlot* pPlot = plot();
if (GC.getPromotionInfo((PromotionTypes)GC.getBuildingInfo(eBuilding).getFreePromotion()).getBonusPrereq() != NO_BONUS)
{
if (pPlot->getPlotCity()->hasBonus((BonusTypes)GC.getPromotionInfo((PromotionTypes)GC.getBuildingInfo(eBuilding).getFreePromotion()).getBonusPrereq()))
{
changeFreePromotionCount(((PromotionTypes)(GC.getBuildingInfo(eBuilding).getFreePromotion())), iChange);
}
}
else
{
changeFreePromotionCount(((PromotionTypes)(GC.getBuildingInfo(eBuilding).getFreePromotion())), iChange);
}
//WH: end modify