Bazaar developer reference

CvTacticalAI::FindBarbarianGankTradeRouteTarget(UnitHandle)

Defined in
CvTacticalAI.cpp, line 10289
Class
CvTacticalAI
Hook name
CivHooks::CvTacticalAI_FindBarbarianGankTradeRouteTarget

Hooks

static bool BeforeCvTacticalAI_FindBarbarianGankTradeRouteTarget(CvTacticalAI* self, UnitHandle pUnit, CvPlot*& result);static void AfterCvTacticalAI_FindBarbarianGankTradeRouteTarget(CvTacticalAI* self, UnitHandle pUnit, CvPlot*& result);static CvPlot* ReplaceCvTacticalAI_FindBarbarianGankTradeRouteTarget(CvPlot* (*original)(CvTacticalAI*, UnitHandle), CvTacticalAI* self, UnitHandle pUnit);CivRegisterBefore<CivHooks::CvTacticalAI_FindBarbarianGankTradeRouteTarget>(host, &BeforeCvTacticalAI_FindBarbarianGankTradeRouteTarget);CivRegisterAfter<CivHooks::CvTacticalAI_FindBarbarianGankTradeRouteTarget>(host, &AfterCvTacticalAI_FindBarbarianGankTradeRouteTarget);CivRegisterReplace<CivHooks::CvTacticalAI_FindBarbarianGankTradeRouteTarget>(host, &ReplaceCvTacticalAI_FindBarbarianGankTradeRouteTarget);

Code

10288/// Scan nearby tiles for a trade route to sit and gank from10289CvPlot* CvTacticalAI::FindBarbarianGankTradeRouteTarget(UnitHandle pUnit)10290{10291	CvPlot* pBestMovePlot = NULL;10292	int iBestValue;10293	int iValue;1029410295	// Now looking for BEST score10296	iBestValue = 0;10297	int iMovementRange = pUnit->movesLeft() / GC.getMOVE_DENOMINATOR();10298	for(int iX = -iMovementRange; iX <= iMovementRange; iX++)10299	{10300		for(int iY = -iMovementRange; iY <= iMovementRange; iY++)10301		{10302			CvPlot* pPlot = plotXYWithRangeCheck(pUnit->getX(), pUnit->getY(), iX, iY, iMovementRange);10303			if(!pPlot)10304			{10305				continue;10306			}1030710308			if(pUnit->atPlot(*pPlot))10309			{10310				continue;10311			}1031210313			if(!pPlot->isRevealed(pUnit->getTeam()))10314			{10315				continue;10316			}1031710318			if(pPlot->area() != pUnit->area())10319			{10320				continue;10321			}1032210323			if(!CanReachInXTurns(pUnit, pPlot, 1))10324			{10325				continue;10326			}1032710328			iValue = GC.getGame().GetGameTrade()->GetNumTradeRoutesInPlot(pPlot);1032910330			if(iValue > iBestValue)10331			{10332				pBestMovePlot = pPlot;10333				iBestValue = iValue;10334			}10335		}10336	}10337	return pBestMovePlot;10338}

Calls

Called by