platyping
Sleeping Dragon
It actually affects the whole bfc
<FeatureFirstStrikes>
<FeatureFirstStrike>
<FeatureType>FEATURE_FOREST</FeatureType>
<iFeatureFirstStrikeChances>2</iFeatureFirstStrikeChances>
<iFeatureFirstStrikes>0</iFeatureFirstStrikes>
</FeatureFirstStrike>
</FeatureFirstStrikes>
experienceNeeded = level * exp_for_tier if isTierPromotion() else level * level + 1
if (GC.getPromotionInfo(ePromotion).getTierType() != NO_TIER)
{
changeExperience(-GC.getPromotionTierInfo((PromotionTierTypes) GC.getPromotionInfo(ePromotion).getTierType()).getCost());
}
else
{
changeLevel(1);
}
void CvUnit::promote(PromotionTypes ePromotion, int iLeaderUnitId)
{
if (!canPromote(ePromotion, iLeaderUnitId))
{
return;
}
if (iLeaderUnitId >= 0)
{
CvUnit* pWarlord = GET_PLAYER(getOwnerINLINE()).getUnit(iLeaderUnitId);
if (pWarlord)
{
pWarlord->giveExperience();
if (!pWarlord->getNameNoDesc().empty())
{
setName(pWarlord->getNameKey());
}
//update graphics models
m_eLeaderUnitType = pWarlord->getUnitType();
reloadEntity();
}
}
if (!GC.getPromotionInfo(ePromotion).isLeader())
{
/* Babylon 5 Mod - Promotion Cost - Start */
if (GC.getPromotionInfo(ePromotion).getCost() == 0)
{
if (GC.getPromotionInfo(ePromotion).getTierType() != NO_TIER)
{
int iCost = GC.getPromotionTierInfo((PromotionTierTypes) GC.getPromotionInfo(ePromotion).getTierType()).getCost();
//changeExperience(-iCost); //method a
setExperience((getLevel() * getLevel() + 1) + (getExperience() - getLevel() * iCost)); //method b
}
else
{
changeLevel(1);
}
}
/* Babylon 5 Mod - Promotion Cost - End */
changeDamage(-(getDamage() / 2));
}
setHasPromotion(ePromotion, true);
/* Babylon 5 Mod - Promotion Cost - Start */
if (GC.getPromotionInfo(ePromotion).getCost() == 0) testPromotionReady();
else testHardwareReady();
/* Babylon 5 Mod - Promotion Cost - Start */
if (IsSelected())
{
gDLL->getInterfaceIFace()->playGeneralSound(GC.getPromotionInfo(ePromotion).getSound());
gDLL->getInterfaceIFace()->setDirty(UnitInfo_DIRTY_BIT, true);
}
else
{
setInfoBarDirty(true);
}
CvEventReporter::getInstance().unitPromoted(this, ePromotion);
}