Code:
int CvPlayerAI::AI_getAttitudeVal(PlayerTypes ePlayer, bool bForced)
{
PROFILE_FUNC();
FAssertMsg(ePlayer != getID(), "shouldn't call this function on ourselves");
if (bForced)
{
if (getTeam() == GET_PLAYER(ePlayer).getTeam())
{
return 100;
}
}
int iAttitude = GC.getLeaderHeadInfo(getPersonalityType()).getBaseAttitude();
if (GET_PLAYER(ePlayer).isNative())
{
iAttitude += GC.getLeaderHeadInfo(getPersonalityType()).getNativeAttitude();
}
iAttitude += GC.getHandicapInfo(GET_PLAYER(ePlayer).getHandicapType()).getAttitudeChange();
iAttitude -= std::max(0, (GET_TEAM(GET_PLAYER(ePlayer).getTeam()).getNumMembers() - GET_TEAM(getTeam()).getNumMembers()));
if (GET_TEAM(GET_PLAYER(ePlayer).getTeam()).AI_getWarSuccess(getTeam()) > GET_TEAM(getTeam()).AI_getWarSuccess(GET_PLAYER(ePlayer).getTeam()))
{
iAttitude += GC.getLeaderHeadInfo(getPersonalityType()).getLostWarAttitudeChange();
}
iAttitude += AI_getCloseBordersAttitude(ePlayer);
iAttitude += AI_getStolenPlotsAttitude(ePlayer);
iAttitude += AI_getAlarmAttitude(ePlayer);
iAttitude += AI_getRebelAttitude(ePlayer);
iAttitude += AI_getWarAttitude(ePlayer);
iAttitude += AI_getPeaceAttitude(ePlayer);
iAttitude += AI_getOpenBordersAttitude(ePlayer);
iAttitude += AI_getDefensivePactAttitude(ePlayer);
iAttitude += AI_getRivalDefensivePactAttitude(ePlayer);
iAttitude += AI_getShareWarAttitude(ePlayer);
iAttitude += AI_getTradeAttitude(ePlayer);
iAttitude += AI_getRivalTradeAttitude(ePlayer);
for (int iI = 0; iI < NUM_MEMORY_TYPES; iI++)
{
iAttitude += AI_getMemoryAttitude(ePlayer, ((MemoryTypes)iI));
}
iAttitude += AI_getAttitudeExtra(ePlayer);
return range(iAttitude, -100, 100);
}