Bazaar developer reference

CvUnit::gift(bool)

Defined in
CvUnit.cpp, line 4135
Class
CvUnit
Hook name
CivHooks::CvUnit_gift

Hooks

static bool BeforeCvUnit_gift(CvUnit* self, bool bTestTransport);static void AfterCvUnit_gift(CvUnit* self, bool bTestTransport);static void ReplaceCvUnit_gift(void (*original)(CvUnit*, bool), CvUnit* self, bool bTestTransport);CivRegisterBefore<CivHooks::CvUnit_gift>(host, &BeforeCvUnit_gift);CivRegisterAfter<CivHooks::CvUnit_gift>(host, &AfterCvUnit_gift);CivRegisterReplace<CivHooks::CvUnit_gift>(host, &ReplaceCvUnit_gift);

Code

4135void CvUnit::gift(bool bTestTransport)4136{4137	VALIDATE_OBJECT4138	IDInfo* pUnitNode;4139	CvUnit* pGiftUnit;4140	CvUnit* pLoopUnit;4141	CvPlot* pPlot;4142	CvString strBuffer;4143	PlayerTypes eOwner;41444145	if(!canGift(false, bTestTransport))4146	{4147		return;4148	}41494150	pPlot = plot();41514152	pUnitNode = pPlot->headUnitNode();41534154	while(pUnitNode != NULL)4155	{4156		pLoopUnit = ::getUnit(*pUnitNode);41574158		if(pLoopUnit && pLoopUnit->getTransportUnit() == this)4159		{4160			pLoopUnit->kill(false);4161			pUnitNode = pPlot->headUnitNode();4162		}4163		else4164		{4165			pUnitNode = pPlot->nextUnitNode(pUnitNode);4166		}4167	}41684169	CvAssertMsg(plot()->getOwner() != NO_PLAYER, "plot()->getOwner() is not expected to be equal with NO_PLAYER");4170	pGiftUnit = GET_PLAYER(plot()->getOwner()).initUnit(getUnitType(), getX(), getY(), AI_getUnitAIType(), NO_DIRECTION, false, false);41714172	CvAssertMsg(pGiftUnit != NULL, "GiftUnit is not assigned a valid value");41734174	if(pGiftUnit != NULL)4175	{4176		eOwner = getOwner();41774178		pGiftUnit->convert(this, false);4179		pGiftUnit->setupGraphical();41804181		pGiftUnit->GetReligionData()->SetReligion(GetReligionData()->GetReligion());4182		pGiftUnit->GetReligionData()->SetReligiousStrength(GetReligionData()->GetReligiousStrength());4183		pGiftUnit->GetReligionData()->SetSpreadsLeft(GetReligionData()->GetSpreadsLeft());41844185		if(pGiftUnit->getOwner() == GC.getGame().getActivePlayer())4186		{4187			strBuffer = GetLocalizedText("TXT_KEY_MISC_GIFTED_UNIT_TO_YOU", GET_PLAYER(eOwner).getNameKey(), pGiftUnit->getNameKey());4188			DLLUI->AddUnitMessage(0, pGiftUnit->GetIDInfo(), pGiftUnit->getOwner(), false, GC.getEVENT_MESSAGE_TIME(), strBuffer/*, "AS2D_UNITGIFTED", MESSAGE_TYPE_INFO, pGiftUnit->getUnitInfo().GetButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_WHITE"), pGiftUnit->getX(), pGiftUnit->getY(), true, true*/);4189		}41904191		CvPlayer* pMinorCiv = &GET_PLAYER(pGiftUnit->getOwner());41924193		// Gift to Minor Civ4194		CvPlayer& kPlayer = GET_PLAYER(getOwner());4195		if(!kPlayer.isMinorCiv() && pMinorCiv->isMinorCiv())4196		{4197			pMinorCiv->GetMinorCivAI()->DoUnitGiftFromMajor(eOwner, pGiftUnit, /*bDistanceGift*/ false);4198		}4199	}4200}

Calls

Called by