diff --git a/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs b/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs index 10f986b..ff1592b 100644 --- a/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs +++ b/Projects/InfectionFreeZone/InfectionFreeZone/InfectionFreeZone.cs @@ -4,7 +4,9 @@ using System.Linq; using BepInEx; using BepInEx.Configuration; using GameCustomization; +using Gameplay.Buildings; using Gameplay.GameResources; +using Gameplay.InGameResources; using Gameplay.Scavenge; using Gameplay.Units.Workers.WorkSystem.Works; using HarmonyLib; @@ -32,6 +34,7 @@ namespace InfectionFreeZone { public static ConfigEntry resourceScavengingMultiplier; public static ConfigEntry buildingStorageCapacityMultiplier; public static ConfigEntry buildingQuartersCapacityMultiplier; + public static ConfigEntry buildingDeconstructionResourcesMultiplier; // public static ConfigEntry workSpeedMultiplier; public void Awake() { @@ -42,6 +45,7 @@ namespace InfectionFreeZone { resourceScavengingMultiplier = Config.Bind("General", "ResourceScavengingMultiplier", 1f); buildingStorageCapacityMultiplier = Config.Bind("General", "BuildingStorageCapacityMultiplier", 1f); buildingQuartersCapacityMultiplier = Config.Bind("General", "BuildingQuartersCapacityMultiplier", 1f); + buildingDeconstructionResourcesMultiplier = Config.Bind("General", "BuildingDeconstructionResourcesMultiplier", 1f); // workSpeedMultiplier = Config.Bind("General", "WorkSpeedMultiplier", 1f); Logger.LogInfo("Cyka mod loaded"); @@ -118,7 +122,7 @@ namespace InfectionFreeZone { } [HarmonyPostfix] - [HarmonyPatch(typeof(PlaceableObjectDraft), "GetCapacity")] + [HarmonyPatch(typeof(PlaceableObjectDraft), "GetCapacity", typeof(float), typeof(float))] public static void PostfixGetCapacity(ref int __result) { if (Main.buildingStorageCapacityMultiplier.Value <= 0) return; @@ -142,6 +146,28 @@ namespace InfectionFreeZone { if (Main.debug.Value) Console.WriteLine($"Building capacity modified to {__result}"); } + + [HarmonyPostfix] + [HarmonyPatch(typeof(Building), "DeconstructionResources", MethodType.Getter)] + public static void PostfixDeconstructionResources(ref ResourceQuantity[] __result) { + if (Main.buildingDeconstructionResourcesMultiplier.Value <= 0) + return; + + if (Main.debug.Value) + Console.WriteLine($"Deconstruction resources is {__result}"); + + for (int i = 0; i < __result.Length; i++) { + var resourceQuantity = __result[i]; + if (Main.debug.Value) + Console.WriteLine($"Resource quantity is {resourceQuantity}"); + + if (Main.debug.Value) + Console.WriteLine($"Resource quantity value is {resourceQuantity.value}"); + resourceQuantity.value *= Main.buildingDeconstructionResourcesMultiplier.Value; + if (Main.debug.Value) + Console.WriteLine($"Resource quantity value modified to {resourceQuantity.value}"); + } + } // private void InstantiateResources() // { // foreach (KeyValuePair generatedResource in this._resourcesToDrop)