Code
741/// Load XML data742bool CvBeliefEntry::CacheResults(Database::Results& kResults, CvDatabaseUtility& kUtility)743{744 if(!CvBaseInfo::CacheResults(kResults, kUtility))745 return false;746747 //Basic Properties748 setShortDescription(kResults.GetText("ShortDescription"));749750 m_iMinPopulation = kResults.GetInt("MinPopulation");751 m_iMinFollowers = kResults.GetInt("MinFollowers");752 m_iMaxDistance = kResults.GetInt("MaxDistance");753 m_iCityGrowthModifier = kResults.GetInt("CityGrowthModifier");754 m_iFaithFromKills = kResults.GetInt("FaithFromKills");755 m_iFaithFromDyingUnits = kResults.GetInt("FaithFromDyingUnits");756 m_iRiverHappiness = kResults.GetInt("RiverHappiness");757 m_iHappinessPerCity = kResults.GetInt("HappinessPerCity");758 m_iHappinessPerXPeacefulForeignFollowers = kResults.GetInt("HappinessPerXPeacefulForeignFollowers");759 m_iPlotCultureCostModifier = kResults.GetInt("PlotCultureCostModifier");760 m_iCityRangeStrikeModifier = kResults.GetInt("CityRangeStrikeModifier");761 m_iCombatModifierEnemyCities = kResults.GetInt("CombatModifierEnemyCities");762 m_iCombatModifierFriendlyCities = kResults.GetInt("CombatModifierFriendlyCities");763 m_iFriendlyHealChange = kResults.GetInt("FriendlyHealChange");764 m_iCityStateFriendshipModifier = kResults.GetInt("CityStateFriendshipModifier");765 m_iLandBarbarianConversionPercent = kResults.GetInt("LandBarbarianConversionPercent");766 m_iWonderProductionModifier = kResults.GetInt("WonderProductionModifier");767 m_iPlayerHappiness = kResults.GetInt("PlayerHappiness");768 m_iPlayerCultureModifier = kResults.GetInt("PlayerCultureModifier");769 m_fHappinessPerFollowingCity = kResults.GetFloat("HappinessPerFollowingCity");770 m_iGoldPerFollowingCity = kResults.GetInt("GoldPerFollowingCity");771 m_iGoldPerXFollowers = kResults.GetInt("GoldPerXFollowers");772 m_iGoldWhenCityAdopts = kResults.GetInt("GoldPerFirstCityConversion");773 m_iSciencePerOtherReligionFollower= kResults.GetInt("SciencePerOtherReligionFollower");774 m_iSpreadDistanceModifier = kResults.GetInt("SpreadDistanceModifier");775 m_iSpreadStrengthModifier = kResults.GetInt("SpreadStrengthModifier");776 m_iProphetStrengthModifier = kResults.GetInt("ProphetStrengthModifier");777 m_iProphetCostModifier = kResults.GetInt("ProphetCostModifier");778 m_iMissionaryStrengthModifier = kResults.GetInt("MissionaryStrengthModifier");779 m_iMissionaryCostModifier = kResults.GetInt("MissionaryCostModifier");780 m_iFriendlyCityStateSpreadModifier= kResults.GetInt("FriendlyCityStateSpreadModifier");781 m_iGreatPersonExpendedFaith = kResults.GetInt("GreatPersonExpendedFaith");782 m_iCityStateMinimumInfluence = kResults.GetInt("CityStateMinimumInfluence");783 m_iCityStateInfluenceModifier = kResults.GetInt("CityStateInfluenceModifier");784 m_iOtherReligionPressureErosion = kResults.GetInt("OtherReligionPressureErosion");785 m_iSpyPressure = kResults.GetInt("SpyPressure");786 m_iInquisitorPressureRetention = kResults.GetInt("InquisitorPressureRetention");787 m_iFaithBuildingTourism = kResults.GetInt("FaithBuildingTourism");788789 m_bPantheon = kResults.GetBool("Pantheon");790 m_bFounder = kResults.GetBool("Founder");791 m_bFollower = kResults.GetBool("Follower");792 m_bEnhancer = kResults.GetBool("Enhancer");793 m_bReformer = kResults.GetBool("Reformation");794 m_bRequiresPeace = kResults.GetBool("RequiresPeace");795 m_bConvertsBarbarians = kResults.GetBool("ConvertsBarbarians");796 m_bFaithPurchaseAllGreatPeople = kResults.GetBool("FaithPurchaseAllGreatPeople");797798 //References799 const char* szTextVal;800 szTextVal = kResults.GetText("ObsoleteEra");801 m_eObsoleteEra = (EraTypes)GC.getInfoTypeForString(szTextVal, true);802 szTextVal = kResults.GetText("ResourceRevealed");803 m_eResourceRevealed = (ResourceTypes)GC.getInfoTypeForString(szTextVal, true);804 szTextVal = kResults.GetText("SpreadModifierDoublingTech");805 m_eSpreadModifierDoublingTech = (TechTypes)GC.getInfoTypeForString(szTextVal, true);806807 //Arrays808 const char* szBeliefType = GetType();809 kUtility.SetYields(m_paiCityYieldChange, "Belief_CityYieldChanges", "BeliefType", szBeliefType);810 kUtility.SetYields(m_paiHolyCityYieldChange, "Belief_HolyCityYieldChanges", "BeliefType", szBeliefType);811 kUtility.SetYields(m_piYieldChangeAnySpecialist, "Belief_YieldChangeAnySpecialist", "BeliefType", szBeliefType);812 kUtility.SetYields(m_piYieldChangeTradeRoute, "Belief_YieldChangeTradeRoute", "BeliefType", szBeliefType);813 kUtility.SetYields(m_piYieldChangeNaturalWonder, "Belief_YieldChangeNaturalWonder", "BeliefType", szBeliefType);814 kUtility.SetYields(m_piYieldChangeWorldWonder, "Belief_YieldChangeWorldWonder", "BeliefType", szBeliefType);815 kUtility.SetYields(m_piYieldModifierNaturalWonder, "Belief_YieldModifierNaturalWonder", "BeliefType", szBeliefType);816 kUtility.PopulateArrayByValue(m_piMaxYieldModifierPerFollower, "Yields", "Belief_MaxYieldModifierPerFollower", "YieldType", "BeliefType", szBeliefType, "Max");817 kUtility.PopulateArrayByValue(m_piResourceHappiness, "Resources", "Belief_ResourceHappiness", "ResourceType", "BeliefType", szBeliefType, "HappinessChange");818 kUtility.PopulateArrayByValue(m_piResourceQuantityModifiers, "Resources", "Belief_ResourceQuantityModifiers", "ResourceType", "BeliefType", szBeliefType, "ResourceQuantityModifier");819 kUtility.PopulateArrayByValue(m_paiBuildingClassHappiness, "BuildingClasses", "Belief_BuildingClassHappiness", "BuildingClassType", "BeliefType", szBeliefType, "Happiness");820 kUtility.PopulateArrayByValue(m_paiBuildingClassTourism, "BuildingClasses", "Belief_BuildingClassTourism", "BuildingClassType", "BeliefType", szBeliefType, "Tourism");821 kUtility.PopulateArrayByValue(m_paiYieldChangePerForeignCity, "Yields", "Belief_YieldChangePerForeignCity", "YieldType", "BeliefType", szBeliefType, "Yield");822 kUtility.PopulateArrayByValue(m_paiYieldChangePerXForeignFollowers, "Yields", "Belief_YieldChangePerXForeignFollowers", "YieldType", "BeliefType", szBeliefType, "ForeignFollowers");823#if defined(MOD_API_UNIFIED_YIELDS)824 kUtility.PopulateArrayByValue(m_piYieldPerFollowingCity, "Yields", "Belief_YieldPerFollowingCity", "YieldType", "BeliefType", szBeliefType, "Yield");825 kUtility.PopulateArrayByValue(m_piYieldPerXFollowers, "Yields", "Belief_YieldPerXFollowers", "YieldType", "BeliefType", szBeliefType, "PerXFollowers");826 kUtility.PopulateArrayByValue(m_piYieldPerOtherReligionFollower, "Yields", "Belief_YieldPerOtherReligionFollower", "YieldType", "BeliefType", szBeliefType, "Yield");827#endif828 kUtility.PopulateArrayByExistence(m_pbFaithPurchaseUnitEraEnabled, "Eras", "Belief_EraFaithUnitPurchase", "EraType", "BeliefType", szBeliefType);829 kUtility.PopulateArrayByExistence(m_pbBuildingClassEnabled, "BuildingClasses", "Belief_BuildingClassFaithPurchase", "BuildingClassType", "BeliefType", szBeliefType);830831 //ImprovementYieldChanges832 {833 kUtility.Initialize2DArray(m_ppiImprovementYieldChanges, "Improvements", "Yields");834835 std::string strKey("Belief_ImprovementYieldChanges");836 Database::Results* pResults = kUtility.GetResults(strKey);837 if(pResults == NULL)838 {839 pResults = kUtility.PrepareResults(strKey, "select Improvements.ID as ImprovementID, Yields.ID as YieldID, Yield from Belief_ImprovementYieldChanges inner join Improvements on Improvements.Type = ImprovementType inner join Yields on Yields.Type = YieldType where BeliefType = ?");840 }841842 pResults->Bind(1, szBeliefType);843844 while(pResults->Step())845 {846 const int ImprovementID = pResults->GetInt(0);847 const int YieldID = pResults->GetInt(1);848 const int yield = pResults->GetInt(2);849850 m_ppiImprovementYieldChanges[ImprovementID][YieldID] = yield;851 }852 }853854 //BuildingClassYieldChanges855 {856 kUtility.Initialize2DArray(m_ppiBuildingClassYieldChanges, "BuildingClasses", "Yields");857858 std::string strKey("Belief_BuildingClassYieldChanges");859 Database::Results* pResults = kUtility.GetResults(strKey);860 if(pResults == NULL)861 {862 pResults = kUtility.PrepareResults(strKey, "select BuildingClasses.ID as BuildingClassID, Yields.ID as YieldID, YieldChange from Belief_BuildingClassYieldChanges inner join BuildingClasses on BuildingClasses.Type = BuildingClassType inner join Yields on Yields.Type = YieldType where BeliefType = ?");863 }864865 pResults->Bind(1, szBeliefType);866867 while(pResults->Step())868 {869 const int BuildingClassID = pResults->GetInt(0);870 const int iYieldID = pResults->GetInt(1);871 const int iYieldChange = pResults->GetInt(2);872873 m_ppiBuildingClassYieldChanges[BuildingClassID][iYieldID] = iYieldChange;874 }875 }876877 //FeatureYieldChanges878 {879 kUtility.Initialize2DArray(m_ppaiFeatureYieldChange, "Features", "Yields");880881 std::string strKey("Belief_FeatureYieldChanges");882 Database::Results* pResults = kUtility.GetResults(strKey);883 if(pResults == NULL)884 {885 pResults = kUtility.PrepareResults(strKey, "select Features.ID as FeatureID, Yields.ID as YieldID, Yield from Belief_FeatureYieldChanges inner join Features on Features.Type = FeatureType inner join Yields on Yields.Type = YieldType where BeliefType = ?");886 }887888 pResults->Bind(1, szBeliefType);889890 while(pResults->Step())891 {892 const int FeatureID = pResults->GetInt(0);893 const int YieldID = pResults->GetInt(1);894 const int yield = pResults->GetInt(2);895896 m_ppaiFeatureYieldChange[FeatureID][YieldID] = yield;897 }898 }899900#if defined(MOD_API_UNIFIED_YIELDS)901 //CityYieldFromUnimprovedFeature902 if (MOD_API_UNIFIED_YIELDS) {903 kUtility.Initialize2DArray(m_ppiCityYieldFromUnimprovedFeature, "Features", "Yields");904905 std::string strKey("Belief_CityYieldFromUnimprovedFeature");906 Database::Results* pResults = kUtility.GetResults(strKey);907 if(pResults == NULL)908 {909 pResults = kUtility.PrepareResults(strKey, "select Features.ID as FeatureID, Yields.ID as YieldID, Yield from Belief_CityYieldFromUnimprovedFeature inner join Features on Features.Type = FeatureType inner join Yields on Yields.Type = YieldType where BeliefType = ?");910 }911912 pResults->Bind(1, szBeliefType);913914 while(pResults->Step())915 {916 const int FeatureID = pResults->GetInt(0);917 const int YieldID = pResults->GetInt(1);918 const int yield = pResults->GetInt(2);919920 m_ppiCityYieldFromUnimprovedFeature[FeatureID][YieldID] = yield;921 }922 }923924 //UnimprovedFeatureYieldChanges925 if (MOD_API_UNIFIED_YIELDS) {926 kUtility.Initialize2DArray(m_ppiUnimprovedFeatureYieldChanges, "Features", "Yields");927928 std::string strKey("Belief_UnimprovedFeatureYieldChanges");929 Database::Results* pResults = kUtility.GetResults(strKey);930 if(pResults == NULL)931 {932 pResults = kUtility.PrepareResults(strKey, "select Features.ID as FeatureID, Yields.ID as YieldID, Yield from Belief_UnimprovedFeatureYieldChanges inner join Features on Features.Type = FeatureType inner join Yields on Yields.Type = YieldType where BeliefType = ?");933 }934935 pResults->Bind(1, szBeliefType);936937 while(pResults->Step())938 {939 const int FeatureID = pResults->GetInt(0);940 const int YieldID = pResults->GetInt(1);941 const int yield = pResults->GetInt(2);942943 m_ppiUnimprovedFeatureYieldChanges[FeatureID][YieldID] = yield;944 }945 }946#endif947948 //ResourceYieldChanges949 {950 kUtility.Initialize2DArray(m_ppaiResourceYieldChange, "Resources", "Yields");951952 std::string strKey("Belief_ResourceYieldChanges");953 Database::Results* pResults = kUtility.GetResults(strKey);954 if(pResults == NULL)955 {956 pResults = kUtility.PrepareResults(strKey, "select Resources.ID as ResourceID, Yields.ID as YieldID, Yield from Belief_ResourceYieldChanges inner join Resources on Resources.Type = ResourceType inner join Yields on Yields.Type = YieldType where BeliefType = ?");957 }958959 pResults->Bind(1, szBeliefType);960961 while(pResults->Step())962 {963 const int ResourceID = pResults->GetInt(0);964 const int YieldID = pResults->GetInt(1);965 const int yield = pResults->GetInt(2);966967 m_ppaiResourceYieldChange[ResourceID][YieldID] = yield;968 }969 }970971 //TerrainYieldChanges972 {973 kUtility.Initialize2DArray(m_ppaiTerrainYieldChange, "Terrains", "Yields");974975 std::string strKey("Belief_TerrainYieldChanges");976 Database::Results* pResults = kUtility.GetResults(strKey);977 if(pResults == NULL)978 {979 pResults = kUtility.PrepareResults(strKey, "select Terrains.ID as TerrainID, Yields.ID as YieldID, Yield from Belief_TerrainYieldChanges inner join Terrains on Terrains.Type = TerrainType inner join Yields on Yields.Type = YieldType where BeliefType = ?");980 }981982 pResults->Bind(1, szBeliefType);983984 while(pResults->Step())985 {986 const int TerrainID = pResults->GetInt(0);987 const int YieldID = pResults->GetInt(1);988 const int yield = pResults->GetInt(2);989990 m_ppaiTerrainYieldChange[TerrainID][YieldID] = yield;991 }992 }993 994#if defined(MOD_API_UNIFIED_YIELDS)995 //TradeRouteYieldChange996 if (MOD_API_UNIFIED_YIELDS) {997 kUtility.Initialize2DArray(m_ppiTradeRouteYieldChange, "Domains", "Yields");998999 std::string strKey("Belief_TradeRouteYieldChange");1000 Database::Results* pResults = kUtility.GetResults(strKey);1001 if(pResults == NULL)1002 {1003 pResults = kUtility.PrepareResults(strKey, "select Domains.ID as DomainID, Yields.ID as YieldID, Yield from Belief_TradeRouteYieldChange inner join Domains on Domains.Type = DomainType inner join Yields on Yields.Type = YieldType where BeliefType = ?");1004 }10051006 pResults->Bind(1, szBeliefType);10071008 while(pResults->Step())1009 {1010 const int DomainID = pResults->GetInt(0);1011 const int YieldID = pResults->GetInt(1);1012 const int yield = pResults->GetInt(2);10131014 m_ppiTradeRouteYieldChange[DomainID][YieldID] = yield;1015 }1016 }1017 1018 //SpecialistYieldChanges1019 if (MOD_API_UNIFIED_YIELDS) {1020 kUtility.Initialize2DArray(m_ppiSpecialistYieldChange, "Specialists", "Yields");10211022 std::string strKey("Belief_SpecialistYieldChanges");1023 Database::Results* pResults = kUtility.GetResults(strKey);1024 if(pResults == NULL)1025 {1026 pResults = kUtility.PrepareResults(strKey, "select Specialists.ID as SpecialistID, Yields.ID as YieldID, Yield from Belief_SpecialistYieldChanges inner join Specialists on Specialists.Type = SpecialistType inner join Yields on Yields.Type = YieldType where BeliefType = ?");1027 }10281029 pResults->Bind(1, szBeliefType);10301031 while(pResults->Step())1032 {1033 const int SpecialistID = pResults->GetInt(0);1034 const int YieldID = pResults->GetInt(1);1035 const int yield = pResults->GetInt(2);10361037 m_ppiSpecialistYieldChange[SpecialistID][YieldID] = yield;1038 }1039 }1040 1041 //GreatPersonExpendedYield1042 if (MOD_API_UNIFIED_YIELDS) {1043 kUtility.Initialize2DArray(m_ppiGreatPersonExpendedYield, "GreatPersons", "Yields");10441045 std::string strKey("Belief_GreatPersonExpendedYield");1046 Database::Results* pResults = kUtility.GetResults(strKey);1047 if(pResults == NULL)1048 {1049 pResults = kUtility.PrepareResults(strKey, "select GreatPersons.ID as GreatPersonID, Yields.ID as YieldID, Yield from Belief_GreatPersonExpendedYield inner join GreatPersons on GreatPersons.Type = GreatPersonType inner join Yields on Yields.Type = YieldType where BeliefType = ?");1050 }10511052 pResults->Bind(1, szBeliefType);10531054 while(pResults->Step())1055 {1056 const int GreatPersonID = pResults->GetInt(0);1057 const int YieldID = pResults->GetInt(1);1058 const int yield = pResults->GetInt(2);10591060 m_ppiGreatPersonExpendedYield[GreatPersonID][YieldID] = yield;1061 }1062 }1063 1064 kUtility.PopulateArrayByValue(m_piGoldenAgeGreatPersonRateModifier, "GreatPersons", "Belief_GoldenAgeGreatPersonRateModifier", "GreatPersonType", "BeliefType", szBeliefType, "Modifier");1065 kUtility.SetYields(m_piCapitalYieldChange, "Belief_CapitalYieldChanges", "BeliefType", szBeliefType);1066 kUtility.SetYields(m_piCoastalCityYieldChange, "Belief_CoastalCityYieldChanges", "BeliefType", szBeliefType);1067 kUtility.SetYields(m_piGreatWorkYieldChange, "Belief_GreatWorkYieldChanges", "BeliefType", szBeliefType);1068 kUtility.SetYields(m_piYieldFromKills, "Belief_YieldFromKills", "BeliefType", szBeliefType);1069 kUtility.SetYields(m_piYieldFromBarbarianKills, "Belief_YieldFromBarbarianKills", "BeliefType", szBeliefType);1070#endif10711072#if defined(MOD_RELIGION_PLOT_YIELDS)1073 if (MOD_RELIGION_PLOT_YIELDS)1074 //PlotYieldChanges1075 {1076 kUtility.Initialize2DArray(m_ppiPlotYieldChange, "Plots", "Yields");10771078 std::string strKey("Belief_PlotYieldChanges");1079 Database::Results* pResults = kUtility.GetResults(strKey);1080 if(pResults == NULL)1081 {1082 pResults = kUtility.PrepareResults(strKey, "select Plots.ID as PlotID, Yields.ID as YieldID, Yield from Belief_PlotYieldChanges inner join Plots on Plots.Type = PlotType inner join Yields on Yields.Type = YieldType where BeliefType = ?");1083 }10841085 pResults->Bind(1, szBeliefType);10861087 while(pResults->Step())1088 {1089 const int PlotID = pResults->GetInt(0);1090 const int YieldID = pResults->GetInt(1);1091 const int yield = pResults->GetInt(2);10921093 m_ppiPlotYieldChange[PlotID][YieldID] = yield;1094 }1095 }1096#endif10971098 return true;1099}