diff --git a/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs b/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs index ec55f5c..fa510aa 100644 --- a/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs +++ b/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs @@ -7,6 +7,7 @@ using Controllers; using Controllers.CharacterLogic; using Controllers.Weather; using GameCustomization; +using Gameplay; using Gameplay.Buildings; using Gameplay.GameResources; using Gameplay.InGameResources; @@ -19,6 +20,7 @@ using Gameplay.Units.Workers.WorkSystem.Works; using Gameplay.Vehicles; using HarmonyLib; using HarmonyLib.Tools; +using MapEssentials.Temp; using Zenject; // See: @@ -65,6 +67,7 @@ namespace InfectionFreeZone { public static ConfigEntry deconstructionTimeMultiplierDebug; public static ConfigEntry deconstructionTimeMultiplier; + public static ConfigEntry deconstructionWorkersPer100m; public static ConfigEntry constructionTimeMultiplierDebug; public static ConfigEntry constructionTimeMultiplier; @@ -108,6 +111,8 @@ namespace InfectionFreeZone { "Building Deconstruction Resources Multiplier Debug", false); buildingDeconstructionResourcesMultiplier = Config.Bind("General", "Building Deconstruction Resources Multiplier", 1f); + deconstructionWorkersPer100m = + Config.Bind("General", "Building Deconstruction Workers Per 100m", 0.0045f); humanMovementSpeedMultiplier = Config.Bind("General", "Human Movement Speed Multiplier", 1f); @@ -279,6 +284,24 @@ namespace InfectionFreeZone { return modifiedResult; } + [HarmonyPrefix] + [HarmonyPatch(typeof(BuildingDestruction), "Initialize")] + public static void PrefixBuildingDeconstruction(ref BuildingDestruction __instance) { + if (Main.deconstructionWorkersPer100m.Value <= 0) + return; + + var trav = Traverse.Create(__instance); + var config = trav.Field("_deconstructionConfig"); + var configV = config.Value; + if (Main.buildingDeconstructionResourcesMultiplierDebug.Value) + Console.WriteLine($"Building deconstruction workers per 100m is {configV.deconstructWorkersPer100m3OfBuilding}"); + + configV.deconstructWorkersPer100m3OfBuilding = Main.deconstructionWorkersPer100m.Value; + config.Value = configV; + if (Main.buildingDeconstructionResourcesMultiplierDebug.Value) + Console.WriteLine($"Building deconstruction workers per 100m modified to {configV.deconstructWorkersPer100m3OfBuilding}"); + } + [HarmonyPostfix] [HarmonyPatch(typeof(Movement), "CalculateSpeed")] public static void PostfixCalculateSpeedHuman(Movement __instance, ref float __result) { @@ -413,7 +436,7 @@ namespace InfectionFreeZone { if (Main.birthingConfigDebug.Value) Console.WriteLine( $"Child to adult ratio influence ceiling param is {bornConfig.ChildToAdultRatioInfluenceCeilingParam}"); - + charactersConfigV.bornConfig = bornConfig; charactersConfig.Value = charactersConfigV; }