I think a good choice would be The Rook (sp?). I don't know how he did it exactly, but he got an army of cannons and Reds in that deity Elizabeth game by 1020 and that was damn impressive.
int CvTeamAI::AI_noWarAttitudeProb(AttitudeTypes eAttitude) const
{
int iProb;
int iCount;
int iI;
iProb = 0;
iCount = 0;
for (iI = 0; iI < MAX_PLAYERS; iI++)
{
if (GET_PLAYER((PlayerTypes)iI).isAlive())
{
if (GET_PLAYER((PlayerTypes)iI).getTeam() == getID())
{
iProb += GC.getLeaderHeadInfo(GET_PLAYER((PlayerTypes)iI).getPersonalityType()).getNoWarAttitudeProb(eAttitude);
iCount++;
}
}
}
if (iCount > 1)
{
iProb /= iCount;
}
return iProb;
}
AttitudeTypes CvTeamAI::AI_getAttitude(TeamTypes eTeam, bool bForced) const
{
int iAttitude;
int iCount;
int iI, iJ;
FAssertMsg(eTeam != getID(), "shouldn't call this function on ourselves");
iAttitude = 0;
iCount = 0;
for (iI = 0; iI < MAX_PLAYERS; iI++)
{
if (GET_PLAYER((PlayerTypes)iI).isAlive())
{
if (GET_PLAYER((PlayerTypes)iI).getTeam() == getID())
{
for (iJ = 0; iJ < MAX_PLAYERS; iJ++)
{
if (GET_PLAYER((PlayerTypes)iJ).isAlive() && iI != iJ)
{
TeamTypes eTeamLoop = GET_PLAYER((PlayerTypes)iJ).getTeam();
if (eTeamLoop == eTeam || GET_TEAM(eTeamLoop).isVassal(eTeam) || GET_TEAM(eTeam).isVassal(eTeamLoop))
{
iAttitude += GET_PLAYER((PlayerTypes)iI).AI_getAttitude((PlayerTypes)iJ, bForced);
iCount++;
}
}
}
}
}
}
if (iCount > 0)
{
return ((AttitudeTypes)(iAttitude / iCount));
}
return ATTITUDE_CAUTIOUS;
}
>>1. How does WFYABTA work with teams of AIs?
>>4. Assuming that teams automatically share techs, could this potentially help with the "we are not ready to trade..." mechanic?
Most diplo deals (tech. including) are teams based. Actually most of the stuff is team based but since the usual case (regular games) is one civ = one team it doesn't matter.
WFYABTA is per team, not single civ.
>>2. How does WHEOOH work? Does the team go into WHEOOH, or are both AIs independent with the peaceful member presumably dragged into war?
Again it's solely team based action.
>>5. How do war bribes work? If there is a backstabber in a team, could you potentially instigate a bribe through them and force their partner to follow?
The defined values are the mean of for all players.
The attitude is similiar, with one bad part of us, it's rounded down. I.e. one at pleased, one at cautious yields "cautious".
if (eAttitude < ATTITUDE_FRIENDLY)
{
if ((GC.getGameINLINE().getTeamRank(getID()) < (GC.getGameINLINE().countCivTeamsEverAlive() / 2)) ||
(GC.getGameINLINE().getTeamRank(eTeam) < (GC.getGameINLINE().countCivTeamsEverAlive() / 2)))
{
iNoTechTradeThreshold = AI_noTechTradeThreshold();//look before it's the mean
iNoTechTradeThreshold *= std::max(0, (GC.getHandicapInfo(GET_TEAM(eTeam).getHandicapType()).getNoTechTradeModifier() + 100));
iNoTechTradeThreshold /= 100;
if (AI_getMemoryCount(eTeam, MEMORY_RECEIVED_TECH_FROM_ANY) > iNoTechTradeThreshold)
{
return DENIAL_TECH_WHORE;
}
}
.........
}
int CvTeamAI::AI_noTechTradeThreshold() const
{
int iRand;
int iCount;
int iI;
iRand = 0;
iCount = 0;
for (iI = 0; iI < MAX_PLAYERS; iI++)
{
if (GET_PLAYER((PlayerTypes)iI).isAlive())
{
if (GET_PLAYER((PlayerTypes)iI).getTeam() == getID())
{
iRand += GC.getLeaderHeadInfo(GET_PLAYER((PlayerTypes)iI).getPersonalityType()).getNoTechTradeThreshold();
iCount++;
}
}
}
if (iCount > 0)
{
iRand /= iCount;
}
return iRand;
}
int CvCityAI::AI_buildUnitProb()
{
int iProb;
iProb = (GC.getLeaderHeadInfo(getPersonalityType()).getBuildUnitProb() + AI_experienceWeight());
if (GET_PLAYER(getOwnerINLINE()).AI_isFinancialTrouble())
{
iProb /= 2;
}
return iProb;
}
Duckweed, does everyone get 50 turns for the first save before we decide who's to use for the SG?