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}