Bazaar developer reference

CvUnitMission::LastMissionPlot(UnitHandle)

Defined in
CvUnitMission.cpp, line 1903
Class
CvUnitMission
Hook name
CivHooks::CvUnitMission_LastMissionPlot
Lua events
GameEvents.CustomMissionTargetPlot

Hooks

static bool BeforeCvUnitMission_LastMissionPlot(UnitHandle hUnit, CvPlot*& result);static void AfterCvUnitMission_LastMissionPlot(UnitHandle hUnit, CvPlot*& result);static CvPlot* ReplaceCvUnitMission_LastMissionPlot(CvPlot* (*original)(UnitHandle), UnitHandle hUnit);CivRegisterBefore<CivHooks::CvUnitMission_LastMissionPlot>(host, &BeforeCvUnitMission_LastMissionPlot);CivRegisterAfter<CivHooks::CvUnitMission_LastMissionPlot>(host, &AfterCvUnitMission_LastMissionPlot);CivRegisterReplace<CivHooks::CvUnitMission_LastMissionPlot>(host, &ReplaceCvUnitMission_LastMissionPlot);

Code

1902/// Where does this mission end?1903CvPlot* CvUnitMission::LastMissionPlot(UnitHandle hUnit)1904{1905	const MissionQueueNode* pMissionNode = TailMissionQueueNode(hUnit->m_missionQueue);19061907	while(pMissionNode != NULL)1908	{1909		if(pMissionNode->eMissionType == CvTypes::getMISSION_MOVE_TO() ||1910		        pMissionNode->eMissionType == CvTypes::getMISSION_ROUTE_TO() ||1911		        pMissionNode->eMissionType == CvTypes::getMISSION_SWAP_UNITS())1912		{1913			return GC.getMap().plot(pMissionNode->iData1, pMissionNode->iData2);1914		}19151916		else if(pMissionNode->eMissionType == CvTypes::getMISSION_MOVE_TO_UNIT())1917		{1918			UnitHandle pTargetUnit = GET_PLAYER((PlayerTypes)pMissionNode->iData1).getUnit(pMissionNode->iData2);1919			if(pTargetUnit)1920			{1921				return pTargetUnit->plot();1922			}1923		}19241925#if defined(MOD_EVENTS_CUSTOM_MISSIONS)1926		else if (MOD_EVENTS_CUSTOM_MISSIONS) {1927			int iPlotIndex = 0;1928			// As iPlotIndex has to be initialised to 0, it is not possible to target plot 01929			if (GAMEEVENTINVOKE_VALUE(iPlotIndex, GAMEEVENT_CustomMissionTargetPlot, hUnit->getOwner(), hUnit->GetID(), pMissionNode->eMissionType, pMissionNode->iData1, pMissionNode->iData2, pMissionNode->iFlags, pMissionNode->iPushTurn) == GAMEEVENTRETURN_VALUE) {1930				if (iPlotIndex > 0 ) {1931					CvPlot* pPlot = GC.getMap().plotByIndex(iPlotIndex);19321933					if (pPlot) {1934						return pPlot;1935					}1936				}1937			}1938		}1939#endif19401941		pMissionNode = PrevMissionQueueNode(hUnit->m_missionQueue, pMissionNode);1942	}19431944	return hUnit->plot();1945}

Calls

Called by