Bazaar developer reference

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

Defined in
CvDealAI.cpp, line 3203
Class
CvDealAI
Hook name
CivHooks::CvDealAI_DoRemoveGoldFromUs

Hooks

static bool BeforeCvDealAI_DoRemoveGoldFromUs(CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, bool bUseEvenValue);static void AfterCvDealAI_DoRemoveGoldFromUs(CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, bool bUseEvenValue);static void ReplaceCvDealAI_DoRemoveGoldFromUs(void (*original)(CvDealAI*, CvDeal*, PlayerTypes, int&, int&, int&, bool), CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, bool bUseEvenValue);CivRegisterBefore<CivHooks::CvDealAI_DoRemoveGoldFromUs>(host, &BeforeCvDealAI_DoRemoveGoldFromUs);CivRegisterAfter<CivHooks::CvDealAI_DoRemoveGoldFromUs>(host, &AfterCvDealAI_DoRemoveGoldFromUs);CivRegisterReplace<CivHooks::CvDealAI_DoRemoveGoldFromUs>(host, &ReplaceCvDealAI_DoRemoveGoldFromUs);

Code

3202/// See if removing Gold from our side of the deal helps even out pDeal3203void CvDealAI::DoRemoveGoldFromUs(CvDeal* pDeal, PlayerTypes eThem, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, bool bUseEvenValue)3204{3205	CvAssert(eThem >= 0);3206	CvAssert(eThem < MAX_MAJOR_CIVS);3207	CvAssertMsg(eThem != GetPlayer()->GetID(), "DEAL_AI: Trying to remove Gold from Us, but them is us.  Please show Jon");32083209//	if (!bDontChangeMyExistingItems)3210	{3211		if(iTotalValue < 0)3212		{3213			PlayerTypes eMyPlayer = GetPlayer()->GetID();32143215			int iNumGoldInThisDeal = pDeal->GetGoldTrade(eMyPlayer);3216			if(iNumGoldInThisDeal > 0)3217			{3218				// Found some Gold to remove3219				int iNumGoldToRemove = min(iNumGoldInThisDeal, GetGoldForForValueExchange(-iTotalValue, /*bNumGoldFromValue*/ true, /*bFromMe*/ true, eThem, bUseEvenValue, /*bRoundUp*/ true));3220				iNumGoldInThisDeal -= iNumGoldToRemove;32213222				// Removing ALL Gold, so just erase the item from the deal3223				if(iNumGoldInThisDeal == 0)3224				{3225					pDeal->RemoveByType(TRADE_ITEM_GOLD);3226					iTotalValue = GetDealValue(pDeal, iValueImOffering, iValueTheyreOffering, bUseEvenValue);3227				}3228				// Remove some of the Gold from the deal3229				else3230				{3231					if(!pDeal->ChangeGoldTrade(eMyPlayer, iNumGoldInThisDeal))3232					{3233						CvAssertMsg(false, "DEAL_AI: DealAI is trying to remove Gold from a deal but couldn't find the item for some reason.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");3234					}32353236					iTotalValue = GetDealValue(pDeal, iValueImOffering, iValueTheyreOffering, bUseEvenValue);3237				}3238			}3239		}3240	}3241}

Calls

Called by