Hooks
static bool BeforeCvSiteEvaluatorForSettler_PlotFoundValue(CvSiteEvaluatorForSettler* self, CvPlot* pPlot, CvPlayer* pPlayer, YieldTypes eYield, bool bCoastOnly, int& result);static void AfterCvSiteEvaluatorForSettler_PlotFoundValue(CvSiteEvaluatorForSettler* self, CvPlot* pPlot, CvPlayer* pPlayer, YieldTypes eYield, bool bCoastOnly, int& result);static int ReplaceCvSiteEvaluatorForSettler_PlotFoundValue(int (*original)(CvSiteEvaluatorForSettler*, CvPlot*, CvPlayer*, YieldTypes, bool), CvSiteEvaluatorForSettler* self, CvPlot* pPlot, CvPlayer* pPlayer, YieldTypes eYield, bool bCoastOnly);CivRegisterBefore<CivHooks::CvSiteEvaluatorForSettler_PlotFoundValue>(host, &BeforeCvSiteEvaluatorForSettler_PlotFoundValue);CivRegisterAfter<CivHooks::CvSiteEvaluatorForSettler_PlotFoundValue>(host, &AfterCvSiteEvaluatorForSettler_PlotFoundValue);CivRegisterReplace<CivHooks::CvSiteEvaluatorForSettler_PlotFoundValue>(host, &ReplaceCvSiteEvaluatorForSettler_PlotFoundValue);
Code
1104/// Value of this site for a settler1105int CvSiteEvaluatorForSettler::PlotFoundValue(CvPlot* pPlot, CvPlayer* pPlayer, YieldTypes eYield, bool bCoastOnly)1106{1107 CvAssert(pPlot);1108 if(!pPlot) return 0;11091110 if(!CanFound(pPlot, pPlayer, true))1111 {1112 return 0;1113 }11141115 // Is there any reason this site doesn't work for a settler?1116 //1117 // First must be on coast if settling a new continent1118 bool bIsCoastal = pPlot->isCoastalLand(GC.getMIN_WATER_SIZE_FOR_OCEAN());1119 CvArea* pArea = pPlot->area();1120 CvAssert(pArea);1121 if(!pArea) return 0;1122 int iNumAreaCities = pArea->getCitiesPerPlayer(pPlayer->GetID());1123 if(bCoastOnly && !bIsCoastal && iNumAreaCities == 0)1124 {1125 return 0;1126 }11271128 // Seems okay for a settler, use base class to determine exact value1129 else1130 {1131 // if the civ gets a benefit from settling on a new continent (ie: Indonesia)1132 // double the fertility of that plot1133 int iLuxuryModifier = 0;1134 if (pPlayer->GetPlayerTraits()->WillGetUniqueLuxury(pArea))1135 {1136 iLuxuryModifier = CvCitySiteEvaluator::PlotFoundValue(pPlot, pPlayer, eYield) * 2;1137 return iLuxuryModifier;1138 }1139 else1140 {1141 return CvCitySiteEvaluator::PlotFoundValue(pPlot, pPlayer, eYield);1142 }1143 }1144}