Bazaar developer reference

CvDiplomacyAI::DoOpenBordersExchange(PlayerTypes, DiploStatementTypes &, CvDeal *)

Defined in
CvDiplomacyAI.cpp, line 14665
Class
CvDiplomacyAI
Hook name
CivHooks::CvDiplomacyAI_DoOpenBordersExchange

Hooks

static bool BeforeCvDiplomacyAI_DoOpenBordersExchange(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement, CvDeal* pDeal);static void AfterCvDiplomacyAI_DoOpenBordersExchange(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement, CvDeal* pDeal);static void ReplaceCvDiplomacyAI_DoOpenBordersExchange(void (*original)(CvDiplomacyAI*, PlayerTypes, DiploStatementTypes&, CvDeal*), CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement, CvDeal* pDeal);CivRegisterBefore<CivHooks::CvDiplomacyAI_DoOpenBordersExchange>(host, &BeforeCvDiplomacyAI_DoOpenBordersExchange);CivRegisterAfter<CivHooks::CvDiplomacyAI_DoOpenBordersExchange>(host, &AfterCvDiplomacyAI_DoOpenBordersExchange);CivRegisterReplace<CivHooks::CvDiplomacyAI_DoOpenBordersExchange>(host, &ReplaceCvDiplomacyAI_DoOpenBordersExchange);

Code

14664/// Possible Contact Statement - Open Borders Exchange14665void CvDiplomacyAI::DoOpenBordersExchange(PlayerTypes ePlayer, DiploStatementTypes& eStatement, CvDeal* pDeal)14666{14667	CvAssertMsg(ePlayer >= 0, "DIPLOMACY_AI: Invalid Player Index.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");14668	CvAssertMsg(ePlayer < MAX_MAJOR_CIVS, "DIPLOMACY_AI: Invalid Player Index.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");1466914670	if(eStatement == NO_DIPLO_STATEMENT_TYPE)14671	{14672		int iDuration = GC.getGame().GetDealDuration();1467314674		// Can both sides trade OB?14675		if(pDeal->IsPossibleToTradeItem(GetPlayer()->GetID(), ePlayer, TRADE_ITEM_OPEN_BORDERS, iDuration) &&14676		        pDeal->IsPossibleToTradeItem(ePlayer, GetPlayer()->GetID(), TRADE_ITEM_OPEN_BORDERS, iDuration))14677		{14678			// Does this guy want to exchange OB?14679			if(IsOpenBordersExchangeAcceptable(ePlayer))14680			{14681				DiploStatementTypes eTempStatement = DIPLO_STATEMENT_OPEN_BORDERS_EXCHANGE;14682				int iTurnsBetweenStatements = 20;1468314684				if(GetNumTurnsSinceStatementSent(ePlayer, eTempStatement) >= iTurnsBetweenStatements)14685				{14686					bool bSendStatement = false;1468714688					// AI14689					if(!GET_PLAYER(ePlayer).isHuman())14690					{14691						if(GET_PLAYER(ePlayer).GetDiplomacyAI()->IsOpenBordersExchangeAcceptable(GetPlayer()->GetID()))14692							bSendStatement = true;14693					}14694					// Human14695					else14696						bSendStatement = true;1469714698					// 1 in 2 chance we don't actually send the message (don't want full predictability)14699					if(50 < GC.getGame().getJonRandNum(100, "Diplomacy AI: rand roll to see if we ask to exchange open borders"))14700						bSendStatement = false;1470114702					if(bSendStatement)14703					{14704						// OB on each side14705						pDeal->AddOpenBorders(GetPlayer()->GetID(), iDuration);14706						pDeal->AddOpenBorders(ePlayer, iDuration);1470714708						eStatement = eTempStatement;14709					}14710					// Add this statement to the log so we don't evaluate it again until 20 turns has come back around14711					else14712						DoAddNewStatementToDiploLog(ePlayer, eTempStatement);14713				}14714			}14715		}14716	}14717}

Calls

Called by