From c93b2e5c29be358699fc61fe325fd5d7aea8a529 Mon Sep 17 00:00:00 2001 From: "ProjectKoi-Kalo\\Kalo" Date: Mon, 1 Sep 2025 13:19:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=B5=E5=8C=96job?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.6/1.6/Assemblies/ArachnaeSwarm.dll | Bin 12288 -> 14848 bytes 1.6/1.6/Defs/JobDefs/ARA_Jobs.xml | 10 +++++ .../Keyed/ArachnaeSwarm_Keys.xml | 1 + Source/ArachnaeSwarm/ArachnaeSwarm.csproj | 1 + .../CompProperties_SpawnPawnFromList.cs | 1 + Source/ArachnaeSwarm/CompSpawnPawnFromList.cs | 23 ++++++++--- Source/ArachnaeSwarm/JobDriver_Incubate.cs | 36 ++++++++++++++++++ 7 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 1.6/1.6/Defs/JobDefs/ARA_Jobs.xml create mode 100644 Source/ArachnaeSwarm/JobDriver_Incubate.cs diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 9311a0078a39b928efa277a1d4fe1983d4163e50..426b9e4a1857bc93141e68a5211895c95c1c482d 100644 GIT binary patch literal 14848 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 z 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 diff --git a/1.6/1.6/Defs/JobDefs/ARA_Jobs.xml b/1.6/1.6/Defs/JobDefs/ARA_Jobs.xml new file mode 100644 index 0000000..d75811e --- /dev/null +++ b/1.6/1.6/Defs/JobDefs/ARA_Jobs.xml @@ -0,0 +1,10 @@ + + + + + ARA_IncubateJob + ArachnaeSwarm.JobDriver_Incubate + incubating TargetA. + + + \ No newline at end of file diff --git a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ArachnaeSwarm_Keys.xml b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ArachnaeSwarm_Keys.xml index f5c49aa..8ba7ec0 100644 --- a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ArachnaeSwarm_Keys.xml +++ b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ArachnaeSwarm_Keys.xml @@ -2,5 +2,6 @@ 孵化 {0} + 未孵化,需要阿拉克涅女皇种交互 \ No newline at end of file diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj index 06bdd65..943fcf2 100644 --- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj +++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj @@ -70,6 +70,7 @@ + diff --git a/Source/ArachnaeSwarm/CompProperties_SpawnPawnFromList.cs b/Source/ArachnaeSwarm/CompProperties_SpawnPawnFromList.cs index 14ae742..efef87f 100644 --- a/Source/ArachnaeSwarm/CompProperties_SpawnPawnFromList.cs +++ b/Source/ArachnaeSwarm/CompProperties_SpawnPawnFromList.cs @@ -11,6 +11,7 @@ namespace ArachnaeSwarm public List whitelist; public int delay = 0; public bool destroyOnSpawn = false; + public IntRange spawnCount = new IntRange(1, 1); public Type lordJob; public CompProperties_SpawnPawnFromList() diff --git a/Source/ArachnaeSwarm/CompSpawnPawnFromList.cs b/Source/ArachnaeSwarm/CompSpawnPawnFromList.cs index d12c483..07027e4 100644 --- a/Source/ArachnaeSwarm/CompSpawnPawnFromList.cs +++ b/Source/ArachnaeSwarm/CompSpawnPawnFromList.cs @@ -1,16 +1,18 @@ using System.Collections.Generic; using Verse; using RimWorld; +using Verse.AI; using Verse.AI.Group; namespace ArachnaeSwarm { public class CompSpawnPawnFromList : ThingComp { - private CompProperties_SpawnPawnFromList Props => (CompProperties_SpawnPawnFromList)props; + public CompProperties_SpawnPawnFromList Props => (CompProperties_SpawnPawnFromList)props; private int spawnUntilTick = -1; private PawnKindDef spawningPawnKind; + private PawnKindDef selectedPawnKind; public override IEnumerable CompFloatMenuOptions(Pawn selPawn) { @@ -30,15 +32,17 @@ namespace ArachnaeSwarm { yield return new FloatMenuOption("ARA_Incubate".Translate(pawnKind.label), () => { - StartDelayedSpawn(pawnKind); + Job job = JobMaker.MakeJob(DefDatabase.GetNamed("ARA_IncubateJob"), parent); + selectedPawnKind = pawnKind; + selPawn.jobs.TryTakeOrderedJob(job); }); } } } - private void StartDelayedSpawn(PawnKindDef pawnKind) + public void StartIncubation() { - spawningPawnKind = pawnKind; + spawningPawnKind = selectedPawnKind; spawnUntilTick = Find.TickManager.TicksGame + Props.delay; } @@ -115,9 +119,16 @@ namespace ArachnaeSwarm if (spawnUntilTick > 0) { int remainingTicks = spawnUntilTick - Find.TickManager.TicksGame; - return $"Spawning in: {remainingTicks.ToStringTicksToPeriod()}"; + if (remainingTicks > 0) + { + return "Spawning {0} in: {1}".Translate(spawningPawnKind.label, remainingTicks.ToStringTicksToPeriod()); + } } - return base.CompInspectStringExtra(); + else + { + return "ARA_NeedsInteraction".Translate(); + } + return null; } public override void PostExposeData() diff --git a/Source/ArachnaeSwarm/JobDriver_Incubate.cs b/Source/ArachnaeSwarm/JobDriver_Incubate.cs new file mode 100644 index 0000000..4dfaf70 --- /dev/null +++ b/Source/ArachnaeSwarm/JobDriver_Incubate.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using Verse; +using Verse.AI; + +namespace ArachnaeSwarm +{ + public class JobDriver_Incubate : JobDriver + { + private const TargetIndex EggSacInd = TargetIndex.A; + private const TargetIndex PawnKindInd = TargetIndex.B; + + public override bool TryMakePreToilReservations(bool errorOnFailed) + { + return pawn.Reserve(job.GetTarget(EggSacInd), job, 1, -1, null, errorOnFailed); + } + + protected override IEnumerable MakeNewToils() + { + this.FailOnDespawnedNullOrForbidden(EggSacInd); + + yield return Toils_Goto.GotoThing(EggSacInd, PathEndMode.Touch); + + Toil incubate = new Toil(); + incubate.initAction = () => + { + CompSpawnPawnFromList comp = job.GetTarget(EggSacInd).Thing.TryGetComp(); + if (comp != null) + { + comp.StartIncubation(); + } + }; + incubate.defaultCompleteMode = ToilCompleteMode.Instant; + yield return incubate; + } + } +} \ No newline at end of file