Hooks
static bool BeforeCvPlot_setResourceType(CvPlot* self, ResourceTypes eNewValue, int iResourceNum, bool bForMinorCivPlot);static void AfterCvPlot_setResourceType(CvPlot* self, ResourceTypes eNewValue, int iResourceNum, bool bForMinorCivPlot);static void ReplaceCvPlot_setResourceType(void (*original)(CvPlot*, ResourceTypes, int, bool), CvPlot* self, ResourceTypes eNewValue, int iResourceNum, bool bForMinorCivPlot);CivRegisterBefore<CivHooks::CvPlot_setResourceType>(host, &BeforeCvPlot_setResourceType);CivRegisterAfter<CivHooks::CvPlot_setResourceType>(host, &AfterCvPlot_setResourceType);CivRegisterReplace<CivHooks::CvPlot_setResourceType>(host, &ReplaceCvPlot_setResourceType);
Code
6417void CvPlot::setResourceType(ResourceTypes eNewValue, int iResourceNum, bool bForMinorCivPlot)6418{6419#if defined(MOD_BUGFIX_PLOT_VALIDATION)6420 if (eNewValue < NO_RESOURCE) return;6421 if (eNewValue > NO_RESOURCE && GC.getResourceInfo(eNewValue) == NULL) return;6422#endif64236424 if(m_eResourceType != eNewValue)6425 {6426 if (eNewValue != -1)6427 {6428 CvResourceInfo* pkResourceInfo = GC.getResourceInfo(eNewValue);6429 if (pkResourceInfo)6430 {6431 if (pkResourceInfo->isOnlyMinorCivs())6432 {6433 if (!bForMinorCivPlot)6434 {6435 CvAssertMsg(false, "Tried to place a city-state unique luxury when not allowed. PLEASE send Anton your save game, settings, and version!");6436 return;6437 }6438 }6439 }6440 }64416442 if(m_eResourceType != NO_RESOURCE)6443 {6444 if(area())6445 {6446 area()->changeNumResources((ResourceTypes)m_eResourceType, -1);6447 }6448 GC.getMap().changeNumResources((ResourceTypes)m_eResourceType, -1);64496450 if(!isWater())6451 {6452 GC.getMap().changeNumResourcesOnLand((ResourceTypes)m_eResourceType, -1);6453 }64546455 }64566457 m_eResourceType = eNewValue; // !!! Here is where we actually change the value64586459 setNumResource(iResourceNum);64606461 if(m_eResourceType != NO_RESOURCE)6462 {6463 if(area())6464 {6465 area()->changeNumResources((ResourceTypes)m_eResourceType, 1);6466 }6467 GC.getMap().changeNumResources((ResourceTypes)m_eResourceType, 1);64686469 if(!isWater())6470 {6471 GC.getMap().changeNumResourcesOnLand((ResourceTypes)m_eResourceType, 1);6472 }6473 }64746475 updateYield();64766477 if(GC.IsGraphicsInitialized())6478 {6479 setLayoutDirty(true);6480 }6481 }6482}