Bazaar developer reference

CvPlayerTrade::GetTradeConnectionPolicyValueTimes100(const TradeConnection &, YieldTypes)

Defined in
CvTradeClasses.cpp, line 2304
Class
CvPlayerTrade
Hook name
CivHooks::CvPlayerTrade_GetTradeConnectionPolicyValueTimes100

Hooks

static bool BeforeCvPlayerTrade_GetTradeConnectionPolicyValueTimes100(CvPlayerTrade* self, const TradeConnection& kTradeConnection, YieldTypes eYield, int& result);static void AfterCvPlayerTrade_GetTradeConnectionPolicyValueTimes100(CvPlayerTrade* self, const TradeConnection& kTradeConnection, YieldTypes eYield, int& result);static int ReplaceCvPlayerTrade_GetTradeConnectionPolicyValueTimes100(int (*original)(CvPlayerTrade*, const TradeConnection&, YieldTypes), CvPlayerTrade* self, const TradeConnection& kTradeConnection, YieldTypes eYield);CivRegisterBefore<CivHooks::CvPlayerTrade_GetTradeConnectionPolicyValueTimes100>(host, &BeforeCvPlayerTrade_GetTradeConnectionPolicyValueTimes100);CivRegisterAfter<CivHooks::CvPlayerTrade_GetTradeConnectionPolicyValueTimes100>(host, &AfterCvPlayerTrade_GetTradeConnectionPolicyValueTimes100);CivRegisterReplace<CivHooks::CvPlayerTrade_GetTradeConnectionPolicyValueTimes100>(host, &ReplaceCvPlayerTrade_GetTradeConnectionPolicyValueTimes100);

Code

2304int CvPlayerTrade::GetTradeConnectionPolicyValueTimes100(const TradeConnection& kTradeConnection, YieldTypes eYield)2305{2306#if !defined(MOD_API_UNIFIED_YIELDS)2307	// unnecessary code to make it compile for now2308	if (eYield != NO_YIELD)2309	{2310		eYield = eYield;2311	}2312#endif23132314	int iValue = 0;23152316#if defined(MOD_API_UNIFIED_YIELDS)2317	CvPlayer& kPlayer = GET_PLAYER(kTradeConnection.m_eOriginOwner);2318	iValue += kPlayer.getTradeRouteYieldChange(kTradeConnection.m_eDomain, eYield) * 100;2319	iValue += kPlayer.GetPlayerTraits()->GetTradeRouteYieldChange(kTradeConnection.m_eDomain, eYield) * 100;23202321	CvCity* pCity = GC.getMap().plot(kTradeConnection.m_iOriginX, kTradeConnection.m_iOriginY)->getPlotCity();2322	ReligionTypes eMajority = pCity->GetCityReligions()->GetReligiousMajority();2323	if(eMajority != NO_RELIGION)2324	{2325		const CvReligion* pReligion = GC.getGame().GetGameReligions()->GetReligion(eMajority, pCity->getOwner());2326		if(pReligion)2327		{2328			iValue += pReligion->m_Beliefs.GetTradeRouteYieldChange(kTradeConnection.m_eDomain, eYield) * 100;2329			BeliefTypes eSecondaryPantheon = pCity->GetCityReligions()->GetSecondaryReligionPantheonBelief();2330			if (eSecondaryPantheon != NO_BELIEF)2331			{2332				iValue += GC.GetGameBeliefs()->GetEntry(eSecondaryPantheon)->GetTradeRouteYieldChange(kTradeConnection.m_eDomain, eYield) * 100;2333			}2334		}2335	}2336#endif23372338	if (kTradeConnection.m_eConnectionType == TRADE_CONNECTION_INTERNATIONAL)2339	{2340#if defined(MOD_API_UNIFIED_YIELDS)2341	  if (eYield == YIELD_GOLD) {2342#endif2343		// domain type bonuses2344		if (kTradeConnection.m_eDomain == DOMAIN_LAND)2345		{2346			iValue += GET_PLAYER(kTradeConnection.m_eOriginOwner).GetPlayerPolicies()->GetNumericModifier(POLICYMOD_LAND_TRADE_GOLD_CHANGE);2347		}2348		else if (kTradeConnection.m_eDomain == DOMAIN_SEA)2349		{2350			iValue += GET_PLAYER(kTradeConnection.m_eOriginOwner).GetPlayerPolicies()->GetNumericModifier(POLICYMOD_SEA_TRADE_GOLD_CHANGE);2351		}23522353		// policy tree bonuses2354		CvPlayerPolicies* pOwnerPlayerPolicies = GET_PLAYER(kTradeConnection.m_eOriginOwner).GetPlayerPolicies();2355		CvPlayerPolicies* pDestPlayerPolicies = GET_PLAYER(kTradeConnection.m_eDestOwner).GetPlayerPolicies();23562357		PolicyBranchTypes eFreedom = (PolicyBranchTypes)GC.getPOLICY_BRANCH_FREEDOM();2358		PolicyBranchTypes eAutocracy = (PolicyBranchTypes)GC.getPOLICY_BRANCH_AUTOCRACY();2359		PolicyBranchTypes eOrder = (PolicyBranchTypes)GC.getPOLICY_BRANCH_ORDER();23602361		bool bBothAutocracy = false;2362		bool bBothOrder = false;2363		bool bBothFreedom = false;2364		if (eAutocracy != NO_POLICY_BRANCH_TYPE)2365		{2366			bBothAutocracy = pOwnerPlayerPolicies->IsPolicyBranchUnlocked(eAutocracy) && pDestPlayerPolicies->IsPolicyBranchUnlocked(eAutocracy);2367		}2368		if (eOrder != NO_POLICY_BRANCH_TYPE)2369		{2370			bBothOrder = pOwnerPlayerPolicies->IsPolicyBranchUnlocked(eOrder) && pDestPlayerPolicies->IsPolicyBranchUnlocked(eOrder);2371		}2372		if (eFreedom != NO_POLICY_BRANCH_TYPE)2373		{2374			bBothFreedom = pOwnerPlayerPolicies->IsPolicyBranchUnlocked(eFreedom) && pDestPlayerPolicies->IsPolicyBranchUnlocked(eFreedom);2375		}2376	2377		if (bBothAutocracy || bBothOrder || bBothFreedom)2378		{2379			iValue += GET_PLAYER(kTradeConnection.m_eOriginOwner).GetPlayerPolicies()->GetNumericModifier(POLICYMOD_SHARED_IDEOLOGY_TRADE_CHANGE) * 100;2380		}23812382		// city state bonus2383		if (GET_PLAYER(kTradeConnection.m_eDestOwner).isMinorCiv())2384		{2385			iValue += GET_PLAYER(kTradeConnection.m_eOriginOwner).GetPlayerPolicies()->GetNumericModifier(POLICYMOD_CITY_STATE_TRADE_CHANGE);2386		}2387#if defined(MOD_API_UNIFIED_YIELDS)2388	  }2389#endif2390	}23912392	return iValue;2393}

Calls

Called by