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}