Похоже найден виновник многих несуразностей. Это функция CvUnit::getLayerAnimationPaths()

Выглядит она вот так.

Скрытый текст
Код:
void CvUnit::getLayerAnimationPaths(std::vector<AnimationPathTypes>& aAnimationPaths) const
{
	for (int i=0; i < GC.getNumPromotionInfos(); ++i)
	{
		PromotionTypes ePromotion = (PromotionTypes) i;
		if (isHasPromotion(ePromotion))
		{
			AnimationPathTypes eAnimationPath = (AnimationPathTypes) GC.getPromotionInfo(ePromotion).getLayerAnimationPath();
			if(eAnimationPath != ANIMATIONPATH_NONE)
			{
				aAnimationPaths.push_back(eAnimationPath);
			}
		}
	}
}


Вызывает уйму всякой муры, включая как саму себя, так и самые неожиданные вещи. Например CvCity::getY, причем обходится даже без CvCity::getX