diff --git a/Source/TTHarmony.cs b/Source/TTHarmony.cs
new file mode 100644
index 0000000..ced6cab
--- /dev/null
+++ b/Source/TTHarmony.cs
@@ -0,0 +1,83 @@
+/*
+Copyright 2025 Maciej Pawłowski
+
+This file is part of "Table Eating Toggle".
+
+"Table Eating Toggle" is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+"Table Eating Toggle" is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with "Table Eating Toggle". If not, see .
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Reflection.Emit;
+using System.Runtime.CompilerServices;
+using System.Text.RegularExpressions;
+using HarmonyLib;
+using RimWorld;
+using Verse;
+
+namespace TableToggle;
+
+[HarmonyPatch]
+public static class BaseChairValidator_Patch
+{
+ [HarmonyTranspiler]
+ public static IEnumerable Transpiler(IEnumerable instructions, ILGenerator generator)
+ {
+ CodeMatcher codeMatcher = new(instructions, generator);
+ try
+ {
+ codeMatcher.Start();
+ codeMatcher.MatchStartForward(
+ [
+ CodeMatch.LoadsField(typeof(Thing).GetField(nameof(Thing.def))),
+ CodeMatch.LoadsField(typeof(ThingDef).GetField(nameof(ThingDef.surfaceType))),
+ CodeMatch.LoadsConstant(),
+ CodeMatch.Branches()
+ ]
+ )
+ .ThrowIfInvalid("Could not find SurfaceType check");
+ }
+ catch (Exception e)
+ {
+ Log.Error(e.Message);
+ return instructions;
+ }
+ CodeInstruction[] replace = [
+ new(OpCodes.Call, AccessTools.Method(typeof(ThingWithComps), nameof(ThingWithComps.GetComp), null, [typeof(EatableComp)])),
+ new(OpCodes.Stloc_3),
+ new(OpCodes.Ldloc_3),
+ new(OpCodes.Brfalse_S, (Label)codeMatcher.InstructionAt(3).operand),
+ new(OpCodes.Ldloc_3),
+ new(OpCodes.Ldfld, typeof(EatableComp).GetField(nameof(EatableComp.EatableFrom))),
+ new(OpCodes.Brfalse_S, (Label)codeMatcher.InstructionAt(3).operand)
+ ];
+ codeMatcher.RemoveInstructions(4);
+ codeMatcher.Insert(replace);
+ return codeMatcher.Instructions().AsEnumerable();
+ }
+
+ [HarmonyTargetMethod]
+ private static MethodBase TargetMethod()
+ {
+ MethodInfo method = typeof(Toils_Ingest).GetMethods(BindingFlags.NonPublic | BindingFlags.Static)
+ .FirstOrDefault(m => m.GetCustomAttribute() != null && Regex.IsMatch(m.Name, $@"^g__BaseChairValidator\|\d+(_\d+)?"));
+
+ if (method is not null) return method;
+
+ IEnumerable nestedTypes = typeof(Toils_Ingest).GetNestedTypes(BindingFlags.NonPublic).Where(t => t.GetCustomAttribute() != null);
+ foreach(Type nested in nestedTypes)
+ {
+ method = nested.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance).FirstOrDefault(m => Regex.IsMatch(m.Name, $@"^g__BaseChairValidator\|\d+(_\d+)?"));
+ if (method is not null) return method;
+ }
+ return null;
+ }
+
+ // Building.GetComp().EatableFrom
+}
diff --git a/Source/TableToggle.cs b/Source/TableToggle.cs
new file mode 100644
index 0000000..20ecdde
--- /dev/null
+++ b/Source/TableToggle.cs
@@ -0,0 +1,27 @@
+/*
+Copyright 2025 Maciej Pawłowski
+
+This file is part of "Table Eating Toggle".
+
+"Table Eating Toggle" is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+"Table Eating Toggle" is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with "Table Eating Toggle". If not, see .
+*/
+
+using HarmonyLib;
+using Verse;
+
+namespace TableToggle;
+
+[StaticConstructorOnStartup]
+public static class TableToggle
+{
+ static TableToggle()
+ {
+ Harmony harmony = new("maciek.tabletoggle");
+ harmony.PatchAll();
+ Log.Message("Table Eating Toggle initialised");
+ }
+}
diff --git a/Source/TableToggle.csproj b/Source/TableToggle.csproj
index 9d66a97..8e0b179 100644
--- a/Source/TableToggle.csproj
+++ b/Source/TableToggle.csproj
@@ -40,6 +40,10 @@ You should have received a copy of the GNU General Public License along with "Ta
../../../RimWorldLinux_Data/Managed/UnityEngine.CoreModule.dll
False
+
+ ../../2009463077/Current/Assemblies/0Harmony.dll
+ False
+