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
- CustomMods::isAPI_PLOT_BASED_DAMAGE()
- CvBaseInfo::GetType() const
- CvFeatureInfo::getExtraTurnDamage() const
- CvFeatureInfo::getTurnDamage() const
- CvGlobals::getFeatureInfo(FeatureTypes)
- CvGlobals::getImprovementInfo(ImprovementTypes)
- CvGlobals::getTerrainInfo(TerrainTypes)
- CvImprovementEntry::IsNegatesFeatureDamage() const
- CvImprovementEntry::IsNegatesTerrainDamage() const
- CvPlot::getFeatureType() const
- CvPlot::getImprovementType() const
- CvPlot::getTerrainType() const
- CvPlot::isMountain() const
- CvTerrainInfo::getExtraTurnDamage() const
- CvTerrainInfo::getTurnDamage() const
strcmp