Bazaar developer reference

CvPlayerTraits::CheckForBarbarianConversion(CvUnit *, CvPlot *)

Defined in
CvTraitClasses.cpp, line 3036
Class
CvPlayerTraits
Hook name
CivHooks::CvPlayerTraits_CheckForBarbarianConversion

Hooks

static bool BeforeCvPlayerTraits_CheckForBarbarianConversion(CvPlayerTraits* self, CvUnit* pByUnit, CvPlot* pPlot, bool& result);static void AfterCvPlayerTraits_CheckForBarbarianConversion(CvPlayerTraits* self, CvUnit* pByUnit, CvPlot* pPlot, bool& result);static bool ReplaceCvPlayerTraits_CheckForBarbarianConversion(bool (*original)(CvPlayerTraits*, CvUnit*, CvPlot*), CvPlayerTraits* self, CvUnit* pByUnit, CvPlot* pPlot);CivRegisterBefore<CivHooks::CvPlayerTraits_CheckForBarbarianConversion>(host, &BeforeCvPlayerTraits_CheckForBarbarianConversion);CivRegisterAfter<CivHooks::CvPlayerTraits_CheckForBarbarianConversion>(host, &AfterCvPlayerTraits_CheckForBarbarianConversion);CivRegisterReplace<CivHooks::CvPlayerTraits_CheckForBarbarianConversion>(host, &ReplaceCvPlayerTraits_CheckForBarbarianConversion);

Code

3034/// Does a unit entering this tile cause a barbarian to convert to the player?3035#if defined(MOD_EVENTS_UNIT_CAPTURE)3036bool CvPlayerTraits::CheckForBarbarianConversion(CvUnit* pByUnit, CvPlot* pPlot)3037#else3038bool CvPlayerTraits::CheckForBarbarianConversion(CvPlot* pPlot)3039#endif3040{3041	// Loop through all adjacent plots3042	CvPlot* pAdjacentPlot;3043	int iI;3044	bool bRtnValue = false;30453046	if(pPlot->isWater() && GetSeaBarbarianConversionPercent() > 0)3047	{3048		for(iI = 0; iI < NUM_DIRECTION_TYPES; ++iI)3049		{3050			pAdjacentPlot = plotDirection(pPlot->getX(), pPlot->getY(), ((DirectionTypes)iI));30513052			if(pAdjacentPlot != NULL)3053			{3054				if(pAdjacentPlot->isWater())3055				{3056					UnitHandle pNavalUnit = pAdjacentPlot->getBestDefender(BARBARIAN_PLAYER);3057					if(pNavalUnit)3058					{3059#if defined(MOD_EVENTS_UNIT_CAPTURE)3060						if (ConvertBarbarianNavalUnit(pByUnit, pNavalUnit))3061#else3062						if (ConvertBarbarianNavalUnit(pNavalUnit))3063#endif3064						{3065							bRtnValue = true;3066						}3067					}3068				}3069			}3070		}3071	}30723073	else if(GetLandBarbarianConversionPercent() > 0 && pPlot->getImprovementType() == GC.getBARBARIAN_CAMP_IMPROVEMENT() &&3074	        m_eCampGuardType != NO_UNIT)3075	{3076#if defined(MOD_EVENTS_UNIT_CAPTURE)3077		bRtnValue = ConvertBarbarianCamp(pByUnit, pPlot);3078#else3079		bRtnValue = ConvertBarbarianCamp(pPlot);3080#endif3081	}30823083	return bRtnValue;3084}

Calls

Called by