Bazaar developer reference

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

Called by