diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll
index 95b125e..75e20d8 100644
Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ
diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
index 36a0e15..c629645 100644
--- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
+++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
@@ -88,6 +88,7 @@
+
diff --git a/Source/ArachnaeSwarm/Patch_WorkGivers_Growing.cs b/Source/ArachnaeSwarm/Patch_WorkGivers_Growing.cs
new file mode 100644
index 0000000..4a416ee
--- /dev/null
+++ b/Source/ArachnaeSwarm/Patch_WorkGivers_Growing.cs
@@ -0,0 +1,96 @@
+using HarmonyLib;
+using RimWorld;
+using Verse;
+using Verse.AI;
+using System.Reflection;
+
+namespace ArachnaeSwarm
+{
+ [StaticConstructorOnStartup]
+ public static class Patch_WorkGivers_Growing
+ {
+ static Patch_WorkGivers_Growing()
+ {
+ var harmony = new Harmony("com.yourname.workgiversgrowingpatch");
+
+ // Patch WorkGiver_GrowerSow.JobOnCell
+ harmony.Patch(
+ original: AccessTools.Method(typeof(WorkGiver_GrowerSow), nameof(WorkGiver_GrowerSow.JobOnCell)),
+ prefix: new HarmonyMethod(typeof(Patch_WorkGivers_Growing), nameof(JobOnCell_GrowerSow_Prefix))
+ );
+
+ // Patch JobDriver_Deconstruct.TickActionInterval
+ harmony.Patch(
+ original: AccessTools.Method(typeof(JobDriver_Deconstruct), "TickActionInterval"),
+ prefix: new HarmonyMethod(typeof(Patch_WorkGivers_Growing), nameof(TickActionInterval_Deconstruct_Prefix))
+ );
+ }
+
+ public static bool JobOnCell_GrowerSow_Prefix(Pawn pawn, IntVec3 c, ref Job __result, WorkGiver_GrowerSow __instance)
+ {
+ // 检查是否是我们的自定义动物,并且它不是真正的机械体 (因为真正的机械体原版会处理)
+ if (ShouldEnableWorkSystem(pawn) && !pawn.RaceProps.IsMechanoid)
+ {
+ // 使用反射获取 WorkGiver_GrowerSow 实例的 wantedPlantDef 字段
+ ThingDef wantedPlantDef = (ThingDef)AccessTools.Field(typeof(WorkGiver_Grower), "wantedPlantDef").GetValue(__instance);
+
+ if (wantedPlantDef == null)
+ {
+ __result = null;
+ return false; // 跳过原版方法
+ }
+
+ // 强制使用 mechFixedSkillLevel 作为相关技能等级
+ int relevantSkillLevel = pawn.RaceProps.mechFixedSkillLevel;
+
+ // 然后进行原始的 sowMinSkill 检查
+ if (wantedPlantDef.plant.sowMinSkill > relevantSkillLevel)
+ {
+ __result = null; // 技能不足,不生成 Job
+ return false; // 跳过原版方法
+ }
+
+ // 如果技能足够,让原版方法继续执行,处理其他复杂的检查
+ // 注意:这里我们只处理了技能检查部分,其他逻辑仍然依赖原版方法。
+ // 如果原版方法在其他地方再次访问 pawn.skills,仍然可能出错。
+ // 但这是最直接的修复方法,避免了完全复制整个原始方法。
+ }
+
+ return true; // 执行原版方法
+ }
+
+ public static bool TickActionInterval_Deconstruct_Prefix(JobDriver_Deconstruct __instance, Pawn ___pawn, int delta)
+ {
+ // 检查是否是我们的自定义动物,并且它不是真正的机械体
+ if (ShouldEnableWorkSystem(___pawn) && !___pawn.RaceProps.IsMechanoid)
+ {
+ // 模拟技能学习,避免访问 pawn.skills 导致 NullReferenceException
+ // 这里我们不实际增加经验值,只是模拟原版方法的行为
+ // 避免了对 pawn.skills 的访问
+ if (__instance.Building.def.CostListAdjusted(__instance.Building.Stuff).Count > 0)
+ {
+ // 可以选择在这里添加一些日志,以便调试
+ // Log.Message($"Animal {___pawn.LabelShort} is deconstructing, simulating skill gain.");
+ }
+ return false; // 跳过原版方法
+ }
+ return true; // 执行原版方法
+ }
+
+ private static bool ShouldEnableWorkSystem(Pawn pawn)
+ {
+ // 检查 ThingDef 中是否有 CompProperties_WorkForNonMechs 配置
+ if (pawn.def.comps != null)
+ {
+ foreach (var compProperties in pawn.def.comps)
+ {
+ if (compProperties is CompProperties_WorkForNonMechs)
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/ArachnaeSwarm/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs b/Source/ArachnaeSwarm/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs
new file mode 100644
index 0000000..15efebf
--- /dev/null
+++ b/Source/ArachnaeSwarm/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
diff --git a/Source/ArachnaeSwarm/obj/Debug/ArachnaeSwarm.csproj.AssemblyReference.cache b/Source/ArachnaeSwarm/obj/Debug/ArachnaeSwarm.csproj.AssemblyReference.cache
new file mode 100644
index 0000000..33b62db
Binary files /dev/null and b/Source/ArachnaeSwarm/obj/Debug/ArachnaeSwarm.csproj.AssemblyReference.cache differ
diff --git a/Source/ArachnaeSwarm/obj/Debug/ArachnaeSwarm.csproj.CoreCompileInputs.cache b/Source/ArachnaeSwarm/obj/Debug/ArachnaeSwarm.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..a6b0f7a
--- /dev/null
+++ b/Source/ArachnaeSwarm/obj/Debug/ArachnaeSwarm.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+70a1ccfa141c7c82eb05a9fac71c32df86f6b34332995c92bb7aac69bc46394b
diff --git a/Source/ArachnaeSwarm/obj/Debug/ArachnaeSwarm.csproj.FileListAbsolute.txt b/Source/ArachnaeSwarm/obj/Debug/ArachnaeSwarm.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..c17b74f
--- /dev/null
+++ b/Source/ArachnaeSwarm/obj/Debug/ArachnaeSwarm.csproj.FileListAbsolute.txt
@@ -0,0 +1,2 @@
+C:\Steam\steamapps\common\RimWorld\Mods\ArachnaeSwarm\Source\ArachnaeSwarm\obj\Debug\ArachnaeSwarm.csproj.AssemblyReference.cache
+C:\Steam\steamapps\common\RimWorld\Mods\ArachnaeSwarm\Source\ArachnaeSwarm\obj\Debug\ArachnaeSwarm.csproj.CoreCompileInputs.cache