CvPlot::defenseModifier(TeamTypes, bool, bool) const
- Defined in
- CvPlot.cpp, line 3068
- Class
- CvPlot
- Hook name
CivHooks::CvPlot_defenseModifier
Hooks
static bool BeforeCvPlot_defenseModifier(const CvPlot* self, TeamTypes eDefender, bool arg1, bool bHelp, int& result);static void AfterCvPlot_defenseModifier(const CvPlot* self, TeamTypes eDefender, bool arg1, bool bHelp, int& result);static int ReplaceCvPlot_defenseModifier(int (*original)(const CvPlot*, TeamTypes, bool, bool), const CvPlot* self, TeamTypes eDefender, bool arg1, bool bHelp);CivRegisterBefore<CivHooks::CvPlot_defenseModifier>(host, &BeforeCvPlot_defenseModifier);CivRegisterAfter<CivHooks::CvPlot_defenseModifier>(host, &AfterCvPlot_defenseModifier);CivRegisterReplace<CivHooks::CvPlot_defenseModifier>(host, &ReplaceCvPlot_defenseModifier);
Code
3068int CvPlot::defenseModifier(TeamTypes eDefender, bool, bool bHelp) const3069{3070 CvCity* pCity;3071 ImprovementTypes eImprovement;3072 int iModifier;30733074 CvAssertMsg(getTerrainType() != NO_TERRAIN, "TerrainType is not assigned a valid value");30753076 // Can only get Defensive Bonus from ONE thing - they don't stack30773078 // Hill (and mountain)3079 if(isHills() || isMountain())3080 {3081 iModifier = /*25*/ GC.getHILLS_EXTRA_DEFENSE();3082 }3083 // Feature3084 else if(getFeatureType() != NO_FEATURE)3085 {3086 iModifier = GC.getFeatureInfo(getFeatureType())->getDefenseModifier();3087 }3088 // Terrain3089 else3090 {3091 iModifier = GC.getTerrainInfo(getTerrainType())->getDefenseModifier();30923093 // Flat land gives defensive PENALTY3094 if(!isWater())3095 {3096 iModifier += /*-25*/ GC.getFLAT_LAND_EXTRA_DEFENSE();3097 }3098 }30993100 if(bHelp)3101 {3102 eImprovement = getRevealedImprovementType(GC.getGame().getActiveTeam());3103 }3104 else3105 {3106 eImprovement = getImprovementType();3107 }31083109 if(eImprovement != NO_IMPROVEMENT && !IsImprovementPillaged())3110 {3111 if(eDefender != NO_TEAM && (getTeam() == NO_TEAM || GET_TEAM(eDefender).isFriendlyTerritory(getTeam())))3112 {3113 CvImprovementEntry* pkImprovement = GC.getImprovementInfo(eImprovement);3114 if (pkImprovement)3115 iModifier += pkImprovement->GetDefenseModifier();3116 }3117 }31183119 if(!bHelp)3120 {3121 pCity = getPlotCity();31223123 if(pCity != NULL)3124 {3125 }3126 }31273128 return iModifier;3129}
Calls
- CvFeatureInfo::getDefenseModifier() const
- CvGame::getActiveTeam()
- CvGlobals::getFeatureInfo(FeatureTypes)
- CvGlobals::getFLAT_LAND_EXTRA_DEFENSE()
- CvGlobals::getGame()
- CvGlobals::getHILLS_EXTRA_DEFENSE()
- CvGlobals::getImprovementInfo(ImprovementTypes)
- CvGlobals::getTerrainInfo(TerrainTypes)
- CvImprovementEntry::GetDefenseModifier() const
- CvPlot::getFeatureType() const
- CvPlot::getImprovementType() const
- CvPlot::getPlotCity() const
- CvPlot::getRevealedImprovementType(TeamTypes) const
- CvPlot::getTeam() const
- CvPlot::getTerrainType() const
- CvPlot::isHills() const
- CvPlot::IsImprovementPillaged() const
- CvPlot::isMountain() const
- CvPlot::isWater() const
- CvTeam::getTeam(TeamTypes)
- CvTeam::isFriendlyTerritory(TeamTypes) const
- CvTerrainInfo::getDefenseModifier() const
Called by
- IgnoreUnitsCost(CvAStarNode *, CvAStarNode *, int, const void *, CvAStar *)
- PathCost(CvAStarNode *, CvAStarNode *, int, const void *, CvAStar *)
- CvHomelandAI::FindHomelandTargets()
- CvPlayer::DoUprising()
- CvTacticalAI::FindTacticalTargets()
- CvTacticalAnalysisMap::PopulateCell(int, CvPlot *)
- CvUnit::GetMaxDefenseStrength(const CvPlot *, const CvUnit *, bool) const
- CvUnit::GetMaxRangedCombatStrength(const CvUnit *, const CvCity *, bool, bool) const
- CvLuaPlot::lDefenseModifier(lua_State *)