Bazaar developer reference

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}

Calls

Called by