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
- CvDeal::ClearItems()
- CvDealAI::IsOfferPeace(PlayerTypes, CvDeal *, bool)
- CvDiplomacyAI::GetNumTurnsSinceStatementSent(PlayerTypes, DiploStatementTypes)
- CvDiplomacyAI::GetPlayer()
- CvDiplomacyAI::GetPlayerNumTurnsAtWar(PlayerTypes) const
- CvDiplomacyAI::IsWantsPeaceWithPlayer(PlayerTypes) const
- CvPlayer::GetDealAI() const
- CvPlayer::getTeam() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvTeam::GetNumTurnsLockedIntoWar(TeamTypes) const
- CvTeam::getTeam(TeamTypes)