Bazaar developer reference

CvBeliefHelpers::ConvertBarbarianUnit(const CvUnit *, UnitHandle)

Defined in
CvBeliefClasses.cpp, line 2317
Hook name
CivHooks::CvBeliefHelpers_ConvertBarbarianUnit
Lua events
GameEvents.UnitCaptured

Hooks

static bool BeforeCvBeliefHelpers_ConvertBarbarianUnit(const CvUnit * pByUnit, UnitHandle pUnit, bool& result);static void AfterCvBeliefHelpers_ConvertBarbarianUnit(const CvUnit * pByUnit, UnitHandle pUnit, bool& result);static bool ReplaceCvBeliefHelpers_ConvertBarbarianUnit(bool (*original)(const CvUnit *, UnitHandle), const CvUnit * pByUnit, UnitHandle pUnit);CivRegisterBefore<CivHooks::CvBeliefHelpers_ConvertBarbarianUnit>(host, &BeforeCvBeliefHelpers_ConvertBarbarianUnit);CivRegisterAfter<CivHooks::CvBeliefHelpers_ConvertBarbarianUnit>(host, &AfterCvBeliefHelpers_ConvertBarbarianUnit);CivRegisterReplace<CivHooks::CvBeliefHelpers_ConvertBarbarianUnit>(host, &ReplaceCvBeliefHelpers_ConvertBarbarianUnit);

Code

2315/// Is there an adjacent barbarian naval unit that could be converted?2316#if defined(MOD_EVENTS_UNIT_CAPTURE)2317bool CvBeliefHelpers::ConvertBarbarianUnit(const CvUnit *pByUnit, UnitHandle pUnit)2318#else2319bool CvBeliefHelpers::ConvertBarbarianUnit(CvPlayer *pPlayer, UnitHandle pUnit)2320#endif2321{2322	UnitHandle pNewUnit;2323	CvPlot *pPlot = pUnit->plot();23242325#if defined(MOD_EVENTS_UNIT_CAPTURE)2326	CvPlayer* pPlayer = &GET_PLAYER(pByUnit->getOwner());23272328	if (MOD_EVENTS_UNIT_CAPTURE) {2329		GAMEEVENTINVOKE_HOOK(GAMEEVENT_UnitCaptured, pPlayer->GetID(), pByUnit->GetID(), pUnit->getOwner(), pUnit->GetID(), false, 4);2330	}2331#endif23322333	// Convert the barbarian into our unit2334	pNewUnit = pPlayer->initUnit(pUnit->getUnitType(), pUnit->getX(), pUnit->getY(), pUnit->AI_getUnitAIType(), NO_DIRECTION, true /*bNoMove*/, false);2335	CvAssertMsg(pNewUnit, "pNewUnit is not assigned a valid value");2336	pNewUnit->convert(pUnit.pointer(), false);2337	pNewUnit->setupGraphical();2338	pNewUnit->finishMoves(); // No move first turn23392340	if(GC.getLogging() && GC.getAILogging())2341	{2342		CvString logMsg;2343		logMsg.Format("Converted barbarian (with belief), X: %d, Y: %d", pUnit->getX(), pUnit->getY());2344		pPlayer->GetHomelandAI()->LogHomelandMessage(logMsg);2345	}23462347	CvString strBuffer = GetLocalizedText("TXT_KEY_NOTIFICATION_HEATHEN_CONVERTS");2348	CvString strSummary = GetLocalizedText("TXT_KEY_NOTIFICATION_SUMMARY_HEATHEN_CONVERTS");2349	pPlayer->GetNotifications()->Add(NOTIFICATION_GENERIC, strBuffer, strSummary, pUnit->getX(), pUnit->getY(), -1);23502351	if (pPlot->getImprovementType() == GC.getBARBARIAN_CAMP_IMPROVEMENT())2352	{2353		pPlot->setImprovementType(NO_IMPROVEMENT);23542355		CvBarbarians::DoBarbCampCleared(pPlot, pPlayer->GetID());2356		pPlot->SetPlayerThatClearedBarbCampHere(pPlayer->GetID());23572358		// Don't give gold for Camps cleared by heathen conversion2359	}23602361	return true;2362}

Calls

Called by