Bazaar developer reference

CvDealAI::GetDealValue(CvDeal *, int &, int &, bool)

Defined in
CvDealAI.cpp, line 839
Class
CvDealAI
Hook name
CivHooks::CvDealAI_GetDealValue

Hooks

static bool BeforeCvDealAI_GetDealValue(CvDealAI* self, CvDeal* pDeal, int& iValueImOffering, int& iValueTheyreOffering, bool bUseEvenValue, int& result);static void AfterCvDealAI_GetDealValue(CvDealAI* self, CvDeal* pDeal, int& iValueImOffering, int& iValueTheyreOffering, bool bUseEvenValue, int& result);static int ReplaceCvDealAI_GetDealValue(int (*original)(CvDealAI*, CvDeal*, int&, int&, bool), CvDealAI* self, CvDeal* pDeal, int& iValueImOffering, int& iValueTheyreOffering, bool bUseEvenValue);CivRegisterBefore<CivHooks::CvDealAI_GetDealValue>(host, &BeforeCvDealAI_GetDealValue);CivRegisterAfter<CivHooks::CvDealAI_GetDealValue>(host, &AfterCvDealAI_GetDealValue);CivRegisterReplace<CivHooks::CvDealAI_GetDealValue>(host, &ReplaceCvDealAI_GetDealValue);

Code

838/// What do we think of a Deal?839int CvDealAI::GetDealValue(CvDeal* pDeal, int& iValueImOffering, int& iValueTheyreOffering, bool bUseEvenValue)840{841	int iDealValue = 0;842	iValueImOffering = 0;843	iValueTheyreOffering = 0;844845	PlayerTypes eMyPlayer = GetPlayer()->GetID();846847	int iItemValue;848849	bool bFromMe;850	PlayerTypes eOtherPlayer;851852	eOtherPlayer = pDeal->m_eFromPlayer == eMyPlayer ? pDeal->m_eToPlayer : pDeal->m_eFromPlayer;853854	TradedItemList::iterator it;855	for(it = pDeal->m_TradedItems.begin(); it != pDeal->m_TradedItems.end(); ++it)856	{857		if(eMyPlayer == it->m_eFromPlayer)858		{859			bFromMe = true;860			eOtherPlayer = pDeal->GetOtherPlayer(eMyPlayer);861		}862		else863		{864			bFromMe = false;865			eOtherPlayer = it->m_eFromPlayer;866		}867868		// Multiplier is -1 if we're giving something away, 1 if we're receiving something869		int iValueMultiplier = bFromMe ? -1 : 1;870871		iItemValue = GetTradeItemValue(it->m_eItemType, bFromMe, eOtherPlayer, it->m_iData1, it->m_iData2, it->m_iData3, it->m_bFlag1, it->m_iDuration, bUseEvenValue);872873		iItemValue *= iValueMultiplier;874		iDealValue += iItemValue;875876		// Figure out who's offering what, and keep track of the overall value on both sides of the deal877		if(iItemValue < 0)878		{879			iValueImOffering -= iItemValue;880		}881		else882		{883			iValueTheyreOffering += iItemValue;884		}885	}886887	return iDealValue;888}

Calls

Called by