Bazaar developer reference

CvTacticalAI::PlotBarbarianPlunderTradeUnitMove(DomainTypes)

Defined in
CvTacticalAI.cpp, line 2634
Class
CvTacticalAI
Hook name
CivHooks::CvTacticalAI_PlotBarbarianPlunderTradeUnitMove

Hooks

static bool BeforeCvTacticalAI_PlotBarbarianPlunderTradeUnitMove(CvTacticalAI* self, DomainTypes eDomain);static void AfterCvTacticalAI_PlotBarbarianPlunderTradeUnitMove(CvTacticalAI* self, DomainTypes eDomain);static void ReplaceCvTacticalAI_PlotBarbarianPlunderTradeUnitMove(void (*original)(CvTacticalAI*, DomainTypes), CvTacticalAI* self, DomainTypes eDomain);CivRegisterBefore<CivHooks::CvTacticalAI_PlotBarbarianPlunderTradeUnitMove>(host, &BeforeCvTacticalAI_PlotBarbarianPlunderTradeUnitMove);CivRegisterAfter<CivHooks::CvTacticalAI_PlotBarbarianPlunderTradeUnitMove>(host, &AfterCvTacticalAI_PlotBarbarianPlunderTradeUnitMove);CivRegisterReplace<CivHooks::CvTacticalAI_PlotBarbarianPlunderTradeUnitMove>(host, &ReplaceCvTacticalAI_PlotBarbarianPlunderTradeUnitMove);

Code

2633/// Plunder trade routes2634void CvTacticalAI::PlotBarbarianPlunderTradeUnitMove(DomainTypes eDomain)2635{2636	AITacticalTargetType eTargetType = AI_TACTICAL_TARGET_NONE;2637	bool bNavalOnly = false;2638	if (eDomain == DOMAIN_LAND)2639	{2640		eTargetType = AI_TACTICAL_TARGET_TRADE_UNIT_LAND;2641	}2642	else if (eDomain == DOMAIN_SEA)2643	{2644		eTargetType = AI_TACTICAL_TARGET_TRADE_UNIT_SEA;2645		bNavalOnly = true;2646	}26472648	CvAssertMsg(eTargetType != AI_TACTICAL_TARGET_NONE, "Undefined domain type for target");2649	if (eTargetType == AI_TACTICAL_TARGET_NONE)2650	{2651		return;2652	}26532654	CvTacticalTarget* pTarget;2655	pTarget = GetFirstZoneTarget(eTargetType);2656	while(pTarget != NULL)2657	{2658		// See what units we have who can reach target this turn2659		CvPlot* pPlot = GC.getMap().plot(pTarget->GetTargetX(), pTarget->GetTargetY());26602661		if (FindUnitsWithinStrikingDistance(pPlot, 0, 0, false /* bNoRangedUnits */, bNavalOnly, true /*bMustMoveThrough*/, false /*bIncludeBlockedUnits*/, false /*bWillPillage*/))2662		{2663			// Queue best one up to capture it2664			ExecutePlunderTradeUnit(pPlot);26652666			if(GC.getLogging() && GC.getAILogging())2667			{2668				CvString strLogString;2669				strLogString.Format("Plundering trade unit, X: %d, Y: %d", pTarget->GetTargetX(), pTarget->GetTargetY());2670				LogTacticalMessage(strLogString);2671			}2672		}26732674		pTarget = GetNextZoneTarget();2675	}2676}

Calls

Called by