diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll
index 1e78cf1..32aba2a 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/JobDefs/SuperCarry_JobDef.xml b/1.6/1.6/Defs/JobDefs/SuperCarry_JobDef.xml
new file mode 100644
index 0000000..25d0c61
--- /dev/null
+++ b/1.6/1.6/Defs/JobDefs/SuperCarry_JobDef.xml
@@ -0,0 +1,13 @@
+
+
+
+
+ SuperCarry
+ ArachnaeSwarm.JobDriver_SuperCarry
+ 正在超级携带 TargetA。
+ false
+ true
+ true
+
+
+
\ No newline at end of file
diff --git a/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml b/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml
index 8d825cf..0e3714d 100644
--- a/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml
+++ b/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml
@@ -261,6 +261,13 @@
0
+
+
+ true
+ true
+ false
+
+
ArachnaeNode_Race_NeuroSwarm
diff --git a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/SuperCarry_Keys.xml b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/SuperCarry_Keys.xml
new file mode 100644
index 0000000..e5bb7e7
--- /dev/null
+++ b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/SuperCarry_Keys.xml
@@ -0,0 +1,6 @@
+
+
+
+ 强制携带 {0}
+
+
\ No newline at end of file
diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
index 15261f2..9466487 100644
--- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
+++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
@@ -222,6 +222,11 @@
+
+
+
+
+
diff --git a/Source/ArachnaeSwarm/FloatMenuOptionProvider_SuperCarry.cs b/Source/ArachnaeSwarm/FloatMenuOptionProvider_SuperCarry.cs
new file mode 100644
index 0000000..bae6d0e
--- /dev/null
+++ b/Source/ArachnaeSwarm/FloatMenuOptionProvider_SuperCarry.cs
@@ -0,0 +1,63 @@
+using Verse;
+using Verse.AI;
+using RimWorld;
+
+namespace ArachnaeSwarm
+{
+ public class FloatMenuOptionProvider_SuperCarry : FloatMenuOptionProvider
+ {
+ protected override bool Drafted => true;
+ protected override bool Undrafted => false;
+ protected override bool Multiselect => false;
+ protected override bool RequiresManipulation => true;
+
+ protected override bool AppliesInt(FloatMenuContext context)
+ {
+ var extension = context.FirstSelectedPawn.kindDef.GetModExtension();
+ if (extension == null || !extension.canSuperCarry)
+ {
+ return false;
+ }
+
+ if (extension.requiresFlight)
+ {
+ if (context.FirstSelectedPawn.flight == null || !context.FirstSelectedPawn.flight.Flying)
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ protected override FloatMenuOption GetSingleOptionFor(Pawn clickedPawn, FloatMenuContext context)
+ {
+ Pawn carrier = context.FirstSelectedPawn;
+ var extension = carrier.kindDef.GetModExtension();
+
+ if (clickedPawn == carrier) return null;
+
+ // 新增:检查是否允许携带敌对单位
+ if (clickedPawn.HostileTo(Faction.OfPlayer) && (extension == null || !extension.canCarryHostile))
+ {
+ return new FloatMenuOption("CannotCarry".Translate(clickedPawn) + ": " + "CarriedPawnHostile".Translate(), null);
+ }
+
+ if (!carrier.CanReach(clickedPawn, PathEndMode.ClosestTouch, Danger.Deadly))
+ {
+ return new FloatMenuOption("CannotCarry".Translate(clickedPawn) + ": " + "NoPath".Translate().CapitalizeFirst(), null);
+ }
+ if (!carrier.health.capacities.CapableOf(PawnCapacityDefOf.Manipulation))
+ {
+ return new FloatMenuOption("CannotCarry".Translate(carrier) + ": " + "Incapable".Translate().CapitalizeFirst(), null);
+ }
+
+ return FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption("SuperCarry".Translate(clickedPawn.LabelShort, clickedPawn), delegate
+ {
+ Job job = JobMaker.MakeJob(DefDatabase.GetNamed("SuperCarry"), clickedPawn);
+ job.count = 1;
+ carrier.jobs.TryTakeOrderedJob(job, JobTag.Misc);
+ }), carrier, clickedPawn);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/ArachnaeSwarm/JobDriver_SuperCarry.cs b/Source/ArachnaeSwarm/JobDriver_SuperCarry.cs
new file mode 100644
index 0000000..b5489ac
--- /dev/null
+++ b/Source/ArachnaeSwarm/JobDriver_SuperCarry.cs
@@ -0,0 +1,31 @@
+using System.Collections.Generic;
+using Verse;
+using Verse.AI;
+using RimWorld;
+
+namespace ArachnaeSwarm
+{
+ public class JobDriver_SuperCarry : JobDriver
+ {
+ private const TargetIndex TakeeIndex = TargetIndex.A;
+
+ protected Pawn Takee => (Pawn)job.GetTarget(TargetIndex.A).Thing;
+
+ public override bool TryMakePreToilReservations(bool errorOnFailed)
+ {
+ return pawn.Reserve(Takee, job, 1, -1, null, errorOnFailed);
+ }
+
+ protected override IEnumerable MakeNewToils()
+ {
+ this.FailOnDestroyedOrNull(TargetIndex.A);
+ this.FailOnAggroMentalState(TargetIndex.A);
+
+ yield return Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch)
+ .FailOnDespawnedNullOrForbidden(TargetIndex.A)
+ .FailOnSomeonePhysicallyInteracting(TargetIndex.A);
+
+ yield return Toils_Haul.StartCarryThing(TargetIndex.A);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/ArachnaeSwarm/SuperCarryExtension.cs b/Source/ArachnaeSwarm/SuperCarryExtension.cs
new file mode 100644
index 0000000..8f6fa52
--- /dev/null
+++ b/Source/ArachnaeSwarm/SuperCarryExtension.cs
@@ -0,0 +1,11 @@
+using Verse;
+
+namespace ArachnaeSwarm
+{
+ public class SuperCarryExtension : DefModExtension
+ {
+ public bool canSuperCarry = false;
+ public bool requiresFlight = false;
+ public bool canCarryHostile = false; // 新增字段
+ }
+}
\ No newline at end of file