Hooks
static bool BeforeFindValidDestinationPathValid(CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder, int& result);static void AfterFindValidDestinationPathValid(CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder, int& result);static int ReplaceFindValidDestinationPathValid(int (*original)(CvAStarNode*, CvAStarNode*, int, const void*, CvAStar*), CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder);CivRegisterBefore<CivHooks::FindValidDestinationPathValid>(host, &BeforeFindValidDestinationPathValid);CivRegisterAfter<CivHooks::FindValidDestinationPathValid>(host, &AfterFindValidDestinationPathValid);CivRegisterReplace<CivHooks::FindValidDestinationPathValid>(host, &ReplaceFindValidDestinationPathValid);
Code
3764int FindValidDestinationPathValid(CvAStarNode* parent, CvAStarNode* node, int data, const void* pointer, CvAStar* finder)3765{3766 CvUnit* pUnit = ((CvUnit*)pointer);3767 CvPlot* pToPlot = GC.getMap().plotUnchecked(node->m_iX, node->m_iY);37683769 if(!pUnit->canEnterTerrain(*pToPlot, CvUnit::MOVEFLAG_PRETEND_CORRECT_EMBARK_STATE))3770 {3771 return FALSE;3772 }37733774 if(!PathValid(parent,node,data,pointer,finder))3775 {3776 return FALSE;3777 }37783779 if(node->m_iData2 > 3)3780 {3781 return FALSE;3782 }37833784 return TRUE;3785}