Bazaar developer reference

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

Defined in
CvDiplomacyAI.cpp, line 15514
Class
CvDiplomacyAI
Hook name
CivHooks::CvDiplomacyAI_DoPeaceOffer

Hooks

static bool BeforeCvDiplomacyAI_DoPeaceOffer(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement, CvDeal* pDeal);static void AfterCvDiplomacyAI_DoPeaceOffer(CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement, CvDeal* pDeal);static void ReplaceCvDiplomacyAI_DoPeaceOffer(void (*original)(CvDiplomacyAI*, PlayerTypes, DiploStatementTypes&, CvDeal*), CvDiplomacyAI* self, PlayerTypes ePlayer, DiploStatementTypes& eStatement, CvDeal* pDeal);CivRegisterBefore<CivHooks::CvDiplomacyAI_DoPeaceOffer>(host, &BeforeCvDiplomacyAI_DoPeaceOffer);CivRegisterAfter<CivHooks::CvDiplomacyAI_DoPeaceOffer>(host, &AfterCvDiplomacyAI_DoPeaceOffer);CivRegisterReplace<CivHooks::CvDiplomacyAI_DoPeaceOffer>(host, &ReplaceCvDiplomacyAI_DoPeaceOffer);

Code

15513/// Possible Contact Statement - Peace15514void CvDiplomacyAI::DoPeaceOffer(PlayerTypes ePlayer, DiploStatementTypes& eStatement, CvDeal* pDeal)15515{15516	CvAssertMsg(ePlayer >= 0, "DIPLOMACY_AI: Invalid Player Index.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");15517	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.");1551815519	if(eStatement == NO_DIPLO_STATEMENT_TYPE)15520	{15521		CvTeam* pOurTeam = &GET_TEAM(GetPlayer()->getTeam());15522		TeamTypes eTheirTeam = GET_PLAYER(ePlayer).getTeam();1552315524		// Have to have been at war for at least a little while15525		if(GetPlayerNumTurnsAtWar(ePlayer) > 5)15526		{15527			// We can't be locked into war with them, or them with us15528			if(pOurTeam->GetNumTurnsLockedIntoWar(eTheirTeam) == 0 &&15529			        GET_TEAM(eTheirTeam).GetNumTurnsLockedIntoWar(GetPlayer()->getTeam()) == 0)15530			{15531				if(IsWantsPeaceWithPlayer(ePlayer))15532				{15533					DiploStatementTypes eTempStatement = DIPLO_STATEMENT_REQUEST_PEACE;15534					int iTurnsBetweenStatements = 10;1553515536					if(GetNumTurnsSinceStatementSent(ePlayer, eTempStatement) >= iTurnsBetweenStatements)15537					{15538						if(GetPlayer()->GetDealAI()->IsOfferPeace(ePlayer, /*pDeal can be modified in this function*/ pDeal, false /*bEqualizingDeals*/))15539						{15540							eStatement = eTempStatement;15541						}15542						else15543						{15544							// Clear out the deal if we don't want to offer it so that it's not tainted for the next trade possibility we look at15545							pDeal->ClearItems();15546						}15547					}15548				}15549			}15550		}15551	}15552}

Calls

Called by