Bazaar developer reference

CvTacticalAI::PlotBarbarianCampMoves()

Defined in
CvTacticalAI.cpp, line 2273
Class
CvTacticalAI
Hook name
CivHooks::CvTacticalAI_PlotBarbarianCampMoves

Hooks

static bool BeforeCvTacticalAI_PlotBarbarianCampMoves(CvTacticalAI* self);static void AfterCvTacticalAI_PlotBarbarianCampMoves(CvTacticalAI* self);static void ReplaceCvTacticalAI_PlotBarbarianCampMoves(void (*original)(CvTacticalAI*), CvTacticalAI* self);CivRegisterBefore<CivHooks::CvTacticalAI_PlotBarbarianCampMoves>(host, &BeforeCvTacticalAI_PlotBarbarianCampMoves);CivRegisterAfter<CivHooks::CvTacticalAI_PlotBarbarianCampMoves>(host, &AfterCvTacticalAI_PlotBarbarianCampMoves);CivRegisterReplace<CivHooks::CvTacticalAI_PlotBarbarianCampMoves>(host, &ReplaceCvTacticalAI_PlotBarbarianCampMoves);

Code

2272/// Assign a unit to capture an undefended barbarian camp2273void CvTacticalAI::PlotBarbarianCampMoves()2274{2275	bool bLog = GC.getLogging() && GC.getAILogging();2276	CvTacticalTarget* pTarget;2277	pTarget = GetFirstZoneTarget(AI_TACTICAL_TARGET_BARBARIAN_CAMP);2278	while(pTarget != NULL)2279	{2280		// See what units we have who can reach target this turn2281		CvPlot* pPlot = GC.getMap().plot(pTarget->GetTargetX(), pTarget->GetTargetY());2282		if(FindUnitsWithinStrikingDistance(pPlot, 1, 0, false /* bNoRangedUnits */, false /*bNavalOnly*/, false /*bMustMoveThrough*/, false /*bIncludeBlockedUnits*/, false /*bWillPillage*/, true /*bTargetUndefended*/))2283		{2284			// Queue best one up to capture it2285			ExecuteBarbarianCampMove(pPlot);2286			if(bLog)2287			{2288				CvString strLogString;2289				strLogString.Format("Removing barbarian camp, X: %d, Y: %d", pPlot->getX(), pPlot->getY());2290				LogTacticalMessage(strLogString);2291			}2292			DeleteTemporaryZone(pPlot);2293		}2294		pTarget = GetNextZoneTarget();2295	}2296}

Calls

Called by