OK, I looked it up in the SDK:
Code:
DenialTypes CvTeamAI::AI_techTrade(TechTypes eTech, TeamTypes eTeam)
{
...
if (eAttitude < ATTITUDE_FRIENDLY)
{
if ((GC.getGameINLINE().getTeamRank(getID()) < (GC.getGameINLINE().countCivTeamsEverAlive() / 2)) ||
(GC.getGameINLINE().getTeamRank(eTeam) < (GC.getGameINLINE().countCivTeamsEverAlive() / 2)))
{
iNoTechTradeThreshold = AI_noTechTradeThreshold();
iNoTechTradeThreshold *= 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()
{
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;
}
This means that you'll never get WFYABTA with a friendly civ. Otherwise you can only trade techs if either you OR the AI you are dealing with are in the lower halve of the scoretable, and then you are limited to a certain number of tech trades that depends on the AI leader personality (NoTechTradeTreshold parameter from CIV4LeaderHeadInfos.xml) and difficulty level (NoTechTradeModifier parameter from CIV4HandicapInfo.xml).