Bazaar developer reference

CvDealAI::DoAddVoteCommitmentToUs(CvDeal *, PlayerTypes, bool, int &, int &, int &, int, bool)

Defined in
CvDealAI.cpp, line 2457
Class
CvDealAI
Hook name
CivHooks::CvDealAI_DoAddVoteCommitmentToUs

Hooks

static bool BeforeCvDealAI_DoAddVoteCommitmentToUs(CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeMyExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iAmountUnderWeWillOffer, bool bUseEvenValue);static void AfterCvDealAI_DoAddVoteCommitmentToUs(CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeMyExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iAmountUnderWeWillOffer, bool bUseEvenValue);static void ReplaceCvDealAI_DoAddVoteCommitmentToUs(void (*original)(CvDealAI*, CvDeal*, PlayerTypes, bool, int&, int&, int&, int, bool), CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeMyExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iAmountUnderWeWillOffer, bool bUseEvenValue);CivRegisterBefore<CivHooks::CvDealAI_DoAddVoteCommitmentToUs>(host, &BeforeCvDealAI_DoAddVoteCommitmentToUs);CivRegisterAfter<CivHooks::CvDealAI_DoAddVoteCommitmentToUs>(host, &AfterCvDealAI_DoAddVoteCommitmentToUs);CivRegisterReplace<CivHooks::CvDealAI_DoAddVoteCommitmentToUs>(host, &ReplaceCvDealAI_DoAddVoteCommitmentToUs);

Code

2456/// See if adding a Vote Commitment to our side of the deal helps even out pDeal2457void CvDealAI::DoAddVoteCommitmentToUs(CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeMyExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iAmountUnderWeWillOffer, bool bUseEvenValue)2458{2459	CvAssert(eThem >= 0);2460	CvAssert(eThem < MAX_MAJOR_CIVS)2461	CvAssertMsg(eThem != GetPlayer()->GetID(), "DEAL_AI: Trying to add Vote Commitment to Us, but them is us. Please send Anton your save file and version.");24622463	if(!bDontChangeMyExistingItems)2464	{2465		if(iTotalValue > 0)2466		{2467			PlayerTypes eMyPlayer = GetPlayer()->GetID();24682469			// Can't already be a Vote Commitment in the Deal2470			if(!pDeal->IsVoteCommitmentTrade(eThem) && !pDeal->IsVoteCommitmentTrade(eMyPlayer))2471			{2472				CvLeagueAI::VoteCommitmentList vDesiredCommitments = GET_PLAYER(eThem).GetLeagueAI()->GetDesiredVoteCommitments(eMyPlayer);2473				for (CvLeagueAI::VoteCommitmentList::iterator it = vDesiredCommitments.begin(); it != vDesiredCommitments.end(); ++it)2474				{2475					int iProposalID = it->iResolutionID;2476					int iVoteChoice = it->iVoteChoice;2477					int iNumVotes = it->iNumVotes;2478					bool bRepeal = !it->bEnact;24792480					if (iProposalID != -1 && pDeal->IsPossibleToTradeItem(eMyPlayer, eThem, TRADE_ITEM_VOTE_COMMITMENT, iProposalID, iVoteChoice, iNumVotes, bRepeal))2481					{2482						int iItemValue = GetTradeItemValue(TRADE_ITEM_VOTE_COMMITMENT, /*bFromMe*/ true, eThem, iProposalID, iVoteChoice, iNumVotes, bRepeal, -1, bUseEvenValue);24832484						// If adding this to the deal doesn't take it under the min limit, do it2485#if defined(MOD_AI_NO_ZERO_VALUE_TRADE_ITEMS)2486						if((iItemValue > 0) && (-iItemValue + iTotalValue >= iAmountUnderWeWillOffer))2487#else2488						if(-iItemValue + iTotalValue >= iAmountUnderWeWillOffer)2489#endif2490						{2491							pDeal->AddVoteCommitment(eMyPlayer, iProposalID, iVoteChoice, iNumVotes, bRepeal);2492							iTotalValue = GetDealValue(pDeal, iValueImOffering, iValueTheyreOffering, bUseEvenValue);2493						}2494					}2495				}2496			}2497		}2498	}2499}

Calls

Called by