bool CvUnit::pillage()
{
CvPlot* pPlot;
CvWString szBuffer;
int iPillageGold;
if (!canPillage(plot()))
{
return false;
}
pPlot = plot();
if (pPlot->getImprovementType() != NO_IMPROVEMENT)
{
if (pPlot->getTeam() != getTeam())
{
iPillageGold = GC.getGameINLINE().getSorenRandNum(GC.getImprovementInfo(pPlot->getImprovementType()).getPillageGold(), "Pillage Gold 1");
iPillageGold += GC.getGameINLINE().getSorenRandNum(GC.getImprovementInfo(pPlot->getImprovementType()).getPillageGold(), "Pillage Gold 2");
if (iPillageGold > 0)
{
GET_PLAYER(getOwnerINLINE()).changeGold(iPillageGold);
szBuffer = gDLL->getText("TXT_KEY_MISC_PLUNDERED_GOLD_FROM_IMP", iPillageGold, GC.getImprovementInfo(pPlot->getImprovementType()).getTextKeyWide());
gDLL->getInterfaceIFace()->addMessage(getOwnerINLINE(), true, GC.getDefineINT("EVENT_MESSAGE_TIME"), szBuffer, "AS2D_PILLAGE", MESSAGE_TYPE_INFO, GC.getUnitInfo(getUnitType()).getButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_GREEN"), pPlot->getX_INLINE(), pPlot->getY_INLINE());
if (pPlot->isOwned())
{
szBuffer = gDLL->getText("TXT_KEY_MISC_IMP_DESTROYED", GC.getImprovementInfo(pPlot->getImprovementType()).getTextKeyWide(), getNameKey(), GET_PLAYER(getOwnerINLINE()).getCivilizationAdjectiveKey());
gDLL->getInterfaceIFace()->addMessage(pPlot->getOwnerINLINE(), false, GC.getDefineINT("EVENT_MESSAGE_TIME"), szBuffer, "AS2D_PILLAGED", MESSAGE_TYPE_INFO, GC.getUnitInfo(getUnitType()).getButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_RED"), pPlot->getX_INLINE(), pPlot->getY_INLINE(), true, true);
}
}
}
pPlot->setImprovementType((ImprovementTypes)(GC.getImprovementInfo(pPlot->getImprovementType()).getImprovementPillage()));
}
else if (pPlot->isRoute())
{
pPlot->setRouteType(NO_ROUTE); // XXX downgrade rail???
}
changeMoves(GC.getMOVE_DENOMINATOR());
if (pPlot->isActiveVisible(false))
{
// Pillage entity mission
CvMissionDefinition kDefiniton;
kDefiniton.fMissionTime = GC.getMissionInfo(MISSION_PILLAGE).getTime() * gDLL->getSecsPerTurn();
kDefiniton.eMissionType = MISSION_PILLAGE;
kDefiniton.pkPlot = pPlot;
kDefiniton.pkUnits[BDU_ATTACKER] = this;
kDefiniton.pkUnits[BDU_DEFENDER] = NULL;
gDLL->getEntityIFace()->AddMission(kDefiniton);
}
return true;
}