Bazaar developer reference

CvDealAI::IsMakeOfferForResearchAgreement(PlayerTypes, CvDeal *)

Defined in
CvDealAI.cpp, line 3917
Class
CvDealAI
Hook name
CivHooks::CvDealAI_IsMakeOfferForResearchAgreement

Hooks

static bool BeforeCvDealAI_IsMakeOfferForResearchAgreement(CvDealAI* self, PlayerTypes eOtherPlayer, CvDeal* pDeal, bool& result);static void AfterCvDealAI_IsMakeOfferForResearchAgreement(CvDealAI* self, PlayerTypes eOtherPlayer, CvDeal* pDeal, bool& result);static bool ReplaceCvDealAI_IsMakeOfferForResearchAgreement(bool (*original)(CvDealAI*, PlayerTypes, CvDeal*), CvDealAI* self, PlayerTypes eOtherPlayer, CvDeal* pDeal);CivRegisterBefore<CivHooks::CvDealAI_IsMakeOfferForResearchAgreement>(host, &BeforeCvDealAI_IsMakeOfferForResearchAgreement);CivRegisterAfter<CivHooks::CvDealAI_IsMakeOfferForResearchAgreement>(host, &AfterCvDealAI_IsMakeOfferForResearchAgreement);CivRegisterReplace<CivHooks::CvDealAI_IsMakeOfferForResearchAgreement>(host, &ReplaceCvDealAI_IsMakeOfferForResearchAgreement);

Code

3916/// A good time to make an offer for a Research Agreement?3917bool CvDealAI::IsMakeOfferForResearchAgreement(PlayerTypes eOtherPlayer, CvDeal* pDeal)3918{3919	CvAssert(eOtherPlayer >= 0);3920	CvAssert(eOtherPlayer < MAX_MAJOR_CIVS);39213922	// Logic for when THIS AI wants to make a RA is in the Diplo AI39233924	// Can we actually complete this deal?3925	if(!pDeal->IsPossibleToTradeItem(eOtherPlayer, GetPlayer()->GetID(), TRADE_ITEM_RESEARCH_AGREEMENT))3926	{3927		return false;3928	}39293930	// Seed the deal with the item we want3931	pDeal->AddResearchAgreement(GetPlayer()->GetID(), GC.getGame().GetDealDuration());3932	pDeal->AddResearchAgreement(eOtherPlayer, GC.getGame().GetDealDuration());39333934	bool bDealAcceptable = false;39353936	// AI evaluation3937	if(!GET_PLAYER(eOtherPlayer).isHuman())3938	{3939		bDealAcceptable = DoEqualizeDealWithAI(pDeal, eOtherPlayer);	// Change the deal as necessary to make it work3940	}3941	else3942	{3943		bool bUselessReferenceVariable;3944		bool bCantMatchOffer;3945		bDealAcceptable = DoEqualizeDealWithHuman(pDeal, eOtherPlayer, true, false, bUselessReferenceVariable, bCantMatchOffer);	// Change the deal as necessary to make it work3946	}39473948	return bDealAcceptable;3949}

Calls

Called by