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}