Hooks
static bool BeforeCvDealAI_DoAddOpenBordersToThem(CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeTheirExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iAmountOverWeWillRequest, int iDealDuration, bool bUseEvenValue);static void AfterCvDealAI_DoAddOpenBordersToThem(CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeTheirExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iAmountOverWeWillRequest, int iDealDuration, bool bUseEvenValue);static void ReplaceCvDealAI_DoAddOpenBordersToThem(void (*original)(CvDealAI*, CvDeal*, PlayerTypes, bool, int&, int&, int&, int, int, bool), CvDealAI* self, CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeTheirExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iAmountOverWeWillRequest, int iDealDuration, bool bUseEvenValue);CivRegisterBefore<CivHooks::CvDealAI_DoAddOpenBordersToThem>(host, &BeforeCvDealAI_DoAddOpenBordersToThem);CivRegisterAfter<CivHooks::CvDealAI_DoAddOpenBordersToThem>(host, &AfterCvDealAI_DoAddOpenBordersToThem);CivRegisterReplace<CivHooks::CvDealAI_DoAddOpenBordersToThem>(host, &ReplaceCvDealAI_DoAddOpenBordersToThem);
Code
2751/// See if adding Open Borders to their side of the deal helps even out pDeal2752void CvDealAI::DoAddOpenBordersToThem(CvDeal* pDeal, PlayerTypes eThem, bool bDontChangeTheirExistingItems, int& iTotalValue, int& iValueImOffering, int& iValueTheyreOffering, int iAmountOverWeWillRequest, int iDealDuration, bool bUseEvenValue)2753{2754 CvAssert(eThem >= 0);2755 CvAssert(eThem < MAX_MAJOR_CIVS);2756 CvAssertMsg(eThem != GetPlayer()->GetID(), "DEAL_AI: Trying to add Open Borders to Them, but them is us. Please show Jon");27572758 if(!bDontChangeTheirExistingItems)2759 {2760 if(iTotalValue < 0)2761 {2762 if(!pDeal->IsOpenBordersTrade(eThem))2763 {2764 PlayerTypes eMyPlayer = GetPlayer()->GetID();27652766 // See if they can actually trade it to us2767 if(pDeal->IsPossibleToTradeItem(eThem, eMyPlayer, TRADE_ITEM_OPEN_BORDERS))2768 {2769 int iItemValue = GetTradeItemValue(TRADE_ITEM_OPEN_BORDERS, /*bFromMe*/ false, eThem, -1, -1, -1, /*bFlag1*/false, iDealDuration, bUseEvenValue);27702771 // If adding this to the deal doesn't take it over the limit, do it2772#if defined(MOD_AI_NO_ZERO_VALUE_TRADE_ITEMS)2773 if((iItemValue > 0) && (iItemValue + iTotalValue <= iAmountOverWeWillRequest))2774#else2775 if(iItemValue + iTotalValue <= iAmountOverWeWillRequest)2776#endif2777 {2778 pDeal->AddOpenBorders(eThem, iDealDuration);2779 iTotalValue = GetDealValue(pDeal, iValueImOffering, iValueTheyreOffering, bUseEvenValue);2780 }2781 }2782 }2783 }2784 }2785}