CvDiplomacyAI::GetWarScore(PlayerTypes)
- Defined in
- CvDiplomacyAI.cpp, line 6224
- Class
- CvDiplomacyAI
- Hook name
CivHooks::CvDiplomacyAI_GetWarScore
Hooks
static bool BeforeCvDiplomacyAI_GetWarScore(CvDiplomacyAI* self, PlayerTypes ePlayer, int& result);static void AfterCvDiplomacyAI_GetWarScore(CvDiplomacyAI* self, PlayerTypes ePlayer, int& result);static int ReplaceCvDiplomacyAI_GetWarScore(int (*original)(CvDiplomacyAI*, PlayerTypes), CvDiplomacyAI* self, PlayerTypes ePlayer);CivRegisterBefore<CivHooks::CvDiplomacyAI_GetWarScore>(host, &BeforeCvDiplomacyAI_GetWarScore);CivRegisterAfter<CivHooks::CvDiplomacyAI_GetWarScore>(host, &AfterCvDiplomacyAI_GetWarScore);CivRegisterReplace<CivHooks::CvDiplomacyAI_GetWarScore>(host, &ReplaceCvDiplomacyAI_GetWarScore);
Code
6223/// What is the integer value of how well we think the war with ePlayer is going?6224int CvDiplomacyAI::GetWarScore(PlayerTypes ePlayer)6225{6226 CvAssertMsg(ePlayer >= 0, "DIPLOMACY_AI: Invalid Player Index. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");6227 CvAssertMsg(ePlayer < MAX_CIV_PLAYERS, "DIPLOMACY_AI: Invalid Player Index. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");62286229 int iWarScore = 0;62306231 // Military Strength compared to us6232 switch(GetPlayerMilitaryStrengthComparedToUs(ePlayer))6233 {6234 case STRENGTH_PATHETIC:6235 iWarScore += /*100*/ GC.getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_PATHETIC();6236 break;6237 case STRENGTH_WEAK:6238 iWarScore += /*60*/ GC.getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_WEAK();6239 break;6240 case STRENGTH_POOR:6241 iWarScore += /*25*/ GC.getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_POOR();6242 break;6243 case STRENGTH_AVERAGE:6244 iWarScore += /*0*/ GC.getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_AVERAGE();6245 break;6246 case STRENGTH_STRONG:6247 iWarScore += /*-25*/ GC.getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_STRONG();6248 break;6249 case STRENGTH_POWERFUL:6250 iWarScore += /*-60*/ GC.getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_POWERFUL();6251 break;6252 case STRENGTH_IMMENSE:6253 iWarScore += /*-100*/ GC.getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_IMMENSE();6254 break;6255 }62566257 // Economic Strength compared to us6258 switch(GetPlayerEconomicStrengthComparedToUs(ePlayer))6259 {6260 case STRENGTH_PATHETIC:6261 iWarScore += /*50*/ GC.getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_PATHETIC();6262 break;6263 case STRENGTH_WEAK:6264 iWarScore += /*30*/ GC.getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_WEAK();6265 break;6266 case STRENGTH_POOR:6267 iWarScore += /*12*/ GC.getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_POOR();6268 break;6269 case STRENGTH_AVERAGE:6270 iWarScore += /*0*/ GC.getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_AVERAGE();6271 break;6272 case STRENGTH_STRONG:6273 iWarScore += /*-12*/ GC.getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_STRONG();6274 break;6275 case STRENGTH_POWERFUL:6276 iWarScore += /*-30*/ GC.getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_POWERFUL();6277 break;6278 case STRENGTH_IMMENSE:6279 iWarScore += /*-50*/ GC.getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_IMMENSE();6280 break;6281 }62826283 // War Damage inflicted on US6284 switch(GetWarDamageLevel(ePlayer))6285 {6286 case WAR_DAMAGE_LEVEL_NONE:6287 iWarScore += /*0*/ GC.getWAR_PROJECTION_WAR_DAMAGE_US_NONE();6288 // If they're aggressively expanding, it makes them a better target to go after, If they've hurt us, this no longer applies6289 if(IsPlayerRecklessExpander(ePlayer))6290 {6291 iWarScore += /*25*/ GC.getWAR_PROJECTION_RECKLESS_EXPANDER();6292 }6293 break;6294 case WAR_DAMAGE_LEVEL_MINOR:6295 iWarScore += /*-10*/ GC.getWAR_PROJECTION_WAR_DAMAGE_US_MINOR();6296 break;6297 case WAR_DAMAGE_LEVEL_MAJOR:6298 iWarScore += /*-20*/ GC.getWAR_PROJECTION_WAR_DAMAGE_US_MAJOR();6299 break;6300 case WAR_DAMAGE_LEVEL_SERIOUS:6301 iWarScore += /*-30*/ GC.getWAR_PROJECTION_WAR_DAMAGE_US_SERIOUS();6302 break;6303 case WAR_DAMAGE_LEVEL_CRIPPLED:6304 iWarScore += /*-40*/ GC.getWAR_PROJECTION_WAR_DAMAGE_US_CRIPPLED();6305 break;6306 }63076308 // War Damage inflicted on THEM (less than what's been inflicted on us for the same amount of damage)6309 switch(GetOtherPlayerWarDamageLevel(ePlayer, GetPlayer()->GetID()))6310 {6311 case WAR_DAMAGE_LEVEL_NONE:6312 iWarScore += /*0*/ GC.getWAR_PROJECTION_WAR_DAMAGE_THEM_NONE();6313 break;6314 case WAR_DAMAGE_LEVEL_MINOR:6315 iWarScore += /*5*/ GC.getWAR_PROJECTION_WAR_DAMAGE_THEM_MINOR();6316 break;6317 case WAR_DAMAGE_LEVEL_MAJOR:6318 iWarScore += /*10*/ GC.getWAR_PROJECTION_WAR_DAMAGE_THEM_MAJOR();6319 break;6320 case WAR_DAMAGE_LEVEL_SERIOUS:6321 iWarScore += /*15*/ GC.getWAR_PROJECTION_WAR_DAMAGE_THEM_SERIOUS();6322 break;6323 case WAR_DAMAGE_LEVEL_CRIPPLED:6324 iWarScore += /*20*/ GC.getWAR_PROJECTION_WAR_DAMAGE_THEM_CRIPPLED();6325 break;6326 }63276328 // the intangibles - our score vs their score6329 int iOurScore = GetPlayer()->GetScore();6330 iOurScore = iOurScore > 100 ? iOurScore : 100;6331 int iTheirScore = GET_PLAYER(ePlayer).GetScore();6332 iTheirScore = iTheirScore > 100 ? iTheirScore : 100;6333 int iRatio = ((iOurScore-iTheirScore) * 100) / (iOurScore>iTheirScore?iTheirScore:iOurScore);6334 iRatio = iRatio >= -50 ? (iRatio <= 50 ? iRatio : 50) : -50;6335 iWarScore += iRatio;63366337 // Decrease war score if we've been fighting for a long time - after 60 turns the effect is -20 on the WarScore6338 int iTurnsAtWar = GetPlayerNumTurnsAtWar(ePlayer);6339 iTurnsAtWar /= 3;6340 iWarScore -= min(iTurnsAtWar, /*20*/ GC.getWAR_PROJECTION_WAR_DURATION_SCORE_CAP());63416342 return iWarScore;6343}
Calls
- CvDiplomacyAI::GetOtherPlayerWarDamageLevel(PlayerTypes, PlayerTypes) const
- CvDiplomacyAI::GetPlayer()
- CvDiplomacyAI::GetPlayerEconomicStrengthComparedToUs(PlayerTypes) const
- CvDiplomacyAI::GetPlayerMilitaryStrengthComparedToUs(PlayerTypes) const
- CvDiplomacyAI::GetPlayerNumTurnsAtWar(PlayerTypes) const
- CvDiplomacyAI::GetWarDamageLevel(PlayerTypes) const
- CvDiplomacyAI::IsPlayerRecklessExpander(PlayerTypes)
- CvGlobals::getWAR_PROJECTION_RECKLESS_EXPANDER()
- CvGlobals::getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_AVERAGE()
- CvGlobals::getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_IMMENSE()
- CvGlobals::getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_PATHETIC()
- CvGlobals::getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_POOR()
- CvGlobals::getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_POWERFUL()
- CvGlobals::getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_STRONG()
- CvGlobals::getWAR_PROJECTION_THEIR_ECONOMIC_STRENGTH_WEAK()
- CvGlobals::getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_AVERAGE()
- CvGlobals::getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_IMMENSE()
- CvGlobals::getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_PATHETIC()
- CvGlobals::getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_POOR()
- CvGlobals::getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_POWERFUL()
- CvGlobals::getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_STRONG()
- CvGlobals::getWAR_PROJECTION_THEIR_MILITARY_STRENGTH_WEAK()
- CvGlobals::getWAR_PROJECTION_WAR_DAMAGE_THEM_CRIPPLED()
- CvGlobals::getWAR_PROJECTION_WAR_DAMAGE_THEM_MAJOR()
- CvGlobals::getWAR_PROJECTION_WAR_DAMAGE_THEM_MINOR()
- CvGlobals::getWAR_PROJECTION_WAR_DAMAGE_THEM_NONE()
- CvGlobals::getWAR_PROJECTION_WAR_DAMAGE_THEM_SERIOUS()
- CvGlobals::getWAR_PROJECTION_WAR_DAMAGE_US_CRIPPLED()
- CvGlobals::getWAR_PROJECTION_WAR_DAMAGE_US_MAJOR()
- CvGlobals::getWAR_PROJECTION_WAR_DAMAGE_US_MINOR()
- CvGlobals::getWAR_PROJECTION_WAR_DAMAGE_US_NONE()
- CvGlobals::getWAR_PROJECTION_WAR_DAMAGE_US_SERIOUS()
- CvGlobals::getWAR_PROJECTION_WAR_DURATION_SCORE_CAP()
- CvPlayer::GetID() const
- CvPlayer::GetScore(bool, bool) const
- CvPlayerAI::getPlayer(PlayerTypes)
std::min