From aca5fa287d457e35abac698fec711602e0acb49f Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Wed, 3 Sep 2025 12:27:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E7=A7=8D=E6=A4=8D=E4=BC=A0=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/1.6/Assemblies/ArachnaeSwarm.dll | Bin 45056 -> 49152 bytes Source/ArachnaeSwarm/ArachnaeSwarm.csproj | 13 +- Source/ArachnaeSwarm/JobGiver_Grower.cs | 31 ++- Source/ArachnaeSwarm/WorkGiver_ArachnaeSow.cs | 218 ++++++++++++++++++ 4 files changed, 243 insertions(+), 19 deletions(-) create mode 100644 Source/ArachnaeSwarm/WorkGiver_ArachnaeSow.cs diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 652d822e0e69f74aaf49cd80fe20594af9b164e4..d270c71c8cacc052faabecc6135bd825feb8bc3c 100644 GIT binary patch delta 22120 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 M^!<{9 delta 18063 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 diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj index fa0e51d..97942aa 100644 --- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj +++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj @@ -86,20 +86,17 @@ + + + + + - - - - - - - - diff --git a/Source/ArachnaeSwarm/JobGiver_Grower.cs b/Source/ArachnaeSwarm/JobGiver_Grower.cs index 2447445..29e70f5 100644 --- a/Source/ArachnaeSwarm/JobGiver_Grower.cs +++ b/Source/ArachnaeSwarm/JobGiver_Grower.cs @@ -8,7 +8,7 @@ namespace ArachnaeSwarm public class JobGiver_Grower : ThinkNode_JobGiver { private WorkGiver_GrowerHarvest _workGiverHarvest; - private WorkGiver_GrowerSow _workGiverSow; + private WorkGiver_ArachnaeSow _workGiverArachnaeSow; // 修改为我们的新 WorkGiver protected override Job TryGiveJob(Pawn pawn) { @@ -16,11 +16,11 @@ namespace ArachnaeSwarm if (_workGiverHarvest == null) { _workGiverHarvest = WorkGiverDefOf.GrowerHarvest.Worker as WorkGiver_GrowerHarvest; - _workGiverSow = WorkGiverDefOf.GrowerSow.Worker as WorkGiver_GrowerSow; + _workGiverArachnaeSow = new WorkGiver_ArachnaeSow(); // 直接实例化我们的 WorkGiver - if (_workGiverHarvest == null || _workGiverSow == null) + if (_workGiverHarvest == null || _workGiverArachnaeSow == null) { - Log.ErrorOnce("JobGiver_Grower: Failed to get WorkGiver_GrowerHarvest or WorkGiver_GrowerSow. DefOfs might not be initialized or DefNames are incorrect.", 123457); + Log.ErrorOnce("JobGiver_Grower: Failed to get WorkGiver_GrowerHarvest or WorkGiver_ArachnaeSow. DefOfs might not be initialized or WorkGiver_ArachnaeSow could not be instantiated.", 123457); return null; } } @@ -29,14 +29,16 @@ namespace ArachnaeSwarm Thing bestHarvestable = FindClosestThing(pawn, _workGiverHarvest); if (bestHarvestable != null) { - return _workGiverHarvest.JobOnThing(pawn, bestHarvestable); + // 调用 JobOnCell 以利用 WorkGiver_GrowerHarvest 的多目标打包逻辑 + return _workGiverHarvest.JobOnCell(pawn, bestHarvestable.Position); } // 2. 其次播种 - IntVec3 bestSowCell = FindClosestSowableCell(pawn, _workGiverSow); - if (bestSowCell.IsValid) + (IntVec3 bestSowCell, ThingDef plantToSow) = FindClosestSowableCellAndPlant(pawn, _workGiverArachnaeSow); // 使用我们的新 WorkGiver + if (bestSowCell.IsValid && plantToSow != null) { - return _workGiverSow.JobOnCell(pawn, bestSowCell); + // 现在直接调用 WorkGiver_ArachnaeSow 的 JobOnCell,它会处理 Job 的创建和 plantDefToSow 的设置 + return _workGiverArachnaeSow.JobOnCell(pawn, bestSowCell); } return null; @@ -55,30 +57,37 @@ namespace ArachnaeSwarm ); } - private IntVec3 FindClosestSowableCell(Pawn pawn, WorkGiver_Scanner scanner) + private (IntVec3, ThingDef) FindClosestSowableCellAndPlant(Pawn pawn, WorkGiver_ArachnaeSow scanner) // 修改为我们的新 WorkGiver 类型 { IntVec3 bestCell = IntVec3.Invalid; + ThingDef bestPlantToSow = null; float bestDistSq = float.MaxValue; foreach (Zone zone in pawn.Map.zoneManager.AllZones) { if (zone is Zone_Growing growingZone) { + ThingDef wantedPlant = growingZone.GetPlantDefToGrow(); + if (wantedPlant == null) continue; + foreach (IntVec3 cell in growingZone.Cells) { float distSq = pawn.Position.DistanceToSquared(cell); if (distSq < bestDistSq && pawn.CanReach(cell, PathEndMode.ClosestTouch, Danger.Deadly)) { - if (scanner.HasJobOnCell(pawn, cell)) + // 这里不再需要 WorkGiver_Grower.wantedPlantDef 的复杂处理 + // 因为 WorkGiver_ArachnaeSow.JobOnCell 会直接使用它计算出的 wantedPlantDef + if (scanner.HasJobOnCell(pawn, cell)) // HasJobOnCell 内部会根据 wantedPlant 计算 { bestDistSq = distSq; bestCell = cell; + bestPlantToSow = wantedPlant; // 确保返回正确的 plantDef } } } } } - return bestCell; + return (bestCell, bestPlantToSow); } } } diff --git a/Source/ArachnaeSwarm/WorkGiver_ArachnaeSow.cs b/Source/ArachnaeSwarm/WorkGiver_ArachnaeSow.cs new file mode 100644 index 0000000..ca6c4a3 --- /dev/null +++ b/Source/ArachnaeSwarm/WorkGiver_ArachnaeSow.cs @@ -0,0 +1,218 @@ +using System.Collections.Generic; +using Verse; +using Verse.AI; +using RimWorld; + +namespace ArachnaeSwarm +{ + public class WorkGiver_ArachnaeSow : WorkGiver_Grower + { + protected static string CantSowCavePlantBecauseOfLightTrans; + protected static string CantSowCavePlantBecauseUnroofedTrans; + + public override PathEndMode PathEndMode => PathEndMode.ClosestTouch; + + public static void ResetStaticData() + { + CantSowCavePlantBecauseOfLightTrans = "CantSowCavePlantBecauseOfLight".Translate(); + CantSowCavePlantBecauseUnroofedTrans = "CantSowCavePlantBecauseUnroofed".Translate(); + } + + protected override bool ExtraRequirements(IPlantToGrowSettable settable, Pawn pawn) + { + if (!settable.CanAcceptSowNow()) + { + return false; + } + IntVec3 c; + if (settable is Zone_Growing zone_Growing) + { + if (!zone_Growing.allowSow) + { + return false; + } + c = zone_Growing.Cells[0]; + } + else + { + c = ((Thing)settable).Position; + } + ThingDef wantedPlantDef = WorkGiver_Grower.CalculateWantedPlantDef(c, pawn.Map); + if (wantedPlantDef == null) + { + return false; + } + return true; + } + + public override Job JobOnCell(Pawn pawn, IntVec3 c, bool forced = false) + { + Map map = pawn.Map; + if (c.GetVacuum(pawn.Map) >= 0.5f) + { + return null; + } + + // 直接计算 wantedPlantDef,不再依赖静态字段 + ThingDef wantedPlantDefLocal = WorkGiver_Grower.CalculateWantedPlantDef(c, map); + if (wantedPlantDefLocal == null) + { + return null; + } + + if (!PlantUtility.GrowthSeasonNow(c, map, wantedPlantDefLocal)) + { + return null; + } + List thingList = c.GetThingList(map); + Zone_Growing zone_Growing = c.GetZone(map) as Zone_Growing; + bool flag = false; + for (int i = 0; i < thingList.Count; i++) + { + Thing thing = thingList[i]; + if (thing.def == wantedPlantDef) + { + return null; + } + if ((thing is Blueprint || thing is Frame) && thing.Faction == pawn.Faction) + { + flag = true; + } + } + if (flag) + { + Thing edifice = c.GetEdifice(map); + if (edifice == null || edifice.def.fertility < 0f) + { + return null; + } + } + if (wantedPlantDefLocal.plant.diesToLight) + { + if (!c.Roofed(map) && !map.GameConditionManager.IsAlwaysDarkOutside) + { + JobFailReason.Is(CantSowCavePlantBecauseUnroofedTrans); + return null; + } + if (map.glowGrid.GroundGlowAt(c, ignoreCavePlants: true) > 0f) + { + JobFailReason.Is(CantSowCavePlantBecauseOfLightTrans); + return null; + } + } + if (wantedPlantDefLocal.plant.interferesWithRoof && c.Roofed(pawn.Map)) + { + return null; + } + Plant plant = c.GetPlant(map); + if (plant != null && plant.def.plant.blockAdjacentSow) + { + if (!pawn.CanReserve(plant, 1, -1, null, forced) || plant.IsForbidden(pawn)) + { + return null; + } + if (zone_Growing != null && !zone_Growing.allowCut) + { + return null; + } + if (!forced && plant.TryGetComp(out var comp) && comp.PreventCutting) + { + return null; + } + if (!PlantUtility.PawnWillingToCutPlant_Job(plant, pawn)) + { + return null; + } + return JobMaker.MakeJob(JobDefOf.CutPlant, plant); + } + Thing thing2 = PlantUtility.AdjacentSowBlocker(wantedPlantDefLocal, c, map); + if (thing2 != null) + { + if (thing2 is Plant plant2 && pawn.CanReserveAndReach(plant2, PathEndMode.Touch, Danger.Deadly, 1, -1, null, forced) && !plant2.IsForbidden(pawn)) + { + IPlantToGrowSettable plantToGrowSettable = plant2.Position.GetPlantToGrowSettable(plant2.Map); + if (plantToGrowSettable == null || plantToGrowSettable.GetPlantDefToGrow() != plant2.def) + { + Zone_Growing zone_Growing2 = c.GetZone(map) as Zone_Growing; + Zone_Growing zone_Growing3 = plant2.Position.GetZone(map) as Zone_Growing; + if ((zone_Growing2 != null && !zone_Growing2.allowCut) || (zone_Growing3 != null && !zone_Growing3.allowCut && plant2.def == zone_Growing3.GetPlantDefToGrow())) + { + return null; + } + } + if (!forced && thing2.TryGetComp(out CompPlantPreventCutting comp2) && comp2.PreventCutting) + { + return null; + } + if (PlantUtility.TreeMarkedForExtraction(plant2)) + { + return null; + } + if (!PlantUtility.PawnWillingToCutPlant_Job(plant2, pawn)) + { + return null; + } + return JobMaker.MakeJob(JobDefOf.CutPlant, plant2); + } + if (thing2.def.EverHaulable) + { + return HaulAIUtility.HaulAsideJobFor(pawn, thing2); + } + return null; + } + if (wantedPlantDefLocal.plant.sowMinSkill > 0 && ((pawn.skills != null && pawn.skills.GetSkill(SkillDefOf.Plants).Level < wantedPlantDefLocal.plant.sowMinSkill) || (pawn.IsColonyMech && pawn.RaceProps.mechFixedSkillLevel < wantedPlantDefLocal.plant.sowMinSkill))) + { + JobFailReason.Is("UnderAllowedSkill".Translate(wantedPlantDefLocal.plant.sowMinSkill), def.label); + return null; + } + for (int j = 0; j < thingList.Count; j++) + { + Thing thing3 = thingList[j]; + if (!thing3.def.BlocksPlanting()) + { + continue; + } + if (!pawn.CanReserve(thing3, 1, -1, null, forced)) + { + return null; + } + if (thing3.def.category == ThingCategory.Plant) + { + if (thing3.IsForbidden(pawn)) + { + return null; + } + if (zone_Growing != null && !zone_Growing.allowCut) + { + return null; + } + if (!forced && plant.TryGetComp(out var comp3) && comp3.PreventCutting) + { + return null; + } + if (!PlantUtility.PawnWillingToCutPlant_Job(thing3, pawn)) + { + return null; + } + if (PlantUtility.TreeMarkedForExtraction(thing3)) + { + return null; + } + return JobMaker.MakeJob(JobDefOf.CutPlant, thing3); + } + if (thing3.def.EverHaulable) + { + return HaulAIUtility.HaulAsideJobFor(pawn, thing3); + } + return null; + } + if (!wantedPlantDefLocal.CanNowPlantAt(c, map) || !PlantUtility.GrowthSeasonNow(c, map, wantedPlantDefLocal) || !pawn.CanReserve(c, 1, -1, null, forced)) + { + return null; + } + Job job = JobMaker.MakeJob(JobDefOf.Sow, c); + job.plantDefToSow = wantedPlantDefLocal; + return job; + } + } +} \ No newline at end of file