diff --git a/Projects/CaptainOfIndustry/CykaOfIndustry/Patches.cs b/Projects/CaptainOfIndustry/CykaOfIndustry/Patches.cs index 8517e30..0e0d2ca 100644 --- a/Projects/CaptainOfIndustry/CykaOfIndustry/Patches.cs +++ b/Projects/CaptainOfIndustry/CykaOfIndustry/Patches.cs @@ -508,38 +508,52 @@ namespace CykaOfIndustry { [HarmonyPatch(typeof(Excavator), "MineMixedAt")] public class MineMixedAtPatch { - public static Dictionary originalCapacity = new Dictionary(); + public static Dictionary originalCapacity = new Dictionary(); - public static Dictionary> originalMinedThicknessByDistance = - new Dictionary>(); + public static Dictionary> originalMinedThicknessByDistance = + new Dictionary>(); public static Dictionary originalMineTileIterations = new Dictionary(); + + public static Dictionary originalMaxMiningDistance = + new Dictionary(); static void Prefix(ref Excavator __instance) { - if (!originalCapacity.ContainsKey(__instance)) { - originalCapacity.Add(__instance, __instance.Prototype.Capacity); + if (!originalCapacity.ContainsKey(__instance.Prototype)) { + originalCapacity.Add(__instance.Prototype, __instance.Prototype.Capacity); } var trav = Traverse.Create(__instance.Prototype); trav.Field("Capacity") - .SetValue(new Quantity(originalCapacity[__instance].Value * Main.excavatorCapacityMultiplier.Value)); + .SetValue(new Quantity(originalCapacity[__instance.Prototype].Value * Main.excavatorCapacityMultiplier.Value)); if (Main.debugMode.Value) Console.WriteLine("IndustrialCyka: Excavator capacity: {0}", __instance.Prototype.Capacity.Value); - if (!originalMinedThicknessByDistance.ContainsKey(__instance)) { - originalMinedThicknessByDistance.Add(__instance, + if (!originalMinedThicknessByDistance.ContainsKey(__instance.Prototype)) { + originalMinedThicknessByDistance.Add(__instance.Prototype, trav.Field("MinedThicknessByDistance").GetValue>()); } trav.Field("MinedThicknessByDistance") - .SetValue(originalMinedThicknessByDistance[__instance].Select(t => + .SetValue(originalMinedThicknessByDistance[__instance.Prototype].Select(t => new ThicknessTilesF((int)(t.Value.ToFloat() * Main.excavatorMiningAreaMultiplier.Value))) .ToImmutableArray()); if (Main.debugMode.Value) Console.WriteLine("IndustrialCyka: Excavator mined thickness: {0}", __instance.Prototype.MinedThicknessByDistance); + if (!originalMaxMiningDistance.ContainsKey(__instance.Prototype)) { + originalMaxMiningDistance.Add(__instance.Prototype, trav.Field("MaxMiningDistance").GetValue()); + } + var value = originalMaxMiningDistance[__instance.Prototype]; + var newValueMiningDistance = new RelTile1i((int)(value.Value * Main.excavatorMaxReachMultiplier.Value)); + trav.Field("MaxMiningDistance") + .SetValue(newValueMiningDistance); + if (Main.debugMode.Value) + Console.WriteLine("IndustrialCyka: Excavator max mining distance: {0}", + __instance.Prototype.MaxMiningDistance); + var trav2 = Traverse.Create(__instance.Prototype.MineTimings); if (!originalMineTileIterations.ContainsKey(__instance.Prototype.MineTimings)) { originalMineTileIterations.Add(__instance.Prototype.MineTimings,