Hooks
static bool BeforeCvDealAI_GetTradeItemValue(CvDealAI* self, TradeableItems eItem, bool bFromMe, PlayerTypes eOtherPlayer, int iData1, int iData2, int iData3, bool bFlag1, int iDuration, bool bUseEvenValue, int& result);static void AfterCvDealAI_GetTradeItemValue(CvDealAI* self, TradeableItems eItem, bool bFromMe, PlayerTypes eOtherPlayer, int iData1, int iData2, int iData3, bool bFlag1, int iDuration, bool bUseEvenValue, int& result);static int ReplaceCvDealAI_GetTradeItemValue(int (*original)(CvDealAI*, TradeableItems, bool, PlayerTypes, int, int, int, bool, int, bool), CvDealAI* self, TradeableItems eItem, bool bFromMe, PlayerTypes eOtherPlayer, int iData1, int iData2, int iData3, bool bFlag1, int iDuration, bool bUseEvenValue);CivRegisterBefore<CivHooks::CvDealAI_GetTradeItemValue>(host, &BeforeCvDealAI_GetTradeItemValue);CivRegisterAfter<CivHooks::CvDealAI_GetTradeItemValue>(host, &AfterCvDealAI_GetTradeItemValue);CivRegisterReplace<CivHooks::CvDealAI_GetTradeItemValue>(host, &ReplaceCvDealAI_GetTradeItemValue);
Code
890/// What is a particular item worth?891int CvDealAI::GetTradeItemValue(TradeableItems eItem, bool bFromMe, PlayerTypes eOtherPlayer, int iData1, int iData2, int iData3, bool bFlag1, int iDuration, bool bUseEvenValue)892{893 CvAssert(eOtherPlayer >= 0);894 CvAssert(eOtherPlayer < MAX_MAJOR_CIVS);895 CvAssertMsg(GetPlayer()->GetID() != eOtherPlayer, "DEAL_AI: Trying to get deal item value for trading to oneself. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");896 CvAssertMsg(eItem != TRADE_ITEM_NONE, "DEAL_AI: Trying to get value of TRADE_ITEM_NONE. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");897898 int iItemValue = 0;899900 if(eItem == TRADE_ITEM_GOLD)901 iItemValue = GetGoldForForValueExchange(/*Gold Amount*/ iData1, /*bNumGoldFromValue*/ false, bFromMe, eOtherPlayer, bUseEvenValue, /*bRoundUp*/ false);902 else if(eItem == TRADE_ITEM_GOLD_PER_TURN)903 iItemValue = GetGPTforForValueExchange(/*Gold Per Turn Amount*/ iData1, /*bNumGPTFromValue*/ false, iDuration, bFromMe, eOtherPlayer, bUseEvenValue, /*bRoundUp*/ false);904 else if(eItem == TRADE_ITEM_RESOURCES)905 iItemValue = GetResourceValue(/*ResourceType*/ (ResourceTypes) iData1, /*Quantity*/ iData2, iDuration, bFromMe, eOtherPlayer);906 else if(eItem == TRADE_ITEM_CITIES)907 iItemValue = GetCityValue(/*iX*/ iData1, /*iY*/ iData2, bFromMe, eOtherPlayer, bUseEvenValue);908 else if(eItem == TRADE_ITEM_ALLOW_EMBASSY)909 iItemValue = GetEmbassyValue(bFromMe, eOtherPlayer, bUseEvenValue);910 else if(eItem == TRADE_ITEM_OPEN_BORDERS)911 iItemValue = GetOpenBordersValue(bFromMe, eOtherPlayer, bUseEvenValue);912 else if(eItem == TRADE_ITEM_DEFENSIVE_PACT)913 iItemValue = GetDefensivePactValue(bFromMe, eOtherPlayer, bUseEvenValue);914 else if(eItem == TRADE_ITEM_RESEARCH_AGREEMENT)915 iItemValue = GetResearchAgreementValue(bFromMe, eOtherPlayer, bUseEvenValue);916 else if(eItem == TRADE_ITEM_TRADE_AGREEMENT)917 iItemValue = GetTradeAgreementValue(bFromMe, eOtherPlayer, bUseEvenValue);918 else if(eItem == TRADE_ITEM_PEACE_TREATY)919 iItemValue = GetPeaceTreatyValue(eOtherPlayer);920 else if(eItem == TRADE_ITEM_THIRD_PARTY_PEACE)921 iItemValue = GetThirdPartyPeaceValue(bFromMe, eOtherPlayer, /*eWithTeam*/ (TeamTypes) iData1);922 else if(eItem == TRADE_ITEM_THIRD_PARTY_WAR)923 iItemValue = GetThirdPartyWarValue(bFromMe, eOtherPlayer, /*eWithTeam*/ (TeamTypes) iData1);924 else if(eItem == TRADE_ITEM_VOTE_COMMITMENT)925 iItemValue = GetVoteCommitmentValue(bFromMe, eOtherPlayer, iData1, iData2, iData3, bFlag1, bUseEvenValue);926927 CvAssertMsg(iItemValue >= 0, "DEAL_AI: Trade Item value is negative. Please send Jon this with your last 5 autosaves and what changelist # you're playing.");928929 return iItemValue;930}