Bazaar developer reference

CvPlayerTrade::GetTradeConnectionValueTimes100(const TradeConnection &, YieldTypes, bool)

Defined in
CvTradeClasses.cpp, line 2480
Class
CvPlayerTrade
Hook name
CivHooks::CvPlayerTrade_GetTradeConnectionValueTimes100

Hooks

static bool BeforeCvPlayerTrade_GetTradeConnectionValueTimes100(CvPlayerTrade* self, const TradeConnection& kTradeConnection, YieldTypes eYield, bool bAsOriginPlayer, int& result);static void AfterCvPlayerTrade_GetTradeConnectionValueTimes100(CvPlayerTrade* self, const TradeConnection& kTradeConnection, YieldTypes eYield, bool bAsOriginPlayer, int& result);static int ReplaceCvPlayerTrade_GetTradeConnectionValueTimes100(int (*original)(CvPlayerTrade*, const TradeConnection&, YieldTypes, bool), CvPlayerTrade* self, const TradeConnection& kTradeConnection, YieldTypes eYield, bool bAsOriginPlayer);CivRegisterBefore<CivHooks::CvPlayerTrade_GetTradeConnectionValueTimes100>(host, &BeforeCvPlayerTrade_GetTradeConnectionValueTimes100);CivRegisterAfter<CivHooks::CvPlayerTrade_GetTradeConnectionValueTimes100>(host, &AfterCvPlayerTrade_GetTradeConnectionValueTimes100);CivRegisterReplace<CivHooks::CvPlayerTrade_GetTradeConnectionValueTimes100>(host, &ReplaceCvPlayerTrade_GetTradeConnectionValueTimes100);

Code

2480int CvPlayerTrade::GetTradeConnectionValueTimes100 (const TradeConnection& kTradeConnection, YieldTypes eYield, bool bAsOriginPlayer)2481{2482	CvGameTrade* pTrade = GC.getGame().GetGameTrade();2483	int iValue = 0;24842485	if (bAsOriginPlayer)2486	{2487		if (pTrade->IsConnectionInternational(kTradeConnection))2488		{2489			switch (eYield)2490			{2491			case YIELD_GOLD:2492				{2493					int iBaseValue = GetTradeConnectionBaseValueTimes100(kTradeConnection, eYield, bAsOriginPlayer);2494					int iOriginPerTurnBonus = GetTradeConnectionGPTValueTimes100(kTradeConnection, eYield, bAsOriginPlayer, true);2495					int iDestPerTurnBonus = GetTradeConnectionGPTValueTimes100(kTradeConnection, eYield, bAsOriginPlayer, false);2496					int iResourceBonus = GetTradeConnectionResourceValueTimes100(kTradeConnection, eYield, bAsOriginPlayer);2497					int iExclusiveBonus = GetTradeConnectionExclusiveValueTimes100(kTradeConnection, eYield);2498					int iPolicyBonus = GetTradeConnectionPolicyValueTimes100(kTradeConnection, eYield);2499					int iYourBuildingBonus = GetTradeConnectionYourBuildingValueTimes100(kTradeConnection, eYield, bAsOriginPlayer);2500					int iTheirBuildingBonus = GetTradeConnectionTheirBuildingValueTimes100(kTradeConnection, eYield, bAsOriginPlayer);2501					int iTraitBonus = GetTradeConnectionOtherTraitValueTimes100(kTradeConnection, eYield, bAsOriginPlayer);25022503					int iModifier = 100;2504					int iDomainModifier = GetTradeConnectionDomainValueModifierTimes100(kTradeConnection, eYield);2505					int iOriginRiverModifier = GetTradeConnectionRiverValueModifierTimes100(kTradeConnection, eYield, bAsOriginPlayer);25062507					iValue = iBaseValue;2508					iValue += iOriginPerTurnBonus;2509					iValue += iDestPerTurnBonus;2510					iValue += iExclusiveBonus;2511					iValue += iYourBuildingBonus;2512					iValue += iTheirBuildingBonus;2513					iValue += iResourceBonus;2514					iValue += iPolicyBonus;2515					iValue += iTraitBonus;25162517					iModifier += iDomainModifier;2518					iModifier += iOriginRiverModifier;25192520					iValue *= iModifier;2521					iValue /= 100;2522					iValue = max(100, iValue);2523				}2524				break;2525#if defined(MOD_API_UNIFIED_YIELDS)2526			case YIELD_CULTURE:2527			case YIELD_FAITH:2528#endif2529#if defined(MOD_API_UNIFIED_YIELDS_TOURISM)2530			case YIELD_TOURISM:2531#endif2532#if defined(MOD_API_UNIFIED_YIELDS_GOLDEN_AGE)2533			case YIELD_GOLDEN_AGE_POINTS:2534#endif2535			case YIELD_SCIENCE:2536#if defined(MOD_API_UNIFIED_YIELDS)2537				{2538#endif2539					int iBaseValue = GetTradeConnectionBaseValueTimes100(kTradeConnection, eYield, bAsOriginPlayer);2540#if defined(MOD_API_UNIFIED_YIELDS)2541					int iPolicyBonus = GetTradeConnectionPolicyValueTimes100(kTradeConnection, eYield);2542					int iTraitBonus = GetTradeConnectionOtherTraitValueTimes100(kTradeConnection, eYield, bAsOriginPlayer);2543#endif25442545					iValue = iBaseValue;2546#if defined(MOD_API_UNIFIED_YIELDS)2547					iValue += iPolicyBonus;2548					iValue += iTraitBonus;2549#endif25502551					int iModifier = 100;2552				2553					iValue *= iModifier;2554					iValue /= 100;2555#if defined(MOD_API_UNIFIED_YIELDS)2556				}2557#endif2558				break;2559			}2560		}2561	}2562	else2563	{2564		if (pTrade->IsConnectionInternational(kTradeConnection))2565		{2566			if (kTradeConnection.m_eDestOwner == m_pPlayer->GetID())2567			{2568				switch (eYield)2569				{2570				case YIELD_GOLD:2571					{2572						int iBaseValue = GetTradeConnectionBaseValueTimes100(kTradeConnection, eYield, bAsOriginPlayer);2573						int iYourBuildingBonus = GetTradeConnectionYourBuildingValueTimes100(kTradeConnection, eYield, bAsOriginPlayer);2574						int iTheirBuildingBonus = GetTradeConnectionTheirBuildingValueTimes100(kTradeConnection, eYield, bAsOriginPlayer);25752576						int iModifier = 100;2577						int iDomainModifier = GetTradeConnectionDomainValueModifierTimes100(kTradeConnection, eYield);2578						int iDestRiverModifier = GetTradeConnectionRiverValueModifierTimes100(kTradeConnection, eYield, false);2579						int iTraitBonus = GetTradeConnectionOtherTraitValueTimes100(kTradeConnection, eYield, false);25802581						iValue = iBaseValue;2582						iValue += iYourBuildingBonus;2583						iValue += iTheirBuildingBonus;2584						iValue += iTraitBonus;25852586						iModifier += iDomainModifier;2587						iModifier += iDestRiverModifier;25882589						iValue *= iModifier;2590						iValue /= 100;2591					}2592					break;2593#if defined(MOD_API_UNIFIED_YIELDS)2594				case YIELD_CULTURE:2595				case YIELD_FAITH:2596#endif2597#if defined(MOD_API_UNIFIED_YIELDS_TOURISM)2598				case YIELD_TOURISM:2599#endif2600#if defined(MOD_API_UNIFIED_YIELDS_GOLDEN_AGE)2601				case YIELD_GOLDEN_AGE_POINTS:2602#endif2603				case YIELD_SCIENCE:2604					{2605						int iBaseValue = GetTradeConnectionBaseValueTimes100(kTradeConnection, eYield, bAsOriginPlayer);2606#if defined(MOD_API_UNIFIED_YIELDS)2607						int iTraitBonus = GetTradeConnectionOtherTraitValueTimes100(kTradeConnection, eYield, false);2608#endif26092610						int iModifier = 100;26112612						iValue = iBaseValue;2613#if defined(MOD_API_UNIFIED_YIELDS)2614						iValue += iTraitBonus;2615#endif26162617						iValue *= iModifier;2618						iValue /= 100;						2619					}2620					break;2621				}2622			}2623		}2624		else2625		{2626			switch (kTradeConnection.m_eConnectionType)2627			{2628			case TRADE_CONNECTION_FOOD:2629				if (eYield == YIELD_FOOD)2630				{2631#if defined(MOD_TRADE_ROUTE_SCALING)2632					iValue = GD_INT_GET(TRADE_ROUTE_BASE_FOOD_VALUE);2633#else2634					iValue = 300;2635#endif2636#if defined(MOD_API_UNIFIED_YIELDS)2637					iValue += GetTradeConnectionPolicyValueTimes100(kTradeConnection, eYield);2638					iValue += GetTradeConnectionOtherTraitValueTimes100(kTradeConnection, eYield, false);2639#endif2640					iValue += GC.getEraInfo(GET_PLAYER(kTradeConnection.m_eDestOwner).GetCurrentEra())->getTradeRouteFoodBonusTimes100();2641					iValue *= GC.getEraInfo(GC.getGame().getStartEra())->getGrowthPercent();2642					iValue /= 100;26432644					int iModifier = 100;2645					int iDomainModifier = GetTradeConnectionDomainValueModifierTimes100(kTradeConnection, eYield);2646					iModifier += iDomainModifier;2647					iModifier += GET_PLAYER(kTradeConnection.m_eDestOwner).GetPlayerPolicies()->GetNumericModifier(POLICYMOD_INTERNAL_TRADE_MODIFIER);2648					iValue *= iModifier;2649					iValue /= 100;2650				}2651				break;2652			case TRADE_CONNECTION_PRODUCTION:2653				if (eYield == YIELD_PRODUCTION)2654				{2655#if defined(MOD_TRADE_ROUTE_SCALING)2656					iValue = GD_INT_GET(TRADE_ROUTE_BASE_PRODUCTION_VALUE);2657#else2658					iValue = 300;2659#endif2660#if defined(MOD_API_UNIFIED_YIELDS)2661					iValue += GetTradeConnectionPolicyValueTimes100(kTradeConnection, eYield);2662					iValue += GetTradeConnectionOtherTraitValueTimes100(kTradeConnection, eYield, false);2663#endif2664					iValue += GC.getEraInfo(GET_PLAYER(kTradeConnection.m_eDestOwner).GetCurrentEra())->getTradeRouteProductionBonusTimes100();2665					iValue *= (GC.getEraInfo(GC.getGame().getStartEra())->getConstructPercent() + GC.getEraInfo(GC.getGame().getStartEra())->getTrainPercent()) / 2;2666					iValue /= 100;26672668					int iModifier = 100;2669					int iDomainModifier = GetTradeConnectionDomainValueModifierTimes100(kTradeConnection, eYield);2670					iModifier += iDomainModifier;2671					iModifier += GET_PLAYER(kTradeConnection.m_eDestOwner).GetPlayerPolicies()->GetNumericModifier(POLICYMOD_INTERNAL_TRADE_MODIFIER);2672					iValue *= iModifier;2673					iValue /= 100;2674				}2675				break;2676			}2677		}2678	}26792680	return iValue;	2681}

Calls

Called by