Bazaar developer reference

CvPlot::getTurnDamage(bool, bool, bool, bool) const

Defined in
CvPlot.cpp, line 5872
Class
CvPlot
Hook name
CivHooks::CvPlot_getTurnDamage

Hooks

static bool BeforeCvPlot_getTurnDamage(const CvPlot* self, bool bIgnoreTerrainDamage, bool bIgnoreFeatureDamage, bool bExtraTerrainDamage, bool bExtraFeatureDamage, int& result);static void AfterCvPlot_getTurnDamage(const CvPlot* self, bool bIgnoreTerrainDamage, bool bIgnoreFeatureDamage, bool bExtraTerrainDamage, bool bExtraFeatureDamage, int& result);static int ReplaceCvPlot_getTurnDamage(int (*original)(const CvPlot*, bool, bool, bool, bool), const CvPlot* self, bool bIgnoreTerrainDamage, bool bIgnoreFeatureDamage, bool bExtraTerrainDamage, bool bExtraFeatureDamage);CivRegisterBefore<CivHooks::CvPlot_getTurnDamage>(host, &BeforeCvPlot_getTurnDamage);CivRegisterAfter<CivHooks::CvPlot_getTurnDamage>(host, &AfterCvPlot_getTurnDamage);CivRegisterReplace<CivHooks::CvPlot_getTurnDamage>(host, &ReplaceCvPlot_getTurnDamage);

Code

5872int CvPlot::getTurnDamage(bool bIgnoreTerrainDamage, bool bIgnoreFeatureDamage, bool bExtraTerrainDamage, bool bExtraFeatureDamage) const5873{5874	int damage = 0;58755876	if (MOD_API_PLOT_BASED_DAMAGE) {5877		const TerrainTypes eTerrain = isMountain() ? TERRAIN_MOUNTAIN : getTerrainType();5878		const FeatureTypes eFeature = getFeatureType();58795880		// Make an exception for the volcano5881		if (eFeature != NO_FEATURE) {5882			CvFeatureInfo* pkFeatureInfo = GC.getFeatureInfo(eFeature);5883			if (pkFeatureInfo && strcmp(pkFeatureInfo->GetType(), "FEATURE_VOLCANO") == 0) {5884				bIgnoreTerrainDamage = false;5885				bIgnoreFeatureDamage = false;5886			}5887		}58885889		// Is there an improvement on the plot that overrides terrain/feature damage, eg a tunnel in a mountain, or an igloo on ice5890		const ImprovementTypes eImprovement = getImprovementType();5891		CvImprovementEntry* pkImprovementEntry = (eImprovement != NO_IMPROVEMENT) ? GC.getImprovementInfo(eImprovement) : NULL;58925893		if (eTerrain != NO_TERRAIN) {5894			CvTerrainInfo* pkTerrainInfo = GC.getTerrainInfo(eTerrain);5895			if (pkTerrainInfo) {5896				if (!(pkImprovementEntry && pkImprovementEntry->IsNegatesTerrainDamage())) {5897					if (!bIgnoreTerrainDamage) {5898						damage += pkTerrainInfo->getTurnDamage();5899					}59005901					if (bExtraTerrainDamage) {5902						damage += pkTerrainInfo->getExtraTurnDamage();5903					}5904				}5905			}5906		}59075908		if (eFeature != NO_FEATURE) {5909			CvFeatureInfo* pkFeatureInfo = GC.getFeatureInfo(eFeature);5910			if (pkFeatureInfo) {5911				if (!(pkImprovementEntry && pkImprovementEntry->IsNegatesFeatureDamage())) {5912					if (!bIgnoreFeatureDamage) {5913						damage += pkFeatureInfo->getTurnDamage();5914					}59155916					if (bExtraFeatureDamage) {5917						damage += pkFeatureInfo->getExtraTurnDamage();5918					}5919				}5920			}5921		}5922	}59235924	return damage;5925}

Calls

Called by