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
- CvGlobals::getBARBARIAN_CAMP_IMPROVEMENT()
- CvPlayerTraits::ConvertBarbarianCamp(CvUnit *, CvPlot *)
- CvPlayerTraits::ConvertBarbarianNavalUnit(CvUnit *, UnitHandle)
- CvPlayerTraits::GetLandBarbarianConversionPercent() const
- CvPlayerTraits::GetSeaBarbarianConversionPercent() const
- CvPlot::getBestDefender(PlayerTypes, PlayerTypes, const CvUnit *, bool, bool, bool, bool)
- CvPlot::getImprovementType() const
- CvPlot::getX() const
- CvPlot::getY() const
- CvPlot::isWater() const
FObjectHandle::FObjectHandleFObjectHandle::operator bool- plotDirection(int, int, DirectionTypes)