CvBarbarians::IsPlotValidForBarbCamp(CvPlot *)
- Defined in
- CvBarbarians.cpp, line 20
- Class
- CvBarbarians
- Hook name
CivHooks::CvBarbarians_IsPlotValidForBarbCamp- Lua events
GameEvents.BarbariansCanFoundCamp
Hooks
static bool BeforeCvBarbarians_IsPlotValidForBarbCamp(CvPlot* pPlot, bool& result);static void AfterCvBarbarians_IsPlotValidForBarbCamp(CvPlot* pPlot, bool& result);static bool ReplaceCvBarbarians_IsPlotValidForBarbCamp(bool (*original)(CvPlot*), CvPlot* pPlot);CivRegisterBefore<CivHooks::CvBarbarians_IsPlotValidForBarbCamp>(host, &BeforeCvBarbarians_IsPlotValidForBarbCamp);CivRegisterAfter<CivHooks::CvBarbarians_IsPlotValidForBarbCamp>(host, &AfterCvBarbarians_IsPlotValidForBarbCamp);CivRegisterReplace<CivHooks::CvBarbarians_IsPlotValidForBarbCamp>(host, &ReplaceCvBarbarians_IsPlotValidForBarbCamp);
Code
20bool CvBarbarians::IsPlotValidForBarbCamp(CvPlot* pPlot)21{22 int iRange = 4;23 int iDY;2425 int iPlotX = pPlot->getX();26 int iPlotY = pPlot->getY();2728 CvMap& kMap = GC.getMap();29 for (int iDX = -(iRange); iDX <= iRange; iDX++)30 {31 for (iDY = -(iRange); iDY <= iRange; iDY++)32 {33 int iLoopPlotX = iPlotX + iDX;34 int iLoopPlotY = iPlotY + iDY;3536 // Cut off corners37 if (plotDistance(iPlotX, iPlotY, iLoopPlotX, iLoopPlotY) > iRange)38 continue;3940 // If the counter is below -1 that means a camp was cleared recently41 CvPlot* pLoopPlot = kMap.plot(iLoopPlotX, iLoopPlotY);42 if (pLoopPlot)43 {44 if (m_aiPlotBarbCampSpawnCounter[pLoopPlot->GetPlotIndex()] < -1)45 return false;46 }47 }48 }4950#if defined(MOD_EVENTS_BARBARIANS)51 if (MOD_EVENTS_BARBARIANS) {52 if (GAMEEVENTINVOKE_TESTALL(GAMEEVENT_BarbariansCanFoundCamp, iPlotX, iPlotY) == GAMEEVENTRETURN_FALSE) {53 return false;54 }55 }56#endif57 58 return true;59}