diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll
index 15ec74b..a514a63 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/FactionDefs/ARA_Factions_Hostile_Hive.xml b/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml
index ee05b31..a810dd6 100644
--- a/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml
+++ b/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml
@@ -12,6 +12,7 @@
ARA_New_Hive_NamerFaction
World/WorldObjects/Expanding/HoraxCult
true
+ false
false
false
@@ -130,7 +131,7 @@
true
- false
+ true
false
false
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 93fd338..d0230a6 100644
--- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml
+++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml
@@ -161,7 +161,10 @@
- 0
+ 0.25
+ 0.5
+ 0.75
+ 1
@@ -552,6 +555,7 @@
1.5
ARA_Carapace
+ 80
Human
@@ -610,7 +614,14 @@
false
1
-
+
+
+ (0,0)
+ (1,0)
+ (1.5,1)
+ (2,0)
+
+
@@ -774,7 +785,6 @@
ArachnaeMyrmecocystus_Body
2
-
@@ -928,7 +938,6 @@
1.5
3
-
@@ -1043,7 +1052,6 @@
ArachnaeWeaponSmith_Body
0.8
0.75
-
@@ -1190,7 +1198,6 @@
ArachnaeFighter_Body
0.7
3
-
@@ -1317,7 +1324,6 @@
ArachnaeFacehugger_Body
0.5
0.25
-
@@ -1399,7 +1405,6 @@
ArachnaeSmokepop_Body
4
-
@@ -1525,7 +1530,6 @@
1.0
2
-
@@ -1742,7 +1746,6 @@
1.0
0.8
2
-
@@ -1950,7 +1953,6 @@
ArachnaePraetorian_Body
2
3
-
diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo
index 4684539..b0d124f 100644
Binary files a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo and b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo differ
diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json
index e8f60a3..ff61b9e 100644
--- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json
+++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json
@@ -2,6 +2,18 @@
"Version": 1,
"WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"Documents": [
+ {
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\harmonypatches\\patch_namegenerator_generatename.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:harmonypatches\\patch_namegenerator_generatename.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\harmonypatches\\patch_pawn_needstracker_shouldhaveneed.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:harmonypatches\\patch_pawn_needstracker_shouldhaveneed.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\harmonypatches\\patch_forcetargetable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:harmonypatches\\patch_forcetargetable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
{
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\jobs\\jobdriver_feedwithhoney\\thinknode_jobgiver_feedwithhoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_feedwithhoney\\thinknode_jobgiver_feedwithhoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
@@ -46,28 +58,67 @@
"DocumentGroups": [
{
"DockedWidth": 200,
- "SelectedChildIndex": 1,
+ "SelectedChildIndex": 3,
"Children": [
{
"$type": "Bookmark",
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
},
+ {
+ "$type": "Document",
+ "DocumentIndex": 1,
+ "Title": "Patch_Pawn_NeedsTracker_ShouldHaveNeed.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_Pawn_NeedsTracker_ShouldHaveNeed.cs",
+ "RelativeDocumentMoniker": "HarmonyPatches\\Patch_Pawn_NeedsTracker_ShouldHaveNeed.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_Pawn_NeedsTracker_ShouldHaveNeed.cs",
+ "RelativeToolTip": "HarmonyPatches\\Patch_Pawn_NeedsTracker_ShouldHaveNeed.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAABUAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-03-30T08:59:27.329Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 2,
+ "Title": "Patch_ForceTargetable.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_ForceTargetable.cs",
+ "RelativeDocumentMoniker": "HarmonyPatches\\Patch_ForceTargetable.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_ForceTargetable.cs",
+ "RelativeToolTip": "HarmonyPatches\\Patch_ForceTargetable.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-03-30T08:59:20.658Z",
+ "EditorCaption": ""
+ },
{
"$type": "Document",
"DocumentIndex": 0,
+ "Title": "Patch_NameGenerator_GenerateName.cs",
+ "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_NameGenerator_GenerateName.cs",
+ "RelativeDocumentMoniker": "HarmonyPatches\\Patch_NameGenerator_GenerateName.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_NameGenerator_GenerateName.cs",
+ "RelativeToolTip": "HarmonyPatches\\Patch_NameGenerator_GenerateName.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAA4AAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2026-03-30T06:59:38.582Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 3,
"Title": "ThinkNode_JobGiver_FeedWithHoney.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_FeedWithHoney.cs",
"RelativeDocumentMoniker": "Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_FeedWithHoney.cs",
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_FeedWithHoney.cs",
"RelativeToolTip": "Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_FeedWithHoney.cs",
- "ViewState": "AgIAAFIAAAAAAAAAAAAAwGoAAAABAAAAAAAAAA==",
+ "ViewState": "AgIAAAkAAAAAAAAAAAAAAB8AAAAcAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-03-29T09:23:09.491Z",
"EditorCaption": ""
},
{
"$type": "Document",
- "DocumentIndex": 1,
+ "DocumentIndex": 4,
"Title": "ThinkNode_ConditionalAnimalShouldDoGrowingWork.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Plant\\ThinkNode_ConditionalAnimalShouldDoGrowingWork.cs",
"RelativeDocumentMoniker": "Jobs\\JobDriver_Plant\\ThinkNode_ConditionalAnimalShouldDoGrowingWork.cs",
@@ -79,7 +130,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 2,
+ "DocumentIndex": 5,
"Title": "ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Clean\\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs",
"RelativeDocumentMoniker": "Jobs\\JobDriver_Clean\\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs",
@@ -91,7 +142,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 3,
+ "DocumentIndex": 6,
"Title": "HediffComp_Spawner.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_Spawner\\HediffComp_Spawner.cs",
"RelativeDocumentMoniker": "Hediffs\\ARA_Spawner\\HediffComp_Spawner.cs",
@@ -103,7 +154,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 4,
+ "DocumentIndex": 7,
"Title": "CompAdvancedTraining.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\CompAdvancedTraining.cs",
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_TrainingWork\\CompAdvancedTraining.cs",
@@ -115,7 +166,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 5,
+ "DocumentIndex": 8,
"Title": "CompAbilityEffect_ShowInteractiveThing.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowInteractiveThing\\CompAbilityEffect_ShowInteractiveThing.cs",
"RelativeDocumentMoniker": "Abilities\\ARA_ShowInteractiveThing\\CompAbilityEffect_ShowInteractiveThing.cs",
@@ -127,7 +178,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 6,
+ "DocumentIndex": 9,
"Title": "ARA_DefOf.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_DefOf.cs",
"RelativeDocumentMoniker": "ARA_DefOf.cs",
@@ -139,7 +190,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 8,
+ "DocumentIndex": 11,
"Title": "CompProducedByMechCarrier.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_AutoMechCarrier\\CompProducedByMechCarrier.cs",
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_AutoMechCarrier\\CompProducedByMechCarrier.cs",
@@ -151,7 +202,7 @@
},
{
"$type": "Document",
- "DocumentIndex": 7,
+ "DocumentIndex": 10,
"Title": "CompAutoMechCarrier.cs",
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_AutoMechCarrier\\CompAutoMechCarrier.cs",
"RelativeDocumentMoniker": "Pawn_Comps\\ARA_AutoMechCarrier\\CompAutoMechCarrier.cs",
diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
index 81d8554..4f9a1af 100644
--- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
+++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
@@ -50,6 +50,7 @@
+
diff --git a/Source/ArachnaeSwarm/HarmonyPatches/Patch_NameGenerator_GenerateName.cs b/Source/ArachnaeSwarm/HarmonyPatches/Patch_NameGenerator_GenerateName.cs
new file mode 100644
index 0000000..757c331
--- /dev/null
+++ b/Source/ArachnaeSwarm/HarmonyPatches/Patch_NameGenerator_GenerateName.cs
@@ -0,0 +1,81 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using HarmonyLib;
+using RimWorld;
+using Verse;
+using Verse.Grammar;
+
+namespace ArachnaeSwarm
+{
+ [HarmonyPatch(typeof(NameGenerator))]
+ [HarmonyPatch("GenerateName")]
+ [HarmonyPatch(new Type[]
+ {
+ typeof(GrammarRequest),
+ typeof(Predicate),
+ typeof(bool),
+ typeof(string),
+ typeof(string)
+ })]
+ public static class NameGenerator_GenerateName_Patch
+ {
+ private const string TargetRulePack = "ARA_Normal_Node_NameMaker";
+
+ public static bool Prefix(
+ ref string __result,
+ GrammarRequest request,
+ Predicate validator = null,
+ bool appendNumberIfNameUsed = false,
+ string rootKeyword = null,
+ string untranslatedRootKeyword = null)
+ {
+ // 检查是否包含目标规则包
+ if (!request.Includes.Any(pack => pack?.defName == TargetRulePack))
+ {
+ return true; // 继续执行原方法
+ }
+
+ // 复制原方法的逻辑,但不记录错误
+ if (untranslatedRootKeyword == null)
+ {
+ untranslatedRootKeyword = rootKeyword;
+ }
+ string text = "ErrorName";
+ if (appendNumberIfNameUsed)
+ {
+ for (int i = 0; i < 100; i++)
+ {
+ for (int j = 0; j < 5; j++)
+ {
+ text = GenText.CapitalizeAsTitle(GrammarResolver.Resolve(rootKeyword, request, null, forceLog: false, untranslatedRootKeyword));
+ if (i != 0)
+ {
+ text = text + " " + (i + 1);
+ }
+ if (validator == null || validator(text))
+ {
+ __result = text;
+ return false; // 跳过原方法
+ }
+ }
+ }
+ __result = GenText.CapitalizeAsTitle(GrammarResolver.Resolve(rootKeyword, request, null, forceLog: false, untranslatedRootKeyword));
+ return false; // 跳过原方法
+ }
+ for (int k = 0; k < 150; k++)
+ {
+ text = GenText.CapitalizeAsTitle(GrammarResolver.Resolve(rootKeyword, request, null, forceLog: false, untranslatedRootKeyword));
+ if (validator == null || validator(text))
+ {
+ __result = text;
+ return false; // 跳过原方法
+ }
+ }
+
+ // 修改点:不记录错误日志
+ __result = text;
+ return false; // 跳过原方法
+ }
+ }
+}