Bazaar developer reference

CvTacticalAI::ExecuteMoveOfBlockingUnit(UnitHandle)

Defined in
CvTacticalAI.cpp, line 7518
Class
CvTacticalAI
Hook name
CivHooks::CvTacticalAI_ExecuteMoveOfBlockingUnit

Hooks

static bool BeforeCvTacticalAI_ExecuteMoveOfBlockingUnit(CvTacticalAI* self, UnitHandle pBlockingUnit, bool& result);static void AfterCvTacticalAI_ExecuteMoveOfBlockingUnit(CvTacticalAI* self, UnitHandle pBlockingUnit, bool& result);static bool ReplaceCvTacticalAI_ExecuteMoveOfBlockingUnit(bool (*original)(CvTacticalAI*, UnitHandle), CvTacticalAI* self, UnitHandle pBlockingUnit);CivRegisterBefore<CivHooks::CvTacticalAI_ExecuteMoveOfBlockingUnit>(host, &BeforeCvTacticalAI_ExecuteMoveOfBlockingUnit);CivRegisterAfter<CivHooks::CvTacticalAI_ExecuteMoveOfBlockingUnit>(host, &AfterCvTacticalAI_ExecuteMoveOfBlockingUnit);CivRegisterReplace<CivHooks::CvTacticalAI_ExecuteMoveOfBlockingUnit>(host, &ReplaceCvTacticalAI_ExecuteMoveOfBlockingUnit);

Code

7517/// Find an adjacent hex to move a blocking unit to7518bool CvTacticalAI::ExecuteMoveOfBlockingUnit(UnitHandle pBlockingUnit)7519{7520	if(!pBlockingUnit->canMove() || IsInQueuedAttack(pBlockingUnit.pointer()))7521	{7522		return false;7523	}75247525	CvPlot* pOldPlot = pBlockingUnit->plot();75267527	for(int iI = 0; iI < NUM_DIRECTION_TYPES; iI++)7528	{7529		CvPlot* pPlot = plotDirection(pBlockingUnit->getX(), pBlockingUnit->getY(), ((DirectionTypes)iI));7530		if(pPlot != NULL)7531		{7532			// Don't embark for one of these moves7533			if (!pOldPlot->isWater() && pPlot->isWater() && pBlockingUnit->getDomainType() == DOMAIN_LAND)7534			{7535				continue;7536			}75377538			// Has to be somewhere we can move and be empty of other units/enemy cities7539			if(!pPlot->getVisibleEnemyDefender(m_pPlayer->GetID()) && !pPlot->isEnemyCity(*pBlockingUnit.pointer()) && pBlockingUnit->GeneratePath(pPlot))7540			{7541#if defined(MOD_AI_SMART_V3)7542				ExecuteMoveToPlot(pBlockingUnit, pPlot, MOD_AI_SMART_V3);7543#else7544				ExecuteMoveToPlot(pBlockingUnit, pPlot);7545#endif7546				if(GC.getLogging() && GC.getAILogging())7547				{7548					CvString strTemp, strLogString;7549					strTemp = pBlockingUnit->getUnitInfo().GetDescription();7550					strLogString.Format("Moving blocking %s out of way, Leaving X: %d, Y: %d, Now At X: %d, Y: %d", strTemp.GetCString(), pOldPlot->getX(), pOldPlot->getY(), pBlockingUnit->getX(), pBlockingUnit->getY());7551					LogTacticalMessage(strLogString);7552				}7553				return true;7554			}7555		}7556	}7557	return false;7558}

Calls

Called by