diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 9449026..652d822 100644 Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml index fbb66f2..9c9c0d9 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml @@ -14,36 +14,7 @@ 0.3 1.1 - -
  • - -
  • ARA_Sowing
  • -
  • ARA_PlantCutting
  • - - -
  • - - -
  • - Plants - 10 - true -
  • - - - -
  • - ARA_Sowing - Growing -
  • -
  • - ARA_PlantCutting - PlantCutting -
  • -
    - -
  • - +
  • @@ -104,19 +75,19 @@ -
  • - -
  • - Plants - 10 -
  • - - -
  • ARA_Sowing
  • -
    - true - -
    +
  • + +
  • + Plants + 10 +
  • + + +
  • ARA_Sowing
  • +
    + true + +
  • AnimalInsect
  • diff --git a/Source/ArachnaeSwarm/JobGiver_Grower.cs b/Source/ArachnaeSwarm/JobGiver_Grower.cs index 2c10f81..2447445 100644 --- a/Source/ArachnaeSwarm/JobGiver_Grower.cs +++ b/Source/ArachnaeSwarm/JobGiver_Grower.cs @@ -5,39 +5,24 @@ using RimWorld; namespace ArachnaeSwarm { - // 确保 WorkGiverDefOf 被正确初始化 - [DefOf] - public static class WorkGiverDefOf - { - public static WorkGiverDef Harvest; - public static WorkGiverDef GrowerSow; - - static WorkGiverDefOf() - { - DefOfHelper.EnsureInitializedInCtor(typeof(WorkGiverDefOf)); - } - } - public class JobGiver_Grower : ThinkNode_JobGiver { - private static WorkGiver_GrowerHarvest _workGiverHarvest; - private static WorkGiver_GrowerSow _workGiverSow; - - static JobGiver_Grower() - { - // 确保在访问 WorkGiverDefOf 之前,它已经被初始化 - // 尽管 [DefOf] 会自动处理,但显式调用可以避免某些加载时序问题 - DefOfHelper.EnsureInitializedInCtor(typeof(WorkGiverDefOf)); - _workGiverHarvest = WorkGiverDefOf.Harvest.Worker as WorkGiver_GrowerHarvest; - _workGiverSow = WorkGiverDefOf.GrowerSow.Worker as WorkGiver_GrowerSow; - } + private WorkGiver_GrowerHarvest _workGiverHarvest; + private WorkGiver_GrowerSow _workGiverSow; protected override Job TryGiveJob(Pawn pawn) { - if (_workGiverHarvest == null || _workGiverSow == null) + // 懒加载 WorkGiver 实例,确保 DefOf 已被初始化 + if (_workGiverHarvest == null) { - Log.ErrorOnce("JobGiver_Grower could not find vanilla Grower WorkGivers.", 123457); - return null; + _workGiverHarvest = WorkGiverDefOf.GrowerHarvest.Worker as WorkGiver_GrowerHarvest; + _workGiverSow = WorkGiverDefOf.GrowerSow.Worker as WorkGiver_GrowerSow; + + if (_workGiverHarvest == null || _workGiverSow == null) + { + Log.ErrorOnce("JobGiver_Grower: Failed to get WorkGiver_GrowerHarvest or WorkGiver_GrowerSow. DefOfs might not be initialized or DefNames are incorrect.", 123457); + return null; + } } // 1. 优先收获 @@ -96,4 +81,17 @@ namespace ArachnaeSwarm return bestCell; } } +} + +// 确保 WorkGiverDefOf 被正确初始化,放在命名空间顶层 +[DefOf] +public static class WorkGiverDefOf +{ + public static WorkGiverDef GrowerHarvest; + public static WorkGiverDef GrowerSow; + + static WorkGiverDefOf() + { + DefOfHelper.EnsureInitializedInCtor(typeof(WorkGiverDefOf)); + } } \ No newline at end of file diff --git a/Source/ArachnaeSwarm/ThinkNode_ConditionalAnimalShouldDoGrowingWork.cs b/Source/ArachnaeSwarm/ThinkNode_ConditionalAnimalShouldDoGrowingWork.cs index 3170615..c577380 100644 --- a/Source/ArachnaeSwarm/ThinkNode_ConditionalAnimalShouldDoGrowingWork.cs +++ b/Source/ArachnaeSwarm/ThinkNode_ConditionalAnimalShouldDoGrowingWork.cs @@ -9,7 +9,6 @@ namespace ArachnaeSwarm public static class ARA_TrainableDefOf { public static TrainableDef ARA_Sowing; - public static TrainableDef ARA_PlantCutting; static ARA_TrainableDefOf() { @@ -32,12 +31,8 @@ namespace ArachnaeSwarm bool canSow = pawn.training.HasLearned(ARA_TrainableDefOf.ARA_Sowing) && pawn.training.GetWanted(ARA_TrainableDefOf.ARA_Sowing); - // 检查动物是否学会并被允许执行“植物切割”工作 - bool canCut = pawn.training.HasLearned(ARA_TrainableDefOf.ARA_PlantCutting) && - pawn.training.GetWanted(ARA_TrainableDefOf.ARA_PlantCutting); - - // 只要满足其中任何一个条件,就返回 true - return canSow || canCut; + // 现在只需要检查播种技能,因为切割功能已合并 + return canSow; } } } \ No newline at end of file