diff --git a/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs b/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs index 06b7d84..6ac9ca2 100644 --- a/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs +++ b/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs @@ -11,6 +11,7 @@ using Gameplay.GameResources; using Gameplay.InGameResources; using Gameplay.Rebuilding; using Gameplay.Scavenge; +using Gameplay.Units.Characters; using Gameplay.Units.Icons; using Gameplay.Units.Movements; using Gameplay.Units.Workers.WorkSystem.Works; @@ -50,6 +51,16 @@ namespace InfectionFreeZone { public static ConfigEntry constructionTimeMultiplier; public static ConfigEntry productionTimeMultiplier; + public static ConfigEntry maxCitizensInZoneToChildrenBorn; + public static ConfigEntry moraleInfluenceFloorParam; + public static ConfigEntry moraleInfluenceCeilingParam; + public static ConfigEntry foodStockInfluenceFloorParam; + public static ConfigEntry foodStockInfluenceCeilingParam; + public static ConfigEntry quartersRatioInfluenceFloorParam; + public static ConfigEntry quartersRatioInfluenceCeilingParam; + public static ConfigEntry childToAdultRatioInfluenceFloorParam; + public static ConfigEntry childToAdultRatioInfluenceCeilingParam; + public void Awake() { debug = Config.Bind("General", "Debug", false); @@ -67,6 +78,21 @@ namespace InfectionFreeZone { constructionTimeMultiplier = Config.Bind("General", "Construction Time Multiplier", 1f); productionTimeMultiplier = Config.Bind("General", "Production Time Multiplier", 1f); + maxCitizensInZoneToChildrenBorn = + Config.Bind("Birthing Config", "Max Citizens in Zone to Children Born", 600); + moraleInfluenceFloorParam = Config.Bind("Birthing Config", "Morale Influence Floor Param", 0.3f); + moraleInfluenceCeilingParam = Config.Bind("Birthing Config", "Morale Influence Ceiling Param", 2f); + foodStockInfluenceFloorParam = Config.Bind("Birthing Config", "Food Stock Influence Floor Param", 0f); + foodStockInfluenceCeilingParam = Config.Bind("Birthing Config", "Food Stock Influence Ceiling Param", 1f); + quartersRatioInfluenceFloorParam = + Config.Bind("Birthing Config", "Quarters Ratio Influence Floor Param", 0.6f); + quartersRatioInfluenceCeilingParam = + Config.Bind("Birthing Config", "Quarters Ratio Influence Ceiling Param", 1.4f); + childToAdultRatioInfluenceFloorParam = + Config.Bind("Birthing Config", "Child to Adult Ratio Influence Floor Param", 1f); + childToAdultRatioInfluenceCeilingParam = + Config.Bind("Birthing Config", "Child to Adult Ratio Influence Ceiling Param", 0f); + Logger.LogInfo("Cyka mod loaded"); HarmonyFileLog.Enabled = true; Harmony harmony = new Harmony(pluginGuid); @@ -182,7 +208,7 @@ namespace InfectionFreeZone { [HarmonyPatch(typeof(Building), "DeconstructionResources", MethodType.Getter)] public static ResourceQuantity[] PostfixDeconstructionResources(ResourceQuantity[] __result) { if (Main.buildingDeconstructionResourcesMultiplier.Value <= 0) - return; + return __result; ResourceQuantity[] modifiedResult = new ResourceQuantity[__result.Length]; for (int i = 0; i < __result.Length; i++) { @@ -279,5 +305,21 @@ namespace InfectionFreeZone { if (Main.debug.Value) Console.WriteLine($"Production time modified to {__result}"); } + + [HarmonyPostfix] + [HarmonyPatch(typeof(CharactersConfig), MethodType.Constructor, new Type[] { })] + public static void PostfixCharactersConfig(CharactersConfig __instance) { + __instance.bornConfig.MaxCitizensInZoneToChildrenBorn = Main.maxCitizensInZoneToChildrenBorn.Value; + __instance.bornConfig.MoraleInfluenceFloorParam = Main.moraleInfluenceFloorParam.Value; + __instance.bornConfig.MoraleInfluenceCeilingParam = Main.moraleInfluenceCeilingParam.Value; + __instance.bornConfig.FoodStockInfluenceFloorParam = Main.foodStockInfluenceFloorParam.Value; + __instance.bornConfig.FoodStockInfluenceCeilingParam = Main.foodStockInfluenceCeilingParam.Value; + __instance.bornConfig.QuartersRatioInfluenceFloorParam = Main.quartersRatioInfluenceFloorParam.Value; + __instance.bornConfig.QuartersRatioInfluenceCeilingParam = Main.quartersRatioInfluenceCeilingParam.Value; + __instance.bornConfig.ChildToAdultRatioInfluenceFloorParam = + Main.childToAdultRatioInfluenceFloorParam.Value; + __instance.bornConfig.ChildToAdultRatioInfluenceCeilingParam = + Main.childToAdultRatioInfluenceCeilingParam.Value; + } } } \ No newline at end of file