Bazaar developer reference

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

Defined in
CvDealAI.cpp, line 3002
Class
CvDealAI
Hook name
CivHooks::CvDealAI_DoAddGPTToThem

Hooks

static bool BeforeCvDealAI_DoAddGPTToThem(CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeTheirExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iDealDuration, bool bUseEvenValue);static void AfterCvDealAI_DoAddGPTToThem(CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeTheirExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iDealDuration, bool bUseEvenValue);static void ReplaceCvDealAI_DoAddGPTToThem(void (*original)(CvDealAI*, CvDeal*, PlayerTypes, bool, int&, int&, int&, int, bool), CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeTheirExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iDealDuration, bool bUseEvenValue);CivRegisterBefore<CivHooks::CvDealAI_DoAddGPTToThem>(host, &BeforeCvDealAI_DoAddGPTToThem);CivRegisterAfter<CivHooks::CvDealAI_DoAddGPTToThem>(host, &AfterCvDealAI_DoAddGPTToThem);CivRegisterReplace<CivHooks::CvDealAI_DoAddGPTToThem>(host, &ReplaceCvDealAI_DoAddGPTToThem);

Code

3001/// See if adding Gold Per Turn to their side of the deal helps even out pDeal3002void CvDealAI::DoAddGPTToThem(CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeTheirExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iDealDuration, bool bUseEvenValue)3003{3004	CvAssert(eThem >= 0);3005	CvAssert(eThem < MAX_MAJOR_CIVS);3006	CvAssertMsg(eThem != GetPlayer()->GetID(), "DEAL_AI: Trying to add GPT to Them, but them is us.  Please show Jon");30073008	if(!bDontChangeTheirExistingItems)3009	{3010		if(iTotalValue < 0)3011		{3012			if(GET_PLAYER(eThem).calculateGoldRate() > 0)3013			{3014				PlayerTypes eMyPlayer = GetPlayer()->GetID();30153016				// Can't already be GPT from the other player in the Deal3017				if(pDeal->GetGoldPerTurnTrade(eMyPlayer) == 0)3018				{3019					int iNumGPT = GetGPTforForValueExchange(-iTotalValue, /*bNumGPTFromValue*/ true, iDealDuration, /*bFromMe*/ false, eThem, bUseEvenValue, /*bRoundUp*/ false);3020					int iNumGPTAlreadyInTrade = pDeal->GetGoldPerTurnTrade(eThem);3021					iNumGPT += iNumGPTAlreadyInTrade;3022					iNumGPT = min(iNumGPT, GET_PLAYER(eThem).calculateGoldRate());30233024					if(iNumGPT != iNumGPTAlreadyInTrade && !pDeal->ChangeGoldPerTurnTrade(eThem, iNumGPT, iDealDuration))3025					{3026						pDeal->AddGoldPerTurnTrade(eThem, iNumGPT, iDealDuration);3027					}30283029					iTotalValue = GetDealValue(pDeal, iValueImOffering, iValueTheyreOffering, bUseEvenValue);3030				}3031			}3032		}3033	}3034}

Calls

Called by