diff --git a/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs b/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs index 1907748..6624260 100644 --- a/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs +++ b/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs @@ -4,6 +4,7 @@ using System.Linq; using BepInEx; using BepInEx.Configuration; using Controllers; +using Controllers.CharacterLogic; using Controllers.Weather; using GameCustomization; using Gameplay.Buildings; @@ -353,57 +354,65 @@ namespace InfectionFreeZone { Console.WriteLine($"Production time modified to {__result}"); } - [HarmonyPostfix] - [HarmonyPatch(typeof(CharactersConfig), MethodType.Constructor, new Type[] { })] - public static void PostfixCharactersConfig(CharactersConfig __instance) { + [HarmonyPrefix] + [HarmonyPatch(typeof(CitizensController), "IncreasePopulation")] + // Could not find a better way to do this + public static void PostfixCharactersConfig(ref CitizensController __instance) { if (Main.birthingConfigDebug.Value) - Console.WriteLine($"Characters config created"); + Console.WriteLine($"Citizens controller IncreasePopulation"); + var trav = Traverse.Create(__instance); + var charactersConfig = trav.Field("_charactersConfig"); + var charactersConfigV = charactersConfig.Value; + var bornConfig = charactersConfigV.bornConfig; - __instance.bornConfig.MaxCitizensInZoneToChildrenBorn = Main.maxCitizensInZoneToChildrenBorn.Value; + bornConfig.MaxCitizensInZoneToChildrenBorn = Main.maxCitizensInZoneToChildrenBorn.Value; if (Main.birthingConfigDebug.Value) Console.WriteLine( - $"Max citizens in zone to children born is {__instance.bornConfig.MaxCitizensInZoneToChildrenBorn}"); + $"Max citizens in zone to children born is {bornConfig.MaxCitizensInZoneToChildrenBorn}"); - __instance.bornConfig.MoraleInfluenceFloorParam = Main.moraleInfluenceFloorParam.Value; + bornConfig.MoraleInfluenceFloorParam = Main.moraleInfluenceFloorParam.Value; if (Main.birthingConfigDebug.Value) - Console.WriteLine($"Morale influence floor param is {__instance.bornConfig.MoraleInfluenceFloorParam}"); + Console.WriteLine($"Morale influence floor param is {bornConfig.MoraleInfluenceFloorParam}"); - __instance.bornConfig.MoraleInfluenceCeilingParam = Main.moraleInfluenceCeilingParam.Value; + bornConfig.MoraleInfluenceCeilingParam = Main.moraleInfluenceCeilingParam.Value; if (Main.birthingConfigDebug.Value) Console.WriteLine( - $"Morale influence ceiling param is {__instance.bornConfig.MoraleInfluenceCeilingParam}"); + $"Morale influence ceiling param is {bornConfig.MoraleInfluenceCeilingParam}"); - __instance.bornConfig.FoodStockInfluenceFloorParam = Main.foodStockInfluenceFloorParam.Value; + bornConfig.FoodStockInfluenceFloorParam = Main.foodStockInfluenceFloorParam.Value; if (Main.birthingConfigDebug.Value) Console.WriteLine( - $"Food stock influence floor param is {__instance.bornConfig.FoodStockInfluenceFloorParam}"); + $"Food stock influence floor param is {bornConfig.FoodStockInfluenceFloorParam}"); - __instance.bornConfig.FoodStockInfluenceCeilingParam = Main.foodStockInfluenceCeilingParam.Value; + bornConfig.FoodStockInfluenceCeilingParam = Main.foodStockInfluenceCeilingParam.Value; if (Main.birthingConfigDebug.Value) Console.WriteLine( - $"Food stock influence ceiling param is {__instance.bornConfig.FoodStockInfluenceCeilingParam}"); + $"Food stock influence ceiling param is {bornConfig.FoodStockInfluenceCeilingParam}"); - __instance.bornConfig.QuartersRatioInfluenceFloorParam = Main.quartersRatioInfluenceFloorParam.Value; + bornConfig.QuartersRatioInfluenceFloorParam = Main.quartersRatioInfluenceFloorParam.Value; if (Main.birthingConfigDebug.Value) Console.WriteLine( - $"Quarters ratio influence floor param is {__instance.bornConfig.QuartersRatioInfluenceFloorParam}"); + $"Quarters ratio influence floor param is {bornConfig.QuartersRatioInfluenceFloorParam}"); - __instance.bornConfig.QuartersRatioInfluenceCeilingParam = Main.quartersRatioInfluenceCeilingParam.Value; + bornConfig.QuartersRatioInfluenceCeilingParam = Main.quartersRatioInfluenceCeilingParam.Value; if (Main.birthingConfigDebug.Value) Console.WriteLine( - $"Quarters ratio influence ceiling param is {__instance.bornConfig.QuartersRatioInfluenceCeilingParam}"); + $"Quarters ratio influence ceiling param is {bornConfig.QuartersRatioInfluenceCeilingParam}"); - __instance.bornConfig.ChildToAdultRatioInfluenceFloorParam = + bornConfig.ChildToAdultRatioInfluenceFloorParam = Main.childToAdultRatioInfluenceFloorParam.Value; if (Main.birthingConfigDebug.Value) Console.WriteLine( - $"Child to adult ratio influence floor param is {__instance.bornConfig.ChildToAdultRatioInfluenceFloorParam}"); + $"Child to adult ratio influence floor param is {bornConfig.ChildToAdultRatioInfluenceFloorParam}"); - __instance.bornConfig.ChildToAdultRatioInfluenceCeilingParam = + bornConfig.ChildToAdultRatioInfluenceCeilingParam = Main.childToAdultRatioInfluenceCeilingParam.Value; if (Main.birthingConfigDebug.Value) Console.WriteLine( - $"Child to adult ratio influence ceiling param is {__instance.bornConfig.ChildToAdultRatioInfluenceCeilingParam}"); + $"Child to adult ratio influence ceiling param is {bornConfig.ChildToAdultRatioInfluenceCeilingParam}"); + + charactersConfigV.bornConfig = bornConfig; + charactersConfig.Value = charactersConfigV; } } } \ No newline at end of file