Bazaar developer reference

CvAIOperation::UnitWasRemoved(int, int)

Defined in
CvAIOperation.cpp, line 967
Class
CvAIOperation
Hook name
CivHooks::CvAIOperation_UnitWasRemoved
Overridden by
CvAIEscortedOperation::UnitWasRemoved(int, int), CvAINavalEscortedOperation::UnitWasRemoved(int, int)

Hooks

static bool BeforeCvAIOperation_UnitWasRemoved(CvAIOperation* self, int iArmyID, int iSlotID);static void AfterCvAIOperation_UnitWasRemoved(CvAIOperation* self, int iArmyID, int iSlotID);static void ReplaceCvAIOperation_UnitWasRemoved(void (*original)(CvAIOperation*, int, int), CvAIOperation* self, int iArmyID, int iSlotID);CivRegisterBefore<CivHooks::CvAIOperation_UnitWasRemoved>(host, &BeforeCvAIOperation_UnitWasRemoved);CivRegisterAfter<CivHooks::CvAIOperation_UnitWasRemoved>(host, &AfterCvAIOperation_UnitWasRemoved);CivRegisterReplace<CivHooks::CvAIOperation_UnitWasRemoved>(host, &ReplaceCvAIOperation_UnitWasRemoved);

Code

966/// Handles notification that a unit in this operation was lost. Can be overridden if needed967void CvAIOperation::UnitWasRemoved(int iArmyID, int iSlotID)968{969	// For now, response is based on phase of operation970	switch(m_eCurrentState)971	{972	case AI_OPERATION_STATE_ABORTED:973	case AI_OPERATION_STATE_SUCCESSFUL_FINISH:974		break;975976	case AI_OPERATION_STATE_RECRUITING_UNITS:977	{978		// If recruiting units, read this unit to the list of what we need979		OperationSlot slotToFill;980981		slotToFill.m_iOperationID = m_iID;982		slotToFill.m_iArmyID = iArmyID;983		slotToFill.m_iSlotID = iSlotID;984		m_viListOfUnitsWeStillNeedToBuild.push_back(slotToFill);985	}986	break;987988	case AI_OPERATION_STATE_GATHERING_FORCES:989	case AI_OPERATION_STATE_MOVING_TO_TARGET:990	case AI_OPERATION_STATE_AT_TARGET:991	{992		// If down below half strength, abort993		CvArmyAI* pThisArmy = GET_PLAYER(m_eOwner).getArmyAI(iArmyID);994		CvMultiUnitFormationInfo* pkFormation = GC.getMultiUnitFormationInfo(pThisArmy->GetFormationIndex());995		if(pkFormation)996		{997			if(pThisArmy->GetNumSlotsFilled() <=0 ||998			        pThisArmy->GetNumSlotsFilled() < pkFormation->getNumFormationSlotEntries() / 2)999			{1000				// Abort1001				m_eCurrentState = AI_OPERATION_STATE_ABORTED;1002				m_eAbortReason = AI_ABORT_HALF_STRENGTH;1003			}1004		}1005	}1006	break;1007	};1008}

Calls

Called by