diff --git a/AbsorbentSoil/AbsorbentSoil.csproj b/AbsorbentSoil/AbsorbentSoil.csproj index 6a380d0..fd28bd8 100644 --- a/AbsorbentSoil/AbsorbentSoil.csproj +++ b/AbsorbentSoil/AbsorbentSoil.csproj @@ -7,6 +7,7 @@ latest disable /home/attila/.local/share/Steam/steamapps/common/Schedule I + true diff --git a/AbsorbentSoil/AbsorbentSoilMod.cs b/AbsorbentSoil/AbsorbentSoilMod.cs index 38b5420..b880cf6 100644 --- a/AbsorbentSoil/AbsorbentSoilMod.cs +++ b/AbsorbentSoil/AbsorbentSoilMod.cs @@ -341,31 +341,34 @@ namespace AbsorbentSoil [HarmonyPatch(typeof(PourSoilTask), "OnInitialPour")] internal static class PourSoilTask_OnInitialPour_Patch { - private static readonly FieldInfo SoilDefinitionField = - AccessTools.Field(typeof(PourSoilTask), "_soilDefinition"); - - private static readonly FieldInfo GrowContainerField = - AccessTools.Field(typeof(PourSoilTask), "_growContainer"); - - private static void Postfix(PourSoilTask __instance) + private static unsafe void Postfix(PourSoilTask __instance) { try { - var soilDef = SoilDefinitionField?.GetValue(__instance) as SoilDefinition; - var growContainer = GrowContainerField?.GetValue(__instance) as GrowContainer; - var pot = growContainer?.TryCast(); + nint basePtr = (nint)IL2CPP.Il2CppObjectBaseToPtrNotNull(__instance); - MelonLogger.Msg($"PourSoilTask.OnInitialPour fired. Soil={soilDef?.ID}, Uses={soilDef?.Uses}, Pot={pot?.name}"); + nint soilDefPtr = *(nint*)(basePtr + 0xD0); + nint growContainerPtr = *(nint*)(basePtr + 0xE8); + + SoilDefinition soilDef = soilDefPtr != 0 + ? new SoilDefinition(soilDefPtr) + : null; + + GrowContainer growContainer = growContainerPtr != 0 + ? new GrowContainer(growContainerPtr) + : null; + + Pot pot = growContainer?.TryCast(); + + MelonLogger.Msg($"PourSoilTask.OnInitialPour offset-read fired. Soil={soilDef?.ID}, Uses={soilDef?.Uses}, Pot={pot?.name}"); if (pot == null || soilDef == null) return; SoilHelper.SetRemainingSoilUses(pot, soilDef.Uses); - - // New soil means fresh soil. Clear old retained additives. AdditiveMemory.Forget(pot); - MelonLogger.Msg($"[Absorbent Soil] Fresh soil added to pot '{PotKeyHelper.GetPotKey(pot)}'. Max uses={soilDef.Uses}. Cleared old additives."); + MelonLogger.Msg($"[Absorbent Soil] Fresh soil added. Pot='{PotKeyHelper.GetPotKey(pot)}', Soil='{soilDef.ID}', Uses={soilDef.Uses}. Cleared old additives."); } catch (Exception ex) { diff --git a/AbsorbentSoil/bin/Release/net6.0/AbsorbentSoil.pdb b/AbsorbentSoil/bin/Release/net6.0/AbsorbentSoil.pdb index 7b4c4ed..f219977 100644 Binary files a/AbsorbentSoil/bin/Release/net6.0/AbsorbentSoil.pdb and b/AbsorbentSoil/bin/Release/net6.0/AbsorbentSoil.pdb differ diff --git a/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.AssemblyInfo.cs b/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.AssemblyInfo.cs index bdc2b09..bc3144f 100644 --- a/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.AssemblyInfo.cs +++ b/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("AbsorbentSoil")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+37e8635b49f6dac44b046923e2d6164f21e21c5e")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+df8a62295eea38ad16e750280eea878da48af3ae")] [assembly: System.Reflection.AssemblyProductAttribute("AbsorbentSoil")] [assembly: System.Reflection.AssemblyTitleAttribute("AbsorbentSoil")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.AssemblyInfoInputs.cache b/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.AssemblyInfoInputs.cache index 74932c3..4f9bf71 100644 --- a/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.AssemblyInfoInputs.cache +++ b/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.AssemblyInfoInputs.cache @@ -1 +1 @@ -e91a6e148fbebb52137b7ddb0d020d001faa537353e4a942e8c7b383650eef69 +205b227cc6bf36a9df78289d110ec64054a771277aee03d496358bdc65fdfb7b diff --git a/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.dll b/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.dll index e40fa05..6da0a1d 100644 Binary files a/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.dll and b/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.dll differ diff --git a/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.pdb b/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.pdb index 7b4c4ed..f219977 100644 Binary files a/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.pdb and b/AbsorbentSoil/obj/Release/net6.0/AbsorbentSoil.pdb differ diff --git a/AbsorbentSoil/obj/Release/net6.0/ref/AbsorbentSoil.dll b/AbsorbentSoil/obj/Release/net6.0/ref/AbsorbentSoil.dll index 765291d..145db4b 100644 Binary files a/AbsorbentSoil/obj/Release/net6.0/ref/AbsorbentSoil.dll and b/AbsorbentSoil/obj/Release/net6.0/ref/AbsorbentSoil.dll differ diff --git a/AbsorbentSoil/obj/Release/net6.0/refint/AbsorbentSoil.dll b/AbsorbentSoil/obj/Release/net6.0/refint/AbsorbentSoil.dll index 765291d..145db4b 100644 Binary files a/AbsorbentSoil/obj/Release/net6.0/refint/AbsorbentSoil.dll and b/AbsorbentSoil/obj/Release/net6.0/refint/AbsorbentSoil.dll differ