Hooks
static bool BeforeCvDiplomacyAI_DoEmbassyExchange(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement, CvDeal* pDeal);static void AfterCvDiplomacyAI_DoEmbassyExchange(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement, CvDeal* pDeal);static void ReplaceCvDiplomacyAI_DoEmbassyExchange(void (*original)(CvDiplomacyAI*, PlayerTypes, DiploStatementTypes&, CvDeal*), CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement, CvDeal* pDeal);CivRegisterBefore<CivHooks::CvDiplomacyAI_DoEmbassyExchange>(host, &BeforeCvDiplomacyAI_DoEmbassyExchange);CivRegisterAfter<CivHooks::CvDiplomacyAI_DoEmbassyExchange>(host, &AfterCvDiplomacyAI_DoEmbassyExchange);CivRegisterReplace<CivHooks::CvDiplomacyAI_DoEmbassyExchange>(host, &ReplaceCvDiplomacyAI_DoEmbassyExchange);
Code
14589/// Possibile Contact Statement - Embassy Exchange14590void CvDiplomacyAI::DoEmbassyExchange(PlayerTypes ePlayer, DiploStatementTypes& eStatement, CvDeal* pDeal)14591{14592 CvAssertMsg(ePlayer >= 0, "DIPLOMACY_AI: Invalid Player Index. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");14593 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.");1459414595 if(eStatement == NO_DIPLO_STATEMENT_TYPE)14596 {14597 // Can both sides open an embassy14598 if(pDeal->IsPossibleToTradeItem(GetPlayer()->GetID(), ePlayer, TRADE_ITEM_ALLOW_EMBASSY) &&14599 pDeal->IsPossibleToTradeItem(ePlayer, GetPlayer()->GetID(), TRADE_ITEM_ALLOW_EMBASSY))14600 {14601 // Does this guy want to exchange embassies?14602 if(IsEmbassyExchangeAcceptable(ePlayer))14603 {14604 DiploStatementTypes eTempStatement = DIPLO_STATEMENT_EMBASSY_EXCHANGE;14605 int iTurnsBetweenStatements = 20;1460614607 if ((GetNumTurnsSinceStatementSent(ePlayer, eTempStatement) >= iTurnsBetweenStatements) && GetNumTurnsSinceStatementSent(ePlayer, DIPLO_STATEMENT_EMBASSY_OFFER) >= 10)14608 {14609 bool bSendStatement = false;1461014611 // AI14612 if(!GET_PLAYER(ePlayer).isHuman())14613 {14614 if(GET_PLAYER(ePlayer).GetDiplomacyAI()->IsEmbassyExchangeAcceptable(GetPlayer()->GetID()))14615 bSendStatement = true;14616 }14617 // Human14618 else14619 bSendStatement = true;1462014621 // 1 in 2 chance we don't actually send the message (don't want full predictability)14622 if(50 < GC.getGame().getJonRandNum(100, "Diplomacy AI: rand rool to see if we ask to exchange embassies"))14623 bSendStatement = false;1462414625 if(bSendStatement)14626 {14627 pDeal->AddAllowEmbassy(GetPlayer()->GetID());14628 pDeal->AddAllowEmbassy(ePlayer);1462914630 eStatement = eTempStatement;14631 }14632 else14633 DoAddNewStatementToDiploLog(ePlayer, eTempStatement);14634 }14635 }14636 }14637 }14638}