Hooks
static bool BeforeCvDealAI_DoAddOpenBordersToUs(CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeMyExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iAmountUnderWeWillOffer, int iDealDuration, bool bUseEvenValue);static void AfterCvDealAI_DoAddOpenBordersToUs(CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeMyExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iAmountUnderWeWillOffer, int iDealDuration, bool bUseEvenValue);static void ReplaceCvDealAI_DoAddOpenBordersToUs(void (*original)(CvDealAI*, CvDeal*, PlayerTypes, bool, int&, int&, int&, int, int, bool), CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeMyExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iAmountUnderWeWillOffer, int iDealDuration, bool bUseEvenValue);CivRegisterBefore<CivHooks::CvDealAI_DoAddOpenBordersToUs>(host, &BeforeCvDealAI_DoAddOpenBordersToUs);CivRegisterAfter<CivHooks::CvDealAI_DoAddOpenBordersToUs>(host, &AfterCvDealAI_DoAddOpenBordersToUs);CivRegisterReplace<CivHooks::CvDealAI_DoAddOpenBordersToUs>(host, &ReplaceCvDealAI_DoAddOpenBordersToUs);
Code
2787/// See if adding Open Borders to our side of the deal helps even out pDeal2788void CvDealAI::DoAddOpenBordersToUs(CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeMyExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iAmountUnderWeWillOffer, int iDealDuration, bool bUseEvenValue)2789{2790 CvAssert(eThem >= 0);2791 CvAssert(eThem < MAX_MAJOR_CIVS);2792 CvAssertMsg(eThem != GetPlayer()->GetID(), "DEAL_AI: Trying to add Open Borders to Us, but them is us. Please show Jon");27932794 if(!bDontChangeMyExistingItems)2795 {2796 if(iTotalValue > 0)2797 {2798 PlayerTypes eMyPlayer = GetPlayer()->GetID();27992800 if(!pDeal->IsOpenBordersTrade(eMyPlayer))2801 {2802 // See if we can actually trade it to them2803 if(pDeal->IsPossibleToTradeItem(eMyPlayer, eThem, TRADE_ITEM_OPEN_BORDERS))2804 {2805 int iItemValue = GetTradeItemValue(TRADE_ITEM_OPEN_BORDERS, /*bFromMe*/ true, eThem, -1, -1, -1, /*bFlag1*/false, iDealDuration, bUseEvenValue);28062807 // If adding this to the deal doesn't take it under the min limit, do it2808#if defined(MOD_AI_NO_ZERO_VALUE_TRADE_ITEMS)2809 if((iItemValue > 0) && (-iItemValue + iTotalValue >= iAmountUnderWeWillOffer))2810#else2811 if(-iItemValue + iTotalValue >= iAmountUnderWeWillOffer)2812#endif2813 {2814 pDeal->AddOpenBorders(eMyPlayer, iDealDuration);2815 iTotalValue = GetDealValue(pDeal, iValueImOffering, iValueTheyreOffering, bUseEvenValue);2816 }2817 }2818 }2819 }2820 }2821}