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