From 61a701394673a5908acace1e8236256a08607b94 Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Tue, 2 Sep 2025 12:21:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/1.6/Assemblies/ArachnaeSwarm.dll | Bin 30720 -> 32256 bytes 1.6/1.6/Defs/JobDefs/ARA_Duties.xml | 61 +++ 1.6/1.6/Defs/JobDefs/ARA_Jobs.xml | 2 +- .../Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml | 2 +- 1.6/1.6/Defs/ThingDef_Races/ARA_RaceQueen.xml | 2 +- .../Thing_building/ARA_InteractiveEggSac.xml | 28 +- 1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml | 501 ++++++++++++++++++ .../Alert_UnlinkedHiveMindDrone.cs | 0 Source/ArachnaeSwarm/ArachnaeSwarm.csproj | 2 +- .../CompProperties_SpawnPawnFromList.cs | 8 +- Source/ArachnaeSwarm/CompSpawnPawnFromList.cs | 4 +- .../JobGiver_MaintainBuildings.cs | 56 ++ 12 files changed, 657 insertions(+), 9 deletions(-) create mode 100644 1.6/1.6/Defs/JobDefs/ARA_Duties.xml create mode 100644 1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml delete mode 100644 Source/ArachnaeSwarm/Alert_UnlinkedHiveMindDrone.cs create mode 100644 Source/ArachnaeSwarm/JobGiver_MaintainBuildings.cs diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 712070020822c4f9bb82027d4a19699c4d091f27..4b840a2a2aea35c94a8e3acb5b5036fc31c500d9 100644 GIT binary patch literal 32256 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 literal 30720 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≤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 HH1K}`E27N3 diff --git a/1.6/1.6/Defs/JobDefs/ARA_Duties.xml b/1.6/1.6/Defs/JobDefs/ARA_Duties.xml new file mode 100644 index 0000000..fcd27dd --- /dev/null +++ b/1.6/1.6/Defs/JobDefs/ARA_Duties.xml @@ -0,0 +1,61 @@ + + + + ARA_DefendAndExpandHive + + +
  • + true + 30 + false +
  • +
  • + 2.5 + +
  • + +
  • ARA_InteractiveEggSac
  • + + +
    + +
  • + +
  • ARA_InteractiveEggSac
  • + + true + +
  • + 0.7 + +
  • + +
  • + +
  • + +
  • + + + + +
  • + SatisfyingNeeds + +
  • + +
  • +
  • + +
  • + + +
  • + Deadly +
  • + +
    + + ]]> +
    \ No newline at end of file diff --git a/1.6/1.6/Defs/JobDefs/ARA_Jobs.xml b/1.6/1.6/Defs/JobDefs/ARA_Jobs.xml index d75811e..ef62e91 100644 --- a/1.6/1.6/Defs/JobDefs/ARA_Jobs.xml +++ b/1.6/1.6/Defs/JobDefs/ARA_Jobs.xml @@ -4,7 +4,7 @@ ARA_IncubateJob ArachnaeSwarm.JobDriver_Incubate - incubating TargetA. + 为 TargetA 注入信息素. \ No newline at end of file diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml index 18ec00d..a0dbb15 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml @@ -376,7 +376,7 @@ - Humanlike + ARA_Humanlike Humanlike diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceQueen.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceQueen.xml index b52c233..5547478 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceQueen.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceQueen.xml @@ -599,7 +599,7 @@ ArachnaeQueen_Body Normal - Humanlike + ARA_Humanlike Humanlike diff --git a/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml b/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml index b23676d..6629684 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml @@ -3,8 +3,8 @@ ARA_InteractiveEggSac - 一个脆弱、易燃、黏滑的囊状物,,是阿拉克涅女皇种所诞之卵,内含哺育一只新督虫所需的营养和遗传物质——可以通过阿拉克涅女皇种的交互完成激活进程。 - ArachnaeSwarm.Building_Incubator + 一个脆弱、易燃、黏滑的囊状物,是阿拉克涅女皇种所诞之卵,内含哺育一只新督虫所需的营养和遗传物质——可以通过阿拉克涅女皇种的交互完成激活进程。 + Building Building (1,1) MinifiedThing @@ -53,9 +53,31 @@
  • ARA_ArachnaeQueen
  • - 300 + +
  • + Megascarab + 3000 +
  • +
  • + Spelopede + 3000 +
  • +
  • + Megaspider + 3000 +
  • +
  • + ArachnaeNode_Race_Myrmecocystus + 300 +
  • +
    true +
  • + 60000 + 60000 + 10 +
  • CocoonDestroyed
  • diff --git a/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml b/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml new file mode 100644 index 0000000..7a49c85 --- /dev/null +++ b/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml @@ -0,0 +1,501 @@ + + + + ARA_Humanlike + + + + +
  • + +
  • + +
  • + SatisfyingNeeds + +
  • + +
  • +
    + + + + + +
  • + + +
  • + true +
  • + + +
  • + SatisfyingNeeds + +
  • + +
  • + +
  • + +
  • +
  • + +
  • + + + + +
  • + +
  • + +
  • + Downed +
  • +
  • + BurningResponse +
  • +
  • + MentalStateCritical +
  • + + +
  • + Abilities_Escape +
  • + + +
  • + + +
  • + MentalStateNonCritical +
  • + + +
  • + RopedPawn +
  • + + +
  • + Humanlike_PostMentalState +
  • + + +
  • + + +
  • + +
  • + DraftedOrder + +
  • +
  • + +
  • + + + + +
  • + +
  • + +
  • + + +
  • + HighPriority + +
  • + LordDuty +
  • + + + + +
  • + Humanlike_PostDuty +
  • + + +
  • + 2.5 + +
  • + +
  • ARA_InteractiveEggSac
  • + + + + +
  • + +
  • ARA_InteractiveEggSac
  • + + true + + + + +
  • + true + + +
  • + true + + +
  • + Idle + +
  • + Deadly +
  • + + + + +
  • + Escaping + +
  • + +
  • + + + + +
  • + +
  • + Misc + +
  • + Walk +
  • + + + + + +
  • + RestingForMedicalReasons + +
  • + +
  • + +
  • + ChangingApparel + +
  • + +
  • + +
  • + SatisfyingNeeds + +
  • + +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • + + + + +
  • + + +
  • + true + +
  • + Escaping + +
  • + +
  • + + + +
  • + Idle + +
  • + Deadly +
  • + + + + + +
  • + Idle + +
  • + Deadly +
  • + + + +
  • + +
  • + + +
  • + + +
  • + + +
  • +
  • + + +
  • + + +
  • + true + true +
  • + + +
  • + +
  • + SatisfyingNeeds + +
  • + true +
  • + + + + + + +
  • + Misc + +
  • + +
  • + + +
  • + MediumPriority + +
  • + LordDuty +
  • + + + + +
  • + true +
  • + + +
  • + ChangingApparel + +
  • + true +
  • + + + + +
  • + +
  • + +
  • + + +
  • + + +
  • + TakeForInventoryStock + +
  • + true +
  • + + + + +
  • + UnloadingOwnInventory + +
  • + +
  • + + +
  • + Food + 0.6 + +
  • + true +
  • + + + + + + +
  • + + +
  • + Humanlike_PreMain +
  • + + +
  • + +
  • + MainColonistBehaviorCore + true +
  • + + + +
  • + WildMan + +
  • + MainWildManBehaviorCore + true +
  • + + + + +
  • + Humanlike_PostMain +
  • + + +
  • + +
  • + Idle + + +
  • + Joy + 0.9 + true + +
  • + +
  • + + +
  • + None +
  • + + + + + + +
  • + WildMan + +
  • + Idle + + +
  • + Deadly + 120~240 +
  • + + + + + + +
  • + +
  • + +
  • + RestingForMedicalReasons + +
  • + +
  • + +
  • + Misc + +
  • + Walk +
  • + + + + + + + + +
  • + true + +
  • + Misc + +
  • + Walk +
  • + + + + + + +
  • + Idle + +
  • + Deadly +
  • + + + +
  • + + + + \ No newline at end of file diff --git a/Source/ArachnaeSwarm/Alert_UnlinkedHiveMindDrone.cs b/Source/ArachnaeSwarm/Alert_UnlinkedHiveMindDrone.cs deleted file mode 100644 index e69de29..0000000 diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj index 701e5e6..51db4f4 100644 --- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj +++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj @@ -83,7 +83,7 @@ - + diff --git a/Source/ArachnaeSwarm/CompProperties_SpawnPawnFromList.cs b/Source/ArachnaeSwarm/CompProperties_SpawnPawnFromList.cs index c69bf18..5d43d43 100644 --- a/Source/ArachnaeSwarm/CompProperties_SpawnPawnFromList.cs +++ b/Source/ArachnaeSwarm/CompProperties_SpawnPawnFromList.cs @@ -9,7 +9,7 @@ namespace ArachnaeSwarm { public List pawnKinds; public List whitelist; - public int delay = 0; + public List pawnKindDelays; public bool destroyOnSpawn = false; public IntRange spawnCount = new IntRange(1, 1); public Type lordJob; @@ -32,4 +32,10 @@ namespace ArachnaeSwarm } } } +} + +public class PawnKindDelay +{ + public PawnKindDef pawnKind; + public int delay; } \ No newline at end of file diff --git a/Source/ArachnaeSwarm/CompSpawnPawnFromList.cs b/Source/ArachnaeSwarm/CompSpawnPawnFromList.cs index ce05723..a06aee7 100644 --- a/Source/ArachnaeSwarm/CompSpawnPawnFromList.cs +++ b/Source/ArachnaeSwarm/CompSpawnPawnFromList.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using Verse; using RimWorld; using Verse.AI; @@ -45,7 +46,8 @@ namespace ArachnaeSwarm public void StartIncubation() { spawningPawnKind = selectedPawnKind; - spawnUntilTick = Find.TickManager.TicksGame + Props.delay; + int delay = Props.pawnKindDelays?.FirstOrDefault(pkd => pkd.pawnKind == selectedPawnKind)?.delay ?? 0; + spawnUntilTick = Find.TickManager.TicksGame + delay; } public override void CompTick() diff --git a/Source/ArachnaeSwarm/JobGiver_MaintainBuildings.cs b/Source/ArachnaeSwarm/JobGiver_MaintainBuildings.cs new file mode 100644 index 0000000..2f8f979 --- /dev/null +++ b/Source/ArachnaeSwarm/JobGiver_MaintainBuildings.cs @@ -0,0 +1,56 @@ +using System.Collections.Generic; +using Verse; +using RimWorld; +using Verse.AI; +using Verse.AI.Group; + +namespace ArachnaeSwarm +{ + public class JobGiver_MaintainBuildings : JobGiver_AIFightEnemies + { + private bool onlyIfDamagingState; + + // 新增属性,用于存储可维护的ThingDef列表 + public List maintainableThingDefs; + + private static readonly float CellsInScanRadius = GenRadial.NumCellsInRadius(7.9f); + + public override ThinkNode DeepCopy(bool resolve = true) + { + JobGiver_MaintainBuildings obj = (JobGiver_MaintainBuildings)base.DeepCopy(resolve); + obj.onlyIfDamagingState = onlyIfDamagingState; + obj.maintainableThingDefs = maintainableThingDefs; // 复制列表 + return obj; + } + + protected override Job TryGiveJob(Pawn pawn) + { + Room room = pawn.GetRoom(); + for (int i = 0; (float)i < CellsInScanRadius; i++) + { + IntVec3 intVec = pawn.Position + GenRadial.RadialPattern[i]; + if (!intVec.InBounds(pawn.Map) || intVec.GetRoom(pawn.Map) != room) + { + continue; + } + + // 遍历可维护的ThingDef列表 + foreach (ThingDef thingDef in maintainableThingDefs) + { + // 查找指定ThingDef的建筑 + Thing targetThing = (Thing)pawn.Map.thingGrid.ThingAt(intVec, thingDef); + + if (targetThing != null && pawn.CanReserve(targetThing)) + { + CompMaintainable compMaintainable = targetThing.TryGetComp(); + if (compMaintainable != null && compMaintainable.CurStage != 0 && (!onlyIfDamagingState || compMaintainable.CurStage == MaintainableStage.Damaging)) + { + return JobMaker.MakeJob(JobDefOf.Maintain, targetThing); + } + } + } + } + return null; + } + } +} \ No newline at end of file